# 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 来管理诊断上下文