Selaa lähdekoodia

新增律师端查询律师订单接口

zhangchen 1 kuukausi sitten
vanhempi
commit
a2fa7ab2bc

+ 54 - 0
alien-entity/src/main/java/shop/alien/mapper/LawyerConsultationOrderMapper.java

@@ -1,7 +1,9 @@
 package shop.alien.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.*;
 import org.apache.ibatis.annotations.Param;
@@ -10,6 +12,7 @@ import shop.alien.entity.store.vo.LawyerConsultationOrderVO;
 
 import java.util.List;
 import shop.alien.entity.store.dto.LawyerConsultationOrderDto;
+import shop.alien.entity.store.vo.LifeCouponVo;
 import shop.alien.entity.store.vo.LifeUserExpertOrderVo;
 
 import java.util.List;
@@ -159,6 +162,57 @@ public interface LawyerConsultationOrderMapper extends BaseMapper<LawyerConsulta
             "</script>")
     int updateOrder(LawyerConsultationOrderDto order);
 
+    /**
+     * 查询咨询订单(律师端)
+     *
+     * @param page 分页
+     * @param queryWrapper 查询对象
+     * @return 列表结果
+     */
+    @Select("        SELECT\n" +
+            "        lco.id,\n" +
+            "        lco.order_number,\n" +
+            "        lco.client_user_id,\n" +
+            "        lco.lawyer_user_id,\n" +
+            "        lco.problem_scenario_id,\n" +
+            "        lco.problem_description,\n" +
+            "        ROUND(IFNULL(lco.order_amount, 0) / 100, 2) as order_amount,\n" +
+            "        lco.consultation_fee,\n" +
+            "        lco.start_time,\n" +
+            "        lco.end_time,\n" +
+            "        lco.order_status,\n" +
+            "        lco.payment_status,\n" +
+            "        lco.order_time,\n" +
+            "        lco.payment_time,\n" +
+            "        lco.validity_period,\n" +
+            "        lco.rating,\n" +
+            "        lco.comment,\n" +
+            "        lco.created_time,\n" +
+            "        lu.name AS lawyer_name,\n" +
+            "        lu.phone AS lawyer_phone,\n" +
+            "        lu.email AS lawyer_email,\n" +
+            "        lu.lawyer_certificate_no,\n" +
+            "        lu.law_firm,\n" +
+            "        lu.practice_years,\n" +
+            "        lu.specialty_fields,\n" +
+            "        lu.certification_status,\n" +
+            "        lu.service_score,\n" +
+            "        lu.service_count,\n" +
+            "        lu.consultation_fee AS lawyer_consultation_fee,\n" +
+            "        lu.province,\n" +
+            "        lu.city,\n" +
+            "        lu.district,\n" +
+            "        lu.address,\n" +
+            "        lu.head_img,\n" +
+            "        lu.nick_name,\n" +
+            "        lu.personal_introduction,\n" +
+            "        lea.expertise_area_info\n" +
+            "        FROM lawyer_consultation_order lco\n" +
+            "        LEFT JOIN lawyer_user lu ON lco.lawyer_user_id = lu.id AND lu.delete_flag = 0\n" +
+            "        left join lawyer_expertise_area lea on lea.id = lu.lawyer_expertise_area_id and lea.delete_flag = 0 ${ew.customSqlSegment}")
+    IPage<LawyerConsultationOrderVO> getLawyerConsultationOrderList(
+            IPage<LawyerConsultationOrderVO> page, @Param(Constants.WRAPPER) QueryWrapper<LawyerConsultationOrderVO> queryWrapper
+    );
 
 
 }

+ 20 - 0
alien-store/src/main/java/shop/alien/store/controller/LawyerConsultationOrderController.java

@@ -293,5 +293,25 @@ public class LawyerConsultationOrderController {
         return R.data(consultationOrderService.cancelOrder(id));
     }
 
+    @ApiOperation("查询咨询订单(律师端)")
+    @ApiOperationSupport(order = 14)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "页数(默认1)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "size", value = "页容(默认10)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "startDate", value = "开始时间", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "endDate", value = "结束时间", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "lawyerId", value = "律师ID", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/getLawyerConsultationOrderList")
+    public R<IPage<LawyerConsultationOrderVO>> getLawyerConsultationOrderList(@RequestParam(defaultValue = "1") int page,
+                                                                            @RequestParam(defaultValue = "10") int size,
+                                                                            @RequestParam(required = false) String startDate,
+                                                                            @RequestParam(required = false) String endDate,
+                                                                            @RequestParam(required = true) String lawyerId) {
+        log.info("LawyerConsultationOrderController.getLawyerConsultationOrderList?pageNum={},pageSize={},startDate={},endDate={},lawyerId={}",
+                page, size, startDate, endDate, lawyerId);
+        return consultationOrderService.getLawyerConsultationOrderList(page, size, startDate, endDate, lawyerId);
+    }
+
 }
 

