util目录工具类说明.md 2.4 KB

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