初始化项目

This commit is contained in:
2026-04-21 16:12:04 +08:00
parent 4541af2c63
commit f9d96473da
443 changed files with 36365 additions and 19 deletions

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
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.xujun</groupId>
<artifactId>xtools-app-sys</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>xtools-app-sys-api</artifactId>
<!-- 依赖 -->
<dependencies>
<!-- xtools begin -->
<!-- xtools-boot-api -->
<dependency>
<groupId>org.xujun</groupId>
<artifactId>xtools-boot-api</artifactId>
</dependency>
<!-- xtools-boot-mask -->
<dependency>
<groupId>org.xujun</groupId>
<artifactId>xtools-boot-mask</artifactId>
</dependency>
<!-- xtools end -->
</dependencies>
</project>

View File

@@ -0,0 +1,28 @@
package xtools.app.sys.api;
import jakarta.validation.constraints.NotEmpty;
import xtools.app.sys.model.dto.resp.SysAddressResp;
import xtools.boot.api.model.dto.Result;
/**
* <p>Title : SysAddressApi</p>
* <p>Description : 公用地址表 Api</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-03-13 15:02:53
*/
public interface SysAddressApi {
/**
* 根据code获取地址信息
*
* @param code Code
* @return 地址信息
*/
Result<SysAddressResp> getByCode(
@NotEmpty(message = "不能为空") String code
);
}

View File

@@ -0,0 +1,32 @@
package xtools.app.sys.api;
import jakarta.validation.constraints.NotEmpty;
import xtools.app.sys.model.dto.resp.SysDictItemResp;
import xtools.boot.api.model.dto.Result;
import java.util.List;
/**
* <p>Title : SysDictItemApi</p>
* <p>Description : SysDictItemApi</p>
* <p>DevelopTools : Idea_x64_v2026.1</p>
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
* <p>Company : org.xujun</p>
*
* @author : XuJun
* @version : 1.0.0
* @date : 2026/2/27 10:36
*/
public interface SysDictItemApi {
/**
* 根据字典编码查询字典项
*
* @param dictCode 字典编码
* @return 字典项
*/
Result<List<SysDictItemResp>> getByCode(
@NotEmpty(message = "不能为空") String dictCode
);
}

View File

@@ -0,0 +1,83 @@
package xtools.app.sys.api;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import xtools.app.sys.model.dto.req.SysFileAddReq;
import xtools.app.sys.model.dto.req.SysFileChangeReq;
import xtools.app.sys.model.dto.req.SysFileUpdateReq;
import xtools.app.sys.model.dto.resp.SysFileResp;
import xtools.boot.api.model.dto.Result;
import xtools.boot.api.model.dto.req.IdListReq;
/**
* <p>Title : SysFileApi</p>
* <p>Description : 系统文件表 Api</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-03-14 13:44:03
*/
public interface SysFileApi {
/**
* 根据 ID 查询
*
* @param id ID
* @return 结果
*/
Result<SysFileResp> getById(
@Min(value = 1L, message = "不能小于1")
@NotNull(message = "不能为空")
Long id
);
/**
* 根据文件名查询
*
* @param bucket 桶名称
* @param fileName 文件名
* @return 结果
*/
Result<SysFileResp> getByName(
@NotBlank(message = "不能为空")
String bucket,
@NotBlank(message = "不能为空")
String fileName
);
/**
* 添加
*
* @param req 添加请求
* @return 添加结果
*/
Result<Long> add(@Valid SysFileAddReq req);
/**
* 修改
*
* @param req 修改请求
* @return 修改结果
*/
Result<Boolean> update(@Valid SysFileUpdateReq req);
/**
* 根据 ID 删除
*
* @param req ID 集合
* @return 删除结果
*/
Result<Boolean> delById(@Valid IdListReq req);
/**
* 改变数据类型
*
* @param req 请求参数
* @return 是否成功
*/
Result<Boolean> changeDataTypeByIds(@Valid SysFileChangeReq req);
}

View File

@@ -0,0 +1,35 @@
package xtools.app.sys.api;
import jakarta.validation.Valid;
import xtools.app.sys.model.dto.req.SysParamAddReq;
import xtools.app.sys.model.dto.req.SysParamUpdateReq;
import xtools.boot.api.model.dto.Result;
/**
* <p>Title : SysParamApi</p>
* <p>Description : 系统参数表 Api</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-03-26 10:15:49
*/
public interface SysParamApi {
/**
* 添加
*
* @param req 添加请求
* @return 添加结果
*/
Result<Boolean> add(@Valid SysParamAddReq req);
/**
* 修改
*
* @param req 修改请求
* @return 修改结果
*/
Result<Boolean> update(@Valid SysParamUpdateReq req);
}

