Pārlūkot izejas kodu

fix 校验用户

he2802 3 gadi atpakaļ
vecāks
revīzija
7d11ec5e37

+ 11 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java

@@ -112,6 +112,17 @@ public class OrderController extends BaseController {
         return AjaxResult.success(iOrderService.queryById(orderId));
     }
 
+
+    /**
+     * 批量校验用户是否可以下单
+     */
+    @ApiOperation("批量校验用户是否可以下单")
+    @PreAuthorize("@ss.hasPermi('system:order:query')")
+    @PostMapping("/userCheckBuyList")
+    public AjaxResult<List<OrderUserCheckBuyBo>> userCheckBuyList(List<OrderUserCheckBuyBo> list) {
+        return AjaxResult.success(iOrderService.userCheckBuyList(list));
+    }
+
     /**
      * 新增订单
      */

+ 87 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -239,6 +239,90 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 bo.setMsg("该身份证用户不存在");
                 continue;
             }
+            OrderGoodsQueryBo orderGoodsQueryBo = new OrderGoodsQueryBo();
+            Long userId = user.getUserId();
+            Long goodsId = bo.getGoodsId();
+            orderGoodsQueryBo.setUserId(userId);
+            orderGoodsQueryBo.setGoodsId(goodsId);
+            List<Integer> refundStatusList = new ArrayList<>();
+            refundStatusList.add(0);
+            refundStatusList.add(1);
+            refundStatusList.add(3);
+            orderGoodsQueryBo.setRefundStatusList(refundStatusList);
+            List<Integer> payStatusList = new ArrayList<>();
+            payStatusList.add(2);
+            payStatusList.add(3);
+            payStatusList.add(4);
+            orderGoodsQueryBo.setPayStatusList(payStatusList);
+            List<OrderGoodsVo> list1 = iOrderGoodsService.selectList(orderGoodsQueryBo);
+            for(OrderGoodsVo goodsVo : list1){
+                if (goods.getGoodsType() == 6) {
+                    //直播商品
+                    bo.setMsg("直播商品不允许复购");
+                    continue;
+                }
+                if(Validator.isNotEmpty(goodsVo.getServiceEndTime())&&(goodsVo.getServiceEndTime().longValue()>(System.currentTimeMillis()/1000))){
+                    if(goodsVo.getGoodsType()==1){
+                        if(Validator.isNotEmpty(goodsVo.getGradeId())){
+                            ClassGrade grade = iClassGradeService.getOne(new LambdaQueryWrapper<ClassGrade>()
+                                    .eq(ClassGrade::getGradeId, goodsVo.getGradeId()));
+                            //不存在班级有效期才校验服务期是否过期
+                            if(Validator.isEmpty(grade.getClassEndTime())){
+                                bo.setMsg("存在已购买【学习服务期未过期】的视频商品,不可以重复购买商品");
+                                continue;
+                            }
+                        }
+                    }
+                    if(goodsVo.getGoodsType()==2){
+                        bo.setMsg("存在已购买【学习服务期未过期】的题库商品,不可以重复购买商品");
+                        continue;
+                    }
+                }
+            }
+            if (goods.getGoodsType() == 1) {
+                Long gradeId = bo.getGradeId();
+                //指定班级
+                if (gradeId != null && gradeId > 0) {
+                    ClassGradeVo classGradeVo = iClassGradeService.queryById(gradeId);
+                    if (classGradeVo == null) {
+                        bo.setMsg("班级不存在");
+                        continue;
+                    }
+                    if (classGradeVo.getStatus() != 1) {
+                        bo.setMsg("班级已失效");
+                        continue;
+                    }
+                    ClassGradeGoods gradeGoods = iClassGradeGoodsService.getOne(new LambdaQueryWrapper<ClassGradeGoods>().eq(ClassGradeGoods::getGradeId, gradeId)
+                            .eq(ClassGradeGoods::getGoodsId, goodsId));
+                    if (gradeGoods == null) {
+                        bo.setMsg("该班级不支持该商品使用");
+                        continue;
+                    }
+                    LambdaQueryWrapper<ClassGradeUser> lqw = new LambdaQueryWrapper<>();
+                    lqw.eq(ClassGradeUser::getGradeId, gradeId);
+                    lqw.eq(ClassGradeUser::getStatus, 1);
+                    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空位避免超人数
+                    if ((classGradeVo.getStudentUpper() - studentNum - locakStudentNum) > 0) {
+                        ClassGradeUser gradeUser = iClassGradeUserService.getOne(new LambdaQueryWrapper<ClassGradeUser>().eq(ClassGradeUser::getGradeId, gradeId)
+                                .eq(ClassGradeUser::getUserId, userId));
+                        //不在此班级内
+                        if(Validator.isNotEmpty(gradeUser)){
+                            bo.setMsg("用户已在此班级内");
+                            continue;
+                        }
+                    }else{
+                        bo.setMsg("班级人数已满");
+                        continue;
+                    }
+                }
+            }
+            bo.setMsg("下单验证成功");
         }
         return list;
     }
@@ -468,6 +552,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         for (OrderGoodsAddBo g : goodsList) {
             //订单商品
             Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, g.getGoodsId()));
+            if (Validator.isEmpty(goods)) {
+                throw new CustomException("商品不存在", 510);
+            }
             if (goods.getGoodsStatus() != 1) {
                 throw new CustomException(goods.getGoodsName()+"商品已下架,请重新选择商品下单", 510);
             }

+ 4 - 1
zhongzheng-system/src/main/resources/mapper/modules/user/UserMapper.xml

@@ -194,9 +194,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="idCard != null and idCard != ''" >
             AND u.id_card = #{idCard}
         </if>
-          <if test="realname != null and realname != ''" >
+        <if test="realname != null and realname != ''" >
             AND u.realname like concat('%', #{realname}, '%')
         </if>
+        <if test="companyName != null and companyName != ''" >
+            AND u.company_name like concat('%', #{companyName}, '%')
+        </if>
         <if test="userId != null and userId != ''" >
             AND u.user_id = #{userId}
         </if>