|
@@ -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;
|