浏览代码

活动超时定时任务

yubin 2 周之前
父节点
当前提交
8e0e83c0cc

+ 6 - 0
mall-api/src/main/java/com/txz/mall/service/OrderDubboService.java

@@ -17,4 +17,10 @@ public interface OrderDubboService {
      */
     void orderTimeoutAutomaticCancel();
 
+    /**
+     * 活动状态定时任务
+     */
+    void activityStatusJudgmentTimedTask();
+
+
 }

+ 0 - 27
mall-interface/src/main/java/com/txz/mall/service/CreateSequenceServiceClient.java

@@ -1,27 +0,0 @@
-package com.txz.mall.service;
-
-
-import com.txz.mall.dto.*;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.*;
-import java.util.List;
-
-
-@FeignClient("mall")
-public interface CreateSequenceServiceClient {
-
-	@RequestMapping( value = {"/create/sequence/add"}, method = {RequestMethod.POST} )
-    public Result add(@RequestBody CreateSequenceDPO createSequence,@RequestParam("userId") Long userId);
-
-	@RequestMapping( value = {"/create/sequence/delete"}, method = {RequestMethod.POST} )
-	public Result delete(@RequestParam("id") Integer id,@RequestParam("userId") Long userId);
-
-	@RequestMapping( value = {"/create/sequence/update"}, method = {RequestMethod.POST} )
-	public Result update(@RequestBody CreateSequenceDPO createSequence,@RequestParam("userId") Long userId);
-
-	@RequestMapping( value = {"/create/sequence/detail"}, method = {RequestMethod.POST} )
-	public Result<CreateSequenceDPO> detail(@RequestParam("id") Integer id,@RequestParam("userId") Long userId);
-
-	@RequestMapping( value = {"/create/sequence/list"}, method = {RequestMethod.POST} )
-	public Result<List<CreateSequenceDPO>> list(@RequestBody CreateSequenceDPO createSequence, @RequestParam("page") Integer page, @RequestParam("size") Integer size,@RequestParam("userId") Long userId);
-}

+ 13 - 0
mall-service/src/main/java/com/txz/mall/controller/FlashActivityController.java

@@ -118,4 +118,17 @@ public class FlashActivityController {
     }
 
 
+    @PostMapping("/activityStatusJudgmentTimedTask")
+    @ApiOperation(value = "activityStatusJudgmentTimedTask")
+    public Result activityStatusJudgmentTimedTask() {
+
+        storeFlashActivityService.activityStatusJudgmentTimedTask();
+
+        return Result.success();
+    }
+
+
+
+
+
 }

+ 12 - 0
mall-service/src/main/java/com/txz/mall/dubbo/impl/OrderDubboServiceImpl.java

@@ -1,6 +1,7 @@
 package com.txz.mall.dubbo.impl;
 
 import com.txz.mall.service.OrderDubboService;
+import com.txz.mall.service.StoreFlashActivityService;
 import com.txz.mall.service.StoreOrderService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -13,6 +14,9 @@ public class OrderDubboServiceImpl implements OrderDubboService {
     @Resource
     private StoreOrderService storeOrderService;
 
+
+    @Resource
+    private StoreFlashActivityService storeFlashActivityService;
     /**
      * 拼团超时关闭定时任务
      */
@@ -42,4 +46,12 @@ public class OrderDubboServiceImpl implements OrderDubboService {
         storeOrderService.orderTimeoutAutomaticCancel();
         log.info("Mall:orderTimeoutAutomaticCancel end");
     }
+
+
+    @Override
+    public void activityStatusJudgmentTimedTask() {
+        log.info("Mall:activityStatusJudgmentTimedTask start");
+        storeFlashActivityService.activityStatusJudgmentTimedTask();
+        log.info("Mall:activityStatusJudgmentTimedTask end");
+    }
 }

+ 7 - 0
mall-service/src/main/java/com/txz/mall/service/StoreFlashActivityService.java

@@ -28,4 +28,11 @@ public interface StoreFlashActivityService extends Service<StoreFlashActivity> {
 
 
     void delete(StoreFlashActivity storeFlashActivity);
+
+
+    /**
+     * 活动状态处理定时任务
+     */
+    void activityStatusJudgmentTimedTask();
+
 }

