Przeglądaj źródła

用户律师需求开发

ldz 1 miesiąc temu
rodzic
commit
0614335f8a

+ 2 - 2
alien-entity/src/main/java/shop/alien/mapper/LawyerAiInteractionLogMapper.java

@@ -58,7 +58,7 @@ public interface LawyerAiInteractionLogMapper extends BaseMapper<LawyerAiInterac
             "<if test='conversationId != null'>conversation_id = #{conversationId},</if>" +
             "<if test='queryText != null'>query_text = #{queryText},</if>" +
             "<if test='responseText != null'>response_text = #{responseText},</if>" +
-            "<if test='problemScenarId != null'>problem_scenar_id = #{problemScenarId},</if>" +
+            "<if test='problemScenarioId != null'>problem_scenario_id = #{problemScenarioId},</if>" +
             "<if test='interactionTime != null'>interaction_time = #{interactionTime},</if>" +
             "<if test='deleteFlag != null'>delete_flag = #{deleteFlag},</if>" +
             "<if test='createdTime != null'>created_time = #{createdTime},</if>" +
@@ -89,7 +89,7 @@ public interface LawyerAiInteractionLogMapper extends BaseMapper<LawyerAiInterac
             "WHERE " +
             "client_user_id = #{clientUserId} " +
             "ORDER BY created_time DESC " +
-            "LIMIT #{size} , #{page}" +
+            "LIMIT #{page} , #{size}" +
             "</script>")
     List<LawyerAiInteractionLog> getLogList(
             @Param("clientUserId") Integer clientUserId,

+ 6 - 2
alien-entity/src/main/java/shop/alien/mapper/LawyerConsultationOrderMapper.java

@@ -87,7 +87,9 @@ public interface LawyerConsultationOrderMapper extends BaseMapper<LawyerConsulta
             " `created_time`," +
             " `created_user_id`," +
             " `updated_time`," +
-            " `updated_user_id`) " +
+            " `updated_user_id`, " +
+            "`alipay_no`," +
+            "`order_str`)"+
             "VALUES" +
             " (" +
             " #{id}, " +
@@ -111,7 +113,9 @@ public interface LawyerConsultationOrderMapper extends BaseMapper<LawyerConsulta
             " #{createdTime}," +
             " #{createdUserId}," +
             " #{updatedTime}," +
-            " #{updatedUserId})")
+            " #{updatedUserId}," +
+            " #{alipayNo}," +
+            " #{orderStr})")
             int insertOrder(LawyerConsultationOrderDto order);
 
 

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

@@ -171,13 +171,14 @@ public class LawyerAiInteractionLogController {
 //            @ApiImplicitParam(name = "createdTime_End", value = "创建时间结束(范围查询)", dataType = "String", paramType = "query")
     })
     @GetMapping("/getLogList")
