浏览代码

fix(marketing): 修复促销时间判断逻辑

- 优化了促销时间判断逻辑,确保订单时间在指定时间段内才满足条件
- 新增 timeCondition 变量,用于记录订单时间是否符合要求- 遍历所有时间段,只有当订单时间在某个时间段内时,才将该促销保留- 如果订单时间不符合任何时间段,则移除该促销
hechunping 1 月之前
父节点
当前提交
475cf346f9

+ 7 - 2
src/main/java/com/xynet/marketing/service/factory/promotion/impl/base/PromotionFactoryBase.java

@@ -118,6 +118,7 @@ public class PromotionFactoryBase extends ServiceImpl<PromotionMapper, Promotion
         for (int i = 0; i < promotionList.size(); i++) {
             Promotion promotion = promotionList.get(i);
             if (!promotion.getIsAllDay()) {
+                Boolean timeCondition = false;
                 String dayTime = promotion.getDayTime();
                 JSONArray jsonArray = JSONUtil.parseArray(dayTime);
                 for (int j = 0; j < jsonArray.size(); j++) {
@@ -125,10 +126,14 @@ public class PromotionFactoryBase extends ServiceImpl<PromotionMapper, Promotion
                     LocalTime startTime = LocalTime.parse(jsonObject.get("startTime").toString() + ":00", DateTimeFormatter.ofPattern("HH:mm:ss"));
                     LocalTime endTime = LocalTime.parse(jsonObject.get("endTime").toString() + ":00", DateTimeFormatter.ofPattern("HH:mm:ss"));
                     // 判断 orderCreateTime 是否在指定时间段内
-                    if (orderTime.isBefore(startTime) || orderTime.isAfter(endTime)) {
-                        promotionList.remove(i);
+                    if (!orderTime.isBefore(startTime) && !orderTime.isAfter(endTime)) {
+                        timeCondition = true;
+                        break;
                     }
                 }
+                if (!timeCondition) {
+                    promotionList.remove(i);
+                }
             }
         }