Skip to content

Common-Base 模块 API 参考文档

1. 响应模型 API

1.1 CommonResult 类

1.1.1 类定义

java
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult implements Serializable

1.1.2 字段说明

字段名类型必填默认值描述
statusInteger200HTTP状态码
codeInteger200业务状态码
msgString"操作成功"响应消息
dataObjectnull响应数据
timestampLong当前时间戳响应时间
traceIdStringMDC.get("TraceId")链路追踪ID
reasonStringnull详细原因

1.1.3 静态工厂方法

success()
java
/**
 * 创建成功响应(无数据)
 * @return CommonResult 成功响应对象
 */
public static CommonResult success()

// 示例:
CommonResult result = CommonResult.success();
// 输出: {"status":200,"code":200,"msg":"操作成功","data":null,"timestamp":1634567890000,"traceId":null,"reason":null}
success(Object data)
java
/**
 * 创建成功响应(带数据)
 * @param data 响应数据
 * @return CommonResult 成功响应对象
 */
public static CommonResult success(final Object data)

// 示例:
User user = new User(1L, "admin");
CommonResult result = CommonResult.success(user);
// 输出: {"status":200,"code":200,"msg":"操作成功","data":{"id":1,"username":"admin"},"timestamp":1634567890000,"traceId":"123456","reason":null}
failure(ResponseCodeEnums resultCode)
java
/**
 * 创建失败响应
 * @param resultCode 响应码枚举
 * @return CommonResult 失败响应对象
 */
public static CommonResult failure(final ResponseCodeEnums resultCode)

// 示例:
CommonResult result = CommonResult.failure(ResponseCodeEnums.PARAM_IS_INVALID);
// 输出: {"status":null,"code":10001,"msg":"参数校验不通过","data":null,"timestamp":1634567890000,"traceId":null,"reason":null}
failure(ResponseCodeEnums resultCode, Object data)
java
/**
 * 创建失败响应(带错误数据)
 * @param resultCode 响应码枚举
 * @param data 错误数据
 * @return CommonResult 失败响应对象
 */
public static CommonResult failure(final ResponseCodeEnums resultCode, final Object data)

// 示例:
Map<String, String> errors = Map.of("username", "不能为空");
CommonResult result = CommonResult.failure(ResponseCodeEnums.PARAM_IS_INVALID, errors);
// 输出: {"status":null,"code":10001,"msg":"参数校验不通过","data":{"username":"不能为空"},"timestamp":1634567890000,"traceId":null,"reason":null}

1.2 ErrorResult 类

1.2.1 类定义

java
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ErrorResult implements Serializable

1.2.2 字段说明

字段名类型必填默认值描述
statusIntegerHTTP状态码HTTP状态码
errorStringHTTP状态描述错误类型
msgString异常消息错误消息
codeInteger业务错误码业务错误码
pathString请求路径请求路径
exceptionString异常类名异常类名
reasonsString异常消息详细原因
timestampLocalDateTime当前时间时间戳
dataObjectnull错误数据
traceIdStringnull链路追踪ID

1.2.3 静态工厂方法

failure(ResponseCodeEnums, Throwable, HttpStatus, Object)
java
/**
 * 创建错误响应(带错误数据)
 * @param responseCodeEnums 响应码枚举
 * @param e 异常对象
 * @param httpStatus HTTP状态
 * @param errors 错误数据
 * @return ErrorResult 错误响应对象
 */
public static ErrorResult failure(final ResponseCodeEnums responseCodeEnums, 
                                  final Throwable e, 
                                  final HttpStatus httpStatus, 
                                  final Object errors)
failure(Throwable, HttpStatus)
java
/**
 * 创建错误响应
 * @param e 异常对象
 * @param httpStatus HTTP状态
 * @return ErrorResult 错误响应对象
 */
public static ErrorResult failure(final Throwable e, final HttpStatus httpStatus)
failure(ResponseCodeEnums, Throwable, HttpStatus)
java
/**
 * 创建错误响应
 * @param responseCodeEnums 响应码枚举
 * @param e 异常对象
 * @param httpStatus HTTP状态
 * @return ErrorResult 错误响应对象
 */
public static ErrorResult failure(final ResponseCodeEnums responseCodeEnums, 
                                  final Throwable e, 
                                  final HttpStatus httpStatus)
