YPZ hai 3 semanas
pai
achega
fb6a484dce

+ 37 - 1
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/MarketingCampaignServiceImpl.java

@@ -536,6 +536,42 @@ public class MarketingCampaignServiceImpl
     @Override
     public void syncStartEndStatus() {
         LocalDate today = LocalDate.now(ZoneId.of("Asia/Shanghai"));
+
+        // ===== 操作1:到了开始时间但仍未开始的营销活动,自动开始(0未开始 → 1运行中)=====
+        List<MarketingCampaignEntity> autoStartList = this.lambdaQuery()
+                .eq(MarketingCampaignEntity::getIsDelete, CommonConstant.DEL_FLAG_0)
+                .eq(MarketingCampaignEntity::getStatus, STATUS_NOT_STARTED)
+                .le(MarketingCampaignEntity::getBeginData, today)
+                .list();
+        if (!CollectionUtils.isEmpty(autoStartList)) {
+            List<Long> autoStartIdList = autoStartList.stream()
+                    .map(MarketingCampaignEntity::getId)
+                    .collect(Collectors.toList());
+            LambdaUpdateWrapper<MarketingCampaignEntity> autoStartWrapper = new LambdaUpdateWrapper<>();
+            autoStartWrapper.in(MarketingCampaignEntity::getId, autoStartIdList);
+            autoStartWrapper.set(MarketingCampaignEntity::getStatus, STATUS_RUNNING);
+            this.update(autoStartWrapper);
+            log.info("营销活动自动开始(未开始→运行中):{}", autoStartIdList);
+        }
+
+        // ===== 操作2:到了结束时间的营销活动,自动结束(→ 3已完成)=====
+        List<MarketingCampaignEntity> autoEndList = this.lambdaQuery()
+                .eq(MarketingCampaignEntity::getIsDelete, CommonConstant.DEL_FLAG_0)
+//                .ne(MarketingCampaignEntity::getStatus, STATUS_COMPLETED)
+                .eq(MarketingCampaignEntity::getStatus, STATUS_RUNNING)
+                .le(MarketingCampaignEntity::getEndDate, today)
+                .list();
+        if (!CollectionUtils.isEmpty(autoEndList)) {
+            List<Long> autoEndIdList = autoEndList.stream()
+                    .map(MarketingCampaignEntity::getId)
+                    .collect(Collectors.toList());
+            LambdaUpdateWrapper<MarketingCampaignEntity> autoEndWrapper = new LambdaUpdateWrapper<>();
+            autoEndWrapper.in(MarketingCampaignEntity::getId, autoEndIdList);
+            autoEndWrapper.set(MarketingCampaignEntity::getStatus, STATUS_COMPLETED);
+            this.update(autoEndWrapper);
+            log.info("营销活动自动结束(→已完成):{}", autoEndIdList);
+        }
+
         // 查询所有未开始的活动
         List<MarketingCampaignEntity> nonAll = this.lambdaQuery()
                 .eq(MarketingCampaignEntity::getIsDelete, CommonConstant.DEL_FLAG_0)
@@ -553,7 +589,7 @@ public class MarketingCampaignServiceImpl
         // 查询所有已结束的活动
         List<MarketingCampaignEntity> stopAll = this.lambdaQuery()
                 .eq(MarketingCampaignEntity::getIsDelete, CommonConstant.DEL_FLAG_0)
-                .eq(MarketingCampaignEntity::getStatus, 1)
+                .in(MarketingCampaignEntity::getStatus, STATUS_RUNNING, STATUS_COMPLETED)
                 .le(MarketingCampaignEntity::getEndDate, today)
                 .list();
         if (!CollectionUtils.isEmpty(stopAll)) {