From afa0dbb4f54e7244835dd67ec33c3e545f122f71 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 17 一月 2025 16:40:43 +0800
Subject: [PATCH] bug修改

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java |   34 +++++++++++++++++++++++++++++-----
 1 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
index a8096f9..4d6584b 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -192,7 +192,8 @@
                         BigDecimal activityPrice = mgtActivityGoodsEditDto.getActivityPrice();
                         BigDecimal activitySubscription = mgtActivityGoodsEditDto.getActivitySubscription();
                         Integer activityNumber = mgtActivityGoodsEditDto.getActivityNumber();
-                        if(goodsId.equals(goodsId1) && activitySubscription1.compareTo(activitySubscription) != 0){
+                        if(null != activitySubscription && null != activitySubscription1 &&
+                                goodsId.equals(goodsId1) && activitySubscription1.compareTo(activitySubscription) != 0){
                             throw new ServiceException("不能修改定金");
                         }
                         if(goodsId.equals(goodsId1) && activityPrice1.compareTo(activityPrice) != 0){
@@ -269,6 +270,9 @@
         this.saveOrUpdate(activity);
         // 获取活动商品信息
         List<MgtActivityGoodsEditDto> mgtActivityGoodsEditDtoList = mgtActivityEditDto.getMgtActivityGoodsEditDtoList();
+
+        //存储需要更新缓存的库存数量
+        List<Map<String, Object>> goods = new ArrayList<>();
         // 如果活动商品信息不为空,则保存活动商品信息
         if (!mgtActivityGoodsEditDtoList.isEmpty()) {
             List<ActivityGoods> activityGoodsList = mgtActivityGoodsEditDtoList.stream().map(
@@ -278,7 +282,12 @@
                                 .eq(ActivityGoods::getGoodsId, dto.getGoodsId())
                                 .eq(ActivityGoods::getDelFlag, 0)
                         );
+                        int number = 0;
                         if(null != activityGoods){
+                            //剩余数量
+                            Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activity.getActivityId() + "-" + dto.getGoodsId());
+                            surpNum = null == surpNum ? 0 : surpNum;
+                            number = surpNum + (dto.getActivityNumber() - activityGoods.getActivityNumber());
                             activityGoods.setActivityId(activity.getActivityId());
                             activityGoods.setActivityPrice(dto.getActivityPrice());
                             activityGoods.setActivitySubscription(dto.getActivitySubscription());
@@ -288,6 +297,7 @@
                             activityGoods.setPurchaseLimitationFlag(activity.getPurchaseLimitationFlag());
                             activityGoods.setLimitNumber(activity.getLimitNumber());
                         }else{
+                            number = dto.getActivityNumber();
                             activityGoods = new ActivityGoods();
                             activityGoods.setDelFlag(0);
                             activityGoods.setGoodsId(dto.getGoodsId());
@@ -302,6 +312,10 @@
                             activityGoods.setPurchaseLimitationFlag(activity.getPurchaseLimitationFlag());
                             activityGoods.setLimitNumber(activity.getLimitNumber());
                         }
+                        Map<String, Object> map = new HashMap<>();
+                        map.put("goodsId", dto.getGoodsId());
+                        map.put("number", number);
+                        goods.add(map);
                         return activityGoods;
                     }
             ).collect(Collectors.toList());
@@ -309,6 +323,16 @@
                 activityGoodsService.saveOrUpdateBatch(activityGoodsList);
             }
         }
+
+        //进行中的活动更新缓存中库存数量
+        if(activity.getActivityStatus() == 1){
+            for (Map<String, Object> good : goods) {
+                String goodsId = good.get("goodsId").toString();
+                Integer number = Integer.valueOf(good.get("number").toString());
+                redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activity.getActivityId()+"-"+goodsId,number);
+            }
+        }
+
         //如果活动在1小时内生成自动开始任务的延时任务
         Date checkTime = DateUtils.addMinutes(new Date(),61);
         if(checkTime.compareTo(activityStartTime)>0){
@@ -384,11 +408,11 @@
                 if(endDelayTask.getEndTime().compareTo(activityEndTime)!=0){
                     remoteConfigService.deleteDelayTask(DelayTaskEnum.ACTIVITY_END_TASK.getCode() + "-" + activityId);
                     redisService.deleteObject(DelayTaskEnum.ACTIVITY_END_TASK.getCode() + "-" + activityId);
-                    redisService.setCacheObject(DelayTaskEnum.ACTIVITY_END_TASK.getCode() + "-" + activityId, activityEndTime, startTimeDifference, TimeUnit.MILLISECONDS);
+                    redisService.setCacheObject(DelayTaskEnum.ACTIVITY_END_TASK.getCode() + "-" + activityId, activityEndTime, endTimeDifference, TimeUnit.MILLISECONDS);
                     endDelayTask = new DelayTask();
                     endDelayTask.setDelFlag(0);
                     endDelayTask.setCreateTime(new Date());
-                    endDelayTask.setEndTime(activityStartTime);
+                    endDelayTask.setEndTime(activityEndTime);
                     endDelayTask.setRedisKey(DelayTaskEnum.ACTIVITY_END_TASK.getCode() + "-" + activityId);
                     remoteConfigService.addDelayTask(endDelayTask);
                 }
@@ -486,7 +510,7 @@
             MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
             mgtBaseBathDto = new MgtBaseBathDto();
             mgtBaseBathDto.setIds(userJoinedString);
-            List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+            List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData();
             Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
                     .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
             for (MgtActivityRecordPageVo mgtActivityRecordPageVo : activityRecordPageVoList) {
@@ -665,7 +689,7 @@
     public void startActivity(String activityId){
         log.debug(activityId+"活动开始");
         Activity activity = this.getById(activityId);
-        if(activity!=null&&activity.getActivityStatus()==0){
+        if(activity!=null && activity.getActivityStatus() == 0){
             activity.setActivityStatus(1);
             List<ActivityGoods> activityGoodsList = activityGoodsService.listByActivityId(activityId);
             if(activityGoodsList!=null&&!activityGoodsList.isEmpty()){

--
Gitblit v1.7.1