failure(Integer, String, Throwable, HttpStatus)
java
/**
 * 创建错误响应(自定义错误码)
 * @param code 自定义错误码
 * @param message 错误消息
 * @param e 异常对象
 * @param httpStatus HTTP状态
 * @return ErrorResult 错误响应对象
 */
public static ErrorResult failure(final Integer code, 
                                  final String message, 
                                  final Throwable e, 
                                  final HttpStatus httpStatus)

2. 异常体系 API

2.1 RequestException(异常基类)

2.1.1 类定义

java
public class RequestException extends RuntimeException

2.1.2 构造方法

java
public RequestException()
public RequestException(ResponseCodeEnums responseCodeEnums)
public RequestException(ResponseCodeEnums responseCodeEnums, Object data)
public RequestException(String msg)
public RequestException(String msg, Throwable cause)

2.1.3 字段说明

字段名类型描述
codeInteger错误码
messageString错误消息
dataObject异常数据

2.2 BusinessException

2.2.1 类定义

java
public class BusinessException extends RequestException

2.2.2 构造方法

java
public BusinessException()
public BusinessException(Object data)
public BusinessException(ResponseCodeEnums responseCodeEnums)
public BusinessException(ResponseCodeEnums responseCodeEnums, Object data)
public BusinessException(String msg)

2.3 ParameterInvalidException

2.3.1 类定义

java
public class ParameterInvalidException extends RequestException

2.3.2 构造方法

java
public ParameterInvalidException()
public ParameterInvalidException(String msg)
public ParameterInvalidException(ResponseCodeEnums responseCodeEnums)
public ParameterInvalidException(ResponseCodeEnums responseCodeEnums, Object data)

2.4 其他异常类

异常类继承关系用途
NotFoundExceptionRequestException资源不存在异常
DataConflictExceptionRequestException数据冲突异常
InternalServerExceptionRequestException服务器内部异常
RemoteAccessExceptionRequestException远程调用异常
ExcelExceptionRequestExceptionExcel操作异常
FileNotExistExceptionRequestException文件不存在异常
RequestEncryptExceptionRequestException请求加密异常
RequestSqlInjectExceptionRequestExceptionSQL注入异常

2.5 ResponseCodeEnums 枚举

2.5.1 常用响应码

枚举值错误码错误消息说明
SUCCESS200操作成功成功响应
PARAM_IS_INVALID10001参数校验不通过参数无效
PARAM_IS_BLANK10002参数为空参数为空
USER_NOT_EXIST20004用户不存在用户不存在
USER_HAS_EXISTED20005用户已存在用户已存在
NOT_FOUND40004接口地址无效资源不存在
DEFAULT_ERROR30001业务错误默认业务错误

2.5.2 工具方法

java
// 根据枚举名称获取错误消息
public static String getMessage(String name)

// 根据枚举名称获取错误码
public static Integer getCode(String name)

// 获取当前枚举的错误码
public Integer code()

// 获取当前枚举的错误消息
public String message()

3. 工具类 API

3.1 IpUtils

3.1.1 getIpAddress(HttpServletRequest)

java
/**
 * 从HttpServletRequest中获取请求人的IP地址
 * @param request HttpServletRequest对象
 * @return Optional<String> IP地址(可能为空)
 */
public static Optional<String> getIpAddress(HttpServletRequest request)

// 示例:
Optional<String> ip = IpUtils.getIpAddress(request);
if (ip.isPresent()) {
    System.out.println("IP地址: " + ip.get());
}

3.1.2 getLocationInfo(String)

java
/**
 * 传入IP地址获取用户所在地区
 * @param ipAddress IP地址字符串
 * @return Optional<String> 地理位置信息
 */
public static Optional<String> getLocationInfo(String ipAddress)

// 示例:
Optional<String> location = IpUtils.getLocationInfo("192.168.1.1");
location.ifPresent(loc -> System.out.println("位置: " + loc));
// 输出: 位置: 中国|0|广东省|深圳市|电信

3.2 SpringUtil

3.2.1 getBean(String)

java
/**
 * 通过Bean名称获取Bean对象
 * @param name Bean名称
 * @return Object Bean对象
 */
public static Object getBean(String name)

3.2.2 getBean(Class<T>)

java
/**
 * 通过Bean类型获取Bean对象
 * @param clazz Bean类型
 * @return T Bean对象
 */
public static <T> T getBean(Class<T> clazz)

3.2.3 getBean(String, Class<T>)

