初始化仓库
This commit is contained in:
27
xtools-boot-api/pom.xml
Normal file
27
xtools-boot-api/pom.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?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-boot</artifactId>
|
||||
<version>5.0.0</version>
|
||||
</parent>
|
||||
<artifactId>xtools-boot-api</artifactId>
|
||||
|
||||
<!-- 依赖 -->
|
||||
<dependencies>
|
||||
<!-- jakarta.validation -->
|
||||
<dependency>
|
||||
<groupId>jakarta.validation</groupId>
|
||||
<artifactId>jakarta.validation-api</artifactId>
|
||||
</dependency>
|
||||
<!-- swagger annotations -->
|
||||
<dependency>
|
||||
<groupId>io.swagger.core.v3</groupId>
|
||||
<artifactId>swagger-annotations</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,22 @@
|
||||
package xtools.boot.api.anntation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* <p>Title : IgnoreXss</p>
|
||||
* <p>Description : IgnoreXss</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/9 10:07
|
||||
*/
|
||||
@Target({ElementType.FIELD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface IgnoreXss {
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package xtools.boot.api.constant;
|
||||
|
||||
/**
|
||||
* <p>Title : BootCommonConstant</p>
|
||||
* <p>Description : BootCommonConstant</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/2/27 15:53
|
||||
*/
|
||||
public interface BootCommonConstant {
|
||||
|
||||
/**
|
||||
* 认证
|
||||
*/
|
||||
String AUTHORIZATION = "Authorization";
|
||||
|
||||
/**
|
||||
* 日志追踪
|
||||
*/
|
||||
String LOG_TRACK = "x-log-track";
|
||||
|
||||
/**
|
||||
* 微服务
|
||||
*/
|
||||
String CLOUD = "x-cloud";
|
||||
|
||||
/**
|
||||
* 微服务Token
|
||||
*/
|
||||
String CLOUD_TOKEN = "x-cloud-token";
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
String UID = "x-uid";
|
||||
|
||||
/**
|
||||
* 认证信息
|
||||
*/
|
||||
String AUTH = "x-auth";
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package xtools.boot.api.enums;
|
||||
|
||||
/**
|
||||
* <p>Title : BaseEnum</p>
|
||||
* <p>Description : BaseEnum</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/2/3 10:31
|
||||
*/
|
||||
public interface BaseEnum {
|
||||
|
||||
/**
|
||||
* 获取所有枚举
|
||||
*
|
||||
* @return 所有枚举
|
||||
*/
|
||||
default BaseEnum[] all() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取枚举编码
|
||||
*
|
||||
* @return 枚举编码
|
||||
*/
|
||||
int code();
|
||||
|
||||
/**
|
||||
* 获取枚举说明
|
||||
*
|
||||
* @return 枚举说明
|
||||
*/
|
||||
String desc();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
package xtools.boot.api.enums;
|
||||
|
||||
import xtools.base.exception.BaseError;
|
||||
import xtools.base.exception.BaseErrorModule;
|
||||
|
||||
/**
|
||||
* <p>Title : BootError</p>
|
||||
* <p>Description : BootError</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2025/12/23 16:53
|
||||
*/
|
||||
public enum BootError implements BaseError {
|
||||
|
||||
/* api begin */
|
||||
// 认证异常
|
||||
UNAUTHORIZED_ERROR(401, "UNAUTHORIZED_ERROR", BootErrorModule.BOOT_API, "{}"),
|
||||
// 公钥错误
|
||||
BIZ_PUBLIC_KEY_ERROR(9990, "BIZ_PUBLIC_KEY_ERROR", BootErrorModule.BOOT_API, "{}"),
|
||||
// 业务警告
|
||||
BIZ_WARNING(9998, "BIZ_WARNING", BootErrorModule.BOOT_API, "{}"),
|
||||
// 业务异常
|
||||
BIZ_ERROR(9999, "BIZ_ERROR", BootErrorModule.BOOT_API, "{}"),
|
||||
// 结果码异常
|
||||
RESULT_CODE(10000, "RESULT_CODE", BootErrorModule.BOOT_API, "结果码异常,业务错误码必须大于1000,code:{}"),
|
||||
/* api end */
|
||||
|
||||
/* core begin */
|
||||
// Spring 核心工具异常
|
||||
SPRING_BASE(10001, "SPRING_BASE", BootErrorModule.BOOT_CORE, "Spring基本工具异常,操作类型:[{}]"),
|
||||
// 时间转换异常
|
||||
TIME_CONVERT(10002, "TIME", BootErrorModule.BOOT_CORE, "时间转换异常,时间:{}"),
|
||||
/* core end */
|
||||
|
||||
/* log begin */
|
||||
// 日志Holder异常
|
||||
LOG_HOLDER(10100, "LOG", BootErrorModule.BOOT_LOG, "日志 Holder 异常"),
|
||||
/* log end */
|
||||
|
||||
/* mq begin */
|
||||
MQ(10200, "MQ", BootErrorModule.BOOT_MQ, "MQ异常,错误:{}"),
|
||||
/* mq end */;
|
||||
|
||||
/**
|
||||
* 错误码
|
||||
**/
|
||||
private final int code;
|
||||
|
||||
/**
|
||||
* 错误类型
|
||||
**/
|
||||
private final String type;
|
||||
|
||||
/**
|
||||
* 错误模块
|
||||
**/
|
||||
private final BaseErrorModule module;
|
||||
|
||||
/**
|
||||
* 错误消息模板
|
||||
**/
|
||||
private final String msgTmp;
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param code 错误码
|
||||
* @param type 错误类型
|
||||
* @param msgTmp 错误消息模板
|
||||
*/
|
||||
BootError(int code, String type, BaseErrorModule module, String msgTmp) {
|
||||
this.code = code;
|
||||
this.type = type;
|
||||
this.module = module;
|
||||
this.msgTmp = msgTmp;
|
||||
}
|
||||
|
||||
/**
|
||||
* 错误码
|
||||
*
|
||||
* @return 错误码
|
||||
*/
|
||||
@Override
|
||||
public int code() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
/**
|
||||
* 错误类型
|
||||
*
|
||||
* @return 错误类型
|
||||
*/
|
||||
@Override
|
||||
public String type() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
/**
|
||||
* 错误模块
|
||||
*
|
||||
* @return 错误模块
|
||||
*/
|
||||
@Override
|
||||
public BaseErrorModule module() {
|
||||
return this.module;
|
||||
}
|
||||
|
||||
/**
|
||||
* 错误消息模板
|
||||
*
|
||||
* @return 错误消息模板
|
||||
*/
|
||||
@Override
|
||||
public String msgTmp() {
|
||||
return this.msgTmp;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package xtools.boot.api.enums;
|
||||
|
||||
import xtools.base.exception.BaseErrorModule;
|
||||
|
||||
/**
|
||||
* <p>Title : BootErrorModule</p>
|
||||
* <p>Description : BootErrorModule</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2025/12/23 16:53
|
||||
*/
|
||||
public enum BootErrorModule implements BaseErrorModule {
|
||||
// API模块
|
||||
BOOT_API("xtools-boot-api"),
|
||||
// 核心模块
|
||||
BOOT_CORE("xtools-boot-core"),
|
||||
// 日志模块
|
||||
BOOT_LOG("xtools-boot-log"),
|
||||
// MQ模块
|
||||
BOOT_MQ("xtools-boot-mq"),
|
||||
;
|
||||
|
||||
/**
|
||||
* 错误模块
|
||||
**/
|
||||
private final String module;
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param module 错误模块
|
||||
*/
|
||||
BootErrorModule(String module) {
|
||||
this.module = module;
|
||||
}
|
||||
|
||||
/**
|
||||
* 错误模块
|
||||
*
|
||||
* @return 错误模块
|
||||
*/
|
||||
@Override
|
||||
public String module() {
|
||||
return this.module;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package xtools.boot.api.enums;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>Title : DeleteEnum</p>
|
||||
* <p>Description : DeleteEnum</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/2/20 11:08
|
||||
*/
|
||||
public enum DeleteEnum implements BaseEnum {
|
||||
|
||||
// 正常
|
||||
NORMAL(0, "正常"),
|
||||
// 删除
|
||||
DELETE(1, "删除"),
|
||||
;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private final int code;
|
||||
|
||||
/**
|
||||
* 说明
|
||||
*/
|
||||
private final String desc;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*
|
||||
* @param code 编码
|
||||
* @param desc 说明
|
||||
*/
|
||||
DeleteEnum(int code, String desc) {
|
||||
this.code = code;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断枚举值类型
|
||||
*
|
||||
* @param code 枚举值
|
||||
* @return 枚举值类型
|
||||
*/
|
||||
public static DeleteEnum valueOf(int code) {
|
||||
for (DeleteEnum type : values()) {
|
||||
if (type.code == code) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("unknown code, code=" + code);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取枚举值类型
|
||||
*
|
||||
* @param desc 枚举说明
|
||||
* @return 枚举值类型
|
||||
*/
|
||||
public static DeleteEnum valueOfDesc(String desc) {
|
||||
for (DeleteEnum type : values()) {
|
||||
if (Objects.equals(type.desc, desc)) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("unknown desc, desc=" + desc);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有枚举
|
||||
*
|
||||
* @return 所有枚举
|
||||
*/
|
||||
@Override
|
||||
public BaseEnum[] all() {
|
||||
return values();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取枚举编码
|
||||
*
|
||||
* @return 枚举编码
|
||||
*/
|
||||
@Override
|
||||
public int code() {
|
||||
return code;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取枚举说明
|
||||
*
|
||||
* @return 枚举说明
|
||||
*/
|
||||
@Override
|
||||
public String desc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package xtools.boot.api.enums;
|
||||
|
||||
/**
|
||||
* <p>Title : FileDataType</p>
|
||||
* <p>Description : FileDataType</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/6 16:44
|
||||
*/
|
||||
public enum FileDataType implements BaseEnum {
|
||||
|
||||
// 正常
|
||||
OK(0, "正常"),
|
||||
// 临时
|
||||
TEMP(1, "临时"),
|
||||
// 待删除
|
||||
DELETE(2, "待删除");
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private final int code;
|
||||
|
||||
/**
|
||||
* 说明
|
||||
*/
|
||||
private final String desc;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*
|
||||
* @param code 编码
|
||||
* @param desc 说明
|
||||
*/
|
||||
FileDataType(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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package xtools.boot.api.enums;
|
||||
|
||||
/**
|
||||
* <p>Title : ResultType</p>
|
||||
* <p>Description : ResultType</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/5 14:10
|
||||
*/
|
||||
public enum ResultType {
|
||||
|
||||
|
||||
// 请求成功
|
||||
OK(true, 200, "ok", "请求成功"),
|
||||
// 服务器内部错误
|
||||
INTERNAL_SERVER_ERROR(false, 500, "internal_server_error", "服务器内部错误"),
|
||||
|
||||
// 请求参数缺失 | 参数格式错误(如:期望数字却传了字符串) | 参数类型不匹配 | JSON/XML格式错误 | 必填参数为空
|
||||
BAD_REQUEST(false, 400, "bad_request", "请求参数缺失 | 参数格式错误(如:期望数字却传了字符串) | 参数类型不匹配 | JSON/XML格式错误 | 必填参数为空"),
|
||||
// 认证失败
|
||||
UNAUTHORIZED(false, 401, "unauthorized", "认证失败"),
|
||||
// 权限不足
|
||||
FORBIDDEN(false, 403, "forbidden", "权限不足"),
|
||||
// 资源不存在
|
||||
NOT_FOUND(false, 404, "not_found", "资源不存在"),
|
||||
// 请求方法不被允许
|
||||
METHOD_NOT_ALLOWED(false, 405, "method_not_allowed", "请求方法不被允许"),
|
||||
// 请求过于频繁
|
||||
TOO_MANY_REQUESTS(false, 429, "too_many_requests", "请求过于频繁"),
|
||||
;
|
||||
|
||||
/**
|
||||
* 是否成功
|
||||
*/
|
||||
private final boolean success;
|
||||
|
||||
/**
|
||||
* 响应码
|
||||
*/
|
||||
private final int code;
|
||||
|
||||
/**
|
||||
* 响应信息
|
||||
*/
|
||||
private final String msg;
|
||||
|
||||
/**
|
||||
* 响应描述
|
||||
*/
|
||||
private final String desc;
|
||||
|
||||
ResultType(boolean success, int code, String msg, String desc) {
|
||||
this.success = success;
|
||||
this.code = code;
|
||||
this.msg = msg;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public boolean success() {
|
||||
return success;
|
||||
}
|
||||
|
||||
public int code() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String msg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
public String desc() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package xtools.boot.api.enums;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>Title : StatusEnum</p>
|
||||
* <p>Description : StatusEnum</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/2/20 11:08
|
||||
*/
|
||||
public enum StatusEnum implements BaseEnum {
|
||||
|
||||
// 正常
|
||||
NORMAL(1, "正常"),
|
||||
// 停用
|
||||
DISABLED(0, "停用"),
|
||||
;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private final int code;
|
||||
|
||||
/**
|
||||
* 说明
|
||||
*/
|
||||
private final String desc;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*
|
||||
* @param code 编码
|
||||
* @param desc 说明
|
||||
*/
|
||||
StatusEnum(int code, String desc) {
|
||||
this.code = code;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断枚举值类型
|
||||
*
|
||||
* @param code 枚举值
|
||||
* @return 枚举值类型
|
||||
*/
|
||||
public static StatusEnum valueOf(int code) {
|
||||
for (StatusEnum type : values()) {
|
||||
if (type.code == code) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("unknown code, code=" + code);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取枚举值类型
|
||||
*
|
||||
* @param desc 枚举说明
|
||||
* @return 枚举值类型
|
||||
*/
|
||||
public static StatusEnum valueOfDesc(String desc) {
|
||||
for (StatusEnum type : values()) {
|
||||
if (Objects.equals(type.desc, desc)) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("unknown desc, desc=" + desc);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有枚举
|
||||
*
|
||||
* @return 所有枚举
|
||||
*/
|
||||
@Override
|
||||
public BaseEnum[] all() {
|
||||
return values();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取枚举编码
|
||||
*
|
||||
* @return 枚举编码
|
||||
*/
|
||||
@Override
|
||||
public int code() {
|
||||
return code;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取枚举说明
|
||||
*
|
||||
* @return 枚举说明
|
||||
*/
|
||||
@Override
|
||||
public String desc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package xtools.boot.api.enums;
|
||||
|
||||
/**
|
||||
* <p>Title : ThreadType</p>
|
||||
* <p>Description : ThreadType</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/6 16:44
|
||||
*/
|
||||
public enum ThreadType implements BaseEnum {
|
||||
|
||||
// 主线程
|
||||
MAIN(0, "主线程"),
|
||||
// 子线程
|
||||
THREAD(1, "子线程");
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private final int code;
|
||||
|
||||
/**
|
||||
* 说明
|
||||
*/
|
||||
private final String desc;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*
|
||||
* @param code 编码
|
||||
* @param desc 说明
|
||||
*/
|
||||
ThreadType(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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package xtools.boot.api.exection;
|
||||
|
||||
import xtools.base.exception.CommonException;
|
||||
import xtools.boot.api.enums.BootError;
|
||||
|
||||
/**
|
||||
* <p>Title : BizError</p>
|
||||
* <p>Description : BizError</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/29 11:08
|
||||
*/
|
||||
public class BizError extends CommonException {
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param message 错误消息
|
||||
*/
|
||||
public BizError(String message) {
|
||||
super(BootError.BIZ_ERROR, message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package xtools.boot.api.exection;
|
||||
|
||||
import xtools.base.exception.CommonException;
|
||||
import xtools.boot.api.enums.BootError;
|
||||
|
||||
/**
|
||||
* <p>Title : BizPublicKeyError</p>
|
||||
* <p>Description : BizPublicKeyError</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/29 11:08
|
||||
*/
|
||||
public class BizPublicKeyError extends CommonException {
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param message 错误消息
|
||||
*/
|
||||
public BizPublicKeyError(String message) {
|
||||
super(BootError.BIZ_PUBLIC_KEY_ERROR, message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package xtools.boot.api.exection;
|
||||
|
||||
import xtools.base.exception.CommonException;
|
||||
import xtools.boot.api.enums.BootError;
|
||||
|
||||
/**
|
||||
* <p>Title : BizWarning</p>
|
||||
* <p>Description : BizWarning</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/29 11:08
|
||||
*/
|
||||
public class BizWarning extends CommonException {
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param message 错误消息
|
||||
*/
|
||||
public BizWarning(String message) {
|
||||
super(BootError.BIZ_WARNING, message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package xtools.boot.api.exection;
|
||||
|
||||
import xtools.base.exception.CommonException;
|
||||
import xtools.boot.api.enums.BootError;
|
||||
|
||||
/**
|
||||
* <p>Title : UnauthorizedError</p>
|
||||
* <p>Description : UnauthorizedError</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/29 11:08
|
||||
*/
|
||||
public class UnauthorizedError extends CommonException {
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*/
|
||||
public UnauthorizedError() {
|
||||
super(BootError.UNAUTHORIZED_ERROR, "认证异常");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package xtools.boot.api.model;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>Title : EnumInfoDto</p>
|
||||
* <p>Description : EnumInfoDto</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/2/14 16:30
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class EnumInfoDto implements Serializable {
|
||||
|
||||
/**
|
||||
* 枚举值
|
||||
*/
|
||||
private int code;
|
||||
|
||||
/**
|
||||
* 枚举说明
|
||||
*/
|
||||
private String desc;
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
package xtools.boot.api.model.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import xtools.base.config.BaseParams;
|
||||
import xtools.base.exception.CommonException;
|
||||
import xtools.boot.api.enums.BootError;
|
||||
import xtools.boot.api.enums.ResultType;
|
||||
import xtools.boot.api.exection.BizError;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>Title : Result</p>
|
||||
* <p>Description : Result</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2025/12/22 14:07
|
||||
*/
|
||||
@Data
|
||||
public final class Result<T> implements BaseParams {
|
||||
|
||||
@Schema(description = "是否成功")
|
||||
private boolean success;
|
||||
|
||||
@Schema(description = "响应代码")
|
||||
private int code;
|
||||
|
||||
@Schema(description = "提示信息")
|
||||
private Object msg;
|
||||
|
||||
@Schema(description = "响应数据")
|
||||
private T data;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*/
|
||||
public Result() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*
|
||||
* @param success 是否成功
|
||||
* @param code 响应代码
|
||||
* @param msg 提示信息
|
||||
* @param data 响应数据
|
||||
*/
|
||||
public Result(boolean success, int code, Object msg, T data) {
|
||||
this.success = success;
|
||||
this.code = code;
|
||||
this.msg = msg;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
*
|
||||
* @param type 响应类型
|
||||
* @param data 数据
|
||||
*/
|
||||
public Result(ResultType type, T data) {
|
||||
this.success = type.success();
|
||||
this.code = type.code();
|
||||
this.msg = type.msg() + CP_COMMA + type.desc();
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求成功
|
||||
*
|
||||
* @return 结果
|
||||
*/
|
||||
public static Result<Object> ok() {
|
||||
return new Result<>(ResultType.OK, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求成功
|
||||
*
|
||||
* @param data 数据
|
||||
* @param <T> 泛型
|
||||
* @return 结果
|
||||
*/
|
||||
public static <T> Result<T> ok(T data) {
|
||||
return new Result<>(ResultType.OK, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求成功,业务失败
|
||||
*
|
||||
* @param code 业务错误码
|
||||
* @param msg 业务错误信息
|
||||
* @return 响应结果
|
||||
*/
|
||||
public static Result<Object> fail(int code, Object msg) {
|
||||
if (code < CP_NUM1000) {
|
||||
throw CommonException.create(BootError.RESULT_CODE, code);
|
||||
}
|
||||
return new Result<>(true, code, msg, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求参数缺失 | 参数格式错误(如:期望数字却传了字符串) | 参数类型不匹配 | JSON/XML格式错误 | 必填参数为空
|
||||
*
|
||||
* @return 响应结果
|
||||
*/
|
||||
public static <T> Result<T> badRequest() {
|
||||
return new Result<>(ResultType.BAD_REQUEST, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求参数缺失 | 参数格式错误(如:期望数字却传了字符串) | 参数类型不匹配 | JSON/XML格式错误 | 必填参数为空
|
||||
*
|
||||
* @param msg 错误信息
|
||||
* @return 响应结果
|
||||
*/
|
||||
public static <T> Result<T> badRequest(Object msg) {
|
||||
ResultType type = ResultType.BAD_REQUEST;
|
||||
return new Result<>(type.success(), type.code(), msg, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据
|
||||
*
|
||||
* @return 数据
|
||||
*/
|
||||
public T data() {
|
||||
if (Objects.equals(success, false) || !Objects.equals(code, CP_NUM200)) {
|
||||
throw new BizError(Objects.isNull(msg) ? "业务处理失败" : String.valueOf(msg));
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package xtools.boot.api.model.dto.log;
|
||||
|
||||
import lombok.Data;
|
||||
import xtools.base.config.BaseParams;
|
||||
import xtools.boot.api.enums.ThreadType;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* <p>Title : HolderLogTrack</p>
|
||||
* <p>Description : HolderLogTrack</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/6 16:44
|
||||
*/
|
||||
@Data
|
||||
public class HolderLogTrack implements BaseParams {
|
||||
|
||||
/**
|
||||
* 日志追踪 ID
|
||||
*/
|
||||
private final String traceId;
|
||||
/**
|
||||
* 父线日志 ID
|
||||
*/
|
||||
private final String parentId;
|
||||
/**
|
||||
* 线程类型
|
||||
*/
|
||||
private final ThreadType type;
|
||||
/**
|
||||
* 日志获取次数
|
||||
*/
|
||||
private final AtomicInteger count;
|
||||
/**
|
||||
* 是否保存日志
|
||||
*/
|
||||
private boolean save;
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param traceId 日志追踪 ID
|
||||
* @param parentId 父日志 ID
|
||||
* @param type 线程类型
|
||||
*/
|
||||
public HolderLogTrack(String traceId, String parentId, ThreadType type) {
|
||||
this.save = true;
|
||||
this.traceId = traceId;
|
||||
this.parentId = parentId;
|
||||
this.type = type;
|
||||
this.count = new AtomicInteger(CP_NUM0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param traceId 日志追踪 ID
|
||||
* @param parentId 父日志 ID
|
||||
* @param type 线程类型
|
||||
* @param count 日志获取次数
|
||||
*/
|
||||
public HolderLogTrack(String traceId, String parentId, ThreadType type, int count) {
|
||||
this.save = true;
|
||||
this.traceId = traceId;
|
||||
this.parentId = parentId;
|
||||
this.type = type;
|
||||
this.count = new AtomicInteger(count);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package xtools.boot.api.model.dto.log;
|
||||
|
||||
import xtools.boot.api.enums.ThreadType;
|
||||
|
||||
/**
|
||||
* <p>Title : LogTrack</p>
|
||||
* <p>Description : LogTrack</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @param id 日志 ID
|
||||
* @param time 日志时间
|
||||
* @param traceId 日志追踪 ID
|
||||
* @param parentId 父线日志 ID
|
||||
* @param type 线程类型
|
||||
* @param index 日志获取次数
|
||||
* @param save 是否保存日志
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/6 16:44
|
||||
*/
|
||||
public record LogTrack(String id, Long time, String traceId, String parentId, ThreadType type, Integer index,
|
||||
boolean save) {
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package xtools.boot.api.model.dto.page;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <p>Title : PageReq</p>
|
||||
* <p>Description : PageReq</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2025/12/22 14:58
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PageReq<T> implements Serializable {
|
||||
|
||||
/**
|
||||
* 当前页面
|
||||
*/
|
||||
@Schema(description = "当前页面", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
private Integer currentPage;
|
||||
|
||||
/**
|
||||
* 页面数据条数
|
||||
*/
|
||||
@Schema(description = "页面数据条数", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
|
||||
private Integer pageSize;
|
||||
|
||||
/**
|
||||
* 查询条件
|
||||
*/
|
||||
@Schema(description = "查询条件")
|
||||
private T query;
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package xtools.boot.api.model.dto.page;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import xtools.core.extend.PagingUtils;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>Title : PageResp</p>
|
||||
* <p>Description : PageResp</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2025/12/22 14:58
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public final class PageResp<T> implements Serializable {
|
||||
|
||||
/**
|
||||
* 当前页面
|
||||
*/
|
||||
@Schema(description = "当前页面")
|
||||
private Integer currentPage;
|
||||
|
||||
/**
|
||||
* 页面数据条数
|
||||
*/
|
||||
@Schema(description = "页面数据条数")
|
||||
private Integer pageSize;
|
||||
|
||||
/**
|
||||
* 数据条数
|
||||
*/
|
||||
@Schema(description = "数据条数")
|
||||
private Long total;
|
||||
|
||||
/**
|
||||
* 总页数
|
||||
*/
|
||||
@Schema(description = "总页数")
|
||||
private Long pageCount;
|
||||
|
||||
/**
|
||||
* 结果数据集
|
||||
*/
|
||||
@Schema(description = "结果数据集")
|
||||
private List<T> data;
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param req 分页请求
|
||||
*/
|
||||
public PageResp(PageReq<?> req) {
|
||||
this.currentPage = req.getCurrentPage();
|
||||
this.pageSize = req.getPageSize();
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
*
|
||||
* @param req 分页请求
|
||||
*/
|
||||
public PageResp(PageReq<?> req, Long total, List<T> data) {
|
||||
this.currentPage = req.getCurrentPage();
|
||||
this.pageSize = req.getPageSize();
|
||||
this.total = total;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取总页数
|
||||
*
|
||||
* @return 总页数
|
||||
*/
|
||||
public Long getPageCount() {
|
||||
return PagingUtils.getLastPage(this.total, this.pageSize);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package xtools.boot.api.model.dto.req;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>Title : IdListReq</p>
|
||||
* <p>Description : IdListReq</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/2/4 11:03
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class IdListReq implements Serializable {
|
||||
|
||||
/**
|
||||
* idList
|
||||
*/
|
||||
@NotNull(message = "不能为空")
|
||||
@Schema(description = "Id列表")
|
||||
private List<Long> idList;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package xtools.boot.api.model.dto.resp;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>Title : TreeResp</p>
|
||||
* <p>Description : TreeResp</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/30 09:39
|
||||
*/
|
||||
@Data
|
||||
public class TreeResp implements Serializable {
|
||||
|
||||
/**
|
||||
* 父id
|
||||
*/
|
||||
@Schema(description = "父id", example = "1")
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 值
|
||||
*/
|
||||
@Schema(description = "值", example = "1")
|
||||
private Long value;
|
||||
|
||||
/**
|
||||
* 标签
|
||||
*/
|
||||
@Schema(description = "标签", example = "1")
|
||||
private String label;
|
||||
|
||||
/**
|
||||
* 子项
|
||||
*/
|
||||
@Schema(description = "子项")
|
||||
private List<TreeResp> children;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package xtools.boot.api.model.entity;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
|
||||
/**
|
||||
* <p>Title : BaseEntity</p>
|
||||
* <p>Description : BaseEntity</p>
|
||||
* <p>DevelopTools : Idea_x64_v2026.1</p>
|
||||
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @author : XuJun
|
||||
* @version : 5.0.0
|
||||
* @date : 2026/1/17 18:50
|
||||
*/
|
||||
@Data
|
||||
public class BaseEntity implements Serializable {
|
||||
|
||||
@Schema(description = "创建时间", example = "2026-01-05 10:32:00")
|
||||
private Instant gmtCreate;
|
||||
|
||||
@Schema(description = "更新时间", example = "2026-01-05 10:32:00")
|
||||
private Instant gmtModified;
|
||||
}
|
||||
Reference in New Issue
Block a user