+ 4 - 0
mall-service/src/main/java/com/txz/mall/service/impl/StoreCombinationServiceImpl.java

@@ -43,6 +43,7 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
     private final StoreFlashActivityService storeFlashActivityService;
     private final StorePinkService storePinkService;
 
+
     @Override
     public void addActivityProduct(List<StoreCombination> list, Long activityId) {
         StoreFlashActivity flashActivity = storeFlashActivityService.findById(activityId);
@@ -92,10 +93,13 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
         if (CollUtil.isNotEmpty(activityList)) {
             activityList.forEach(item -> {
                 item.setIsDelete(1);
+                item.setIsShow(0);
                 update(item);
             });
         }
         save(list);
+
+
     }
 
 

+ 64 - 11
mall-service/src/main/java/com/txz/mall/service/impl/StoreFlashActivityServiceImpl.java

@@ -19,6 +19,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.ObjectUtils;
 import tk.mybatis.mapper.entity.Condition;
 import tk.mybatis.mapper.entity.Example;
@@ -45,6 +46,7 @@ public class StoreFlashActivityServiceImpl extends AbstractService<StoreFlashAct
 
     @Override
     public List<StoreFlashActivity> activityList(StoreFlashActivity storeFlashActivity, Integer page, Integer size) {
+        this.activityStatusJudgmentTimedTask();
         PageHelper.startPage(page, size);
         Condition condition = new Condition(storeFlashActivity.getClass());
         Example.Criteria criteria = condition.createCriteria();
@@ -64,17 +66,17 @@ public class StoreFlashActivityServiceImpl extends AbstractService<StoreFlashAct
         }
         Date date = new Date();
         List<StoreFlashActivity> activityList = findByCondition(condition);
-        for (StoreFlashActivity flashActivity : activityList) {
-            Date startTime = flashActivity.getStartTime();
-            Date endTime = flashActivity.getEndTime();
-            if (startTime.getTime() > date.getTime()) {
-                flashActivity.setActiveState(0);
-            } else if (endTime.getTime() < date.getTime()) {
-                flashActivity.setActiveState(2);
-            } else {
-                flashActivity.setActiveState(1);
-            }
-        }
+//        for (StoreFlashActivity flashActivity : activityList) {
+//            Date startTime = flashActivity.getStartTime();
+//            Date endTime = flashActivity.getEndTime();
+//            if (startTime.getTime() > date.getTime()) {
+//                flashActivity.setActiveState(0);
+//            } else if (endTime.getTime() < date.getTime()) {
+//                flashActivity.setActiveState(2);
+//            } else {
+//                flashActivity.setActiveState(1);
+//            }
+//        }
         return activityList;
     }
 
@@ -207,4 +209,55 @@ public class StoreFlashActivityServiceImpl extends AbstractService<StoreFlashAct
         storeCombination.setUpdateUserId(storeFlashActivity.getUpdateUserId());
         storeCombinationMapper.updateByConditionSelective(storeCombination,exampleStoreCombination);
     }
+
+    @Override
+    public void activityStatusJudgmentTimedTask() {
+
+        Condition conditionStoreFlashActivity = new Condition(StoreFlashActivity.class);
+        conditionStoreFlashActivity.createCriteria().andEqualTo("isDelete",0);
+        List<StoreFlashActivity> storeFlashActivityList = this.findByCondition(conditionStoreFlashActivity);
+        Long tokenUserId = 99999L;
+        Date date = new Date();
+        if(!CollectionUtils.isEmpty(storeFlashActivityList)){
+
+            for (StoreFlashActivity flashActivity : storeFlashActivityList) {
+
+                StoreFlashActivity storeFlashActivity = new StoreFlashActivity();
+                BeanUtils.copyProperties(flashActivity, storeFlashActivity);
+                if((!ObjectUtils.isEmpty(storeFlashActivity.getStartTime())) && (!ObjectUtils.isEmpty(storeFlashActivity.getEndTime()))) {
+
+                    if (date.compareTo(storeFlashActivity.getStartTime()) < 0) {
+                        storeFlashActivity.setActiveState(0);
+                    } else if (date.compareTo(storeFlashActivity.getStartTime()) >= 0 && date.compareTo(storeFlashActivity.getEndTime()) <= 0) {
+                        storeFlashActivity.setActiveState(1);
+                    } else if (date.compareTo(storeFlashActivity.getEndTime()) > 0) {
+                        storeFlashActivity.setActiveState(2);
+                    }
+                }
+                storeFlashActivity.setUpdateTime(date);
+                storeFlashActivity.setUpdateUserId(tokenUserId);
+                update(storeFlashActivity);
+
+                //活动商品信息联动
+
+                Example exampleStoreCombination = new Example(StoreCombination.class);
+                exampleStoreCombination.createCriteria()
+                        .andEqualTo("activityId",flashActivity.getId());
+                StoreCombination storeCombination = new StoreCombination();
+                Integer statusOne = 1;
+                Integer statusZero = 0;
+
+                if(statusOne.equals(storeFlashActivity.getActiveState())
+                        &&  statusZero.equals(storeFlashActivity.getIsDelete())
+                ){
+                    storeCombination.setIsShow(1);
+                }else{
+                    storeCombination.setIsShow(0);
+                }
+
+                storeCombination.setUpdateUserId(storeFlashActivity.getUpdateUserId());
+                storeCombinationMapper.updateByConditionSelective(storeCombination,exampleStoreCombination);
+            }
+        }
+    }
 }

