Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master'

Mr.qian 2 долоо хоног өмнө
parent
commit
21db9c632b

+ 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();
+
 }

+ 13 - 8
mall-service/src/main/java/com/txz/mall/service/impl/StoreCombinationServiceImpl.java

@@ -44,6 +44,8 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
     private final StoreProductService storeProductService;
     private final StoreFlashActivityService storeFlashActivityService;
     private final StorePinkService storePinkService;
+
+
     
     @Resource
     private StoreCombinationMapper storeCombinationMapper;
@@ -134,10 +136,13 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
         if (CollUtil.isNotEmpty(activityList)) {
             activityList.forEach(item -> {
                 item.setIsDelete(1);
+                item.setIsShow(0);
                 update(item);
             });
         }
         save(list);
+
+
         
         return duplicateIdStr;
     }
@@ -172,30 +177,30 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
         }
         return combinationList.get(0);
     }
-    
+
     @Override
     public synchronized void operationStock(Long id, Integer num, String type) {
         StoreCombination combination = findById(id);
         if (ObjectUtils.isEmpty(combination)) {
             throw new ServiceException(I18nUtil.get("group.buying.activity.does.not.exist.id") + id);
         }
-        
+
         StoreCombination storeCombinationForUpdate = new StoreCombination();
         if ("add".equals(type)) {
-            
+
             int sales = combination.getSales() - num;
             int stock = combination.getStock() + num;
             int quota = combination.getQuota() + num;
             if (sales < 0) {
                 throw new ServiceException(I18nUtil.get("the.sales.deduction.of.group.buying.activity.m_store_combination.is.negative.id") + id);
             }
-            
+
             storeCombinationForUpdate.setSales(sales);
             storeCombinationForUpdate.setStock(stock);
             storeCombinationForUpdate.setQuota(quota);
         }
         if ("sub".equals(type)) {
-            
+
             int sales = combination.getSales() + num;
             int stock = combination.getStock() - num;
             int quota = combination.getQuota() - num;
@@ -205,11 +210,11 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
             if (quota < 0) {
                 throw new ServiceException(I18nUtil.get("the.quota.deduction.of.group.buying.activity.m_store_combination.is.negative.id") + id);
             }
-            
+
             storeCombinationForUpdate.setSales(sales);
             storeCombinationForUpdate.setStock(stock);
             storeCombinationForUpdate.setQuota(quota);
-            
+
         }
         storeCombinationForUpdate.setVersion(combination.getVersion() + 1);
         Example example = new Example(StoreCombination.class);
@@ -218,7 +223,7 @@ public class StoreCombinationServiceImpl extends AbstractService<StoreCombinatio
         if (!(i == 1)) {
             throw new ServiceException(I18nUtil.get("storecombination.inventory.operation.failed.id") + id);
         }
-        
+
     }
 
 

+ 86 - 43
mall-service/src/main/java/com/txz/mall/service/impl/StoreFlashActivityServiceImpl.java

@@ -18,6 +18,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;
@@ -44,6 +45,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();
@@ -58,40 +60,30 @@ public class StoreFlashActivityServiceImpl extends AbstractService<StoreFlashAct
         if (storeFlashActivity.getStatus() != null) {
             criteria.andEqualTo("status", storeFlashActivity.getStatus());
         }
-        // if (storeFlashActivity.getActiveState() != null) {
-        //     criteria.andEqualTo("activeState", storeFlashActivity.getActiveState());
-        // }
+         if (storeFlashActivity.getActiveState() != null) {
+             criteria.andEqualTo("activeState", storeFlashActivity.getActiveState());
+         }
         
         // 不知道哪个臭SB写的,减少改动,暂时先这样处理
-        Date now = new Date();
-        if (ObjectUtil.isNotEmpty(storeFlashActivity.getActiveState())) {
-            
-            switch (storeFlashActivity.getActiveState()) {
-                case 0:
-                    criteria.andGreaterThan("startTime", now);
-                    break;
-                case 1:
-                    criteria.andLessThanOrEqualTo("startTime", now);
-                    criteria.andGreaterThanOrEqualTo("endTime", now);
-                    break;
-                case 2:
-                    criteria.andLessThan("endTime", now);
-                    break;
-            }
-        }
-        
+//        Date now = new Date();
+//        if (ObjectUtil.isNotEmpty(storeFlashActivity.getActiveState())) {
+//
+//            switch (storeFlashActivity.getActiveState()) {
+//                case 0:
+//                    criteria.andGreaterThan("startTime", now);
+//                    break;
+//                case 1:
+//                    criteria.andLessThanOrEqualTo("startTime", now);
+//                    criteria.andGreaterThanOrEqualTo("endTime", now);
+//                    break;
+//                case 2:
+//                    criteria.andLessThan("endTime", now);
+//                    break;
+//            }
+//        }
+//
         List<StoreFlashActivity> activityList = findByCondition(condition);
-        for (StoreFlashActivity flashActivity : activityList) {
-            Date startTime = flashActivity.getStartTime();
-            Date endTime = flashActivity.getEndTime();
-            if (startTime.getTime() > now.getTime()) {
-                flashActivity.setActiveState(0);
-            } else if (endTime.getTime() < now.getTime()) {
-                flashActivity.setActiveState(2);
-            } else {
-                flashActivity.setActiveState(1);
-            }
-        }
+
         return activityList;
     }
     
@@ -182,44 +174,95 @@ public class StoreFlashActivityServiceImpl extends AbstractService<StoreFlashAct
         //        storeCombination.setIsDelete(storeFlashActivity.getIsDelete());
         storeCombination.setUpdateUserId(storeFlashActivity.getUpdateUserId());
         storeCombinationMapper.updateByConditionSelective(storeCombination, exampleStoreCombination);
-        
-        
+
+
     }
-    
-    
+
+
     @Override
     public void delete(StoreFlashActivity storeFlashActivity) {
-        
+
         StoreFlashActivity storeFlashActivityOri = findById(storeFlashActivity.getId());
         if (ObjectUtils.isEmpty(storeFlashActivityOri)) {
             throw new ServiceException(I18nUtil.get("activity.does.not.exist.id") + storeFlashActivityOri.getId());
         }
-        
+
         JSONObject tokenUser = UserUtil.getTokenUser(null);
         Long tokenUserId = 0L;
-        
+
         if (!ObjectUtils.isEmpty(tokenUser)) {
             if (!ObjectUtils.isEmpty(tokenUser.getLongValue("id"))) {
                 tokenUserId = tokenUser.getLongValue("id");
             }
         }
         Date date = new Date();
-        
+
         storeFlashActivity.setUpdateTime(date);
         storeFlashActivity.setUpdateUserId(tokenUserId);
-        
+
         update(storeFlashActivity);
-        
+
         // 活动商品信息联动
-        
+
         Example exampleStoreCombination = new Example(StoreCombination.class);
         exampleStoreCombination.createCriteria()
                 .andEqualTo("activityId", storeFlashActivity.getId());
-        
+
         StoreCombination storeCombination = new StoreCombination();
         storeCombination.setIsShow(0);
         storeCombination.setIsDelete(storeFlashActivity.getIsDelete());
         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
+