Parcourir la source

修改定时任务

YPZ il y a 4 semaines
Parent
commit
355f202131

+ 21 - 56
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketingCampaignServiceImpl.java

@@ -404,65 +404,30 @@ public class MarketingCampaignServiceImpl
         List<MarketingCampaignEntity> nonAll = this.lambdaQuery()
                 .eq(MarketingCampaignEntity::getIsDelete, CommonConstant.DEL_FLAG_0)
                 .eq(MarketingCampaignEntity::getStatus, 0)
+                .le(MarketingCampaignEntity::getBeginData, today)
                 .list();
-        if (CollectionUtils.isEmpty(nonAll)) {
-            log.info("营销活动开始/结束状态同步:无未删除活动,跳过");
-            return;
+        if (!CollectionUtils.isEmpty(nonAll)) {
+            List<Long> startIdList = nonAll.stream().map(MarketingCampaignEntity::getId).collect(Collectors.toList());
+            LambdaUpdateWrapper<MarketEmailsEntity> marketEmailsUpdateWrapper = new LambdaUpdateWrapper<>();
+            marketEmailsUpdateWrapper.in(MarketEmailsEntity::getMarketingCampaignId, startIdList);
+            marketEmailsUpdateWrapper.ne(MarketEmailsEntity::getStatus, -3);
+            marketEmailsUpdateWrapper.set(MarketEmailsEntity::getStatus, -1);
+            marketEmailsService.update(marketEmailsUpdateWrapper);
         }
-        // 按目标状态分组,只收集需要变更的 id(跳过暂停 / 日期缺失 / 状态已一致)
-        // 后续每种状态仅执行一次批量 UPDATE,而非逐条 UPDATE
-        Map<Integer, List<Long>> idsByStatus = new HashMap<>(4);
-        // 变更的实体列表(status 已回填为目标状态,用于区分改为开始/结束)
-        List<MarketingCampaignEntity> changed = new ArrayList<>();
-        for (MarketingCampaignEntity c : nonAll) {
-            Integer expected = computeStartEndStatus(c, today);
-            if (expected == null) {
-                continue;
-            }
-            Integer current = c.getStatus();
-            // 尊重手动暂停,不自动覆盖
-            if (current != null && current == STATUS_PAUSED) {
-                continue;
-            }
-            if (expected.equals(current)) {
-                continue;
-            }
-            idsByStatus.computeIfAbsent(expected, k -> new ArrayList<>()).add(c.getId());
-            c.setStatus(expected);
-            changed.add(c);
+        // 查询所有已结束的活动
+        List<MarketingCampaignEntity> stopAll = this.lambdaQuery()
+                .eq(MarketingCampaignEntity::getIsDelete, CommonConstant.DEL_FLAG_0)
+                .eq(MarketingCampaignEntity::getStatus, 1)
+                .ge(MarketingCampaignEntity::getEndDate, today)
+                .list();
+        if (!CollectionUtils.isEmpty(stopAll)) {
+            List<Long> stopIdList = stopAll.stream().map(MarketingCampaignEntity::getId).collect(Collectors.toList());
+            LambdaUpdateWrapper<MarketEmailsEntity> marketEmailsUpdateWrapper = new LambdaUpdateWrapper<>();
+            marketEmailsUpdateWrapper.in(MarketEmailsEntity::getMarketingCampaignId, stopIdList);
+            marketEmailsUpdateWrapper.eq(MarketEmailsEntity::getStatus, -1);
+            marketEmailsUpdateWrapper.set(MarketEmailsEntity::getStatus, -3);
+            marketEmailsService.update(marketEmailsUpdateWrapper);
         }
-//        // 每种目标状态执行一次批量 UPDATE
-//        for (Map.Entry<Integer, List<Long>> entry : idsByStatus.entrySet()) {
-//            List<Long> ids = entry.getValue();
-//            if (CollectionUtils.isEmpty(ids)) {
-//                continue;
-//            }
-//            this.lambdaUpdate()
-//                    .in(MarketingCampaignEntity::getId, ids)
-//                    .set(MarketingCampaignEntity::getStatus, entry.getKey())
-//                    .update();
-//        }
-//        // 按目标状态拆分列表并打印:哪些改为开始、哪些改为结束
-//        List<Long> started = changed.stream()
-//                .filter(e -> STATUS_RUNNING == e.getStatus())
-//                .map(MarketingCampaignEntity::getId)
-//                .collect(Collectors.toList());
-//        List<Long> ended = changed.stream()
-//                .filter(e -> STATUS_COMPLETED == e.getStatus())
-//                .map(MarketingCampaignEntity::getId)
-//                .collect(Collectors.toList());
-//        log.info("营销活动开始/结束状态同步完成:改为开始(运行中)={}, 改为结束(完成)={}", started, ended);
-//        MarketEmailsCustomerVO startVO = new MarketEmailsCustomerVO();
-//        startVO.setMarketingCampaignIdList(started);
-//        //修改状态为待发送
-//        startVO.setStatus(-1);
-//        marketEmailsService.updateCustomerEmailStatus(startVO);
-//
-//        MarketEmailsCustomerVO endVO = new MarketEmailsCustomerVO();
-//        endVO.setMarketingCampaignIdList(ended);
-//        //修改状态为待发送
-//        endVO.setStatus(-3);
-//        marketEmailsService.updateCustomerEmailStatus(endVO);
     }
 
     /**