tsurumure 6 mesi fa
parent
commit
cf652ab48f
26 ha cambiato i file con 202 aggiunte e 286 eliminazioni
  1. 17 0
      db/__ai_chat_config.sql
  2. 30 0
      db/__ds_chat.sql
  3. 23 0
      db/__ds_chat_history.sql
  4. 0 17
      db/ai_chat_config.sql
  5. 0 30
      db/ds_chat.sql
  6. 0 23
      db/ds_chat_history.sql
  7. 1 70
      db/sys_user_role_menu.sql
  8. 25 25
      src/main/java/com/backendsys/entity/Ai/AiChatConfigDTO.java
  9. 17 0
      src/main/java/com/backendsys/modules/ai/chat/deepSeek/controller/DeepSeekChatController.java
  10. 5 5
      src/main/java/com/backendsys/modules/ai/chat/deepSeek/controller/DeepSeekController.java
  11. 0 17
      src/main/java/com/backendsys/modules/ai/deepSeek/controller/DeepSeekChatController.java
  12. 0 28
      src/main/java/com/backendsys/modules/ai/deepSeek/entity/DSChat.java
  13. 0 25
      src/main/java/com/backendsys/modules/ai/deepSeek/entity/DSChatHistory.java
  14. 0 4
      src/main/java/com/backendsys/modules/ai/deepSeek/service/DeepSeekChatService.java
  15. 0 14
      src/main/java/com/backendsys/modules/ai/deepSeek/service/DeepSeekClient.java
  16. 28 0
      src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSChat.java
  17. 25 0
      src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSChatHistory.java
  18. 1 1
      src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSContent.java
  19. 1 1
      src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSParam.java
  20. 1 2
      src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSRequest.java
  21. 1 1
      src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSRequestMessage.java
  22. 4 0
      src/main/java/com/backendsys/modules/sdk/deepseek/service/DeepSeekChatService.java
  23. 11 0
      src/main/java/com/backendsys/modules/sdk/deepseek/service/DeepSeekClient.java
  24. 2 2
      src/main/java/com/backendsys/modules/sdk/deepseek/service/impl/DeepSeekChatServiceImpl.java
  25. 9 11
      src/main/java/com/backendsys/modules/sdk/deepseek/service/impl/DeepSeekClientImpl.java
  26. 1 10
      src/main/java/com/backendsys/modules/sdk/deepseek/utils/OllamaUtil.java

+ 17 - 0
db/__ai_chat_config.sql

@@ -0,0 +1,17 @@
+# /**
+# Source Server Version: 8.0.31
+# Source Database: backendsys
+# Date: 2023/05/23 17:09:22
+# */
+#
+# DROP TABLE IF EXISTS `ai_chat_config`;
+# CREATE TABLE `ai_chat_config` (
+#     PRIMARY KEY (`id`),
+#     `id` BIGINT AUTO_INCREMENT COMMENT 'ID',
+#     `config_key` VARCHAR(255) COMMENT '配置名称',
+#     `config_value` VARCHAR(255) COMMENT '配置值'
+# ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='AI对话配置表';
+#
+# INSERT INTO ai_chat_config(config_key, config_value) VALUES
+#     ('expired_time', 30)
+# ;

+ 30 - 0
db/__ds_chat.sql