View File

@@ -0,0 +1,61 @@
package xtools.app.sys.api;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import xtools.app.sys.enums.SysRiskType;
import xtools.app.sys.model.dto.resp.SysRiskResp;
import xtools.boot.api.model.dto.Result;
import java.util.List;
/**
* <p>Title : SysRiskApi</p>
* <p>Description : 系统风控表 Api</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-04-08 09:10:45
*/
public interface SysRiskApi {
/**
* 根据类型获取数据
*
* @param type 类型
* @return 数据
*/
Result<List<SysRiskResp>> getByType(
@NotNull(message = "不能为空")
SysRiskType type
);
/**
* 添加IP
*
* @param sysType 系统类型
* @param ip IP
* @return 添加结果
*/
Result<Boolean> addIp(
@NotBlank(message = "不能为空")
String sysType,
@NotBlank(message = "不能为空")
String ip
);
/**
* 移除IP
*
* @param sysType 系统类型
* @param ip IP
* @return 移除结果
*/
Result<Boolean> removeIp(
@NotBlank(message = "不能为空")
String sysType,
@NotBlank(message = "不能为空")
String ip
);
}

View File

@@ -0,0 +1,76 @@
package xtools.app.sys.enums;
import xtools.boot.api.enums.BaseEnum;
/**
* <p>Title : SysRiskType</p>
* <p>Description : SysRiskType</p>
* <p>DevelopTools : Idea_x64_v2026.1</p>
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
* <p>Company : org.xujun</p>
*
* @author : XuJun
* @version : 1.0.0
* @date : 2026/2/4 16:27
*/
public enum SysRiskType implements BaseEnum {
// IP风控
IP(1, "IP风控"),
// URI风控
URI(2, "URI风控"),
;
/**
* 编码
*/
private final int code;
/**
* 说明
*/
private final String desc;
/**
* 构造函数
*
* @param code 编码
* @param desc 说明
*/
SysRiskType(int code, String desc) {
this.code = code;
this.desc = desc;
}
/**
* 获取所有枚举
*
* @return 所有枚举
*/
@Override
public BaseEnum[] all() {
return values();
}
/**
* 获取枚举编码
*
* @return 枚举编码
*/
@Override
public int code() {
return code;
}
/**
* 获取枚举说明
*
* @return 枚举说明
*/
@Override
public String desc() {
return desc;
}
}

View File

@@ -0,0 +1,129 @@
package xtools.app.sys.model.dto.req;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.Instant;
/**
* <p>Title : SysFileAddReq</p>
* <p>Description : 系统文件表添加请求对象</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-03-14 13:44:03
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysFileAddReq implements Serializable {
/**
* 用户id
*/
@Schema(description = "用户id")
private Long userId;
/**
* 用户名
*/
@Schema(description = "用户名")
private String userName;
/**
* 业务id
*/
@Schema(description = "业务id")
private Long bizId;
/**
* 业务类型
*/
@Schema(description = "业务类型")
private String bizType;
/**
* 权限
*/
@Schema(description = "权限")
private Integer permission;
/**
* 桶名称
*/
@Schema(description = "桶名称")
private String bucket;
/**
* 桶类型
*/
@Schema(description = "桶类型")
private String storageType;
/**
* 文件上传时间
*/
@Schema(description = "文件上传时间")
private Instant uploadTime;
/**
* 文件路径
*/
@Schema(description = "文件路径")
private String filePath;
/**
* 文件名
*/
@Schema(description = "文件名")
private String fileName;
/**
* 文件大小
*/
@Schema(description = "文件大小")
private Long fileSize;
/**
* 文件类型
*/
@Schema(description = "文件类型")
private String fileType;
/**
* MD5值
*/
@Schema(description = "MD5值")
private String md5;
/**
* SM3值
*/
@Schema(description = "SM3值")
private String sm3;
/**
* 数据类型
*/
@Schema(description = "数据类型")
private Integer dataType;
/**
* 过期时间
*/
@Schema(description = "过期时间")
private Instant expireTime;
/**
* 备注
*/
@Schema(description = "备注")
private String memo;
}

View File

@@ -0,0 +1,42 @@
package xtools.app.sys.model.dto.req;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xtools.boot.api.enums.FileDataType;
import java.io.Serializable;
import java.util.List;
/**
* <p>Title : SysFileAddReq</p>
* <p>Description : 系统文件表添加请求对象</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-03-14 13:44:03
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysFileChangeReq implements Serializable {
/**
* idList
*/
@NotNull(message = "不能为空")
@Schema(description = "Id列表")
private List<Long> idList;
/**
* 数据类型
*/
@Schema(description = "数据类型")
private FileDataType dataType;
}