java
/**
 * 通过Bean名称和类型获取Bean对象
 * @param name Bean名称
 * @param clazz Bean类型
 * @return T Bean对象
 */
public static <T> T getBean(String name, Class<T> clazz)

3.2.4 获取ApplicationContext

java
/**
 * 获取Spring应用上下文
 * @return ApplicationContext
 */
public static ApplicationContext getApplicationContext()

3.3 RedisUtil

3.3.1 字符串操作

java
// 设置字符串值
public static void set(String key, String value)
public static void set(String key, String value, long timeout)

// 获取字符串值
public static String get(String key)

// 删除键
public static void del(String... keys)

// 判断键是否存在
public static boolean exists(String key)

// 设置过期时间
public static boolean expire(String key, long timeout)

3.3.2 对象操作

java
// 设置对象
public static void setObject(String key, Object value)
public static void setObject(String key, Object value, long timeout)

// 获取对象
public static <T> T getObject(String key, Class<T> clazz)

3.3.3 哈希操作

java
// 设置哈希字段
public static void hset(String key, String field, Object value)

// 获取哈希字段
public static Object hget(String key, String field)

// 获取所有哈希字段
public static Map<Object, Object> hgetall(String key)

3.4 ExcelUtil

3.4.1 导出Excel

java
/**
 * 导出Excel文件
 * @param list 数据列表
 * @param sheetName 工作表名称
 * @param title 标题
 * @param clazz 数据类型
 * @param fileName 文件名
 * @param response HttpServletResponse
 */
public static void exportExcel(List<?> list, 
                               String sheetName, 
                               String title, 
                               Class<?> clazz, 
                               String fileName, 
                               HttpServletResponse response)

3.4.2 导入Excel

java
/**
 * 导入Excel文件
 * @param file Excel文件
 * @param headRowNum 标题行号
 * @param clazz 数据类型
 * @return List<T> 数据列表
 */
public static <T> List<T> importExcel(MultipartFile file, 
                                      Integer headRowNum, 
                                      Class<T> clazz)

/**
 * 导入Excel文件(使用监听器)
 * @param file Excel文件
 * @param headRowNum 标题行号
 * @param clazz 数据类型
 * @param listener Excel监听器
 */
public static <T> void importExcel(MultipartFile file, 
                                   Integer headRowNum, 
                                   Class<T> clazz, 
                                   ExcelListener<T> listener)

3.5 SqlInjectUtils

3.5.1 checkSqlInject(String)

java
/**
 * 检查字符串是否包含SQL注入攻击
 * @param value 待检查的字符串
 * @return boolean 是否包含SQL注入
 */
public static boolean checkSqlInject(String value)

3.5.2 使用示例

java
// 检查单个参数
String param = request.getParameter("username");
if (SqlInjectUtils.checkSqlInject(param)) {
    throw new RequestSqlInjectException("参数存在SQL注入攻击");
}

// 检查所有请求参数
Enumeration<String> params = request.getParameterNames();
while (params.hasMoreElements()) {
    String paramName = params.nextElement();
    String paramValue = request.getParameter(paramName);
    if (SqlInjectUtils.checkSqlInject(paramValue)) {
        throw new RequestSqlInjectException("参数" + paramName + "存在SQL注入攻击");
    }
}

3.6 其他工具类

3.6.1 ClassUtils

java
// 获取类加载器
public static ClassLoader getClassLoader()

// 获取类路径
public static String getClassPath()

// 扫描包下的类
public static Set<Class<?>> scanPackage(String packageName)

3.6.2 TokenUtils

java
// 生成Token
public static String generateToken()

// 验证Token
public static boolean verifyToken(String token)

// 解析Token
public static Map<String, Object> parseToken(String token)

3.6.3 MongoUtil

java
// 保存文档
public static <T> T save(T document)

// 查询文档
public static <T> List<T> findAll(Class<T> clazz)

// 根据ID查询
public static <T> Optional<T> findById(String id, Class<T> clazz)

4. 注解 API

4.1 查询条件注解

4.1.1 @Eq

java
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Eq {
    String value() default "";
}

// 使用示例:
public class UserQuery {
    @Eq("username")
    private String name; // 对应SQL: username = ?
}

4.1.2 @Gt / @Lt / @Gte / @Lte

java
// 大于
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Gt {
    String value() default "";
}

// 小于
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Lt {
    String value() default "";
}

// 大于等于
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Gte {
    String value() default "";
}