+ 40 - 0
mall-service/src/main/java/com/txz/mall/service/impl/StoreProductServiceImpl.java

@@ -2,6 +2,7 @@ package com.txz.mall.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.math.Combination;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.EasyExcel;
@@ -368,7 +369,46 @@ public class StoreProductServiceImpl extends AbstractService<StoreProduct> imple
     @Transactional
     public void update(StoreProductAddRequest request) {
         assignAttributes(request, 1);
+
         combinationMapper.updateCombinationByProductId(request);
+
+        //联动更新活动商品表的库存
+        if(!ObjectUtils.isEmpty(request)){
+            List<StoreProductAttrValueAddRequest> attrValueAddRequestList = request.getAttrValue();
+            if(!CollectionUtils.isEmpty(attrValueAddRequestList)){
+                Condition conditionFindCondition = new Condition(StoreCombination.class);
+                Example.Criteria criteriaConditionFindCondition = conditionFindCondition.createCriteria();
+                criteriaConditionFindCondition.andEqualTo("productId", request.getId());
+                criteriaConditionFindCondition.andEqualTo("isDelete",0);
+                List<StoreCombination> storeCombinations = combinationMapper.selectByCondition(conditionFindCondition);
+                if(!CollectionUtils.isEmpty(storeCombinations)){
+
+                    int sum = attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getStock).sum();
+                    for (StoreCombination storeCombination : storeCombinations) {
+
+                        Example exampleStoreCombination = new Example(StoreCombination.class);
+                        exampleStoreCombination
+                                .createCriteria()
+                                .andEqualTo("id",storeCombination.getId())
+                                .andEqualTo("version",storeCombination.getVersion());
+
+                        StoreCombination storeCombinationForUpdate = new StoreCombination();
+                        storeCombinationForUpdate.setStock(sum);
+                        storeCombinationForUpdate.setQuota(sum);
+                        storeCombinationForUpdate.setQuotaShow(sum);
+                        storeCombinationForUpdate.setNum(sum);
+                        storeCombinationForUpdate.setOnceNum(sum);
+                        storeCombinationForUpdate.setPrice(request.getPrice());
+                        storeCombinationForUpdate.setOtPrice(request.getOtPrice());
+                        storeCombinationForUpdate.setVersion(storeCombination.getVersion()+1);
+                        int i = combinationMapper.updateByConditionSelective(storeCombinationForUpdate,exampleStoreCombination);
+                        if(i==0){
+                            throw new ServiceException(I18nUtil.get("linkage.update.of.activity.inventory.failed.when.modifying.products"+storeCombination.getId()));
+                        }
+                    }
+                }
+            }
+        }
     }
 
     @Override

+ 3 - 0
mall-service/src/main/resources/i18n/messages_en_US.properties

@@ -153,3 +153,6 @@ automatic.order.receipt.confirmation=automatic order receipt confirmation
 product.export.template=product export template
 you.have.already.checked.in.today=you have already checked in today
 
+new.add=new.add
+linkage.update.of.activity.inventory.failed.when.modifying.products=linkage update of activity inventory failed when modifying products
+