Forráskód Böngészése

bugfix:律师,ai申诉,修改为异步

lyx 14 órája
szülő
commit
d8f7f68158

+ 27 - 12
alien-lawyer/src/main/java/shop/alien/lawyer/controller/AiAutoReview.java

@@ -4,7 +4,6 @@ import com.alibaba.fastjson2.JSONObject;
 import io.swagger.annotations.Api;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -36,21 +35,31 @@ public class AiAutoReview {
 
     private final AiUserAuditTaskService aiUserAuditTaskService;
 
-    @Value("${third-party-ai-auto-review.lawyer-complaint-url:http://192.168.2.250:9100/ai/auto-review/api/v1/lawyer_complaint_audit_task/submit}")
-    private String aiAutoReviewUrl;
-
     /**
      * 调用 AI 服务,获取申诉结果
      *
      * @return 申诉结果
      */
     @RequestMapping("/aiReview")
-    public ResponseEntity<String> aiChat(@RequestBody Map<String, Object> requestBody){
+    public ResponseEntity<String> aiReview(@RequestBody Map<String, Object> requestBody){
+        // 参数校验
+        if (requestBody == null || requestBody.isEmpty()) {
+            log.warn("用户申诉任务请求参数为空");
+            JSONObject errorData = new JSONObject();
+            errorData.put("code", 400);
+            errorData.put("message", "请求参数不能为空");
+            return ResponseEntity.badRequest().body(errorData.toJSONString());
+        }
+
+
+        // 同步获取访问令牌(不在异步中执行)
         String accessToken = aiAuthTokenUtil.getAccessToken();
-        JSONObject data = new JSONObject();
         if (!StringUtils.hasText(accessToken)) {
-            data.put("fail","登录失败");
-            return ResponseEntity.badRequest().body(data.toJSONString());
+            log.error("调用AI申诉接口失败,获取accessToken失败");
+            JSONObject errorData = new JSONObject();
+            errorData.put("code", 500);
+            errorData.put("message", "获取访问令牌失败");
+            return ResponseEntity.status(500).body(errorData.toJSONString());
         }
 
         // 初始化请求体Map
@@ -60,12 +69,18 @@ public class AiAutoReview {
 
         HttpEntity<Map<String, Object>> request = new HttpEntity<>(requestBody, aiHeaders);
         try {
-            ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(aiAutoReviewUrl, request, String.class);
-            return stringResponseEntity;
+            aiUserAuditTaskService.asyncAiReview(requestBody, accessToken);
+            log.info("用户申诉任务已提交异步处理,请求参数:{}", requestBody);
         } catch (Exception e) {
-            log.error("调用AI文本审核接口 接口异常------", e);
+            log.error("调用AI申诉接口 接口异常------", e);
         }
-        return  ResponseEntity.badRequest().body(null);
+        // 立即返回成功响应
+        JSONObject responseData = new JSONObject();
+        responseData.put("code", 200);
+        responseData.put("message", "用户申诉任务已提交,正在后台处理");
+        responseData.put("data", new JSONObject());
+
+        return ResponseEntity.ok(responseData.toJSONString());
     }
 
     /**

+ 3 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/AiUserAuditTaskService.java

@@ -17,5 +17,8 @@ public interface AiUserAuditTaskService {
      * @param accessToken 访问令牌(已同步获取)
      */
     void asyncCallUserAuditTask(Map<String, Object> requestBody, String accessToken);
+
+
+    void asyncAiReview(Map<String, Object> requestBody, String accessToken);
 }
 

+ 37 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/AiUserAuditTaskServiceImpl.java

@@ -3,6 +3,7 @@ package shop.alien.lawyer.service.impl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
@@ -25,6 +26,7 @@ import java.util.Map;
 @Slf4j
 @Service
 @RequiredArgsConstructor
+@RefreshScope
 public class AiUserAuditTaskServiceImpl implements AiUserAuditTaskService {
 
     private final RestTemplate restTemplate;
@@ -32,6 +34,9 @@ public class AiUserAuditTaskServiceImpl implements AiUserAuditTaskService {
     @Value("${third-party-ai-auto-review.user-complaint-url:http://192.168.2.250:9100/ai/auto-review/api/v1/lawyer_user_complaint_audit_task/submit}")
     private String aiUserAuditTaskUrl;
 
+    @Value("${third-party-ai-auto-review.lawyer-complaint-url:http://192.168.2.250:9100/ai/auto-review/api/v1/lawyer_complaint_audit_task/submit}")
+    private String aiAutoReviewUrl;
+
     @Override
     @Async("lawyerTaskExecutor")
     public void asyncCallUserAuditTask(Map<String, Object> requestBody, String accessToken) {
@@ -64,5 +69,37 @@ public class AiUserAuditTaskServiceImpl implements AiUserAuditTaskService {
             log.error("异步调用AI用户申诉接口异常,URL:{},异常信息:{}", aiUserAuditTaskUrl, e.getMessage(), e);
         }
     }
+
+    @Override
+    public void asyncAiReview(Map<String, Object> requestBody, String accessToken) {
+        log.info("开始异步调用AI申诉接口,请求URL:{},请求参数:{}", aiUserAuditTaskUrl, requestBody);
+
+        try {
+            // 初始化请求头(使用已获取的访问令牌)
+            HttpHeaders aiHeaders = new HttpHeaders();
+            aiHeaders.setContentType(MediaType.APPLICATION_JSON);
+            aiHeaders.set("Authorization", "Bearer " + accessToken);
+
+            HttpEntity<Map<String, Object>> request = new HttpEntity<>(requestBody, aiHeaders);
+
+            log.info("异步调用AI用户申诉接口,URL:{},请求头:{}", aiUserAuditTaskUrl, aiHeaders);
+
+            // 调用AI服务
+            ResponseEntity<String> responseEntity = restTemplate.postForEntity(
+                    aiAutoReviewUrl, request, String.class);
+
+            log.info("异步调用AI用户申诉接口成功,响应状态:{},响应体:{}",
+                    responseEntity.getStatusCode(), responseEntity.getBody());
+
+        } catch (HttpServerErrorException e) {
+            log.error("异步调用AI申诉接口返回服务器错误,状态码:{},响应体:{},URL:{}",
+                    e.getStatusCode(), e.getResponseBodyAsString(), aiAutoReviewUrl, e);
+        } catch (HttpClientErrorException e) {
+            log.error("异步调用AI用户申诉接口返回客户端错误,状态码:{},响应体:{},URL:{}",
+                    e.getStatusCode(), e.getResponseBodyAsString(), aiAutoReviewUrl, e);
+        } catch (Exception e) {
+            log.error("异步调用AI申诉接口异常,URL:{},异常信息:{}", aiAutoReviewUrl, e.getMessage(), e);
+        }
+    }
 }