From 5a5a48e153c4f161a4e01c8ec4b4b0ec8f5fa1d2 Mon Sep 17 00:00:00 2001
From: ageer <ageerle@163.com>
Date: 星期三, 09 四月 2025 09:40:17 +0800
Subject: [PATCH] feat: ruoyi-chat-api模块调整

---
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java                |    6 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java                  |   14 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatModelServiceImpl.java       |  118 ++
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java                   |   90 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java                 |   61 
 ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatModelMapper.xml                        |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAgentManageBo.java             |   96 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAgentManage.java                  |   86 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java                 |   35 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPackagePlanMapper.java            |   16 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPackagePlanServiceImpl.java |  113 ++
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java                |   21 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java                       |   20 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAgentManageMapper.java            |   16 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatConfigMapper.java                 |    9 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java                  |   24 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java             |   12 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatConfigServiceImpl.java      |  114 ++
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java                     |   16 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java                 |    4 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatModelService.java               |   49 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPackagePlanBo.java             |   61 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java                |   26 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatGptsServiceImpl.java        |  119 ++
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPackagePlan.java                  |   58 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatModelMapper.java                  |   15 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java                        |   82 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java                       |    5 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java                |    5 
 ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPackagePlanMapper.xml                  |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAgentManageService.java         |   49 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPayOrder.java                     |   68 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAppStoreMapper.xml                     |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPayOrderMapper.java               |   16 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java             |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPackagePlanService.java         |   49 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java                 |   49 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java                |   36 
 ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatVoucherMapper.xml                      |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPluginMapper.xml                       |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java                  |   15 
 ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAgentManageMapper.xml                  |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java              |    5 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java                 |   36 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java                   |   97 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAgentManageServiceImpl.java |  120 ++
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java                    |   27 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java                      |   20 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatVoucherServiceImpl.java     |  114 ++
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java                         |   25 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAgentManageVo.java             |  104 ++
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPackagePlanVo.java             |   68 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java                  |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAppStoreServiceImpl.java    |  113 ++
 ruoyi-modules/ruoyi-system/src/main/resources/application-dev.yml                                     |    0 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java                      |   40 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPayOrderVo.java                |   80 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatGptsMapper.xml                         |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPayOrderService.java            |   48 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java            |   30 
 ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatMessageMapper.xml                      |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPayOrderMapper.xml                     |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java                   |    7 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java                    |   39 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPayOrderBo.java                |   73 +
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java              |   16 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java               |   12 
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPayOrderServiceImpl.java    |  115 ++
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatMessageServiceImpl.java     |  115 ++
 ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPluginServiceImpl.java      |  110 ++
 70 files changed, 2,722 insertions(+), 342 deletions(-)

diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAgentManage.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAgentManage.java
new file mode 100644
index 0000000..3205ca4
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAgentManage.java
@@ -0,0 +1,86 @@
+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;
+
+/**
+ * 鏅鸿兘浣撶鐞嗗璞� chat_agent_manage
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("chat_agent_manage")
+public class ChatAgentManage extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭id
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 搴旂敤鍚嶇О
+     */
+    private String appName;
+
+    /**
+     * 搴旂敤绫诲瀷
+     */
+    private String appType;
+
+    /**
+     * 搴旂敤澶村儚
+     */
+    private String appIcon;
+
+    /**
+     * 搴旂敤鎻忚堪
+     */
+    private String appDescription;
+
+    /**
+     * 寮�鍦轰粙缁�
+     */
+    private String introduction;
+
+    /**
+     * 妯″瀷
+     */
+    private String model;
+
+    /**
+     * 瀵硅瘽鍙�夋ā鍨�
+     */
+    private String conversationModel;
+
+    /**
+     * 搴旂敤璁惧畾
+     */
+    private String applicationSettings;
+
+    /**
+     * 鎻掍欢id
+     */
+    private String pluginId;
+
+    /**
+     * 鐭ヨ瘑搴搃d
+     */
+    private Long knowledgeId;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java
index 298984c..7dc5e61 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java
@@ -1,7 +1,6 @@
 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;
@@ -9,10 +8,10 @@
 import java.io.Serial;
 
 /**
- * 搴旂敤甯傚満
+ * 搴旂敤鍟嗗簵瀵硅薄 chat_app_store
  *
- * @author Lion Li
- * @date 2024-03-19
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -23,7 +22,7 @@
     private static final long serialVersionUID = 1L;
 
     /**
-     * 涓婚敭
+     * id
      */
     @TableId(value = "id")
     private Long id;
@@ -39,15 +38,14 @@
     private String description;
 
     /**
-     * 澶村儚
+     * logo
      */
     private String avatar;
 
     /**
-     * 搴旂敤鍦板潃
+     * 鍦板潃
      */
     private String appUrl;
-
 
     /**
      * 澶囨敞
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java
index 385bd2d..366d9a8 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java
@@ -1,21 +1,18 @@
 package org.ruoyi.domain;
 
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-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 org.ruoyi.common.sensitive.annotation.Sensitive;
-import org.ruoyi.common.sensitive.core.SensitiveStrategy;
 
 import java.io.Serial;
 
 /**
- * 瀵硅瘽閰嶇疆淇℃伅瀵硅薄 chat_config
+ * 閰嶇疆淇℃伅瀵硅薄 chat_config
  *
- * @author Lion Li
- * @date 2024-04-13
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -44,7 +41,6 @@
     /**
      * 閰嶇疆鍊�
      */
-    @Sensitive(strategy = SensitiveStrategy.SKY)
     private String configValue;
 
     /**
@@ -58,6 +54,12 @@
     private String remark;
 
     /**
+     * 鐗堟湰
+     */
+    @Version
+    private Long version;
+
+    /**
      * 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 1浠h〃鍒犻櫎锛�
      */
     @TableLogic
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java
index 675d769..a598f07 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java
@@ -1,9 +1,6 @@
 package org.ruoyi.domain;
 
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
@@ -11,10 +8,10 @@
 import java.io.Serial;
 
 /**
- * gpts绠$悊瀵硅薄 chat_gpts
+ * 搴旂敤绠$悊瀵硅薄 chat_gpts
  *
- * @author Lion Li
- * @date 2024-07-09
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -63,12 +60,12 @@
     /**
      * 鐐硅禐
      */
-    private String useCnt;
+    private Long useCnt;
 
     /**
      * 宸瘎
      */
-    private String bad;
+    private Long bad;
 
     /**
      * 绫诲瀷
@@ -97,15 +94,5 @@
      */
     private String updateIp;
 
-    /**
-     * 妯″瀷鍚嶇О
-     */
-    private String modelName;
-
-
-    /**
-     * 妯″瀷system
-     */
-    private String systemPrompt;
 
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java
index 7ef7886..b9caf73 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java
@@ -1,21 +1,19 @@
 package org.ruoyi.domain;
 
-import com.baomidou.mybatisplus.annotation.TableName;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.ruoyi.common.core.validate.AddGroup;
-import org.ruoyi.common.core.validate.EditGroup;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+
+import java.math.BigDecimal;
 
 import java.io.Serial;
 
 /**
  * 鑱婂ぉ娑堟伅瀵硅薄 chat_message
  *
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -28,49 +26,45 @@
     /**
      * 涓婚敭
      */
-    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = { EditGroup.class })
+    @TableId(value = "id")
     private Long id;
 
     /**
-     * 鐢ㄦ埛ID
+     * 鐢ㄦ埛id
      */
-    @NotBlank(message = "鐢ㄦ埛ID", groups = { AddGroup.class, EditGroup.class })
-    private Long UserId;
+    private Long userId;
+
+    /**
+     * 娑堟伅鍐呭
+     */
+    private String content;
 
     /**
      * 瀵硅瘽瑙掕壊
      */
     private String role;
 
