Kaynağa Gözat

满减优惠活动新增达标金额限制

codingliang 2 yıl önce
ebeveyn
işleme
9150f65da8

+ 4 - 0
src/main/java/com/sqx/modules/activity/dto/ActivityOfFullReductionDTO.java

@@ -26,4 +26,8 @@ public class ActivityOfFullReductionDTO implements Serializable {
     @ApiModelProperty(value = "折扣内容;如果type为1该值标识为直减金额;如果type为2该值表示折扣比例,取值(0,10)", required = true)
     @NotNull(message = "折扣内容不能为空")
     private Double discountContent;
+
+    @ApiModelProperty(value = "达标金额", required = true)
+    @NotNull(message = "达标金额不能为空")
+    private Double minAmount;
 }

+ 8 - 0
src/main/java/com/sqx/modules/activity/service/impl/ActivityServiceImpl.java

@@ -40,6 +40,7 @@ import java.math.BigDecimal;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -209,6 +210,11 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, Activity> impl
                     } else if (ActivityTypeEnum.FULL.getTypeCode().equals(type)) {
                         ActivityOfFullReductionDTO fullReductionInfo = e.getFullReductionInfo();
 
+                        // 判断当前商品总价满足最低满减金额
+                        if (curGoodsTotalPrice - fullReductionInfo.getMinAmount() < 0) {
+                           return null;
+                        }
+
                         if (FullActivityTypeEnum.DISCOUNT.getTypeCode().equals(fullReductionInfo.getType())) {
                             discountAmount = curGoodsTotalPrice - (curGoodsTotalPrice * fullReductionInfo.getDiscountContent());
                         } else {
@@ -233,8 +239,10 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityDao, Activity> impl
                     vo.setActivityType(type);
                     vo.setDiscountAmount(discountAmount);
                     vo.setGoodsIds(curGoodsIds);
+                    vo.setGoodsNames(curGoodsNames);
                     return vo;
                 })
+                .filter(Objects::nonNull)
                 .sorted(Comparator.comparing(OrderSuitActivityVO::getDiscountAmount))
                 .collect(Collectors.toList());
     }