ldz преди 1 месец
родител
ревизия
1a3dedb5e7

+ 13 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LawyerUserVo.java

@@ -300,5 +300,18 @@ public class LawyerUserVo implements Serializable {
 
     @ApiModelProperty(value = "登录Token")
     private String token;
+
+    @ApiModelProperty(value = "一级法律场景")
+    private String firstLevelScenario;
+
+    @ApiModelProperty(value = "律师擅长法律场景")
+    private String scenarioNames;
+
+    @ApiModelProperty(value = "专业领域")
+    private String areaInfo;
+
+
+
+
 }
 

+ 69 - 0
alien-entity/src/main/java/shop/alien/mapper/LawyerUserMapper.java

@@ -2,8 +2,11 @@ package shop.alien.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 import shop.alien.entity.store.LawyerUser;
+import shop.alien.entity.store.vo.LawyerUserVo;
 
 /**
  * <p>
@@ -85,5 +88,71 @@ public interface LawyerUserMapper extends BaseMapper<LawyerUser> {
         "</script>")
 Integer updateLawyerUser(LawyerUser user);
 
+
+//   @Select("<script>" +
+//        "SELECT " +
+//        "user.id, " +
+//        "user.phone, " +
+//        "user.`name`, " +
+//        "user.firm_id, " +
+//        "user.head_img, " +
+//        "user.personal_introduction, " +
+//        "user.order_receiving_status, " +
+//        "user.practice_start_date, " +
+//        "firm.firm_name, " +
+//        "firm.payment_account, " +
+//        "GROUP_CONCAT(area.problem_scenario_id SEPARATOR ',') AS problem_scenario_ids, " +
+//        "GROUP_CONCAT(a.name SEPARATOR ',') AS scenarioNames, " +
+//        "(SELECT GROUP_CONCAT(`name` SEPARATOR ',') FROM lawyer_legal_problem_scenario WHERE level = 1) AS FirstLevelScenario, " +
+//        "b.expertise_area_info " +
+//        "FROM `lawyer_user` user " +
+//        "LEFT JOIN law_firm firm ON firm.id = user.firm_id " +
+//        "LEFT JOIN lawyer_service_area area ON area.lawyer_user_id = user.id " +
+//        "LEFT JOIN lawyer_legal_problem_scenario a ON a.id = area.problem_scenario_id " +
+//        "LEFT JOIN lawyer_expertise_area b ON b.id = user.specialty_fields " +
+//        "WHERE user.id = #{id} " +
+//        "GROUP BY " +
+//        "user.id, user.phone, user.`name`, user.firm_id, user.head_img, " +
+//        "user.personal_introduction, user.order_receiving_status, user.practice_start_date, " +
+//        "firm.firm_name, firm.payment_account, b.expertise_area_info " +
+//        "LIMIT 1 " +
+//        "</script>")
+//LawyerUserVo selectInfo(@Param("lawyerId") Integer lawyerId);
+
+
+   @Select("<script>" +
+           "SELECT " +
+           "user.id, " +
+           "user.phone, " +
+           "user.`name`, " +
+           "user.firm_id, " +
+           "user.head_img, " +
+           "user.personal_introduction, " +
+           "user.order_receiving_status, " +
+           "user.practice_start_date, " +
+           "user.address , " +
+           "firm.firm_name  AS firmName, " +
+           "firm.payment_account AS paymentNum, " +
+           "GROUP_CONCAT(area.problem_scenario_id SEPARATOR ',') AS problem_scenario_ids, " +
+           "GROUP_CONCAT(a.name SEPARATOR ',') AS scenarioNames, " +
+           "(SELECT GROUP_CONCAT(`name` SEPARATOR ',') FROM lawyer_legal_problem_scenario WHERE level = 1) AS firstLevelScenario, " +
+           "b.expertise_area_info AS areaInfo " +
+           "FROM " +
+           "lawyer_user user " +
+           "LEFT JOIN law_firm firm ON firm.id = user.firm_id " +
+           "LEFT JOIN lawyer_service_area area ON area.lawyer_user_id = user.id " +
+           "LEFT JOIN lawyer_legal_problem_scenario a ON a.id = area.problem_scenario_id " +
+           "LEFT JOIN lawyer_expertise_area b ON b.id = user.specialty_fields " +
+           "<where>" +
+           "<if test='lawyerId != null'>user.id = #{lawyerId}</if>" +
+           "</where>" +
+           "GROUP BY " +
+           "user.id, user.phone, user.`name`, user.firm_id, user.head_img, " +
+           "user.personal_introduction, user.order_receiving_status, user.practice_start_date, " +
+           "firm.firm_name, firm.payment_account, b.expertise_area_info " +
+           "LIMIT 1 " +
+           "</script>")
+   LawyerUserVo selectInfo(@Param("lawyerId") Integer lawyerId);
+
 }
 

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

@@ -224,12 +224,15 @@ public class LawyerUserController {
             @ApiImplicitParam(name = "lawyerId", value = "律师ID", dataType = "Integer", paramType = "query", required = true)
     })
     @GetMapping("/getLawyerInfo")
-    public R<LawyerUser> getLawyerInfo(@RequestParam Integer lawyerId) {
+    public R<LawyerUserVo> getLawyerInfo(@RequestParam Integer lawyerId) {
         log.info("LawyerUserController.getLawyerInfo?lawyerId={}", lawyerId);
         return lawyerUserService.getLawyerInfo(lawyerId);
     }
 
-    @ApiOperation("更新律师用户信息")
+
+
+
+    @ApiOperation("编辑新律师用户")
     @ApiOperationSupport(order = 15)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "lawyerId", value = "律师ID", dataType = "Integer", paramType = "query", required = true),

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

@@ -129,7 +129,7 @@ public interface LawyerUserService extends IService<LawyerUser> {
      * @param lawyerId 律师ID
      * @return R<LawyerUser> 律师信息
      */
