Browse Source

feat: ruoyi-chat-api模块调整

ageer 2 months ago
parent
commit
5a5a48e153
70 changed files with 2716 additions and 336 deletions
  1. 86 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAgentManage.java
  2. 7 9
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatAppStore.java
  3. 11 9
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatConfig.java
  4. 6 19
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatGpts.java
  5. 17 23
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatMessage.java
  6. 82 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatModel.java
  7. 58 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPackagePlan.java
  8. 68 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPayOrder.java
  9. 2 3
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatPlugin.java
  10. 10 10
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/ChatVoucher.java
  11. 96 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAgentManageBo.java
  12. 18 18
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatAppStoreBo.java
  13. 9 15
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatConfigBo.java
  14. 19 20
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatGptsBo.java
  15. 23 20
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatMessageBo.java
  16. 90 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatModelBo.java
  17. 61 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPackagePlanBo.java
  18. 73 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPayOrderBo.java
  19. 6 8
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatPluginBo.java
  20. 20 16
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/bo/ChatVoucherBo.java
  21. 104 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAgentManageVo.java
  22. 13 13
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatAppStoreVo.java
  23. 6 9
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatConfigVo.java
  24. 9 18
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatGptsVo.java
  25. 22 33
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatMessageVo.java
  26. 97 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatModelVo.java
  27. 68 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPackagePlanVo.java
  28. 80 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPayOrderVo.java
  29. 5 2
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatPluginVo.java
  30. 14 21
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/domain/vo/ChatVoucherVo.java
  31. 16 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAgentManageMapper.java
  32. 6 6
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatAppStoreMapper.java
  33. 4 5
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatConfigMapper.java
  34. 3 4
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java
  35. 3 3
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatMessageMapper.java
  36. 15 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatModelMapper.java
  37. 16 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPackagePlanMapper.java
  38. 16 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPayOrderMapper.java
  39. 2 2
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatPluginMapper.java
  40. 2 3
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java
  41. 49 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAgentManageService.java
  42. 16 14
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatAppStoreService.java
  43. 6 10
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatConfigService.java
  44. 11 10
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatGptsService.java
  45. 4 3
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatMessageService.java
  46. 49 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatModelService.java
  47. 49 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPackagePlanService.java
  48. 48 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPayOrderService.java
  49. 3 2
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatPluginService.java
  50. 4 8
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/IChatVoucherService.java
  51. 120 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAgentManageServiceImpl.java
  52. 113 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatAppStoreServiceImpl.java
  53. 114 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatConfigServiceImpl.java
  54. 119 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatGptsServiceImpl.java
  55. 115 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatMessageServiceImpl.java
  56. 118 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatModelServiceImpl.java
  57. 113 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPackagePlanServiceImpl.java
  58. 115 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPayOrderServiceImpl.java
  59. 110 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatPluginServiceImpl.java
  60. 114 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/service/impl/ChatVoucherServiceImpl.java
  61. 7 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAgentManageMapper.xml
  62. 7 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatAppStoreMapper.xml
  63. 7 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatGptsMapper.xml
  64. 7 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatMessageMapper.xml
  65. 7 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatModelMapper.xml
  66. 7 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPackagePlanMapper.xml
  67. 7 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPayOrderMapper.xml
  68. 7 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatPluginMapper.xml
  69. 7 0
      ruoyi-modules-api/ruoyi-chat-api/src/main/resources/mapper/ChatVoucherMapper.xml
  70. 0 0
      ruoyi-modules/ruoyi-system/src/main/resources/application-dev.yml

+ 86 - 0
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;
+
+    /**
+     * 知识库id
+     */
+    private Long knowledgeId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 7 - 9
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 org.ruoyi.common.mybatis.core.domain.BaseEntity;
 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 @@ public class ChatAppStore extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
     /**
-     * 主键
+     * id
      */
     @TableId(value = "id")
     private Long id;
