Commit 55342d46 by 查志伟

购物车添加满M件N折活动支持

parent 505c396e
...@@ -52,6 +52,10 @@ public enum ActivityTypeEnum { ...@@ -52,6 +52,10 @@ public enum ActivityTypeEnum {
TYPE_7(7, "满额赠券"), TYPE_7(7, "满额赠券"),
TYPE_8(8, "满N件换购"), TYPE_8(8, "满N件换购"),
/** /**
* 满M件N折
*/
TYPE_83(83, "满M件N折"),
/**
* 加价购 * 加价购
*/ */
TYPE_81(81, "满额换购"), TYPE_81(81, "满额换购"),
......
...@@ -28,7 +28,9 @@ public enum ShoppingCartPromotionEnum { ...@@ -28,7 +28,9 @@ public enum ShoppingCartPromotionEnum {
Material(12, "MaterialPromotionService"), Material(12, "MaterialPromotionService"),
// 集点活动类 // 集点活动类
GATHER_SPOT(13, "gatherSpotPromotionService"), GATHER_SPOT(13, "gatherSpotPromotionService"),
MEMBER_DISCOUNT_NEw(27, "memberDiscountService"); MEMBER_DISCOUNT_NEw(27, "memberDiscountService"),
FULL_M_COUNT_N_FOLD(83, "FullMCountNFoldPromotionService"),
;
private Integer type; private Integer type;
private String msgType; private String msgType;
......
package cn.freemud.service.impl;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.IPromotionService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author Clover.z
* @Date 2021/8/18
* @Desc 满M件N折活动优惠计算
*/
@Service("FullMCountNFoldPromotionService")
public class FullMCountNFoldPromotionService implements IPromotionService {
@Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts()))
return;
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discountList
= calculationDiscountResult.getDiscounts().stream().filter(discount -> ActivityTypeEnum.TYPE_83.getCode().equals(discount.getType())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(discountList))
return;
// 转换一下结构,方便匹配购物车商品的活动信息
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> map = calculationDiscountResult.getGoods().stream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
// 匹配购物车行,设置优惠价格
cartGoodsList.forEach(cartGoods -> {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods discountGoods = map.get(cartGoods.getCartGoodsUid());
if (null != discountGoods && CollectionUtils.isNotEmpty(discountGoods.getDiscounts())) {
Long originPrice = cartGoods.getFinalPrice() * cartGoods.getQty();
Long discountPrice = 0L;
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount : discountGoods.getDiscounts()) {
discountPrice += discount.getDiscount();
}
cartGoods.setAmount(originPrice - discountPrice);
}
});
}
@Override
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
}
}
...@@ -1778,6 +1778,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1778,6 +1778,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
twoNDiscountService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo); twoNDiscountService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
} }
} }
// 满M件N折活动
IPromotionService fullMCountNFoldService = PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.FULL_M_COUNT_N_FOLD);
fullMCountNFoldService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
// 买赠活动 // 买赠活动
BuyAndGiftsPromotionService buyAndGiftsPromotionService = (BuyAndGiftsPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.BUY_GIFTS); BuyAndGiftsPromotionService buyAndGiftsPromotionService = (BuyAndGiftsPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.BUY_GIFTS);
buyAndGiftsPromotionService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo); buyAndGiftsPromotionService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
......
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