+ 12 - 0
alien-store/src/main/java/shop/alien/store/service/LawyerConsultationOrderService.java

@@ -102,5 +102,17 @@ public interface LawyerConsultationOrderService extends IService<LawyerConsultat
     LawyerConsultationOrderVO getConsultationOrderDetail(String lawyerOrderId);
 
     boolean cancelOrder(String id);
+
+    /**
+     * 查询咨询订单(律师端)
+     *
+     * @param pageNum      页码
+     * @param pageSize     页容
+     * @param startDate  开始时间
+     * @param endDate 结束时间
+     * @param lawyerId 律师ID
+     * @return IPage<LawyerConsultationOrderVO>
+     */
+    R<IPage<LawyerConsultationOrderVO>> getLawyerConsultationOrderList(int pageNum, int pageSize, String startDate, String endDate, String lawyerId);
 }
 

+ 53 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LawyerConsultationOrderServiceImpl.java

@@ -734,6 +734,59 @@ public class LawyerConsultationOrderServiceImpl extends ServiceImpl<LawyerConsul
         return success;
     }
 
+    @Override
+    public R<IPage<LawyerConsultationOrderVO>> getLawyerConsultationOrderList(int pageNum, int pageSize, String startDate, String endDate, String lawyerId) {
+        Page<LawyerConsultationOrderVO> page = new Page<>(pageNum, pageSize);
+
+        // 如果按律师姓名搜索,先查询匹配的律师ID列表
+        if (!StringUtils.hasText(lawyerId)) {
+            Page<LawyerConsultationOrderVO> emptyPage = new Page<>(pageNum, pageSize);
+            emptyPage.setRecords(Collections.emptyList());
+            emptyPage.setTotal(0);
+            return R.data(emptyPage);
+        }
+
+        // 查询订单列表
+        QueryWrapper<LawyerConsultationOrderVO> lawyerConsultationOrderQueryWrapper = new QueryWrapper<>();
+        lawyerConsultationOrderQueryWrapper.in("lco.order_status", Arrays.asList("2", "3"));
+        lawyerConsultationOrderQueryWrapper.eq("lco.lawyer_user_id", lawyerId);
+        if(StringUtils.hasText(startDate) && StringUtils.hasText(startDate)){
+            lawyerConsultationOrderQueryWrapper.between("lco.payment_time", startDate + " 00:00:00", endDate + " 23:59:59");
+        }
+        lawyerConsultationOrderQueryWrapper.eq("lco.delete_flag", 0);
+        IPage<LawyerConsultationOrderVO> voPage = consultationOrderMapper.getLawyerConsultationOrderList(
+                page, lawyerConsultationOrderQueryWrapper);
+
+        // 填充律师问题场景信息
+        fillLawyerServiceArea(voPage);
+
+        // 為待支付訂單計算倒計時(30分鐘有效期)
+        if (voPage != null && voPage.getRecords() != null) {
+            Date now = new Date();
+            long validitySeconds = 30 * 60; // 30分鐘 = 1800秒
+
+            for (LawyerConsultationOrderVO vo : voPage.getRecords()) {
+                // 僅對待支付訂單(orderStatus=0)計算倒計時
+                if (vo.getOrderStatus() != null && vo.getOrderStatus() == 0) {
+                    Date orderTime = vo.getOrderTime();
+                    if (orderTime != null) {
+                        long elapsedSeconds = (now.getTime() - orderTime.getTime()) / 1000;
+                        long remainingSeconds = validitySeconds - elapsedSeconds;
+                        // 如果已過期,設置為0
+                        vo.setCountdownSeconds(Math.max(0, remainingSeconds));
+                    } else {
+                        vo.setCountdownSeconds(0L);
+                    }
+                } else {
+                    // 非待支付訂單,倒計時為null
+                    vo.setCountdownSeconds(null);
+                }
+            }
+        }
+
+        return R.data(voPage);
+    }
+
     /**
      * 填充律师信息到订单VO
      *