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

8.6 KiB
Raw Blame History

变更日志:数据库国际化功能

元数据

  • 需求编号2026-01-21-002-03
  • 创建时间2026-01-25
  • 创建人SSOT 架构师
  • 版本号v1.0.0
  • 父需求2026-01-21-002-项目国际化需求

变更概述

实现数据库数据的国际化功能,包括字典数据、系统配置、菜单数据的国际化。通过在现有表中添加英文字段和预留 JSON 字段,支持中英文双语和未来多语言扩展。实现按语言分别缓存、数据回退、语言切换等核心功能。

变更内容

新增功能

1. 字典数据国际化

  • 实现字典数据SysDictData、SysDictType的国际化支持
  • 在 sys_dict_data 表中添加 dict_label_en字典标签英文和 dict_label_i18n字典标签多语言JSON字段
  • 在 sys_dict_type 表中添加 dict_name_en字典名称英文和 dict_name_i18n字典名称多语言JSON字段
  • 支持根据用户语言偏好动态查询对应语言的字典数据
  • 实现数据回退机制:国际化数据缺失时显示默认语言(中文)的数据
  • 实现缓存刷新机制:修改字典数据后刷新相关缓存

2. 系统配置国际化

  • 实现系统配置SysConfig的国际化支持
  • 在 sys_config 表中添加 config_name_en配置名称英文和 config_name_i18n配置名称多语言JSON字段
  • 支持根据用户语言偏好动态查询对应语言的配置数据
  • 实现数据回退机制:国际化数据缺失时显示默认语言(中文)的数据
  • 实现缓存刷新机制:修改配置数据后刷新相关缓存

3. 菜单数据国际化

  • 实现菜单数据SysMenu的国际化支持
  • 在 sys_menu 表中添加 menu_name_en菜单名称英文和 menu_name_i18n菜单名称多语言JSON字段
  • 支持根据用户语言偏好动态查询对应语言的菜单数据
  • 实现数据回退机制:国际化数据缺失时显示默认语言(中文)的数据
  • 实现缓存刷新机制:修改菜单数据后刷新相关缓存

4. 语言切换功能

  • 创建 I18nController实现语言切换接口
  • 支持用户在运行时动态切换语言
  • 切换语言后清除当前用户的所有缓存,强制重新加载数据
  • 支持的语言代码格式:{language}-{country}(如 zh-CN、en-US

5. 缓存管理

  • 实现按语言分别缓存的机制
  • 缓存键格式:{数据类型}:{标识}:{语言代码}
  • 修改数据后只清除受影响语言的缓存,减少缓存刷新范围
  • 切换语言时清除当前用户的所有缓存

修改功能

1. 实体类扩展

  • SysDictData.java
    • 添加 dictLabelEn 字段(字典标签英文)
    • 添加 dictLabelI18n 字段字典标签多语言JSON
    • 添加 getLocalizedDictLabel() 方法,根据用户语言偏好返回对应语言的字典标签
  • SysDictType.java
    • 添加 dictNameEn 字段(字典名称英文)
    • 添加 dictNameI18n 字段字典名称多语言JSON
    • 添加 getLocalizedDictName() 方法,根据用户语言偏好返回对应语言的字典名称
  • SysConfig.java
    • 添加 configNameEn 字段(配置名称英文)
    • 添加 configNameI18n 字段配置名称多语言JSON
    • 添加 getLocalizedConfigName() 方法,根据用户语言偏好返回对应语言的配置名称
  • SysMenu.java
    • 添加 menuNameEn 字段(菜单名称英文)
    • 添加 menuNameI18n 字段菜单名称多语言JSON
    • 添加 getLocalizedMenuName() 方法,根据用户语言偏好返回对应语言的菜单名称

2. Mapper XML 扩展

  • SysDictDataMapper.xml
    • 添加 dict_label_en 和 dict_label_i18n 字段的查询
    • 添加 dict_label_en 和 dict_label_i18n 字段的更新
  • SysDictTypeMapper.xml
    • 添加 dict_name_en 和 dict_name_i18n 字段的查询
    • 添加 dict_name_en 和 dict_name_i18n 字段的更新
  • SysConfigMapper.xml
    • 添加 config_name_en 和 config_name_i18n 字段的查询
    • 添加 config_name_en 和 config_name_i18n 字段的更新
  • SysMenuMapper.xml
    • 添加 menu_name_en 和 menu_name_i18n 字段的查询
    • 添加 menu_name_en 和 menu_name_i18n 字段的更新

3. Service 层扩展

  • SysDictDataServiceImpl.java
    • 添加数据验证逻辑
    • 添加缓存刷新逻辑
  • SysDictTypeServiceImpl.java
    • 添加数据验证逻辑
    • 添加缓存刷新逻辑
  • SysConfigServiceImpl.java
    • 添加数据验证逻辑
    • 添加缓存刷新逻辑
  • SysMenuServiceImpl.java
    • 添加数据验证逻辑
    • 添加缓存刷新逻辑

4. 工具类扩展

  • DictUtils.java
    • 添加根据语言偏好获取字典标签的方法
    • 支持动态查询对应语言的字典数据

新增文档

需求文档

设计文档

架构决策记录

SQL 脚本

提示词文档

参考代码文档

实施方案文档

会话记录

新增代码文件

实体类

  • datai-common/src/main/java/com/datai/common/core/domain/entity/SysDictData.java(修改)
  • datai-common/src/main/java/com/datai/common/core/domain/entity/SysDictType.java(修改)
  • datai-system/src/main/java/com/datai/system/domain/SysConfig.java(修改)
  • datai-common/src/main/java/com/datai/common/core/domain/entity/SysMenu.java(修改)

Mapper XML

  • datai-system/src/main/resources/mapper/system/SysDictDataMapper.xml(修改)
  • datai-system/src/main/resources/mapper/system/SysDictTypeMapper.xml(修改)
  • datai-system/src/main/resources/mapper/system/SysConfigMapper.xml(修改)
  • datai-system/src/main/resources/mapper/system/SysMenuMapper.xml(修改)

Service 层

  • datai-system/src/main/java/com/datai/system/service/impl/SysDictDataServiceImpl.java(修改)
  • datai-system/src/main/java/com/datai/system/service/impl/SysDictTypeServiceImpl.java(修改)
  • datai-system/src/main/java/com/datai/system/service/impl/SysConfigServiceImpl.java(修改)
  • datai-system/src/main/java/com/datai/system/service/impl/SysMenuServiceImpl.java(修改)

Controller 层

  • datai-admin/src/main/java/com/datai/web/controller/system/I18nController.java(新增)

工具类

  • datai-common/src/main/java/com/datai/common/utils/DictUtils.java(修改)

影响范围

模块级别

  • datai-common:实体类和工具类修改
  • datai-systemService 层和 Mapper XML 修改
  • datai-admin:新增 I18nController

数据库级别

  • sys_dict_data:添加 dict_label_en 和 dict_label_i18n 字段
  • sys_dict_type:添加 dict_name_en 和 dict_name_i18n 字段
  • sys_config:添加 config_name_en 和 config_name_i18n 字段
  • sys_menu:添加 menu_name_en 和 menu_name_i18n 字段

功能级别

  • 字典管理:支持国际化
  • 系统配置:支持国际化
  • 菜单管理:支持国际化
  • 语言切换:新增功能

兼容性

  • 向后兼容:现有功能不受影响
  • 数据兼容:现有数据不受影响,英文字段为空时回退到中文字段

相关文档