Commit 87d4b340 by 缪晖

Merge branch 'feature/20201208_collageOrder_miaohui' into 'develop'

Feature/20201208 collage order miaohui

See merge request !74
parents 288e8362 3a4a7525
......@@ -708,7 +708,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
updatePackPrice(shoppingCartGoodsResponseVo, shoppingCartGoodsDto);
// 重新计算购物车行折扣总金额
//updateTotalDiscountAmount(shoppingCartGoodsDto);
updateTotalDiscountAmount(calculationDiscountResult, shoppingCartGoodsDto);
return ResponseUtil.success(shoppingCartGoodsDto);
}
......@@ -733,14 +733,15 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
/**
* 重新计算拼单购物车行总折扣金额
*/
private void updateTotalDiscountAmount(ShoppingCartGoodsDto shoppingCartGoodsDto) {
if (null != shoppingCartGoodsDto && null != shoppingCartGoodsDto.getProducts()) {
private void updateTotalDiscountAmount(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto) {
if (null != shoppingCartGoodsDto && null != shoppingCartGoodsDto.getProducts() && null != calculationDiscountResult.getGoods()) {
shoppingCartGoodsDto.getProducts().stream().forEach(product -> {
List<ActivityDiscountsDto> activityDiscountsDtos = product.getActivityDiscountsDtos();
if (null != activityDiscountsDtos && !activityDiscountsDtos.isEmpty()) {
product.setTotalDiscountAmount(activityDiscountsDtos.stream().mapToInt(ActivityDiscountsDto::getDiscountAmount).sum());
calculationDiscountResult.getGoods().stream().forEach(goods -> {
if (goods.getCartGoodsUid().equals(product.getCartGoodsUid())) {
product.setTotalDiscountAmount(Integer.valueOf(String.valueOf(goods.getDiscountAmount())));
}
});
});
}
}
......
......@@ -98,12 +98,12 @@ public class TimeSalePromotionService implements IPromotionService {
// 商品实际享受优惠的数量: key:skuId; value:实际数量
Map<String, Integer> numberMap = new HashMap<>();
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getGoodsId, Function.identity(), (k1, k2) -> k1));
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods;
// 特价商品没有匹配 或 加价购商品 直接跳出循环
if ((goods = goodsMap.get(cartGoods.getSkuId())) == null || ObjectUtils.equals(ActivityTypeEnum.TYPE_81.getCode(), cartGoods.getActivityType())) {
if ((goods = goodsMap.get(cartGoods.getCartGoodsUid())) == null || ObjectUtils.equals(ActivityTypeEnum.TYPE_81.getCode(), cartGoods.getActivityType())) {
continue;
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = getGoodsDiscount(goods.getDiscounts(), Arrays.asList(ActivityTypeEnum.TYPE_21.getCode(), ActivityTypeEnum.TYPE_2.getCode()));
......@@ -116,7 +116,7 @@ public class TimeSalePromotionService implements IPromotionService {
}
Integer actualGoodsNumber = numberMap.get(cartGoods.getSkuId());
if (actualGoodsNumber > 0) {
Long totalDiscountAmount = cartGoods.getQty() > actualGoodsNumber ? goodsDiscount.getDiscount() * actualGoodsNumber / goodsDiscount.getActualGoodsNumber() : goodsDiscount.getDiscount() * cartGoods.getQty() / goodsDiscount.getActualGoodsNumber();
Long totalDiscountAmount = cartGoods.getQty() > actualGoodsNumber ? goods.getDiscountAmount() * actualGoodsNumber / goods.getActualGoodsNumber() : goods.getDiscountAmount() * cartGoods.getQty() / goods.getActualGoodsNumber();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(goodsDiscount.getActivityCode());
activityDiscountsDto.setActivityName(goodsDiscount.getActivityName());
......
......@@ -81,12 +81,12 @@ public class TwoNDiscountServiceImpl implements IPromotionService {
return null;
}
List<ApportionGoodsDetail> list = Lists.newArrayList();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods apportionGood : calculationDiscountResult.getGoods()) {
if (!CollectionUtils.isEmpty(apportionGood.getDiscounts())) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount apportionDetail : apportionGood.getDiscounts()) {
if (apportionDetail.getType().equals(ActivityTypeEnum.TYPE_53.getCode())) {
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_53.getCode())) {
ApportionGoodsDetail apportionGoodsDetail = new ApportionGoodsDetail();
apportionGoodsDetail.setActivityApportionAmount(apportionDetail.getDiscount());
apportionGoodsDetail.setActivityApportionAmount(apportionDetail.getActivityApportionAmount());
apportionGoodsDetail.setActivityCode(apportionDetail.getActivityCode());
apportionGoodsDetail.setActivityName(apportionDetail.getActivityName());
apportionGoodsDetail.setGoodsId(apportionGood.getGoodsId());
......
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