Ver código fonte

维护通过昵称模糊查询律师接口

827079570 1 mês atrás
pai
commit
fec3f64057

+ 5 - 5
alien-lawyer/src/main/java/shop/alien/lawyer/controller/LawyerUserController.java

@@ -168,22 +168,22 @@ public class LawyerUserController {
         return lawyerUserService.getRecommendedLawyersBySession(sessionId, messageId);
     }
 
-    @ApiOperation("通过姓名模糊查询律师(并保存搜索历史)")
+    @ApiOperation("通过昵称模糊查询律师(并保存搜索历史)")
     @ApiOperationSupport(order = 11)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "name", value = "律师姓名(支持模糊查询)", dataType = "String", paramType = "query", required = true),
+            @ApiImplicitParam(name = "nickName", value = "律师昵称(支持模糊查询,为空时返回所有律师)", dataType = "String", paramType = "query", required = false),
             @ApiImplicitParam(name = "page", value = "页码(默认1)", dataType = "int", paramType = "query"),
             @ApiImplicitParam(name = "pageSize", value = "每页数量(默认10)", dataType = "int", paramType = "query"),
             @ApiImplicitParam(name = "clientUserId", value = "客户端用户ID(可选,用于保存搜索历史)", dataType = "Integer", paramType = "query")
     })
     @GetMapping("/searchByName")
     public R<IPage<LawyerUser>> searchLawyerByName(
-            @RequestParam String name,
+            @RequestParam(required = false) String nickName,
             @RequestParam(defaultValue = "1") int page,
             @RequestParam(defaultValue = "10") int pageSize,
             @RequestParam(required = false) Integer clientUserId) {
-        log.info("LawyerUserController.searchLawyerByName?name={},page={},pageSize={},clientUserId={}", name, page, pageSize, clientUserId);
-        return lawyerUserService.searchLawyerByName(name, page, pageSize, clientUserId);
+        log.info("LawyerUserController.searchLawyerByName?nickName={},page={},pageSize={},clientUserId={}", nickName, page, pageSize, clientUserId);
+        return lawyerUserService.searchLawyerByName(nickName, page, pageSize, clientUserId);
     }
 
 

+ 2 - 2
alien-lawyer/src/main/java/shop/alien/lawyer/service/LawyerUserService.java

