Browse Source

更新 律师平台 用户端 获取推荐律师列表 接口

LuTong 1 month ago
parent
commit
80c361f3df

+ 7 - 11
alien-store/src/main/java/shop/alien/store/controller/LawyerUserController.java

@@ -144,20 +144,16 @@ public class LawyerUserController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "page", value = "页码(默认1)", dataType = "int", paramType = "query"),
             @ApiImplicitParam(name = "pageSize", value = "每页数量(默认10)", dataType = "int", paramType = "query"),
-            @ApiImplicitParam(name = "categoryId", value = "分类ID(可选)", dataType = "Integer", paramType = "query"),
-            @ApiImplicitParam(name = "keyword", value = "搜索关键词(律师姓名)", dataType = "String", paramType = "query"),
-            @ApiImplicitParam(name = "sortBy", value = "排序方式:recommend(推荐), price(价格), experience(经验)", dataType = "String", paramType = "query")
+            @ApiImplicitParam(name = "categoryId", value = "分类ID(可选)", dataType = "Integer", paramType = "query")
     })
     @GetMapping("/recommend/list")
-    public R<Map<String, Object>> getRecommendedLawyerList(
+    public R<IPage<LawyerUser>> getRecommendedLawyerList(
             @RequestParam(defaultValue = "1") int page,
             @RequestParam(defaultValue = "10") int pageSize,
-            @RequestParam(required = false) Integer categoryId,
-            @RequestParam(required = false) String keyword,
-            @RequestParam(defaultValue = "recommend") String sortBy) {
-        log.info("LawyerUserController.getRecommendedLawyerList?page={},pageSize={},categoryId={},keyword={},sortBy={}",
-                page, pageSize, categoryId, keyword, sortBy);
-        return lawyerUserService.getRecommendedLawyerList(page, pageSize, categoryId, keyword, sortBy);
+            @RequestParam(required = false) Integer categoryId) {
+        log.info("LawyerUserController.getRecommendedLawyerList?page={},pageSize={},categoryId={}",
+                page, pageSize, categoryId);
+        return lawyerUserService.getRecommendedLawyerList(page, pageSize, categoryId);
     }
 
     @ApiOperation("根据会话获取推荐律师列表")
@@ -167,7 +163,7 @@ public class LawyerUserController {
             @ApiImplicitParam(name = "messageId", value = "消息ID(可选)", dataType = "Integer", paramType = "query")
     })
     @GetMapping("/recommend/bySession")
