feat: 测试版本提交

This commit is contained in:
ageerle
2025-04-08 16:48:06 +08:00
parent 00f362acf1
commit d2755f00bc
111 changed files with 1112 additions and 2276 deletions

61
ruoyi-modules-api/pom.xml Normal file
View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.ruoyi</groupId>
<artifactId>ruoyi-ai</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>ruoyi-modules-api</artifactId>
<packaging>pom</packaging>
<modules>
<module>ruoyi-system-api</module>
<module>ruoyi-chat-api</module>
<module>ruoyi-knowledge-api</module>
</modules>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- 系统核心模块 -->
<dependency>
<groupId>org.ruoyi</groupId>
<artifactId>ruoyi-common-core</artifactId>
</dependency>
<!-- mybaits基础模块 -->
<dependency>
<groupId>org.ruoyi</groupId>
<artifactId>ruoyi-common-mybatis</artifactId>
</dependency>
<!-- 脱敏模块 -->
<dependency>
<groupId>org.ruoyi</groupId>
<artifactId>ruoyi-common-sensitive</artifactId>
</dependency>
<!-- excel模块-->
<dependency>
<groupId>org.ruoyi</groupId>
<artifactId>ruoyi-common-excel</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.ruoyi</groupId>
<artifactId>ruoyi-modules-api</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>ruoyi-chat-api</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

View File

@@ -0,0 +1,58 @@
package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
/**
* 应用市场
*
* @author Lion Li
* @date 2024-03-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_app_store")
public class ChatAppStore extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 名称
*/
private String name;
/**
* 描述
*/
private String description;
/**
* 头像
*/
private String avatar;
/**
* 应用地址
*/
private String appUrl;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,72 @@
package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
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
*
* @author Lion Li
* @date 2024-04-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_config")
public class ChatConfig extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 配置类型
*/
private String category;
/**
* 配置名称
*/
private String configName;
/**
* 配置值
*/
@Sensitive(strategy = SensitiveStrategy.SKY)
private String configValue;
/**
* 说明
*/
private String configDict;
/**
* 备注
*/
private String remark;
/**
* 删除标志0代表存在 1代表删除
*/
@TableLogic
private String delFlag;
/**
* 更新IP
*/
private String updateIp;
}

View File

@@ -0,0 +1,111 @@
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 lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
/**
* gpts管理对象 chat_gpts
*
* @author Lion Li
* @date 2024-07-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_gpts")
public class ChatGpts extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* gpts应用id
*/
private String gid;
/**
* gpts应用名称
*/
private String name;
/**
* gpts图标
*/
private String logo;
/**
* gpts描述
*/
private String info;
/**
* 作者id
*/
private String authorId;
/**
* 作者名称
*/
private String authorName;
/**
* 点赞
*/
private String useCnt;
/**
* 差评
*/
private String bad;
/**
* 类型
*/
private String type;
/**
* 备注
*/
private String remark;
/**
* 版本
*/
@Version
private Long version;
/**
* 删除标志0代表存在 1代表删除
*/
@TableLogic
private String delFlag;
/**
* 更新IP
*/
private String updateIp;
/**
* 模型名称
*/
private String modelName;
/**
* 模型system
*/
private String systemPrompt;
}

View File

