Sfoglia il codice sorgente

feat: 调整知识库模块

ageerle 1 mese fa
parent
commit
3be9005f95
100 ha cambiato i file con 1163 aggiunte e 297 eliminazioni
  1. 6 18
      pom.xml
  2. 1 3
      ruoyi-common/ruoyi-common-bom/pom.xml
  3. 0 4
      ruoyi-common/ruoyi-common-chat/pom.xml
  4. 3 17
      ruoyi-common/ruoyi-common-core/pom.xml
  5. 25 6
      ruoyi-modules-api/pom.xml
  6. 7 0
      ruoyi-modules-api/ruoyi-chat-api/pom.xml
  7. 0 2
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java
  8. 14 14
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatRobConfig.java
  9. 51 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatUsageToken.java
  10. 72 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatRobConfigBo.java
  11. 54 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatUsageTokenBo.java
  12. 1 1
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java
  13. 1 1
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/request/TranslationRequest.java
  14. 19 25
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatRobConfigVo.java
  15. 61 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatUsageTokenVo.java
  16. 2 1
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java
  17. 16 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatRobConfigMapper.java
  18. 16 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatUsageTokenMapper.java
  19. 6 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatModelService.java
  20. 5 2
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatTokenService.java
  21. 49 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatUsageTokenService.java
  22. 2 2
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVisitorUsageService.java
  23. 8 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatModelServiceImpl.java
  24. 112 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatUsageTokenServiceImpl.java
  25. 31 0
      ruoyi-modules-api/ruoyi-knowledge-api/pom.xml
  26. 3 3
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/CodeFileLoader.java
  27. 4 2
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/CsvFileLoader.java
  28. 1 1
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/FolderLoader.java
  29. 4 2
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/GithubLoader.java
  30. 4 2
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/JsonFileLoader.java
  31. 4 3
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/MarkDownFileLoader.java
  32. 4 3
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/PdfFileLoader.java
  33. 1 1
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoader.java
  34. 7 5
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoaderFactory.java
  35. 2 2
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/TextFileLoader.java
  36. 4 3
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/WordLoader.java
  37. 4 3
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/CharacterTextSplitter.java
  38. 3 2
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/CodeTextSplitter.java
  39. 1 1
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/MarkdownTextSplitter.java
  40. 1 1
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/TextSplitter.java
  41. 3 2
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/TokenTextSplitter.java
  42. 1 1
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/constant/FileType.java
  43. 19 9
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeAttach.java
  44. 15 8
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeFragment.java
  45. 18 14
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeInfo.java
  46. 66 0
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeAttachBo.java
  47. 66 0
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeFragmentBo.java
  48. 108 0
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeInfoBo.java
  49. 13 4
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeAttachVo.java
  50. 16 4
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeFragmentVo.java
  51. 23 6
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeInfoVo.java
  52. 6 5
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeAttachMapper.java
  53. 6 5
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeFragmentMapper.java
  54. 6 5
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeInfoMapper.java
  55. 1 1
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/EmbeddingService.java
  56. 7 12
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeAttachService.java
  57. 7 6
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeFragmentService.java
  58. 13 24
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeInfoService.java
  59. 2 2
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java
  60. 4 3
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorizationService.java
  61. 6 6
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/EmbeddingServiceImpl.java
  62. 14 35
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeAttachServiceImpl.java
  63. 14 14
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeFragmentServiceImpl.java
  64. 120 0
      ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeInfoServiceImpl.java
  65. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysCache.java
  66. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysConfig.java
  67. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDept.java
  68. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDictData.java
  69. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDictType.java
  70. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysLogininfor.java
  71. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysMenu.java
  72. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysNotice.java
  73. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysNoticeState.java
  74. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOperLog.java
  75. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOss.java
  76. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOssConfig.java
  77. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysPost.java
  78. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRole.java
  79. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRoleDept.java
  80. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRoleMenu.java
  81. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysTenant.java
  82. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysTenantPackage.java
  83. 0 1
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUser.java
  84. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserOnline.java
  85. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserPost.java
  86. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserRole.java
  87. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysConfigBo.java
  88. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDeptBo.java
  89. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDictDataBo.java
  90. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDictTypeBo.java
  91. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysLogininforBo.java
  92. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysMenuBo.java
  93. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysNoticeBo.java
  94. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysNoticeStateBo.java
  95. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOperLogBo.java
  96. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOssBo.java
  97. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOssConfigBo.java
  98. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysPostBo.java
  99. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysRoleBo.java
  100. 0 0
      ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysTenantBo.java

+ 6 - 18
pom.xml

@@ -244,18 +244,6 @@
                 <version>${tencent.sms.version}</version>
             </dependency>
 
-            <!--            <dependency>-->
-            <!--                <groupId>de.codecentric</groupId>-->
-            <!--                <artifactId>spring-boot-admin-starter-server</artifactId>-->
-            <!--                <version>${spring-boot-admin.version}</version>-->
-            <!--            </dependency>-->
-            <!--            <dependency>-->
-            <!--                <groupId>de.codecentric</groupId>-->
-            <!--                <artifactId>spring-boot-admin-starter-client</artifactId>-->
-            <!--                <version>${spring-boot-admin.version}</version>-->
-            <!--            </dependency>-->
-
-            <!--redisson-->
             <dependency>
                 <groupId>org.redisson</groupId>
                 <artifactId>redisson-spring-boot-starter</artifactId>
@@ -321,10 +309,15 @@
                 <version>${revision}</version>
             </dependency>
 
+            <dependency>
+                <groupId>org.ruoyi</groupId>
+                <artifactId>ruoyi-knowledge-api</artifactId>
+                <version>${revision}</version>
+            </dependency>
 
             <dependency>
                 <groupId>org.ruoyi</groupId>
-                <artifactId>ruoyi-knowledge</artifactId>
+                <artifactId>ruoyi-system-api</artifactId>
                 <version>${revision}</version>
             </dependency>
 
@@ -347,11 +340,6 @@
         <module>ruoyi-common</module>
         <module>ruoyi-modules</module>
         <module>ruoyi-modules-api</module>
-        <module>ruoyi-modules-api</module>
-        <module>ruoyi-modules-api/ruoyi-device-api</module>
-        <module>ruoyi-modules-api/ruoyi-weixin-api</module>
-        <module>ruoyi-modules/ruoyi-weixin</module>
-        <module>ruoyi-modules/ruoyi-device</module>
     </modules>
 
     <packaging>pom</packaging>

+ 1 - 3
ruoyi-common/ruoyi-common-bom/pom.xml

@@ -166,15 +166,12 @@
                 <version>${revision}</version>
             </dependency>
 
-            <!-- AI绘画 -->
             <dependency>
                 <groupId>org.ruoyi</groupId>
                 <artifactId>ruoyi-chat</artifactId>
                 <version>${revision}</version>
             </dependency>
 
-
-
             <!-- 支付模块 -->
             <dependency>
                 <groupId>org.ruoyi</groupId>
@@ -182,6 +179,7 @@
                 <version>${revision}</version>
             </dependency>
         </dependencies>
+
     </dependencyManagement>
 
 </project>

+ 0 - 4
ruoyi-common/ruoyi-common-chat/pom.xml

@@ -98,10 +98,6 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>cn.bigmodel.openapi</groupId>

