Jelajahi Sumber

feat:ai聊天历史记录

刘云鑫 2 bulan lalu
induk
melakukan
aa52a55678

+ 76 - 0
alien-store/src/main/java/shop/alien/store/controller/UdianQaController.java

@@ -0,0 +1,76 @@
+package shop.alien.store.controller;
+
+import com.alibaba.fastjson2.JSONObject;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+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;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+import shop.alien.entity.result.R;
+import shop.alien.store.util.ai.AiAuthTokenUtil;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 优店 QA(智能客服)相关代理接口,路径与第三方 AI 服务对齐。
+ */
+@Slf4j
+@Api(tags = {"优店QA"})
+@CrossOrigin
+@RestController
+@RequestMapping("/udian_qa")
+@RequiredArgsConstructor
+@RefreshScope
+public class UdianQaController {
+
+    private final RestTemplate restTemplate;
+    private final AiAuthTokenUtil aiAuthTokenUtil;
+
+    @Value("${ai.service.udian-qa-chat-history-url:http://124.93.18.180:9000/ai/smart-customer/api/v1/udian_qa/chat-history}")
+    private String udianQaChatHistoryUrl;
+
+    @ApiOperation("根据会话ID查询聊天历史(对外 GET,对内 POST 转发上游)")
+    @GetMapping("/chat-history")
+    public R chatHistory(@RequestParam(value = "session_id", required = false) String sessionId) {
+        if (StringUtils.isBlank(sessionId)) {
+            return R.fail("session_id不能为空");
+        }
+
+        Map<String, Object> requestBody = new HashMap<>(2);
+        requestBody.put("session_id", sessionId);
+
+        HttpHeaders aiHeaders = new HttpHeaders();
+        String accessToken = aiAuthTokenUtil.getAccessToken();
+        aiHeaders.setContentType(MediaType.APPLICATION_JSON);
+        aiHeaders.set("Authorization", "Bearer " + accessToken);
+
+        HttpEntity<Map<String, Object>> request = new HttpEntity<>(requestBody, aiHeaders);
+        try {
+            log.info("调用优店QA聊天历史接口 入参------{}", requestBody);
+            ResponseEntity<String> response = restTemplate.postForEntity(udianQaChatHistoryUrl, request, String.class);
+            String respBody = response.getBody();
+            log.info("调用优店QA聊天历史接口 返回------{}", respBody);
+            if (StringUtils.isBlank(respBody)) {
+                return R.fail("上游返回为空");
+            }
+            JSONObject json = JSONObject.parseObject(respBody);
+            return R.data(json);
+        } catch (Exception e) {
+            log.error("调用优店QA聊天历史接口 异常------", e);
+            return R.fail("请求失败");
+        }
+    }
+}