Commit e6f278b1 by xiaoer.li@freemud.com

modify:均摊

parent 3f2a0c43
......@@ -114,19 +114,30 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getSendGoods())) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendActivities = calculationDiscountResult.getSendGoods().stream().filter(goods -> (ActivityTypeEnum.TYPE_62.getCode().equals(goods.getActivityType()) || ActivityTypeEnum.TYPE_230.getCode().equals(goods.getActivityType()))).collect(Collectors.toList());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendActivities = calculationDiscountResult
.getSendGoods()
.stream()
.filter(goods -> (ActivityTypeEnum.TYPE_62.getCode().equals(goods.getActivityType()) || ActivityTypeEnum.TYPE_230.getCode().equals(goods.getActivityType())))
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(sendActivities)) {
return;
}
List<ShoppingCartGoodsDto.CartGoodsDetailDto> sendGoodsList = shoppingCartGoodsDto.getProducts().stream().filter(product -> (ActivityTypeEnum.TYPE_62.getCode().equals(product.getActivityType()) || ActivityTypeEnum.TYPE_230.getCode().equals(product.getActivityType()))).collect(Collectors.toList());
List<ShoppingCartGoodsDto.CartGoodsDetailDto> sendGoodsList = shoppingCartGoodsDto
.getProducts()
.stream()
.filter(product -> (ActivityTypeEnum.TYPE_62.getCode().equals(product.getActivityType()) || ActivityTypeEnum.TYPE_230.getCode().equals(product.getActivityType())))
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(sendGoodsList)) {
return;
}
List<ActivityDiscountsDto> activityDiscountsDtos = shoppingCartGoodsDto.getActivityDiscountsDtos() == null ? new ArrayList<>() : shoppingCartGoodsDto.getActivityDiscountsDtos();
//设置商品行活动均摊
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto : sendGoodsList) {
Optional<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> first = sendActivities.stream().filter(sendActivity -> ObjectUtils.equals(sendActivity.getActivityCode(), cartGoodsDetailDto.getNodeId())).findFirst();
Optional<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> first =
sendActivities.stream()
.filter(sendActivity -> ObjectUtils.equals(sendActivity.getActivityCode(), cartGoodsDetailDto.getNodeId()))
.findFirst();
if (!first.isPresent()) {
continue;
}
......@@ -135,18 +146,37 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
ProductActivityDiscountsDto.setActivityCode(sendActivity.getActivityCode());
ProductActivityDiscountsDto.setActivityName(sendActivity.getActivityName());
ProductActivityDiscountsDto.setActivityType(sendActivity.getActivityType());
if (cartGoodsDetailDto.getActivityType().equals(ActivityTypeEnum.TYPE_230.getCode())) {
cartGoodsDetailDto.setTotalDiscountAmount(cartGoodsDetailDto.getOriginalPrice().intValue());
ProductActivityDiscountsDto.setDiscountAmount(cartGoodsDetailDto.getOriginalPrice().intValue());
}
else {
ProductActivityDiscountsDto.setDiscountAmount(cartGoodsDetailDto.getTotalDiscountAmount());
}
cartGoodsDetailDto.setActivityDiscountsDtos(Arrays.asList(ProductActivityDiscountsDto));
}
//设置活动级别的均摊
boolean type230 = false;
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity : sendActivities) {
if (ActivityTypeEnum.TYPE_230.getCode().toString().equals(sendActivity.getActivityCode())) {
type230 = true;
}
//设置优惠活动
Integer totalDiscountAmount = sendGoodsList.stream().filter(sendGoods -> ObjectUtils.equals(sendActivity.getActivityCode(), sendGoods.getNodeId())).mapToInt(sendGoods -> sendGoods.getTotalDiscountAmount()).sum();
Integer totalDiscountAmount = sendGoodsList
.stream()
.filter(sendGoods -> ObjectUtils.equals(sendActivity.getActivityCode(), sendGoods.getNodeId()))
.mapToInt(sendGoods -> sendGoods.getTotalDiscountAmount())
.sum();
Long totalDiscountOriginalAmount = sendGoodsList
.stream()
.filter(sendGoods -> ObjectUtils.equals(sendActivity.getActivityCode(), sendGoods.getNodeId()))
.mapToLong(sendGoods -> sendGoods.getOriginalPrice())
.sum();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(sendActivity.getActivityCode());
activityDiscountsDto.setActivityName(sendActivity.getActivityName());
activityDiscountsDto.setActivityType(sendActivity.getActivityType());
activityDiscountsDto.setDiscountAmount(0 - totalDiscountAmount);
activityDiscountsDto.setDiscountAmount(type230 ? 0 - totalDiscountOriginalAmount.intValue() : 0 - totalDiscountAmount);
activityDiscountsDtos.add(activityDiscountsDto);
}
}
......
......@@ -148,31 +148,23 @@ public class BuySendPromotionService implements IPromotionService {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendGoods1 = calculationDiscountResult.getSendGoods() == null ? new ArrayList<>() :
calculationDiscountResult.getSendGoods().stream()
.filter(t -> ObjectUtils.equals(ActivityTypeEnum.TYPE_6.getCode(), t.getActivityType())
|| ObjectUtils.equals(ActivityTypeEnum.TYPE_61.getCode(), t.getActivityType())
|| ObjectUtils.equals(ActivityTypeEnum.TYPE_230.getCode(), t.getActivityType()))
|| ObjectUtils.equals(ActivityTypeEnum.TYPE_61.getCode(), t.getActivityType()))
.collect(Collectors.toList() );
List<ActivityDiscountsDto> activityDiscountsDtos = shoppingCartGoodsDto.getActivityDiscountsDtos() == null ? new ArrayList<>() : shoppingCartGoodsDto.getActivityDiscountsDtos();
if (CollectionUtils.isNotEmpty(sendGoods1)) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity = sendGoods1.get(0);
boolean type230 = false;
if(ActivityTypeEnum.TYPE_230.getCode().toString().equals(sendActivity.getActivityCode())) {
type230 = true;
}
Integer discountAmount = shoppingCartGoodsDto.getProducts()
.stream()
.filter(product -> ObjectUtils.equals(product.getActivityType(), sendActivity.getActivityType()))
.mapToInt(ShoppingCartGoodsDto.CartGoodsDetailDto::getTotalDiscountAmount)
.sum();
Long totalAmount = sendActivity.getSendGoods().stream()
.mapToLong(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods::getOriginalPrice)
.sum();
//设置优惠活动
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(sendActivity.getActivityCode());
activityDiscountsDto.setActivityName(sendActivity.getActivityName());
activityDiscountsDto.setActivityType(sendActivity.getActivityType());
activityDiscountsDto.setDiscountAmount(type230 ? totalAmount.intValue() :0 - discountAmount);
activityDiscountsDto.setDiscountAmount(0 - discountAmount);
activityDiscountsDtos.add(activityDiscountsDto);
// 设置商品行优惠明细
......@@ -186,7 +178,7 @@ public class BuySendPromotionService implements IPromotionService {
ProductActivityDiscountsDto.setActivityCode(sendActivity.getActivityCode());
ProductActivityDiscountsDto.setActivityName(sendActivity.getActivityName());
ProductActivityDiscountsDto.setActivityType(sendActivity.getActivityType());
ProductActivityDiscountsDto.setDiscountAmount(type230 ? cartGoodsDetailDto.getOriginalPrice().intValue():cartGoodsDetailDto.getTotalDiscountAmount());
ProductActivityDiscountsDto.setDiscountAmount(cartGoodsDetailDto.getTotalDiscountAmount());
activityDiscountsDtoList.add(ProductActivityDiscountsDto);
cartGoodsDetailDto.setActivityDiscountsDtos(activityDiscountsDtoList);
}
......
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