Skip to content

字典管理

字典管理提供树形字典的完整 CRUD 操作,支持父子层级结构和分类管理。字典用于管理系统中的枚举数据(如性别、状态、分类等),提供统一的字典值-标签翻译能力。

功能说明

  • 字典分页查询(支持父级筛选、分类筛选、关键词搜索)
  • 字典列表查询(不分页,支持父级和分类筛选)
  • 字典树查询(返回树形结构)
  • 字典新增 / 修改 / 删除(带子节点保护)
  • 字典详情查看
  • 字典标签翻译(根据编码+值获取标签)
  • 字典子节点查询(根据编码获取子列表)
  • Redis 缓存同步(每次修改后自动更新缓存)
  • 数据导出(Excel)
  • 导入模板下载
  • 数据导入(Excel)

API 接口

所有接口均需要 sys:dict:* 权限。

方法路径权限标识说明
GET/api/v1/sys/dict/pagesys:dict:page获取字典分页
GET/api/v1/sys/dict/listsys:dict:list获取字典列表(不分页)
GET/api/v1/sys/dict/treesys:dict:tree获取字典树
POST/api/v1/sys/dict/createsys:dict:create添加字典
POST/api/v1/sys/dict/modifysys:dict:modify编辑字典
POST/api/v1/sys/dict/removesys:dict:remove删除字典(有子节点则禁止删除)
GET/api/v1/sys/dict/detailsys:dict:detail获取字典详情
GET/api/v1/sys/dict/get-labelsys:dict:get-label根据编码和值获取标签
GET/api/v1/sys/dict/get-childrensys:dict:get-children根据编码获取子字典列表
GET/api/v1/sys/dict/exportsys:dict:export导出字典数据
GET/api/v1/sys/dict/templatesys:dict:template下载导入模板
POST/api/v1/sys/dict/importsys:dict:import导入字典数据

数据模型

sys_dict 表主要字段:

字段类型说明
idVARCHAR(32)主键(雪花ID)
codeVARCHAR(32)字典编码(唯一索引)
labelVARCHAR(255)字典标签(显示名,如"男")
valueVARCHAR(255)字典值(如"M")
colorVARCHAR(32)颜色(前端展示用)
categoryVARCHAR(64)字典分类(如 BIZ、SYS)
parent_idVARCHAR(32)父字典 ID(根节点为 "0" 或 NULL)
statusVARCHAR(16)状态
sort_codeINT排序

字典结构

字典采用父子层级结构:

根字典 (parent_id = "0" 或 NULL)
├── code = "gender", label = "性别", value = "gender"
│   ├── 子字典: label = "男", value = "M", sort_code = 1
│   └── 子字典: label = "女", value = "F", sort_code = 2
├── code = "status", label = "状态", value = "status"
│   ├── 子字典: label = "启用", value = "ACTIVE"
│   └── 子字典: label = "禁用", value = "DISABLED"

字典翻译

通过 get-label 接口,将字典值翻译为可读标签:

GET /api/v1/sys/dict/get-label?type_code=gender&value=M
→ {"type_code": "gender", "value": "M", "label": "男"}

常用于表格列中显示人类可读的文本。

Redis 缓存

每次字典数据变更(create/modify/remove/import)后,自动将完整字典树同步到 Redis:

  • 缓存 Key: hei:dict:tree
  • 缓存格式: { "gender": [{ "label": "男", "value": "M", "color": null }, ...], ... }
  • 读取方式: DictService.get_cached_dicts() 静态方法

新增/编辑校验

  • 同一父字典下,labelvalue 不能重复
  • 删除时检查是否有子节点,有子节点则拒绝删除

Released under the MIT License.