@@ -0,0 +1,76 @@
package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.TableName;
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.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
/**
* 聊天消息对象 chat_message
*
* @author Lion Li
* @date 2023-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_message")
public class ChatMessage extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 用户ID
*/
@NotBlank(message = "用户ID", groups = { AddGroup.class, EditGroup.class })
private Long UserId;
/**
* 对话角色
*/
private String role;
/**
* 消息内容
*/
@NotBlank(message = "消息内容不能为空", groups = { AddGroup.class, EditGroup.class })
private String content;
/**
* 扣除费用
*/
private Double deductCost;
/**
* 累计 Tokens
*/
@NotNull(message = "累计 Tokens不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer totalTokens;
/**
* 模型名称
*/
@NotBlank(message = "模型名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String modelName;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
}

View File

@@ -0,0 +1,47 @@
package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
/**
* 插件管理对象 chat_plugin
*
* @author ageerle
* @date 2025-03-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_plugin")
public class ChatPlugin extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 插件名称
*/
private String name;
/**
* 插件编码
*/
private String code;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,49 @@
package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.TableName;
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 java.io.Serial;
import java.io.Serializable;
/**
* 用户token使用记录
*
* @author Lion Li
* @date 2023-11-26
*/
@Data
@TableName("chat_usage_token")
public class ChatToken implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 用户ID
*/
@NotBlank(message = "用户ID", groups = { AddGroup.class, EditGroup.class })
private Long UserId;
/**
* 待结算token
*/
private Integer token;
/**
* 模型名称
*/
@NotBlank(message = "模型名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String modelName;
}

View File

@@ -0,0 +1,73 @@
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 lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
import java.io.Serializable;
/**
* 访客管理对象 chat_visitor_usage
*
* @author Lion Li
* @date 2024-07-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_visitor_usage")
public class ChatVisitorUsage extends BaseEntity implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 浏览器指纹
*/
private String fingerprint;
/**
* 使用次数
*/
private String usageCount;
/**
* ip地址
*/
private String ipAddress;
/**
* 备注
*/
private String remark;
/**
* 版本
*/
@Version
private Long version;
/**
* 删除标志0代表存在 1代表删除
*/
@TableLogic
private String delFlag;
/**
* 更新IP
*/
private String updateIp;
}

View File

@@ -0,0 +1,68 @@
package org.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ruoyi.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
import java.math.BigDecimal;
/**
* 用户兑换记录对象 chat_voucher
*
* @author Lion Li
* @date 2024-05-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("chat_voucher")
public class ChatVoucher extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 兑换码
*/
private String code;
/**
* 兑换金额
*/
private BigDecimal amount;
/**
* 兑换状态
*/
private String status;
/**
* 兑换前余额
*/
private BigDecimal balanceBefore;
/**
* 兑换后余额
*/
private BigDecimal balanceAfter;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,60 @@
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.mybatis.core.domain.BaseEntity;
import org.ruoyi.domain.ChatAppStore;
/**
* 应用市场业务对象 voice_role
*
* @author Lion Li
* @date 2024-03-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ChatAppStore.class, reverseConvertGenerate = false)
public class ChatAppStoreBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空")
private Long id;
/**
* 角色名称
*/
@NotBlank(message = "名称不能为空")
private String name;
/**
* 角色描述
*/
@NotBlank(message = "描述不能为空")
private String description;
/**
* 头像
*/
@NotBlank(message = "头像不能为空")
private String avatar;
/**
* 音频地址
*/
@NotBlank(message = "应用地址不能为空")
private String appUrl;
/**
* 备注
*/
@NotBlank(message = "备注不能为空")
private String remark;
}

View File

@@ -0,0 +1,72 @@
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.common.mybatis.core.domain.BaseEntity;
import org.ruoyi.common.sensitive.annotation.Sensitive;
import org.ruoyi.common.sensitive.core.SensitiveStrategy;
import org.ruoyi.domain.ChatConfig;
/**
* 对话配置信息
业务对象 chat_config
*
* @author Lion Li
* @date 2024-04-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ChatConfig.class, reverseConvertGenerate = false)
public class ChatConfigBo 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 configName;
/**
* 配置值
*/
@Sensitive(strategy = SensitiveStrategy.SKY)
@NotBlank(message = "配置值不能为空", groups = { AddGroup.class, EditGroup.class })
private String configValue;
/**
* 说明
*/
@NotBlank(message = "参数说明不能为空", groups = { AddGroup.class, EditGroup.class })
private String configDict;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
/**
* 更新IP
*/
@NotBlank(message = "更新IP不能为空", groups = { AddGroup.class, EditGroup.class })
private String updateIp;
}

View File

@@ -0,0 +1,97 @@
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.common.mybatis.core.domain.BaseEntity;
import org.ruoyi.domain.ChatGpts;
/**
* gpts管理业务对象 chat_gpts
*
* @author Lion Li
* @date 2024-07-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ChatGpts.class, reverseConvertGenerate = false)
public class ChatGptsBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* gpts应用id
*/
@NotBlank(message = "gpts应用id不能为空", groups = { AddGroup.class, EditGroup.class })
private String gid;
/**
* gpts应用名称
*/
@NotBlank(message = "gpts应用名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* gpts图标
*/
private String logo;
/**
* gpts描述
*/
private String info;
/**
* 作者id
*/
private String authorId;
/**
* 作者名称
*/
private String authorName;
/**
* 点赞
*/
private String useCnt;
/**
* 差评
*/
private String bad;
/**
* 类型
*/
private String type;
/**
* 备注
*/
private String remark;
/**
* 更新IP
*/
private String updateIp;
/**
* 模型名称
*/
private String modelName;
/**
* 模型system
*/
private String systemPrompt;
}