@@ -39,16 +38,15 @@ public class ChatAppStore extends BaseEntity {
     private String description;
 
     /**
-     * 头像
+     * logo
      */
     private String avatar;
 
     /**
-     * 应用地址
+     * 地址
      */
     private String appUrl;
 
-
     /**
      * 备注
      */

+ 11 - 9
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 @@ public class ChatConfig extends BaseEntity {
     /**
      * 配置值
      */
-    @Sensitive(strategy = SensitiveStrategy.SKY)
     private String configValue;
 
     /**
@@ -57,6 +53,12 @@ public class ChatConfig extends BaseEntity {
      */
     private String remark;
 
+    /**
+     * 版本
+     */
+    @Version
+    private Long version;
+
     /**
      * 删除标志(0代表存在 1代表删除)
      */

+ 6 - 19
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 org.ruoyi.common.mybatis.core.domain.BaseEntity;
 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 @@ public class ChatGpts extends BaseEntity {
     /**
      * 点赞
      */
-    private String useCnt;
+    private Long useCnt;
 
     /**
      * 差评
      */
-    private String bad;
+    private Long bad;
 
     /**
      * 类型
@@ -97,15 +94,5 @@ public class ChatGpts extends BaseEntity {
      */
     private String updateIp;
 
-    /**
-     * 模型名称
-     */
-    private String modelName;
-
-
-    /**
-     * 模型system
-     */
-    private String systemPrompt;
 
 }

+ 17 - 23
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 @@ public class ChatMessage extends BaseEntity {
     /**
      * 主键
      */
-    @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+    @TableId(value = "id")
     private Long id;
 
     /**
-     * 用户ID
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 消息内容
      */
-    @NotBlank(message = "用户ID", groups = { AddGroup.class, EditGroup.class })
-    private Long UserId;
+    private String content;
 
     /**
      * 对话角色
      */
     private String role;
 
-
     /**
-     * 消息内容
-     */
-    @NotBlank(message = "消息内容不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String content;
+     * 扣除金额
 
 
-    /**
-     * 扣除费用
      */
-    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;
 
+
 }

+ 82 - 0
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;
+
+
+}

+ 58 - 0
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;
+
+
+}

+ 68 - 0
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;
+
+
+}

+ 2 - 3
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 @@ import java.io.Serial;
  * 插件管理对象 chat_plugin
  *
  * @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
  */
 @Data
 @EqualsAndHashCode(callSuper = true)

+ 10 - 10
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)
@@ -29,11 +29,6 @@ public class ChatVoucher extends BaseEntity {
     @TableId(value = "id")
     private Long id;
 
-    /**
-     * 用户id
-     */
-    private Long userId;
-
     /**
      * 兑换码
      */
@@ -44,6 +39,11 @@ public class ChatVoucher extends BaseEntity {
      */
     private BigDecimal amount;
 
+    /**
+     * 用户id
+     */
+    private Long userId;
+
     /**
      * 兑换状态
      */

+ 96 - 0
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;
+
+    /**
+     * 知识库id
+     */
+    @NotNull(message = "知识库id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long knowledgeId;
+
+    /**
+     * 备注
+     */
+    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String remark;
+
+
+}

+ 18 - 18
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 @@ public class ChatAppStoreBo extends BaseEntity {
     /**
      * 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;
 
 

+ 9 - 15
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 @@ public class ChatConfigBo extends BaseEntity {
     /**
      * 配置值
      */
-    @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;
 
     /**

+ 19 - 20
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 @@ public class ChatGptsBo extends BaseEntity {
     /**
      * gpts图标
      */
+    @NotBlank(message = "gpts图标不能为空", groups = { AddGroup.class, EditGroup.class })
     private String logo;
 
     /**
      * gpts描述
      */
+    @NotBlank(message = "gpts描述不能为空", groups = { AddGroup.class, EditGroup.class })
     private String info;
 
     /**
      * 作者id
      */
+    @NotBlank(message = "作者id不能为空", 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;
 
 }

+ 23 - 20
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,44 +28,48 @@ public class ChatMessageBo extends BaseEntity {
     private Long id;
 
     /**
-     * 用户ID
+     * 用户id
      */
+    @NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class })
     private Long userId;
 
     /**
-     * 用户名称
+     * 消息内容
      */
-    private String userName;
+    @NotBlank(message = "消息内容不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String content;
 
     /**
      * 对话角色
      */
+    @NotBlank(message = "对话角色不能为空", groups = { AddGroup.class, EditGroup.class })
     private String role;
 
     /**
-     * 消息内容
-     */
-    @NotBlank(message = "消息内容不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String content;
+     * 扣除金额
+
 
-    /**
-     * 扣除费用
      */
-    private Double deductCost;
+    @NotNull(message = "扣除金额不能为空", 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;
 
+
 }

+ 90 - 0
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;
+
+
+}

+ 61 - 0
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;
+
+
+}

+ 73 - 0
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;
+
+
+}

+ 6 - 8
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)

