Commit 3cabd6a1 by huiyang.chen

fix 买三赠一对接促销

parent 17f4e00d
...@@ -83,6 +83,10 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -83,6 +83,10 @@ public class ActivityCalculationDiscountRequestDto {
* 活动号 * 活动号
*/ */
private String activityCode; private String activityCode;
/**
* 买卡活动Id
*/
private String payCardActivityId;
} }
@Data @Data
......
...@@ -169,13 +169,22 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -169,13 +169,22 @@ public class ActivityCalculationDiscountResponseDto {
*/ */
private String tenderId; private String tenderId;
/** /**
* 1-运费券 2-运费月卡券 3-月卡券 4-万能券 5-啡常月享卡 6-通用券 * 1-运费券 2-运费月卡券 3-月卡券 4-万能券 5-啡常月享卡 6-通用券 7买三赠一券
*/ */
private Integer extendType; private Integer extendType;
private SendPointDto sendPointVo; private SendPointDto sendPointVo;
private Date endTime; private Date endTime;
/**
* 买卡现价
*/
private Integer cardAmount;
/**
* 买卡原价
*/
private Integer cardOriginalPrice;
} }
@Data @Data
......
...@@ -133,6 +133,11 @@ public class ShoppingCartGoodsDto { ...@@ -133,6 +133,11 @@ public class ShoppingCartGoodsDto {
*/ */
private Long payCardFee; private Long payCardFee;
/**
* 麦咖啡-买三赠一券价格
*/
private Long buyThreeGiveOneCouponFee;
@Data @Data
public static class CartGoodsDetailDto { public static class CartGoodsDetailDto {
/** /**
......
...@@ -91,7 +91,7 @@ public class CalculationServiceImpl { ...@@ -91,7 +91,7 @@ public class CalculationServiceImpl {
boolean isMember, String menuType, String receiveId,String couponCode, boolean isMember, String menuType, String receiveId,String couponCode,
List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
Long payCardFee) { Long payCardFee, List<String> eliminateGoodsList) {
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, menuType); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, menuType);
...@@ -107,7 +107,7 @@ public class CalculationServiceImpl { ...@@ -107,7 +107,7 @@ public class CalculationServiceImpl {
//优惠券 //优惠券
CouponPromotionVO couponPromotionVO = couponDiscountCalculation.getCouponPromotionVO(partnerId, storeId, userId, couponCode, orderType); CouponPromotionVO couponPromotionVO = couponDiscountCalculation.getCouponPromotionVO(partnerId, storeId, userId, couponCode, orderType);
couponDiscountCalculation.updateShoppingCartGoodsDiscount(couponPromotionVO,calculationDiscount,cartGoodsList, shoppingCartGoodsResponseVo); couponDiscountCalculation.updateShoppingCartGoodsDiscount(couponPromotionVO,calculationDiscount,cartGoodsList, shoppingCartGoodsResponseVo,eliminateGoodsList);
//套餐 //套餐
setMealCalculation.updateShoppingCartGoodsDiscount(calculationDiscount,cartGoodsList,shoppingCartGoodsResponseVo); setMealCalculation.updateShoppingCartGoodsDiscount(calculationDiscount,cartGoodsList,shoppingCartGoodsResponseVo);
...@@ -115,7 +115,7 @@ public class CalculationServiceImpl { ...@@ -115,7 +115,7 @@ public class CalculationServiceImpl {
//加料 //加料
materialCalculation.updateShoppingCartGoodsApportion(calculationDiscount,cartGoodsList); materialCalculation.updateShoppingCartGoodsApportion(calculationDiscount,cartGoodsList);
//买三赠一券 //买三赠一券
couponDiscountCalculation.updateBuyThreeToOneShoppingCartGoodsDiscount(calculationDiscount,cartGoodsList,shoppingCartGoodsResponseVo); couponDiscountCalculation.updateBuyThreeToOneShoppingCartGoodsDiscount(calculationDiscount, cartGoodsList, shoppingCartGoodsResponseVo);
return calculationDiscount; return calculationDiscount;
} }
...@@ -168,7 +168,8 @@ public class CalculationServiceImpl { ...@@ -168,7 +168,8 @@ public class CalculationServiceImpl {
} }
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo){ public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult,
ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo){
List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtoList = CollectionUtils.isEmpty(shoppingCartGoodsDto.getProducts()) ? new ArrayList<>() : shoppingCartGoodsDto.getProducts(); List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtoList = CollectionUtils.isEmpty(shoppingCartGoodsDto.getProducts()) ? new ArrayList<>() : shoppingCartGoodsDto.getProducts();
List<ShareDiscountActivityDto> shareDiscountActivityDtoList = CollectionUtils.isEmpty(shoppingCartGoodsDto.getShareDiscountActivityDtos()) ? new ArrayList<>() : shoppingCartGoodsDto.getShareDiscountActivityDtos(); List<ShareDiscountActivityDto> shareDiscountActivityDtoList = CollectionUtils.isEmpty(shoppingCartGoodsDto.getShareDiscountActivityDtos()) ? new ArrayList<>() : shoppingCartGoodsDto.getShareDiscountActivityDtos();
...@@ -180,7 +181,8 @@ public class CalculationServiceImpl { ...@@ -180,7 +181,8 @@ public class CalculationServiceImpl {
shoppingCartGoodsDto.setTotalDiscountAmount(shoppingCartGoodsResponseVo.getTotalDiscountAmount()); shoppingCartGoodsDto.setTotalDiscountAmount(shoppingCartGoodsResponseVo.getTotalDiscountAmount());
//随单购 月卡价格 //随单购 月卡价格
shoppingCartGoodsDto.setPayCardFee(shoppingCartGoodsResponseVo.getPayCardFee()); shoppingCartGoodsDto.setPayCardFee(shoppingCartGoodsResponseVo.getPayCardFee());
long buyThreeGiveOneCouponFee = calculationDiscountResult.getDiscounts().stream().filter(t -> t.getExtendType() == 7).mapToLong(apportionGoods -> apportionGoods.getCardAmount()).sum();
shoppingCartGoodsDto.setBuyThreeGiveOneCouponFee(buyThreeGiveOneCouponFee);
shoppingCartGoodsDto.setDeliveryAmount(shoppingCartGoodsResponseVo.getDeliveryAmount()); shoppingCartGoodsDto.setDeliveryAmount(shoppingCartGoodsResponseVo.getDeliveryAmount());
shoppingCartGoodsDto.setDiscountDeliveryAmount(shoppingCartGoodsResponseVo.getDiscountDeliveryAmount()); shoppingCartGoodsDto.setDiscountDeliveryAmount(shoppingCartGoodsResponseVo.getDiscountDeliveryAmount());
shoppingCartGoodsDto.setThresholdAmount(shoppingCartGoodsResponseVo.getThresholdAmount()); shoppingCartGoodsDto.setThresholdAmount(shoppingCartGoodsResponseVo.getThresholdAmount());
......
...@@ -75,11 +75,13 @@ public class CouponDiscountCalculation { ...@@ -75,11 +75,13 @@ public class CouponDiscountCalculation {
/** /**
* 优惠计算 * 优惠计算
*/ */
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) { public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList,
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, List<String> eliminateGoodsList) {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts()) if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts())
|| !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType()) || !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
||(ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())) ))) { ||(ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType()))
|| (ActivityTypeEnum.TYPE_35.getCode().equals(discount.getType())) ))) {
return; return;
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
...@@ -93,7 +95,7 @@ public class CouponDiscountCalculation { ...@@ -93,7 +95,7 @@ public class CouponDiscountCalculation {
return; return;
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> couponDiscounts = discounts.stream().filter(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType()) List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> couponDiscounts = discounts.stream().filter(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
|| (ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType()) ))).collect(Collectors.toList()); || (ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType()) || (ActivityTypeEnum.TYPE_35.getCode().equals(discount.getType())) ))).collect(Collectors.toList());
if (CollectionUtils.isEmpty(couponDiscounts)) { if (CollectionUtils.isEmpty(couponDiscounts)) {
return; return;
} }
...@@ -105,25 +107,11 @@ public class CouponDiscountCalculation { ...@@ -105,25 +107,11 @@ public class CouponDiscountCalculation {
&& mccafeUniversalCouponCode.equals(t.getActivityCode()))).findFirst().orElse(null); && mccafeUniversalCouponCode.equals(t.getActivityCode()))).findFirst().orElse(null);
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue;
}
//商品券商品 //商品券商品
if (StringUtils.isNotBlank(cartGoods.getCouponCode()) || discountMon != null) { if (StringUtils.isNotBlank(cartGoods.getCouponCode()) || discountMon != null) {
// String couponCode = cartGoods.getCouponCode();
// // 计算优惠信息时,已将券校验过,放在map中
// Map<String, CheckSpqInfoResponseDto> validCouponMap = calculationDiscountResult.getValidCouponMap();
// if (MapUtils.isNotEmpty(validCouponMap)) {
// CheckSpqInfoResponseDto checkSpqInfoResponseDto = validCouponMap.get(couponCode);
// if (checkSpqInfoResponseDto != null) {
// cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice());
// cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId());
// cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId());
// cartGoods.setQty(1);
// cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
// cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
// }
// }
if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue;
}
cartGoods.setAmount(goodsMap.get(cartGoods.getCartGoodsUid()).getRealAmount()); cartGoods.setAmount(goodsMap.get(cartGoods.getCartGoodsUid()).getRealAmount());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discountsNew = goodsMap.get(cartGoods.getCartGoodsUid()).getDiscounts(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discountsNew = goodsMap.get(cartGoods.getCartGoodsUid()).getDiscounts();
if (CollectionUtils.isNotEmpty(discountsNew)) { if (CollectionUtils.isNotEmpty(discountsNew)) {
...@@ -131,8 +119,17 @@ public class CouponDiscountCalculation { ...@@ -131,8 +119,17 @@ public class CouponDiscountCalculation {
cartGoods.setCouponName(goodsDiscount.getActivityName()); cartGoods.setCouponName(goodsDiscount.getActivityName());
} }
} }
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods = goodsMap.get(cartGoods.getCartGoodsUid());
// 用来判断是否需要删除商品中的加料信息,然后重新计算
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsMaterial> smallMaterial = goods.getSmallMaterial();
if (CollectionUtils.isNotEmpty(smallMaterial)) {
if (CollectionUtils.isNotEmpty(goods.getDiscounts())) {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> goodsDiscounts_35 = goods.getDiscounts().stream().filter(t -> (ActivityTypeEnum.TYPE_35.getCode().equals(t.getType()))).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(goodsDiscounts_35)) {
eliminateGoodsList.add(cartGoods.getCartGoodsUid());
}
}
}
} }
// 当couponCode不为空时,需计算优惠价格 // 当couponCode不为空时,需计算优惠价格
...@@ -222,6 +219,25 @@ public class CouponDiscountCalculation { ...@@ -222,6 +219,25 @@ public class CouponDiscountCalculation {
cartGoods.setActivityDiscountsDtos(productActivityDiscountsDtos); cartGoods.setActivityDiscountsDtos(productActivityDiscountsDtos);
} }
} }
if (CollectionUtils.isNotEmpty(list)) {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> goodsDiscounts_35 = list.stream().filter(t -> (ActivityTypeEnum.TYPE_35.getCode().equals(t.getType()))).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(goodsDiscounts_35)) {
List<ActivityDiscountsDto> productActivityDiscountsDtos = new ArrayList<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount : goodsDiscounts_35) {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(goodsDiscount.getActivityCode());
activityDiscountsDto.setActivityName(goodsDiscount.getActivityName());
activityDiscountsDto.setActivityType(goodsDiscount.getType());
activityDiscountsDto.setDiscountAmount(0 - goodsDiscount.getDiscount().intValue());
activityDiscountsDto.setExtendType(discount.getExtendType());
activityDiscountsDto.setTenderId(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
productActivityDiscountsDtos.add(activityDiscountsDto);
}
cartGoods.setTotalDiscountAmount(goodsMap.get(cartGoods.getCartGoodsUid()).getDiscountAmount().intValue());
cartGoods.setSalePrice(goodsMap.get(cartGoods.getCartGoodsUid()).getRealAmount());
cartGoods.setActivityDiscountsDtos(productActivityDiscountsDtos);
}
}
} }
} }
......
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