-    public IPage<LawyerAiInteractionLog> getLogList(
-                                                    @RequestParam(defaultValue = "1") int page,
-                                                    @RequestParam(defaultValue = "10") int size,
-                                                    @RequestParam Integer clientUserId) {
-        log.info("LawyerAiInteractionLogController.getLogList?,page={},size={},clientUserId{}",  page, size, clientUserId);
-
-        return aiInteractionLogService.getLogList( page, size, clientUserId);
+    public R<IPage<LawyerAiInteractionLog>> getLogList(
+                                                    @RequestParam Integer clientUserId,
+                                                    @RequestParam(defaultValue = "0") int page,
+                                                    @RequestParam(defaultValue = "10") int size
+                                                    ) {
+        log.info("LawyerAiInteractionLogController.getLogList?,page={},size={},clientUserId{}", clientUserId, page, size);
+
+        return aiInteractionLogService.getLogList( clientUserId,page, size);
     }
 
 

+ 9 - 8
alien-store/src/main/java/shop/alien/store/controller/LawyerConsultationOrderController.java

@@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.LawyerConsultationOrder;
 import shop.alien.entity.store.dto.LawyerConsultationOrderDto;
+import shop.alien.entity.store.dto.PayStatusRequest;
 import shop.alien.entity.store.vo.LawyerConsultationOrderVO;
 import shop.alien.store.service.LawyerConsultationOrderService;
 import shop.alien.store.service.OrderExpirationService;
@@ -235,18 +236,18 @@ public class LawyerConsultationOrderController {
     @ApiOperationSupport(order = 10)
     @ApiImplicitParams({
             @ApiImplicitParam(name = "orderNumber", value = "订单编号", dataType = "String", paramType = "query", required = true),
-            @ApiImplicitParam(name = "paymentStatus", value = "支付状态, 0:未支付, 1:已支付", dataType = "Integer", paramType = "query", required = true),
-            @ApiImplicitParam(name = "orderStatus", value = "订单状态, 0:待支付, 1:已支付, 2:进行中, 3:已完成, 4:已取消", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "orderStatus", value = "订单状态, 0:待支付, 1:已支付, 2:进行中, 3:已完成, 4:已取消", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "paymentStatus", value = "支付状态, 0:未支付, 1:已支付", dataType = "Integer", paramType = "query", required = true)
     })
     @PostMapping("/payStatus")
-    public R<LawyerConsultationOrderDto> payStatus(String orderNumber , Integer paymentStatus, Integer orderStatus) {
-        log.info("LawyerConsultationOrderController.consultNow?id{},paymentStatus{},orderStatus{}",
-                orderNumber, paymentStatus, orderStatus);
+    public R<LawyerConsultationOrderDto> payStatus(@RequestBody PayStatusRequest request) {
+        log.info("LawyerConsultationOrderController.payStatus?orderNumber={},paymentStatus={},orderStatus={}",
+                request.getOrderNumber(), request.getPaymentStatus(), request.getOrderStatus());
         //如果订单已支付,关闭redis中的记时
-        if (paymentStatus == 1){
-            orderExpirationService.cancelOrderPaymentTimeout(orderNumber);
+        if (request.getPaymentStatus() != null && request.getPaymentStatus() == 1){
+            orderExpirationService.cancelOrderPaymentTimeout(request.getOrderNumber());
         }
-        return consultationOrderService.payStatus(orderNumber, paymentStatus, orderStatus);
+        return consultationOrderService.payStatus(request);
     }
 
     @ApiOperation("查询根据用户id查询订单")

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

@@ -188,5 +188,23 @@ public class LawyerUserController {
         return lawyerUserService.searchLawyerByName(name, page, pageSize, clientUserId);
     }
 
+
+    @ApiOperation("根据AI返回场景获取推荐律师列表")
+    @ApiOperationSupport(order = 11)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "页码(默认1)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "pageSize", value = "每页数量(默认5)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "categoryId", value = "场景ID(必传)", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/aiRecommendList")
+    public R<IPage<LawyerUser>> getAiRecommendList(
+            @RequestParam(defaultValue = "1") int page,
+            @RequestParam(defaultValue = "5") int size,
+            @RequestParam(required = true) Integer categoryId) {
+        log.info("LawyerUserController.aiRecommendList?page={},pageSize={},categoryId={}",
+                page, size, categoryId);
+        return lawyerUserService.getAiRecommendList(page, size, categoryId);
+    }
+
 }
 

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

@@ -83,6 +83,6 @@ public interface LawyerAiInteractionLogService extends IService<LawyerAiInteract
 
     R<Map<String, Object>> updatedLog(Integer id);
 
-    IPage<LawyerAiInteractionLog> getLogList(Integer page, Integer size , Integer clientUserId);
+    R<IPage<LawyerAiInteractionLog>> getLogList(Integer clientUserId,Integer page, Integer size );
 }
 

+ 13 - 6
alien-store/src/main/java/shop/alien/store/service/LawyerConsultationOrderService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.LawyerConsultationOrder;
 import shop.alien.entity.store.dto.LawyerConsultationOrderDto;
+import shop.alien.entity.store.dto.PayStatusRequest;
 import shop.alien.entity.store.vo.LawyerConsultationOrderVO;
 
 import java.math.BigDecimal;
@@ -60,11 +61,11 @@ public interface LawyerConsultationOrderService extends IService<LawyerConsultat
     /**
      * 开始咨询律师
      *
-     * @param lawyerId        律师ID
-     * @param question        咨询问题(可选)
-     * @param sessionId       关联的AI会话ID(可选)
-     * @param clientUserId    客户端用户ID(可选)
-     * @param problemScenarioId 法律问题场景ID(可选)
+     * @param lawyerConsultationOrder        律师ID
+     * @param lawyerConsultationOrder        咨询问题(可选)
+     * @param lawyerConsultationOrder       关联的AI会话ID(可选)
+     * @param lawyerConsultationOrder    客户端用户ID(可选)
+     * @param lawyerConsultationOrder 法律问题场景ID(可选)
      * @return R<Map<String, Object>>
      */
     //R<Map<String, Object>> startConsultation(Integer lawyerId, String question, String sessionId, Integer clientUserId, Integer problemScenarioId);
@@ -72,7 +73,13 @@ public interface LawyerConsultationOrderService extends IService<LawyerConsultat
 
     R<LawyerConsultationOrderDto> consultNow(LawyerConsultationOrder lawyerConsultationOrder);
 
-    R<LawyerConsultationOrderDto> payStatus(String orderNumber,Integer paymentStatus,Integer orderStatus);
+    /**
+     * 支付订单
+     *
+     * @param  request 请求对象
+     * @return R<Map<String, Object>>
+     */
+    R<LawyerConsultationOrderDto> payStatus(PayStatusRequest request);
 
 
     /**

+ 10 - 0
alien-store/src/main/java/shop/alien/store/service/LawyerUserService.java

@@ -97,5 +97,15 @@ public interface LawyerUserService extends IService<LawyerUser> {
      * @return R<IPage<LawyerUser>>
      */
     R<IPage<LawyerUser>> searchLawyerByName(String name, int page, int pageSize, Integer clientUserId);
+
+    /**
+     * 获取推荐律师列表
+     *
+     * @param page       页码
+     * @param size   每页数量
+     * @param categoryId 分类ID(可选)
+     * @return R<IPage<LawyerUser>>
+     */
+    R<IPage<LawyerUser>> getAiRecommendList(int page, int size, Integer categoryId);
 }
 

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

@@ -174,12 +174,14 @@ public class LawyerAiInteractionLogServiceImpl extends ServiceImpl<LawyerAiInter
     }
 
     @Override