// 小于等于
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Lte {
    String value() default "";
}

// 使用示例:
public class UserQuery {
    @Gt("age")
    private Integer minAge; // 对应SQL: age > ?
    
    @Lt("age") 
    private Integer maxAge; // 对应SQL: age < ?
}

4.1.3 @In

java
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface In {
    String value() default "";
}

// 使用示例:
public class UserQuery {
    @In("status")
    private List<Integer> statusList; // 对应SQL: status IN (?)
}

4.1.4 @Regex

java
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Regex {
    String value() default "";
}

// 使用示例:
public class UserQuery {
    @Regex("username")
    private String namePattern; // 对应SQL: username REGEXP ?
}

4.2 操作符注解

4.2.1 @AndOperator

java
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AndOperator {
}

// 使用示例:
@AndOperator
public class UserQuery {
    @Eq("username")
    private String name;
    
    @Eq("status")
    private Integer status;
    // 对应SQL: username = ? AND status = ?
}

4.2.2 @OrOperator

java
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface OrOperator {
}

// 使用示例:
@OrOperator
public class UserQuery {
    @Eq("username")
    private String name;
    
    @Eq("email")
    private String email;
    // 对应SQL: username = ? OR email = ?
}

4.2.3 @NorOperator

java
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface NorOperator {
}

// 使用示例:
@NorOperator
public class UserQuery {
    @Eq("status")
    private Integer status1;
    
    @Eq("status")
    private Integer status2;
    // 对应SQL: NOT (status = ? OR status = ?)
}

4.3 条件注解

4.3.1 @ConditionsAnnotation

java
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ConditionsAnnotation {
}

// 使用示例:
@ConditionsAnnotation
public class UserQuery {
    // 可以组合使用各种查询条件注解
}

4.3.2 @No

java
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface No {
}

// 使用示例:
public class UserQuery {
    @No
    private String ignoreField; // 该字段不会被解析为查询条件
}

5. 模型 API

5.1 Page 分页模型

5.1.1 类定义

java
public class Page<T> implements Serializable

5.1.2 字段说明

字段名类型描述
currentLong当前页码
sizeLong每页大小
totalLong总记录数
pagesLong总页数
recordsList<T>当前页数据
optimizeCountSqlBoolean是否优化count查询
searchCountBoolean是否进行count查询
maxLimitLong单页分页条数限制

5.1.3 构造方法

java
public Page()
public Page(long current, long size)
public Page(long current, long size, long total)

5.1.4 实用方法

java
// 获取偏移量
public long offset()

// 是否有上一页
public boolean hasPrevious()

// 是否有下一页  
public boolean hasNext()

5.2 FlexBaseEntity

5.2.1 类定义

java
public class FlexBaseEntity implements Serializable

5.2.2 字段说明

字段名类型描述
idLong主键ID
createTimeLocalDateTime创建时间
updateTimeLocalDateTime更新时间
createByString创建人
updateByString更新人
deletedBoolean删除标志

5.3 ThreadShareDataDTO

5.3.1 类定义

java
public class ThreadShareDataDTO implements Serializable

5.3.2 字段说明

字段名类型描述
userIdLong用户ID
usernameString用户名
tenantIdLong租户ID
traceIdString链路追踪ID
requestTimeLocalDateTime请求时间

6. 监听器 API

6.1 BaseEntityListener

6.1.1 类定义

java
public class BaseEntityListener

6.1.2 回调方法

java
// 实体保存前回调
@PrePersist
public void prePersist(Object entity)

// 实体更新前回调  
@PreUpdate
public void preUpdate(Object entity)

6.2 ExcelListener

6.2.1 类定义

java
public abstract class ExcelListener<T> implements AnalysisEventListener<T>

6.2.2 抽象方法

java
// 每解析一行数据时调用
@Override
public abstract void invoke(T data, AnalysisContext context)

// 所有数据解析完成后调用
@Override  
public abstract void doAfterAllAnalysed(AnalysisContext context)

6.2.3 使用示例

java
public class UserExcelListener extends ExcelListener<User> {
    private List<User> userList = new ArrayList<>();
    
    @Override
    public void invoke(User user, AnalysisContext context) {
        userList.add(user);
    }
    
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("解析完成,共" + userList.size() + "条数据");
    }
    
    public List<User> getUserList() {
        return userList;
    }
}

7. 常量 API

7.1 CommonConstants

