datai/docs/archive/changelog/2026-01-25-002-06-changelog.md

11 KiB
Raw Blame History

变更日志:日期格式化功能

元数据

  • 变更编号2026-01-25-002-06-changelog
  • 需求编号2026-01-21-002-06
  • 功能名称:日期格式化功能
  • 版本3.8.5
  • 发布日期2026-01-25
  • 变更类型:新功能
  • 状态:已完成
  • 阶段:阶段 8变更日志

变更概述

本次更新新增了日期格式化功能,支持根据用户地区显示日期,支持常用日期格式、日期时间格式化、短日期和长日期格式化。后端使用 Java 的 DateTimeFormatter 进行日期格式化,结合时区转换功能,支持多语言日期显示。

新增功能

1. 日期格式化功能

2. 用户日期格式偏好管理

3. 系统默认日期格式配置

  • 功能描述:支持在配置文件中设置系统默认日期格式
  • 影响范围datai-admin
  • 相关文件

4. 缓存机制

  • 功能描述:使用 Redis 缓存用户日期格式偏好,提高查询性能
  • 影响范围datai-common、datai-system
  • 相关文件

5. 单元测试

  • 功能描述:为日期格式化功能添加单元测试
  • 影响范围datai-common、datai-framework
  • 相关文件

优化改进

1. 切面顺序控制

  • 改进描述:为 TimeZoneConvertAspect 添加 @Order(1) 注解,为 DateFormatAspect 添加 @Order(2) 注解,确保时区转换先于日期格式化执行
  • 影响范围datai-framework
  • 相关文件

2. 线程安全优化

  • 改进描述:使用 ConcurrentHashMap 缓存 DateTimeFormatter 和 SimpleDateFormat 实例,确保线程安全
  • 影响范围datai-common
  • 相关文件

3. 缓存一致性优化

  • 改进描述:用户切换日期格式偏好时立即清除缓存,确保缓存一致性
  • 影响范围datai-system
  • 相关文件

数据库变更

1. 扩展 SysUser 表

  • 变更类型:新增字段
  • 变更内容
    ALTER TABLE sys_user ADD COLUMN date_format VARCHAR(50) DEFAULT NULL COMMENT '日期格式';
    ALTER TABLE sys_user ADD COLUMN date_format_pattern VARCHAR(100) DEFAULT NULL COMMENT '日期格式模式';
    
  • 影响范围sys_user 表
  • 相关文件

配置变更

1. 系统默认日期格式配置

  • 变更类型:新增配置项
  • 变更内容
    user:
      # 默认语言代码
      defaultLangCode: zh_CN
      # 默认日期格式
      defaultDateFormat: yyyy-MM-dd
      # 默认日期时间格式
      defaultDateTimeFormat: yyyy-MM-dd HH:mm:ss
    
  • 影响范围application.yml
  • 相关文件

API 变更

1. 新增用户日期格式偏好管理接口

  • 接口路径/system/user/dateFormat
  • 请求方法GET
  • 接口描述:获取当前用户日期格式偏好
  • 响应示例
    {
      "code": 200,
      "msg": "操作成功",
      "data": {
        "userId": 1,
        "dateFormat": "ISO_8601",
        "dateFormatPattern": null
      }
    }
    

2. 新增切换用户日期格式偏好接口

  • 接口路径/system/user/switchDateFormat
  • 请求方法POST
  • 接口描述:切换用户日期格式偏好
  • 请求示例
    {
      "dateFormat": "ISO_8601",
      "dateFormatPattern": null
    }
    
  • 响应示例
    {
      "code": 200,
      "msg": "操作成功"
    }
    

3. 新增获取系统默认日期格式接口

  • 接口路径/system/config/defaultDateFormat
  • 请求方法GET
  • 接口描述:获取系统默认日期格式
  • 响应示例
    {
      "code": 200,
      "msg": "操作成功",
      "data": {
        "dateFormat": "yyyy-MM-dd",
        "dateTimeFormat": "yyyy-MM-dd HH:mm:ss"
      }
    }
    

4. 新增获取常用日期格式列表接口

  • 接口路径/system/config/commonDateFormats
  • 请求方法GET
  • 接口描述:获取常用日期格式列表
  • 响应示例
    {
      "code": 200,
      "msg": "操作成功",
      "data": {
        "dateFormats": {
          "ISO_8601": "yyyy-MM-dd",
          "US": "MM/dd/yyyy",
          "EU": "dd/MM/yyyy",
          "CN": "yyyy年MM月dd日",
          "JP": "yyyy/MM/dd",
          "KR": "yyyy. MM. dd."
        },
        "dateTimeFormats": {
          "ISO_8601": "yyyy-MM-dd HH:mm:ss",
          "US": "MM/dd/yyyy HH:mm:ss",
          "EU": "dd/MM/yyyy HH:mm:ss",
          "CN": "yyyy年MM月dd日 HH:mm:ss",
          "JP": "yyyy/MM/dd HH:mm:ss",
          "KR": "yyyy. MM. dd. HH:mm:ss"
        }
      }
    }
    

依赖变更

本次更新无新增依赖,使用 Java 内置的 DateTimeFormatter 进行日期格式化。

兼容性说明

1. 向后兼容性

  • 本次更新为新增功能,不影响现有功能
  • 现有 API 接口保持不变
  • 数据库变更为新增字段,不影响现有数据

2. 升级说明

  • 执行数据库变更脚本:2026-01-25-002-06-日期格式化.sql
  • 更新配置文件:在 application.yml 中添加系统默认日期格式配置
  • 重启应用:重启应用以加载新的配置和代码

3. 回滚说明

  • 如需回滚,执行以下步骤:
    1. 删除新增的数据库字段:ALTER TABLE sys_user DROP COLUMN date_format; ALTER TABLE sys_user DROP COLUMN date_format_pattern;
    2. 删除新增的代码文件
    3. 恢复修改的文件
    4. 删除配置文件中的新增配置项
    5. 重启应用

已知问题

本次更新无已知问题。

后续计划

  1. 进行集成测试测试用户日期格式偏好接口、系统默认日期格式接口、AOP 切面功能、缓存功能、多语言日期显示功能、时区转换 + 日期格式化集成功能
  2. 进行手动测试:测试不同日期格式的格式化、多语言日期显示、时区转换 + 日期格式化、用户日期格式偏好切换、缓存功能、嵌套对象格式化
  3. 创建复盘文档:2026-01-25-002-06-retro.md
  4. 创建 API 文档:2026-01-25-002-06-api.md

相关文档

变更统计

  • 新增文件6 个
  • 修改文件8 个
  • 新增 API 接口4 个
  • 数据库变更2 个字段
  • 配置变更3 个配置项
  • 单元测试2 个测试类30 个测试用例