Parcourir la source

feat(Promotion): 添加促销活动状态自动更新功能

hechunping il y a 3 mois
Parent
commit
2186795435

+ 32 - 0
src/main/java/com/xynet/marketing/service/impl/PromotionServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xynet.marketing.entity.Promotion;
+import com.xynet.marketing.enums.PromotionStatusEnum;
 import com.xynet.marketing.mapper.PromotionMapper;
 import com.xynet.marketing.service.MercProjectDeviceService;
 import com.xynet.marketing.service.MercProjectGoodsService;
@@ -18,6 +19,7 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 
@@ -38,6 +40,8 @@ public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion
     private static String ACT_TYPE = "promotion";
 
     private LambdaQueryWrapper<Promotion> commonQueryWrapper(JMap<String, Object> param) {
+        //先更新状态
+        autoUpdateStatus(param.getInt("mercId"));
         LambdaQueryWrapper<Promotion> lqw = new LambdaQueryWrapper<Promotion>()
                 .eq(Emptys.check(param.getInt("id")), Promotion::getId, param.getInt("id"))
                 .eq(Emptys.check(param.getInt("mercId")), Promotion::getMercId, param.getInt("mercId"))
@@ -102,4 +106,32 @@ public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion
         return promotionFactory.goodsListPrice(param);
     }
 
+    /**
+     * 自动更新状态
+     *
+     * @param mercId
+     */
+    private void autoUpdateStatus(Integer mercId) {
+        LocalDateTime now = LocalDateTime.now();
+        // 未开始
+        LambdaUpdateWrapper<Promotion> notStartLqw = new LambdaUpdateWrapper<Promotion>()
+                .set(Promotion::getStatus, PromotionStatusEnum.NOT_START.getCode())
+                .eq(Promotion::getMercId, mercId)
+                .gt(Promotion::getStartTime, now);
+        update(notStartLqw);
+        // 进行中
+        LambdaUpdateWrapper<Promotion> underwayLqw = new LambdaUpdateWrapper<Promotion>()
+                .set(Promotion::getStatus, PromotionStatusEnum.UNDERWAY.getCode())
+                .eq(Promotion::getMercId, mercId)
+                .le(Promotion::getStartTime, now)
+                .ge(Promotion::getEndTime, now);
+        update(underwayLqw);
+        // 已结束
+        LambdaUpdateWrapper<Promotion> finishedLqw = new LambdaUpdateWrapper<Promotion>()
+                .set(Promotion::getStatus, PromotionStatusEnum.FINISHED.getCode())
+                .eq(Promotion::getMercId, mercId)
+                .le(Promotion::getEndTime, now);
+        update(finishedLqw);
+    }
+
 }