Commit dc8ae35a by 周晓航

Merge branch 'KA-【华莱士】【半定制】一个订单多张优惠券使用场景-zxh' into pre

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/CouponServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents 19aaeef2 dc0d8eb2
...@@ -32,8 +32,10 @@ import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo; ...@@ -32,8 +32,10 @@ import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo;
import cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo; import cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo;
import cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse; import cn.freemud.management.entities.dto.response.coupon.McdNetBatchQueryResponse;
import cn.freemud.management.entities.dto.response.coupon.McdNetCouponProductRespDto; import cn.freemud.management.entities.dto.response.coupon.McdNetCouponProductRespDto;
import cn.freemud.management.enums.OrderSource;
import cn.freemud.service.mccafe.CouponClientService; import cn.freemud.service.mccafe.CouponClientService;
import cn.freemud.utils.BeanUtil; import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.PropertyConvertUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.entities.v1.AccountBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.AccountBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
...@@ -787,4 +789,91 @@ public class CouponAdapter { ...@@ -787,4 +789,91 @@ public class CouponAdapter {
return mcCafeCouponLockRequest; return mcCafeCouponLockRequest;
} }
/**
* 新版本 支持多券 批量核销操作
* @param orderBean
* @param couponReqType
* @return
*/
public CouponCodeVerificationDto convert2CouponCodeVerificationDto(OrderBeanV1 orderBean, CouponReqType couponReqType) {
CouponCodeVerificationDto couponCodeVerificationDto = new CouponCodeVerificationDto();
couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1));
couponCodeVerificationDto.setReqtype(couponReqType.getCode());
couponCodeVerificationDto.setPartnerId(orderBean.getCompanyId());
Integer orderType = orderBean.getType();
//商城单子用NewOrderType
if (Objects.equals(OrderSource.MALL.getSource(), orderBean.getSource())) {
orderType = orderBean.getNewOrderType();
}
ActivityChannelEnum activityChannelEnum = PropertyConvertUtil.orderTypeEnumConvert2ActivityChannel(orderType);
if (activityChannelEnum == null) {
activityChannelEnum = ActivityChannelEnum.pickup;
}
couponCodeVerificationDto.setChannel(activityChannelEnum.getCode());
couponCodeVerificationDto.setStation_id("-1");
couponCodeVerificationDto.setOperator_id("-1");
couponCodeVerificationDto.setStore_id(orderBean.getShopId());
couponCodeVerificationDto.setMemberId(orderBean.getUserId());
// 订单号 替换成唯一序号
couponCodeVerificationDto.setTrans_id(orderBean.getOid());
couponCodeVerificationDto.setBusiness_date(DateUtil.convert2Str(new Date(), DateUtil.FORMAT_yyyyMMdd));
List<CouponCodeVerificationTransDto> transactions = this.getTransactions(orderBean, couponCodeVerificationDto);
couponCodeVerificationDto.setTransactions(transactions);
return couponCodeVerificationDto;
}
/**
* 组装核销 参数
* @param orderBean
* @return
*/
private List<CouponCodeVerificationTransDto> getTransactions(OrderBeanV1 orderBean, CouponCodeVerificationDto couponCodeVerificationDto) {
List<AccountBeanV1> accountList = orderBean.getAccountList();
List<CouponCodeVerificationTransDto> transactions = new ArrayList<>();
long price = 0L;
for (AccountBeanV1 accountBean : accountList) {
if (OrderAccountType.verificationCoupon.contains(accountBean.getType())) {
List<CouponCodeVerificationProductDto> products = new ArrayList<>();
if (OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
ProductBeanV1 productBean = orderBean.getProductList().get(i);
String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
if (!org.springframework.util.CollectionUtils.isEmpty(orderBean.getProductList().get(i).getDiscountList())) {
List<ProductDiscountV1> discounts = orderBean.getProductList().get(i).getDiscountList().stream().
filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
for (ProductDiscountV1 productDiscount : discounts) {
if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) {
continue;
}
CouponCodeVerificationProductDto couponCodeVerificationProductDto = new CouponCodeVerificationProductDto();
couponCodeVerificationProductDto.setPID(pid);
couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
couponCodeVerificationProductDto.setSeq(i + 1);
couponCodeVerificationProductDto.setRedeem_price(new BigDecimal(productBean.getPrice()));
products.add(couponCodeVerificationProductDto);
}
}
}
}
CouponCodeVerificationTransDto couponCodeVerificationTransDto = new CouponCodeVerificationTransDto();
if (!products.isEmpty()) {
couponCodeVerificationTransDto.setProducts(products);
}
couponCodeVerificationTransDto.setCode(accountBean.getAccountId());
Long discountPriceL = accountBean.getPrice();
if (discountPriceL != null) {
int abs = Math.abs(discountPriceL.intValue());
couponCodeVerificationTransDto.setTotalAmount(abs);
price += abs;
}
transactions.add(couponCodeVerificationTransDto);
}
}
// KA 【ID1032412】【订单聚合层】核销传入优惠金额之传劵优惠只设置券的优惠金额进行上报
couponCodeVerificationDto.setOrderDiscountAmount(price);
return transactions;
}
} }
...@@ -1459,7 +1459,9 @@ public class OrderAdapter { ...@@ -1459,7 +1459,9 @@ public class OrderAdapter {
//积分抵扣金额 //积分抵扣金额
Long customerScoreAmount = 0L; Long customerScoreAmount = 0L;
String customerScorePrompt = null; String customerScorePrompt = null;
List<CouponInfoVo> couponInfos = new ArrayList<>();
if (CollectionUtils.isNotEmpty(ordersBean.getAccountList())) { if (CollectionUtils.isNotEmpty(ordersBean.getAccountList())) {
// fisherman 组装一单多券 使用的券信息
for (AccountBeanV1 accountBean : ordersBean.getAccountList()) { for (AccountBeanV1 accountBean : ordersBean.getAccountList()) {
if (accountBean.getPrice() < 0 && !OldOrderAccountType.MONTH_CARD_TOTAL_DISCOUNT.getCode().equals(accountBean.getType())) { if (accountBean.getPrice() < 0 && !OldOrderAccountType.MONTH_CARD_TOTAL_DISCOUNT.getCode().equals(accountBean.getType())) {
discountTotalAmount = discountTotalAmount + (0 - accountBean.getPrice()); discountTotalAmount = discountTotalAmount + (0 - accountBean.getPrice());
...@@ -1490,6 +1492,7 @@ public class OrderAdapter { ...@@ -1490,6 +1492,7 @@ public class OrderAdapter {
couponInfoVo.setCouponCode(accountBean.getAccountId()); couponInfoVo.setCouponCode(accountBean.getAccountId());
couponInfoVo.setCouponName(accountBean.getName()); couponInfoVo.setCouponName(accountBean.getName());
couponInfoVo.setCouponAmount(accountBean.getPrice() < 0 ? 0 - accountBean.getPrice() : accountBean.getPrice()); couponInfoVo.setCouponAmount(accountBean.getPrice() < 0 ? 0 - accountBean.getPrice() : accountBean.getPrice());
// fisherman 后续已维护到 couponinfos ,请停止维护 该字段
responseVo.setCouponInfo(couponInfoVo); responseVo.setCouponInfo(couponInfoVo);
couponAmount = accountBean.getPrice() < 0 ? 0 - accountBean.getPrice() : accountBean.getPrice(); couponAmount = accountBean.getPrice() < 0 ? 0 - accountBean.getPrice() : accountBean.getPrice();
} }
...@@ -1506,8 +1509,16 @@ public class OrderAdapter { ...@@ -1506,8 +1509,16 @@ public class OrderAdapter {
if (OldOrderAccountType.FREIGHT_COUPON.getCode().equals(accountBean.getType())) { if (OldOrderAccountType.FREIGHT_COUPON.getCode().equals(accountBean.getType())) {
responseVo.setFreightCouponName(accountBean.getName()); responseVo.setFreightCouponName(accountBean.getName());
} }
if (OrderAccountType.verificationCoupon.contains(accountBean.getType())) {
CouponInfoVo couponInfoVo = new CouponInfoVo();
couponInfoVo.setCouponCode(accountBean.getAccountId());
couponInfoVo.setCouponName(accountBean.getName());
couponInfoVo.setCouponAmount(Math.abs(accountBean.getPrice()));
couponInfos.add(couponInfoVo);
}
} }
} }
responseVo.setCouponInfos(couponInfos);
responseVo.setDeliveryAmount(deliveryAmount); responseVo.setDeliveryAmount(deliveryAmount);
responseVo.setOriginalDeliveryAmount(originalDeliveryAmount); responseVo.setOriginalDeliveryAmount(originalDeliveryAmount);
responseVo.setPackageAmount(packageAmount); responseVo.setPackageAmount(packageAmount);
...@@ -2264,7 +2275,8 @@ public class OrderAdapter { ...@@ -2264,7 +2275,8 @@ public class OrderAdapter {
accountVo.setType(type); accountVo.setType(type);
if (type == OrderSettlementType.PRODUCT_COUPON.getIndex() || type == OrderSettlementType.CASH_COUPON.getIndex() if (type == OrderSettlementType.PRODUCT_COUPON.getIndex() || type == OrderSettlementType.CASH_COUPON.getIndex()
|| type == OrderSettlementType.DISCOUNT_COUPON.getIndex()) { || type == OrderSettlementType.DISCOUNT_COUPON.getIndex()) {
accountVo.setTypeName("优惠券"); // fisherman ->修改成券名称
accountVo.setTypeName(StringUtils.isEmpty(orderSettlement.getNote()) ? "优惠券" : orderSettlement.getNote());
} else if (type == OrderSettlementType.FULL_REDUCTION.getIndex()) { } else if (type == OrderSettlementType.FULL_REDUCTION.getIndex()) {
accountVo.setTypeName("满减"); accountVo.setTypeName("满减");
} else if (type == OrderSettlementType.POINTS.getIndex()) { } else if (type == OrderSettlementType.POINTS.getIndex()) {
......
...@@ -16,7 +16,6 @@ import cn.freemud.entities.dto.PromotionMessageDto; ...@@ -16,7 +16,6 @@ import cn.freemud.entities.dto.PromotionMessageDto;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto; import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDtoNew; import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDtoNew;
import cn.freemud.entities.dto.promotion.QueryHistoryGroupVO; import cn.freemud.entities.dto.promotion.QueryHistoryGroupVO;
import cn.freemud.entities.dto.promotion.QuerySpellGroupVo;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
...@@ -357,6 +356,8 @@ public class QueryOrderResponseVo { ...@@ -357,6 +356,8 @@ public class QueryOrderResponseVo {
/** /**
* 优惠券信息 * 优惠券信息
* 后续优惠券信息 以维护到 couponInfos 请停止使用该字段 20211026
* 记得和前端对接下 小程序版本 是否支持 couponInfos
*/ */
private CouponInfoVo couponInfo; private CouponInfoVo couponInfo;
...@@ -665,4 +666,12 @@ public class QueryOrderResponseVo { ...@@ -665,4 +666,12 @@ public class QueryOrderResponseVo {
//是否已开票,true已开票,默认false未开票 //是否已开票,true已开票,默认false未开票
private Boolean needInvoice; private Boolean needInvoice;
/**
* 可使用多张优惠券, 使用该字段展示所有使用的优惠券信息
* 包括 :
* cn.freemud.enums.OrderAccountType#verificationCoupon
* 后续 需要移除 该类里面的 couponinfo字段, 20211026
*/
private List<CouponInfoVo> couponInfos = new ArrayList<>();
} }
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
package cn.freemud.service.coupon.impl; package cn.freemud.service.coupon.impl;
import cn.freemud.adapter.CouponAdapter; import cn.freemud.adapter.CouponAdapter;
import cn.freemud.amp.body.OrderBody;
import cn.freemud.amqp.Header; import cn.freemud.amqp.Header;
import cn.freemud.amqp.MQAction; import cn.freemud.amqp.MQAction;
import cn.freemud.amqp.MQMessage; import cn.freemud.amqp.MQMessage;
...@@ -80,28 +81,30 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService ...@@ -80,28 +81,30 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
@Override @Override
public BaseResponse verificationCoupon(List<AccountBeanV1> accountList, OrderBeanV1 orderBean, CouponReqType couponReqType) { public BaseResponse verificationCoupon(List<AccountBeanV1> accountList, OrderBeanV1 orderBean, CouponReqType couponReqType) {
// AppLogUtil.infoLog("fiserhman 券码核销 begin", JSON.toJSONString(accountList), JSON.toJSONString(orderBean));
if (CollectionUtils.isEmpty(accountList)) { if (CollectionUtils.isEmpty(accountList)) {
return ResponseUtil.success(); return ResponseUtil.success();
} }
// 需要判断 accountList 里面 是都 同时包含 配送券+ other券 // fisherman 【01测16灰18全,【华莱士】【疑难专项】一个订单多张优惠券使用场景】 https://www.tapd.cn/43862731/prong/stories/view/1143862731001037477
boolean isDoubleCoupon = checkAccountList(accountList); BaseResponse baseResponse = this.batchCouponHandle(orderBean, couponReqType);
if (isDoubleCoupon) { return baseResponse;
Integer code = OrderAccountType.FREIGHT_COUPON.getCode(); // // 需要判断 accountList 里面 是都 同时包含 配送券+ other券
// 运费券 塞进 核销接口里面, 这里真的是贼恶心 逻辑不敢动 // boolean isDoubleCoupon = checkAccountList(accountList);
AccountBeanV1 freightCouponAccountBean = accountList.stream().filter(accountBean -> code.equals(accountBean.getType())).findFirst().orElse(null); // if (isDoubleCoupon) {
CouponCodeVerificationTransDto couponCodeVerificationTransDto = null; // Integer code = OrderAccountType.FREIGHT_COUPON.getCode();
if (!Objects.isNull(freightCouponAccountBean)) { // // 运费券 塞进 核销接口里面, 这里真的是贼恶心 逻辑不敢动
couponCodeVerificationTransDto = new CouponCodeVerificationTransDto(); // AccountBeanV1 freightCouponAccountBean = accountList.stream().filter(accountBean -> code.equals(accountBean.getType())).findFirst().orElse(null);
couponCodeVerificationTransDto.setCode(freightCouponAccountBean.getAccountId()); // CouponCodeVerificationTransDto couponCodeVerificationTransDto = null;
couponCodeVerificationTransDto.setTotalAmount(freightCouponAccountBean.getPrice().intValue()); // if (!Objects.isNull(freightCouponAccountBean)) {
} // couponCodeVerificationTransDto = new CouponCodeVerificationTransDto();
// 过滤出配送券 // couponCodeVerificationTransDto.setCode(freightCouponAccountBean.getAccountId());
List<AccountBeanV1> collect = accountList.stream().filter(accountBean -> !code.equals(accountBean.getType())).collect(Collectors.toList()); // couponCodeVerificationTransDto.setTotalAmount(freightCouponAccountBean.getPrice().intValue());
return commonMethodVerification(couponCodeVerificationTransDto, collect, orderBean, couponReqType); // }
} else { // // 过滤出配送券
return commonMethodVerification(null, accountList, orderBean, couponReqType); // List<AccountBeanV1> collect = accountList.stream().filter(accountBean -> !code.equals(accountBean.getType())).collect(Collectors.toList());
} // return commonMethodVerification(couponCodeVerificationTransDto, collect, orderBean, couponReqType);
// } else {
// return commonMethodVerification(null, accountList, orderBean, couponReqType);
// }
} }
/** /**
...@@ -237,6 +240,47 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService ...@@ -237,6 +240,47 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
return ResponseUtil.success(); return ResponseUtil.success();
} }
/**
* 单笔订单 多券核销
* @param orderBean
* @param couponReqType
* @return
*/
private BaseResponse batchCouponHandle(OrderBeanV1 orderBean, CouponReqType couponReqType) {
CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(orderBean, couponReqType);
if (Objects.isNull(couponCodeVerificationDto) || couponCodeVerificationDto.getTransactions().isEmpty()) {
return ResponseUtil.success();
}
couponCodeVerificationDto.setOrderTotalAmount(orderBean.getOriginalAmount() == null ? 0L : orderBean.getOriginalAmount().longValue());
couponCodeVerificationDto.setOrderPaymentAmount(orderBean.getAmount());
// 核销券新增参数:组织机构ID
couponCodeVerificationDto.setChannel_ids(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId()));
boolean ok = false;
Exception lastException = null;
CouponCodeResponseDto couponCodeResponseDto = null;
try {
couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto);
if (Objects.nonNull(couponCodeResponseDto) && Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
ok = true;
}
} catch (Exception ex) {
lastException = ex;
ErrorLog.printErrorLog("verification_error", "/api", couponCodeVerificationDto, ex);
}
if (lastException != null) {
sendMessage(orderBean, LogThreadLocal.getTrackingNo(), couponCodeVerificationDto, lastException);
} else if (!ok || Objects.equals(baffleOpen, true)) {
sendMessage(orderBean, LogThreadLocal.getTrackingNo(), couponCodeVerificationDto, ok ? "模拟券核销失败" : couponCodeResponseDto);
}
if (!ok) {
emailAlertService.sendEmailAlert("核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(lastException == null ? couponCodeResponseDto : lastException)));
return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
}
return ResponseUtil.success();
}
/** /**
* 发送消息 * 发送消息
......
...@@ -576,7 +576,12 @@ public class ShoppingCartConvertAdapter { ...@@ -576,7 +576,12 @@ public class ShoppingCartConvertAdapter {
|| ObjectUtils.equals(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.COUPON_GOODS.getGoodsType(), cartGoods.getGoodsType()) || ObjectUtils.equals(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.COUPON_GOODS.getGoodsType(), cartGoods.getGoodsType())
|| ObjectUtils.equals(GoodsTypeEnum.ALL_COUPON_GOODS.getGoodsType(), cartGoods.getGoodsType())) || ObjectUtils.equals(GoodsTypeEnum.ALL_COUPON_GOODS.getGoodsType(), cartGoods.getGoodsType()))
? cartGoods.getSkuId() : cartGoods.getSpuId()); ? cartGoods.getSkuId() : cartGoods.getSpuId());
//fisherman 这里 商品服务校验需要商品原价, 不是购物车的 finalPrice
productType.setPrice(cartGoods.getOriginalPrice() == null ? 0 : cartGoods.getOriginalPrice().intValue());
if (Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType())) {
// 套餐会出现商品组的情况,会导致 商品服务校验失败,商品服务不需要商品组的价格 坑B 所以只能取 套餐商品原价格
productType.setPrice(cartGoods.getFinalPrice() == null ? 0 : cartGoods.getFinalPrice().intValue()); productType.setPrice(cartGoods.getFinalPrice() == null ? 0 : cartGoods.getFinalPrice().intValue());
}
productType.setValidatePrice(productType.getPrice() == 0 ? 0 : 1); productType.setValidatePrice(productType.getPrice() == 0 ? 0 : 1);
productType.setValidateAttribute(1); productType.setValidateAttribute(1);
productType.setValidateStatuses(Arrays.asList(2)); productType.setValidateStatuses(Arrays.asList(2));
...@@ -589,7 +594,6 @@ public class ShoppingCartConvertAdapter { ...@@ -589,7 +594,6 @@ public class ShoppingCartConvertAdapter {
productType.setMemberDiscount(cartGoods.getMemberDiscount()); productType.setMemberDiscount(cartGoods.getMemberDiscount());
validateShopProductRequest.getProductTypeList().add(productType); validateShopProductRequest.getProductTypeList().add(productType);
} }
ShoppingSdkLogUtil.infoLog("替换购物车数据检验结果 01 --> validateShopProductRequest:{} cartGoodsList:{}", validateShopProductRequest, JSON.toJSON(checkCartRequest.getCartGoodsList()));
return validateShopProductRequest; return validateShopProductRequest;
} }
......
...@@ -293,6 +293,17 @@ public class ShoppingCartController { ...@@ -293,6 +293,17 @@ public class ShoppingCartController {
return SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).replaceGoodsByShop(request); return SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).replaceGoodsByShop(request);
} }
/**
* 一单多券
* 券码需要知道配置的数据 是否是V3算价
*
*/
@PostMapping(value = "/getV3Promotion")
@ApiAnnotation(logMessage = "/getV3Promotion")
public BaseResponse getV3Promotion(@LogParams @RequestBody @Validated BaseRequestVo request) {
return SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).getV3Promotion(request);
}
@Autowired @Autowired
private ShoppingCartBaseServiceImpl shoppingCartService; private ShoppingCartBaseServiceImpl shoppingCartService;
......
...@@ -5,7 +5,7 @@ import lombok.NoArgsConstructor; ...@@ -5,7 +5,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public class ActivityBaseResponseDto { public class ActivityBaseResponseDto<T> {
private int ver; private int ver;
/** /**
...@@ -14,9 +14,9 @@ public class ActivityBaseResponseDto { ...@@ -14,9 +14,9 @@ public class ActivityBaseResponseDto {
private String statusCode; private String statusCode;
/** /**
*状态码描述 * 状态码描述
*/ */
private String msg; private String msg;
private T result;
} }
package cn.freemud.entities.dto.shoppingCart;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/10/20 上午11:32
* @description :
*/
@Data
public class PromotionResultVO {
private boolean v3Promotion;
}
...@@ -25,4 +25,10 @@ public class ChooseCouponVo { ...@@ -25,4 +25,10 @@ public class ChooseCouponVo {
*/ */
private Integer couponType; private Integer couponType;
/**
* fisherman 促销算价返回
* 优惠金额(单位分)
*/
private Integer discountAmount;
} }
...@@ -225,6 +225,12 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -225,6 +225,12 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
*/ */
private CartGoodsStates cartGoodsStates; private CartGoodsStates cartGoodsStates;
/**
* fisherman 一单多券, 剔除购物车内券商品的使用门槛
*
*/
private Long useCouponThreshold ;
@Data @Data
public static class chooseGood { public static class chooseGood {
......
...@@ -13,6 +13,9 @@ ...@@ -13,6 +13,9 @@
package cn.freemud.enums; package cn.freemud.enums;
import java.util.Arrays;
import java.util.List;
public enum GoodsTypeEnum { public enum GoodsTypeEnum {
COMMON_GOODS(1, "正常商品"), COMMON_GOODS(1, "正常商品"),
...@@ -21,15 +24,19 @@ public enum GoodsTypeEnum { ...@@ -21,15 +24,19 @@ public enum GoodsTypeEnum {
SET_MEAL_GOODS(3, "套餐商品"), SET_MEAL_GOODS(3, "套餐商品"),
SKU_GOODS(4, "sku商品"), SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品"), SPU_GOODS(5, "spu商品"),
REDUCE_PRICE_GOODS(6,"超值加购商品"), REDUCE_PRICE_GOODS(6, "超值加购商品"),
ALL_COUPON_GOODS(8, "万能券商品"), ALL_COUPON_GOODS(8, "万能券商品"),
VIRTUAL_GOODS(9,"虚拟商品"), VIRTUAL_GOODS(9, "虚拟商品"),
BUY_M_SEND_N_COUPON(10, "买M送N券"), BUY_M_SEND_N_COUPON(10, "买M送N券"),
MATERIAL(88, "有加料的商品"), MATERIAL(88, "有加料的商品"),
EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配"); EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配");
private Integer goodsType; private Integer goodsType;
private String desc; private String desc;
public static List<Integer> couponTypeList = Arrays.asList(GoodsTypeEnum.COUPON_GOODS.getGoodsType(),
GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType(),
GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType());
GoodsTypeEnum(Integer goodsType, String desc) { GoodsTypeEnum(Integer goodsType, String desc) {
this.goodsType = goodsType; this.goodsType = goodsType;
this.desc = desc; this.desc = desc;
......
...@@ -315,4 +315,6 @@ public interface ShoppingCartNewService { ...@@ -315,4 +315,6 @@ public interface ShoppingCartNewService {
default BaseResponse<PremiumExchangeResponseVo> premiumExchange(PremiumExchangeRequestVo request){ default BaseResponse<PremiumExchangeResponseVo> premiumExchange(PremiumExchangeRequestVo request){
return null; return null;
}; };
BaseResponse getV3Promotion(BaseRequestVo request);
} }
...@@ -112,6 +112,8 @@ public class CouponPromotionService implements IPromotionService { ...@@ -112,6 +112,8 @@ public class CouponPromotionService implements IPromotionService {
for (ChooseCouponVo chooseCouponVo : shoppingCartInfoRequestVo.getCouponCodes()){ for (ChooseCouponVo chooseCouponVo : shoppingCartInfoRequestVo.getCouponCodes()){
for (CouponResults discount : calculationDiscountResult.getCouponDiscounts()){ for (CouponResults discount : calculationDiscountResult.getCouponDiscounts()){
if(chooseCouponVo.getCouponCode().equals(discount.getCouponCode())){ if(chooseCouponVo.getCouponCode().equals(discount.getCouponCode())){
// fisherman 加入券的金额
chooseCouponVo.setDiscountAmount(discount.getDiscountAmount());
couponCodes.add(chooseCouponVo); couponCodes.add(chooseCouponVo);
break; break;
} }
......
...@@ -545,7 +545,6 @@ public class CouponServiceImpl implements CouponService { ...@@ -545,7 +545,6 @@ public class CouponServiceImpl implements CouponService {
* 老版本券校验 * 老版本券校验
*/ */
public CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto) { public CheckSpqInfoResponseDto checkSpqInfo(CheckSpqInfoRequestDto requestDto) {
ShoppingSdkLogUtil.infoLog("OldCheckSpqInfo","requestDto");
String partnerId = requestDto.getPartnerId(); String partnerId = requestDto.getPartnerId();
String couponCode = requestDto.getCouponCode(); String couponCode = requestDto.getCouponCode();
String storeId = requestDto.getStoreId(); String storeId = requestDto.getStoreId();
...@@ -848,38 +847,7 @@ public class CouponServiceImpl implements CouponService { ...@@ -848,38 +847,7 @@ public class CouponServiceImpl implements CouponService {
@Override @Override
public GetProductsVo getSpqProductInfo(CheckSpqInfoRequestDto requestDto) { public GetProductsVo getSpqProductInfo(CheckSpqInfoRequestDto requestDto) {
String partnerId = requestDto.getPartnerId(); return this.getSpqProductInfo(requestDto,null);
String couponCode = requestDto.getCouponCode();
String storeId = requestDto.getStoreId();
//TODO 查询券详情券是否存在
GetMemberCouponRequestVo requestVo = new GetMemberCouponRequestVo();
requestVo.setPartnerId(partnerId);
requestVo.setCouponCode(couponCode);
requestVo.setStoreId(requestDto.getStoreId());
GetCouponDetailResponseDto couponDetailResponseDto = this.getMemberCoupon(requestVo);
if (couponDetailResponseDto == null || !couponDetailResponseDto.getResult().equals(ResponseCodeConstant.RESPONSE_SUCCESS_1) || CollectionUtils.isEmpty(couponDetailResponseDto.getDetails())) {
return null;
}
//券返回的商品id
List<String> skuIds = Lists.newArrayList();
String skuId = couponDetailResponseDto.getDetails().get(0).getActiveProduct().get(0).getProductIdPartner();
skuIds.add(String.valueOf(skuId));
//TODO 通过skuid查询spuid
Map<String, GetProductsVo> productsVoMap = itemService.getProducts(skuIds, partnerId, storeId , requestDto.getMenuType());
GetProductsVo productsVo = productsVoMap.get(skuId);
if (null == productsVo || !Objects.equals(productsVo.getStatus(), StoreItemStatus.PUT_ON_SALE.getCode())) {
return null;
}
// 校验商品可用时间
ValidateShopProductRequest request = getValidateShopProductRequest(productsVo, requestDto);
ProductBaseResponse<ValiadShopProductResponse> valiadProductResponse = storeItemClient.validateShopProduct(request);
if (null == valiadProductResponse || !Objects.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, valiadProductResponse.getErrcode())
|| valiadProductResponse.getData() == null || CollectionUtils.isEmpty(valiadProductResponse.getData().getSuccessList())) {
return null;
}
return productsVo;
} }
...@@ -908,11 +876,16 @@ public class CouponServiceImpl implements CouponService { ...@@ -908,11 +876,16 @@ public class CouponServiceImpl implements CouponService {
if (CollectionUtils.isEmpty(couponDetailResponseDto.getDetails())) { if (CollectionUtils.isEmpty(couponDetailResponseDto.getDetails())) {
return null; return null;
} }
Integer couponType = 0;
//券返回的商品id //券返回的商品id
String skuId ;
List<String> skuIds = Lists.newArrayList(); List<String> skuIds = Lists.newArrayList();
String skuId = goodsId; if (StringUtils.isEmpty(goodsId)) {
//券返回的商品id
skuId = couponDetailResponseDto.getDetails().get(0).getActiveProduct().get(0).getProductIdPartner();
skuIds.add(String.valueOf(skuId));
}else {
skuId = goodsId;
}
skuIds.add(skuId); skuIds.add(skuId);
//TODO 通过skuid查询spuid //TODO 通过skuid查询spuid
Map<String, GetProductsVo> productsVoMap = itemService.getProducts(skuIds, partnerId, storeId, requestDto.getMenuType()); Map<String, GetProductsVo> productsVoMap = itemService.getProducts(skuIds, partnerId, storeId, requestDto.getMenuType());
......
...@@ -131,10 +131,8 @@ public class ProductServiceImpl implements ProductService { ...@@ -131,10 +131,8 @@ public class ProductServiceImpl implements ProductService {
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true); checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_MATERIAL_ERROR); checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_MATERIAL_ERROR);
} }
ShoppingSdkLogUtil.infoLog("替换购物车数据检验结果 2 --> checkCartRequest:{}", checkCartRequest);
return CartResponseUtil.success(checkCartRequest); return CartResponseUtil.success(checkCartRequest);
} catch (Exception e) { } catch (Exception e) {
ShoppingSdkLogUtil.printErrorLog("assortment-shoppingcart-sdk", checkCartRequest.getTrackingNo(), e.getMessage(), "checkAllCartGoods", checkCartRequest, e, Level.ERROR);
checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true); checkCartRequest.getShoppingCartGoodsResponseVo().setChanged(true);
checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS); checkCartRequest.getShoppingCartGoodsResponseVo().setToastMsg(ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS);
return CartResponseUtil.error(e.getMessage(),checkCartRequest); return CartResponseUtil.error(e.getMessage(),checkCartRequest);
......
...@@ -927,6 +927,11 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -927,6 +927,11 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
return nowCartGoodsList; return nowCartGoodsList;
} }
@Override
public BaseResponse getV3Promotion(BaseRequestVo request) {
return null;
}
public List<CartGoods> getShoppingCart(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo) { public List<CartGoods> getShoppingCart(AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo) {
return null; return null;
} }
......
...@@ -780,6 +780,11 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -780,6 +780,11 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
return nowCartGoodsList; return nowCartGoodsList;
} }
@Override
public BaseResponse getV3Promotion(BaseRequestVo request) {
return null;
}
/** /**
* 添加非商品券商品 * 添加非商品券商品
* *
......
...@@ -679,6 +679,11 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService { ...@@ -679,6 +679,11 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
return oldAllCartGoodsList; return oldAllCartGoodsList;
} }
@Override
public BaseResponse getV3Promotion(BaseRequestVo request) {
return null;
}
private void checkBase(CustomerInfoVo assortmentCustomerInfoVo) { private void checkBase(CustomerInfoVo assortmentCustomerInfoVo) {
if (assortmentCustomerInfoVo == null || assortmentCustomerInfoVo.getMemberId() == null) { if (assortmentCustomerInfoVo == null || assortmentCustomerInfoVo.getMemberId() == null) {
......
...@@ -23,6 +23,7 @@ import cn.freemud.constant.ShoppingCartConstant; ...@@ -23,6 +23,7 @@ import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.demo.controller.ShoppingCartDemoController; import cn.freemud.demo.controller.ShoppingCartDemoController;
import cn.freemud.demo.entities.dto.goods.add.list.BaseListCartGoodsVO; import cn.freemud.demo.entities.dto.goods.add.list.BaseListCartGoodsVO;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto; import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.activity.DiscountSharingDto; import cn.freemud.entities.dto.activity.DiscountSharingDto;
...@@ -32,6 +33,7 @@ import cn.freemud.entities.dto.openplatform.WeixinProductResponseDto; ...@@ -32,6 +33,7 @@ import cn.freemud.entities.dto.openplatform.WeixinProductResponseDto;
import cn.freemud.entities.dto.order.PackAmountConfig; import cn.freemud.entities.dto.order.PackAmountConfig;
import cn.freemud.entities.dto.pay.*; import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.product.CheckCartRequest; import cn.freemud.entities.dto.product.CheckCartRequest;
import cn.freemud.entities.dto.shoppingCart.PromotionResultVO;
import cn.freemud.entities.dto.product.info.ProductBean; import cn.freemud.entities.dto.product.info.ProductBean;
import cn.freemud.entities.dto.product.info.SkuProductBean; import cn.freemud.entities.dto.product.info.SkuProductBean;
import cn.freemud.entities.dto.shoppingCart.SendPoint; import cn.freemud.entities.dto.shoppingCart.SendPoint;
...@@ -410,6 +412,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -410,6 +412,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
//埋点添加购物车行为 //埋点添加购物车行为
this.buriedPointShoppingCart(addShoppingCartGoodsRequestVo, spuId, productName); this.buriedPointShoppingCart(addShoppingCartGoodsRequestVo, spuId, productName);
this.shoppingCartAddOrListCommonResponseHandle(shoppingCartGoodsResponseVo);
return ResponseUtil.success(shoppingCartGoodsResponseVo); return ResponseUtil.success(shoppingCartGoodsResponseVo);
} }
...@@ -568,7 +571,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -568,7 +571,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, userId, ShoppingCartConstant.ADD_AND_UPDATE, null); setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), partnerId, storeId, userId, ShoppingCartConstant.ADD_AND_UPDATE, null);
} }
this.shoppingCartAddOrListCommonResponseHandle(shoppingCartGoodsResponseVo);
return ResponseUtil.success(shoppingCartGoodsResponseVo); return ResponseUtil.success(shoppingCartGoodsResponseVo);
} }
...@@ -700,7 +703,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -700,7 +703,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
for (int i = cartGoodsList.size() - 1; i >= 0; i--) { for (int i = cartGoodsList.size() - 1; i >= 0; i--) {
CartGoods cartGoods = cartGoodsList.get(i); CartGoods cartGoods = cartGoodsList.get(i);
if (GoodsTypeEnum.COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType()) || GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) { if (GoodsTypeEnum.COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType()) || GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, cartGoods.getSpuId(), menuType,null); if (Objects.equals(cartGoods.getCouponCode() ,unChooseCouponCode)) {
CheckSpqInfoRequestDto checkSpqInfoRequestDto = new CheckSpqInfoRequestDto(partnerId, storeId, cartGoods.getCouponCode(), menuType,null);
GetProductsVo productInfo = null; GetProductsVo productInfo = null;
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) { if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
productInfo = couponService.getSpqProductInfo(checkSpqInfoRequestDto, cartGoods.getSkuId()); productInfo = couponService.getSpqProductInfo(checkSpqInfoRequestDto, cartGoods.getSkuId());
...@@ -714,6 +718,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -714,6 +718,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
convert2CartGoods(cartGoods, productInfo); convert2CartGoods(cartGoods, productInfo);
} }
} }
}
} }
} }
...@@ -867,9 +873,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -867,9 +873,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
updateForPopupWindow(shoppingCartGoodsResponseVo, premiumExchangeResponseVoBaseResponse.getResult().getShowType(), chooseSendGoodList, shoppingCartInfoRequestVo.getSendGoods()); updateForPopupWindow(shoppingCartGoodsResponseVo, premiumExchangeResponseVoBaseResponse.getResult().getShowType(), chooseSendGoodList, shoppingCartInfoRequestVo.getSendGoods());
} }
// 添加购物车商品总价和加价购商品总价,现在是自己计算,后面需要优化为促销计算, 这段要删除 // 设置优惠券的使用门槛金额, 需要排除券的金额
this.shoppingCartAddOrListCommonResponseHandle(shoppingCartGoodsResponseVo);
// ApiLog.info("fisherman 新算价 校验入参券是否可用new ",shoppingCartGoodsResponseVo,shoppingCartInfoRequestVo.getCouponCodes());
// 校验入参券是否可用 // 校验入参券是否可用
if (!checkAvailableCoupon(shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo.getCouponCode())) { if (!checkAvailableCoupon(shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo.getCouponCode())) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_COUPON_NOT_USE); return ResponseUtil.error(ResponseResult.SHOPPING_CART_COUPON_NOT_USE);
...@@ -877,6 +882,36 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -877,6 +882,36 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return ResponseUtil.success(shoppingCartGoodsResponseVo); return ResponseUtil.success(shoppingCartGoodsResponseVo);
} }
/**
* 加车 和list接口 公用处理方法
* @param shoppingCartGoodsResponseVo
*/
private void shoppingCartAddOrListCommonResponseHandle(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo){
if (Objects.isNull(shoppingCartGoodsResponseVo)) {
return;
}
// 设置 使用信息
Long useCouponThreshold = this.getUseCouponThreshold(shoppingCartGoodsResponseVo.getProducts());
shoppingCartGoodsResponseVo.setUseCouponThreshold(useCouponThreshold);
}
/**
* 获取 券使用的门槛信息
* @param products
* @return
*/
private Long getUseCouponThreshold(List<CartGoods> products) {
Long useCouponThreshold = 0L;
if (CollectionUtils.isNotEmpty(products)) {
// 过滤出 活动商品 以及 优惠券商品 求和
return products.stream().filter(p -> !GoodsTypeEnum.couponTypeList.contains(p.getGoodsType()) && Objects.isNull(p.getActivityType()))
.mapToLong(CartGoods::getOriginalAmount)
.sum();
}
return useCouponThreshold;
}
public void updateForPopupWindow(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, Integer showType, List<PremiumExchangeResponseVo.PremiumExchangeProduct> chooseSendGoodList, public void updateForPopupWindow(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, Integer showType, List<PremiumExchangeResponseVo.PremiumExchangeProduct> chooseSendGoodList,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods) { List<ShoppingCartInfoRequestVo.SendGoods> sendGoods) {
if (Integer.valueOf("5").equals(showType) && !org.springframework.util.CollectionUtils.isEmpty(chooseSendGoodList)) { if (Integer.valueOf("5").equals(showType) && !org.springframework.util.CollectionUtils.isEmpty(chooseSendGoodList)) {
...@@ -3156,6 +3191,19 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3156,6 +3191,19 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
} }
@Override
public BaseResponse getV3Promotion(BaseRequestVo request) {
boolean grayPush = grayPush(request.getPartnerId(), request.getShopId(), "2");
PromotionResultVO vo = new PromotionResultVO();
if (grayPush) {
ActivityBaseResponseDto<PromotionResultVO> responseDto = activityClient.getV3Promotion(request);
if (responseDto != null && StringUtils.equals(responseDto.getStatusCode(),ResponseCodeConstant.RESPONSE_SUCCESS_STR)) {
vo.setV3Promotion(responseDto.getResult().isV3Promotion());
}
}
return ResponseUtil.success(vo);
}
private void removeByProductStock(List<PremiumExchangeResponseVo.PremiumExchangeProduct> products, List<ValidateProductInfosDto.ProductData> productDataList, String partnerId, String storeId, String channel) { private void removeByProductStock(List<PremiumExchangeResponseVo.PremiumExchangeProduct> products, List<ValidateProductInfosDto.ProductData> productDataList, String partnerId, String storeId, String channel) {
List<Long> limitSkuIds = new ArrayList<>(); List<Long> limitSkuIds = new ArrayList<>();
productDataList.stream().forEach(ProductData -> { productDataList.stream().forEach(ProductData -> {
......
...@@ -10,8 +10,10 @@ import cn.freemud.enums.AvailableCouponQueryFlagEnum; ...@@ -10,8 +10,10 @@ import cn.freemud.enums.AvailableCouponQueryFlagEnum;
import cn.freemud.enums.GoodsTypeEnum; import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import cn.freemud.service.impl.AssortmentSdkService; import cn.freemud.service.impl.AssortmentSdkService;
import com.alibaba.fastjson.JSON;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import com.freemud.sdk.api.assortment.shoppingcart.util.ShoppingSdkLogUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
...@@ -101,6 +103,8 @@ public class CouponSharingService { ...@@ -101,6 +103,8 @@ public class CouponSharingService {
for (ChooseCouponVo chooseCouponVo : shoppingCartInfoRequestVo.getCouponCodes()){ for (ChooseCouponVo chooseCouponVo : shoppingCartInfoRequestVo.getCouponCodes()){
for (Discount discount : couponResultsList){ for (Discount discount : couponResultsList){
if(chooseCouponVo.getCouponCode().equals(discount.getActivityCode())){ if(chooseCouponVo.getCouponCode().equals(discount.getActivityCode())){
// fisherman 加入券的金额
chooseCouponVo.setDiscountAmount(discount.getDiscount());
couponCodes.add(chooseCouponVo); couponCodes.add(chooseCouponVo);
break; break;
} }
......
...@@ -19,6 +19,8 @@ import cn.freemud.entities.dto.*; ...@@ -19,6 +19,8 @@ import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto; import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.shoppingCart.PromotionResultVO;
import cn.freemud.entities.vo.BaseRequestVo;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -73,4 +75,8 @@ public interface ActivityClient { ...@@ -73,4 +75,8 @@ public interface ActivityClient {
@PostMapping("/promotioncenter/calculateservice/discount/sharing") @PostMapping("/promotioncenter/calculateservice/discount/sharing")
//@IgnoreFeignLogAnnotation(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},statusCodeFieldName= ResponseCodeKeyConstant.STATUS_CODE,messageFieldName=ResponseCodeKeyConstant.MEG) //@IgnoreFeignLogAnnotation(excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},statusCodeFieldName= ResponseCodeKeyConstant.STATUS_CODE,messageFieldName=ResponseCodeKeyConstant.MEG)
ActivityCalculationDiscountResponseDto calculationSharingDiscount(ActivityCalculationDiscountRequestDto shareDiscountRequestDto); ActivityCalculationDiscountResponseDto calculationSharingDiscount(ActivityCalculationDiscountRequestDto shareDiscountRequestDto);
@PostMapping("/activity/getV3Promotion")
@IgnoreFeignLogAnnotation(logMessage = "/activity/getV3Promotion",excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},statusCodeFieldName= ResponseCodeKeyConstant.STATUS_CODE,messageFieldName=ResponseCodeKeyConstant.MSG)
ActivityBaseResponseDto<PromotionResultVO> getV3Promotion(BaseRequestVo request);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment