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 字段说明 ​

字段名类型必填默认值描述
statusInteger是200HTTP状态码
codeInteger是200业务状态码
msgString是"操作成功"响应消息
dataObject否null响应数据
timestampLong是当前时间戳响应时间
traceIdString否MDC.get("TraceId")链路追踪ID
reasonString否null详细原因

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 字段说明 ​

字段名类型必填默认值描述
statusInteger是HTTP状态码HTTP状态码
errorString是HTTP状态描述错误类型
msgString是异常消息错误消息
codeInteger是业务错误码业务错误码
pathString是请求路径请求路径
exceptionString是异常类名异常类名
reasonsString否异常消息详细原因
timestampLocalDateTime是当前时间时间戳
dataObject否null错误数据
traceIdString否null链路追踪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