util 目录工具类说明
在 src/main/java/work/baiyun/chronicdiseaseapp/util 目录下包含了项目中的各种工具类,这些类提供了通用的工具方法,用于处理文件操作、安全验证、令牌生成和链路追踪等。
FileUtils.java
用途
FileUtils 是文件操作工具类,提供了一系列处理文件相关操作的静态方法。
实现细节
- getExtension 方法:从文件名中提取扩展名,并转换为小写
- isAllowedType 方法:检查文件扩展名是否在允许的类型列表中
- ensureDirectory 方法:确保指定路径的目录存在,如果不存在则创建
- isValidSize 方法:检查文件大小是否在允许的最大值范围内
- 使用了 Spring 的 DataSize 类来处理文件大小限制
SecurityUtils.java
用途
SecurityUtils 是安全工具类,用于从请求上下文中获取当前用户信息。
实现细节
- getCurrentUserId 方法:
- 从当前请求上下文中获取 currentUserId 属性
- 支持 Long、Integer、String 三种类型的用户ID
- 如果获取失败则抛出自定义异常
- getCurrentUserRole 方法:
- 从当前请求上下文中获取 currentUserRole 属性(PermissionGroup 类型)
- 支持 PermissionGroup、Integer/Long code、或 String(枚举名或 code)三种类型
- 如果获取失败则抛出自定义异常
- 使用了 Spring 的 RequestContextHolder 来获取当前请求上下文
TokenUtil.java
用途
TokenUtil 是令牌工具类,用于生成和管理用户认证令牌。
实现细节
- 定义了令牌的有效期常量 TOKEN_TTL_HOURS(72小时)
- 定义了令牌刷新阈值 REFRESH_THRESHOLD_HOURS(24小时)
- generateToken 方法:使用 UUID 生成无连接符的令牌字符串
TraceUtils.java
用途
TraceUtils 是链路追踪工具类,用于获取或生成请求ID和追踪ID,便于日志追踪和问题排查。
实现细节
- getRequestId 方法:
- 优先从 MDC(Mapped Diagnostic Context)中获取 requestId
- 如果 MDC 中没有,则从请求头或请求属性中获取
- 如果都获取不到,则生成新的 UUID 作为 requestId
- getTraceId 方法:
- 优先从 MDC 中获取 traceId
- 如果 MDC 中没有,则从请求头或请求属性中获取
- 如果都获取不到,则生成新的 UUID 作为 traceId
- generateId 方法:生成 UUID 字符串作为ID
- 使用了 SLF4J 的 MDC 来管理诊断上下文