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 限流
| 类 | 说明 |
|---|---|
SentinelUrlBlockHandler | URL 限流处理器 |
MyUrlBlockHandler | 自定义限流处理器 |
统一 Mapper
| 类 | 说明 |
|---|---|
SupperMapper | 通用 Mapper |
DBMapper | 数据库 Mapper |
DictApiMapper | 字典 API Mapper |
JobApiMapper | 定时任务 Mapper |
MenuApiMapper | 菜单 API Mapper |
ImportExcelMapper | Excel 导入 Mapper |
QuartzJobMapper | Quartz 任务 Mapper |
QuartzJobLogMapper | Quartz 任务日志 Mapper |
SysTabExportMapper | 导出配置 Mapper |