|
|
@@ -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);
|
|
|
}
|
|
|
|