|
|
@@ -238,7 +238,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
totalPrice = totalPrice.add(g.getGoodsPrice());
|
|
|
//暂不计算优惠券
|
|
|
payPrice = payPrice.add(g.getGoodsPrice());
|
|
|
-
|
|
|
+ boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
|
|
|
boolean canRepeatBuy = false;
|
|
|
//视频商品安排班级
|
|
|
if(goods.getGoodsType()==1){
|
|
|
@@ -258,7 +258,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
orderGoods.setRebuy(1);
|
|
|
}
|
|
|
}
|
|
|
- boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
|
|
|
String requestId = IdUtil.simpleUUID();
|
|
|
RedisLockEntity redisLockEntity = new RedisLockEntity();
|
|
|
redisLockEntity.setLockKey(RedisLockEntity.KEY_LOCK_GRADE);
|
|
|
@@ -273,6 +272,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
if(!canRepeatBuy&&goods.getGoodsType()!=3&&goods.getGoodsType()!=4){
|
|
|
this.checkBuyGoods(g.getGoodsId(),bo.getUserId());
|
|
|
}
|
|
|
+ iOrderGoodsService.updateById(orderGoods);
|
|
|
}
|
|
|
|
|
|
add.setOrderSn(out_trade_no);
|
|
|
@@ -336,7 +336,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
totalPrice = totalPrice.add(goods.getStandPrice());
|
|
|
//暂不计算优惠券
|
|
|
payPrice = payPrice.add(goods.getStandPrice());
|
|
|
-
|
|
|
+ boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
|
|
|
|
|
|
boolean canRepeatBuy = false;
|
|
|
//视频商品安排班级
|
|
|
@@ -356,7 +356,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
orderGoods.setRebuy(1);
|
|
|
}
|
|
|
}
|
|
|
- boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
|
|
|
String requestId = IdUtil.simpleUUID();
|
|
|
RedisLockEntity redisLockEntity = new RedisLockEntity();
|
|
|
redisLockEntity.setLockKey(RedisLockEntity.KEY_LOCK_GRADE);
|
|
|
@@ -365,6 +364,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
arrangeGrade(goods.getGoodsName(),goods.getGoodsId(),orderGoods.getOrderGoodsId(),gradeId,add.getUserId(),out_trade_no);
|
|
|
redisCache.unlockLua(redisLockEntity);
|
|
|
}
|
|
|
+ iOrderGoodsService.updateById(orderGoods);
|
|
|
}
|
|
|
|
|
|
if(!canRepeatBuy&&goods.getGoodsType()!=3&&goods.getGoodsType()!=4){
|
|
|
@@ -563,6 +563,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
throw new CustomException("该学员已在此商品有效期内的班级,无法加入新的有效期班级,请查看该学员此商品下的班级");
|
|
|
}*/
|
|
|
//指定班级
|
|
|
+ System.out.println("指定班级"+gradeId);
|
|
|
if(gradeId!=null&&gradeId>0){
|
|
|
ClassGradeVo classGradeVo = iClassGradeService.queryById(gradeId);
|
|
|
if(classGradeVo==null){
|
|
|
@@ -590,29 +591,30 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
//班级还有剩位,直接锁定班级
|
|
|
return lockGrade(orderGoodsId,gradeId,userId,goodsId,orderSn);
|
|
|
}
|
|
|
- }else {
|
|
|
- //无指定班级
|
|
|
- ClassGradeQueryBo bo = new ClassGradeQueryBo();
|
|
|
- bo.setGoodsId(goodsId);
|
|
|
- bo.setPastDue(1L);
|
|
|
- bo.setStatus(new ArrayList<Integer>(Arrays.asList(1)));
|
|
|
- List<ClassGradeVo> classGradeVoList = iClassGradeService.queryList(bo);
|
|
|
- for(int i = 0; i < classGradeVoList.size(); i++){
|
|
|
- ClassGradeVo classGradeVo = classGradeVoList.get(i);
|
|
|
- //临时锁定的班级学员数量
|
|
|
- LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
|
|
|
- lqwLock.eq(ClassGradeUserTemp::getGradeId,gradeId);
|
|
|
- lqwLock.eq(ClassGradeUserTemp::getStatus,1);
|
|
|
- int locakStudentNum = iClassGradeUserTempService.count(lqwLock);
|
|
|
- //预留0空位避免超人数
|
|
|
- if((classGradeVo.getStudentUpper()-classGradeVo.getStudentNum()-locakStudentNum)>0){
|
|
|
- //有空位则进入班级
|
|
|
- gradeId = classGradeVo.getGradeId();
|
|
|
- //班级还有剩位,直接锁定班级
|
|
|
- return lockGrade(orderGoodsId,gradeId,userId,goodsId,orderSn);
|
|
|
- }
|
|
|
+ }
|
|
|
+ //无指定班级或者指定班级已满
|
|
|
+ ClassGradeQueryBo bo = new ClassGradeQueryBo();
|
|
|
+ bo.setGoodsId(goodsId);
|
|
|
+ bo.setPastDue(1L);
|
|
|
+ bo.setStatus(new ArrayList<Integer>(Arrays.asList(1)));
|
|
|
+ List<ClassGradeVo> classGradeVoList = iClassGradeService.queryList(bo);
|
|
|
+ for(int i = 0; i < classGradeVoList.size(); i++){
|
|
|
+ ClassGradeVo classGradeVo = classGradeVoList.get(i);
|
|
|
+ //临时锁定的班级学员数量
|
|
|
+ LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
|
|
|
+ lqwLock.eq(ClassGradeUserTemp::getGradeId,gradeId);
|
|
|
+ lqwLock.eq(ClassGradeUserTemp::getStatus,1);
|
|
|
+ int locakStudentNum = iClassGradeUserTempService.count(lqwLock);
|
|
|
+ //预留0空位避免超人数
|
|
|
+ if((classGradeVo.getStudentUpper()-classGradeVo.getStudentNum()-locakStudentNum)>0){
|
|
|
+ System.out.println("进入新班级"+gradeId);
|
|
|
+ //有空位则进入班级
|
|
|
+ gradeId = classGradeVo.getGradeId();
|
|
|
+ //班级还有剩位,直接锁定班级
|
|
|
+ return lockGrade(orderGoodsId,gradeId,userId,goodsId,orderSn);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
//创建新班级
|
|
|
ClassGrade classGrade = new ClassGrade();
|
|
|
classGrade.setStudentUpper(ClassGrade.INIT_UPPER); //上限300
|