|
@@ -30,6 +30,7 @@ import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
|
|
+import java.util.LinkedHashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -568,35 +569,59 @@ public class LifeDiscountCouponStoreFriendServiceImpl extends ServiceImpl<LifeDi
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public List<LifeDiscountCouponFriendRuleVo> getRuleList(String storeId, String acName, String status) {
|
|
public List<LifeDiscountCouponFriendRuleVo> getRuleList(String storeId, String acName, String status) {
|
|
|
|
|
+ // 参数校验
|
|
|
if (StringUtils.isEmpty(storeId)) {
|
|
if (StringUtils.isEmpty(storeId)) {
|
|
|
|
|
+ log.warn("getRuleList 参数错误:storeId 不能为空");
|
|
|
return new ArrayList<>();
|
|
return new ArrayList<>();
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 查询规则列表(一个规则可能关联多个优惠券,会返回多条记录)
|
|
|
List<LifeDiscountCouponFriendRuleVo> ruleList = lifeDiscountCouponFriendRuleDetailMapper.getRuleList(storeId);
|
|
List<LifeDiscountCouponFriendRuleVo> ruleList = lifeDiscountCouponFriendRuleDetailMapper.getRuleList(storeId);
|
|
|
if (ruleList == null) {
|
|
if (ruleList == null) {
|
|
|
ruleList = new ArrayList<>();
|
|
ruleList = new ArrayList<>();
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 计算状态:根据结束日期判断活动是否已结束
|
|
|
|
|
+ // 状态:0-启用(活动进行中),1-禁用(活动已结束)
|
|
|
if (ObjectUtils.isNotEmpty(ruleList)) {
|
|
if (ObjectUtils.isNotEmpty(ruleList)) {
|
|
|
Date now = new Date();
|
|
Date now = new Date();
|
|
|
ruleList.forEach(i -> {
|
|
ruleList.forEach(i -> {
|
|
|
if (i.getEndDate() != null) {
|
|
if (i.getEndDate() != null) {
|
|
|
|
|
+ // 如果结束日期在当前时间之后,活动进行中(启用)
|
|
|
|
|
+ // 如果结束日期在当前时间之前或等于,活动已结束(禁用)
|
|
|
i.setStatus(i.getEndDate().after(now) ? "0" : "1");
|
|
i.setStatus(i.getEndDate().after(now) ? "0" : "1");
|
|
|
} else {
|
|
} else {
|
|
|
- i.setStatus(null);
|
|
|
|
|
|
|
+ // 如果结束日期为null,视为永久有效,状态为启用
|
|
|
|
|
+ i.setStatus("0");
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 按规则ID分组去重:同一个规则ID只保留第一条记录(避免一个规则关联多个优惠券时重复展示)
|
|
|
|
|
+ Map<Integer, LifeDiscountCouponFriendRuleVo> ruleMap = new LinkedHashMap<>();
|
|
|
|
|
+ for (LifeDiscountCouponFriendRuleVo rule : ruleList) {
|
|
|
|
|
+ if (rule.getId() != null && !ruleMap.containsKey(rule.getId())) {
|
|
|
|
|
+ ruleMap.put(rule.getId(), rule);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ruleList = new ArrayList<>(ruleMap.values());
|
|
|
|
|
+
|
|
|
|
|
+ // 根据活动名称过滤(模糊查询)
|
|
|
if (StringUtils.isNotEmpty(acName)) {
|
|
if (StringUtils.isNotEmpty(acName)) {
|
|
|
- String name = acName;
|
|
|
|
|
|
|
+ String name = acName.trim();
|
|
|
ruleList = ruleList.stream()
|
|
ruleList = ruleList.stream()
|
|
|
.filter(i -> i.getAcName() != null && i.getAcName().contains(name))
|
|
.filter(i -> i.getAcName() != null && i.getAcName().contains(name))
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 根据状态过滤
|
|
|
if (StringUtils.isNotEmpty(status)) {
|
|
if (StringUtils.isNotEmpty(status)) {
|
|
|
- String s = status;
|
|
|
|
|
|
|
+ String s = status.trim();
|
|
|
ruleList = ruleList.stream()
|
|
ruleList = ruleList.stream()
|
|
|
.filter(i -> i.getStatus() != null && i.getStatus().equals(s))
|
|
.filter(i -> i.getStatus() != null && i.getStatus().equals(s))
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
return ruleList;
|
|
return ruleList;
|
|
|
}
|
|
}
|
|
|
|
|
|