@@ -0,0 +1,30 @@
+# /**
+# Source Server Version: 8.0.31
+# Source Database: backendsys
+# Date: 2023/05/23 17:09:22
+# */
+#
+# DROP TABLE IF EXISTS `ds_chat`;
+# CREATE TABLE `ds_chat` (
+#     PRIMARY KEY (`id`),
+#     `id` BIGINT AUTO_INCREMENT COMMENT 'ID',
+#     `model` VARCHAR(255) COMMENT '模型',
+#     `history_code` VARCHAR(64) NOT NULL COMMENT '对话历史记录ID',
+#     `user_id` BIGINT COMMENT '用户ID',
+#     `user_nickname` VARCHAR(255) COMMENT '用户名',
+#     `role` VARCHAR(255) COMMENT '对话角色 (user, assistant, system, tool)',
+#     `content` VARCHAR(5000) NOT NULL COMMENT '对话内容',
+#     `content_type` VARCHAR(255) NOT NULL COMMENT '对话内容类型 (LOADING: 思考中, THINK: 思考, REPLY: 回复)',
+#     `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+#     INDEX `idx_history_code` (`history_code`),
+#     INDEX `idx_user_id` (`user_id`),
+#     INDEX `idx_model` (`model`)
+# ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Deepseek对话表';
+#
+# INSERT INTO ds_chat(model, history_code, user_id, user_nickname, role, content_type, content) VALUES
+#     ('deepseek-reasoner', '5670822e-f0f7-4635-b766-c9c61edef0fa', 1, '超人', 'user', 'REPLY', '生成一条关于制作蛋糕的文案,适用于家用,用料是纯天然无添加剂,主打绿色健康美味的理念'),
+#     ('deepseek-reasoner', '5670822e-f0f7-4635-b766-c9c61edef0fa', null, null, null, 'THINK', '让我想想用户说这段话的含义'),
+#     ('deepseek-reasoner', '5670822e-f0f7-4635-b766-c9c61edef0fa', null, null, 'assistant', 'REPLY', '在家也能享受绿色健康美味!用纯天然无添加剂的食材,带给你和家人最纯净的美味。从选购新鲜食材到烘焙出炉,每一步都充满温馨与乐趣。让我们一起回归自然,享受绿色健康的蛋糕时光!'),
+#     ('deepseek-chat', '4e69922c-f0e7-4f82-905d-0b375e094092', 1, '超人', 'user', 'REPLY', '你好'),
+#     ('deepseek-chat', '4e69922c-f0e7-4f82-905d-0b375e094092', null, null, 'assistant', 'REPLY', '你好,朋友')
+# ;

+ 23 - 0
db/__ds_chat_history.sql

@@ -0,0 +1,23 @@
+# /**
+# Source Server Version: 8.0.31
+# Source Database: backendsys
+# Date: 2023/05/23 17:09:22
+# */
+#
+# DROP TABLE IF EXISTS `ds_chat_history`;
+# CREATE TABLE `ds_chat_history` (
+#     PRIMARY KEY (`id`),
+#     `id` BIGINT AUTO_INCREMENT COMMENT 'ID',
+#     `history_code` VARCHAR(36) NOT NULL COMMENT '对话历史记录ID',
+#     `user_id` BIGINT NOT NULL COMMENT '用户ID',
+#     `last_content` VARCHAR(255) NOT NULL COMMENT '最后一次的对话内容',
+#     `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+#     `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+#     INDEX `idx_user_id` (`user_id`)
+# ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Deepseek对话历史记录表';
+#
+# INSERT INTO ds_chat_history(history_code, user_id, last_content) VALUES
+#     ('5670822e-f0f7-4635-b766-c9c61edef0fa', 1, '生成一条关于制作蛋糕的文案,适用于家用,用料是纯天然无添加剂,主打绿色健康美味的理念'),
+#     ('3e69922c-f0e7-4f82-905d-0b375e09409c', 1, '你好'),
+#     ('bd55b4e6-9a4b-4904-99cc-b474bc0a86e4', 2, 'Hello')
+# ;

+ 0 - 17
db/ai_chat_config.sql

@@ -1,17 +0,0 @@
-/**
-Source Server Version: 8.0.31
-Source Database: backendsys
-Date: 2023/05/23 17:09:22
-*/
-
-DROP TABLE IF EXISTS `ai_chat_config`;
-CREATE TABLE `ai_chat_config` (
-    PRIMARY KEY (`id`),
-    `id` BIGINT AUTO_INCREMENT COMMENT 'ID',
-    `config_key` VARCHAR(255) COMMENT '配置名称',
-    `config_value` VARCHAR(255) COMMENT '配置值'
-) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='AI对话配置表';
-
-INSERT INTO ai_chat_config(config_key, config_value) VALUES
-    ('expired_time', 30)
-;

+ 0 - 30
db/ds_chat.sql

