Browse Source

临时锁定

he2802 3 years ago
parent
commit
39ef105a62

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java

@@ -44,7 +44,7 @@ public interface IOrderService extends IService<Order> {
 
 
 	Map<String, Object> placePlatOrder(OrderAddBo bo);
 	Map<String, Object> placePlatOrder(OrderAddBo bo);
 
 
-
+	boolean joinGrade(Long orderGoodsId,Long gradeId,Long userId);
 	/**
 	/**
 	 * 小程序下单
 	 * 小程序下单
 	 * @param bo
 	 * @param bo

+ 19 - 13
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -457,10 +457,15 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             lqw.eq(ClassGradeUser::getGradeId,gradeId);
             lqw.eq(ClassGradeUser::getGradeId,gradeId);
             lqw.eq(ClassGradeUser::getStatus,1);
             lqw.eq(ClassGradeUser::getStatus,1);
             int studentNum = iClassGradeUserService.count(lqw);
             int studentNum = iClassGradeUserService.count(lqw);
+            //临时锁定的班级学员数量
+            LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
+            lqwLock.eq(ClassGradeUserTemp::getGradeId,gradeId);
+            lqwLock.eq(ClassGradeUserTemp::getStatus,1);
+            int locakStudentNum = iClassGradeUserTempService.count(lqwLock);
             //预留0空位避免超人数
             //预留0空位避免超人数
-            if(classGradeVo.getStudentUpper()-studentNum>0){
-                //班级还有剩位,直接加入班级
-                return joinGrade(orderGoodsId,gradeId,userId);
+            if((classGradeVo.getStudentUpper()-studentNum-locakStudentNum)>0){
+                //班级还有剩位,直接锁定班级
+                return lockGrade(orderGoodsId,gradeId,userId,goodsId,orderSn);
             }
             }
         }else {
         }else {
             //无指定班级
             //无指定班级
@@ -469,12 +474,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             List<ClassGradeVo> classGradeVoList =  iClassGradeService.queryList(bo);
             List<ClassGradeVo> classGradeVoList =  iClassGradeService.queryList(bo);
             for(int i = 0; i < classGradeVoList.size(); i++){
             for(int i = 0; i < classGradeVoList.size(); i++){
                 ClassGradeVo classGradeVo = classGradeVoList.get(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空位避免超人数
                 //预留0空位避免超人数
-                if(classGradeVo.getStudentUpper()-classGradeVo.getStudentNum()>0){
+                if((classGradeVo.getStudentUpper()-classGradeVo.getStudentNum()-locakStudentNum)>0){
                     //有空位则进入班级
                     //有空位则进入班级
                     gradeId = classGradeVo.getGradeId();
                     gradeId = classGradeVo.getGradeId();
-                    //班级还有剩位,直接加入班级
-                    return joinGrade(orderGoodsId,gradeId,userId);
+                    //班级还有剩位,直接锁定班级
+                    return lockGrade(orderGoodsId,gradeId,userId,goodsId,orderSn);
                 }
                 }
             }
             }
         }
         }
@@ -529,25 +539,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         iOrderGoodsService.updateById(orderGoods);
         iOrderGoodsService.updateById(orderGoods);
         return true;
         return true;
     }
     }
+
+    @Override
     public boolean joinGrade(Long orderGoodsId,Long gradeId,Long userId){
     public boolean joinGrade(Long orderGoodsId,Long gradeId,Long userId){
         //进入班级
         //进入班级
         ClassGradeUser classGradeUser = new ClassGradeUser();
         ClassGradeUser classGradeUser = new ClassGradeUser();
         classGradeUser.setUserId(userId);
         classGradeUser.setUserId(userId);
         classGradeUser.setGradeId(gradeId);
         classGradeUser.setGradeId(gradeId);
         classGradeUser.setStatus(1);
         classGradeUser.setStatus(1);
-    //    classGradeUser.setCreateBy(SecurityUtils.getUsername());
+        //    classGradeUser.setCreateBy(SecurityUtils.getUsername());
         classGradeUser.setCreateBy("sys"); //系统分班
         classGradeUser.setCreateBy("sys"); //系统分班
         classGradeUser.setFromType(1);
         classGradeUser.setFromType(1);
         classGradeUser.setOrderGoodsId(orderGoodsId);
         classGradeUser.setOrderGoodsId(orderGoodsId);
         classGradeUser.setCreateTime(DateUtils.getNowTime());
         classGradeUser.setCreateTime(DateUtils.getNowTime());
         classGradeUser.setUpdateTime(DateUtils.getNowTime());
         classGradeUser.setUpdateTime(DateUtils.getNowTime());
         iClassGradeUserService.save(classGradeUser);
         iClassGradeUserService.save(classGradeUser);
-        //更新订单绑定班级ID
-        OrderGoods orderGoods = new OrderGoods();
-        orderGoods.setOrderGoodsId(orderGoodsId);
-        orderGoods.setGradeId(gradeId);
-        orderGoods.setUpdateTime(DateUtils.getNowTime());
-        iOrderGoodsService.updateById(orderGoods);
         return true;
         return true;
     }
     }
 }
 }

+ 17 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java

@@ -29,6 +29,8 @@ import com.zhongzheng.modules.course.domain.Course;
 import com.zhongzheng.modules.course.service.ICourseService;
 import com.zhongzheng.modules.course.service.ICourseService;
 import com.zhongzheng.modules.exam.service.IExamNoteService;
 import com.zhongzheng.modules.exam.service.IExamNoteService;
 
 
+import com.zhongzheng.modules.grade.domain.ClassGradeUserTemp;
+import com.zhongzheng.modules.grade.service.IClassGradeUserTempService;
 import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
 import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.OrderGoods;
 import com.zhongzheng.modules.order.domain.OrderGoods;
@@ -107,7 +109,8 @@ public class WxPayServiceImpl  implements IWxPayService {
 
 
     private boolean autoReport = false;
     private boolean autoReport = false;
 
 
-
+    @Autowired
+    private IClassGradeUserTempService iClassGradeUserTempService;
 
 
     @Autowired
     @Autowired
     private IOrderPossessUserService iOrderPossessUserService;
     private IOrderPossessUserService iOrderPossessUserService;
@@ -301,10 +304,23 @@ public class WxPayServiceImpl  implements IWxPayService {
                     g.setPayStatus(OrderGoods.PAY_FULL);
                     g.setPayStatus(OrderGoods.PAY_FULL);
                     g.setGoodsReceived(g.getGoodsRealPrice());
                     g.setGoodsReceived(g.getGoodsRealPrice());
                     iOrderGoodsService.updateById(g);
                     iOrderGoodsService.updateById(g);
+
                 }
                 }
             }
             }
 
 
         }
         }
         return true;
         return true;
     }
     }
+
+    public boolean checkLock(String orderSn,Long goodsId){
+        LambdaQueryWrapper<ClassGradeUserTemp> lqwLock = new LambdaQueryWrapper<>();
+        lqwLock.eq(ClassGradeUserTemp::getOrderSn,orderSn);
+        lqwLock.eq(ClassGradeUserTemp::getGoodsId,goodsId);
+        ClassGradeUserTemp classGradeUserTemp = iClassGradeUserTempService.getOne(lqwLock);
+        if(classGradeUserTemp!=null){
+            classGradeUserTemp.setStatus(0);
+        }
+        return true;
+    }
+
 }
 }