7.1.1 HTTP 方法常量

java
public static final String GET = "GET";
public static final String POST = "POST";
public static final String PUT = "PUT";
public static final String DELETE = "DELETE";
public static final String PATCH = "PATCH";

7.1.2 操作类型常量

java
public static final String MODIFY_INSERT = "新增";
public static final String MODIFY_UPDATE = "修改";
public static final String MODIFY_DELETE = "删除";
public static final String MODIFY_SELECT = "查询";

7.1.3 文件类型常量

java
public static final String EXCEL_CONTENT = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
public static final String PDF_CONTENT = "application/pdf";
public static final String IMAGE_CONTENT = "image/";

7.1.4 系统常量

java
public static final String SUPER_ADMIN = "admin";
public static final String NO_IP = "0.0.0.0";
public static final String NO_LOCATION = "未知位置";

7.2 HeaderConstants

7.2.1 请求头常量

java
public static final String TRACE_ID = "Trace-Id";
public static final String USER_ID = "User-Id";
public static final String TENANT_ID = "Tenant-Id";
public static final String AUTHORIZATION = "Authorization";
public static final String CONTENT_TYPE = "Content-Type";

7.3 RequestConstants

7.3.1 请求参数常量

java
public static final String PAGE_NUM = "pageNum";
public static final String PAGE_SIZE = "pageSize";
public static final String ORDER_BY = "orderBy";
public static final String SORT = "sort";

7.4 CaffeineTimeConstant

7.4.1 缓存时间常量

java
public static final long ONE_MINUTE = 60L;
public static final long FIVE_MINUTES = 300L;
public static final long TEN_MINUTES = 600L;
public static final long HALF_HOUR = 1800L;
public static final long ONE_HOUR = 3600L;
public static final long ONE_DAY = 86400L;
public static final long ONE_WEEK = 604800L;

8. 包装器 API

8.1 MultiReadHttpServletRequestWrapper

8.1.1 类定义

java
public class MultiReadHttpServletRequestWrapper extends HttpServletRequestWrapper

8.1.2 核心方法

java
// 获取输入流(支持多次读取)
@Override
public ServletInputStream getInputStream() throws IOException

// 获取请求体内容
public byte[] getBody() throws IOException

// 获取请求体字符串
public String getBodyAsString() throws IOException

8.1.3 使用示例

java
// 在过滤器中包装请求
MultiReadHttpServletRequestWrapper wrappedRequest = 
    new MultiReadHttpServletRequestWrapper(request);

// 多次读取请求体
String body1 = wrappedRequest.getBodyAsString();
// 处理逻辑...
String body2 = wrappedRequest.getBodyAsString(); // 可以再次读取

// 继续过滤器链
filterChain.doFilter(wrappedRequest, response);

9. 方言 API

9.1 DynamicOrderByDialect

9.1.1 类定义

java
public class DynamicOrderByDialect

9.1.2 功能说明

提供动态排序功能,支持根据请求参数动态生成 ORDER BY 子句。

10. 服务 API

10.1 BeyondSoftLogService

10.1.1 接口定义

java
public interface BeyondSoftLogService

10.1.2 方法说明

java
// 保存请求日志
void saveRequestLog(BeyondSoftRequestLog log);

// 保存登录日志  
void saveLoginLog(BeyondSoftLoginLog log);

// 保存审计日志
void saveAuditLog(BeyondSoftDataAuditLog log);

10.2 BeyondSoftLogServiceImpl

10.2.1 类定义

java
public class BeyondSoftLogServiceImpl implements BeyondSoftLogService

10.2.2 实现说明

提供日志服务的默认实现,支持将日志保存到数据库或其他存储介质。


API 版本信息

  • 文档版本: 1.0.0
  • 对应代码版本: common-base 1.0.0
  • 更新日期: 2025-12-30
  • 维护团队: BeyondSoft 架构组

使用说明

  1. 本API参考文档基于common-base模块的实际代码编写
  2. 所有API方法都有对应的实际实现
  3. 使用前请确保已正确引入common-base依赖
  4. 具体使用示例请参考development.md文档

注意事项

  1. 工具类均为静态方法,无需实例化即可使用
  2. 异常类需要配合异常处理模块使用
  3. 注解需要配合相应的解析器使用
  4. 常量类中的值可根据实际需求调整

Copyright © 2025-present | 网站备案号:豫ICP备19038229号-1