-    public IPage<LawyerAiInteractionLog> getLogList(Integer page, Integer size , Integer clientUserId) {
+    public R<IPage<LawyerAiInteractionLog>> getLogList(Integer page, Integer size , Integer clientUserId) {
         List<LawyerAiInteractionLog> list = aiInteractionLogMapper.getLogList(page,size,clientUserId);
         IPage<LawyerAiInteractionLog> pageResult = new Page<>(page, size);
         pageResult.setRecords(list);
         pageResult.setTotal(list.size());
-        return pageResult;
+        return R.data(pageResult);
     }
+
+
 }
 

+ 10 - 12
alien-store/src/main/java/shop/alien/store/service/impl/LawyerConsultationOrderServiceImpl.java

@@ -18,7 +18,9 @@ import shop.alien.entity.result.R;
 import shop.alien.entity.store.LawyerConsultationOrder;
 import shop.alien.entity.store.LawyerServiceArea;
 import shop.alien.entity.store.LawyerUser;
+import shop.alien.entity.store.StoreAliPayLog;
 import shop.alien.entity.store.dto.LawyerConsultationOrderDto;
+import shop.alien.entity.store.dto.PayStatusRequest;
 import shop.alien.entity.store.vo.LawyerConsultationOrderVO;
 import shop.alien.mapper.LawyerConsultationOrderMapper;
 import shop.alien.mapper.LawyerExpertiseAreaMapper;