View File

@@ -0,0 +1,135 @@
package xtools.app.sys.model.dto.req;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.Instant;
/**
* <p>Title : SysFileUpdateReq</p>
* <p>Description : 系统文件表更新请求对象</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-03-14 13:44:03
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysFileUpdateReq implements Serializable {
/**
* 主键 ID
*/
@Schema(description = "主键 ID")
private Long id;
/**
* 用户id
*/
@Schema(description = "用户id")
private Long userId;
/**
* 用户名
*/
@Schema(description = "用户名")
private String userName;
/**
* 业务id
*/
@Schema(description = "业务id")
private Long bizId;
/**
* 业务类型
*/
@Schema(description = "业务类型")
private String bizType;
/**
* 权限
*/
@Schema(description = "权限")
private Integer permission;
/**
* 桶名称
*/
@Schema(description = "桶名称")
private String bucket;
/**
* 桶类型
*/
@Schema(description = "桶类型")
private String storageType;
/**
* 文件上传时间
*/
@Schema(description = "文件上传时间")
private Instant uploadTime;
/**
* 文件路径
*/
@Schema(description = "文件路径")
private String filePath;
/**
* 文件名
*/
@Schema(description = "文件名")
private String fileName;
/**
* 文件大小
*/
@Schema(description = "文件大小")
private Long fileSize;
/**
* 文件类型
*/
@Schema(description = "文件类型")
private String fileType;
/**
* MD5值
*/
@Schema(description = "MD5值")
private String md5;
/**
* SM3值
*/
@Schema(description = "SM3值")
private String sm3;
/**
* 数据类型
*/
@Schema(description = "数据类型")
private Integer dataType;
/**
* 过期时间
*/
@Schema(description = "过期时间")
private Instant expireTime;
/**
* 备注
*/
@Schema(description = "备注")
private String memo;
}

View File

@@ -0,0 +1,52 @@
package xtools.app.sys.model.dto.req;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xtools.boot.api.anntation.IgnoreXss;
import java.io.Serializable;
/**
* <p>Title : SysParamAddReq</p>
* <p>Description : 系统参数表添加请求对象</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-03-18 11:35:47
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysParamAddReq implements Serializable {
/**
* 系统参数key
*/
@Schema(description = "系统参数key")
private String paramKey;
/**
* 系统参数值
*/
@IgnoreXss
@Schema(description = "系统参数值")
private String data;
/**
* 参数值类型
*/
@Schema(description = "参数值类型")
private Integer dataType;
/**
* 备注
*/
@Schema(description = "备注")
private String memo;
}

View File

@@ -0,0 +1,58 @@
package xtools.app.sys.model.dto.req;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xtools.boot.api.anntation.IgnoreXss;
import java.io.Serializable;
/**
* <p>Title : SysParamUpdateReq</p>
* <p>Description : 系统参数表更新请求对象</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-03-18 11:35:47
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysParamUpdateReq implements Serializable {
/**
* 主键 ID
*/
@Schema(description = "主键 ID")
private Long id;
/**
* 系统参数key
*/
@Schema(description = "系统参数key")
private String paramKey;
/**
* 系统参数值
*/
@IgnoreXss
@Schema(description = "系统参数值")
private String data;
/**
* 参数值类型
*/
@Schema(description = "参数值类型")
private Integer dataType;
/**
* 备注
*/
@Schema(description = "备注")
private String memo;
}

View File

@@ -0,0 +1,73 @@
package xtools.app.sys.model.dto.resp;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import xtools.boot.api.model.entity.BaseEntity;
/**
* <p>Title : SysAddressResp</p>
* <p>Description : 公用地址表响应对象</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-03-13 15:02:40
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysAddressResp extends BaseEntity {
/**
* 公用地址-ID
*/
@Schema(description = "公用地址-ID")
private Long id;
/**
* 公用地址-父ID
*/
@Schema(description = "公用地址-父ID")
private Long parentId;
/**
* 公用地址-唯一编码
*/
@Schema(description = "公用地址-唯一编码")
private String code;
/**
* 公用地址-类型
*/
@Schema(description = "公用地址-类型")
private Integer type;
/**
* 公用地址-名称
*/
@Schema(description = "公用地址-名称")
private String title;
/**
* 公用地址-经度
*/
@Schema(description = "公用地址-经度")
private String lng;
/**
* 公用地址-纬度
*/
@Schema(description = "公用地址-纬度")
private String lat;
/**
* 公用地址-备注
*/
@Schema(description = "公用地址-备注")
private String memo;
}