View File

@@ -0,0 +1,72 @@
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.common.mybatis.core.domain.BaseEntity;
import org.ruoyi.domain.ChatMessage;
/**
* 聊天消息业务对象 chat_message
*
* @author Lion Li
* @date 2023-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ChatMessage.class, reverseConvertGenerate = false)
public class ChatMessageBo extends BaseEntity {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 用户ID
*/
private Long userId;
/**
* 用户名称
*/
private String userName;
/**
* 对话角色
*/
private String role;
/**
* 消息内容
*/
@NotBlank(message = "消息内容不能为空", groups = { AddGroup.class, EditGroup.class })
private String content;
/**
* 扣除费用
*/
private Double deductCost;
/**
* 累计 Tokens
*/
private Integer totalTokens;
/**
* 模型名称
*/
private String modelName;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,50 @@
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.common.mybatis.core.domain.BaseEntity;
import org.ruoyi.domain.ChatPlugin;
/**
* 插件管理业务对象 chat_plugin
*
* @author ageerle
* @date 2025-03-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ChatPlugin.class, reverseConvertGenerate = false)
public class ChatPluginBo extends BaseEntity {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 插件名称
*/
@NotBlank(message = "插件名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 插件编码
*/
@NotBlank(message = "插件编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String code;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
}

View File

@@ -0,0 +1,62 @@
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.common.mybatis.core.domain.BaseEntity;
import org.ruoyi.domain.ChatVisitorUsage;
/**
* 访客管理业务对象 chat_visitor_usage
*
* @author Lion Li
* @date 2024-07-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ChatVisitorUsage.class, reverseConvertGenerate = false)
public class ChatVisitorUsageBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 浏览器指纹
*/
@NotBlank(message = "浏览器指纹不能为空", groups = { AddGroup.class, EditGroup.class })
private String fingerprint;
/**
* 使用次数
*/
@NotBlank(message = "使用次数不能为空", groups = { AddGroup.class, EditGroup.class })
private String usageCount;
/**
* ip地址
*/
@NotBlank(message = "ip地址不能为空", groups = { AddGroup.class, EditGroup.class })
private String ipAddress;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
/**
* 更新IP
*/
@NotBlank(message = "更新IP不能为空", groups = { AddGroup.class, EditGroup.class })
private String updateIp;
}

View File

@@ -0,0 +1,69 @@
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.common.mybatis.core.domain.BaseEntity;
import org.ruoyi.domain.ChatVoucher;
import java.math.BigDecimal;
/**
* 用户兑换记录业务对象 chat_voucher
*
* @author Lion Li
* @date 2024-05-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ChatVoucher.class, reverseConvertGenerate = false)
public class ChatVoucherBo extends BaseEntity {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 兑换码
*/
private String code;
/**
* 兑换金额
*/
@NotNull(message = "兑换金额不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal amount;
/**
* 兑换状态
*/
private String status;
/**
* 兑换前余额
*/
private Double balanceBefore;
/**
* 兑换后余额
*/
private Double balanceAfter;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,23 @@
package org.ruoyi.domain.vo;
import lombok.Data;
import java.util.List;
import java.util.Map;
import java.util.Properties;
/**
* 缓存监控列表信息
*
* @author Michelle.Chung
*/
@Data
public class CacheListInfoVo {
private Properties info;
private Long dbSize;
private List<Map<String, String>> commandStats;
}

View File

@@ -0,0 +1,25 @@
package org.ruoyi.domain.vo;
import lombok.Data;
/**
* 验证码信息
*
* @author Michelle.Chung
*/
@Data
public class CaptchaVo {
/**
* 是否开启验证码
*/
private Boolean captchaEnabled = true;
private String uuid;
/**
* 验证码图片
*/
private String img;
}

View File

@@ -0,0 +1,67 @@
package org.ruoyi.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.ruoyi.domain.ChatAppStore;
import java.io.Serial;
import java.io.Serializable;
/**
* 应用市场视图对象
*
* @author Lion Li
* @date 2024-03-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ChatAppStore.class)
public class ChatAppStoreVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 角色名称
*/
@ExcelProperty(value = "名称")
private String name;
/**
* 角色描述
*/
@ExcelProperty(value = "描述")
private String description;
/**
* 头像
*/
@ExcelProperty(value = "头像")
private String avatar;
/**
* 音频地址
*/
@ExcelProperty(value = "应用地址")
private String appUrl;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,76 @@
package org.ruoyi.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.ruoyi.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
*
* @author Lion Li
* @date 2024-04-13
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ChatConfig.class)
public class ChatConfigVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 配置类型
*/
@ExcelProperty(value = "配置类型")
private String category;
/**
* 配置名称
*/
@ExcelProperty(value = "配置名称")
private String configName;
/**
* 配置值
*/
@ExcelProperty(value = "配置值")
@Sensitive(strategy = SensitiveStrategy.SKY)
private String configValue;
/**
* 说明
*/
@ExcelProperty(value = "说明")
private String configDict;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 更新IP
*/
@ExcelProperty(value = "更新IP")
private String updateIp;
}

