孙永军 il y a 1 an
Parent
commit
da92ac96fa

+ 9 - 4
src/main/java/com/sxtvs/open/api/chat/controller/KimiChatGroupController.java

@@ -4,10 +4,9 @@ import com.sxtvs.open.api.chat.entity.KimiChatGroup;
 import com.sxtvs.open.api.chat.service.impl.KimiChatGroupServiceImpl;
 import com.sxtvs.open.core.auth.LoginRequired;
 import jakarta.annotation.Resource;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * <p>
@@ -29,4 +28,10 @@ public class KimiChatGroupController {
     public KimiChatGroup create(@RequestBody KimiChatGroup kimiChatGroup) {
         return kimiChatGroupService.create(kimiChatGroup.getTitle());
     }
+
+    @GetMapping("list")
+    @LoginRequired
+    public List<KimiChatGroup> list() {
+        return kimiChatGroupService.listByUid();
+    }
 }

+ 6 - 0
src/main/java/com/sxtvs/open/api/chat/entity/KimiChatGroup.java

@@ -1,10 +1,13 @@
 package com.sxtvs.open.api.chat.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.List;
+
 import lombok.Getter;
 import lombok.Setter;
 
@@ -31,4 +34,7 @@ public class KimiChatGroup implements Serializable {
     private String title;
 
     private LocalDateTime createTime;
+
+    @TableField(exist = false)
+    private List<KimiChat>  kimiChats;
 }

+ 15 - 0
src/main/java/com/sxtvs/open/api/chat/service/impl/KimiChatGroupServiceImpl.java

@@ -1,15 +1,19 @@
 package com.sxtvs.open.api.chat.service.impl;
 
+import com.sxtvs.open.api.chat.entity.KimiChat;
 import com.sxtvs.open.api.chat.entity.KimiChatGroup;
 import com.sxtvs.open.api.chat.mapper.KimiChatGroupMapper;
 import com.sxtvs.open.api.chat.service.IKimiChatGroupService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sxtvs.open.core.auth.AESUtil;
 import com.sxtvs.open.core.auth.HttpContextUtil;
+import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -22,6 +26,9 @@ import java.util.Optional;
 @Service
 public class KimiChatGroupServiceImpl extends ServiceImpl<KimiChatGroupMapper, KimiChatGroup> implements IKimiChatGroupService {
 
+    @Resource
+    private KimiChatServiceImpl kimiChatService;
+
     public KimiChatGroup create(String content){
         KimiChatGroup kimiChatGroup = new KimiChatGroup();
         Optional<String> token = HttpContextUtil.getToken();
@@ -32,4 +39,12 @@ public class KimiChatGroupServiceImpl extends ServiceImpl<KimiChatGroupMapper, K
         save(kimiChatGroup);
         return kimiChatGroup;
     }
+
+    public List<KimiChatGroup> listByUid(){
+        Optional<String> token = HttpContextUtil.getToken();
+        String uid = AESUtil.decryptStr(token.get());
+        return lambdaQuery().eq(KimiChatGroup::getUid, Long.valueOf(uid)).list().stream().peek(group -> {
+            group.setKimiChats(kimiChatService.lambdaQuery().eq(KimiChat::getGroupId, group.getId()).list());
+        }).collect(Collectors.toList());
+    }
 }

+ 5 - 5
src/main/java/com/sxtvs/open/api/chat/service/impl/KimiChatServiceImpl.java

@@ -54,9 +54,6 @@ public class KimiChatServiceImpl extends ServiceImpl<KimiChatMapper, KimiChat> i
 
     private final String token = "sk-eKQV5KAqkQHINWZV9IBbsuefO21A6oTToY9pv9nyDeXPH0zu";
 
-    @Resource
-    private KimiChatGroupServiceImpl kimiChatGroupService;
-
     @Resource
     private SSEService sseService;
 