+ 20 - 16
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)
@@ -29,14 +27,10 @@ public class ChatVoucherBo extends BaseEntity {
     @NotNull(message = "主键不能为空", groups = { EditGroup.class })
     private Long id;
 
-    /**
-     * 用户id
-     */
-    private Long userId;
-
     /**
      * 兑换码
      */
+    @NotBlank(message = "兑换码不能为空", groups = { AddGroup.class, EditGroup.class })
     private String code;
 
     /**
@@ -45,24 +39,34 @@ public class ChatVoucherBo extends BaseEntity {
     @NotNull(message = "兑换金额不能为空", groups = { AddGroup.class, EditGroup.class })
     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;
 
 

+ 104 - 0
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;
+
+    /**
+     * 知识库id
+     */
+    @ExcelProperty(value = "知识库id")
+    private Long knowledgeId;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+
+}

+ 13 - 13
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 @@ public class ChatAppStoreVo implements Serializable {
     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;
 
     /**

+ 6 - 9
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 @@ public class ChatConfigVo implements Serializable {
      * 配置值
      */
     @ExcelProperty(value = "配置值")
-    @Sensitive(strategy = SensitiveStrategy.SKY)
     private String configValue;
 
     /**

+ 9 - 18
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 @@ public class ChatGptsVo implements Serializable {
      * 点赞
      */
     @ExcelProperty(value = "点赞")
-    private String useCnt;
+    private Long useCnt;
 
     /**
      * 差评
      */
     @ExcelProperty(value = "差评")
-    private String bad;
+    private Long bad;
 
     /**
      * 类型
@@ -97,16 +99,5 @@ public class ChatGptsVo implements Serializable {
     @ExcelProperty(value = "更新IP")
     private String updateIp;
 
-    /**
-     * 模型名称
-     */
-    @ExcelProperty(value = "模型名称")
-    private String modelName;
-
-    /**
-     * 模型system
-     */
-    private String systemPrompt;
-
 
 }

+ 22 - 33
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 com.alibaba.excel.annotation.ExcelProperty;
+
 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 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 @@ public class ChatMessageVo implements Serializable {
     /**
      * 主键
      */
-    @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;
+    @ExcelProperty(value = "消息内容")
+    private String content;
 
     /**
      * 对话角色
      */
+    @ExcelProperty(value = "对话角色")
     private String role;
 
-
     /**
-     * 消息内容
+     * 扣除金额
      */
-    @NotBlank(message = "消息内容不能为空", groups = { AddGroup.class, EditGroup.class })
-    private String content;
-
-
-    /**
-     * 扣除费用
-     */
-    private Double deductCost;
+    @ExcelProperty(value = "扣除金额")
+    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;
 
 }

+ 97 - 0
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;
+
+
+}

+ 68 - 0
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;
+
+
+}

+ 80 - 0
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;
+
+
+}

+ 5 - 2
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

+ 14 - 21
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 @@ import java.io.Serializable;
 /**
  * 用户兑换记录视图对象 chat_voucher
  *
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
  */
 @Data
 @ExcelIgnoreUnannotated