@@ -1,30 +0,0 @@
-/**
-Source Server Version: 8.0.31
-Source Database: backendsys
-Date: 2023/05/23 17:09:22
-*/
-
-DROP TABLE IF EXISTS `ds_chat`;
-CREATE TABLE `ds_chat` (
-    PRIMARY KEY (`id`),
-    `id` BIGINT AUTO_INCREMENT COMMENT 'ID',
-    `model` VARCHAR(255) COMMENT '模型',
-    `history_code` VARCHAR(64) NOT NULL COMMENT '对话历史记录ID',
-    `user_id` BIGINT COMMENT '用户ID',
-    `user_nickname` VARCHAR(255) COMMENT '用户名',
-    `role` VARCHAR(255) COMMENT '对话角色 (user, assistant, system, tool)',
-    `content` VARCHAR(5000) NOT NULL COMMENT '对话内容',
-    `content_type` VARCHAR(255) NOT NULL COMMENT '对话内容类型 (LOADING: 思考中, THINK: 思考, REPLY: 回复)',
-    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    INDEX `idx_history_code` (`history_code`),
-    INDEX `idx_user_id` (`user_id`),
-    INDEX `idx_model` (`model`)
-) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Deepseek对话表';
-
-INSERT INTO ds_chat(model, history_code, user_id, user_nickname, role, content_type, content) VALUES
-    ('deepseek-reasoner', '5670822e-f0f7-4635-b766-c9c61edef0fa', 1, '超人', 'user', 'REPLY', '生成一条关于制作蛋糕的文案,适用于家用,用料是纯天然无添加剂,主打绿色健康美味的理念'),
-    ('deepseek-reasoner', '5670822e-f0f7-4635-b766-c9c61edef0fa', null, null, null, 'THINK', '让我想想用户说这段话的含义'),
-    ('deepseek-reasoner', '5670822e-f0f7-4635-b766-c9c61edef0fa', null, null, 'assistant', 'REPLY', '在家也能享受绿色健康美味!用纯天然无添加剂的食材,带给你和家人最纯净的美味。从选购新鲜食材到烘焙出炉,每一步都充满温馨与乐趣。让我们一起回归自然,享受绿色健康的蛋糕时光!'),
-    ('deepseek-chat', '4e69922c-f0e7-4f82-905d-0b375e094092', 1, '超人', 'user', 'REPLY', '你好'),
-    ('deepseek-chat', '4e69922c-f0e7-4f82-905d-0b375e094092', null, null, 'assistant', 'REPLY', '你好,朋友')
-;

+ 0 - 23
db/ds_chat_history.sql

@@ -1,23 +0,0 @@
-/**
-Source Server Version: 8.0.31
-Source Database: backendsys
-Date: 2023/05/23 17:09:22
-*/
-
-DROP TABLE IF EXISTS `ds_chat_history`;
-CREATE TABLE `ds_chat_history` (
-    PRIMARY KEY (`id`),
-    `id` BIGINT AUTO_INCREMENT COMMENT 'ID',
-    `history_code` VARCHAR(36) NOT NULL COMMENT '对话历史记录ID',
-    `user_id` BIGINT NOT NULL COMMENT '用户ID',
-    `last_content` VARCHAR(255) NOT NULL COMMENT '最后一次的对话内容',
-    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-    INDEX `idx_user_id` (`user_id`)
-) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='Deepseek对话历史记录表';
-
-INSERT INTO ds_chat_history(history_code, user_id, last_content) VALUES
-    ('5670822e-f0f7-4635-b766-c9c61edef0fa', 1, '生成一条关于制作蛋糕的文案,适用于家用,用料是纯天然无添加剂,主打绿色健康美味的理念'),
-    ('3e69922c-f0e7-4f82-905d-0b375e09409c', 1, '你好'),
-    ('bd55b4e6-9a4b-4904-99cc-b474bc0a86e4', 2, 'Hello')
-;

+ 1 - 70
db/sys_user_role_menu.sql

