Ver Fonte

fix 提问流程优化

chenbiao há 2 anos atrás
pai
commit
c97480dd47

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/chatgpt/ChatGptAccountService.java

@@ -32,7 +32,7 @@ public interface ChatGptAccountService {
      * @param model 对话模型
      * @return 是否限制
      */
-    ConversationLimitResponse conversationLimit(String userToken, String model, String carId);
+    ConversationLimitResponse conversationLimit(String userToken, String model, String carId, ChatgptUser user);
 
     void saveConversationRecord(String userToken, ConversationRequest conversationRequest);
 

+ 4 - 6
netflix-service/src/main/java/com/cyksj/service/chatgpt/impl/ChatGptAccountServiceImpl.java

@@ -370,21 +370,19 @@ public class ChatGptAccountServiceImpl implements ChatGptAccountService {
 
 
     @Override
-    public ConversationLimitResponse conversationLimit(String userToken, String model, String carId) {
+    public ConversationLimitResponse conversationLimit(String userToken, String model, String carId, ChatgptUser chatgptUser) {
         ConversationLimitResponse conversationLimitResponse = new ConversationLimitResponse();
         conversationLimitResponse.setLimited(false);
         if ("gpt-4".equals(model)) {
-            ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class).eq(ChatgptUser::getUserToken, userToken));
-            if (chatgptUser == null) {
-                conversationLimitResponse.setLimited(true);
-            }
             //如果不为车队 直接返回
             if (!chatgptUser.getIsCar()) {
                 return conversationLimitResponse;
             }
             conversationLimitResponse = isConversationAllowed(userToken, chatgptUser.getLimitNum(), chatgptUser.getLimitTime());
             //车队次数记录
-            cardConversationRecord(carId);
+            TASK_EXECUTOR.execute(()->{
+                cardConversationRecord(carId);
+            });
         }
 
         return conversationLimitResponse;

+ 7 - 2
netflix-web/src/main/java/com/cyksj/web/controller/mirror/MirrorController.java

@@ -2,6 +2,7 @@ package com.cyksj.web.controller.mirror;
 
 import cn.hutool.json.JSONObject;
 import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
 import com.cyksj.common.util.IoKit;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
@@ -41,6 +42,8 @@ import java.util.Set;
 @RequestMapping("/applets/mirror")
 public class MirrorController {
 
+    private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
+
     private final ChatGptAccountService chatGptAccountService;
 
     private final HttpServletResponse response;
@@ -132,9 +135,11 @@ public class MirrorController {
         }
         //4.获取gpt-4 的规则限制
         //text-davinci-002-render-sha 3.5
-        ConversationLimitResponse conversationLimitResponse = chatGptAccountService.conversationLimit(userToken, conversationRequest.getModel(), conversationRequest.getCarId());
+        ConversationLimitResponse conversationLimitResponse = chatGptAccountService.conversationLimit(userToken, conversationRequest.getModel(), conversationRequest.getCarId(), user);
         //记录提问时间,车次,标题和模型
-        chatGptAccountService.saveConversationRecord(userToken, conversationRequest);
+        TASK_EXECUTOR.execute(()->{
+            chatGptAccountService.saveConversationRecord(userToken, conversationRequest);
+        });
         OutputStream out = null;
         String messgae = "";
         if (conversationLimitResponse.isLimited()) {