@@ -31,18 +33,6 @@ public class ChatVoucherVo implements Serializable {
     @ExcelProperty(value = "主键")
     private Long id;
 
-    /**
-     * 用户id
-     */
-    @ExcelProperty(value = "用户id")
-    private Long userId;
-
-    /**
-     * 用户名称
-     */
-    @ExcelProperty(value = "用户名称")
-    private String userName;
-
     /**
      * 兑换码
      */
@@ -53,7 +43,13 @@ public class ChatVoucherVo implements Serializable {
      * 兑换金额
      */
     @ExcelProperty(value = "兑换金额")
-    private Double amount;
+    private BigDecimal amount;
+
+    /**
+     * 用户id
+     */
+    @ExcelProperty(value = "用户id")
+    private Long userId;
 
     /**
      * 兑换状态
@@ -65,13 +61,13 @@ public class ChatVoucherVo implements Serializable {
      * 兑换前余额
      */
     @ExcelProperty(value = "兑换前余额")
-    private Double balanceBefore;
+    private BigDecimal balanceBefore;
 
     /**
      * 兑换后余额
      */
     @ExcelProperty(value = "兑换后余额")
-    private Double balanceAfter;
+    private BigDecimal balanceAfter;
 
     /**
      * 备注
@@ -79,8 +75,5 @@ public class ChatVoucherVo implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
-    @ExcelProperty(value = "创建时间")
-    private String createTime;
-
 
 }

+ 16 - 0
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;
+
+/**
+ * 智能体管理Mapper接口
+ *
+ * @author ageerle
+ * @date 2025-04-08
+ */
+public interface ChatAgentManageMapper extends BaseMapperPlus<ChatAgentManage, ChatAgentManageVo> {
+
+}

+ 6 - 6
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> {
 

+ 4 - 5
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> {
 
-
 }

+ 3 - 4
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatGptsMapper.java

@@ -4,12 +4,11 @@ import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
 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> {
 

+ 3 - 3
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> {
 

+ 15 - 0
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> {
+
+}

+ 16 - 0
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> {
+
+}

+ 16 - 0
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> {
+
+}

+ 2 - 2
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> {
 

+ 2 - 3
ruoyi-modules-api/ruoyi-chat-api/src/main/java/org/ruoyi/mapper/ChatVoucherMapper.java

@@ -4,12 +4,11 @@ import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
 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> {
 

+ 49 - 0
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;
+
+/**
+ * 智能体管理Service接口
+ *
+ * @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);
+}

+ 16 - 14
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);
-
-
 }

+ 6 - 10
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.Collection;
 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 @@ public interface IChatConfigService {
 
     /**
      * 新增配置信息
-
      */
     Boolean insertByBo(ChatConfigBo bo);
 
@@ -45,9 +46,4 @@ public interface IChatConfigService {
      * 校验并批量删除配置信息信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
-
-    /**
-     * 查询系统参数
-     */
-    List<ChatConfigVo> getSysConfigValue(String category);
 }

+ 11 - 10
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.Collection;
 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);
 
     /**
-     * 校验并批量删除gpts管理信息
+     * 校验并批量删除应用管理信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 }

+ 4 - 3
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 @@ import java.util.List;
 /**
  * 聊天消息Service接口
  *
- * @author Lion Li
- * @date 2023-11-26
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IChatMessageService {
 

+ 49 - 0
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);
+}

+ 49 - 0
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);
+}

+ 48 - 0
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);
+}

+ 3 - 2
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 @@ import java.util.List;
  * 插件管理Service接口
  *
  * @author ageerle
- * @date 2025-03-30
+ * @date 2025-04-08
  */
 public interface IChatPluginService {
 

+ 4 - 8
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 @@ import java.util.List;
 /**
  * 用户兑换记录Service接口
  *
- * @author Lion Li
- * @date 2024-05-03
+ * @author ageerle
+ * @date 2025-04-08
  */
 public interface IChatVoucherService {
 
@@ -45,9 +46,4 @@ public interface IChatVoucherService {
      * 校验并批量删除用户兑换记录信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
-
-    /**
-     * 兑换卡密
-     */
-    Boolean redeem(ChatVoucherBo bo);
 }

+ 120 - 0
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;
+
+/**
+ * 智能体管理Service业务层处理
+ *
+ * @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;
+    }
+}

+ 113 - 0
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;
+    }
+}

+ 114 - 0
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;
+    }
+}

+ 119 - 0
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;
+    }
+}

+ 115 - 0
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;
+    }
+}

+ 118 - 0
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;
+    }
+}

+ 113 - 0
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;
+    }
+}

+ 115 - 0
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;
+    }
+}

+ 110 - 0
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;
+    }
+}

+ 114 - 0
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;
+    }
+}

+ 7 - 0
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>

+ 7 - 0
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>

+ 7 - 0
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>

+ 7 - 0
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>

+ 7 - 0
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>

+ 7 - 0
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>

+ 7 - 0
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>

+ 7 - 0
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>

+ 7 - 0
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>

+ 0 - 0
ruoyi-admin/src/main/resources/application-dev.yml → ruoyi-modules/ruoyi-system/src/main/resources/application-dev.yml