Skip to content

Platform 模块 ​

guava-platform-starter — 平台基础模块,提供异常处理、工具类、用户上下文、AOP 切面、拦截器等核心能力。

基本信息 ​

属性值
工程名guava-platform-starter
类型平台基础模块
作用提供通用基础能力,是所有业务服务的基石

统一返回结果 ​

RestResult ​

统一接口返回格式:

java
// 成功返回
return RestResult.success(data);

// 失败返回
return RestResult.fail(BizCode.VARIABLE_NOT_EMPTY);

// 自定义消息
return RestResult.success("操作成功", data);

返回格式:

json
{
  "code": 200,
  "status": "success",
  "message": "操作成功",
  "data": {}
}

异常处理 ​

BizCode 业务错误码 ​

java
// 常用错误码
BizCode.VARIABLE_NOT_EMPTY    // 参数不能为空
BizCode.AUTH_LOGINACCOUNT_NOTEMPTY  // 账号不能为空
BizCode.VERIFY_CODE_INCORRECT       // 验证码错误

BizException 业务异常 ​

java
// 抛出业务异常
throw new BizException(BizCode.VARIABLE_NOT_EMPTY);

// 自定义消息
throw new BizException(10001, "自定义错误消息");

GlobalExceptionHandler ​

全局异常处理器(ControllerAdvice),自动捕获并统一返回异常信息。

用户上下文 ​

ContextHolder ​

基于 ThreadLocal 的请求上下文,获取当前登录用户信息:

java
// 获取当前用户 ID
Long userId = ContextHolder.getUserId();

// 获取当前用户账号
String account = ContextHolder.getAccount();

// 获取当前部门 ID
Long deptId = ContextHolder.getDeptId();

// 获取当前公司 ID
Long companyId = ContextHolder.getCompanyId();

工具类详解 ​

AssertMyUtil 断言工具 ​

参数校验与业务异常抛出:

java
// 断言对象不为 null
AssertMyUtil.notNull(user, BizCode.VARIABLE_NOT_EMPTY, "user");

// 断言字符串不为空
AssertMyUtil.notEmpty(account, BizCode.AUTH_LOGINACCOUNT_NOTEMPTY);

// 断言对象为 null
AssertMyUtil.isNull(result, BizCode.VARIABLE_NOT_EMPTY, "result");

// 直接抛出异常
AssertMyUtil.errMsg(BizCode.VERIFY_CODE_INCORRECT);

// 自定义消息
AssertMyUtil.errMsg("自定义错误消息");

// 带错误码
AssertMyUtil.errMsg(10001, "自定义错误");

MyUtil 通用工具 ​

请求参数处理与查询条件解析:

java
// 获取请求参数值
String value = MyUtil.getValue(request, "paramName");

// 获取 Object 的字符串值
String str = MyUtil.getValue(obj);

// 获取请求头
String token = MyUtil.getHeaderValue(request, "Authorization");

// 判断字符串是否为空
boolean empty = MyUtil.isempty(str);

// 解析查询条件为 Map(用于动态查询)
HashMap<String, QcBean> conditions = MyUtil.getConditions(params, page);

// 解析查询条件为 WHERE 子句
String where = MyUtil.getConditionsWhere(params, page);

// 获取当前日期
Date now = MyUtil.getCurrentDate();

// 获取格式化日期
String date = MyUtil.getDate("yyyy-MM-dd HH:mm:ss");

// 获取浏览器信息
String browser = MyUtil.getBrowser(request);

// 获取方法参数(用于日志记录)
String params = MyUtil.getMethodParams(method, args);

StrMyUtil 字符串工具 ​

java
// 首字母转小写
String lower = StrMyUtil.firChar2Lower("Hello");  // "hello"

// 首字母转大写
String upper = StrMyUtil.firChar2Upper("hello");  // "Hello"

// 占位符替换
String msg = StrMyUtil.placeHolder("用户[{0}]已存在", "admin");
// 输出: "用户[admin]已存在"

// 驼峰转下划线
String underline = StrMyUtil.toLine("userName");  // "user_name"

// 继承 Hutool StrUtil 的所有方法
boolean empty = StrMyUtil.isEmpty(str);
boolean blank = StrMyUtil.isBlank(str);
String trimmed = StrMyUtil.trim(str);

DateMyUtil 日期工具 ​

java
// 时间戳转 LocalDateTime
LocalDateTime dateTime = DateMyUtil.fromTimeStamp(1700000000L);

// LocalDateTime 转时间戳
Long timestamp = DateMyUtil.getTimeStamp(LocalDateTime.now());

// LocalDateTime 转 Date
Date date = DateMyUtil.toDate(LocalDateTime.now());

// Date 转 LocalDateTime
LocalDateTime dateTime = DateMyUtil.toLocalDateTime(new Date());

// 格式化日期
String dateStr = LocalDateTime.now().format(DateMyUtil.DFY_MD_HMS);  // "2024-01-01 12:00:00"
String dateStr2 = LocalDateTime.now().format(DateMyUtil.DFY_MD);     // "2024-01-01"

// 继承 Hutool DateUtil 的所有方法
String now = DateMyUtil.now();
Date yesterday = DateMyUtil.yesterday();

IPMyUtil IP 地址工具 ​

java
// 获取客户端真实 IP(支持代理)
String ip = IPMyUtil.getIpAddr(request);

// 根据 IP 获取地区信息
String region = IPMyUtil.getIpRegion(ip);

SpringBeanMyUtil Spring Bean 工具 ​

java
// 根据类型获取 Bean
UserService userService = SpringBeanMyUtil.getBean(UserService.class);

// 根据名称获取 Bean
Object bean = SpringBeanMyUtil.getBean("beanName");

// 获取当前 ApplicationContext
ApplicationContext ctx = SpringBeanMyUtil.getApplicationContext();

ServletWebMyUtil Servlet Web 工具 ​

java
// 获取当前 HttpServletRequest
HttpServletRequest request = ServletWebMyUtil.getRequest();

// 获取当前 HttpServletResponse
HttpServletResponse response = ServletWebMyUtil.getResponse();

SpringWebMvcMyUtil Spring MVC 工具 ​

java
// 获取当前请求 URI
String uri = SpringWebMvcMyUtil.getRequestUri();

// 获取当前请求方法
String method = SpringWebMvcMyUtil.getRequestMethod();

AESMyUtil AES 加解密工具 ​

java
// AES 加密
String encrypted = AESMyUtil.aesEncrypt("明文");

// AES 解密
String decrypted = AESMyUtil.aesDecrypt("密文");

RsaMyUtil RSA 加解密工具 ​

java
// RSA 公钥加密
String encrypted = RsaMyUtil.publicEncrypt("明文");

// RSA 私钥解密
String decrypted = RsaMyUtil.privateDecrypt("密文");

RandomMyUtil 随机数工具 ​

java
// 生成指定长度随机字符串
String random = RandomMyUtil.randomString(16);

// 生成随机数字
int num = RandomMyUtil.randomInt(1000, 9999);

// 生成 UUID
String uuid = RandomMyUtil.randomUUID();

CollectionMyUtil 集合工具 ​

java
// 判断集合是否为空
boolean empty = CollectionMyUtil.isEmpty(list);

// 获取集合第一个元素
T first = CollectionMyUtil.getFirst(list);

// 集合转字符串
String str = CollectionMyUtil.join(list, ",");

ArrayMyUtil 数组工具 ​

java
// 判断数组是否为空
boolean empty = ArrayMyUtil.isEmpty(arr);

// 数组转列表
List<T> list = ArrayMyUtil.toList(arr);

JacksonMyUtil JSON 工具 ​

java
// 对象转 JSON 字符串
String json = JacksonMyUtil.toJson(obj);

// JSON 字符串转对象
User user = JacksonMyUtil.fromJson(json, User.class);

// JSON 字符串转 List
List<User> list = JacksonMyUtil.fromJsonList(json, User.class);

FileMyUtil 文件工具 ​

java
// 获取文件扩展名
String ext = FileMyUtil.getExtension("test.txt");  // "txt"

// 获取文件名(不含扩展名)
String name = FileMyUtil.getFileName("test.txt");  // "test"

// 判断文件是否存在
boolean exists = FileMyUtil.exists("/path/to/file");

ThrowableUtil 异常工具 ​

java
// 获取异常堆栈信息
String stackTrace = ThrowableUtil.getStackTrace(exception);

// 获取根因异常
Throwable rootCause = ThrowableUtil.getRootCause(exception);

YmlMyUtil / PropertiesMyUtil 配置读取工具 ​

java
// 读取 YML 配置
String value = YmlMyUtil.getProperty("guava.name");

// 读取 Properties 配置
String value = PropertiesMyUtil.getProperty("key");

注解 ​

注解说明用法
@CheckToken需要 Token 校验在 Controller 方法上使用
@NoCheckToken免 Token 校验在登录/验证码等接口使用
@MarkLog标记操作日志@MarkLog(value = "新增用户-[{0}]", param = "account")
@SystemLogIgnore忽略系统日志在不需要记录日志的方法使用
@SystemLogModule系统日志模块标识标记日志所属模块
@ExecTime统计执行时间在需要监控耗时的方法使用
@CheckData数据校验标记需要数据校验的方法

Sentinel 限流 ​

类说明
SentinelUrlBlockHandlerURL 限流处理器
MyUrlBlockHandler自定义限流处理器

统一 Mapper ​

类说明
SupperMapper通用 Mapper
DBMapper数据库 Mapper
DictApiMapper字典 API Mapper
JobApiMapper定时任务 Mapper
MenuApiMapper菜单 API Mapper
ImportExcelMapperExcel 导入 Mapper
QuartzJobMapperQuartz 任务 Mapper
QuartzJobLogMapperQuartz 任务日志 Mapper
SysTabExportMapper导出配置 Mapper

相关文档 ​