@@ -92,9 +89,10 @@ public class KimiChatServiceImpl extends ServiceImpl<KimiChatMapper, KimiChat> i
                     try {
                         String line = "";
                         while ((line = reader.readLine()) != null) {
+                            log.info("流数据 -- {} ", line);
                             if (!TextUtils.isEmpty(line)) {
                                 sseService.sendData( dataId, line );
-                                if (!"data: [DONE]".equals(line)){
+                                if (!"data: [DONE]".equals(line) && !line.isEmpty()) {
                                     stream2db(line.substring(6), dataId);
                                 }
                             }
@@ -144,7 +142,9 @@ public class KimiChatServiceImpl extends ServiceImpl<KimiChatMapper, KimiChat> i
             }
             StringBuilder s = new StringBuilder(kimiChat.getContent());
             for (String x : collect){
-                s.append(x);
+                if (x != null){
+                    s.append(x);
+                }
             }
             kimiChat.setContent(s.toString());
             kimiChat.setUpdateTime(LocalDateTime.now());

+ 2 - 2
src/test/java/com/sxtvs/open/GenCode.java

@@ -43,13 +43,13 @@ public class GenCode {
                 })
                 .packageConfig(builder -> {
                     builder.parent("com.sxtvs.open.api") // 设置父包名
-                            .moduleName("review") // 设置父包模块名
+                            .moduleName("chat") // 设置父包模块名
                             .pathInfo(Collections.singletonMap(OutputFile.xml,
                                     "D:\\dev\\java\\open\\src\\main\\resources\\com\\sxtvs")); // 设置mapperXml生成路径
                 })
                 .strategyConfig(builder -> {
 //                    builder.addInclude("h5_operate_form"); // 设置需要生成的表名
-                    builder.addInclude("review_img_record").addInclude("review_videos_record"); // 设置需要生成的表名
+                    builder.addInclude("kimi_chat").addInclude("kimi_chat_group"); // 设置需要生成的表名
                     builder.controllerBuilder().enableRestStyle();
                     builder.entityBuilder().enableLombok();
                 })

+ 38 - 0
src/test/java/com/sxtvs/open/OpenApplicationTests.java

@@ -1,6 +1,11 @@
 package com.sxtvs.open;
 
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.crypto.SecureUtil;
+import com.sxtvs.open.api.chat.dto.KimiRequest;
+import com.sxtvs.open.api.chat.dto.Message;
+import com.sxtvs.open.api.chat.entity.KimiChat;
+import com.sxtvs.open.api.chat.service.impl.KimiChatServiceImpl;
 import com.sxtvs.open.api.clue.entity.WxMessage;
 import com.sxtvs.open.api.clue.service.impl.ClueServiceImpl;
 import com.sxtvs.open.api.news.entity.YoumeiData;
@@ -11,7 +16,11 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.io.IOException;
 import java.security.Security;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
 
 @SpringBootTest
 class OpenApplicationTests {
@@ -97,5 +106,34 @@ class OpenApplicationTests {
         youmeiDataService.putDataRun();
     }
 
+    @Resource
+    private KimiChatServiceImpl kimiChatService;
+
+    @Test
+    public void test5(){
+        KimiChat  kimiChat = new KimiChat();
+        kimiChat.setId("user-" + IdUtil.simpleUUID());
+        kimiChat.setRole("user");
+        kimiChat.setCreateTime(LocalDateTime.now());
+        kimiChat.setGroupId(2L);
+
+        KimiRequest kimiRequest = new KimiRequest();
+        kimiRequest.setModel("moonshot-v1-8k");
+        kimiRequest.setTemperature(0.3D);
+        kimiRequest.setStream(true);
+        kimiRequest.setMax_tokens(4096);
+
+        List<Message> messageList = new ArrayList<>();
+
+            Message message = new Message();
+            message.setRole("user");
+            message.setContent("写一个排序算法");
+            messageList.add(message);
+
+
+        kimiRequest.setMessages(messageList);
+
+        kimiChatService.chatCompletions( kimiRequest, kimiChat.getGroupId());
+    }
 
 }