Skip to content

数据字典

在本项目中,字典分为两种:数据库字典和枚举字典,接下来介绍下在本项目后端中如何使用数据字典。

数据库字典

数据库字典,即对应 sys_dict(字典) 和 sys_dict_item(字典项) 表中的字典数据,可通过菜单 系统管理/字典管理 进行数据维护。

在本项目中,数据库字典建议和业务隔离,仅做数据维护使用,例如:message_type 字典,系统消息根据不同业务的项目,维护不同的类型,避免业务逻辑中硬编码。

枚举字典

枚举字典,即实现了 top.continew.starter.core.enums.BaseEnum 枚举接口的枚举类。

在本项目中,枚举字典则和业务关联较强,例如:auth_type_enumAuthTypeEnum 枚举) 字典,根据不同的认证类型有不同的认证处理逻辑。

在系统启动时,会自动初始化枚举字典到内存中。

接口访问

如果需要获取指定字典的数据项,可以通过下方接口进行查询,枚举字典 code 为对应枚举的类名,也可以写作下划线连接风格。

GET /common/dict/:code

例如:/common/dict/auth_type_enum 的响应结果。

json
{
    "code": "0",
    "msg": "ok",
    "success": true,
    "timestamp": 1743430116643,
    "data": [
        {
            "label": "账号",
            "value": "ACCOUNT",
            "disabled": null,
            "extra": "success"
        },
        {
            "label": "邮箱",
            "value": "EMAIL",
            "disabled": null,
            "extra": "primary"
        },
        {
            "label": "手机号",
            "value": "PHONE",
            "disabled": null,
            "extra": "primary"
        },
        {
            "label": "第三方账号",
            "value": "SOCIAL",
            "disabled": null,
            "extra": "error"
        }
    ]
}

前端使用

在前端使用,可以使用 useDict 函数进行字典数据项的获取,在同一个页面只要不刷新浏览器,只会获取一次。

ts
import { useDict } from '@/hooks/app'

const { auth_type_enum } = useDict('auth_type_enum')

获取到字典数据项后,可以根据需要在页面中展示。

例如:在下拉选项中使用:

<a-select
  v-model="queryForm.authType"
  :options="auth_type_enum"
  placeholder="请选择终端类型"
  allow-clear
  style="width: 160px"
  @change="search"
/>

例如:在表格单元格中使用:

<GiCellTag :value="record.authType" :dict="auth_type_enum" />

更多用法可搜索 useDict 查看已用功能。