+ 3 - 17
ruoyi-common/ruoyi-common-core/pom.xml

@@ -47,25 +47,11 @@
             <artifactId>jakarta.servlet-api</artifactId>
         </dependency>
 
+        <!-- hutool工具模块 -->
         <dependency>
             <groupId>cn.hutool</groupId>
-            <artifactId>hutool-core</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>cn.hutool</groupId>
-            <artifactId>hutool-http</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>cn.hutool</groupId>
-            <artifactId>hutool-extra</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>cn.hutool</groupId>
-            <artifactId>hutool-json</artifactId>
-            <scope>provided</scope>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.24</version>
         </dependency>
 
         <dependency>

+ 25 - 6
ruoyi-modules-api/pom.xml

@@ -12,9 +12,11 @@
     <artifactId>ruoyi-modules-api</artifactId>
     <packaging>pom</packaging>
     <modules>
-        <module>ruoyi-system-api</module>
         <module>ruoyi-chat-api</module>
+        <module>ruoyi-device-api</module>
         <module>ruoyi-knowledge-api</module>
+        <module>ruoyi-system-api</module>
+        <module>ruoyi-weixin-api</module>
     </modules>
 
     <properties>
@@ -24,38 +26,55 @@
     </properties>
 
     <dependencies>
-
         <!-- 系统核心模块 -->
         <dependency>
             <groupId>org.ruoyi</groupId>
             <artifactId>ruoyi-common-core</artifactId>
         </dependency>
 
-
         <!-- mybaits基础模块 -->
         <dependency>
             <groupId>org.ruoyi</groupId>
             <artifactId>ruoyi-common-mybatis</artifactId>
         </dependency>
 
-
         <!-- 脱敏模块 -->
         <dependency>
             <groupId>org.ruoyi</groupId>
             <artifactId>ruoyi-common-sensitive</artifactId>
         </dependency>
 
-
         <!-- excel模块-->
         <dependency>
             <groupId>org.ruoyi</groupId>
             <artifactId>ruoyi-common-excel</artifactId>
         </dependency>
 
+        <!-- 租户基础模块 -->
+        <dependency>
+            <groupId>org.ruoyi</groupId>
+            <artifactId>ruoyi-common-tenant</artifactId>
+        </dependency>
 
-    </dependencies>
+        <!-- 字段翻译基础模块 -->
+        <dependency>
+            <groupId>org.ruoyi</groupId>
+            <artifactId>ruoyi-common-translation</artifactId>
+        </dependency>
+
+        <!-- 系统日志模块 -->
+        <dependency>
+            <groupId>org.ruoyi</groupId>
+            <artifactId>ruoyi-common-log</artifactId>
+        </dependency>
 
+        <!-- 对象存储模块 -->
+        <dependency>
+            <groupId>org.ruoyi</groupId>
+            <artifactId>ruoyi-common-oss</artifactId>
+        </dependency>
 
 
+    </dependencies>
 
 </project>

+ 7 - 0
ruoyi-modules-api/ruoyi-chat-api/pom.xml

@@ -17,6 +17,13 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <!-- 聊天基础模块 -->
+    <dependencies>
+        <dependency>
+            <groupId>org.ruoyi</groupId>
+            <artifactId>ruoyi-common-chat</artifactId>
+        </dependency>
+    </dependencies>
 
 
 </project>

+ 0 - 2
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java