-    public R<Map<String, Object>> getRecommendedLawyersBySession(
+    public R<IPage<LawyerUser>> getRecommendedLawyersBySession(
             @RequestParam String sessionId,
             @RequestParam(required = false) Integer messageId) {
         log.info("LawyerUserController.getRecommendedLawyersBySession?sessionId={},messageId={}", sessionId, messageId);

+ 4 - 6
alien-store/src/main/java/shop/alien/store/service/LawyerUserService.java

@@ -74,19 +74,17 @@ public interface LawyerUserService extends IService<LawyerUser> {
      * @param page       页码
      * @param pageSize   每页数量
      * @param categoryId 分类ID(可选)
-     * @param keyword    搜索关键词(律师姓名)
-     * @param sortBy     排序方式:recommend(推荐), price(价格), experience(经验)
-     * @return R<Map<String, Object>>
+     * @return R<IPage<LawyerUser>>
      */
-    R<Map<String, Object>> getRecommendedLawyerList(int page, int pageSize, Integer categoryId, String keyword, String sortBy);
+    R<IPage<LawyerUser>> getRecommendedLawyerList(int page, int pageSize, Integer categoryId);
 
     /**
      * 根据会话获取推荐律师列表
      *
      * @param sessionId 会话ID
      * @param messageId 消息ID(可选)
-     * @return R<Map<String, Object>>
+     * @return R<IPage<LawyerUser>>
      */
-    R<Map<String, Object>> getRecommendedLawyersBySession(String sessionId, Integer messageId);
+    R<IPage<LawyerUser>> getRecommendedLawyersBySession(String sessionId, Integer messageId);
 }
 

+ 8 - 64
alien-store/src/main/java/shop/alien/store/service/impl/LawyerUserServiceImpl.java

@@ -153,9 +153,9 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
     }
 
     @Override
-    public R<Map<String, Object>> getRecommendedLawyerList(int page, int pageSize, Integer categoryId, String keyword, String sortBy) {
-        log.info("LawyerUserServiceImpl.getRecommendedLawyerList?page={},pageSize={},categoryId={},keyword={},sortBy={}",
-                page, pageSize, categoryId, keyword, sortBy);
+    public R<IPage<LawyerUser>> getRecommendedLawyerList(int page, int pageSize, Integer categoryId) {
+        log.info("LawyerUserServiceImpl.getRecommendedLawyerList?page={},pageSize={},categoryId={}",
+                page, pageSize, categoryId);
 
         int pageNum = page > 0 ? page : 1;
         int pageSizeNum = pageSize > 0 ? pageSize : 10;
@@ -166,11 +166,6 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
                 .eq("status", 1)  // 已启用
                 .eq("order_receiving_status", 1);  // 接单中
 
-        // 关键词搜索(律师姓名)
-        if (StringUtils.hasText(keyword)) {
-            queryWrapper.like("name", keyword);
-        }
-
         // 分类筛选:通过律师服务领域关联表查询
         if (categoryId != null) {
             QueryWrapper<LawyerServiceArea> areaQuery = new QueryWrapper<>();
@@ -194,76 +189,25 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
             }
         }
 
-        // 排序:优先推荐律师 -> 在线律师 -> 创建时间
-        // 基础排序:推荐状态(推荐的在前面)、在线状态(在线的在前面)、创建时间(最老的在前面)
+        // 排序:优先推荐律师 -> 在线律师 -> 注册时间
         queryWrapper.orderByDesc("is_recommended")  // 优先推荐律师(1在前,0在后)
                 .orderByDesc("is_online")  // 然后在线律师(1在前,0在后)
-                .orderByAsc("created_time");  // 最后按创建时间倒序(最新的在前)
-
-        // 根据sortBy参数添加额外排序
-        switch (sortBy) {
-            case "price":
-                queryWrapper.orderByAsc("consultation_fee");  // 价格升序
-                break;
-            case "experience":
-                queryWrapper.orderByDesc("practice_years");  // 经验降序
-                break;
-            case "recommend":
-            default:
-                // 推荐排序:推荐排序号(升序,数字小的在前)、服务评分(降序,分数高的在前)
-                queryWrapper.orderByAsc("recommend_sort")
-                        .orderByDesc("service_score");
-                break;
-        }
+                .orderByAsc("created_time");  // 最后按注册时间升序(最早注册的在前面)
 
         // 分页查询
         Page<LawyerUser> pageObj = new Page<>(pageNum, pageSizeNum);
         IPage<LawyerUser> pageResult = this.page(pageObj, queryWrapper);
 
-        // 转换为前端需要的格式
-        List<Map<String, Object>> records = pageResult.getRecords().stream().map(lawyer -> {
-            Map<String, Object> lawyerMap = new HashMap<>();
-            lawyerMap.put("id", lawyer.getId());
-            lawyerMap.put("name", lawyer.getName());
-            lawyerMap.put("avatar", lawyer.getHeadImg() != null ? lawyer.getHeadImg() : "");
-            lawyerMap.put("intro", lawyer.getPersonalIntroduction() != null ? lawyer.getPersonalIntroduction() :
-                    (lawyer.getAccountBlurb() != null ? lawyer.getAccountBlurb() : "Ta还没有个人业务介绍"));
-            lawyerMap.put("field", lawyer.getSpecialtyFields() != null ? lawyer.getSpecialtyFields() : "");
-            lawyerMap.put("experience", lawyer.getPracticeYears() != null ? lawyer.getPracticeYears() : 0);
-            lawyerMap.put("lawFirm", lawyer.getLawFirm() != null ? lawyer.getLawFirm() : "");
-            lawyerMap.put("online", lawyer.getIsOnline() != null && lawyer.getIsOnline() == 1);
-            // 咨询价格从分转换为元
-            lawyerMap.put("price", lawyer.getConsultationFee() != null ? lawyer.getConsultationFee() / 100 : 0);
-
-            // 获取服务标签(通过律师服务领域关联表)
-            QueryWrapper<LawyerServiceArea> tagQuery = new QueryWrapper<>();
-            tagQuery.eq("lawyer_user_id", lawyer.getId())
-                    .eq("delete_flag", 0)
-                    .eq("status", 1)
-                    .orderByAsc("sort_order");
-            List<LawyerServiceArea> serviceAreas = lawyerServiceAreaService.list(tagQuery);
-            // TODO: 这里需要关联查询问题场景名称,暂时返回空数组
-            lawyerMap.put("serviceTags", new ArrayList<>());
-
-            return lawyerMap;
-        }).collect(Collectors.toList());
-
-        Map<String, Object> result = new HashMap<>();
-        result.put("records", records);
-        result.put("total", pageResult.getTotal());
-        result.put("page", pageNum);
-        result.put("pageSize", pageSizeNum);
-
-        return R.data(result);
+        return R.data(pageResult);
     }
 
     @Override
-    public R<Map<String, Object>> getRecommendedLawyersBySession(String sessionId, Integer messageId) {
+    public R<IPage<LawyerUser>> getRecommendedLawyersBySession(String sessionId, Integer messageId) {
         log.info("LawyerUserServiceImpl.getRecommendedLawyersBySession?sessionId={},messageId={}", sessionId, messageId);
 
         // TODO: 根据会话ID查询AI交互日志,获取关联的问题场景ID,然后推荐相关律师
         // 这里暂时返回推荐列表(可以复用上面的逻辑)
-        return getRecommendedLawyerList(1, 10, null, null, "recommend");
+        return getRecommendedLawyerList(1, 10, null);
     }
 }