-
     /**
-     * 娑堟伅鍐呭
-     */
-    @NotBlank(message = "娑堟伅鍐呭涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
-    private String content;
+     * 鎵i櫎閲戦
 
 
-    /**
-     * 鎵i櫎璐圭敤
      */
-    private Double deductCost;
+    private BigDecimal deductCost;
 
     /**
      * 绱 Tokens
      */
-    @NotNull(message = "绱 Tokens涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
-    private Integer totalTokens;
+    private Long totalTokens;
 
     /**
      * 妯″瀷鍚嶇О
      */
-    @NotBlank(message = "妯″瀷鍚嶇О涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String modelName;
 
     /**
      * 澶囨敞
      */
-    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String remark;
 
+
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java
new file mode 100644
index 0000000..89237f1
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java
@@ -0,0 +1,82 @@
+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;
+
+/**
+ * 鑱婂ぉ妯″瀷瀵硅薄 chat_model
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("chat_model")
+public class ChatModel extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 妯″瀷鍒嗙被
+     */
+    private String category;
+
+    /**
+     * 妯″瀷鍚嶇О
+     */
+    private String modelName;
+
+    /**
+     * 妯″瀷鎻忚堪
+     */
+    private String modelDescribe;
+
+    /**
+     * 妯″瀷浠锋牸
+     */
+    private Long modelPrice;
+
+    /**
+     * 璁¤垂绫诲瀷
+     */
+    private String modelType;
+
+    /**
+     * 鏄惁鏄剧ず
+     */
+    private String modelShow;
+
+    /**
+     * 绯荤粺鎻愮ず璇�
+     */
+    private String systemPrompt;
+
+    /**
+     * 璇锋眰鍦板潃
+     */
+    private String apiHost;
+
+    /**
+     * 瀵嗛挜
+     */
+    private String apiKey;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPackagePlan.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPackagePlan.java
new file mode 100644
index 0000000..e834a25
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPackagePlan.java
@@ -0,0 +1,58 @@
+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.math.BigDecimal;
+
+import java.io.Serial;
+
+/**
+ * 濂楅绠$悊瀵硅薄 chat_package_plan
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("chat_package_plan")
+public class ChatPackagePlan extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 濂楅鍚嶇О
+     */
+    private String name;
+
+    /**
+     * 濂楅浠锋牸
+     */
+    private BigDecimal price;
+
+    /**
+     * 鏈夋晥鏃堕棿
+     */
+    private Long duration;
+
+    /**
+     * 璁″垝璇︽儏
+     */
+    private String planDetail;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPayOrder.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPayOrder.java
new file mode 100644
index 0000000..0093395
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPayOrder.java
@@ -0,0 +1,68 @@
+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.math.BigDecimal;
+
+import java.io.Serial;
+
+/**
+ * 鏀粯璁㈠崟瀵硅薄 chat_pay_order
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("chat_pay_order")
+public class ChatPayOrder extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 璁㈠崟缂栧彿
+     */
+    private String orderNo;
+
+    /**
+     * 璁㈠崟鍚嶇О
+     */
+    private String orderName;
+
+    /**
+     * 閲戦
+     */
+    private BigDecimal amount;
+
+    /**
+     * 鏀粯鐘舵��
+     */
+    private String paymentStatus;
+
+    /**
+     * 鏀粯鏂瑰紡
+     */
+    private String paymentMethod;
+
+    /**
+     * 鐢ㄦ埛ID
+     */
+    private Long userId;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java
index d2c8843..ace67ec 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java
@@ -1,7 +1,6 @@
 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;
@@ -12,7 +11,7 @@
  * 鎻掍欢绠$悊瀵硅薄 chat_plugin
  *
  * @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java
index 047a108..c69b0cf 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java
@@ -1,19 +1,19 @@
 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.math.BigDecimal;
+
+import java.io.Serial;
 
 /**
  * 鐢ㄦ埛鍏戞崲璁板綍瀵硅薄 chat_voucher
  *
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -30,11 +30,6 @@
     private Long id;
 
     /**
-     * 鐢ㄦ埛id
-     */
-    private Long userId;
-
-    /**
      * 鍏戞崲鐮�
      */
     private String code;
@@ -45,6 +40,11 @@
     private BigDecimal amount;
 
     /**
+     * 鐢ㄦ埛id
+     */
+    private Long userId;
+
+    /**
      * 鍏戞崲鐘舵��
      */
     private String status;
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAgentManageBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAgentManageBo.java
new file mode 100644
index 0000000..6fd54c4
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAgentManageBo.java
@@ -0,0 +1,96 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.system.domain.ChatAgentManage;
+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_agent_manage
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChatAgentManage.class, reverseConvertGenerate = false)
+public class ChatAgentManageBo extends BaseEntity {
+
+    /**
+     * 涓婚敭id
+     */
+    @NotNull(message = "涓婚敭id涓嶈兘涓虹┖", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 搴旂敤鍚嶇О
+     */
+    @NotBlank(message = "搴旂敤鍚嶇О涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String appName;
+
+    /**
+     * 搴旂敤绫诲瀷
+     */
+    @NotBlank(message = "搴旂敤绫诲瀷涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String appType;
+
+    /**
+     * 搴旂敤澶村儚
+     */
+    @NotBlank(message = "搴旂敤澶村儚涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String appIcon;
+
+    /**
+     * 搴旂敤鎻忚堪
+     */
+    @NotBlank(message = "搴旂敤鎻忚堪涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String appDescription;
+
+    /**
+     * 寮�鍦轰粙缁�
+     */
+    @NotBlank(message = "寮�鍦轰粙缁嶄笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private String introduction;
+
+    /**
+     * 妯″瀷
+     */
+    @NotBlank(message = "妯″瀷涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String model;
+
+    /**
+     * 瀵硅瘽鍙�夋ā鍨�
+     */
+    @NotBlank(message = "瀵硅瘽鍙�夋ā鍨嬩笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private String conversationModel;
+
+    /**
+     * 搴旂敤璁惧畾
+     */
+    @NotBlank(message = "搴旂敤璁惧畾涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String applicationSettings;
+
+    /**
+     * 鎻掍欢id
+     */
+    @NotBlank(message = "鎻掍欢id涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String pluginId;
+
+    /**
+     * 鐭ヨ瘑搴搃d
+     */
+    @NotNull(message = "鐭ヨ瘑搴搃d涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long knowledgeId;
+
+    /**
+     * 澶囨敞
+     */
+    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java
index b4c0490..b77431b 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java
@@ -1,19 +1,19 @@
 package org.ruoyi.domain.bo;
 
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.system.domain.ChatAppStore;
+import org.ruoyi.common.mybatis.core.domain.BaseEntity;
 import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.domain.ChatAppStore;
-
+import jakarta.validation.constraints.*;
 
 /**
- * 搴旂敤甯傚満涓氬姟瀵硅薄 voice_role
+ * 搴旂敤鍟嗗簵涓氬姟瀵硅薄 chat_app_store
  *
- * @author Lion Li
- * @date 2024-03-19
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -23,37 +23,37 @@
     /**
      * id
      */
-    @NotNull(message = "id涓嶈兘涓虹┖")
+    @NotNull(message = "id涓嶈兘涓虹┖", groups = { EditGroup.class })
     private Long id;
 
     /**
-     * 瑙掕壊鍚嶇О
+     * 鍚嶇О
      */
-    @NotBlank(message = "鍚嶇О涓嶈兘涓虹┖")
+    @NotBlank(message = "鍚嶇О涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String name;
 
     /**
-     * 瑙掕壊鎻忚堪
+     * 鎻忚堪
      */
-    @NotBlank(message = "鎻忚堪涓嶈兘涓虹┖")
+    @NotBlank(message = "鎻忚堪涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String description;
 
     /**
-     * 澶村儚
+     * logo
      */
-    @NotBlank(message = "澶村儚涓嶈兘涓虹┖")
+    @NotBlank(message = "logo涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String avatar;
 
     /**
-     * 闊抽鍦板潃
+     * 鍦板潃
      */
-    @NotBlank(message = "搴旂敤鍦板潃涓嶈兘涓虹┖")
+    @NotBlank(message = "鍦板潃涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String appUrl;
 
     /**
      * 澶囨敞
      */
-    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖")
+    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String remark;
 
 
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java
index bf2d7bb..ca1b038 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java
@@ -1,24 +1,19 @@
 package org.ruoyi.domain.bo;
 
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
 import org.ruoyi.common.core.validate.AddGroup;
 import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.system.domain.ChatConfig;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.common.sensitive.annotation.Sensitive;
-import org.ruoyi.common.sensitive.core.SensitiveStrategy;
-import org.ruoyi.domain.ChatConfig;
-
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
 
 /**
- * 瀵硅瘽閰嶇疆淇℃伅
-涓氬姟瀵硅薄 chat_config
+ * 閰嶇疆淇℃伅涓氬姟瀵硅薄 chat_config
  *
- * @author Lion Li
- * @date 2024-04-13
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -46,14 +41,13 @@
     /**
      * 閰嶇疆鍊�
      */
-    @Sensitive(strategy = SensitiveStrategy.SKY)
     @NotBlank(message = "閰嶇疆鍊间笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
     private String configValue;
 
     /**
      * 璇存槑
      */
-    @NotBlank(message = "鍙傛暟璇存槑涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    @NotBlank(message = "璇存槑涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String configDict;
 
     /**
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java
index 2761467..2c77aa1 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java
@@ -1,20 +1,19 @@
 package org.ruoyi.domain.bo;
 
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
 import org.ruoyi.common.core.validate.AddGroup;
 import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.system.domain.ChatGpts;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.domain.ChatGpts;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
 
 /**
- * gpts绠$悊涓氬姟瀵硅薄 chat_gpts
+ * 搴旂敤绠$悊涓氬姟瀵硅薄 chat_gpts
  *
- * @author Lion Li
- * @date 2024-07-09
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -42,56 +41,56 @@
     /**
      * gpts鍥炬爣
      */
+    @NotBlank(message = "gpts鍥炬爣涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String logo;
 
     /**
      * gpts鎻忚堪
      */
+    @NotBlank(message = "gpts鎻忚堪涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String info;
 
     /**
      * 浣滆�卛d
      */
+    @NotBlank(message = "浣滆�卛d涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String authorId;
 
     /**
      * 浣滆�呭悕绉�
      */
+    @NotBlank(message = "浣滆�呭悕绉颁笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
     private String authorName;
 
     /**
      * 鐐硅禐
      */
-    private String useCnt;
+    @NotNull(message = "鐐硅禐涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long useCnt;
 
     /**
      * 宸瘎
      */
-    private String bad;
+    @NotNull(message = "宸瘎涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long bad;
 
     /**
      * 绫诲瀷
      */
+    @NotBlank(message = "绫诲瀷涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String type;
 
     /**
      * 澶囨敞
      */
+    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String remark;
 
     /**
      * 鏇存柊IP
      */
+    @NotBlank(message = "鏇存柊IP涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String updateIp;
 
-    /**
-     * 妯″瀷鍚嶇О
-     */
-    private String modelName;
-
-    /**
-     * 妯″瀷system
-     */
-    private String systemPrompt;
 
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java
index e66dc71..43791ee 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java
@@ -1,21 +1,20 @@
 package org.ruoyi.domain.bo;
 
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
 import org.ruoyi.common.core.validate.AddGroup;
 import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.system.domain.ChatMessage;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.domain.ChatMessage;
-
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
 
 /**
  * 鑱婂ぉ娑堟伅涓氬姟瀵硅薄 chat_message
  *
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -29,19 +28,10 @@
     private Long id;
 
     /**
-     * 鐢ㄦ埛ID
+     * 鐢ㄦ埛id
      */
+    @NotNull(message = "鐢ㄦ埛id涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private Long userId;
-
-    /**
-     * 鐢ㄦ埛鍚嶇О
-     */
-    private String userName;
-
-    /**
-     * 瀵硅瘽瑙掕壊
-     */
-    private String role;
 
     /**
      * 娑堟伅鍐呭
@@ -50,23 +40,36 @@
     private String content;
 
     /**
-     * 鎵i櫎璐圭敤
+     * 瀵硅瘽瑙掕壊
      */
-    private Double deductCost;
+    @NotBlank(message = "瀵硅瘽瑙掕壊涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String role;
+
+    /**
+     * 鎵i櫎閲戦
+
+
+     */
+    @NotNull(message = "鎵i櫎閲戦涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private BigDecimal deductCost;
 
     /**
      * 绱 Tokens
      */
-    private Integer totalTokens;
+    @NotNull(message = "绱 Tokens涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long totalTokens;
 
     /**
      * 妯″瀷鍚嶇О
      */
+    @NotBlank(message = "妯″瀷鍚嶇О涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String modelName;
 
     /**
      * 澶囨敞
      */
+    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String remark;
 
+
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java
new file mode 100644
index 0000000..a2a19ac
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java
@@ -0,0 +1,90 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.system.domain.ChatModel;
+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_model
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChatModel.class, reverseConvertGenerate = false)
+public class ChatModelBo extends BaseEntity {
+
+    /**
+     * 涓婚敭
+     */
+    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 妯″瀷鍒嗙被
+     */
+    @NotBlank(message = "妯″瀷鍒嗙被涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String category;
+
+    /**
+     * 妯″瀷鍚嶇О
+     */
+    @NotBlank(message = "妯″瀷鍚嶇О涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String modelName;
+
+    /**
+     * 妯″瀷鎻忚堪
+     */
+    @NotBlank(message = "妯″瀷鎻忚堪涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String modelDescribe;
+
+    /**
+     * 妯″瀷浠锋牸
+     */
+    @NotNull(message = "妯″瀷浠锋牸涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long modelPrice;
+
+    /**
+     * 璁¤垂绫诲瀷
+     */
+    @NotBlank(message = "璁¤垂绫诲瀷涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String modelType;
+
+    /**
+     * 鏄惁鏄剧ず
+     */
+    @NotBlank(message = "鏄惁鏄剧ず涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String modelShow;
+
+    /**
+     * 绯荤粺鎻愮ず璇�
+     */
+    @NotBlank(message = "绯荤粺鎻愮ず璇嶄笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private String systemPrompt;
+
+    /**
+     * 璇锋眰鍦板潃
+     */
+    @NotBlank(message = "璇锋眰鍦板潃涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String apiHost;
+
+    /**
+     * 瀵嗛挜
+     */
+    @NotBlank(message = "瀵嗛挜涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String apiKey;
+
+    /**
+     * 澶囨敞
+     */
+    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPackagePlanBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPackagePlanBo.java
new file mode 100644
index 0000000..ac0fdc1
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPackagePlanBo.java
@@ -0,0 +1,61 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.system.domain.ChatPackagePlan;
+import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
+
+/**
+ * 濂楅绠$悊涓氬姟瀵硅薄 chat_package_plan
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChatPackagePlan.class, reverseConvertGenerate = false)
+public class ChatPackagePlanBo extends BaseEntity {
+
+    /**
+     * 涓婚敭
+     */
+    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 濂楅鍚嶇О
+     */
+    @NotBlank(message = "濂楅鍚嶇О涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 濂楅浠锋牸
+     */
+    @NotNull(message = "濂楅浠锋牸涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private BigDecimal price;
+
+    /**
+     * 鏈夋晥鏃堕棿
+     */
+    @NotNull(message = "鏈夋晥鏃堕棿涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long duration;
+
+    /**
+     * 璁″垝璇︽儏
+     */
+    @NotBlank(message = "璁″垝璇︽儏涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String planDetail;
+
+    /**
+     * 澶囨敞
+     */
+    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPayOrderBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPayOrderBo.java
new file mode 100644
index 0000000..41191d5
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPayOrderBo.java
@@ -0,0 +1,73 @@
+package org.ruoyi.domain.bo;
+
+import org.ruoyi.common.core.validate.AddGroup;
+import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.system.domain.ChatPayOrder;
+import org.ruoyi.common.mybatis.core.domain.BaseEntity;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
+
+/**
+ * 鏀粯璁㈠崟涓氬姟瀵硅薄 chat_pay_order
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChatPayOrder.class, reverseConvertGenerate = false)
+public class ChatPayOrderBo extends BaseEntity {
+
+    /**
+     * 涓婚敭
+     */
+    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 璁㈠崟缂栧彿
+     */
+    @NotBlank(message = "璁㈠崟缂栧彿涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String orderNo;
+
+    /**
+     * 璁㈠崟鍚嶇О
+     */
+    @NotBlank(message = "璁㈠崟鍚嶇О涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String orderName;
+
+    /**
+     * 閲戦
+     */
+    @NotNull(message = "閲戦涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private BigDecimal amount;
+
+    /**
+     * 鏀粯鐘舵��
+     */
+    @NotBlank(message = "鏀粯鐘舵�佷笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private String paymentStatus;
+
+    /**
+     * 鏀粯鏂瑰紡
+     */
+    @NotBlank(message = "鏀粯鏂瑰紡涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String paymentMethod;
+
+    /**
+     * 鐢ㄦ埛ID
+     */
+    @NotNull(message = "鐢ㄦ埛ID涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long userId;
+
+    /**
+     * 澶囨敞
+     */
+    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java
index 1e20837..4f6357b 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java
@@ -1,21 +1,19 @@
 package org.ruoyi.domain.bo;
 
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
 import org.ruoyi.common.core.validate.AddGroup;
 import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.system.domain.ChatPlugin;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.domain.ChatPlugin;
-
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
 
 /**
  * 鎻掍欢绠$悊涓氬姟瀵硅薄 chat_plugin
  *
  * @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java
index 60983b7..35782a7 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java
@@ -1,22 +1,20 @@
 package org.ruoyi.domain.bo;
 
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
 import org.ruoyi.common.core.validate.AddGroup;
 import org.ruoyi.common.core.validate.EditGroup;
+import org.ruoyi.system.domain.ChatVoucher;
 import org.ruoyi.common.mybatis.core.domain.BaseEntity;
-import org.ruoyi.domain.ChatVoucher;
-
-
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
 import java.math.BigDecimal;
 
 /**
  * 鐢ㄦ埛鍏戞崲璁板綍涓氬姟瀵硅薄 chat_voucher
  *
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -30,13 +28,9 @@
     private Long id;
 
     /**
-     * 鐢ㄦ埛id
-     */
-    private Long userId;
-
-    /**
      * 鍏戞崲鐮�
      */
+    @NotBlank(message = "鍏戞崲鐮佷笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
     private String code;
 
     /**
@@ -46,23 +40,33 @@
     private BigDecimal amount;
 
     /**
+     * 鐢ㄦ埛id
+     */
+    @NotNull(message = "鐢ㄦ埛id涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long userId;
+
+    /**
      * 鍏戞崲鐘舵��
      */
+    @NotBlank(message = "鍏戞崲鐘舵�佷笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
     private String status;
 
     /**
      * 鍏戞崲鍓嶄綑棰�
      */
-    private Double balanceBefore;
+    @NotNull(message = "鍏戞崲鍓嶄綑棰濅笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private BigDecimal balanceBefore;
 
     /**
      * 鍏戞崲鍚庝綑棰�
      */
-    private Double balanceAfter;
+    @NotNull(message = "鍏戞崲鍚庝綑棰濅笉鑳戒负绌�", groups = { AddGroup.class, EditGroup.class })
+    private BigDecimal balanceAfter;
 
     /**
      * 澶囨敞
      */
+    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
     private String remark;
 
 
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAgentManageVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAgentManageVo.java
new file mode 100644
index 0000000..bb18e7f
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAgentManageVo.java
@@ -0,0 +1,104 @@
+package org.ruoyi.system.domain.vo;
+
+import org.ruoyi.system.domain.ChatAgentManage;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import annotation.excel.common.org.ruoyi.ExcelDictFormat;
+import convert.excel.common.org.ruoyi.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 鏅鸿兘浣撶鐞嗚鍥惧璞� chat_agent_manage
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ChatAgentManage.class)
+public class ChatAgentManageVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭id
+     */
+    @ExcelProperty(value = "涓婚敭id")
+    private Long id;
+
+    /**
+     * 搴旂敤鍚嶇О
+     */
+    @ExcelProperty(value = "搴旂敤鍚嶇О")
+    private String appName;
+
+    /**
+     * 搴旂敤绫诲瀷
+     */
+    @ExcelProperty(value = "搴旂敤绫诲瀷")
+    private String appType;
+
+    /**
+     * 搴旂敤澶村儚
+     */
+    @ExcelProperty(value = "搴旂敤澶村儚")
+    private String appIcon;
+
+    /**
+     * 搴旂敤鎻忚堪
+     */
+    @ExcelProperty(value = "搴旂敤鎻忚堪")
+    private String appDescription;
+
+    /**
+     * 寮�鍦轰粙缁�
+     */
+    @ExcelProperty(value = "寮�鍦轰粙缁�")
+    private String introduction;
+
+    /**
+     * 妯″瀷
+     */
+    @ExcelProperty(value = "妯″瀷")
+    private String model;
+
+    /**
+     * 瀵硅瘽鍙�夋ā鍨�
+     */
+    @ExcelProperty(value = "瀵硅瘽鍙�夋ā鍨�")
+    private String conversationModel;
+
+    /**
+     * 搴旂敤璁惧畾
+     */
+    @ExcelProperty(value = "搴旂敤璁惧畾")
+    private String applicationSettings;
+
+    /**
+     * 鎻掍欢id
+     */
+    @ExcelProperty(value = "鎻掍欢id")
+    private String pluginId;
+
+    /**
+     * 鐭ヨ瘑搴搃d
+     */
+    @ExcelProperty(value = "鐭ヨ瘑搴搃d")
+    private Long knowledgeId;
+
+    /**
+     * 澶囨敞
+     */
+    @ExcelProperty(value = "澶囨敞")
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java
index 4ae8a95..24af708 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java
@@ -1,23 +1,23 @@
-package org.ruoyi.domain.vo;
+package org.ruoyi.system.domain.vo;
 
-
+import org.ruoyi.system.domain.ChatAppStore;
 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.ChatAppStore;
-
 
 import java.io.Serial;
 import java.io.Serializable;
 
 
 
+
 /**
- * 搴旂敤甯傚満瑙嗗浘瀵硅薄
+ * 搴旂敤鍟嗗簵瑙嗗浘瀵硅薄 chat_app_store
  *
- * @author Lion Li
- * @date 2024-03-19
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
@@ -34,27 +34,27 @@
     private Long id;
 
     /**
-     * 瑙掕壊鍚嶇О
+     * 鍚嶇О
      */
     @ExcelProperty(value = "鍚嶇О")
     private String name;
 
     /**
-     * 瑙掕壊鎻忚堪
+     * 鎻忚堪
      */
     @ExcelProperty(value = "鎻忚堪")
     private String description;
 
     /**
-     * 澶村儚
+     * logo
      */
-    @ExcelProperty(value = "澶村儚")
+    @ExcelProperty(value = "logo")
     private String avatar;
 
     /**
-     * 闊抽鍦板潃
+     * 鍦板潃
      */
-    @ExcelProperty(value = "搴旂敤鍦板潃")
+    @ExcelProperty(value = "鍦板潃")
     private String appUrl;
 
     /**
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java
index ba02886..5ba209f 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java
@@ -1,25 +1,23 @@
 package org.ruoyi.domain.vo;
 
+import org.ruoyi.system.domain.ChatConfig;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
-import org.ruoyi.common.sensitive.annotation.Sensitive;
-import org.ruoyi.common.sensitive.core.SensitiveStrategy;
-import org.ruoyi.domain.ChatConfig;
-
 
 import java.io.Serial;
 import java.io.Serializable;
 
 
 
+
 /**
- * 瀵硅瘽閰嶇疆淇℃伅
-瑙嗗浘瀵硅薄 chat_config
+ * 閰嶇疆淇℃伅瑙嗗浘瀵硅薄 chat_config
  *
- * @author Lion Li
- * @date 2024-04-13
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
@@ -51,7 +49,6 @@
      * 閰嶇疆鍊�
      */
     @ExcelProperty(value = "閰嶇疆鍊�")
-    @Sensitive(strategy = SensitiveStrategy.SKY)
     private String configValue;
 
     /**
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java
index ead5f6c..1148b3d 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java
@@ -1,21 +1,23 @@
 package org.ruoyi.domain.vo;
 
+import org.ruoyi.system.domain.ChatGpts;
 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.ChatGpts;
-
 
 import java.io.Serial;
 import java.io.Serializable;
 
 
+
+
 /**
- * gpts绠$悊瑙嗗浘瀵硅薄 chat_gpts
+ * 搴旂敤绠$悊瑙嗗浘瀵硅薄 chat_gpts
  *
- * @author Lion Li
- * @date 2024-07-09
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
@@ -71,13 +73,13 @@
      * 鐐硅禐
      */
     @ExcelProperty(value = "鐐硅禐")
-    private String useCnt;
+    private Long useCnt;
 
     /**
      * 宸瘎
      */
     @ExcelProperty(value = "宸瘎")
-    private String bad;
+    private Long bad;
 
     /**
      * 绫诲瀷
@@ -96,17 +98,6 @@
      */
     @ExcelProperty(value = "鏇存柊IP")
     private String updateIp;
-
-    /**
-     * 妯″瀷鍚嶇О
-     */
-    @ExcelProperty(value = "妯″瀷鍚嶇О")
-    private String modelName;
-
-    /**
-     * 妯″瀷system
-     */
-    private String systemPrompt;
 
 
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java
index f21e41d..bbc6867 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java
@@ -1,25 +1,24 @@
 package org.ruoyi.domain.vo;
 
+import java.math.BigDecimal;
+import org.ruoyi.system.domain.ChatMessage;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import org.ruoyi.common.core.validate.AddGroup;
-import org.ruoyi.common.core.validate.EditGroup;
-import org.ruoyi.domain.ChatMessage;
+import com.alibaba.excel.annotation.ExcelProperty;
 
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
-import java.util.Date;
+
+
 
 
 /**
  * 鑱婂ぉ娑堟伅瑙嗗浘瀵硅薄 chat_message
  *
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
@@ -32,60 +31,50 @@
     /**
      * 涓婚敭
      */
-    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = { EditGroup.class })
+    @ExcelProperty(value = "涓婚敭")
     private Long id;
 
     /**
-     * 鐢ㄦ埛ID
+     * 鐢ㄦ埛id
      */
-    @NotBlank(message = "鐢ㄦ埛ID", groups = { AddGroup.class, EditGroup.class })
+    @ExcelProperty(value = "鐢ㄦ埛id")
     private Long userId;
-
-    /**
-     * 鐢ㄦ埛鍚嶇О
-     */
-    @NotBlank(message = "鐢ㄦ埛鍚嶇О")
-    private String userName;
-
-    /**
-     * 瀵硅瘽瑙掕壊
-     */
-    private String role;
-
 
     /**
      * 娑堟伅鍐呭
      */
-    @NotBlank(message = "娑堟伅鍐呭涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    @ExcelProperty(value = "娑堟伅鍐呭")
     private String content;
 
+    /**
+     * 瀵硅瘽瑙掕壊
+     */
+    @ExcelProperty(value = "瀵硅瘽瑙掕壊")
+    private String role;
 
     /**
-     * 鎵i櫎璐圭敤
+     * 鎵i櫎閲戦
      */
-    private Double deductCost;
+    @ExcelProperty(value = "鎵i櫎閲戦")
+    private BigDecimal deductCost;
 
     /**
      * 绱 Tokens
      */
-    @NotNull(message = "绱 Tokens涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
-    private Integer totalTokens;
+    @ExcelProperty(value = "绱 Tokens")
+    private Long totalTokens;
 
     /**
      * 妯″瀷鍚嶇О
      */
-    @NotBlank(message = "妯″瀷鍚嶇О涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    @ExcelProperty(value = "妯″瀷鍚嶇О")
     private String modelName;
 
     /**
      * 澶囨敞
      */
-    @NotBlank(message = "澶囨敞涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    @ExcelProperty(value = "澶囨敞")
     private String remark;
 
-    /**
-     * 鍒涘缓鏃堕棿
-     */
-    private Date createTime;
 
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java
new file mode 100644
index 0000000..3e25694
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java
@@ -0,0 +1,97 @@
+package org.ruoyi.domain.vo;
+
+import org.ruoyi.system.domain.ChatModel;
+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;
+
+
+
+
+/**
+ * 鑱婂ぉ妯″瀷瑙嗗浘瀵硅薄 chat_model
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ChatModel.class)
+public class ChatModelVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ExcelProperty(value = "涓婚敭")
+    private Long id;
+
+    /**
+     * 妯″瀷鍒嗙被
+     */
+    @ExcelProperty(value = "妯″瀷鍒嗙被")
+    private String category;
+
+    /**
+     * 妯″瀷鍚嶇О
+     */
+    @ExcelProperty(value = "妯″瀷鍚嶇О")
+    private String modelName;
+
+    /**
+     * 妯″瀷鎻忚堪
+     */
+    @ExcelProperty(value = "妯″瀷鎻忚堪")
+    private String modelDescribe;
+
+    /**
+     * 妯″瀷浠锋牸
+     */
+    @ExcelProperty(value = "妯″瀷浠锋牸")
+    private Long modelPrice;
+
+    /**
+     * 璁¤垂绫诲瀷
+     */
+    @ExcelProperty(value = "璁¤垂绫诲瀷")
+    private String modelType;
+
+    /**
+     * 鏄惁鏄剧ず
+     */
+    @ExcelProperty(value = "鏄惁鏄剧ず")
+    private String modelShow;
+
+    /**
+     * 绯荤粺鎻愮ず璇�
+     */
+    @ExcelProperty(value = "绯荤粺鎻愮ず璇�")
+    private String systemPrompt;
+
+    /**
+     * 璇锋眰鍦板潃
+     */
+    @ExcelProperty(value = "璇锋眰鍦板潃")
+    private String apiHost;
+
+    /**
+     * 瀵嗛挜
+     */
+    @ExcelProperty(value = "瀵嗛挜")
+    private String apiKey;
+
+    /**
+     * 澶囨敞
+     */
+    @ExcelProperty(value = "澶囨敞")
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPackagePlanVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPackagePlanVo.java
new file mode 100644
index 0000000..484c3d4
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPackagePlanVo.java
@@ -0,0 +1,68 @@
+package org.ruoyi.domain.vo;
+
+import java.math.BigDecimal;
+import org.ruoyi.system.domain.ChatPackagePlan;
+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;
+
+
+
+
+/**
+ * 濂楅绠$悊瑙嗗浘瀵硅薄 chat_package_plan
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ChatPackagePlan.class)
+public class ChatPackagePlanVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ExcelProperty(value = "涓婚敭")
+    private Long id;
+
+    /**
+     * 濂楅鍚嶇О
+     */
+    @ExcelProperty(value = "濂楅鍚嶇О")
+    private String name;
+
+    /**
+     * 濂楅浠锋牸
+     */
+    @ExcelProperty(value = "濂楅浠锋牸")
+    private BigDecimal price;
+
+    /**
+     * 鏈夋晥鏃堕棿
+     */
+    @ExcelProperty(value = "鏈夋晥鏃堕棿")
+    private Long duration;
+
+    /**
+     * 璁″垝璇︽儏
+     */
+    @ExcelProperty(value = "璁″垝璇︽儏")
+    private String planDetail;
+
+    /**
+     * 澶囨敞
+     */
+    @ExcelProperty(value = "澶囨敞")
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPayOrderVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPayOrderVo.java
new file mode 100644
index 0000000..220d1af
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPayOrderVo.java
@@ -0,0 +1,80 @@
+package org.ruoyi.domain.vo;
+
+import java.math.BigDecimal;
+import org.ruoyi.system.domain.ChatPayOrder;
+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;
+
+
+
+
+/**
+ * 鏀粯璁㈠崟瑙嗗浘瀵硅薄 chat_pay_order
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ChatPayOrder.class)
+public class ChatPayOrderVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ExcelProperty(value = "涓婚敭")
+    private Long id;
+
+    /**
+     * 璁㈠崟缂栧彿
+     */
+    @ExcelProperty(value = "璁㈠崟缂栧彿")
+    private String orderNo;
+
+    /**
+     * 璁㈠崟鍚嶇О
+     */
+    @ExcelProperty(value = "璁㈠崟鍚嶇О")
+    private String orderName;
+
+    /**
+     * 閲戦
+     */
+    @ExcelProperty(value = "閲戦")
+    private BigDecimal amount;
+
+    /**
+     * 鏀粯鐘舵��
+     */
+    @ExcelProperty(value = "鏀粯鐘舵��")
+    private String paymentStatus;
+
+    /**
+     * 鏀粯鏂瑰紡
+     */
+    @ExcelProperty(value = "鏀粯鏂瑰紡")
+    private String paymentMethod;
+
+    /**
+     * 鐢ㄦ埛ID
+     */
+    @ExcelProperty(value = "鐢ㄦ埛ID")
+    private Long userId;
+
+    /**
+     * 澶囨敞
+     */
+    @ExcelProperty(value = "澶囨敞")
+    private String remark;
+
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java
index c4d41fe..5246b58 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java
@@ -1,20 +1,23 @@
 package org.ruoyi.domain.vo;
 
+import org.ruoyi.system.domain.ChatPlugin;
 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.ChatPlugin;
 
 import java.io.Serial;
 import java.io.Serializable;
+
+
 
 
 /**
  * 鎻掍欢绠$悊瑙嗗浘瀵硅薄 chat_plugin
  *
  * @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java
index b1462c5..b1a6c6c 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java
@@ -1,10 +1,12 @@
 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;
@@ -14,8 +16,8 @@
 /**
  * 鐢ㄦ埛鍏戞崲璁板綍瑙嗗浘瀵硅薄 chat_voucher
  *
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
@@ -32,18 +34,6 @@
     private Long id;
 
     /**
-     * 鐢ㄦ埛id
-     */
-    @ExcelProperty(value = "鐢ㄦ埛id")
-    private Long userId;
-
-    /**
-     * 鐢ㄦ埛鍚嶇О
-     */
-    @ExcelProperty(value = "鐢ㄦ埛鍚嶇О")
-    private String userName;
-
-    /**
      * 鍏戞崲鐮�
      */
     @ExcelProperty(value = "鍏戞崲鐮�")
@@ -53,7 +43,13 @@
      * 鍏戞崲閲戦
      */
     @ExcelProperty(value = "鍏戞崲閲戦")
-    private Double amount;
+    private BigDecimal amount;
+
+    /**
+     * 鐢ㄦ埛id
+     */
+    @ExcelProperty(value = "鐢ㄦ埛id")
+    private Long userId;
 
     /**
      * 鍏戞崲鐘舵��
@@ -65,22 +61,19 @@
      * 鍏戞崲鍓嶄綑棰�
      */
     @ExcelProperty(value = "鍏戞崲鍓嶄綑棰�")
-    private Double balanceBefore;
+    private BigDecimal balanceBefore;
 
     /**
      * 鍏戞崲鍚庝綑棰�
      */
     @ExcelProperty(value = "鍏戞崲鍚庝綑棰�")
-    private Double balanceAfter;
+    private BigDecimal balanceAfter;
 
     /**
      * 澶囨敞
      */
     @ExcelProperty(value = "澶囨敞")
     private String remark;
-
-    @ExcelProperty(value = "鍒涘缓鏃堕棿")
-    private String createTime;
 
 
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAgentManageMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAgentManageMapper.java
new file mode 100644
index 0000000..978b213
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAgentManageMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.domain.ChatAgentManage;
+import org.ruoyi.system.domain.vo.ChatAgentManageVo;
+import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 鏅鸿兘浣撶鐞哅apper鎺ュ彛
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatAgentManageMapper extends BaseMapperPlus<ChatAgentManage, ChatAgentManageVo> {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java
index 9f14244..22aef7b 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java
@@ -1,15 +1,15 @@
 package org.ruoyi.mapper;
 
-import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
-import org.ruoyi.domain.ChatAppStore;
-import org.ruoyi.domain.vo.ChatAppStoreVo;
 
+import org.ruoyi.domain.ChatAppStore;
+import org.ruoyi.system.domain.vo.ChatAppStoreVo;
+import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
 
 /**
- * 搴旂敤甯傚満Mapper鎺ュ彛
+ * 搴旂敤鍟嗗簵Mapper鎺ュ彛
  *
- * @author Lion Li
- * @date 2024-03-19
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface ChatAppStoreMapper extends BaseMapperPlus<ChatAppStore, ChatAppStoreVo> {
 
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatConfigMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatConfigMapper.java
index 8b8069a..c9f8583 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatConfigMapper.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatConfigMapper.java
@@ -1,17 +1,16 @@
 package org.ruoyi.mapper;
 
+
 import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
 import org.ruoyi.domain.ChatConfig;
 import org.ruoyi.domain.vo.ChatConfigVo;
 
-
 /**
- * 瀵硅瘽閰嶇疆淇℃伅Mapper鎺ュ彛
+ * 閰嶇疆淇℃伅Mapper鎺ュ彛
  *
- * @author Lion Li
- * @date 2024-04-13
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface ChatConfigMapper extends BaseMapperPlus<ChatConfig, ChatConfigVo> {
-
 
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java
index 1d9b0a5..2bd777e 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java
@@ -4,12 +4,11 @@
 import org.ruoyi.domain.ChatGpts;
 import org.ruoyi.domain.vo.ChatGptsVo;
 
-
 /**
- * gpts绠$悊Mapper鎺ュ彛
+ * 搴旂敤绠$悊Mapper鎺ュ彛
  *
- * @author Lion Li
- * @date 2024-07-09
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface ChatGptsMapper extends BaseMapperPlus<ChatGpts, ChatGptsVo> {
 
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java
index 239a5a4..f146a50 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java
@@ -1,15 +1,15 @@
 package org.ruoyi.mapper;
 
+
 import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
 import org.ruoyi.domain.ChatMessage;
 import org.ruoyi.domain.vo.ChatMessageVo;
 
-
 /**
  * 鑱婂ぉ娑堟伅Mapper鎺ュ彛
  *
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface ChatMessageMapper extends BaseMapperPlus<ChatMessage, ChatMessageVo> {
 
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatModelMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatModelMapper.java
new file mode 100644
index 0000000..1f22182
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatModelMapper.java
@@ -0,0 +1,15 @@
+package org.ruoyi.mapper;
+
+import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatModel;
+import org.ruoyi.domain.vo.ChatModelVo;
+
+/**
+ * 鑱婂ぉ妯″瀷Mapper鎺ュ彛
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatModelMapper extends BaseMapperPlus<ChatModel, ChatModelVo> {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPackagePlanMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPackagePlanMapper.java
new file mode 100644
index 0000000..753475d
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPackagePlanMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatPackagePlan;
+import org.ruoyi.domain.vo.ChatPackagePlanVo;
+
+/**
+ * 濂楅绠$悊Mapper鎺ュ彛
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatPackagePlanMapper extends BaseMapperPlus<ChatPackagePlan, ChatPackagePlanVo> {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPayOrderMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPayOrderMapper.java
new file mode 100644
index 0000000..475981f
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPayOrderMapper.java
@@ -0,0 +1,16 @@
+package org.ruoyi.mapper;
+
+
+import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
+import org.ruoyi.domain.ChatPayOrder;
+import org.ruoyi.domain.vo.ChatPayOrderVo;
+
+/**
+ * 鏀粯璁㈠崟Mapper鎺ュ彛
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatPayOrderMapper extends BaseMapperPlus<ChatPayOrder, ChatPayOrderVo> {
+
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java
index e0c6456..2d0dc7d 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java
@@ -1,15 +1,15 @@
 package org.ruoyi.mapper;
 
+
 import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
 import org.ruoyi.domain.ChatPlugin;
 import org.ruoyi.domain.vo.ChatPluginVo;
-
 
 /**
  * 鎻掍欢绠$悊Mapper鎺ュ彛
  *
  * @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
  */
 public interface ChatPluginMapper extends BaseMapperPlus<ChatPlugin, ChatPluginVo> {
 
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java
index 7c85930..63bf6e3 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java
@@ -4,12 +4,11 @@
 import org.ruoyi.domain.ChatVoucher;
 import org.ruoyi.domain.vo.ChatVoucherVo;
 
-
 /**
  * 鐢ㄦ埛鍏戞崲璁板綍Mapper鎺ュ彛
  *
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface ChatVoucherMapper extends BaseMapperPlus<ChatVoucher, ChatVoucherVo> {
 
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAgentManageService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAgentManageService.java
new file mode 100644
index 0000000..bf511dd
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAgentManageService.java
@@ -0,0 +1,49 @@
+package org.ruoyi.service;
+
+
+import org.ruoyi.domain.bo.ChatAgentManageBo;
+import org.ruoyi.system.domain.vo.ChatAgentManageVo;
+import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 鏅鸿兘浣撶鐞哠ervice鎺ュ彛
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatAgentManageService {
+
+    /**
+     * 鏌ヨ鏅鸿兘浣撶鐞�
+     */
+    ChatAgentManageVo queryById(Long id);
+
+    /**
+     * 鏌ヨ鏅鸿兘浣撶鐞嗗垪琛�
+     */
+    TableDataInfo<ChatAgentManageVo> queryPageList(ChatAgentManageBo bo, PageQuery pageQuery);
+
+    /**
+     * 鏌ヨ鏅鸿兘浣撶鐞嗗垪琛�
+     */
+    List<ChatAgentManageVo> queryList(ChatAgentManageBo bo);
+
+    /**
+     * 鏂板鏅鸿兘浣撶鐞�
+     */
+    Boolean insertByBo(ChatAgentManageBo bo);
+
+    /**
+     * 淇敼鏅鸿兘浣撶鐞�
+     */
+    Boolean updateByBo(ChatAgentManageBo bo);
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ゆ櫤鑳戒綋绠$悊淇℃伅
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java
index 3c5f4ef..03a55b8 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java
@@ -1,47 +1,49 @@
 package org.ruoyi.service;
 
-import org.ruoyi.common.mybatis.core.page.PageQuery;
-import org.ruoyi.common.mybatis.core.page.TableDataInfo;
-import org.ruoyi.domain.bo.ChatAppStoreBo;
-import org.ruoyi.domain.vo.ChatAppStoreVo;
 
+import org.ruoyi.domain.bo.ChatAppStoreBo;
+import org.ruoyi.system.domain.vo.ChatAppStoreVo;
+import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
 
 import java.util.Collection;
 import java.util.List;
 
 /**
- * 搴旂敤甯傚満Service鎺ュ彛
+ * 搴旂敤鍟嗗簵Service鎺ュ彛
  *
- * @author Lion Li
- * @date 2024-03-19
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IChatAppStoreService {
 
     /**
-     * 鏌ヨ搴旂敤甯傚満
+     * 鏌ヨ搴旂敤鍟嗗簵
      */
     ChatAppStoreVo queryById(Long id);
 
     /**
-     * 鏌ヨ搴旂敤甯傚満鍒楄〃
+     * 鏌ヨ搴旂敤鍟嗗簵鍒楄〃
      */
     TableDataInfo<ChatAppStoreVo> queryPageList(ChatAppStoreBo bo, PageQuery pageQuery);
 
     /**
-     * 鏌ヨ搴旂敤甯傚満鍒楄〃
+     * 鏌ヨ搴旂敤鍟嗗簵鍒楄〃
      */
     List<ChatAppStoreVo> queryList(ChatAppStoreBo bo);
 
+    /**
+     * 鏂板搴旂敤鍟嗗簵
+     */
+    Boolean insertByBo(ChatAppStoreBo bo);
 
     /**
-     * 淇敼搴旂敤甯傚満
+     * 淇敼搴旂敤鍟嗗簵
      */
     Boolean updateByBo(ChatAppStoreBo bo);
 
     /**
-     * 鏍¢獙骞舵壒閲忓垹闄ゅ簲鐢ㄥ競鍦轰俊鎭�
+     * 鏍¢獙骞舵壒閲忓垹闄ゅ簲鐢ㄥ晢搴椾俊鎭�
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
-
-
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java
index 6c77647..e0f6f8a 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java
@@ -1,7 +1,8 @@
 package org.ruoyi.service;
 
-import org.ruoyi.common.mybatis.core.page.PageQuery;
+
 import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
 import org.ruoyi.domain.bo.ChatConfigBo;
 import org.ruoyi.domain.vo.ChatConfigVo;
 
@@ -9,14 +10,15 @@
 import java.util.List;
 
 /**
- * 瀵硅瘽閰嶇疆淇℃伅Service鎺ュ彛
- * @date 2024-04-13
+ * 閰嶇疆淇℃伅Service鎺ュ彛
+ *
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IChatConfigService {
 
     /**
      * 鏌ヨ閰嶇疆淇℃伅
-
      */
     ChatConfigVo queryById(Long id);
 
@@ -32,7 +34,6 @@
 
     /**
      * 鏂板閰嶇疆淇℃伅
-
      */
     Boolean insertByBo(ChatConfigBo bo);
 
@@ -45,9 +46,4 @@
      * 鏍¢獙骞舵壒閲忓垹闄ら厤缃俊鎭俊鎭�
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
-
-    /**
-     * 鏌ヨ绯荤粺鍙傛暟
-     */
-    List<ChatConfigVo> getSysConfigValue(String category);
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java
index 808225d..6b7f177 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java
@@ -1,7 +1,8 @@
 package org.ruoyi.service;
 
-import org.ruoyi.common.mybatis.core.page.PageQuery;
+
 import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
 import org.ruoyi.domain.bo.ChatGptsBo;
 import org.ruoyi.domain.vo.ChatGptsVo;
 
@@ -9,40 +10,40 @@
 import java.util.List;
 
 /**
- * gpts绠$悊Service鎺ュ彛
+ * 搴旂敤绠$悊Service鎺ュ彛
  *
- * @author Lion Li
- * @date 2024-07-09
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IChatGptsService {
 
     /**
-     * 鏌ヨgpts绠$悊
+     * 鏌ヨ搴旂敤绠$悊
      */
     ChatGptsVo queryById(Long id);
 
     /**
-     * 鏌ヨgpts绠$悊鍒楄〃
+     * 鏌ヨ搴旂敤绠$悊鍒楄〃
      */
     TableDataInfo<ChatGptsVo> queryPageList(ChatGptsBo bo, PageQuery pageQuery);
 
     /**
-     * 鏌ヨgpts绠$悊鍒楄〃
+     * 鏌ヨ搴旂敤绠$悊鍒楄〃
      */
     List<ChatGptsVo> queryList(ChatGptsBo bo);
 
     /**
-     * 鏂板gpts绠$悊
+     * 鏂板搴旂敤绠$悊
      */
     Boolean insertByBo(ChatGptsBo bo);
 
     /**
-     * 淇敼gpts绠$悊
+     * 淇敼搴旂敤绠$悊
      */
     Boolean updateByBo(ChatGptsBo bo);
 
     /**
-     * 鏍¢獙骞舵壒閲忓垹闄pts绠$悊淇℃伅
+     * 鏍¢獙骞舵壒閲忓垹闄ゅ簲鐢ㄧ鐞嗕俊鎭�
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java
index f8bef4e..c83f178 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java
@@ -1,7 +1,8 @@
 package org.ruoyi.service;
 
-import org.ruoyi.common.mybatis.core.page.PageQuery;
+
 import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
 import org.ruoyi.domain.bo.ChatMessageBo;
 import org.ruoyi.domain.vo.ChatMessageVo;
 
@@ -11,8 +12,8 @@
 /**
  * 鑱婂ぉ娑堟伅Service鎺ュ彛
  *
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IChatMessageService {
 
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatModelService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatModelService.java
new file mode 100644
index 0000000..9657b59
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatModelService.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.ChatModelBo;
+import org.ruoyi.domain.vo.ChatModelVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 鑱婂ぉ妯″瀷Service鎺ュ彛
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatModelService {
+
+    /**
+     * 鏌ヨ鑱婂ぉ妯″瀷
+     */
+    ChatModelVo queryById(Long id);
+
+    /**
+     * 鏌ヨ鑱婂ぉ妯″瀷鍒楄〃
+     */
+    TableDataInfo<ChatModelVo> queryPageList(ChatModelBo bo, PageQuery pageQuery);
+
+    /**
+     * 鏌ヨ鑱婂ぉ妯″瀷鍒楄〃
+     */
+    List<ChatModelVo> queryList(ChatModelBo bo);
+
+    /**
+     * 鏂板鑱婂ぉ妯″瀷
+     */
+    Boolean insertByBo(ChatModelBo bo);
+
+    /**
+     * 淇敼鑱婂ぉ妯″瀷
+     */
+    Boolean updateByBo(ChatModelBo bo);
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄よ亰澶╂ā鍨嬩俊鎭�
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPackagePlanService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPackagePlanService.java
new file mode 100644
index 0000000..158fa25
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPackagePlanService.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.ChatPackagePlanBo;
+import org.ruoyi.domain.vo.ChatPackagePlanVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 濂楅绠$悊Service鎺ュ彛
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatPackagePlanService {
+
+    /**
+     * 鏌ヨ濂楅绠$悊
+     */
+    ChatPackagePlanVo queryById(Long id);
+
+    /**
+     * 鏌ヨ濂楅绠$悊鍒楄〃
+     */
+    TableDataInfo<ChatPackagePlanVo> queryPageList(ChatPackagePlanBo bo, PageQuery pageQuery);
+
+    /**
+     * 鏌ヨ濂楅绠$悊鍒楄〃
+     */
+    List<ChatPackagePlanVo> queryList(ChatPackagePlanBo bo);
+
+    /**
+     * 鏂板濂楅绠$悊
+     */
+    Boolean insertByBo(ChatPackagePlanBo bo);
+
+    /**
+     * 淇敼濂楅绠$悊
+     */
+    Boolean updateByBo(ChatPackagePlanBo bo);
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ゅ椁愮鐞嗕俊鎭�
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPayOrderService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPayOrderService.java
new file mode 100644
index 0000000..b2f8494
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPayOrderService.java
@@ -0,0 +1,48 @@
+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.ChatPayOrderBo;
+import org.ruoyi.domain.vo.ChatPayOrderVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 鏀粯璁㈠崟Service鎺ュ彛
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface IChatPayOrderService {
+
+    /**
+     * 鏌ヨ鏀粯璁㈠崟
+     */
+    ChatPayOrderVo queryById(Long id);
+
+    /**
+     * 鏌ヨ鏀粯璁㈠崟鍒楄〃
+     */
+    TableDataInfo<ChatPayOrderVo> queryPageList(ChatPayOrderBo bo, PageQuery pageQuery);
+
+    /**
+     * 鏌ヨ鏀粯璁㈠崟鍒楄〃
+     */
+    List<ChatPayOrderVo> queryList(ChatPayOrderBo bo);
+
+    /**
+     * 鏂板鏀粯璁㈠崟
+     */
+    Boolean insertByBo(ChatPayOrderBo bo);
+
+    /**
+     * 淇敼鏀粯璁㈠崟
+     */
+    Boolean updateByBo(ChatPayOrderBo bo);
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ゆ敮浠樿鍗曚俊鎭�
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java
index 08ed858..dbee18e 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java
@@ -1,7 +1,8 @@
 package org.ruoyi.service;
 
-import org.ruoyi.common.mybatis.core.page.PageQuery;
+
 import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
 import org.ruoyi.domain.bo.ChatPluginBo;
 import org.ruoyi.domain.vo.ChatPluginVo;
 
@@ -12,7 +13,7 @@
  * 鎻掍欢绠$悊Service鎺ュ彛
  *
  * @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
  */
 public interface IChatPluginService {
 
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java
index 2f81822..6b2fb96 100644
--- a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java
@@ -1,7 +1,8 @@
 package org.ruoyi.service;
 
-import org.ruoyi.common.mybatis.core.page.PageQuery;
+
 import org.ruoyi.common.mybatis.core.page.TableDataInfo;
+import org.ruoyi.common.mybatis.core.page.PageQuery;
 import org.ruoyi.domain.bo.ChatVoucherBo;
 import org.ruoyi.domain.vo.ChatVoucherVo;
 
@@ -11,8 +12,8 @@
 /**
  * 鐢ㄦ埛鍏戞崲璁板綍Service鎺ュ彛
  *
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IChatVoucherService {
 
@@ -45,9 +46,4 @@
      * 鏍¢獙骞舵壒閲忓垹闄ょ敤鎴峰厬鎹㈣褰曚俊鎭�
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
-
-    /**
-     * 鍏戞崲鍗″瘑
-     */
-    Boolean redeem(ChatVoucherBo bo);
 }
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAgentManageServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAgentManageServiceImpl.java
new file mode 100644
index 0000000..abcb4f7
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAgentManageServiceImpl.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.ChatAgentManage;
+import org.ruoyi.domain.bo.ChatAgentManageBo;
+import org.ruoyi.mapper.ChatAgentManageMapper;
+import org.ruoyi.service.IChatAgentManageService;
+import org.springframework.stereotype.Service;
+
+import org.ruoyi.system.domain.vo.ChatAgentManageVo;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 鏅鸿兘浣撶鐞哠ervice涓氬姟灞傚鐞�
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatAgentManageServiceImpl implements IChatAgentManageService {
+
+    private final ChatAgentManageMapper baseMapper;
+
+    /**
+     * 鏌ヨ鏅鸿兘浣撶鐞�
+     */
+    @Override
+    public ChatAgentManageVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ鏅鸿兘浣撶鐞嗗垪琛�
+     */
+    @Override
+    public TableDataInfo<ChatAgentManageVo> queryPageList(ChatAgentManageBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatAgentManage> lqw = buildQueryWrapper(bo);
+        Page<ChatAgentManageVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ鏅鸿兘浣撶鐞嗗垪琛�
+     */
+    @Override
+    public List<ChatAgentManageVo> queryList(ChatAgentManageBo bo) {
+        LambdaQueryWrapper<ChatAgentManage> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatAgentManage> buildQueryWrapper(ChatAgentManageBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatAgentManage> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getAppName()), ChatAgentManage::getAppName, bo.getAppName());
+        lqw.eq(StringUtils.isNotBlank(bo.getAppType()), ChatAgentManage::getAppType, bo.getAppType());
+        lqw.eq(StringUtils.isNotBlank(bo.getAppIcon()), ChatAgentManage::getAppIcon, bo.getAppIcon());
+        lqw.eq(StringUtils.isNotBlank(bo.getAppDescription()), ChatAgentManage::getAppDescription, bo.getAppDescription());
+        lqw.eq(StringUtils.isNotBlank(bo.getIntroduction()), ChatAgentManage::getIntroduction, bo.getIntroduction());
+        lqw.eq(StringUtils.isNotBlank(bo.getModel()), ChatAgentManage::getModel, bo.getModel());
+        lqw.eq(StringUtils.isNotBlank(bo.getConversationModel()), ChatAgentManage::getConversationModel, bo.getConversationModel());
+        lqw.eq(StringUtils.isNotBlank(bo.getApplicationSettings()), ChatAgentManage::getApplicationSettings, bo.getApplicationSettings());
+        lqw.eq(StringUtils.isNotBlank(bo.getPluginId()), ChatAgentManage::getPluginId, bo.getPluginId());
+        lqw.eq(bo.getKnowledgeId() != null, ChatAgentManage::getKnowledgeId, bo.getKnowledgeId());
+        return lqw;
+    }
+
+    /**
+     * 鏂板鏅鸿兘浣撶鐞�
+     */
+    @Override
+    public Boolean insertByBo(ChatAgentManageBo bo) {
+        ChatAgentManage add = MapstructUtils.convert(bo, ChatAgentManage.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼鏅鸿兘浣撶鐞�
+     */
+    @Override
+    public Boolean updateByBo(ChatAgentManageBo bo) {
+        ChatAgentManage update = MapstructUtils.convert(bo, ChatAgentManage.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(ChatAgentManage entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鏅鸿兘浣撶鐞�
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAppStoreServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAppStoreServiceImpl.java
new file mode 100644
index 0000000..55a6340
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAppStoreServiceImpl.java
@@ -0,0 +1,113 @@
+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.ChatAppStore;
+import org.ruoyi.domain.bo.ChatAppStoreBo;
+import org.ruoyi.mapper.ChatAppStoreMapper;
+import org.ruoyi.service.IChatAppStoreService;
+import org.springframework.stereotype.Service;
+
+import org.ruoyi.system.domain.vo.ChatAppStoreVo;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 搴旂敤鍟嗗簵Service涓氬姟灞傚鐞�
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatAppStoreServiceImpl implements IChatAppStoreService {
+
+    private final ChatAppStoreMapper baseMapper;
+
+    /**
+     * 鏌ヨ搴旂敤鍟嗗簵
+     */
+    @Override
+    public ChatAppStoreVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ搴旂敤鍟嗗簵鍒楄〃
+     */
+    @Override
+    public TableDataInfo<ChatAppStoreVo> queryPageList(ChatAppStoreBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatAppStore> lqw = buildQueryWrapper(bo);
+        Page<ChatAppStoreVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ搴旂敤鍟嗗簵鍒楄〃
+     */
+    @Override
+    public List<ChatAppStoreVo> queryList(ChatAppStoreBo bo) {
+        LambdaQueryWrapper<ChatAppStore> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatAppStore> buildQueryWrapper(ChatAppStoreBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatAppStore> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getName()), ChatAppStore::getName, bo.getName());
+        lqw.eq(StringUtils.isNotBlank(bo.getDescription()), ChatAppStore::getDescription, bo.getDescription());
+        lqw.eq(StringUtils.isNotBlank(bo.getAvatar()), ChatAppStore::getAvatar, bo.getAvatar());
+        lqw.eq(StringUtils.isNotBlank(bo.getAppUrl()), ChatAppStore::getAppUrl, bo.getAppUrl());
+        return lqw;
+    }
+
+    /**
+     * 鏂板搴旂敤鍟嗗簵
+     */
+    @Override
+    public Boolean insertByBo(ChatAppStoreBo bo) {
+        ChatAppStore add = MapstructUtils.convert(bo, ChatAppStore.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼搴旂敤鍟嗗簵
+     */
+    @Override
+    public Boolean updateByBo(ChatAppStoreBo bo) {
+        ChatAppStore update = MapstructUtils.convert(bo, ChatAppStore.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(ChatAppStore entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎搴旂敤鍟嗗簵
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatConfigServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatConfigServiceImpl.java
new file mode 100644
index 0000000..3d62159
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatConfigServiceImpl.java
@@ -0,0 +1,114 @@
+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.ChatConfig;
+import org.ruoyi.domain.bo.ChatConfigBo;
+import org.ruoyi.domain.vo.ChatConfigVo;
+import org.ruoyi.mapper.ChatConfigMapper;
+import org.ruoyi.service.IChatConfigService;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 閰嶇疆淇℃伅Service涓氬姟灞傚鐞�
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatConfigServiceImpl implements IChatConfigService {
+
+    private final ChatConfigMapper baseMapper;
+
+    /**
+     * 鏌ヨ閰嶇疆淇℃伅
+     */
+    @Override
+    public ChatConfigVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ閰嶇疆淇℃伅鍒楄〃
+     */
+    @Override
+    public TableDataInfo<ChatConfigVo> queryPageList(ChatConfigBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatConfig> lqw = buildQueryWrapper(bo);
+        Page<ChatConfigVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ閰嶇疆淇℃伅鍒楄〃
+     */
+    @Override
+    public List<ChatConfigVo> queryList(ChatConfigBo bo) {
+        LambdaQueryWrapper<ChatConfig> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatConfig> buildQueryWrapper(ChatConfigBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatConfig> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getCategory()), ChatConfig::getCategory, bo.getCategory());
+        lqw.like(StringUtils.isNotBlank(bo.getConfigName()), ChatConfig::getConfigName, bo.getConfigName());
+        lqw.eq(StringUtils.isNotBlank(bo.getConfigValue()), ChatConfig::getConfigValue, bo.getConfigValue());
+        lqw.eq(StringUtils.isNotBlank(bo.getConfigDict()), ChatConfig::getConfigDict, bo.getConfigDict());
+        lqw.eq(StringUtils.isNotBlank(bo.getUpdateIp()), ChatConfig::getUpdateIp, bo.getUpdateIp());
+        return lqw;
+    }
+
+    /**
+     * 鏂板閰嶇疆淇℃伅
+     */
+    @Override
+    public Boolean insertByBo(ChatConfigBo bo) {
+        ChatConfig add = MapstructUtils.convert(bo, ChatConfig.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼閰嶇疆淇℃伅
+     */
+    @Override
+    public Boolean updateByBo(ChatConfigBo bo) {
+        ChatConfig update = MapstructUtils.convert(bo, ChatConfig.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(ChatConfig entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎閰嶇疆淇℃伅
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatGptsServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatGptsServiceImpl.java
new file mode 100644
index 0000000..0361d10
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatGptsServiceImpl.java
@@ -0,0 +1,119 @@
+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.ChatGpts;
+import org.ruoyi.domain.bo.ChatGptsBo;
+import org.ruoyi.domain.vo.ChatGptsVo;
+import org.ruoyi.mapper.ChatGptsMapper;
+import org.ruoyi.service.IChatGptsService;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 搴旂敤绠$悊Service涓氬姟灞傚鐞�
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatGptsServiceImpl implements IChatGptsService {
+
+    private final ChatGptsMapper baseMapper;
+
+    /**
+     * 鏌ヨ搴旂敤绠$悊
+     */
+    @Override
+    public ChatGptsVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ搴旂敤绠$悊鍒楄〃
+     */
+    @Override
+    public TableDataInfo<ChatGptsVo> queryPageList(ChatGptsBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatGpts> lqw = buildQueryWrapper(bo);
+        Page<ChatGptsVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ搴旂敤绠$悊鍒楄〃
+     */
+    @Override
+    public List<ChatGptsVo> queryList(ChatGptsBo bo) {
+        LambdaQueryWrapper<ChatGpts> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatGpts> buildQueryWrapper(ChatGptsBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatGpts> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getGid()), ChatGpts::getGid, bo.getGid());
+        lqw.like(StringUtils.isNotBlank(bo.getName()), ChatGpts::getName, bo.getName());
+        lqw.eq(StringUtils.isNotBlank(bo.getLogo()), ChatGpts::getLogo, bo.getLogo());
+        lqw.eq(StringUtils.isNotBlank(bo.getInfo()), ChatGpts::getInfo, bo.getInfo());
+        lqw.eq(StringUtils.isNotBlank(bo.getAuthorId()), ChatGpts::getAuthorId, bo.getAuthorId());
+        lqw.like(StringUtils.isNotBlank(bo.getAuthorName()), ChatGpts::getAuthorName, bo.getAuthorName());
+        lqw.eq(bo.getUseCnt() != null, ChatGpts::getUseCnt, bo.getUseCnt());
+        lqw.eq(bo.getBad() != null, ChatGpts::getBad, bo.getBad());
+        lqw.eq(StringUtils.isNotBlank(bo.getType()), ChatGpts::getType, bo.getType());
+        lqw.eq(StringUtils.isNotBlank(bo.getUpdateIp()), ChatGpts::getUpdateIp, bo.getUpdateIp());
+        return lqw;
+    }
+
+    /**
+     * 鏂板搴旂敤绠$悊
+     */
+    @Override
+    public Boolean insertByBo(ChatGptsBo bo) {
+        ChatGpts add = MapstructUtils.convert(bo, ChatGpts.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼搴旂敤绠$悊
+     */
+    @Override
+    public Boolean updateByBo(ChatGptsBo bo) {
+        ChatGpts update = MapstructUtils.convert(bo, ChatGpts.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(ChatGpts entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎搴旂敤绠$悊
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatMessageServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatMessageServiceImpl.java
new file mode 100644
index 0000000..0f9cb16
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatMessageServiceImpl.java
@@ -0,0 +1,115 @@
+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.ChatMessage;
+import org.ruoyi.domain.bo.ChatMessageBo;
+import org.ruoyi.domain.vo.ChatMessageVo;
+import org.ruoyi.mapper.ChatMessageMapper;
+import org.ruoyi.service.IChatMessageService;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 鑱婂ぉ娑堟伅Service涓氬姟灞傚鐞�
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatMessageServiceImpl implements IChatMessageService {
+
+    private final ChatMessageMapper baseMapper;
+
+    /**
+     * 鏌ヨ鑱婂ぉ娑堟伅
+     */
+    @Override
+    public ChatMessageVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ鑱婂ぉ娑堟伅鍒楄〃
+     */
+    @Override
+    public TableDataInfo<ChatMessageVo> queryPageList(ChatMessageBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatMessage> lqw = buildQueryWrapper(bo);
+        Page<ChatMessageVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ鑱婂ぉ娑堟伅鍒楄〃
+     */
+    @Override
+    public List<ChatMessageVo> queryList(ChatMessageBo bo) {
+        LambdaQueryWrapper<ChatMessage> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatMessage> buildQueryWrapper(ChatMessageBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatMessage> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, ChatMessage::getUserId, bo.getUserId());
+        lqw.eq(StringUtils.isNotBlank(bo.getContent()), ChatMessage::getContent, bo.getContent());
+        lqw.eq(StringUtils.isNotBlank(bo.getRole()), ChatMessage::getRole, bo.getRole());
+        lqw.eq(bo.getDeductCost() != null, ChatMessage::getDeductCost, bo.getDeductCost());
+        lqw.eq(bo.getTotalTokens() != null, ChatMessage::getTotalTokens, bo.getTotalTokens());
+        lqw.like(StringUtils.isNotBlank(bo.getModelName()), ChatMessage::getModelName, bo.getModelName());
+        return lqw;
+    }
+
+    /**
+     * 鏂板鑱婂ぉ娑堟伅
+     */
+    @Override
+    public Boolean insertByBo(ChatMessageBo bo) {
+        ChatMessage add = MapstructUtils.convert(bo, ChatMessage.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼鑱婂ぉ娑堟伅
+     */
+    @Override
+    public Boolean updateByBo(ChatMessageBo bo) {
+        ChatMessage update = MapstructUtils.convert(bo, ChatMessage.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(ChatMessage entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鑱婂ぉ娑堟伅
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatModelServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatModelServiceImpl.java
new file mode 100644
index 0000000..26d4533
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatModelServiceImpl.java
@@ -0,0 +1,118 @@
+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.ChatModel;
+import org.ruoyi.domain.bo.ChatModelBo;
+import org.ruoyi.domain.vo.ChatModelVo;
+import org.ruoyi.mapper.ChatModelMapper;
+import org.ruoyi.service.IChatModelService;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 鑱婂ぉ妯″瀷Service涓氬姟灞傚鐞�
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatModelServiceImpl implements IChatModelService {
+
+    private final ChatModelMapper baseMapper;
+
+    /**
+     * 鏌ヨ鑱婂ぉ妯″瀷
+     */
+    @Override
+    public ChatModelVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ鑱婂ぉ妯″瀷鍒楄〃
+     */
+    @Override
+    public TableDataInfo<ChatModelVo> queryPageList(ChatModelBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatModel> lqw = buildQueryWrapper(bo);
+        Page<ChatModelVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ鑱婂ぉ妯″瀷鍒楄〃
+     */
+    @Override
+    public List<ChatModelVo> queryList(ChatModelBo bo) {
+        LambdaQueryWrapper<ChatModel> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatModel> buildQueryWrapper(ChatModelBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatModel> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getCategory()), ChatModel::getCategory, bo.getCategory());
+        lqw.like(StringUtils.isNotBlank(bo.getModelName()), ChatModel::getModelName, bo.getModelName());
+        lqw.eq(StringUtils.isNotBlank(bo.getModelDescribe()), ChatModel::getModelDescribe, bo.getModelDescribe());
+        lqw.eq(bo.getModelPrice() != null, ChatModel::getModelPrice, bo.getModelPrice());
+        lqw.eq(StringUtils.isNotBlank(bo.getModelType()), ChatModel::getModelType, bo.getModelType());
+        lqw.eq(StringUtils.isNotBlank(bo.getModelShow()), ChatModel::getModelShow, bo.getModelShow());
+        lqw.eq(StringUtils.isNotBlank(bo.getSystemPrompt()), ChatModel::getSystemPrompt, bo.getSystemPrompt());
+        lqw.eq(StringUtils.isNotBlank(bo.getApiHost()), ChatModel::getApiHost, bo.getApiHost());
+        lqw.eq(StringUtils.isNotBlank(bo.getApiKey()), ChatModel::getApiKey, bo.getApiKey());
+        return lqw;
+    }
+
+    /**
+     * 鏂板鑱婂ぉ妯″瀷
+     */
+    @Override
+    public Boolean insertByBo(ChatModelBo bo) {
+        ChatModel add = MapstructUtils.convert(bo, ChatModel.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼鑱婂ぉ妯″瀷
+     */
+    @Override
+    public Boolean updateByBo(ChatModelBo bo) {
+        ChatModel update = MapstructUtils.convert(bo, ChatModel.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(ChatModel entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鑱婂ぉ妯″瀷
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPackagePlanServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPackagePlanServiceImpl.java
new file mode 100644
index 0000000..0d92054
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPackagePlanServiceImpl.java
@@ -0,0 +1,113 @@
+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.ChatPackagePlan;
+import org.ruoyi.domain.bo.ChatPackagePlanBo;
+import org.ruoyi.domain.vo.ChatPackagePlanVo;
+import org.ruoyi.mapper.ChatPackagePlanMapper;
+import org.ruoyi.service.IChatPackagePlanService;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 濂楅绠$悊Service涓氬姟灞傚鐞�
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatPackagePlanServiceImpl implements IChatPackagePlanService {
+
+    private final ChatPackagePlanMapper baseMapper;
+
+    /**
+     * 鏌ヨ濂楅绠$悊
+     */
+    @Override
+    public ChatPackagePlanVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ濂楅绠$悊鍒楄〃
+     */
+    @Override
+    public TableDataInfo<ChatPackagePlanVo> queryPageList(ChatPackagePlanBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatPackagePlan> lqw = buildQueryWrapper(bo);
+        Page<ChatPackagePlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ濂楅绠$悊鍒楄〃
+     */
+    @Override
+    public List<ChatPackagePlanVo> queryList(ChatPackagePlanBo bo) {
+        LambdaQueryWrapper<ChatPackagePlan> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatPackagePlan> buildQueryWrapper(ChatPackagePlanBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatPackagePlan> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getName()), ChatPackagePlan::getName, bo.getName());
+        lqw.eq(bo.getPrice() != null, ChatPackagePlan::getPrice, bo.getPrice());
+        lqw.eq(bo.getDuration() != null, ChatPackagePlan::getDuration, bo.getDuration());
+        lqw.eq(StringUtils.isNotBlank(bo.getPlanDetail()), ChatPackagePlan::getPlanDetail, bo.getPlanDetail());
+        return lqw;
+    }
+
+    /**
+     * 鏂板濂楅绠$悊
+     */
+    @Override
+    public Boolean insertByBo(ChatPackagePlanBo bo) {
+        ChatPackagePlan add = MapstructUtils.convert(bo, ChatPackagePlan.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼濂楅绠$悊
+     */
+    @Override
+    public Boolean updateByBo(ChatPackagePlanBo bo) {
+        ChatPackagePlan update = MapstructUtils.convert(bo, ChatPackagePlan.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(ChatPackagePlan entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎濂楅绠$悊
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPayOrderServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPayOrderServiceImpl.java
new file mode 100644
index 0000000..386f141
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPayOrderServiceImpl.java
@@ -0,0 +1,115 @@
+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.ChatPayOrder;
+import org.ruoyi.domain.bo.ChatPayOrderBo;
+import org.ruoyi.domain.vo.ChatPayOrderVo;
+import org.ruoyi.mapper.ChatPayOrderMapper;
+import org.ruoyi.service.IChatPayOrderService;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 鏀粯璁㈠崟Service涓氬姟灞傚鐞�
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatPayOrderServiceImpl implements IChatPayOrderService {
+
+    private final ChatPayOrderMapper baseMapper;
+
+    /**
+     * 鏌ヨ鏀粯璁㈠崟
+     */
+    @Override
+    public ChatPayOrderVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ鏀粯璁㈠崟鍒楄〃
+     */
+    @Override
+    public TableDataInfo<ChatPayOrderVo> queryPageList(ChatPayOrderBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatPayOrder> lqw = buildQueryWrapper(bo);
+        Page<ChatPayOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ鏀粯璁㈠崟鍒楄〃
+     */
+    @Override
+    public List<ChatPayOrderVo> queryList(ChatPayOrderBo bo) {
+        LambdaQueryWrapper<ChatPayOrder> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatPayOrder> buildQueryWrapper(ChatPayOrderBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatPayOrder> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), ChatPayOrder::getOrderNo, bo.getOrderNo());
+        lqw.like(StringUtils.isNotBlank(bo.getOrderName()), ChatPayOrder::getOrderName, bo.getOrderName());
+        lqw.eq(bo.getAmount() != null, ChatPayOrder::getAmount, bo.getAmount());
+        lqw.eq(StringUtils.isNotBlank(bo.getPaymentStatus()), ChatPayOrder::getPaymentStatus, bo.getPaymentStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ChatPayOrder::getPaymentMethod, bo.getPaymentMethod());
+        lqw.eq(bo.getUserId() != null, ChatPayOrder::getUserId, bo.getUserId());
+        return lqw;
+    }
+
+    /**
+     * 鏂板鏀粯璁㈠崟
+     */
+    @Override
+    public Boolean insertByBo(ChatPayOrderBo bo) {
+        ChatPayOrder add = MapstructUtils.convert(bo, ChatPayOrder.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼鏀粯璁㈠崟
+     */
+    @Override
+    public Boolean updateByBo(ChatPayOrderBo bo) {
+        ChatPayOrder update = MapstructUtils.convert(bo, ChatPayOrder.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(ChatPayOrder entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鏀粯璁㈠崟
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPluginServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPluginServiceImpl.java
new file mode 100644
index 0000000..1dd9e0a
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPluginServiceImpl.java
@@ -0,0 +1,110 @@
+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.ChatPlugin;
+import org.ruoyi.domain.bo.ChatPluginBo;
+import org.ruoyi.domain.vo.ChatPluginVo;
+import org.ruoyi.mapper.ChatPluginMapper;
+import org.ruoyi.service.IChatPluginService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 鎻掍欢绠$悊Service涓氬姟灞傚鐞�
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatPluginServiceImpl implements IChatPluginService {
+
+    private final ChatPluginMapper baseMapper;
+
+    /**
+     * 鏌ヨ鎻掍欢绠$悊
+     */
+    @Override
+    public ChatPluginVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ鎻掍欢绠$悊鍒楄〃
+     */
+    @Override
+    public TableDataInfo<ChatPluginVo> queryPageList(ChatPluginBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatPlugin> lqw = buildQueryWrapper(bo);
+        Page<ChatPluginVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ鎻掍欢绠$悊鍒楄〃
+     */
+    @Override
+    public List<ChatPluginVo> queryList(ChatPluginBo bo) {
+        LambdaQueryWrapper<ChatPlugin> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatPlugin> buildQueryWrapper(ChatPluginBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatPlugin> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getName()), ChatPlugin::getName, bo.getName());
+        lqw.eq(StringUtils.isNotBlank(bo.getCode()), ChatPlugin::getCode, bo.getCode());
+        return lqw;
+    }
+
+    /**
+     * 鏂板鎻掍欢绠$悊
+     */
+    @Override
+    public Boolean insertByBo(ChatPluginBo bo) {
+        ChatPlugin add = MapstructUtils.convert(bo, ChatPlugin.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼鎻掍欢绠$悊
+     */
+    @Override
+    public Boolean updateByBo(ChatPluginBo bo) {
+        ChatPlugin update = MapstructUtils.convert(bo, ChatPlugin.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(ChatPlugin entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鎻掍欢绠$悊
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatVoucherServiceImpl.java b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatVoucherServiceImpl.java
new file mode 100644
index 0000000..f8ab361
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatVoucherServiceImpl.java
@@ -0,0 +1,114 @@
+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.ChatVoucher;
+import org.ruoyi.domain.bo.ChatVoucherBo;
+import org.ruoyi.domain.vo.ChatVoucherVo;
+import org.ruoyi.mapper.ChatVoucherMapper;
+import org.ruoyi.service.IChatVoucherService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 鐢ㄦ埛鍏戞崲璁板綍Service涓氬姟灞傚鐞�
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+@RequiredArgsConstructor
+@Service
+public class ChatVoucherServiceImpl implements IChatVoucherService {
+
+    private final ChatVoucherMapper baseMapper;
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鍏戞崲璁板綍
+     */
+    @Override
+    public ChatVoucherVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鍏戞崲璁板綍鍒楄〃
+     */
+    @Override
+    public TableDataInfo<ChatVoucherVo> queryPageList(ChatVoucherBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ChatVoucher> lqw = buildQueryWrapper(bo);
+        Page<ChatVoucherVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ鐢ㄦ埛鍏戞崲璁板綍鍒楄〃
+     */
+    @Override
+    public List<ChatVoucherVo> queryList(ChatVoucherBo bo) {
+        LambdaQueryWrapper<ChatVoucher> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ChatVoucher> buildQueryWrapper(ChatVoucherBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ChatVoucher> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getCode()), ChatVoucher::getCode, bo.getCode());
+        lqw.eq(bo.getAmount() != null, ChatVoucher::getAmount, bo.getAmount());
+        lqw.eq(bo.getUserId() != null, ChatVoucher::getUserId, bo.getUserId());
+        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ChatVoucher::getStatus, bo.getStatus());
+        lqw.eq(bo.getBalanceBefore() != null, ChatVoucher::getBalanceBefore, bo.getBalanceBefore());
+        lqw.eq(bo.getBalanceAfter() != null, ChatVoucher::getBalanceAfter, bo.getBalanceAfter());
+        return lqw;
+    }
+
+    /**
+     * 鏂板鐢ㄦ埛鍏戞崲璁板綍
+     */
+    @Override
+    public Boolean insertByBo(ChatVoucherBo bo) {
+        ChatVoucher add = MapstructUtils.convert(bo, ChatVoucher.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼鐢ㄦ埛鍏戞崲璁板綍
+     */
+    @Override
+    public Boolean updateByBo(ChatVoucherBo bo) {
+        ChatVoucher update = MapstructUtils.convert(bo, ChatVoucher.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(ChatVoucher entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鐢ㄦ埛鍏戞崲璁板綍
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAgentManageMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAgentManageMapper.xml
new file mode 100644
index 0000000..cfa640d
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAgentManageMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.ruoyi.mapper.ChatAgentManageMapper">
+
+</mapper>
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAppStoreMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAppStoreMapper.xml
new file mode 100644
index 0000000..53b29af
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAppStoreMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.ruoyi.mapper.ChatAppStoreMapper">
+
+</mapper>
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatGptsMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatGptsMapper.xml
new file mode 100644
index 0000000..cc22a8f
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatGptsMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.ruoyi.mapper.ChatGptsMapper">
+
+</mapper>
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatMessageMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatMessageMapper.xml
new file mode 100644
index 0000000..000a091
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatMessageMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.ruoyi.mapper.ChatMessageMapper">
+
+</mapper>
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatModelMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatModelMapper.xml
new file mode 100644
index 0000000..4e5a30e
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatModelMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.ruoyi.mapper.ChatModelMapper">
+
+</mapper>
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPackagePlanMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPackagePlanMapper.xml
new file mode 100644
index 0000000..9875672
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPackagePlanMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.ruoyi.mapper.ChatPackagePlanMapper">
+
+</mapper>
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPayOrderMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPayOrderMapper.xml
new file mode 100644
index 0000000..ca5ab53
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPayOrderMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.ruoyi.mapper.ChatPayOrderMapper">
+
+</mapper>
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPluginMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPluginMapper.xml
new file mode 100644
index 0000000..f1dacfb
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPluginMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.ruoyi.mapper.ChatPluginMapper">
+
+</mapper>
diff --git a/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatVoucherMapper.xml b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatVoucherMapper.xml
new file mode 100644
index 0000000..9ef2787
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatVoucherMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.ruoyi.mapper.ChatVoucherMapper">
+
+</mapper>
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-modules/ruoyi-system/src/main/resources/application-dev.yml
similarity index 100%
rename from ruoyi-admin/src/main/resources/application-dev.yml
rename to ruoyi-modules/ruoyi-system/src/main/resources/application-dev.yml

--
Gitblit v1.9.3