Commit c3e1658a by xiaoer.li@freemud.com

支持多x件y折活动

parent 46800938
......@@ -84,7 +84,7 @@ public class BuySendPromotionService implements IPromotionService {
Map<String, Integer> maxNums = new HashMap<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity activityList : sendActivityLists) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods sendGood : activityList.getSendGoods()) {
sendGoodsMap.put(sendGood.getGoodsId(), sendGood);
sendGoodsMap.put(sendGood.getCategory(), sendGood);
maxNums.put(sendGood.getGoodsId(), activityList.getMaxNum());
activitySpuIds.add(sendGood.getGoodsId());
}
......
......@@ -36,36 +36,64 @@ public class XyDiscountServiceImpl implements IPromotionService {
@Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
ApportionGoodsDetail apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
if (apportionGoodsDetail != null) {
Optional<CartGoods> firstCartGoods = cartGoodsList.stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getGoodsId())).findFirst();
if (firstCartGoods.isPresent()) {
firstCartGoods.get().setAmount(firstCartGoods.get().getAmount() - apportionGoodsDetail.getActivityApportionAmount());
//ApportionGoodsDetail apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
//if (apportionGoodsDetail != null) {
// Optional<CartGoods> firstCartGoods = cartGoodsList.stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getGoodsId())).findFirst();
// if (firstCartGoods.isPresent()) {
// firstCartGoods.get().setAmount(firstCartGoods.get().getAmount() - apportionGoodsDetail.getActivityApportionAmount());
// }
//}
List<ApportionGoodsDetail> apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
if (apportionGoodsDetail != null && apportionGoodsDetail.size() > 0) {
for (CartGoods cartGoods : cartGoodsList) {
for (ApportionGoodsDetail detail : apportionGoodsDetail) {
if (detail.getGoodsId().equals(cartGoods.getGoodsId())) {
cartGoods.setAmount(cartGoods.getAmount() - detail.getActivityApportionAmount());
}
}
}
}
}
@Override
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
ApportionGoodsDetail apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
if (apportionGoodsDetail != null) {
Optional<ShoppingCartGoodsDto.CartGoodsDetailDto> firstCartGoods = shoppingCartGoodsDto.getProducts().stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getSkuId())).findFirst();
if (firstCartGoods.isPresent()) {
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods = firstCartGoods.get();
cartGoods.setTotalDiscountAmount(cartGoods.getTotalDiscountAmount() + apportionGoodsDetail.getActivityApportionAmount().intValue());
List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(apportionGoodsDetail.getActivityCode());
activityDiscountsDto.setActivityName(apportionGoodsDetail.getActivityName());
activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
activityDiscountsDto.setDiscountAmount(apportionGoodsDetail.getActivityApportionAmount().intValue());
activityDiscountsDtoList.add(activityDiscountsDto);
cartGoods.setActivityDiscountsDtos(activityDiscountsDtoList);
//ApportionGoodsDetail apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
//if (apportionGoodsDetail != null) {
// Optional<ShoppingCartGoodsDto.CartGoodsDetailDto> firstCartGoods = shoppingCartGoodsDto.getProducts().stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getSkuId())).findFirst();
// if (firstCartGoods.isPresent()) {
// ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods = firstCartGoods.get();
// cartGoods.setTotalDiscountAmount(cartGoods.getTotalDiscountAmount() + apportionGoodsDetail.getActivityApportionAmount().intValue());
// List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>();
// ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
// activityDiscountsDto.setActivityCode(apportionGoodsDetail.getActivityCode());
// activityDiscountsDto.setActivityName(apportionGoodsDetail.getActivityName());
// activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
// activityDiscountsDto.setDiscountAmount(apportionGoodsDetail.getActivityApportionAmount().intValue());
// activityDiscountsDtoList.add(activityDiscountsDto);
// cartGoods.setActivityDiscountsDtos(activityDiscountsDtoList);
// }
//}
List<ApportionGoodsDetail> apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
if (apportionGoodsDetail != null && apportionGoodsDetail.size() > 0) {
for (ShoppingCartGoodsDto.CartGoodsDetailDto product : shoppingCartGoodsDto.getProducts()) {
for (ApportionGoodsDetail detail : apportionGoodsDetail) {
if (detail.getGoodsId().equals(product.getSkuId())) {
product.setTotalDiscountAmount(product.getTotalDiscountAmount() + detail.getActivityApportionAmount().intValue());
List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(detail.getActivityCode());
activityDiscountsDto.setActivityName(detail.getActivityName());
activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
activityDiscountsDto.setDiscountAmount(detail.getActivityApportionAmount().intValue());
activityDiscountsDtoList.add(activityDiscountsDto);
product.setActivityDiscountsDtos(activityDiscountsDtoList);
}
}
}
}
}
/*
private ApportionGoodsDetail getApportionGoodsDetail(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult) {
// 遍历购物车内的商品,如果存在则进行均摊
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getApportionGoods())) {
......@@ -87,8 +115,29 @@ public class XyDiscountServiceImpl implements IPromotionService {
}
return null;
}
*/
private List<ApportionGoodsDetail> getApportionGoodsDetail(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult) {
// 遍历购物车内的商品,如果存在则进行均摊
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getApportionGoods())) {
return null;
}
List<ApportionGoodsDetail> apportionGoodsDetail = new ArrayList<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods apportionGood : calculationDiscountResult.getApportionGoods()) {
if (!CollectionUtils.isEmpty(apportionGood.getApportionDetails())) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.ApportionDetails apportionDetail : apportionGood.getApportionDetails()) {
if (apportionDetail.getActivityType().equals(ActivityTypeEnum.TYPE_104.getCode())) {
ApportionGoodsDetail detail = new ApportionGoodsDetail();
detail.setActivityApportionAmount(apportionDetail.getActivityApportionAmount());
detail.setActivityCode(apportionDetail.getActivityCode());
detail.setActivityName(apportionDetail.getActivityName());
detail.setGoodsId(apportionGood.getGoodsId());
apportionGoodsDetail.add(detail);
}
}
}
}
return apportionGoodsDetail;
}
@Data
private class ApportionGoodsDetail {
/**
......
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