he2802 4 лет назад
Родитель
Сommit
d96c0245a7

+ 27 - 25
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

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