View File

@@ -0,0 +1,94 @@
package xtools.app.sys.model.dto.resp;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import xtools.boot.api.model.entity.BaseEntity;
/**
* <p>Title : SysDictItemResp</p>
* <p>Description : 数据字典项表响应对象</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-01-28 11:29:51
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysDictItemResp extends BaseEntity {
/**
* 主键 ID
*/
@Schema(description = "主键 ID", example = "1")
private Long id;
/**
* 关联字典编码,与sys_dict表中的dict_code对应
*/
@Schema(description = "关联字典编码,与sys_dict表中的dict_code对应", example = "USER_STATUS")
private String dictCode;
/**
* 字典项值
*/
@Schema(description = "字典项值", example = "1")
private String value;
/**
* 字典项标签
*/
@Schema(description = "字典项标签", example = "启用")
private String label;
/**
* 标签类型,用于前端样式展示(如success,warning等)
*/
@Schema(description = "标签类型,用于前端样式展示(如success,warning等)", example = "success")
private String tagType;
/**
* 状态
*/
@Schema(description = "状态", example = "1")
private Integer status;
/**
* 排序
*/
@Schema(description = "排序", example = "1")
private Integer sort;
/**
* 创建人ID
*/
@Schema(description = "创建人ID", example = "1")
private Long createBy;
/**
* 修改人ID
*/
@Schema(description = "修改人ID", example = "1")
private Long updateBy;
/**
* 备注
*/
@Schema(description = "备注", example = "启用状态")
private String memo;
}

View File

@@ -0,0 +1,138 @@
package xtools.app.sys.model.dto.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import xtools.boot.api.model.entity.BaseEntity;
import java.time.Instant;
/**
* <p>Title : SysFileResp</p>
* <p>Description : 系统文件表响应对象</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-03-14 13:44:03
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysFileResp extends BaseEntity {
/**
* 主键 ID
*/
@Schema(description = "主键 ID")
private Long id;
/**
* 用户id
*/
@Schema(description = "用户id")
private Long userId;
/**
* 用户名
*/
@Schema(description = "用户名")
private String userName;
/**
* 业务id
*/
@Schema(description = "业务id")
private Long bizId;
/**
* 业务类型
*/
@Schema(description = "业务类型")
private String bizType;
/**
* 权限
*/
@JsonFormat(shape = JsonFormat.Shape.STRING)
@Schema(description = "权限")
private Integer permission;
/**
* 桶名称
*/
@Schema(description = "桶名称")
private String bucket;
/**
* 桶类型
*/
@Schema(description = "桶类型")
private String storageType;
/**
* 文件上传时间
*/
@Schema(description = "文件上传时间")
private Instant uploadTime;
/**
* 文件路径
*/
@Schema(description = "文件路径")
private String filePath;
/**
* 文件名
*/
@Schema(description = "文件名")
private String fileName;
/**
* 文件大小
*/
@Schema(description = "文件大小")
private Long fileSize;
/**
* 文件类型
*/
@Schema(description = "文件类型")
private String fileType;
/**
* MD5值
*/
@Schema(description = "MD5值")
private String md5;
/**
* SM3值
*/
@Schema(description = "SM3值")
private String sm3;
/**
* 数据类型
*/
@JsonFormat(shape = JsonFormat.Shape.STRING)
@Schema(description = "数据类型")
private Integer dataType;
/**
* 过期时间
*/
@Schema(description = "过期时间")
private Instant expireTime;
/**
* 备注
*/
@Schema(description = "备注")
private String memo;
}

View File

@@ -0,0 +1,67 @@
package xtools.app.sys.model.dto.resp;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import xtools.boot.api.model.entity.BaseEntity;
/**
* <p>Title : SysRiskResp</p>
* <p>Description : 系统风控表响应对象</p>
* <p>Company : org.xujun</p>
*
* @author : xujun
* @version : 1.0.0
* @date : 2026-04-08 09:10:45
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class SysRiskResp extends BaseEntity {
/**
* 主键 ID
*/
@Schema(description = "主键 ID")
private Long id;
/**
* 系统类型
*/
@Schema(description = "系统类型")
private String sysType;
/**
* 风控类型
*/
@Schema(description = "风控类型")
private Integer type;
/**
* 系统参数值
*/
@Schema(description = "系统参数值")
private String data;
/**
* 创建人ID
*/
@Schema(description = "创建人ID")
private Long createBy;
/**
* 更新人ID
*/
@Schema(description = "更新人ID")
private Long updateBy;
/**
* 备注
*/
@Schema(description = "备注")
private String memo;
}