瀏覽代碼

优化创建律师订单部分的代码

ldz 6 天之前
父節點
當前提交
bb3b4837e1

+ 13 - 1
alien-lawyer/src/main/java/shop/alien/lawyer/controller/LawyerConsultationOrderController.java

@@ -351,7 +351,19 @@ public class LawyerConsultationOrderController {
     })
     @PostMapping("/checkOrder")
     public R<Map<String, String>> checkOrder(@RequestParam Integer clientUserId, @RequestParam Integer lawyerUserId) {
-        log.info("LawyerConsultationOrderController.checkOrder?clientUserId={},lawyerUserId{}", clientUserId, lawyerUserId);
+        log.info("LawyerConsultationOrderController.checkOrder?clientUserId={},lawyerUserId={}", clientUserId, lawyerUserId);
+        
+        // 参数校验
+        if (clientUserId == null) {
+            log.warn("创建订单前校验失败:客户端用户ID为空");
+            return R.fail("客户端用户ID不能为空");
+        }
+        
+        if (lawyerUserId == null) {
+            log.warn("创建订单前校验失败:律师用户ID为空");
+            return R.fail("律师用户ID不能为空");
+        }
+        
         return consultationOrderService.checkOrder(clientUserId, lawyerUserId);
     }
 

+ 36 - 7
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawyerConsultationOrderServiceImpl.java

@@ -546,6 +546,15 @@ public class LawyerConsultationOrderServiceImpl extends ServiceImpl<LawyerConsul
         return consultationFee;
     }
 
+    /**
+     * 更新订单支付状态
+     * <p>
+     * 根据支付状态更新订单信息,包括订单状态、支付状态、支付时间等
+     * </p>
+     *
+     * @param request 支付状态更新请求对象,包含订单编号、支付状态、订单状态等信息,不能为空
+     * @return 更新结果,成功返回订单信息,失败返回错误信息
+     */
     @Override
     public R<LawyerConsultationOrderDto> payStatus(PayStatusRequest request) {
         log.info("LawyerConsultationOrderServiceImpl.payStatus?orderNumber={},paymentStatus={},orderStatus={}",
@@ -1286,19 +1295,39 @@ public class LawyerConsultationOrderServiceImpl extends ServiceImpl<LawyerConsul
     }
 
     /**
-     * 查询律师订单列表
+     * 创建订单前的校验
+     * <p>
+     * 检查用户是否已存在咨询该律师的订单(订单状态为待接单或进行中)
+     * </p>
      *
-     * @param clientUserId 用户id
-     * @param lawyerUserId 律师ID
-     * @return 订单列表
+     * @param clientUserId 客户端用户ID,不能为空
+     * @param lawyerUserId 律师用户ID,不能为空
+     * @return 校验结果,如果已存在订单返回失败,否则返回成功
      */
     @Override
     public R<Map<String, String>> checkOrder(Integer clientUserId, Integer lawyerUserId) {
-        log.info("LawyerConsultationOrderController.checkOrder?clientUserId={},lawyerUserId{}", clientUserId, lawyerUserId);
-        List<LawyerConsultationOrder> orderDto = consultationOrderMapper.selectOrder(clientUserId, lawyerUserId);
-        if (CollectionUtils.isNotEmpty(orderDto)) {
+        log.info("LawyerConsultationOrderServiceImpl.checkOrder?clientUserId={},lawyerUserId={}", clientUserId, lawyerUserId);
+        
+        // 参数校验
+        if (clientUserId == null) {
+            log.warn("创建订单前校验失败:客户端用户ID为空");
+            return R.fail("客户端用户ID不能为空");
+        }
+        
+        if (lawyerUserId == null) {
+            log.warn("创建订单前校验失败:律师用户ID为空");
+            return R.fail("律师用户ID不能为空");
+        }
+        
+        // 查询是否存在进行中的订单(订单状态为待接单或进行中)
+        List<LawyerConsultationOrder> existingOrders = consultationOrderMapper.selectOrder(clientUserId, lawyerUserId);
+        
+        if (CollectionUtils.isNotEmpty(existingOrders)) {
+            log.warn("创建订单前校验失败:用户已存在咨询该律师的订单,clientUserId={},lawyerUserId={}", clientUserId, lawyerUserId);
             return R.fail("您已存在咨询该律师的订单");
         }
+        
+        log.info("创建订单前校验成功:可以咨询该律师,clientUserId={},lawyerUserId={}", clientUserId, lawyerUserId);
         return R.success("可以咨询该律师");
     }