Commit 3cabd6a1 by huiyang.chen

fix 买三赠一对接促销

parent 17f4e00d
......@@ -83,6 +83,10 @@ public class ActivityCalculationDiscountRequestDto {
* 活动号
*/
private String activityCode;
/**
* 买卡活动Id
*/
private String payCardActivityId;
}
@Data
......
......@@ -169,13 +169,22 @@ public class ActivityCalculationDiscountResponseDto {
*/
private String tenderId;
/**
* 1-运费券 2-运费月卡券 3-月卡券 4-万能券 5-啡常月享卡 6-通用券
* 1-运费券 2-运费月卡券 3-月卡券 4-万能券 5-啡常月享卡 6-通用券 7买三赠一券
*/
private Integer extendType;
private SendPointDto sendPointVo;
private Date endTime;
/**
* 买卡现价
*/
private Integer cardAmount;
/**
* 买卡原价
*/
private Integer cardOriginalPrice;
}
@Data
......
......@@ -133,6 +133,11 @@ public class ShoppingCartGoodsDto {
*/
private Long payCardFee;
/**
* 麦咖啡-买三赠一券价格
*/
private Long buyThreeGiveOneCouponFee;
@Data
public static class CartGoodsDetailDto {
/**
......
......@@ -91,7 +91,7 @@ public class CalculationServiceImpl {
boolean isMember, String menuType, String receiveId,String couponCode,
List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
Long payCardFee) {
Long payCardFee, List<String> eliminateGoodsList) {
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, menuType);
......@@ -107,7 +107,7 @@ public class CalculationServiceImpl {
//优惠券
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);
......@@ -115,7 +115,7 @@ public class CalculationServiceImpl {
//加料
materialCalculation.updateShoppingCartGoodsApportion(calculationDiscount,cartGoodsList);
//买三赠一券
couponDiscountCalculation.updateBuyThreeToOneShoppingCartGoodsDiscount(calculationDiscount,cartGoodsList,shoppingCartGoodsResponseVo);
couponDiscountCalculation.updateBuyThreeToOneShoppingCartGoodsDiscount(calculationDiscount, cartGoodsList, shoppingCartGoodsResponseVo);
return calculationDiscount;
}
......@@ -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<ShareDiscountActivityDto> shareDiscountActivityDtoList = CollectionUtils.isEmpty(shoppingCartGoodsDto.getShareDiscountActivityDtos()) ? new ArrayList<>() : shoppingCartGoodsDto.getShareDiscountActivityDtos();
......@@ -180,7 +181,8 @@ public class CalculationServiceImpl {
shoppingCartGoodsDto.setTotalDiscountAmount(shoppingCartGoodsResponseVo.getTotalDiscountAmount());
//随单购 月卡价格
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.setDiscountDeliveryAmount(shoppingCartGoodsResponseVo.getDiscountDeliveryAmount());
shoppingCartGoodsDto.setThresholdAmount(shoppingCartGoodsResponseVo.getThresholdAmount());
......
......@@ -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())
|| !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;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
......@@ -93,7 +95,7 @@ public class CouponDiscountCalculation {
return;
}
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)) {
return;
}
......@@ -105,25 +107,11 @@ public class CouponDiscountCalculation {
&& mccafeUniversalCouponCode.equals(t.getActivityCode()))).findFirst().orElse(null);
for (CartGoods cartGoods : cartGoodsList) {
if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue;
}
//商品券商品
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());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discountsNew = goodsMap.get(cartGoods.getCartGoodsUid()).getDiscounts();
if (CollectionUtils.isNotEmpty(discountsNew)) {
......@@ -131,8 +119,17 @@ public class CouponDiscountCalculation {
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不为空时,需计算优惠价格
......@@ -222,6 +219,25 @@ public class CouponDiscountCalculation {
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