164 lines
5.6 KiB
Markdown
164 lines
5.6 KiB
Markdown
# FMS 新数据库结构
|
||
|
||
## 设计约定
|
||
|
||
- 表名和字段名沿用旧系统的 `b_` 风格。
|
||
- 所有表的 `b_id` 使用 `bigint` 雪花 ID,返回前端时序列化为字符串。
|
||
- `b_module.b_code` 是可修改的模块编码,使用小写字母、数字和下划线,例如 `m_biz`。
|
||
- 布尔字段使用 `int`:`1` 表示是,`0` 表示否,并限制只能写入 `0` 或 `1`。
|
||
- `b_xh` 表示显示顺序,数值越小越靠前。
|
||
- 当前按机构使用独立数据库,表中不保存机构编号。
|
||
- 模块管理界面只区分目录和普通模块;普通模块配置路由时保存为 `page`,未配置路由时保存为 `data`。
|
||
|
||
## 模块管理
|
||
|
||
### 表关系
|
||
|
||
```text
|
||
b_module
|
||
|-- parent_id --> b_module
|
||
|-- 1:N --------> b_module_field
|
||
|-- 1:N --------> b_user_module
|
||
|-- 1:N --------> b_module_power ---- 1:N ----> b_user_power
|
||
|
||
b_module / b_module_field / b_module_power
|
||
|-- b_i18n --> b_i18n.b_key
|
||
```
|
||
|
||
### `dbo.b_module`
|
||
|
||
保存目录、页面和数据模块。
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| `b_id` | `bigint` | 不可变雪花 ID 主键 |
|
||
| `b_code` | `varchar(50)` | 可修改的唯一模块编码,例如 `m_biz` |
|
||
| `b_parent_id` | `bigint` | 上级模块 ID,根节点为空 |
|
||
| `b_name` | `nvarchar(100)` | 默认中文名称 |
|
||
| `b_i18n` | `varchar(150)` | 多语言键 |
|
||
| `b_type` | `varchar(20)` | `directory`、`page` 或 `data` |
|
||
| `b_route` | `varchar(200)` | 页面路由 |
|
||
| `b_viewtable` | `varchar(128)` | 查询表或视图 |
|
||
| `b_savetable` | `varchar(128)` | 保存目标表 |
|
||
| `b_keyfield` | `varchar(50)` | 主键字段 |
|
||
| `b_orderfield` | `varchar(500)` | 排序条件,例如 `b_xh ASC, b_id DESC` |
|
||
| `b_canmenu` | `int` | 是否显示在菜单,默认 `0` |
|
||
| `b_canuse` | `int` | 是否启用,默认 `1` |
|
||
| `b_xh` | `int` | 同级显示顺序 |
|
||
|
||
约束:
|
||
|
||
- `b_parent_id` 外键引用 `b_module.b_id`。
|
||
- `b_code` 唯一,格式为 `^[a-z][a-z0-9_]{1,49}$`。
|
||
- `b_route` 非空时唯一。
|
||
- 目录不能配置路由和数据表;数据模块不能显示在菜单中。
|
||
- 表名、视图名和字段名必须由后端校验,不能直接拼接 SQL。
|
||
|
||
### `dbo.b_module_field`
|
||
|
||
保存模块的标准字段配置。
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| `b_id` | `bigint` | 雪花 ID 主键 |
|
||
| `b_module_id` | `bigint` | 所属模块 ID |
|
||
| `b_field` | `varchar(50)` | 数据库字段名 |
|
||
| `b_name` | `nvarchar(100)` | 默认中文名称 |
|
||
| `b_i18n` | `varchar(150)` | 多语言键 |
|
||
| `b_type` | `varchar(20)` | `string`、`text`、`number`、`select`、`date`、`boolean` |
|
||
| `b_canlist` | `int` | 是否显示在列表 |
|
||
| `b_canform` | `int` | 是否显示在表单 |
|
||
| `b_must` | `int` | 是否必填 |
|
||
| `b_canquery` | `int` | 是否作为查询条件 |
|
||
| `b_readonly` | `int` | 是否只读 |
|
||
| `b_width` | `int` | 列表列宽 |
|
||
| `b_value` | `nvarchar(500)` | 新增时的默认值 |
|
||
| `b_xh` | `int` | 显示顺序 |
|
||
| `b_canuse` | `int` | 是否启用 |
|
||
|
||
约束:
|
||
|
||
- `b_module_id` 外键引用 `b_module.b_id`。
|
||
- `(b_module_id, b_field)` 唯一。
|
||
- `b_canform = 0` 时,`b_must` 必须为 `0`。
|
||
- `select` 的选项来源后续单独设计。
|
||
|
||
### `dbo.b_module_power`
|
||
|
||
定义模块内可以授权的按钮操作。
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| `b_id` | `bigint` | 雪花 ID 主键 |
|
||
| `b_module_id` | `bigint` | 所属模块 ID |
|
||
| `b_code` | `varchar(50)` | 操作编码,例如 `create`、`update`、`delete` |
|
||
| `b_name` | `nvarchar(100)` | 操作名称 |
|
||
| `b_i18n` | `varchar(150)` | 多语言键 |
|
||
| `b_xh` | `int` | 显示顺序 |
|
||
| `b_canuse` | `int` | 是否启用 |
|
||
|
||
约束:
|
||
|
||
- `b_module_id` 外键引用 `b_module.b_id`。
|
||
- `(b_module_id, b_code)` 唯一。
|
||
- 模块使用权限不在本表定义。
|
||
|
||
### `dbo.b_user_module`
|
||
|
||
控制用户能否进入和使用模块。
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| `b_id` | `bigint` | 雪花 ID 主键 |
|
||
| `b_user_id` | `bigint` | 用户雪花 ID |
|
||
| `b_module_id` | `bigint` | 模块 ID |
|
||
| `b_inputuser_id` | `bigint` | 授权人雪花 ID |
|
||
| `b_inputdatetime` | `datetime` | 授权时间 |
|
||
|
||
约束:
|
||
|
||
- `b_module_id` 外键引用 `b_module.b_id`。
|
||
- `(b_user_id, b_module_id)` 唯一。
|
||
- 目录不单独授权;拥有下级模块时自动显示上级目录。
|
||
|
||
### `dbo.b_user_power`
|
||
|
||
保存用户拥有的操作权限。
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| `b_id` | `bigint` | 雪花 ID 主键 |
|
||
| `b_user_id` | `bigint` | 用户雪花 ID |
|
||
| `b_power_id` | `bigint` | `b_module_power.b_id` |
|
||
| `b_inputuser_id` | `bigint` | 授权人雪花 ID |
|
||
| `b_inputdatetime` | `datetime` | 授权时间 |
|
||
|
||
约束:
|
||
|
||
- `b_power_id` 外键引用 `b_module_power.b_id`。
|
||
- `(b_user_id, b_power_id)` 唯一。
|
||
|
||
### `dbo.b_i18n`
|
||
|
||
统一保存菜单、模块、权限、字段、按钮、提示和校验信息等界面文案;业务对象只绑定稳定的 `b_key`。
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| `b_id` | `bigint` | 雪花 ID 主键 |
|
||
| `b_key` | `varchar(150)` | 多语言键 |
|
||
| `b_locale` | `varchar(20)` | 语言编码,例如 `zh-CN` |
|
||
| `b_value` | `nvarchar(500)` | 翻译文本 |
|
||
| `b_inputuser_id` | `bigint` | 创建人雪花 ID |
|
||
| `b_inputdatetime` | `datetime` | 创建时间 |
|
||
| `b_updateuser_id` | `bigint` | 修改人雪花 ID |
|
||
| `b_updatedatetime` | `datetime` | 修改时间 |
|
||
|
||
约束:`(b_key, b_locale)` 唯一。
|
||
|
||
### 权限规则
|
||
|
||
1. `b_user_module` 决定用户能否看到、进入和调用模块。
|
||
2. `b_user_power` 决定用户进入模块后可以执行哪些按钮操作。
|
||
3. 操作权限必须在拥有模块权限时才生效。
|
||
4. 当前阶段由前端负责页面进入控制和按钮禁用,后端权限校验后续单独实施。
|