192 lines
8.6 KiB
Markdown
192 lines
8.6 KiB
Markdown
# 变更日志:数据库国际化功能
|
||
|
||
## 元数据
|
||
- 需求编号: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**:
|
||
- 添加根据语言偏好获取字典标签的方法
|
||
- 支持动态查询对应语言的字典数据
|
||
|
||
### 新增文档
|
||
|
||
#### 需求文档
|
||
- [需求文档](../requirements/2026-01-21-002-03-数据库国际化需求.md)
|
||
|
||
#### 设计文档
|
||
- [设计文档](../design/2026-01-21-002-03-数据库国际化设计.md)
|
||
|
||
#### 架构决策记录
|
||
- [架构决策记录](../decisions/adr/2026-01-25-002-03-ADR-数据库国际化架构决策.md)
|
||
|
||
#### SQL 脚本
|
||
- [SQL 脚本](../sql/2026-01-25-002-03-数据库国际化.sql)
|
||
|
||
#### 提示词文档
|
||
- [数据库国际化功能实现提示词](../prompts/2026-01-25-002-03-prompt-数据库国际化功能.md)
|
||
- [数据库国际化功能补充实现提示词](../prompts/2026-01-25-002-03-prompt-数据库国际化功能-补充.md)
|
||
|
||
#### 参考代码文档
|
||
- [参考代码文档](../reference-code/2026-01-25-002-03-code-数据库国际化功能.md)
|
||
|
||
#### 实施方案文档
|
||
- [实施方案文档](../implementation/2026-01-25-002-03-implementation-数据库国际化功能.md)
|
||
|
||
#### 会话记录
|
||
- [会话记录](../sessions/2026-01-21-002-03-session.md)
|
||
|
||
### 新增代码文件
|
||
|
||
#### 实体类
|
||
- `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 字段
|
||
|
||
### 功能级别
|
||
- 字典管理:支持国际化
|
||
- 系统配置:支持国际化
|
||
- 菜单管理:支持国际化
|
||
- 语言切换:新增功能
|
||
|
||
### 兼容性
|
||
- 向后兼容:现有功能不受影响
|
||
- 数据兼容:现有数据不受影响,英文字段为空时回退到中文字段
|
||
|
||
## 相关文档
|
||
- [需求文档](../requirements/2026-01-21-002-03-数据库国际化需求.md)
|
||
- [设计文档](../design/2026-01-21-002-03-数据库国际化设计.md)
|
||
- [架构决策记录](../decisions/adr/2026-01-25-002-03-ADR-数据库国际化架构决策.md)
|
||
- [SQL 脚本](../sql/2026-01-25-002-03-数据库国际化.sql)
|
||
- [参考代码文档](../reference-code/2026-01-25-002-03-code-数据库国际化功能.md)
|
||
- [实施方案文档](../implementation/2026-01-25-002-03-implementation-数据库国际化功能.md)
|
||
- [会话记录](../sessions/2026-01-21-002-03-session.md)
|
||
- [父需求](../requirements/2026-01-21-002-项目国际化需求.md)
|
||
- [前端国际化需求](../requirements/2026-01-21-002-01-前端国际化需求.md)
|
||
- [后端国际化需求](../requirements/2026-01-21-002-02-后端国际化需求.md)
|
||
- [后端国际化设计](../design/2026-01-21-002-02-后端国际化设计.md)
|