Commit 3001513b by 胡博文

解决满N件N券结算页不能选优惠券的问题

parent 6c7132ad
...@@ -190,7 +190,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -190,7 +190,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType());
ActivityCalculationDiscountResponseDto.CalculationDiscountResult discountResult = null; ActivityCalculationDiscountResponseDto.CalculationDiscountResult discountResult = null;
discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList<>(), null, deliveryAmount, null,null); discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList<>(), null, deliveryAmount, null,null, accountType);
sharingCartService.distribute(discountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, null, null, activityQueryDto, menuType, deliveryAmount, ShoppingCartConstant.ADD_AND_UPDATE, partnerId, null, userId, storeId); sharingCartService.distribute(discountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, null, null, activityQueryDto, menuType, deliveryAmount, ShoppingCartConstant.ADD_AND_UPDATE, partnerId, null, userId, storeId);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId);
......
...@@ -383,24 +383,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -383,24 +383,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, null //加价购商品 , null //加价购商品
, deliveryAmount , deliveryAmount
, null,bizType, accountFlag); , null,bizType, accountFlag);
//更新购物车 //更新购物车券状态
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount> discounts = discountResult.getDiscounts(); newCalculationUpdateCouponStatus(userId, partnerId, storeId, bizType, cartGoods, allCartGoodsList, discountResult);
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount> mnCouponDiscount = null;
if (CollectionUtils.isNotEmpty(discounts)) {
mnCouponDiscount = discounts.stream().filter(discount -> ActivityTypeEnum.TYPE_330.getCode().equals(discount.getType())).collect(toList());
}
String mnCouponCode = null;
if (CollectionUtils.isNotEmpty(mnCouponDiscount)) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount discount = mnCouponDiscount.get(0);
mnCouponCode = discount.getActivityCode();
}
if (StringUtils.isNotBlank(mnCouponCode)) {
String finalMnCouponCode = mnCouponCode;
List<CartGoods> couponCartGoods = allCartGoodsList.stream().filter(good -> finalMnCouponCode.equals(good.getCouponCode())).collect(toList());
//更新购物车状态
assortmentSdkService.updateGoodsCouponStatus(partnerId, userId, storeId,couponCartGoods, shoppingCartBaseService,bizType);
}
sharingCartService.distribute(discountResult sharingCartService.distribute(discountResult
, allCartGoodsList , allCartGoodsList
, shoppingCartGoodsResponseVo , shoppingCartGoodsResponseVo
...@@ -424,7 +408,26 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -424,7 +408,26 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (calculationDiscountResult != null && CollectionUtils.isNotEmpty(calculationDiscountResult.getSendGoods())){ if (calculationDiscountResult != null && CollectionUtils.isNotEmpty(calculationDiscountResult.getSendGoods())){
sendGoodsQtyCheck(productsCount, appId, partnerId, userId, storeId, tableNumber, oldCartGoodsList, shoppingCartBaseService, calculationDiscountResult.getSendGoods(),bizType); sendGoodsQtyCheck(productsCount, appId, partnerId, userId, storeId, tableNumber, oldCartGoodsList, shoppingCartBaseService, calculationDiscountResult.getSendGoods(),bizType);
} }
//校验 //更新买M N券 券状态
calculationUpdateCouponStatus(userId, partnerId, storeId, bizType, allCartGoodsList, calculationDiscountResult);
// 当商品数量被设为0时
if (Objects.equals(cartGoods.getQty(), 0)) {
assortmentSdkService.updateGoodsQtyBySdk(partnerId, userId, storeId, cartGoods.getCartGoodsUid(), 0, "", shoppingCartBaseService,bizType);
}
// 促销活动的优惠金额计算
updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, addShoppingCartGoodsRequestVo.getMenuType(), deliveryAmount);
clearMsg(shoppingCartGoodsResponseVo, cartGoods.getCartGoodsUid());
//设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, allCartGoodsList, null, partnerId, storeId, userId, ShoppingCartConstant.ADD_AND_UPDATE, null);
}
//埋点添加购物车行为
this.buriedPointShoppingCart(addShoppingCartGoodsRequestVo, spuId, productName);
return ResponseUtil.success(shoppingCartGoodsResponseVo);
}
private void calculationUpdateCouponStatus(String userId, String partnerId, String storeId, Integer bizType, List<CartGoods> allCartGoodsList, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult) {
if (calculationDiscountResult != null && CollectionUtils.isNotEmpty(calculationDiscountResult.getDiscounts())) { if (calculationDiscountResult != null && CollectionUtils.isNotEmpty(calculationDiscountResult.getDiscounts())) {
String activityCouponCode = null; String activityCouponCode = null;
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> couponDiscounts = calculationDiscountResult.getCouponDiscounts(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> couponDiscounts = calculationDiscountResult.getCouponDiscounts();
...@@ -440,24 +443,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -440,24 +443,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String finalActivityCouponCode = activityCouponCode; String finalActivityCouponCode = activityCouponCode;
List<CartGoods> couponCartGoods = allCartGoodsList.stream().filter(good -> finalActivityCouponCode.equals(good.getCouponCode())).collect(toList()); List<CartGoods> couponCartGoods = allCartGoodsList.stream().filter(good -> finalActivityCouponCode.equals(good.getCouponCode())).collect(toList());
//更新购物车状态 //更新购物车状态
assortmentSdkService.updateGoodsCouponStatus(partnerId, userId, storeId,couponCartGoods, shoppingCartBaseService,bizType); assortmentSdkService.updateGoodsCouponStatus(partnerId, userId, storeId, couponCartGoods, shoppingCartBaseService, bizType);
} }
} }
// 当商品数量被设为0时
if (Objects.equals(cartGoods.getQty(), 0)) {
assortmentSdkService.updateGoodsQtyBySdk(partnerId, userId, storeId, cartGoods.getCartGoodsUid(), 0, "", shoppingCartBaseService,bizType);
}
// 促销活动的优惠金额计算
updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, addShoppingCartGoodsRequestVo.getMenuType(), deliveryAmount);
clearMsg(shoppingCartGoodsResponseVo, cartGoods.getCartGoodsUid());
//设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, calculationDiscountResult, allCartGoodsList, null, partnerId, storeId, userId, ShoppingCartConstant.ADD_AND_UPDATE, null);
}
//埋点添加购物车行为
this.buriedPointShoppingCart(addShoppingCartGoodsRequestVo, spuId, productName);
return ResponseUtil.success(shoppingCartGoodsResponseVo);
} }
...@@ -554,6 +542,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -554,6 +542,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
, null //加价购商品 , null //加价购商品
, deliveryAmount , deliveryAmount
, null,bizType, accountFlag); , null,bizType, accountFlag);
//更新购物车
newCalculationUpdateCouponStatus(userId, partnerId, storeId, bizType, cartGoods, cartGoodsList, discountResult);
sharingCartService.distribute(discountResult sharingCartService.distribute(discountResult
, cartGoodsList , cartGoodsList
...@@ -573,14 +563,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -573,14 +563,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo, discountResult, null, partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo, discountResult, null, partnerId);
} else { } else {
// 获取优惠信息 // 获取优惠信息
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, userLoginInfoDto.getWxAppid(), orderType, assortmentCustomerInfoVo.isMemberPaid(), cartGoodsList, new ArrayList(), new ArrayList<>(), null, deliveryAmount,bizType, accountFlag);
= getCalculationDiscountResult(menuType, partnerId, storeId, userId, appId, userLoginInfoDto.getWxAppid(), orderType, assortmentCustomerInfoVo.isMemberPaid(), cartGoodsList, new ArrayList(), new ArrayList<>(), null, deliveryAmount,bizType, accountFlag);
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
} }
if (calculationDiscountResult != null) { if (calculationDiscountResult != null) {
sendGoodsQtyCheckForUpdate(cartGoodsList, oldQty, appId, partnerId, userId, storeId, cartGoodsUid, "", shoppingCartBaseService, calculationDiscountResult.getSendGoods(),bizType); sendGoodsQtyCheckForUpdate(cartGoodsList, oldQty, appId, partnerId, userId, storeId, cartGoodsUid, "", shoppingCartBaseService, calculationDiscountResult.getSendGoods(),bizType);
} }
//校验
calculationUpdateCouponStatus(userId, partnerId, storeId, bizType, cartGoodsList, calculationDiscountResult);
// 促销活动的优惠金额计算 // 促销活动的优惠金额计算
updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, updateShoppingCartGoodsQtyRequestVo.getMenuType(), deliveryAmount); updateShoppingCartGoodsDiscount(null, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, null, userLoginInfoDto, updateShoppingCartGoodsQtyRequestVo.getMenuType(), deliveryAmount);
clearMsg(shoppingCartGoodsResponseVo, cartGoodsUid); clearMsg(shoppingCartGoodsResponseVo, cartGoodsUid);
...@@ -592,6 +583,27 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -592,6 +583,27 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return ResponseUtil.success(shoppingCartGoodsResponseVo); return ResponseUtil.success(shoppingCartGoodsResponseVo);
} }
private void newCalculationUpdateCouponStatus(String userId, String partnerId, String storeId, Integer bizType, CartGoods cartGoods, List<CartGoods> cartGoodsList, ActivityCalculationDiscountResponseDto.CalculationDiscountResult discountResult) {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = discountResult.getDiscounts();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> mnCouponDiscount = null;
if (CollectionUtils.isNotEmpty(discounts)) {
mnCouponDiscount = discounts.stream().filter(discount -> ActivityTypeEnum.TYPE_330.getCode().equals(discount.getType())).collect(toList());
}
String mnCouponCode = null;
if (CollectionUtils.isNotEmpty(mnCouponDiscount)) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discount = mnCouponDiscount.get(0);
mnCouponCode = discount.getActivityCode();
}
if (StringUtils.isNotBlank(mnCouponCode) && mnCouponCode.equals(cartGoods.getCouponCode())) {
String finalMnCouponCode = mnCouponCode;
List<CartGoods> couponCartGoods = cartGoodsList.stream().filter(good -> finalMnCouponCode.equals(good.getCouponCode())).collect(toList());
//更新购物车状态
assortmentSdkService.updateGoodsCouponStatus(partnerId, userId, storeId,couponCartGoods, shoppingCartBaseService,bizType);
}
}
/** /**
* 检查购物车商品库存数量 * 检查购物车商品库存数量
* *
......
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