8.6 KiB
8.6 KiB
变更日志:数据库国际化功能
元数据
- 需求编号: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-system:Service 层和 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 字段
功能级别
- 字典管理:支持国际化
- 系统配置:支持国际化
- 菜单管理:支持国际化
- 语言切换:新增功能
兼容性
- 向后兼容:现有功能不受影响
- 数据兼容:现有数据不受影响,英文字段为空时回退到中文字段