@@ -27,6 +29,7 @@ import shop.alien.mapper.LawyerUserMapper;
 import shop.alien.store.service.LawyerConsultationOrderService;
 import shop.alien.store.service.LawyerUserService;
 import shop.alien.store.service.OrderExpirationService;
+import shop.alien.store.util.ali.AliApi;
 import shop.alien.util.common.constant.LawyerStatusEnum;
 
 import java.math.BigDecimal;
@@ -54,6 +57,7 @@ public class LawyerConsultationOrderServiceImpl extends ServiceImpl<LawyerConsul
     private final LawyerUserMapper lawyerUserMapper;
     private final LawyerExpertiseAreaMapper lawyerExpertiseAreaMapper;
     private final OrderExpirationService orderExpirationService;
+    private final AliApi aliApi;
 
     @Override
     public R<IPage<LawyerConsultationOrderVO>> getConsultationOrderList(int pageNum, int pageSize, String orderNumber,
@@ -427,20 +431,14 @@ public class LawyerConsultationOrderServiceImpl extends ServiceImpl<LawyerConsul
 
 
     @Override
-    public R<LawyerConsultationOrderDto> payStatus(String orderNumber, Integer paymentStatus, Integer orderStatus) {
-        log.info("LawyerConsultationOrderServiceImpl.payStatus?id={},paymentStatus={},orderStatus={}",
-                orderNumber, paymentStatus, orderStatus);
-
-        //支付宝单笔转账接口
-
-              
-
-
+    public R<LawyerConsultationOrderDto> payStatus(PayStatusRequest request) {
+        log.info("LawyerConsultationOrderServiceImpl.payStatus?orderNumber={},paymentStatus={},orderStatus={}",
+                request.getOrderNumber(), request.getPaymentStatus(), request.getOrderStatus());
 
         LawyerConsultationOrderDto order = new LawyerConsultationOrderDto();
-        order.setOrderNumber(orderNumber);
-        order.setPaymentStatus(paymentStatus);
-        order.setOrderStatus(orderStatus);
+        order.setOrderNumber(request.getOrderNumber());
+        order.setPaymentStatus(request.getPaymentStatus());
+        order.setOrderStatus(request.getOrderStatus());
         order.setUpdatedTime(new Date());
         order.setDeleteFlag(0);
         order.setPaymentTime(new Date());

+ 45 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LawyerUserServiceImpl.java

@@ -339,5 +339,50 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
 
         return R.data(pageResult);
     }
+
+    /**
+     * 获取AI推荐律师列表
+     * @param page 页码
+     * pageSize 页大小
+     * categoryId 分类ID
+     */
+    @Override
+    public R<IPage<LawyerUser>> getAiRecommendList(int page, int size, Integer categoryId) {
+        log.info("LawyerUserController.aiRecommendList?page={},size={},categoryId={}",
+                page, size, categoryId);
+
+
+        // 构建查询条件
+        QueryWrapper<LawyerUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("delete_flag", 0)
+                .eq("status", 1)
+                .eq("order_receiving_status", 1);
+
+        // 分类筛选:通过律师服务领域关联表查询
+        if (categoryId != null) {
+            List<Integer> lawyerIds = getLawyerIdsByCategoryId(categoryId);
+            if (lawyerIds.isEmpty()) {
+                // 如果没有匹配的律师,返回空结果
+                return R.data(new Page<>(page, size));
+            }
+            queryWrapper.in("id", lawyerIds);
+        }
+
+        // 排序:优先推荐律师 -> 在线律师 -> 注册时间
+        queryWrapper.orderByDesc("is_recommended")
+                .orderByDesc("is_online")
+                .orderByAsc("created_time");
+
+        // 分页查询
+        Page<LawyerUser> pageObj = new Page<>(page, size);
+        IPage<LawyerUser> pageResult = this.page(pageObj, queryWrapper);
+
+        // 为每个律师设置关联的法律问题场景列表
+        if (pageResult.getRecords() != null && !pageResult.getRecords().isEmpty()) {
+            setLawyerScenarios(pageResult.getRecords());
+        }
+
+        return R.data(pageResult);
+    }
 }