View File

@@ -0,0 +1,112 @@
package org.ruoyi.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.ruoyi.domain.ChatGpts;
import java.io.Serial;
import java.io.Serializable;
/**
* gpts管理视图对象 chat_gpts
*
* @author Lion Li
* @date 2024-07-09
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ChatGpts.class)
public class ChatGptsVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* gpts应用id
*/
@ExcelProperty(value = "gpts应用id")
private String gid;
/**
* gpts应用名称
*/
@ExcelProperty(value = "gpts应用名称")
private String name;
/**
* gpts图标
*/
@ExcelProperty(value = "gpts图标")
private String logo;
/**
* gpts描述
*/
@ExcelProperty(value = "gpts描述")
private String info;
/**
* 作者id
*/
@ExcelProperty(value = "作者id")
private String authorId;
/**
* 作者名称
*/
@ExcelProperty(value = "作者名称")
private String authorName;
/**
* 点赞
*/
@ExcelProperty(value = "点赞")
private String useCnt;
/**
* 差评
*/
@ExcelProperty(value = "差评")
private String bad;
/**
* 类型
*/
@ExcelProperty(value = "类型")
private String type;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 更新IP
*/
@ExcelProperty(value = "更新IP")
private String updateIp;
/**
* 模型名称
*/
@ExcelProperty(value = "模型名称")
private String modelName;
/**
* 模型system
*/
private String systemPrompt;
}

View File

