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