数据字典
在本项目中,字典分为两种:数据库字典和枚举字典,接下来介绍下在本项目后端中如何使用数据字典。
数据库字典
数据库字典,即对应 sys_dict
(字典) 和 sys_dict_item
(字典项) 表中的字典数据,可通过菜单 系统管理/字典管理 进行数据维护。
在本项目中,数据库字典建议和业务隔离,仅做数据维护使用,例如:message_type
字典,系统消息根据不同业务的项目,维护不同的类型,避免业务逻辑中硬编码。
枚举字典
枚举字典,即实现了 top.continew.starter.core.enums.BaseEnum
枚举接口的枚举类。
在本项目中,枚举字典则和业务关联较强,例如:auth_type_enum
(AuthTypeEnum
枚举) 字典,根据不同的认证类型有不同的认证处理逻辑。
在系统启动时,会自动初始化枚举字典到内存中。
接口访问
如果需要获取指定字典的数据项,可以通过下方接口进行查询,枚举字典 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
查看已用功能。