@@ -0,0 +1,91 @@
package org.ruoyi.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.ruoyi.common.core.validate.AddGroup;
import org.ruoyi.common.core.validate.EditGroup;
import org.ruoyi.domain.ChatMessage;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 聊天消息视图对象 chat_message
*
* @author Lion Li
* @date 2023-11-26
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ChatMessage.class)
public class ChatMessageVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 用户ID
*/
@NotBlank(message = "用户ID", groups = { AddGroup.class, EditGroup.class })
private Long userId;
/**
* 用户名称
*/
@NotBlank(message = "用户名称")
private String userName;
/**
* 对话角色
*/
private String role;
/**
* 消息内容
*/
@NotBlank(message = "消息内容不能为空", groups = { AddGroup.class, EditGroup.class })
private String content;
/**
* 扣除费用
*/
private Double deductCost;
/**
* 累计 Tokens
*/
@NotNull(message = "累计 Tokens不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer totalTokens;
/**
* 模型名称
*/
@NotBlank(message = "模型名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String modelName;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
/**
* 创建时间
*/
private Date createTime;
}

View File

@@ -0,0 +1,52 @@
package org.ruoyi.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.ruoyi.domain.ChatPlugin;
import java.io.Serial;
import java.io.Serializable;
/**
* 插件管理视图对象 chat_plugin
*
* @author ageerle
* @date 2025-03-30
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ChatPlugin.class)
public class ChatPluginVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 插件名称
*/
@ExcelProperty(value = "插件名称")
private String name;
/**
* 插件编码
*/
@ExcelProperty(value = "插件编码")
private String code;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,43 @@
package org.ruoyi.domain.vo;
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 java.io.Serializable;
/**
* 用户token chat_token
*
* @author Lion Li
* @date 2023-11-26
*/
@Data
public class ChatTokenVo implements Serializable {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 用户ID
*/
@NotBlank(message = "用户ID", groups = { AddGroup.class, EditGroup.class })
private Long UserId;
/**
* 待结算token
*/
private Integer token;
/**
* 模型名称
*/
@NotBlank(message = "模型名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String modelName;
}

View File

@@ -0,0 +1,64 @@
package org.ruoyi.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.ruoyi.domain.ChatVisitorUsage;
import java.io.Serial;
import java.io.Serializable;
/**
* 访客管理视图对象 chat_visitor_usage
*
* @author Lion Li
* @date 2024-07-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ChatVisitorUsage.class)
public class ChatVisitorUsageVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 浏览器指纹
*/
@ExcelProperty(value = "浏览器指纹")
private String fingerprint;
/**
* 使用次数
*/
@ExcelProperty(value = "使用次数")
private String usageCount;
/**
* ip地址
*/
@ExcelProperty(value = "ip地址")
private String ipAddress;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 更新IP
*/
@ExcelProperty(value = "更新IP")
private String updateIp;
}

View File

@@ -0,0 +1,86 @@
package org.ruoyi.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.ruoyi.domain.ChatVoucher;
import java.io.Serial;
import java.io.Serializable;
/**
* 用户兑换记录视图对象 chat_voucher
*
* @author Lion Li
* @date 2024-05-03
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ChatVoucher.class)
public class ChatVoucherVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 用户id
*/
@ExcelProperty(value = "用户id")
private Long userId;
/**
* 用户名称
*/
@ExcelProperty(value = "用户名称")
private String userName;
/**
* 兑换码
*/
@ExcelProperty(value = "兑换码")
private String code;
/**
* 兑换金额
*/
@ExcelProperty(value = "兑换金额")
private Double amount;
/**
* 兑换状态
*/
@ExcelProperty(value = "兑换状态")
private String status;
/**
* 兑换前余额
*/
@ExcelProperty(value = "兑换前余额")
private Double balanceBefore;
/**
* 兑换后余额
*/
@ExcelProperty(value = "兑换后余额")
private Double balanceAfter;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
@ExcelProperty(value = "创建时间")
private String createTime;
}

View File

@@ -0,0 +1,16 @@
package org.ruoyi.mapper;
import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import org.ruoyi.domain.ChatAppStore;
import org.ruoyi.domain.vo.ChatAppStoreVo;
/**
* 应用市场Mapper接口
*
* @author Lion Li
* @date 2024-03-19
*/
public interface ChatAppStoreMapper extends BaseMapperPlus<ChatAppStore, ChatAppStoreVo> {
}

View File

@@ -0,0 +1,17 @@
package org.ruoyi.mapper;
import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import org.ruoyi.domain.ChatConfig;
import org.ruoyi.domain.vo.ChatConfigVo;
/**
* 对话配置信息Mapper接口
*
* @author Lion Li
* @date 2024-04-13
*/
public interface ChatConfigMapper extends BaseMapperPlus<ChatConfig, ChatConfigVo> {
}

View File

@@ -0,0 +1,16 @@
package org.ruoyi.mapper;
import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import org.ruoyi.domain.ChatGpts;
import org.ruoyi.domain.vo.ChatGptsVo;
/**
* gpts管理Mapper接口
*
* @author Lion Li
* @date 2024-07-09
*/
public interface ChatGptsMapper extends BaseMapperPlus<ChatGpts, ChatGptsVo> {
}

View File

@@ -0,0 +1,16 @@
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
*/
public interface ChatMessageMapper extends BaseMapperPlus<ChatMessage, ChatMessageVo> {
}

View File

@@ -0,0 +1,16 @@
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
*/
public interface ChatPluginMapper extends BaseMapperPlus<ChatPlugin, ChatPluginVo> {
}

View File