@@ -37,7 +37,7 @@ INSERT INTO sys_user_role_menu(id, parent_id, menu_name, menu_name_en, type, pat
 #     (2, '订单管理', 'Orders', 1, '/b2c/order/b2cOrder', '/src/views/b2c/order/b2cOrder.vue', '{}', null, null, 4),
 #     (2, '订单详情', 'Orders Detail', 2, '/b2c/order/b2cOrderDetail', '/src/views/b2c/order/b2cOrderDetail.vue', '{"isBack":true,"isHide":true}', null, null, 4),
 
-    (2, -1, 'AI文案', 'AI Copywriting', 1, '/ai/chat/copywriting', '/src/views/ai/copywriting.vue', '{}', 'Document', '31', 900),
+    (2, -1, 'AI对话', 'AI Copywriting', 1, '/ai/chat/copywriting', '/src/views/ai/copywriting.vue', '{}', 'Document', '31', 900),
 
     (3, -1, 'AI图片生成器', 'AI Image', 1, '/ai/imagePicker', '', '{}', 'Picture', '35', 901),
     (4, 3, 'AI模特', 'AI Model', 1, '/ai/modelCloth/make', '', '{}', '', '', 902),
@@ -84,72 +84,3 @@ INSERT INTO sys_user_role_menu(id, parent_id, menu_name, menu_name_en, type, pat
     (19, 12, '菜单管理', 'Menus', 1, '/system/sysUserRoleMenu', '/src/views/system/sysUserRoleMenu/sysUserRoleMenuDetail.vue', '{}', null, '4.3', 12),
     (20, 12, '日志管理', 'Logs', 1, '/system/sysLogList', '/src/views/system/sysLog/sysLogList.vue', '{}', null, '5.1', 12)
 ;
-
-
-
-# /**
-# Source Server Version: 8.0.31
-# Source Database: backendsys
-# Date: 2023-12-30 12:49:53
-# */
-#
-# DROP TABLE IF EXISTS `sys_user_role_menu`;
-# CREATE TABLE `sys_user_role_menu` (
-#     PRIMARY KEY (`id`),
-#     `id` BIGINT AUTO_INCREMENT COMMENT 'ID',
-#     `parent_id` BIGINT DEFAULT '-1' COMMENT '父ID',
-#     `menu_name` VARCHAR(255) NOT NULL COMMENT '标题',
-#     `menu_name_en` VARCHAR(255) NOT NULL COMMENT '标题 (英文)',
-#     `path` VARCHAR(1000) NOT NULL COMMENT '跳转路径',
-#     `meta` VARCHAR(255) NOT NULL DEFAULT '{}' COMMENT '路由元信息,以 JSON 格式存储',
-#     `icon` VARCHAR(100) COMMENT '图标',
-#     `sort` INT DEFAULT '1' COMMENT '排序',
-#     `status` TINYINT(1) DEFAULT '1' COMMENT '菜单状态 (-1禁用, 1启用)'
-# ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='系统菜单表';
-#
-# INSERT INTO sys_user_role_menu(id, parent_id, menu_name, menu_name_en, path, meta, icon, sort) VALUES
-#     (1, -1, '创意中心', 'Idea Center', '/', '{}', 'House', 1),
-#
-# #     (-1, '商城管理', 'B2c', '/b2c/good', '{}', 'Goods', 2),
-# #     (2, '商品管理', 'Goods', '/b2c/good/b2cGood', '{}', null, 3),
-# #     (2, '商品详情', 'Goods Detail', '/b2c/good/b2cGoodDetail', '{"isBack":true,"isHide":true}', null, 3),
-# #     (2, '商品分类', 'Goods Categories', '/b2c/good/b2cGoodCategory', '{}', null, 4),
-# #     (2, '商品分类详情', 'Goods Categories Detail', '/b2c/good/b2cGoodCategoryDetail', '{"isBack":true,"isHide":true}', null, 4),
-# #     (2, '商品品牌', 'Goods Brands', '/b2c/good/b2cGoodBrand', '{}', null, 5),
-# #     (2, '商品品牌详情', 'Goods Brands Detail', '/b2c/good/b2cGoodBrandDetail', '{"isBack":true,"isHide":true}', null, 5),
-# #     (2, '商品单位', 'Goods Units', '/b2c/good/b2cGoodUnit', '{}', null, 6),
-# #     (2, '商品单位详情', 'Goods Units Detail', '/b2c/good/b2cGoodUnitDetail', '{"isBack":true,"isHide":true}', null, 6),
-# #
-# #     (2, '订单管理', 'Orders', '/b2c/order/b2cOrder', '{}', null, 4),
-# #     (2, '订单详情', 'Orders Detail', '/b2c/order/b2cOrderDetail', '{"isBack":true,"isHide":true}', null, 4),
-# #
-# #     (-1, '内容管理', 'CMS', '/cms', '', '{}', 'Document', '12', 5),
-# #     (13, '页面管理', 'Pages', '/cms/page/cmsPage', '{}', 'Document', 5),
-# #
-# #     (13, '资讯管理', 'Articles', '/cms/article/cmsArticle', '{}', null, 6),
-# #     (13, '资讯详情', 'Articles Detail', '/cms/article/cmsArticleDetail', '{"isBack":true,"isHide":true}', null, 6),
-# #     (13, '资讯分类管理', 'Articles Categories', '/cms/article/cmsArticleCategory', '{}', null, 7),
-# #     (13, '资讯分类详情', 'Articles Categorie Detail', '/cms/article/cmsArticleCategoryDetail', '{"isBack":true,"isHide":true}', null, 7),
-# #     (13, '幻灯片管理', 'Banners', '/cms/banner/cmsBanner', '{}', null, 8),
-# #     (13, '幻灯片详情', 'Banners Detail', '/cms/banner/cmsBannerDetail', '{"isBack":true,"isHide":true}', null, 8),
-#
-# #     (13, '站点信息', 'SiteInfo', '/cms/site/cmsSiteInfo', '{}', null, 9),
-#
-#     (2, -1, 'AI文案', 'AI Copywriting', '/ai/chat/copywriting', '{}', 'Document', 10),
-#     (3, -1, 'AI作画', 'AI Image Generator', '/ai/imageGenerator', '{}', 'Picture', 10),
-#
-# #     (-1, '素材管理', 'Material', '/material', '{}', 'MessageBox', 10),
-# #     (4, '素材中心', 'Material', '/material/center', '{}', null, 10),
-# #     (4, '素材列表', 'Material List', '/material/list', '{}', null, 10),
-# #     (4, '素材分类', 'Material Category', '/material/category', '{}', null, 10),
-#
-# #     (-1, '我的', 'Account', '/account', '{}', 'User', 11),
-# #     (8, '我的素材', 'My Material', '/account/myMaterial', '{}', null, 11),
-# #     (8, '我的作品', 'My Work', '/account/myWork', '{}', null, 11),
-# #     (8, '我的草稿', 'My Draft', '/account/myDraft', '{}', null, 11),
-#
-#     (12, -1, '系统管理', 'Systems', '/system', '{}', 'Setting', 12),
-#     (13, 12, '用户管理', 'Users', '/system/sysUser', '{}', null, 12),
-#     (14, 12, '角色管理', 'Users Roles', '/system/sysUserRole', '{}', null, 12),
-#     (15, 12, '系统菜单', 'System Menu', '/system/sysMenu', '{}', null, 12)
-# ;

+ 25 - 25
src/main/java/com/backendsys/entity/Ai/AiChatConfigDTO.java

@@ -1,25 +1,25 @@
-package com.backendsys.entity.Ai;
-
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
-import lombok.Data;
-
-@Data
-public class AiChatConfigDTO {
-    public static interface Update{}
-
-    /**
-     * ai_chat_config
-     */
-    private Long id;
-    @NotNull(message = "对话配置ID不能为空", groups = { AiChatConfigDTO.Update.class })
-    private Long chat_history_code;
-    
-    @NotNull(message = "对话配置名称不能为空", groups = { AiChatConfigDTO.Update.class })
-    @Size(max = 100, message = "对话配置名称长度不超过 {max} 字符", groups = { AiChatConfigDTO.Update.class })
-    private String config_key;
-
-    @NotNull(message = "对话配置值不能为空", groups = { AiChatConfigDTO.Update.class })
-    @Size(max = 100, message = "对话配置值长度不超过 {max} 字符", groups = { AiChatConfigDTO.Update.class })
-    private String config_value;
-}
+//package com.backendsys.entity.Ai;
+//
+//import jakarta.validation.constraints.NotNull;
+//import jakarta.validation.constraints.Size;
+//import lombok.Data;
+//
+//@Data
+//public class AiChatConfigDTO {
+//    public static interface Update{}
+//
+//    /**
+//     * ai_chat_config
+//     */
+//    private Long id;
+//    @NotNull(message = "对话配置ID不能为空", groups = { AiChatConfigDTO.Update.class })
+//    private Long chat_history_code;
+//
+//    @NotNull(message = "对话配置名称不能为空", groups = { AiChatConfigDTO.Update.class })
+//    @Size(max = 100, message = "对话配置名称长度不超过 {max} 字符", groups = { AiChatConfigDTO.Update.class })
+//    private String config_key;
+//
+//    @NotNull(message = "对话配置值不能为空", groups = { AiChatConfigDTO.Update.class })
+//    @Size(max = 100, message = "对话配置值长度不超过 {max} 字符", groups = { AiChatConfigDTO.Update.class })
+//    private String config_value;
+//}

+ 17 - 0
src/main/java/com/backendsys/modules/ai/chat/deepSeek/controller/DeepSeekChatController.java

@@ -0,0 +1,17 @@
+//package com.backendsys.modules.ai.chat.deepSeek.controller;
+//
+//import com.backendsys.modules.sdk.deepseek.service.DeepSeekChatService;
+//import io.swagger.v3.oas.annotations.tags.Tag;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.validation.annotation.Validated;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//@Validated
+//@RestController
+//@Tag(name = "DeepSeekChatService")
+//public class DeepSeekChatController {
+//
+//    @Autowired
+//    private DeepSeekChatService deepSeekChatService;
+//
+//}

+ 5 - 5
src/main/java/com/backendsys/modules/ai/deepSeek/controller/DeepSeekController.java → src/main/java/com/backendsys/modules/ai/chat/deepSeek/controller/DeepSeekController.java

@@ -1,8 +1,8 @@
-package com.backendsys.modules.ai.deepSeek.controller;
+package com.backendsys.modules.ai.chat.deepSeek.controller;
 
-import com.backendsys.modules.ai.deepSeek.entity.DSParam;
-import com.backendsys.modules.ai.deepSeek.service.impl.DeepSeekClientImpl;
-import com.backendsys.modules.ai.deepSeek.utils.OllamaUtil;
+import com.backendsys.modules.sdk.deepseek.entity.DSParam;
+import com.backendsys.modules.sdk.deepseek.service.impl.DeepSeekClientImpl;
+import com.backendsys.modules.sdk.deepseek.utils.OllamaUtil;
 import com.backendsys.modules.common.config.security.utils.SecurityUtil;
 import com.backendsys.modules.common.utils.Result;
 import io.swagger.v3.oas.annotations.Operation;
@@ -36,7 +36,7 @@ public class DeepSeekController {
     @PreAuthorize("@sr.hasPermission('101')")
     @PostMapping("/api/deepSeek/chat")
     public Result chat(@Validated @RequestBody DSParam param) {
-        deepSeekClientImpl.chatCompletion(param.getModel(), param.getPrompt());
+        deepSeekClientImpl.chatCompletion(param.getModel(), param.getPrompt(), SecurityUtil.getUserId());
         return Result.success();
     }
 

+ 0 - 17
src/main/java/com/backendsys/modules/ai/deepSeek/controller/DeepSeekChatController.java

@@ -1,17 +0,0 @@
-package com.backendsys.modules.ai.deepSeek.controller;
-
-import com.backendsys.modules.ai.deepSeek.service.DeepSeekChatService;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RestController;
-
-@Validated
-@RestController
-@Tag(name = "DeepSeekChatService")
-public class DeepSeekChatController {
-
-    @Autowired
-    private DeepSeekChatService deepSeekChatService;
-
-}

+ 0 - 28
src/main/java/com/backendsys/modules/ai/deepSeek/entity/DSChat.java

@@ -1,28 +0,0 @@
-package com.backendsys.modules.ai.deepSeek.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data
-@TableName("ds_chat")
-public class DSChat {
-
-    public static interface Detail{}
-    public static interface Create{}
-    public static interface Update{}
-    public static interface Delete{}
-
-    @TableId(type = IdType.AUTO)
-    private Long id;
-    private String model;
-    private String history_code;
-    private Long user_id;
-    private String user_nickname;
-    private String role;
-    private String content;
-    private String content_type;
-    private String create_time;
-
-}

+ 0 - 25
src/main/java/com/backendsys/modules/ai/deepSeek/entity/DSChatHistory.java

@@ -1,25 +0,0 @@
-package com.backendsys.modules.ai.deepSeek.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data
-@TableName("ds_chat_history")
-public class DSChatHistory {
-
-    public static interface Detail{}
-    public static interface Create{}
-    public static interface Update{}
-    public static interface Delete{}
-
-    @TableId(type = IdType.AUTO)
-    private Long id;
-    private String history_code;
-    private Long user_id;
-    private String last_content;
-    private String create_time;
-    private String update_time;
-
-}

+ 0 - 4
src/main/java/com/backendsys/modules/ai/deepSeek/service/DeepSeekChatService.java

@@ -1,4 +0,0 @@
-package com.backendsys.modules.ai.deepSeek.service;
-
-public interface DeepSeekChatService {
-}

+ 0 - 14
src/main/java/com/backendsys/modules/ai/deepSeek/service/DeepSeekClient.java

@@ -1,14 +0,0 @@
-package com.backendsys.modules.ai.deepSeek.service;
-
-import cn.hutool.json.JSONArray;
-
-import java.util.List;
-import java.util.Map;
-
-public interface DeepSeekClient {
-
-    void chatCompletion(String prompt, String model);
-
-    JSONArray getModels();
-
-}

+ 28 - 0
src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSChat.java

@@ -0,0 +1,28 @@
+//package com.backendsys.modules.sdk.deepseek.entity;
+//
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.annotation.TableId;
+//import com.baomidou.mybatisplus.annotation.TableName;
+//import lombok.Data;
+//
+//@Data
+//@TableName("ds_chat")
+//public class DSChat {
+//
+//    public static interface Detail{}
+//    public static interface Create{}
+//    public static interface Update{}
+//    public static interface Delete{}
+//
+//    @TableId(type = IdType.AUTO)
+//    private Long id;
+//    private String model;
+//    private String history_code;
+//    private Long user_id;
+//    private String user_nickname;
+//    private String role;
+//    private String content;
+//    private String content_type;
+//    private String create_time;
+//
+//}

+ 25 - 0
src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSChatHistory.java

@@ -0,0 +1,25 @@
+//package com.backendsys.modules.sdk.deepseek.entity;
+//
+//import com.baomidou.mybatisplus.annotation.IdType;
+//import com.baomidou.mybatisplus.annotation.TableId;
+//import com.baomidou.mybatisplus.annotation.TableName;
+//import lombok.Data;
+//
+//@Data
+//@TableName("ds_chat_history")
+//public class DSChatHistory {
+//
+//    public static interface Detail{}
+//    public static interface Create{}
+//    public static interface Update{}
+//    public static interface Delete{}
+//
+//    @TableId(type = IdType.AUTO)
+//    private Long id;
+//    private String history_code;
+//    private Long user_id;
+//    private String last_content;
+//    private String create_time;
+//    private String update_time;
+//
+//}

+ 1 - 1
src/main/java/com/backendsys/modules/ai/deepSeek/entity/DSContent.java → src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSContent.java

@@ -1,4 +1,4 @@
-package com.backendsys.modules.ai.deepSeek.entity;
+package com.backendsys.modules.sdk.deepseek.entity;
 
 import lombok.Data;
 

+ 1 - 1
src/main/java/com/backendsys/modules/ai/deepSeek/entity/DSParam.java → src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSParam.java

@@ -1,4 +1,4 @@
-package com.backendsys.modules.ai.deepSeek.entity;
+package com.backendsys.modules.sdk.deepseek.entity;
 
 import jakarta.validation.constraints.NotEmpty;
 import lombok.Data;

+ 1 - 2
src/main/java/com/backendsys/modules/ai/deepSeek/entity/DSRequest.java → src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSRequest.java

@@ -1,9 +1,8 @@
-package com.backendsys.modules.ai.deepSeek.entity;
+package com.backendsys.modules.sdk.deepseek.entity;
 
 import lombok.Data;
 
 import java.util.List;
-import java.util.Map;
 
 @Data
 public class DSRequest {

+ 1 - 1
src/main/java/com/backendsys/modules/ai/deepSeek/entity/DSRequestMessage.java → src/main/java/com/backendsys/modules/sdk/deepseek/entity/DSRequestMessage.java

@@ -1,4 +1,4 @@
-package com.backendsys.modules.ai.deepSeek.entity;
+package com.backendsys.modules.sdk.deepseek.entity;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;

+ 4 - 0
src/main/java/com/backendsys/modules/sdk/deepseek/service/DeepSeekChatService.java

@@ -0,0 +1,4 @@
+package com.backendsys.modules.sdk.deepseek.service;
+
+public interface DeepSeekChatService {
+}

+ 11 - 0
src/main/java/com/backendsys/modules/sdk/deepseek/service/DeepSeekClient.java

@@ -0,0 +1,11 @@
+package com.backendsys.modules.sdk.deepseek.service;
+
+import cn.hutool.json.JSONArray;
+
+public interface DeepSeekClient {
+
+    void chatCompletion(String prompt, String model, Long user_id);
+
+    JSONArray getModels();
+
+}

+ 2 - 2
src/main/java/com/backendsys/modules/ai/deepSeek/service/impl/DeepSeekChatServiceImpl.java → src/main/java/com/backendsys/modules/sdk/deepseek/service/impl/DeepSeekChatServiceImpl.java

@@ -1,6 +1,6 @@
-package com.backendsys.modules.ai.deepSeek.service.impl;
+package com.backendsys.modules.sdk.deepseek.service.impl;
 
-import com.backendsys.modules.ai.deepSeek.service.DeepSeekChatService;
+import com.backendsys.modules.sdk.deepseek.service.DeepSeekChatService;
 import org.springframework.stereotype.Service;
 
 @Service

+ 9 - 11
src/main/java/com/backendsys/modules/ai/deepSeek/service/impl/DeepSeekClientImpl.java → src/main/java/com/backendsys/modules/sdk/deepseek/service/impl/DeepSeekClientImpl.java

@@ -1,14 +1,14 @@
-package com.backendsys.modules.ai.deepSeek.service.impl;
+package com.backendsys.modules.sdk.deepseek.service.impl;
 
 import cn.hutool.core.convert.Convert;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.backendsys.exception.CustException;
-import com.backendsys.modules.ai.deepSeek.entity.DSContent;
-import com.backendsys.modules.ai.deepSeek.entity.DSRequest;
-import com.backendsys.modules.ai.deepSeek.entity.DSRequestMessage;
-import com.backendsys.modules.ai.deepSeek.service.DeepSeekClient;
+import com.backendsys.modules.sdk.deepseek.entity.DSContent;
+import com.backendsys.modules.sdk.deepseek.entity.DSRequest;
+import com.backendsys.modules.sdk.deepseek.entity.DSRequestMessage;
+import com.backendsys.modules.sdk.deepseek.service.DeepSeekClient;
 import com.backendsys.modules.common.config.security.utils.SecurityUtil;
 import com.backendsys.modules.sse.entity.SseResponse;
 import com.backendsys.modules.sse.entity.SseResponseEnum;
@@ -24,14 +24,12 @@ import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
 import java.io.*;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.CompletableFuture;
 
 /**
@@ -61,16 +59,15 @@ public class DeepSeekClientImpl implements DeepSeekClient {
      * @param prompt
      */
     @Override
-    public void chatCompletion(String prompt, String model) {
+    public void chatCompletion(String model, String prompt, Long user_id) {
 
-        Long userId = SecurityUtil.getUserId();
-        String emitterKey = APPLICATION_NAME + "-userid-" + Convert.toStr(userId);
+        String emitterKey = APPLICATION_NAME + "-userid-" + Convert.toStr(user_id);
 
         // 创建一个 CompletableFuture 来执行异步任务
         CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
 
             try {
-                System.out.println("提问: " + prompt);
+                System.out.println("向模型: " + model + " 提问: " + prompt);
 
                 // 【多轮对话】
                 // https://api-docs.deepseek.com/zh-cn/guides/multi_round_chat
@@ -131,6 +128,7 @@ public class DeepSeekClientImpl implements DeepSeekClient {
                         String line;
                         while ((line = reader.readLine()) != null) {
 
+                            // System.out.println(line);
                             /*
                                 ---------------------- line ----------------------
                                 data: {

+ 1 - 10
src/main/java/com/backendsys/modules/ai/deepSeek/utils/OllamaUtil.java → src/main/java/com/backendsys/modules/sdk/deepseek/utils/OllamaUtil.java

@@ -1,17 +1,10 @@
-package com.backendsys.modules.ai.deepSeek.utils;
+package com.backendsys.modules.sdk.deepseek.utils;
 
 import cn.hutool.core.convert.Convert;
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpResponse;
-import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.backendsys.exception.CustException;
-import com.backendsys.modules.common.config.security.utils.SecurityUtil;
 import com.backendsys.modules.sse.entity.SseResponse;
 import com.backendsys.modules.sse.entity.SseResponseEnum;
 import com.backendsys.modules.sse.utils.SseUtil;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
@@ -23,10 +16,8 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.io.BufferedReader;
-import java.io.IOException;
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.CompletableFuture;