-    R<LawyerUser> getLawyerInfo(Integer lawyerId);
+    R<LawyerUserVo> getLawyerInfo(Integer lawyerId);
 
     /**
      * 更新律师用户信息

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

@@ -15,6 +15,7 @@ import org.springframework.util.StringUtils;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.vo.LawyerUserVo;
+import shop.alien.lawyer.config.BaseRedisService;
 import shop.alien.lawyer.service.LawyerLegalProblemScenarioService;
 import shop.alien.lawyer.service.LawyerServiceAreaService;
 import shop.alien.lawyer.service.LawyerUserSearchHistoryService;
@@ -44,6 +45,7 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
     private final LawyerLegalProblemScenarioService lawyerLegalProblemScenarioService;
     private final LawyerConsultationOrderMapper lawyerConsultationOrderMapper;
     private final LawFirmMapper lawFirmMapper;
+    private final BaseRedisService baseRedisService;
 
     @Override
     public R<IPage<LawyerUser>> getLawyerUserList(int pageNum, int pageSize, String name, String phone, Integer status) {
@@ -356,14 +358,13 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
     /**
      * 获取AI推荐律师列表
      *
-     * @param page       页码
-     * @param size       页大小
-     * @param categoryId 分类ID
-     * @return R<IPage<LawyerUser>> 推荐律师列表
+     * @param page 页码
+     *             pageSize 页大小
+     *             categoryId 分类ID
      */
     @Override
     public R<IPage<LawyerUser>> getAiRecommendList(int page, int size, Integer categoryId) {
-        log.info("LawyerUserServiceImpl.getAiRecommendList?page={},size={},categoryId={}",
+        log.info("LawyerUserController.aiRecommendList?page={},size={},categoryId={}",
                 page, size, categoryId);
 
         // 构建查询条件
@@ -432,6 +433,12 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
             return R.fail("律师不存在");
         }
 
+        String key = "lawyer_" + lawyerUser.getPhone();
+        String redisVerificationCode = baseRedisService.getString(key);
+        //对redisVerificationCode进行校验,如果不是空的话清除redis中的记录
+        if (redisVerificationCode != null) {
+            baseRedisService.delete(key);
+        }
         // 检查是否已经注销
         if (lawyerUser.getLogoutFlag() != null && lawyerUser.getLogoutFlag() == 1) {
             log.warn("注销律师用户失败:律师已注销,律师ID={}, 律师姓名={}", id, lawyerUser.getName());
@@ -444,20 +451,20 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
             return R.fail("该律师账号已删除");
         }
 
-        List<LawyerConsultationOrder> orderList = lawyerConsultationOrderMapper.selectOrder(null, id);
+        List<LawyerConsultationOrder> list=lawyerConsultationOrderMapper.selectOrder(null, id);
+
 
-        if (!CollectionUtils.isEmpty(orderList)) {
+        if (!CollectionUtils.isEmpty( list)){
             // 提示前端有未完成订单 1:有未完成订单  0:无未完成订单
             resultMap.put("unfinishedOrder", 1);
         }
 
-        if (lawyerUser.getOrderReceivingStatus() != null && lawyerUser.getOrderReceivingStatus() == 1) {
+        if (lawyerUser.getOrderReceivingStatus() != null && lawyerUser.getOrderReceivingStatus() == 1){
             // 提示前端接单状态为接单中 1:接单中  0:未接单
             resultMap.put("orderReceivingStatus", 1);
         }
 
-        // 只有无未完成订单且状态为禁用时,才执行注销操作
-        if (CollectionUtils.isEmpty(orderList) && lawyerUser.getStatus() == 0) {
+        if (CollectionUtils.isEmpty( list) || lawyerUser.getStatus() == 0){
             // 设置注销相关字段
             lawyerUser.setLogoutFlag(1); // 注销标记:1-已注销
             lawyerUser.setLogoutTime(new Date()); // 注销时间
@@ -491,7 +498,7 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
     }
 
     @Override
-    public R<LawyerUser> getLawyerInfo(Integer lawyerId) {
+    public R<LawyerUserVo> getLawyerInfo(Integer lawyerId) {
         log.info("LawyerUserServiceImpl.getLawyerInfo?lawyerId={}", lawyerId);
 
         // 参数校验
@@ -513,34 +520,29 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
             return R.fail("律师信息已删除");
         }
 
-        LawFirm lawFirm = lawFirmMapper.selectById(lawyer.getFirmId());
-        if (lawFirm != null) {
-            // 如果需要在返回对象中设置律所信息,可以在这里处理
-            // 目前直接返回 LawyerUser 对象
-        }
-
-        return R.data(lawyer);
+        LawyerUserVo result=lawyerUserMapper.selectInfo(lawyerId);
+        return R.data(result);
     }
 
     @Override
     public R<LawyerUser> updateLawyerUser(LawyerUserVo lawyerUserVo) {
         log.info("LawyerUserServiceImpl.updateLawyerUser?lawyerUserVo={}", lawyerUserVo);
-        
+
         // 参数校验
         if (lawyerUserVo == null || lawyerUserVo.getId() == null) {
             log.warn("更新律师用户信息失败:参数为空或律师ID为空");
             return R.fail("律师ID不能为空");
         }
-        
+
         LawyerUser lawyerUser = new LawyerUser();
         BeanUtils.copyProperties(lawyerUserVo, lawyerUser);
-        
+
         Integer result = lawyerUserMapper.updateLawyerUser(lawyerUser);
         if (result <= 0) {
             log.warn("更新律师用户信息失败:更新数据库失败,律师ID={}", lawyerUserVo.getId());
             return R.fail("修改律师信息失败");
         }
-        
+
         // 查询更新后的律师信息
         LawyerUser updatedLawyer = this.getById(lawyerUserVo.getId());
         log.info("更新律师用户信息成功,律师ID={}", lawyerUserVo.getId());

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

@@ -139,13 +139,9 @@ public class LawyerAiInteractionLogController {
             @ApiImplicitParam(name = "sceneId", value = "场景ID", dataType = "Integer", paramType = "query")
     })
     @PostMapping("/saveChatLog")
-    public R<Map<String, Object>> saveChatLog(
-            @RequestParam String queryText,
-            @RequestParam String responseText,
-            @RequestParam Integer clientUserId,
-            @RequestParam Integer sceneId) {
-        log.info("LawyerAiInteractionLogController.sendAIMessage?queryText={},responseText={},clientUserId={},sceneId{}", queryText, responseText, clientUserId, sceneId);
-        return aiInteractionLogService.saveChatLog(queryText, responseText, clientUserId, sceneId);
+    public R<Map<String, Object>> saveChatLog(@RequestBody LawyerAiInteractionLog aiInteractionLog) {
+        log.info("LawyerAiInteractionLogController.saveChatLog?aiInteractionLog={}", aiInteractionLog);
+        return aiInteractionLogService.saveChatLog(aiInteractionLog);
     }
 
     @ApiOperation("删除聊天记录")

+ 1 - 1
alien-store/src/main/java/shop/alien/store/service/LawyerAiInteractionLogService.java

@@ -79,7 +79,7 @@ public interface LawyerAiInteractionLogService extends IService<LawyerAiInteract
      * @param clientUserId 客户端用户ID
      * @return R<Map<String, Object>>
      */
-    R<Map<String, Object>> saveChatLog(String queryText, String responseText, Integer clientUserId , Integer sceneId);
+    R<Map<String, Object>> saveChatLog(LawyerAiInteractionLog aiInteractionLog);
 
     R<Map<String, Object>> updatedLog(Integer id);
 

+ 6 - 6
alien-store/src/main/java/shop/alien/store/service/impl/LawyerAiInteractionLogServiceImpl.java

@@ -125,8 +125,8 @@ public class LawyerAiInteractionLogServiceImpl extends ServiceImpl<LawyerAiInter
     }
 
     @Override
-    public R<Map<String, Object>> saveChatLog(String queryText, String responseText, Integer clientUserId ,Integer sceneId) {
-        log.info("LawyerAiInteractionLogServiceImpl.sendAIMessage?message={},responseText={},clientUserId={}", queryText, responseText, clientUserId);
+    public R<Map<String, Object>> saveChatLog(LawyerAiInteractionLog aiInteractionLog) {
+        log.info("LawyerAiInteractionLogController.saveChatLog?aiInteractionLog={}", aiInteractionLog);
         Map<String, Object> result = new HashMap<>();
 //        LawyerAiInteractionLogVo log = new LawyerAiInteractionLogVo();
 //        log.setClientUserId(clientUserId);
@@ -138,12 +138,12 @@ public class LawyerAiInteractionLogServiceImpl extends ServiceImpl<LawyerAiInter
 //        log.setUpdatedTime(new Date());
 //        int num =aiInteractionLogMapper.insertLog(log);
         LawyerAiInteractionLog log = new LawyerAiInteractionLog();
-        log.setClientUserId(clientUserId);
-        log.setQueryText(queryText);
-        log.setResponseText(responseText);
+        log.setClientUserId(aiInteractionLog.getClientUserId());
+        log.setQueryText(aiInteractionLog.getQueryText());
+        log.setResponseText(aiInteractionLog.getResponseText());
         log.setInteractionTime(new Date());
         log.setDeleteFlag(0);
-        log.setSceneId(sceneId);
+        log.setSceneId(aiInteractionLog.getSceneId());
         log.setCreatedTime(new Date());
         log.setUpdatedTime(new Date());
         //向表中插入一条新的数据,插入成功后获取插入该条数据的id