@@ -89,13 +89,13 @@ public interface LawyerUserService extends IService<LawyerUser> {
     /**
      * 通过姓名模糊查询律师(并保存搜索历史)
      *
-     * @param name        律师姓名(支持模糊查询)
+     * @param nickName        律师姓名(支持模糊查询)
      * @param page        页码
      * @param pageSize    每页数量
      * @param clientUserId 客户端用户ID(可选,用于保存搜索历史)
      * @return R<IPage<LawyerUser>>
      */
-    R<IPage<LawyerUser>> searchLawyerByName(String name, int page, int pageSize, Integer clientUserId);
+    R<IPage<LawyerUser>> searchLawyerByName(String nickName, int page, int pageSize, Integer clientUserId);
 
     /**
      * 获取推荐律师列表

+ 31 - 22
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawyerUserServiceImpl.java

@@ -21,8 +21,6 @@ import shop.alien.lawyer.service.LawyerUserSearchHistoryService;
 import shop.alien.lawyer.service.LawyerUserService;
 import shop.alien.mapper.LawyerUserMapper;
 
-import shop.alien.util.myBaticsPlus.QueryBuilder;
-
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -289,30 +287,36 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
     }
 
     @Override
-    public R<IPage<LawyerUser>> searchLawyerByName(String name, int page, int pageSize, Integer clientUserId) {
-        log.info("LawyerUserServiceImpl.searchLawyerByName?name={},page={},pageSize={},clientUserId={}", name, page, pageSize, clientUserId);
-
-        // 参数校验
-        if (name == null || name.trim().isEmpty()) {
-            return R.fail("姓名不能为空");
-        }
+    public R<IPage<LawyerUser>> searchLawyerByName(String nickName, int page, int pageSize, Integer clientUserId) {
+        log.info("LawyerUserServiceImpl.searchLawyerByName?nickName={},page={},pageSize={},clientUserId={}", nickName, page, pageSize, clientUserId);
 
         int pageNum = page > 0 ? page : 1;
         int pageSizeNum = pageSize > 0 ? pageSize : 10;
 
-        // 通过姓名模糊查询律师(分页)
-        LawyerUser query = new LawyerUser();
-        query.setName(name.trim());
-        IPage<LawyerUser> pageResult = QueryBuilder.of(query)
-                .likeFields("name")  // 姓名支持模糊查询
-                .page(pageNum, pageSizeNum)
-                .build()
-                .page(this);
-
-        // 如果提供了用户ID,保存搜索历史(如果不存在则添加)
-        if (clientUserId != null) {
+        // 构建查询条件
+        QueryWrapper<LawyerUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("delete_flag", 0)
+                .eq("status", 1)
+                .eq("order_receiving_status", 1);
+
+        // 如果昵称不为空,添加昵称模糊查询条件
+        if (nickName != null && !nickName.trim().isEmpty()) {
+            queryWrapper.like("nick_name", nickName.trim());
+        }
+        
+        // 排序:优先推荐律师 -> 在线律师 -> 注册时间
+        queryWrapper.orderByDesc("is_recommended")
+                .orderByDesc("is_online")
+                .orderByAsc("created_time");
+        
+        // 分页查询
+        Page<LawyerUser> pageObj = new Page<>(pageNum, pageSizeNum);
+        IPage<LawyerUser> pageResult = this.page(pageObj, queryWrapper);
+
+        // 如果提供了用户ID且昵称不为空,保存搜索历史(如果不存在则添加)
+        if (clientUserId != null && nickName != null && !nickName.trim().isEmpty()) {
             try {
-                String keyword = name.trim();
+                String keyword = nickName.trim();
                 // 检查是否已存在相同的搜索历史记录
                 LambdaQueryWrapper<LawyerUserSearchHistory> checkWrapper = new LambdaQueryWrapper<>();
                 checkWrapper.eq(LawyerUserSearchHistory::getClientUserId, clientUserId)
@@ -333,11 +337,16 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
                     log.debug("搜索历史已存在,跳过添加:用户ID={}, 关键词={}", clientUserId, keyword);
                 }
             } catch (Exception e) {
-                log.error("保存搜索历史失败:用户ID={}, 关键词={}, 错误={}", clientUserId, name, e.getMessage(), e);
+                log.error("保存搜索历史失败:用户ID={}, 关键词={}, 错误={}", clientUserId, nickName, e.getMessage(), e);
                 // 保存历史失败不影响查询结果返回
             }
         }
 
+        // 为每个律师设置关联的法律问题场景列表
+        if (pageResult.getRecords() != null && !pageResult.getRecords().isEmpty()) {
+            setLawyerScenarios(pageResult.getRecords());
+        }
+
         return R.data(pageResult);
     }
 

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

@@ -170,17 +170,17 @@ public class LawyerUserController {
         return lawyerUserService.getRecommendedLawyersBySession(sessionId, messageId);
     }
 
-    @ApiOperation("通过姓名模糊查询律师(并保存搜索历史)")
+    @ApiOperation("通过昵称模糊查询律师(并保存搜索历史)")
     @ApiOperationSupport(order = 11)
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "name", value = "律师姓名(支持模糊查询)", dataType = "String", paramType = "query", required = true),
+            @ApiImplicitParam(name = "name", value = "律师昵称(支持模糊查询,为空时返回所有律师)", dataType = "String", paramType = "query", required = false),
             @ApiImplicitParam(name = "page", value = "页码(默认1)", dataType = "int", paramType = "query"),
             @ApiImplicitParam(name = "pageSize", value = "每页数量(默认10)", dataType = "int", paramType = "query"),
             @ApiImplicitParam(name = "clientUserId", value = "客户端用户ID(可选,用于保存搜索历史)", dataType = "Integer", paramType = "query")
     })
     @GetMapping("/searchByName")
     public R<IPage<LawyerUser>> searchLawyerByName(
-            @RequestParam String name,
+            @RequestParam(required = false) String name,
             @RequestParam(defaultValue = "1") int page,
             @RequestParam(defaultValue = "10") int pageSize,
             @RequestParam(required = false) Integer clientUserId) {

+ 25 - 17
alien-store/src/main/java/shop/alien/store/service/impl/LawyerUserServiceImpl.java

@@ -20,7 +20,6 @@ import shop.alien.store.service.LawyerLegalProblemScenarioService;
 import shop.alien.store.service.LawyerServiceAreaService;
 import shop.alien.store.service.LawyerUserSearchHistoryService;
 import shop.alien.store.service.LawyerUserService;
-import shop.alien.util.myBaticsPlus.QueryBuilder;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -291,25 +290,29 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
     public R<IPage<LawyerUser>> searchLawyerByName(String name, int page, int pageSize, Integer clientUserId) {
         log.info("LawyerUserServiceImpl.searchLawyerByName?name={},page={},pageSize={},clientUserId={}", name, page, pageSize, clientUserId);
 
-        // 参数校验
-        if (name == null || name.trim().isEmpty()) {
-            return R.fail("姓名不能为空");
-        }
-
         int pageNum = page > 0 ? page : 1;
         int pageSizeNum = pageSize > 0 ? pageSize : 10;
 
-        // 通过姓名模糊查询律师(分页)
-        LawyerUser query = new LawyerUser();
-        query.setName(name.trim());
-        IPage<LawyerUser> pageResult = QueryBuilder.of(query)
-                .likeFields("name")  // 姓名支持模糊查询
-                .page(pageNum, pageSizeNum)
-                .build()
-                .page(this);
-
-        // 如果提供了用户ID,保存搜索历史(如果不存在则添加)
-        if (clientUserId != null) {
+        // 构建查询条件
+        QueryWrapper<LawyerUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("delete_flag", 0);
+        
+        // 如果昵称不为空,添加昵称模糊查询条件
+        if (name != null && !name.trim().isEmpty()) {
+            queryWrapper.like("nick_name", name.trim());
+        }
+        
+        // 排序:优先推荐律师 -> 在线律师 -> 注册时间
+        queryWrapper.orderByDesc("is_recommended")
+                .orderByDesc("is_online")
+                .orderByAsc("created_time");
+        
+        // 分页查询
+        Page<LawyerUser> pageObj = new Page<>(pageNum, pageSizeNum);
+        IPage<LawyerUser> pageResult = this.page(pageObj, queryWrapper);
+
+        // 如果提供了用户ID且昵称不为空,保存搜索历史(如果不存在则添加)
+        if (clientUserId != null && name != null && !name.trim().isEmpty()) {
             try {
                 String keyword = name.trim();
                 // 检查是否已存在相同的搜索历史记录
@@ -337,6 +340,11 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
             }
         }
 
+        // 为每个律师设置关联的法律问题场景列表
+        if (pageResult.getRecords() != null && !pageResult.getRecords().isEmpty()) {
+            setLawyerScenarios(pageResult.getRecords());
+        }
+
         return R.data(pageResult);
     }