Browse Source

fix 系统选新班

he2802 3 years ago
parent
commit
5e6b6ab9f7

+ 54 - 36
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -3,7 +3,10 @@ package com.zhongzheng.modules.grade.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.core.redis.RedisCache;
+import com.zhongzheng.common.core.redis.RedisLockEntity;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.goods.service.IGoodsService;
@@ -72,6 +75,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     @Autowired
     private IGoodsService iGoodsService;
 
+    @Autowired
+    private RedisCache redisCache;
+
     @Autowired
     private UserMapper userMapper;
 
@@ -131,24 +137,30 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
             throw new CustomException("学习次数不够");
         }
         GoodsVo goodsVo = iGoodsService.selectDetail(bo.getGoodsId());
-        //分新班
-        Long newGradeId = iOrderService.changeGrade(goodsVo.getGoodsName(),bo.getGoodsId(),bo.getOrderGoodsId(),bo.getGradeId(),bo.getUserId());
-        if(newGradeId>0){
-            //老班修改换班状态
-            ClassGradeUser classGradeUser =  getOne(new LambdaQueryWrapper< ClassGradeUser>().eq(ClassGradeUser::getUserId,bo.getUserId())
-                    .eq(ClassGradeUser::getStatus,1)
-                    .eq(ClassGradeUser::getGradeId,bo.getOldGradeId())
-                    .last("limit 1"));
-            classGradeUser.setChangeGrade(1);
-            classGradeUser.setUpdateTime(DateUtils.getNowTime());
-            updateById(classGradeUser);
-            //消耗学习次数
-            OrderGoods orderGoods = new OrderGoods();
-            orderGoods.setOrderGoodsId(bo.getOrderGoodsId());
-            orderGoods.setStudyCount(orderGoodsVo.getStudyCount()-1);
-            orderGoods.setUpdateTime(DateUtils.getNowTime());
-            orderGoods.setGradeId(newGradeId);
-            iOrderGoodsService.updateById(orderGoods);
+        String requestId = IdUtil.simpleUUID();
+        RedisLockEntity redisLockEntity = new RedisLockEntity();
+        redisLockEntity.setLockKey(RedisLockEntity.KEY_LOCK_GRADE);
+        redisLockEntity.setRequestId(requestId);
+        if(redisCache.lock(redisLockEntity)){
+            //分新班
+            Long newGradeId = iOrderService.changeGrade(goodsVo.getGoodsName(),bo.getGoodsId(),bo.getOrderGoodsId(),bo.getGradeId(),bo.getUserId());
+            if(newGradeId>0){
+                //老班修改换班状态
+                ClassGradeUser classGradeUser =  getOne(new LambdaQueryWrapper< ClassGradeUser>().eq(ClassGradeUser::getUserId,bo.getUserId())
+                        .eq(ClassGradeUser::getStatus,1)
+                        .eq(ClassGradeUser::getGradeId,bo.getOldGradeId())
+                        .last("limit 1"));
+                classGradeUser.setChangeGrade(1);
+                classGradeUser.setUpdateTime(DateUtils.getNowTime());
+                updateById(classGradeUser);
+                //消耗学习次数
+                OrderGoods orderGoods = new OrderGoods();
+                orderGoods.setOrderGoodsId(bo.getOrderGoodsId());
+                orderGoods.setStudyCount(orderGoodsVo.getStudyCount()-1);
+                orderGoods.setUpdateTime(DateUtils.getNowTime());
+                orderGoods.setGradeId(newGradeId);
+                iOrderGoodsService.updateById(orderGoods);
+            }
         }
         return true;
     }
@@ -176,24 +188,30 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                 throw new CustomException("学习次数不够");
             }
             GoodsVo goodsVo = iGoodsService.selectDetail(item.getGoodsId());
-            //分新班
-            Long newGradeId = iOrderService.sysChangeGrade(goodsVo.getGoodsName(),item.getGoodsId(),item.getOrderGoodsId(),item.getGradeId(),item.getUserId());
-            if(newGradeId>0){
-                //老班修改换班状态
-                ClassGradeUser classGradeUser =  getOne(new LambdaQueryWrapper< ClassGradeUser>().eq(ClassGradeUser::getUserId,item.getUserId())
-                        .eq(ClassGradeUser::getStatus,1)
-                        .eq(ClassGradeUser::getGradeId,item.getOldGradeId())
-                        .last("limit 1"));
-                classGradeUser.setChangeGrade(1);
-                classGradeUser.setUpdateTime(DateUtils.getNowTime());
-                updateById(classGradeUser);
-                //消耗学习次数
-                OrderGoods orderGoods = new OrderGoods();
-                orderGoods.setOrderGoodsId(item.getOrderGoodsId());
-                orderGoods.setStudyCount(orderGoodsVo.getStudyCount()-1);
-                orderGoods.setUpdateTime(DateUtils.getNowTime());
-                orderGoods.setGradeId(newGradeId);
-                iOrderGoodsService.updateById(orderGoods);
+            String requestId = IdUtil.simpleUUID();
+            RedisLockEntity redisLockEntity = new RedisLockEntity();
+            redisLockEntity.setLockKey(RedisLockEntity.KEY_LOCK_GRADE);
+            redisLockEntity.setRequestId(requestId);
+            if(redisCache.lock(redisLockEntity)){
+                //分新班
+                Long newGradeId = iOrderService.sysChangeGrade(goodsVo.getGoodsName(),item.getGoodsId(),item.getOrderGoodsId(),item.getGradeId(),item.getUserId());
+                if(newGradeId>0){
+                    //老班修改换班状态
+                    ClassGradeUser classGradeUser =  getOne(new LambdaQueryWrapper< ClassGradeUser>().eq(ClassGradeUser::getUserId,item.getUserId())
+                            .eq(ClassGradeUser::getStatus,1)
+                            .eq(ClassGradeUser::getGradeId,item.getOldGradeId())
+                            .last("limit 1"));
+                    classGradeUser.setChangeGrade(1);
+                    classGradeUser.setUpdateTime(DateUtils.getNowTime());
+                    updateById(classGradeUser);
+                    //消耗学习次数
+                    OrderGoods orderGoods = new OrderGoods();
+                    orderGoods.setOrderGoodsId(item.getOrderGoodsId());
+                    orderGoods.setStudyCount(orderGoodsVo.getStudyCount()-1);
+                    orderGoods.setUpdateTime(DateUtils.getNowTime());
+                    orderGoods.setGradeId(newGradeId);
+                    iOrderGoodsService.updateById(orderGoods);
+                }
             }
         }
         return true;