@@ -0,0 +1,16 @@
package org.ruoyi.mapper;
import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import org.ruoyi.domain.ChatToken;
import org.ruoyi.domain.vo.ChatTokenVo;
/**
* 聊天消息Mapper接口
*
* @author Lion Li
* @date 2023-11-26
*/
public interface ChatTokenMapper extends BaseMapperPlus<ChatToken, ChatTokenVo> {
}

View File

@@ -0,0 +1,16 @@
package org.ruoyi.mapper;
import org.ruoyi.common.mybatis.core.mapper.BaseMapperPlus;
import org.ruoyi.domain.ChatVisitorUsage;
import org.ruoyi.domain.vo.ChatVisitorUsageVo;
/**
* 访客管理Mapper接口
*
* @author Lion Li
* @date 2024-07-14
*/
public interface ChatVisitorUsageMapper extends BaseMapperPlus<ChatVisitorUsage, ChatVisitorUsageVo> {
}

View File

@@ -0,0 +1,16 @@
package org.ruoyi.mapper;
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
*/
public interface ChatVoucherMapper extends BaseMapperPlus<ChatVoucher, ChatVoucherVo> {
}

View File

@@ -0,0 +1,47 @@
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 java.util.Collection;
import java.util.List;
/**
* 应用市场Service接口
*
* @author Lion Li
* @date 2024-03-19
*/
public interface IChatAppStoreService {
/**
* 查询应用市场
*/
ChatAppStoreVo queryById(Long id);
/**
* 查询应用市场列表
*/
TableDataInfo<ChatAppStoreVo> queryPageList(ChatAppStoreBo bo, PageQuery pageQuery);
/**
* 查询应用市场列表
*/
List<ChatAppStoreVo> queryList(ChatAppStoreBo bo);
/**
* 修改应用市场
*/
Boolean updateByBo(ChatAppStoreBo bo);
/**
* 校验并批量删除应用市场信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,53 @@
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.ChatConfigBo;
import org.ruoyi.domain.vo.ChatConfigVo;
import java.util.Collection;
import java.util.List;
/**
* 对话配置信息Service接口
* @date 2024-04-13
*/
public interface IChatConfigService {
/**
* 查询配置信息
*/
ChatConfigVo queryById(Long id);
/**
* 查询配置信息列表
*/
TableDataInfo<ChatConfigVo> queryPageList(ChatConfigBo bo, PageQuery pageQuery);
/**
* 查询配置信息列表
*/
List<ChatConfigVo> queryList(ChatConfigBo bo);
/**
* 新增配置信息
*/
Boolean insertByBo(ChatConfigBo bo);
/**
* 修改配置信息
*/
Boolean updateByBo(ChatConfigBo bo);
/**
* 校验并批量删除配置信息信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 查询系统参数
*/
List<ChatConfigVo> getSysConfigValue(String category);
}

View File

@@ -0,0 +1,37 @@
package org.ruoyi.service;
import org.ruoyi.domain.bo.ChatMessageBo;
public interface IChatCostService {
/**
* 根据消耗的tokens扣除余额
*
* @param chatMessageBo
* @return 结果
*/
void deductToken(ChatMessageBo chatMessageBo);
/**
* 扣除用户的余额
*
*/
void deductUserBalance(Long userId, Double numberCost);
/**
* 扣除任务费用并且保存记录
*
* @param type 任务类型
* @param prompt 任务描述
* @param cost 扣除费用
*/
void taskDeduct(String type,String prompt, double cost);
/**
* 判断用户是否付费
*/
void checkUserGrade();
}

View File

@@ -0,0 +1,48 @@
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.ChatGptsBo;
import org.ruoyi.domain.vo.ChatGptsVo;
import java.util.Collection;
import java.util.List;
/**
* gpts管理Service接口
*
* @author Lion Li
* @date 2024-07-09
*/
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);
}

View File

