瀏覽代碼

满赠商品不参与积分分摊计算

lhm 3 年之前
父節點
當前提交
192c9ddb86
共有 1 個文件被更改,包括 17 次插入8 次删除
  1. 17 8
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

+ 17 - 8
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -4064,7 +4064,7 @@ public class OrderServiceImpl implements OrderService {
                             BeanUtils.copyProperties(goodsDetailsDto, goodsEntity);
                             goodsDetailsDto.setActualPaymentAmount(activityPrice);
                             goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
-                            goodsDetailsDto.setActivity("限时促销");
+                            goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.LSCX.getTopicName());
                             goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(activityPrice));
                             goodsDetailsDtos.add(goodsDetailsDto);
                             activityFlag.set(false);
@@ -4105,7 +4105,7 @@ public class OrderServiceImpl implements OrderService {
                                     BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
                                     goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
                                     goodsDetailsDto.setActualPaymentAmount(BigDecimal.ZERO);
-                                    goodsDetailsDto.setActivity("满赠商品");
+                                    goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.MZ.getTopicName());
                                     goodsDetailsDto.setGiftNumber(mkActivitiesFullGiftEntity.getGiftNumber());
                                     goodsDetailsDto.setDiscountedPrice(goodsEntity.getRetailPrice());
                                     // 添加进商品详情列表
@@ -4137,7 +4137,7 @@ public class OrderServiceImpl implements OrderService {
                                     BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
                                     goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
                                     goodsDetailsDto.setActualPaymentAmount(BigDecimal.ZERO);
-                                    goodsDetailsDto.setActivity("满赠商品");
+                                    goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.MZ.getTopicName());
                                     goodsDetailsDto.setGiftNumber(mkActivitiesFullGiftEntity.getGiftNumber());
                                     goodsDetailsDto.setDiscountedPrice(goodsEntity.getRetailPrice());
                                     // 添加进商品详情列表
@@ -4194,7 +4194,7 @@ public class OrderServiceImpl implements OrderService {
                                     BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
                                     goodsDetailsDto.setActualPaymentAmount(discountAfterPrice);
                                     goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
-                                    goodsDetailsDto.setActivity("优惠券活动");
+                                    goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.YHQ.getTopicName());
                                     goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(discountAfterPrice));
                                     goodsDetailsDtos.add(goodsDetailsDto);
                                     activityFlag.set(false);
@@ -4222,7 +4222,7 @@ public class OrderServiceImpl implements OrderService {
                                     BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
                                     goodsDetailsDto.setActualPaymentAmount(discountAfterPrice);
                                     goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
-                                    goodsDetailsDto.setActivity("优惠券活动");
+                                    goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.YHQ.getTopicName());
                                     goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(discountAfterPrice));
                                     goodsDetailsDtos.add(goodsDetailsDto);
                                     activityFlag.set(false);
@@ -4251,7 +4251,7 @@ public class OrderServiceImpl implements OrderService {
                                         BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
                                         goodsDetailsDto.setActualPaymentAmount(discountAfterPrice);
                                         goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
-                                        goodsDetailsDto.setActivity("优惠券活动");
+                                        goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.YHQ.getTopicName());
                                         goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(discountAfterPrice));
                                         goodsDetailsDtos.add(goodsDetailsDto);
                                         activityFlag.set(false);
@@ -4393,7 +4393,16 @@ public class OrderServiceImpl implements OrderService {
                 int scoreMayDeductionPrice = (int) (score / scoreLimit);
                 BigDecimal scoreMayDeductionPriceDecimal = new BigDecimal(scoreMayDeductionPrice);
                 // 过滤掉参与过限时特价并且与积分抵扣互斥的sku,以及未参加积分抵扣活动的sku
-                goodsDetailsDtos = goodsDetailsDtos.stream().filter(goodsDetailsDto -> !promotionSkuList.contains(goodsDetailsDto.getSku()) && scoreDeductionSkuList.contains(goodsDetailsDto.getSku())).collect(Collectors.toList());
+                goodsDetailsDtos = goodsDetailsDtos.stream().filter(goodsDetailsDto -> {
+                    if (!promotionSkuList.contains(goodsDetailsDto.getSku()) && scoreDeductionSkuList.contains(goodsDetailsDto.getSku())) {
+                        return true;
+                    }
+                    // 满赠商品不参与积分分摊计算
+                    if (!Constants.ActivityTopicEnum.MZ.getTopicName().equals(goodsDetailsDto.getActivity())) {
+                        return true;
+                    }
+                    return false;
+                }).collect(Collectors.toList());
                 // 总分摊积分
                 BigDecimal shareScore = BigDecimal.ZERO;
                 BigDecimal scoreIntegerDecimal = BigDecimal.valueOf(scoreInteger);
@@ -4403,7 +4412,7 @@ public class OrderServiceImpl implements OrderService {
                     GoodsDetailsDto goodsDetailsDto = goodsDetailsDtos.get(i);
                     // 抵扣积分分摊
                     int index = size - 1;
-                    goodsDetailsDto.setActivity("积分抵扣");
+                    goodsDetailsDto.setActivity(org.springframework.util.StringUtils.isEmpty(goodsDetailsDto.getActivity()) ? "积分抵扣" : goodsDetailsDto.getActivity() + ",积分抵扣");
                     String sku = goodsDetailsDto.getGoodsSn();
                     BigDecimal scoreLimitDecimal = skuScoreLimitMap.get(sku);
                     String prodBarcode = goodsDetailsDto.getProdBarcode();