@@ -46,8 +46,6 @@ public class ChatMessage extends BaseEntity {
 
     /**
      * 扣除金额
-
-
      */
     private BigDecimal deductCost;
 

+ 14 - 14
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/WxRobConfig.java → ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatRobConfig.java

@@ -1,22 +1,22 @@
-package org.ruoyi.system.domain;
+package org.ruoyi.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.ruoyi.common.mybatis.core.domain.BaseEntity;
 
 import java.io.Serial;
 
 /**
- * 微信机器人对象 wx_rob_config
+ * 聊天机器人配置对象 chat_rob_config
  *
- * @author Lion Li
- * @date 2024-05-01
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
 @TableName("chat_rob_config")
-public class WxRobConfig extends BaseEntity {
+public class ChatRobConfig extends BaseEntity {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -28,7 +28,7 @@ public class WxRobConfig extends BaseEntity {
     private Long id;
 
     /**
-     * 用户id
+     * 所属用户
      */
     private Long userId;
 
@@ -42,11 +42,6 @@ public class WxRobConfig extends BaseEntity {
      */
     private String uniqueKey;
 
-    /**
-     * 备注(微信号)
-     */
-    private String remark;
-
     /**
      * 默认好友回复开关
      */
@@ -57,10 +52,15 @@ public class WxRobConfig extends BaseEntity {
      */
     private String defaultGroup;
 
-
     /**
-     * 机器启用1禁用0
+     * 机器人状态  0正常 1启用
      */
     private String enable;
 
+    /**
+     * 备注
+     */
+    private String remark;
+
+
 }

+ 51 - 0
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatUsageToken.java

@@ -0,0 +1,51 @@
+package org.ruoyi.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+
+import java.io.Serial;
+
+/**
+ * 用户token使用详情对象 chat_usage_token
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("chat_usage_token")
+public class ChatUsageToken extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 用户
+     */
+    private Long userId;
+
+    /**
+     * 待结算token
+     */
+    private Integer token;
+
+    /**
+     * 模型名称
+     */
+    private String modelName;
+
+    /**
+     * 累计使用token
+     */
+    private String totalToken;
+
+
+}

+ 72 - 0
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatRobConfigBo.java

@@ -0,0 +1,72 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.ChatRobConfig;
+import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 聊天机器人配置业务对象 chat_rob_config
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChatRobConfig.class, reverseConvertGenerate = false)
+public class ChatRobConfigBo extends BaseEntity {
+
+    /**
+     * 主键
+     */
+    @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 所属用户
+     */
+    @NotNull(message = "所属用户不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long userId;
+
+    /**
+     * 机器人名称
+     */
+    @NotBlank(message = "机器人名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String botName;
+
+    /**
+     * 机器唯一码
+     */
+    @NotBlank(message = "机器唯一码不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String uniqueKey;
+
+    /**
+     * 默认好友回复开关
+     */
+    @NotBlank(message = "默认好友回复开关不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String defaultFriend;
+
+    /**
+     * 默认群回复开关
+     */
+    @NotBlank(message = "默认群回复开关不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String defaultGroup;
+
+    /**
+     * 机器人状态  0正常 1启用
+     */
+    @NotBlank(message = "机器人状态  0正常 1启用不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String enable;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 54 - 0
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatUsageTokenBo.java

@@ -0,0 +1,54 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.ChatUsageToken;
+import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 用户token使用详情业务对象 chat_usage_token
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChatUsageToken.class, reverseConvertGenerate = false)
+public class ChatUsageTokenBo extends BaseEntity {
+
+    /**
+     * 主键
+     */
+    @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 用户
+     */
+    @NotNull(message = "用户不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long userId;
+
+    /**
+     * 待结算token
+     */
+    @NotNull(message = "待结算token不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer token;
+
+    /**
+     * 模型名称
+     */
+    @NotBlank(message = "模型名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String modelName;
+
+    /**
+     * 累计使用token
+     */
+    @NotBlank(message = "累计使用token不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String totalToken;
+
+
+}

+ 1 - 1
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java

@@ -2,7 +2,7 @@ package org.ruoyi.domain.bo;
 
 import org.ruoyi.common.core.validate.AddGroup;
 import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.system.domain.ChatVoucher;
+import org.ruoyi.domain.ChatVoucher;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/request/translation/TranslationRequest.java → ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/request/TranslationRequest.java

@@ -1,4 +1,4 @@
-package org.ruoyi.system.domain.request.translation;
+package org.ruoyi.domain.request;
 
 import lombok.Data;
 

+ 19 - 25
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/WxRobConfigVo.java → ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatRobConfigVo.java

@@ -1,10 +1,9 @@
-package org.ruoyi.system.domain.vo;
+package org.ruoyi.domain.vo;
 
+import org.ruoyi.domain.ChatRobConfig;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
-import org.ruoyi.common.excel.annotation.ExcelDictFormat;
-import org.ruoyi.common.excel.convert.ExcelDictConvert;
-import org.ruoyi.system.domain.WxRobConfig;
+
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 
@@ -14,15 +13,15 @@ import java.io.Serializable;
 
 
 /**
- * 微信机器人视图对象 wx_rob_config
+ * 聊天机器人配置视图对象 chat_rob_config
  *
- * @author Lion Li
- * @date 2024-05-01
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
-@AutoMapper(target = WxRobConfig.class)
-public class WxRobConfigVo implements Serializable {
+@AutoMapper(target = ChatRobConfig.class)
+public class ChatRobConfigVo implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -34,18 +33,15 @@ public class WxRobConfigVo implements Serializable {
     private Long id;
 
     /**
-     * 用户id
+     * 所属用户
      */
+    @ExcelProperty(value = "所属用户")
     private Long userId;
 
-    /**
-     * 用户名称
-     */
-    private String userName;
-
     /**
      * 机器人名称
      */
+    @ExcelProperty(value = "机器人名称")
     private String botName;
 
     /**
@@ -54,13 +50,6 @@ public class WxRobConfigVo implements Serializable {
     @ExcelProperty(value = "机器唯一码")
     private String uniqueKey;
 
-    /**
-     * 备注
-     */
-    @ExcelProperty(value = "备注", converter = ExcelDictConvert.class)
-    @ExcelDictFormat(readConverterExp = "备注")
-    private String remark;
-
     /**
      * 默认好友回复开关
      */
@@ -73,12 +62,17 @@ public class WxRobConfigVo implements Serializable {
     @ExcelProperty(value = "默认群回复开关")
     private String defaultGroup;
 
-
     /**
-     * 机器启用1禁用0
+     * 机器人状态  0正常 1启用
      */
-    @ExcelProperty(value = "机器启用1禁用0")
+    @ExcelProperty(value = "机器人状态  0正常 1启用")
     private String enable;
 
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
 
 }

+ 61 - 0
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatUsageTokenVo.java

@@ -0,0 +1,61 @@
+package org.ruoyi.domain.vo;
+
+import org.ruoyi.domain.ChatUsageToken;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+
+
+/**
+ * 用户token使用详情视图对象 chat_usage_token
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ChatUsageToken.class)
+public class ChatUsageTokenVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @ExcelProperty(value = "主键")
+    private Long id;
+
+    /**
+     * 用户
+     */
+    @ExcelProperty(value = "用户")
+    private Long userId;
+
+    /**
+     * 待结算token
+     */
+    @ExcelProperty(value = "待结算token")
+    private Integer token;
+
+    /**
+     * 模型名称
+     */
+    @ExcelProperty(value = "模型名称")
+    private String modelName;
+
+    /**
+     * 累计使用token
+     */
+    @ExcelProperty(value = "累计使用token")
+    private String totalToken;
+
+
+}

+ 2 - 1
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java

@@ -1,12 +1,13 @@
 package org.ruoyi.domain.vo;
 
 import java.math.BigDecimal;
-import org.ruoyi.system.domain.ChatVoucher;
+
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
+import org.ruoyi.domain.ChatVoucher;
 
 import java.io.Serial;
 import java.io.Serializable;

+ 16 - 0
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatRobConfigMapper.java

@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatRobConfig;
+import org.ruoyi.domain.vo.ChatRobConfigVo;
+
+/**
+ * 聊天机器人配置Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatRobConfigMapper extends BaseMapperPlus<ChatRobConfig, ChatRobConfigVo> {
+
+}

+ 16 - 0
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatUsageTokenMapper.java

@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatUsageToken;
+import org.ruoyi.domain.vo.ChatUsageTokenVo;
+
+/**
+ * 用户token使用详情Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatUsageTokenMapper extends BaseMapperPlus<ChatUsageToken, ChatUsageTokenVo> {
+
+}

+ 6 - 0
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatModelService.java

@@ -46,4 +46,10 @@ public interface IChatModelService {
      * 校验并批量删除聊天模型信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+
+    /**
+     * 通过模型名称获取模型信息
+     */
+    ChatModelVo selectModelByName(String modelName);
 }

+ 5 - 2
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatTokenService.java

@@ -5,8 +5,8 @@ import org.ruoyi.domain.ChatToken;
 /**
  * 聊天消息Service接口
  *
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IChatTokenService {
 
@@ -20,6 +20,9 @@ public interface IChatTokenService {
      */
     void resetToken(Long userId,String modelName);
 
+    /**
+     * 修改用户token
+     */
     void editToken(ChatToken chatToken);
 
 }

+ 49 - 0
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatUsageTokenService.java

@@ -0,0 +1,49 @@
+package org.ruoyi.service;
+
+
+import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
+import org.ruoyi.domain.bo.ChatUsageTokenBo;
+import org.ruoyi.domain.vo.ChatUsageTokenVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户token使用详情Service接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatUsageTokenService {
+
+    /**
+     * 查询用户token使用详情
+     */
+    ChatUsageTokenVo queryById(Long id);
+
+    /**
+     * 查询用户token使用详情列表
+     */
+    TableDataInfo<ChatUsageTokenVo> queryPageList(ChatUsageTokenBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询用户token使用详情列表
+     */
+    List<ChatUsageTokenVo> queryList(ChatUsageTokenBo bo);
+
+    /**
+     * 新增用户token使用详情
+     */
+    Boolean insertByBo(ChatUsageTokenBo bo);
+
+    /**
+     * 修改用户token使用详情
+     */
+    Boolean updateByBo(ChatUsageTokenBo bo);
+
+    /**
+     * 校验并批量删除用户token使用详情信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 2 - 2
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVisitorUsageService.java

@@ -11,8 +11,8 @@ import java.util.List;
 /**
  * 访客管理Service接口
  *
- * @author Lion Li
- * @date 2024-07-14
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IChatVisitorUsageService {
 

+ 8 - 0
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatModelServiceImpl.java

@@ -115,4 +115,12 @@ public class ChatModelServiceImpl implements IChatModelService {
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
+
+    /**
+     * 通过模型名称获取模型信息
+     */
+    @Override
+    public ChatModelVo selectModelByName(String modelName) {
+       return baseMapper.selectVoOne(Wrappers.<ChatModel>lambdaQuery().eq(ChatModel::getModelName, modelName));
+    }
 }

+ 112 - 0
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatUsageTokenServiceImpl.java

@@ -0,0 +1,112 @@
+package org.ruoyi.service.impl;
+
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.ChatUsageToken;
+import org.ruoyi.domain.bo.ChatUsageTokenBo;
+import org.ruoyi.domain.vo.ChatUsageTokenVo;
+import org.ruoyi.mapper.ChatUsageTokenMapper;
+import org.ruoyi.service.IChatUsageTokenService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 用户token使用详情Service业务层处理
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatUsageTokenServiceImpl implements IChatUsageTokenService {
+
+    private final ChatUsageTokenMapper baseMapper;
+
+    /**
+     * 查询用户token使用详情
+     */
+    @Override
+    public ChatUsageTokenVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询用户token使用详情列表
+     */
+    @Override
+    public TableDataInfo<ChatUsageTokenVo> queryPageList(ChatUsageTokenBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatUsageToken> lqw = buildQueryWrapper(bo);
+        Page<ChatUsageTokenVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询用户token使用详情列表
+     */
+    @Override
+    public List<ChatUsageTokenVo> queryList(ChatUsageTokenBo bo) {
+        LambdaQueryWrapper<ChatUsageToken> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatUsageToken> buildQueryWrapper(ChatUsageTokenBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatUsageToken> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, ChatUsageToken::getUserId, bo.getUserId());
+        lqw.eq(bo.getToken() != null, ChatUsageToken::getToken, bo.getToken());
+        lqw.like(StringUtils.isNotBlank(bo.getModelName()), ChatUsageToken::getModelName, bo.getModelName());
+        lqw.eq(StringUtils.isNotBlank(bo.getTotalToken()), ChatUsageToken::getTotalToken, bo.getTotalToken());
+        return lqw;
+    }
+
+    /**
+     * 新增用户token使用详情
+     */
+    @Override
+    public Boolean insertByBo(ChatUsageTokenBo bo) {
+        ChatUsageToken add = MapstructUtils.convert(bo, ChatUsageToken.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改用户token使用详情
+     */
+    @Override
+    public Boolean updateByBo(ChatUsageTokenBo bo) {
+        ChatUsageToken update = MapstructUtils.convert(bo, ChatUsageToken.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ChatUsageToken entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除用户token使用详情
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 31 - 0
ruoyi-modules-api/ruoyi-knowledge-api/pom.xml

@@ -17,4 +17,35 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <dependencies>
+
+        <!-- pdf解析器 -->
+        <dependency>
+            <groupId>org.apache.pdfbox</groupId>
+            <artifactId>pdfbox</artifactId>
+            <version>2.0.27</version>
+        </dependency>
+
+        <!-- ollama java sdk -->
+        <dependency>
+            <groupId>io.github.ollama4j</groupId>
+            <artifactId>ollama4j</artifactId>
+            <version>1.0.79</version>
+        </dependency>
+
+        <!-- milvus java sdk -->
+        <dependency>
+            <groupId>io.milvus</groupId>
+            <artifactId>milvus-sdk-java</artifactId>
+            <version>2.3.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.weaviate</groupId>
+            <artifactId>client</artifactId>
+            <version>4.0.0</version>
+        </dependency>
+
+    </dependencies>
+
 </project>

+ 3 - 3
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CodeFileLoader.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/CodeFileLoader.java

@@ -1,8 +1,8 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.ruoyi.knowledge.chain.split.TextSplitter;
+import org.ruoyi.chain.split.TextSplitter;
 import org.springframework.stereotype.Component;
 
 import java.io.BufferedReader;
@@ -14,7 +14,7 @@ import java.util.List;
 @Component
 @AllArgsConstructor
 @Slf4j
-public class CodeFileLoader implements ResourceLoader{
+public class CodeFileLoader implements ResourceLoader {
     private final TextSplitter textSplitter;
     @Override
     public String getContent(InputStream inputStream) {

+ 4 - 2
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/CsvFileLoader.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/CsvFileLoader.java

@@ -1,9 +1,11 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
+
+import org.ruoyi.chain.loader.ResourceLoader;
 
 import java.io.InputStream;
 import java.util.List;
 
-public class CsvFileLoader implements ResourceLoader{
+public class CsvFileLoader implements ResourceLoader {
     @Override
     public String getContent(InputStream inputStream) {
         return null;

+ 1 - 1
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/FolderLoader.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/FolderLoader.java

@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
 
 import java.io.InputStream;
 import java.util.List;

+ 4 - 2
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/GithubLoader.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/GithubLoader.java

@@ -1,9 +1,11 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
+
+import org.ruoyi.chain.loader.ResourceLoader;
 
 import java.io.InputStream;
 import java.util.List;
 
-public class GithubLoader implements ResourceLoader{
+public class GithubLoader implements ResourceLoader {
     @Override
     public String getContent(InputStream inputStream) {
         return null;

+ 4 - 2
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/JsonFileLoader.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/JsonFileLoader.java

@@ -1,9 +1,11 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
+
+import org.ruoyi.chain.loader.ResourceLoader;
 
 import java.io.InputStream;
 import java.util.List;
 
-public class JsonFileLoader implements ResourceLoader{
+public class JsonFileLoader implements ResourceLoader {
     @Override
     public String getContent(InputStream inputStream) {
         return null;

+ 4 - 3
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/MarkDownFileLoader.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/MarkDownFileLoader.java

@@ -1,8 +1,9 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.ruoyi.knowledge.chain.split.TextSplitter;
+import org.ruoyi.chain.loader.ResourceLoader;
+import org.ruoyi.chain.split.TextSplitter;
 import org.springframework.stereotype.Component;
 
 import java.io.BufferedReader;
@@ -14,7 +15,7 @@ import java.util.List;
 @Component
 @AllArgsConstructor
 @Slf4j
-public class MarkDownFileLoader implements ResourceLoader{
+public class MarkDownFileLoader implements ResourceLoader {
     private final TextSplitter textSplitter;
     @Override
     public String getContent(InputStream inputStream) {

+ 4 - 3
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/PdfFileLoader.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/PdfFileLoader.java

@@ -1,9 +1,10 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
 
 import lombok.AllArgsConstructor;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.text.PDFTextStripper;
-import org.ruoyi.knowledge.chain.split.TextSplitter;
+import org.ruoyi.chain.loader.ResourceLoader;
+import org.ruoyi.chain.split.TextSplitter;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
@@ -12,7 +13,7 @@ import java.util.List;
 
 @Component
 @AllArgsConstructor
-public class PdfFileLoader implements ResourceLoader{
+public class PdfFileLoader implements ResourceLoader {
     private final TextSplitter characterTextSplitter;
     @Override
     public String getContent(InputStream inputStream) {

+ 1 - 1
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoader.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoader.java

@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
 
 import java.io.InputStream;
 import java.util.List;

+ 7 - 5
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/ResourceLoaderFactory.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ResourceLoaderFactory.java

@@ -1,10 +1,12 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
 
 import lombok.AllArgsConstructor;
-import org.ruoyi.knowledge.chain.split.CharacterTextSplitter;
-import org.ruoyi.knowledge.chain.split.CodeTextSplitter;
-import org.ruoyi.knowledge.chain.split.MarkdownTextSplitter;
-import org.ruoyi.knowledge.chain.split.TokenTextSplitter;
+import org.ruoyi.chain.loader.ResourceLoader;
+import org.ruoyi.chain.loader.TextFileLoader;
+import org.ruoyi.chain.split.CharacterTextSplitter;
+import org.ruoyi.chain.split.CodeTextSplitter;
+import org.ruoyi.chain.split.MarkdownTextSplitter;
+import org.ruoyi.chain.split.TokenTextSplitter;
 import org.ruoyi.knowledge.constant.FileType;
 import org.springframework.stereotype.Component;
 

+ 2 - 2
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/TextFileLoader.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/TextFileLoader.java

@@ -1,8 +1,8 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.ruoyi.knowledge.chain.split.TextSplitter;
+import org.ruoyi.chain.split.TextSplitter;
 import org.springframework.stereotype.Component;
 
 import java.io.BufferedReader;

+ 4 - 3
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/loader/WordLoader.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/WordLoader.java

@@ -1,10 +1,11 @@
-package org.ruoyi.knowledge.chain.loader;
+package org.ruoyi.chain.loader;
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
-import org.ruoyi.knowledge.chain.split.TextSplitter;
+import org.ruoyi.chain.loader.ResourceLoader;
+import org.ruoyi.chain.split.TextSplitter;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
@@ -14,7 +15,7 @@ import java.util.List;
 @Component
 @AllArgsConstructor
 @Slf4j
-public class WordLoader implements ResourceLoader{
+public class WordLoader implements ResourceLoader {
     private final TextSplitter textSplitter;
     @Override
     public String getContent(InputStream inputStream) {

+ 4 - 3
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CharacterTextSplitter.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/CharacterTextSplitter.java

@@ -1,10 +1,11 @@
-package org.ruoyi.knowledge.chain.split;
+package org.ruoyi.chain.split;
 
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
-import org.ruoyi.knowledge.service.IKnowledgeInfoService;
+import org.ruoyi.chain.split.TextSplitter;
+import org.ruoyi.domain.vo.KnowledgeInfoVo;
+import org.ruoyi.service.IKnowledgeInfoService;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Component;

+ 3 - 2
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/CodeTextSplitter.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/CodeTextSplitter.java

@@ -1,7 +1,8 @@
-package org.ruoyi.knowledge.chain.split;
+package org.ruoyi.chain.split;
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.chain.split.TextSplitter;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -9,7 +10,7 @@ import java.util.List;
 @Component
 @AllArgsConstructor
 @Slf4j
-public class CodeTextSplitter implements TextSplitter{
+public class CodeTextSplitter implements TextSplitter {
     @Override
     public List<String> split(String content, String kid) {
         return null;

+ 1 - 1
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/MarkdownTextSplitter.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/MarkdownTextSplitter.java

@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.chain.split;
+package org.ruoyi.chain.split;
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TextSplitter.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/TextSplitter.java

@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.chain.split;
+package org.ruoyi.chain.split;
 
 import java.util.List;
 

+ 3 - 2
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/split/TokenTextSplitter.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/split/TokenTextSplitter.java

@@ -1,7 +1,8 @@
-package org.ruoyi.knowledge.chain.split;
+package org.ruoyi.chain.split;
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.chain.split.TextSplitter;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -9,7 +10,7 @@ import java.util.List;
 @Component
 @AllArgsConstructor
 @Slf4j
-public class TokenTextSplitter implements TextSplitter{
+public class TokenTextSplitter implements TextSplitter {
     @Override
     public List<String> split(String content, String kid) {
         return null;

+ 1 - 1
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/constant/FileType.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/constant/FileType.java

@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.constant;
+package org.ruoyi.constant;
 
 public class FileType {
     public static final String TXT = "txt";

+ 19 - 9
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeAttach.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeAttach.java

@@ -1,25 +1,29 @@
-package org.ruoyi.knowledge.domain;
+package org.ruoyi.domain;
 
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
 
-import java.io.Serializable;
-import java.util.Date;
+import java.io.Serial;
 
 /**
  * 知识库附件对象 knowledge_attach
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
-
+@EqualsAndHashCode(callSuper = true)
 @TableName("knowledge_attach")
-public class KnowledgeAttach  extends BaseEntity {
+public class KnowledgeAttach extends BaseEntity {
 
+    @Serial
+    private static final long serialVersionUID = 1L;
 
+    /**
+     *
+     */
     @TableId(value = "id")
     private Long id;
 
@@ -48,4 +52,10 @@ public class KnowledgeAttach  extends BaseEntity {
      */
     private String content;
 
+    /**
+     * 备注
+     */
+    private String remark;
+
+
 }

+ 15 - 8
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeFragment.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeFragment.java

@@ -1,27 +1,29 @@
-package org.ruoyi.knowledge.domain;
+package org.ruoyi.domain;
 
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
 
 import java.io.Serial;
-import java.io.Serializable;
-import java.util.Date;
 
 /**
  * 知识片段对象 knowledge_fragment
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 @TableName("knowledge_fragment")
 public class KnowledgeFragment extends BaseEntity {
 
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     *
+     */
     @TableId(value = "id")
     private Long id;
 
@@ -43,12 +45,17 @@ public class KnowledgeFragment extends BaseEntity {
     /**
      * 片段索引下标
      */
-    private Integer idx;
+    private Long idx;
 
     /**
      * 文档内容
      */
     private String content;
 
+    /**
+     * 备注
+     */
+    private String remark;
+
 
 }

+ 18 - 14
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/KnowledgeInfo.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/KnowledgeInfo.java

@@ -1,25 +1,22 @@
-package org.ruoyi.knowledge.domain;
+package org.ruoyi.domain;
 
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import jakarta.validation.constraints.NotBlank;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
 
 import java.io.Serial;
-import java.io.Serializable;
-import java.util.Date;
-
 
 /**
  * 知识库对象 knowledge_info
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
+@EqualsAndHashCode(callSuper = true)
 @TableName("knowledge_info")
-public class KnowledgeInfo  extends BaseEntity {
+public class KnowledgeInfo extends BaseEntity {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -48,7 +45,7 @@ public class KnowledgeInfo  extends BaseEntity {
     /**
      * 是否公开知识库(0 否 1是)
      */
-    private String share;
+    private Integer share;
 
     /**
      * 描述
@@ -68,17 +65,17 @@ public class KnowledgeInfo  extends BaseEntity {
     /**
      * 重叠字符数
      */
-    private Integer overlapChar;
+    private Long overlapChar;
 
     /**
      * 知识库中检索的条数
      */
-    private Integer retrieveLimit;
+    private Long retrieveLimit;
 
     /**
      * 文本块大小
      */
-    private Integer textBlockSize;
+    private Long textBlockSize;
 
     /**
      * 向量库
@@ -89,4 +86,11 @@ public class KnowledgeInfo  extends BaseEntity {
      * 向量模型
      */
     private String vectorModel;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
 }

+ 66 - 0
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeAttachBo.java

@@ -0,0 +1,66 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.KnowledgeAttach;
+import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 知识库附件业务对象 knowledge_attach
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KnowledgeAttach.class, reverseConvertGenerate = false)
+public class KnowledgeAttachBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 知识库ID
+     */
+    @NotBlank(message = "知识库ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String kid;
+
+    /**
+     * 文档ID
+     */
+    @NotBlank(message = "文档ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String docId;
+
+    /**
+     * 文档名称
+     */
+    @NotBlank(message = "文档名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String docName;
+
+    /**
+     * 文档类型
+     */
+    @NotBlank(message = "文档类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String docType;
+
+    /**
+     * 文档内容
+     */
+    @NotBlank(message = "文档内容不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String content;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 66 - 0
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeFragmentBo.java

@@ -0,0 +1,66 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.KnowledgeFragment;
+import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 知识片段业务对象 knowledge_fragment
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KnowledgeFragment.class, reverseConvertGenerate = false)
+public class KnowledgeFragmentBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 知识库ID
+     */
+    @NotBlank(message = "知识库ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String kid;
+
+    /**
+     * 文档ID
+     */
+    @NotBlank(message = "文档ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String docId;
+
+    /**
+     * 知识片段ID
+     */
+    @NotBlank(message = "知识片段ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String fid;
+
+    /**
+     * 片段索引下标
+     */
+    @NotNull(message = "片段索引下标不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long idx;
+
+    /**
+     * 文档内容
+     */
+    @NotBlank(message = "文档内容不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String content;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 108 - 0
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/KnowledgeInfoBo.java

@@ -0,0 +1,108 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.domain.KnowledgeInfo;
+import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 知识库业务对象 knowledge_info
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KnowledgeInfo.class, reverseConvertGenerate = false)
+public class KnowledgeInfoBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 知识库ID
+     */
+    @NotBlank(message = "知识库ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String kid;
+
+    /**
+     * 用户ID
+     */
+    @NotNull(message = "用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long uid;
+
+    /**
+     * 知识库名称
+     */
+    @NotBlank(message = "知识库名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String kname;
+
+    /**
+     * 是否公开知识库(0 否 1是)
+     */
+    @NotNull(message = "是否公开知识库(0 否 1是)不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer share;
+
+    /**
+     * 描述
+     */
+    @NotBlank(message = "描述不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String description;
+
+    /**
+     * 知识分隔符
+     */
+    @NotBlank(message = "知识分隔符不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String knowledgeSeparator;
+
+    /**
+     * 提问分隔符
+     */
+    @NotBlank(message = "提问分隔符不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String questionSeparator;
+
+    /**
+     * 重叠字符数
+     */
+    @NotNull(message = "重叠字符数不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long overlapChar;
+
+    /**
+     * 知识库中检索的条数
+     */
+    @NotNull(message = "知识库中检索的条数不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long retrieveLimit;
+
+    /**
+     * 文本块大小
+     */
+    @NotNull(message = "文本块大小不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long textBlockSize;
+
+    /**
+     * 向量库
+     */
+    @NotBlank(message = "向量库不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String vector;
+
+    /**
+     * 向量模型
+     */
+    @NotBlank(message = "向量模型不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String vectorModel;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 13 - 4
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeAttachVo.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeAttachVo.java

@@ -1,19 +1,22 @@
-package org.ruoyi.knowledge.domain.vo;
+package org.ruoyi.domain.vo;
 
+import org.ruoyi.domain.KnowledgeAttach;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
-import org.ruoyi.knowledge.domain.KnowledgeAttach;
 
 import java.io.Serial;
 import java.io.Serializable;
 
+
+
+
 /**
  * 知识库附件视图对象 knowledge_attach
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
@@ -59,5 +62,11 @@ public class KnowledgeAttachVo implements Serializable {
     @ExcelProperty(value = "文档内容")
     private String content;
 
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
 
 }

+ 16 - 4
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeFragmentVo.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeFragmentVo.java

@@ -1,19 +1,24 @@
-package org.ruoyi.knowledge.domain.vo;
+package org.ruoyi.domain.vo;
+
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
-import org.ruoyi.knowledge.domain.KnowledgeFragment;
+import org.ruoyi.domain.KnowledgeFragment;
 
 import java.io.Serial;
 import java.io.Serializable;
 
+
+
+
 /**
  * 知识片段视图对象 knowledge_fragment
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
@@ -59,4 +64,11 @@ public class KnowledgeFragmentVo implements Serializable {
     @ExcelProperty(value = "文档内容")
     private String content;
 
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
 }

+ 23 - 6
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/domain/vo/KnowledgeInfoVo.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/vo/KnowledgeInfoVo.java

@@ -1,19 +1,26 @@
-package org.ruoyi.knowledge.domain.vo;
+package org.ruoyi.domain.vo;
+
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
-import org.ruoyi.knowledge.domain.KnowledgeInfo;
+import org.ruoyi.common.excel.annotation.ExcelDictFormat;
+import org.ruoyi.common.excel.convert.ExcelDictConvert;
+import org.ruoyi.domain.KnowledgeInfo;
 
 import java.io.Serial;
 import java.io.Serializable;
 
+
+
+
 /**
  * 知识库视图对象 knowledge_info
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
@@ -48,9 +55,11 @@ public class KnowledgeInfoVo implements Serializable {
     private String kname;
 
     /**
-     * 知识库名称
+     * 是否公开知识库(0 否 1是)
      */
-    private String share;
+    @ExcelProperty(value = "是否公开知识库", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(readConverterExp = "0=,否=,1=是")
+    private Integer share;
 
     /**
      * 描述
@@ -99,4 +108,12 @@ public class KnowledgeInfoVo implements Serializable {
      */
     @ExcelProperty(value = "向量模型")
     private String vectorModel;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
 }

+ 6 - 5
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/mapper/KnowledgeAttachMapper.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeAttachMapper.java

@@ -1,14 +1,15 @@
-package org.ruoyi.knowledge.mapper;
+package org.ruoyi.mapper;
 
+
+import org.ruoyi.domain.KnowledgeAttach;
+import org.ruoyi.domain.vo.KnowledgeAttachVo;
 import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
-import org.ruoyi.knowledge.domain.KnowledgeAttach;
-import org.ruoyi.knowledge.domain.vo.KnowledgeAttachVo;
 
 /**
  * 知识库附件Mapper接口
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface KnowledgeAttachMapper extends BaseMapperPlus<KnowledgeAttach, KnowledgeAttachVo> {
 

+ 6 - 5
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/mapper/KnowledgeFragmentMapper.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeFragmentMapper.java

@@ -1,14 +1,15 @@
-package org.ruoyi.knowledge.mapper;
+package org.ruoyi.mapper;
 
+
+import org.ruoyi.domain.KnowledgeFragment;
+import org.ruoyi.domain.vo.KnowledgeFragmentVo;
 import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
-import org.ruoyi.knowledge.domain.KnowledgeFragment;
-import org.ruoyi.knowledge.domain.vo.KnowledgeFragmentVo;
 
 /**
  * 知识片段Mapper接口
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface KnowledgeFragmentMapper extends BaseMapperPlus<KnowledgeFragment, KnowledgeFragmentVo> {
 

+ 6 - 5
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/mapper/KnowledgeInfoMapper.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/mapper/KnowledgeInfoMapper.java

@@ -1,14 +1,15 @@
-package org.ruoyi.knowledge.mapper;
+package org.ruoyi.mapper;
 
+
+import org.ruoyi.domain.KnowledgeInfo;
+import org.ruoyi.domain.vo.KnowledgeInfoVo;
 import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
-import org.ruoyi.knowledge.domain.KnowledgeInfo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
 
 /**
  * 知识库Mapper接口
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface KnowledgeInfoMapper extends BaseMapperPlus<KnowledgeInfo, KnowledgeInfoVo> {
 

+ 1 - 1
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/EmbeddingService.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/EmbeddingService.java

@@ -1,4 +1,4 @@
-package org.ruoyi.knowledge.service;
+package org.ruoyi.service;
 
 import java.util.List;
 

+ 7 - 12
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeAttachService.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeAttachService.java

@@ -1,9 +1,10 @@
-package org.ruoyi.knowledge.service;
+package org.ruoyi.service;
 
-import org.ruoyi.common.mybatis.core.page.PageQuery;
+
+import org.ruoyi.domain.bo.KnowledgeAttachBo;
+import org.ruoyi.domain.vo.KnowledgeAttachVo;
 import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.knowledge.domain.bo.KnowledgeAttachBo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeAttachVo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
 
 import java.util.Collection;
 import java.util.List;
@@ -11,8 +12,8 @@ import java.util.List;
 /**
  * 知识库附件Service接口
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IKnowledgeAttachService {
 
@@ -45,10 +46,4 @@ public interface IKnowledgeAttachService {
      * 校验并批量删除知识库附件信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
-
-
-    /**
-     * 删除知识附件
-     */
-    void removeKnowledgeAttach(String docId);
 }

+ 7 - 6
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeFragmentService.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeFragmentService.java

@@ -1,9 +1,10 @@
-package org.ruoyi.knowledge.service;
+package org.ruoyi.service;
+
 
-import org.ruoyi.common.mybatis.core.page.PageQuery;
 import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.knowledge.domain.bo.KnowledgeFragmentBo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeFragmentVo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
+import org.ruoyi.domain.bo.KnowledgeFragmentBo;
+import org.ruoyi.domain.vo.KnowledgeFragmentVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -11,8 +12,8 @@ import java.util.List;
 /**
  * 知识片段Service接口
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IKnowledgeFragmentService {
 

+ 13 - 24
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/IKnowledgeInfoService.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/IKnowledgeInfoService.java

@@ -1,18 +1,19 @@
-package org.ruoyi.knowledge.service;
+package org.ruoyi.service;
 
-import org.ruoyi.common.mybatis.core.page.PageQuery;
+
+import org.ruoyi.domain.bo.KnowledgeInfoBo;
+import org.ruoyi.domain.vo.KnowledgeInfoVo;
 import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.knowledge.domain.bo.KnowledgeInfoBo;
-import org.ruoyi.knowledge.domain.req.KnowledgeInfoUploadRequest;
-import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
 
+import java.util.Collection;
 import java.util.List;
 
 /**
  * 知识库Service接口
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IKnowledgeInfoService {
 
@@ -31,30 +32,18 @@ public interface IKnowledgeInfoService {
      */
     List<KnowledgeInfoVo> queryList(KnowledgeInfoBo bo);
 
-
-    /**
-     * 修改知识库
-     */
-    Boolean updateByBo(KnowledgeInfoBo bo);
-
     /**
      * 新增知识库
      */
-    void saveOne(KnowledgeInfoBo bo);
+    Boolean insertByBo(KnowledgeInfoBo bo);
 
     /**
-     * 上传附件
-     */
-    void upload(KnowledgeInfoUploadRequest request);
-
-    /**
-     * 删除知识库
+     * 修改知识库
      */
-    void removeKnowledge(String id);
+    Boolean updateByBo(KnowledgeInfoBo bo);
 
     /**
-     * 检查是否有删除权限
-     * @param knowledgeInfoList 知识列表
+     * 校验并批量删除知识库信息
      */
-    void check(List<KnowledgeInfoVo> knowledgeInfoList);
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 }

+ 2 - 2
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorstore/VectorStore.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorStoreService.java

@@ -1,11 +1,11 @@
-package org.ruoyi.knowledge.chain.vectorstore;
+package org.ruoyi.service;
 
 import java.util.List;
 
 /**
  * 向量存储
  */
-public interface VectorStore {
+public interface VectorStoreService {
 
     void storeEmbeddings(List<String> chunkList, List<List<Double>> vectorList, String kid, String docId, List<String> fidList);
 

+ 4 - 3
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/Vectorization.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/VectorizationService.java

@@ -1,11 +1,12 @@
-package org.ruoyi.knowledge.chain.vectorizer;
+package org.ruoyi.service;
 
 import java.util.List;
 
 /**
- * 向量化
+ * 文本向量化
  */
-public interface Vectorization {
+public interface VectorizationService {
+
     List<List<Double>> batchVectorization(List<String> chunkList, String kid);
 
     List<Double> singleVectorization(String chunk, String kid);

+ 6 - 6
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/EmbeddingServiceImpl.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/EmbeddingServiceImpl.java

@@ -1,9 +1,9 @@
-package org.ruoyi.knowledge.service.impl;
+package org.ruoyi.service.impl;
 
 import lombok.AllArgsConstructor;
-import org.ruoyi.knowledge.chain.vectorizer.Vectorization;
-import org.ruoyi.knowledge.chain.vectorstore.VectorStore;
-import org.ruoyi.knowledge.service.EmbeddingService;
+import org.ruoyi.service.EmbeddingService;
+import org.ruoyi.service.VectorStoreService;
+import org.ruoyi.service.VectorizationService;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -13,8 +13,8 @@ import java.util.List;
 @AllArgsConstructor
 public class EmbeddingServiceImpl implements EmbeddingService {
 
-    private final VectorStore vectorStore;
-    private final Vectorization vectorization;
+    private final VectorStoreService vectorStore;
+    private final VectorizationService vectorization;
 
     /**
      * 保存向量数据库

+ 14 - 35
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeAttachServiceImpl.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeAttachServiceImpl.java

@@ -1,36 +1,30 @@
-package org.ruoyi.knowledge.service.impl;
+package org.ruoyi.service.impl;
 
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
-import org.ruoyi.common.core.domain.model.LoginUser;
-import org.ruoyi.common.core.utils.MapstructUtils;
-import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.common.satoken.utils.LoginHelper;
-import org.ruoyi.knowledge.domain.KnowledgeAttach;
-import org.ruoyi.knowledge.domain.bo.KnowledgeAttachBo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeAttachVo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
-import org.ruoyi.knowledge.mapper.KnowledgeAttachMapper;
-import org.ruoyi.knowledge.mapper.KnowledgeFragmentMapper;
-import org.ruoyi.knowledge.mapper.KnowledgeInfoMapper;
-import org.ruoyi.knowledge.service.IKnowledgeAttachService;
-import org.ruoyi.knowledge.service.IKnowledgeInfoService;
+import org.ruoyi.domain.vo.KnowledgeAttachVo;
 import org.springframework.stereotype.Service;
+import org.ruoyi.domain.bo.KnowledgeAttachBo;
+
+import org.ruoyi.domain.KnowledgeAttach;
+import org.ruoyi.mapper.KnowledgeAttachMapper;
+import org.ruoyi.service.IKnowledgeAttachService;
 
-import java.util.Collection;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Collection;
 
 /**
  * 知识库附件Service业务层处理
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 @RequiredArgsConstructor
 @Service
@@ -38,13 +32,6 @@ public class KnowledgeAttachServiceImpl implements IKnowledgeAttachService {
 
     private final KnowledgeAttachMapper baseMapper;
 
-    private final KnowledgeFragmentMapper fragmentMapper;
-
-    private final KnowledgeInfoMapper knowledgeInfoMapper;
-
-    private final IKnowledgeInfoService knowledgeInfoService;
-
-
     /**
      * 查询知识库附件
      */
@@ -124,12 +111,4 @@ public class KnowledgeAttachServiceImpl implements IKnowledgeAttachService {
         }
         return baseMapper.deleteBatchIds(ids) > 0;
     }
-
-    @Override
-    public void removeKnowledgeAttach(String docId) {
-        Map<String,Object> map = new HashMap<>();
-        map.put("doc_id",docId);
-        baseMapper.deleteByMap(map);
-        fragmentMapper.deleteByMap(map);
-    }
 }

+ 14 - 14
ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/service/impl/KnowledgeFragmentServiceImpl.java → ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeFragmentServiceImpl.java

@@ -1,28 +1,29 @@
-package org.ruoyi.knowledge.service.impl;
+package org.ruoyi.service.impl;
 
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
-import org.ruoyi.common.core.utils.MapstructUtils;
-import org.ruoyi.common.core.utils.StringUtils;
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.knowledge.domain.KnowledgeFragment;
-import org.ruoyi.knowledge.domain.bo.KnowledgeFragmentBo;
-import org.ruoyi.knowledge.domain.vo.KnowledgeFragmentVo;
-import org.ruoyi.knowledge.mapper.KnowledgeFragmentMapper;
-import org.ruoyi.knowledge.service.IKnowledgeFragmentService;
+import org.ruoyi.domain.vo.KnowledgeFragmentVo;
 import org.springframework.stereotype.Service;
+import org.ruoyi.domain.bo.KnowledgeFragmentBo;
+import org.ruoyi.domain.KnowledgeFragment;
+import org.ruoyi.mapper.KnowledgeFragmentMapper;
+import org.ruoyi.service.IKnowledgeFragmentService;
 
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Collection;
+
 /**
  * 知识片段Service业务层处理
  *
- * @author Lion Li
- * @date 2024-10-21
+ * @author ageerle
+ * @date 2025-04-08
  */
 @RequiredArgsConstructor
 @Service
@@ -44,7 +45,6 @@ public class KnowledgeFragmentServiceImpl implements IKnowledgeFragmentService {
     @Override
     public TableDataInfo<KnowledgeFragmentVo> queryPageList(KnowledgeFragmentBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<KnowledgeFragment> lqw = buildQueryWrapper(bo);
-        lqw.eq(KnowledgeFragment::getDocId, bo.getDocId());
         Page<KnowledgeFragmentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         return TableDataInfo.build(result);
     }

+ 120 - 0
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/service/impl/KnowledgeInfoServiceImpl.java

@@ -0,0 +1,120 @@
+package org.ruoyi.service.impl;
+
+import org.ruoyi.common.core.utils.MapstructUtils;
+import org.ruoyi.common.core.utils.StringUtils;
+import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.ruoyi.domain.vo.KnowledgeInfoVo;
+import org.springframework.stereotype.Service;
+import org.ruoyi.domain.bo.KnowledgeInfoBo;
+import org.ruoyi.domain.KnowledgeInfo;
+import org.ruoyi.mapper.KnowledgeInfoMapper;
+import org.ruoyi.service.IKnowledgeInfoService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 知识库Service业务层处理
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class KnowledgeInfoServiceImpl implements IKnowledgeInfoService {
+
+    private final KnowledgeInfoMapper baseMapper;
+
+    /**
+     * 查询知识库
+     */
+    @Override
+    public KnowledgeInfoVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询知识库列表
+     */
+    @Override
+    public TableDataInfo<KnowledgeInfoVo> queryPageList(KnowledgeInfoBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<KnowledgeInfo> lqw = buildQueryWrapper(bo);
+        Page<KnowledgeInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询知识库列表
+     */
+    @Override
+    public List<KnowledgeInfoVo> queryList(KnowledgeInfoBo bo) {
+        LambdaQueryWrapper<KnowledgeInfo> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<KnowledgeInfo> buildQueryWrapper(KnowledgeInfoBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<KnowledgeInfo> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getKid()), KnowledgeInfo::getKid, bo.getKid());
+        lqw.eq(bo.getUid() != null, KnowledgeInfo::getUid, bo.getUid());
+        lqw.like(StringUtils.isNotBlank(bo.getKname()), KnowledgeInfo::getKname, bo.getKname());
+        lqw.eq(bo.getShare() != null, KnowledgeInfo::getShare, bo.getShare());
+        lqw.eq(StringUtils.isNotBlank(bo.getDescription()), KnowledgeInfo::getDescription, bo.getDescription());
+        lqw.eq(StringUtils.isNotBlank(bo.getKnowledgeSeparator()), KnowledgeInfo::getKnowledgeSeparator, bo.getKnowledgeSeparator());
+        lqw.eq(StringUtils.isNotBlank(bo.getQuestionSeparator()), KnowledgeInfo::getQuestionSeparator, bo.getQuestionSeparator());
+        lqw.eq(bo.getOverlapChar() != null, KnowledgeInfo::getOverlapChar, bo.getOverlapChar());
+        lqw.eq(bo.getRetrieveLimit() != null, KnowledgeInfo::getRetrieveLimit, bo.getRetrieveLimit());
+        lqw.eq(bo.getTextBlockSize() != null, KnowledgeInfo::getTextBlockSize, bo.getTextBlockSize());
+        lqw.eq(StringUtils.isNotBlank(bo.getVector()), KnowledgeInfo::getVector, bo.getVector());
+        lqw.eq(StringUtils.isNotBlank(bo.getVectorModel()), KnowledgeInfo::getVectorModel, bo.getVectorModel());
+        return lqw;
+    }
+
+    /**
+     * 新增知识库
+     */
+    @Override
+    public Boolean insertByBo(KnowledgeInfoBo bo) {
+        KnowledgeInfo add = MapstructUtils.convert(bo, KnowledgeInfo.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改知识库
+     */
+    @Override
+    public Boolean updateByBo(KnowledgeInfoBo bo) {
+        KnowledgeInfo update = MapstructUtils.convert(bo, KnowledgeInfo.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(KnowledgeInfo entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除知识库
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysCache.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysCache.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysConfig.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysConfig.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysDept.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDept.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysDictData.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDictData.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysDictType.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysDictType.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysLogininfor.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysLogininfor.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysMenu.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysMenu.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysNotice.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysNotice.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysNoticeState.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysNoticeState.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysOperLog.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOperLog.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysOss.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOss.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysOssConfig.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysOssConfig.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysPost.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysPost.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysRole.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRole.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysRoleDept.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRoleDept.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysRoleMenu.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysRoleMenu.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysTenant.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysTenant.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysTenantPackage.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysTenantPackage.java


+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUser.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUser.java

@@ -37,7 +37,6 @@ public class SysUser extends TenantEntity {
      */
     private String userName;
 
-
     /**
      * 用户套餐
      */

+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUserOnline.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserOnline.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUserPost.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserPost.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/SysUserRole.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/SysUserRole.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysConfigBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysConfigBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDeptBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDeptBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDictDataBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDictDataBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysDictTypeBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysDictTypeBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysLogininforBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysLogininforBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysMenuBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysMenuBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysNoticeBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysNoticeBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysNoticeStateBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysNoticeStateBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOperLogBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOperLogBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOssBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOssBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysOssConfigBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysOssConfigBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysPostBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysPostBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysRoleBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysRoleBo.java


+ 0 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/SysTenantBo.java → ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/domain/bo/SysTenantBo.java


Some files were not shown because too many files changed in this diff