Browse Source

新增技淘百问处理

anderx 2 years ago
parent
commit
eaa9f6fd51

+ 7 - 7
src/main/java/com/goafanti/baiduAI/bo/SseResult.java

@@ -1,12 +1,13 @@
 package com.goafanti.baiduAI.bo;
 
+import com.goafanti.common.bo.SseEmitterUTF8;
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 
 public class SseResult {
 
         public String clientId;
         public long timestamp;
-        public SseEmitter sseEmitter;
+        public SseEmitterUTF8 sseEmitter;
 
     public String getClientId() {
         return clientId;
@@ -28,15 +29,14 @@ public class SseResult {
         return sseEmitter;
     }
 
-    public void setSseEmitter(SseEmitter sseEmitter) {
+    public SseResult(String clientId, long timestamp, SseEmitterUTF8 sseEmitter) {
+        this.clientId = clientId;
+        this.timestamp = timestamp;
         this.sseEmitter = sseEmitter;
     }
 
-    public SseResult(String clientId, long timestamp, SseEmitter sseEmitter) {
-            this.clientId = clientId;
-            this.timestamp = timestamp;
-            this.sseEmitter = sseEmitter;
-        }
+    public SseResult() {
     }
+}
 
 

+ 11 - 7
src/main/java/com/goafanti/baiduAI/controller/BaiduAiController.java

@@ -6,9 +6,11 @@ import com.goafanti.baiduAI.bo.SseMap;
 import com.goafanti.baiduAI.bo.SseResult;
 import com.goafanti.baiduAI.service.BaiduAiService;
 import com.goafanti.common.bo.Result;
+import com.goafanti.common.bo.SseEmitterUTF8;
 import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.controller.BaseController;
 import com.goafanti.common.controller.CertifyApiController;
+import com.goafanti.common.error.BusinessException;
 import com.goafanti.common.model.AftUser;
 import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.common.utils.StringUtils;
@@ -31,15 +33,17 @@ public class BaiduAiController {
     private BaiduAiService baiduAiService;
 
     @RequestMapping(value = "/send")
-    public SseEmitter sendChat( InputSendChat in){
+    public SseEmitter sendChat(@RequestBody InputSendChat in){
         if (in.getUserId()==null ){
-//            in.setUserId(UUID.randomUUID().toString());
-            in.setUserId("111");
+            in.setUserId(UUID.randomUUID().toString());
             in.setStream(true);
         }
-        List<Messages> messages =new ArrayList<>();
-        messages.add(new Messages("user","实用新型专利主要应用哪些领域?"));
-        in.setMessages(messages);
+//        List<Messages> messages =new ArrayList<>();
+//        messages.add(new Messages("user","实用新型专利主要应用哪些领域?"));
+//        in.setMessages(messages);
+        if (in.getMessages()==null||in.getMessages().isEmpty()){
+            throw new BusinessException("消息内容不能为空");
+        }
         return baiduAiService.sendChat(in);
     }
 
@@ -48,7 +52,7 @@ public class BaiduAiController {
     @RequestMapping("/start")
     public SseEmitter testSseEmitter(String clientId) {
         // 默认30秒超时,设置为0L则永不超时
-        SseEmitter sseEmitter = new SseEmitter(3600_000L);
+        SseEmitterUTF8 sseEmitter = new SseEmitterUTF8(3600_000L);
 //        if (clientId==null)clientId=UUID.randomUUID().toString();
         SseMap.sseEmitterMap.put(clientId, new SseResult(clientId, System.currentTimeMillis(), sseEmitter));
         return sseEmitter;

+ 2 - 2
src/main/java/com/goafanti/baiduAI/service/BaiduAiService.java

@@ -1,12 +1,12 @@
 package com.goafanti.baiduAI.service;
 
 import com.goafanti.baiduAI.bo.InputSendChat;
-import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+import com.goafanti.common.bo.SseEmitterUTF8;
 
 public interface BaiduAiService {
 
 
-    SseEmitter sendChat(InputSendChat in);
+    SseEmitterUTF8 sendChat(InputSendChat in);
 
 
 }

+ 3 - 2
src/main/java/com/goafanti/baiduAI/service/impl/BaiduAiServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.goafanti.baiduAI.BaiduChatErrorEnums;
 import com.goafanti.baiduAI.bo.*;
 import com.goafanti.baiduAI.service.BaiduAiService;
+import com.goafanti.common.bo.SseEmitterUTF8;
 import com.goafanti.common.error.BusinessException;
 import com.goafanti.common.utils.BaiduChatUtils;
 import com.goafanti.common.utils.HttpUtils;
@@ -32,8 +33,8 @@ public class BaiduAiServiceImpl implements BaiduAiService {
 
 
     @Override
-    public SseEmitter sendChat(InputSendChat in) {
-        SseEmitter sseEmitter = new SseEmitter(3600_000L);
+    public SseEmitterUTF8 sendChat(InputSendChat in) {
+        SseEmitterUTF8 sseEmitter = new SseEmitterUTF8(3600_000L);
 //        if (clientId==null)clientId=UUID.randomUUID().toString();
         SseMap.sseEmitterMap.put(in.getUserId(), new SseResult(in.getUserId(), System.currentTimeMillis(), sseEmitter));
         try {

+ 27 - 0
src/main/java/com/goafanti/common/bo/SseEmitterUTF8.java

@@ -0,0 +1,27 @@
+package com.goafanti.common.bo;
+
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+
+import java.nio.charset.Charset;
+
+/**
+ * 直接使用会有乱码问题,继承一下,重写下修改后就没有问题了
+ */
+public class SseEmitterUTF8 extends SseEmitter {
+
+        public SseEmitterUTF8(Long timeout) {
+            super(timeout);
+        }
+
+        @Override
+        protected void extendResponse(ServerHttpResponse outputMessage) {
+            super.extendResponse(outputMessage);
+
+            HttpHeaders headers = outputMessage.getHeaders();
+            headers.setContentType( new MediaType("text", "event-stream", Charset.forName("UTF-8")));
+        }
+    }
+

+ 6 - 0
src/main/java/com/goafanti/common/controller/WebpageController.java

@@ -11,6 +11,7 @@ import java.util.Map;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
+import com.goafanti.common.dao.ErnieBotCommonDao;
 import com.goafanti.common.model.*;
 import com.goafanti.news.bo.InputJtNews;
 import com.goafanti.news.bo.OutJtNews;
@@ -111,6 +112,9 @@ public class WebpageController extends BaseController {
 	@Resource
 	private EventPlanningService eventPlanningService;
 
+	@Resource
+	private ErnieBotCommonDao ernieBotCommonDao;
+
 	@RequestMapping(value = "/user/account/index", method = RequestMethod.GET)
 	public ModelAndView index(HttpServletRequest request, ModelAndView modelview) {
 		modelview.setViewName("/user/account/index");
@@ -1611,6 +1615,8 @@ public class WebpageController extends BaseController {
 	@RequestMapping("/portal/answers")
 	public ModelAndView answers(ModelAndView modelAndView){
 		modelAndView.setViewName("/portal/answers");
+		List<ErnieBotCommon> list = ernieBotCommonDao.selectAll(10);
+		modelAndView.addObject("list",list);
 		return modelAndView;
 	}
 

+ 2 - 3
src/main/java/com/goafanti/common/utils/BaiduChatUtils.java

@@ -87,7 +87,6 @@ public class BaiduChatUtils {
 
     @Async
     public void sendBaiduAiStream(InputSendChat inputSendChat) throws IOException {
-        System.out.println("异步调用获取数据");
         try {
             String baidu_url=BAIDU_CHAT_WXYY_URL+getRedisBaiduAccessToken();
             URL url = new URL(baidu_url);
@@ -117,8 +116,8 @@ public class BaiduChatUtils {
                         break;
                     }
 //                  OutSendChatOK out =jsonObject.toJavaObject(OutSendChatOK.class);
-                    System.out.println(data);
-                    res.sseEmitter.send(data, org.springframework.http.MediaType.APPLICATION_JSON);
+//                    System.out.println(data);
+                    res.sseEmitter.send(data);
                 }
             }
             SseMap.sseEmitterMap.remove(inputSendChat.getUserId());

+ 1 - 6
src/main/webapp/WEB-INF/views/portal/answers.html

@@ -37,12 +37,7 @@
         <div class="basic_icon"></div>
         <span class="basic_tips">看看大家都在问什么?</span>
       </div>
-      <div class="basic_items">实用新型专利主要应用哪些领域?</div>
-      <div class="basic_items">实用新型专利主要应用哪些领域?</div>
-      <div class="basic_items">实用新型专利主要应用哪些领域?</div>
-      <div class="basic_items">实用新型专利主要应用哪些领域?</div>
-      <div class="basic_items">实用新型专利主要应用哪些领域?</div>
-      <div class="basic_items">实用新型专利主要应用哪些领域?</div>
+      <div class="basic_items" th:each="e :${list}"   th:text="${e.content}">实用新型专利主要应用哪些领域?</div>
     </div>
     <div class="basic_chat">
       <div class="chat_item">

+ 11 - 11
src/main/webapp/WEB-INF/views/portal/test.html

@@ -56,19 +56,19 @@
         setMessageInnerHTML("你的浏览器不支持SSE");
     }
 
-    // 监听窗口关闭事件,主动去关闭sse连接,如果服务端设置永不过期,浏览器关闭后手动清理服务端数据
-    window.onbeforeunload = function () {
-        closeSse();
-    };
+    // // 监听窗口关闭事件,主动去关闭sse连接,如果服务端设置永不过期,浏览器关闭后手动清理服务端数据
+    // window.onbeforeunload = function () {
+    //     closeSse();
+    // };
 
     // 关闭Sse连接
-    function closeSse() {
-        source.close();
-        const httpRequest = new XMLHttpRequest();
-        httpRequest.open('GET', 'http://localhost:8080/chat/close/' + userId, true);
-        httpRequest.send();
-        console.log("close");
-    }
+    // function closeSse() {
+    //     source.close();
+    //     const httpRequest = new XMLHttpRequest();
+    //     httpRequest.open('GET', 'http://localhost:8080/chat/end?clientId' + userId, true);
+    //     httpRequest.send();
+    //     console.log("close");
+    // }
 
     // 将消息显示在网页上
     function setMessageInnerHTML(innerHTML) {