@@ -0,0 +1,48 @@
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.ChatMessageBo;
import org.ruoyi.domain.vo.ChatMessageVo;
import java.util.Collection;
import java.util.List;
/**
* 聊天消息Service接口
*
* @author Lion Li
* @date 2023-11-26
*/
public interface IChatMessageService {
/**
* 查询聊天消息
*/
ChatMessageVo queryById(Long id);
/**
* 查询聊天消息列表
*/
TableDataInfo<ChatMessageVo> queryPageList(ChatMessageBo bo, PageQuery pageQuery);
/**
* 查询聊天消息列表
*/
List<ChatMessageVo> queryList(ChatMessageBo bo);
/**
* 新增聊天消息
*/
Boolean insertByBo(ChatMessageBo bo);
/**
* 修改聊天消息
*/
Boolean updateByBo(ChatMessageBo bo);
/**
* 校验并批量删除聊天消息信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,48 @@
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.ChatPluginBo;
import org.ruoyi.domain.vo.ChatPluginVo;
import java.util.Collection;
import java.util.List;
/**
* 插件管理Service接口
*
* @author ageerle
* @date 2025-03-30
*/
public interface IChatPluginService {
/**
* 查询插件管理
*/
ChatPluginVo queryById(Long id);
/**
* 查询插件管理列表
*/
TableDataInfo<ChatPluginVo> queryPageList(ChatPluginBo bo, PageQuery pageQuery);
/**
* 查询插件管理列表
*/
List<ChatPluginVo> queryList(ChatPluginBo bo);
/**
* 新增插件管理
*/
Boolean insertByBo(ChatPluginBo bo);
/**
* 修改插件管理
*/
Boolean updateByBo(ChatPluginBo bo);
/**
* 校验并批量删除插件管理信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,25 @@
package org.ruoyi.service;
import org.ruoyi.domain.ChatToken;
/**
* 聊天消息Service接口
*
* @author Lion Li
* @date 2023-11-26
*/
public interface IChatTokenService {
/**
* 查询用户token
*/
ChatToken queryByUserId(Long userId, String modelName);
/**
* 清空用户token
*/
void resetToken(Long userId,String modelName);
void editToken(ChatToken chatToken);
}

View File

@@ -0,0 +1,48 @@
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.ChatVisitorUsageBo;
import org.ruoyi.domain.vo.ChatVisitorUsageVo;
import java.util.Collection;
import java.util.List;
/**
* 访客管理Service接口
*
* @author Lion Li
* @date 2024-07-14
*/
public interface IChatVisitorUsageService {
/**
* 查询访客管理
*/
ChatVisitorUsageVo queryById(Long id);
/**
* 查询访客管理列表
*/
TableDataInfo<ChatVisitorUsageVo> queryPageList(ChatVisitorUsageBo bo, PageQuery pageQuery);
/**
* 查询访客管理列表
*/
List<ChatVisitorUsageVo> queryList(ChatVisitorUsageBo bo);
/**
* 新增访客管理
*/
Boolean insertByBo(ChatVisitorUsageBo bo);
/**
* 修改访客管理
*/
Boolean updateByBo(ChatVisitorUsageBo bo);
/**
* 校验并批量删除访客管理信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,53 @@
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.ChatVoucherBo;
import org.ruoyi.domain.vo.ChatVoucherVo;
import java.util.Collection;
import java.util.List;
/**
* 用户兑换记录Service接口
*
* @author Lion Li
* @date 2024-05-03
*/
public interface IChatVoucherService {
/**
* 查询用户兑换记录
*/
ChatVoucherVo queryById(Long id);
/**
* 查询用户兑换记录列表
*/
TableDataInfo<ChatVoucherVo> queryPageList(ChatVoucherBo bo, PageQuery pageQuery);
/**
* 查询用户兑换记录列表
*/
List<ChatVoucherVo> queryList(ChatVoucherBo bo);
/**
* 新增用户兑换记录
*/
Boolean insertByBo(ChatVoucherBo bo);
/**
* 修改用户兑换记录
*/
Boolean updateByBo(ChatVoucherBo bo);
/**
* 校验并批量删除用户兑换记录信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 兑换卡密
*/
Boolean redeem(ChatVoucherBo bo);
}

View File

@@ -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.ChatConfigMapper">
</mapper>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.ruoyi</groupId>
<artifactId>ruoyi-ai</artifactId>
<version>1.0.0</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>ruoyi-device-api</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.ruoyi</groupId>
<artifactId>ruoyi-modules-api</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>ruoyi-knowledge-api</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.ruoyi</groupId>
<artifactId>ruoyi-modules-api</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>ruoyi-system-api</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.ruoyi</groupId>
<artifactId>ruoyi-ai</artifactId>
<version>1.0.0</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>ruoyi-weixin-api</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>