758 lines
21 KiB
Markdown
758 lines
21 KiB
Markdown
|
|
# 代码生成配置规范
|
|||
|
|
|
|||
|
|
本文档详细说明 HoTime 框架代码生成器的配置体系,包括 `config.json` 中的 `codeConfig`、菜单权限配置和字段规则配置。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 配置体系概览
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
config.json
|
|||
|
|
└── codeConfig[] # 代码生成配置数组(支持多套)
|
|||
|
|
├── config # 菜单权限配置文件路径(如 admin.json)
|
|||
|
|
├── configDB # 数据库生成的完整配置
|
|||
|
|
├── rule # 字段规则配置文件路径(如 rule.json)
|
|||
|
|
├── table # 管理员表名
|
|||
|
|
├── name # 生成代码的包名
|
|||
|
|
└── mode # 生成模式
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 一、config.json 中的 codeConfig
|
|||
|
|
|
|||
|
|
### 配置结构
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"codeConfig": [
|
|||
|
|
{
|
|||
|
|
"config": "config/admin.json",
|
|||
|
|
"configDB": "config/adminDB.json",
|
|||
|
|
"mode": 0,
|
|||
|
|
"name": "",
|
|||
|
|
"rule": "config/rule.json",
|
|||
|
|
"table": "admin"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 配置项说明
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| config | string | 菜单权限配置文件路径,用于定义菜单结构、权限控制 |
|
|||
|
|
| configDB | string | 代码生成器输出的完整配置文件(自动生成) |
|
|||
|
|
| rule | string | 字段规则配置文件路径,定义字段在增删改查中的行为 |
|
|||
|
|
| table | string | 管理员/用户表名,用于身份验证和权限控制 |
|
|||
|
|
| name | string | 生成的代码包名,为空则不生成代码文件 |
|
|||
|
|
| mode | int | 生成模式:0-仅配置不生成代码,非0-生成代码文件 |
|
|||
|
|
|
|||
|
|
### 多配置支持
|
|||
|
|
|
|||
|
|
可以配置多个独立的代码生成实例,适用于多端场景:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"codeConfig": [
|
|||
|
|
{
|
|||
|
|
"config": "config/admin.json",
|
|||
|
|
"table": "admin",
|
|||
|
|
"rule": "config/rule.json"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"config": "config/user.json",
|
|||
|
|
"table": "user",
|
|||
|
|
"rule": "config/rule.json"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 二、菜单权限配置(如 admin.json)
|
|||
|
|
|
|||
|
|
### 配置文件更新机制
|
|||
|
|
|
|||
|
|
- **首次运行**:代码生成器会根据数据库表结构自动创建配置文件(如 admin.json)
|
|||
|
|
- **后续运行**:配置文件**不会自动更新**,避免覆盖手动修改的内容
|
|||
|
|
- **重新生成**:如需重新生成,删除配置文件后重新运行即可
|
|||
|
|
- **参考更新**:可参考 `configDB` 指定的文件(如 adminDB.json)查看最新的数据库结构变化,手动调整配置
|
|||
|
|
|
|||
|
|
### 完整配置结构
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": "唯一标识(自动生成)",
|
|||
|
|
"name": "admin",
|
|||
|
|
"label": "管理平台名称",
|
|||
|
|
"labelConfig": { ... },
|
|||
|
|
"menus": [ ... ],
|
|||
|
|
"flow": { ... }
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.1 label 配置
|
|||
|
|
|
|||
|
|
定义系统显示名称:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"label": "HoTime管理平台"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.2 labelConfig 配置
|
|||
|
|
|
|||
|
|
定义权限的显示文字:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"labelConfig": {
|
|||
|
|
"show": "开启",
|
|||
|
|
"add": "添加",
|
|||
|
|
"delete": "删除",
|
|||
|
|
"edit": "编辑",
|
|||
|
|
"info": "查看详情",
|
|||
|
|
"download": "下载清单"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 操作 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| show | 显示/查看列表权限 |
|
|||
|
|
| add | 添加数据权限 |
|
|||
|
|
| delete | 删除数据权限 |
|
|||
|
|
| edit | 编辑数据权限 |
|
|||
|
|
| info | 查看详情权限 |
|
|||
|
|
| download | 下载/导出权限 |
|
|||
|
|
|
|||
|
|
### 2.3 menus 配置
|
|||
|
|
|
|||
|
|
定义菜单结构,支持多级嵌套:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"menus": [
|
|||
|
|
{
|
|||
|
|
"label": "系统管理",
|
|||
|
|
"name": "sys",
|
|||
|
|
"icon": "Setting",
|
|||
|
|
"auth": ["show"],
|
|||
|
|
"menus": [
|
|||
|
|
{
|
|||
|
|
"label": "用户管理",
|
|||
|
|
"table": "user",
|
|||
|
|
"auth": ["show", "add", "delete", "edit", "info", "download"]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"label": "角色管理",
|
|||
|
|
"table": "role",
|
|||
|
|
"auth": ["show", "add", "delete", "edit", "info"]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"label": "文章管理",
|
|||
|
|
"table": "article",
|
|||
|
|
"icon": "Document",
|
|||
|
|
"auth": ["show", "add", "edit", "info"]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### menus 字段说明
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| label | string | 菜单显示名称 |
|
|||
|
|
| name | string | 菜单标识(用于分组,不绑定表时使用) |
|
|||
|
|
| table | string | 绑定的数据表名(用于自动生成 CRUD) |
|
|||
|
|
| icon | string | 菜单图标名称 |
|
|||
|
|
| auth | array | 权限数组,定义该菜单/表拥有的操作权限 |
|
|||
|
|
| menus | array | 子菜单数组(支持嵌套) |
|
|||
|
|
|
|||
|
|
#### name vs table
|
|||
|
|
|
|||
|
|
- **table**: 绑定数据表,拥有该表的增删查改等权限,自动生成 CRUD 接口
|
|||
|
|
- **name**: 自定义功能标识,不绑定表,前端根据 name 和 auth 来显示和操作自定义内容(如首页 home、仪表盘 dashboard 等)
|
|||
|
|
- 如果配置了 `menus` 子菜单,则作为分组功能,前端展开显示下级菜单
|
|||
|
|
- 如果没有 `menus`,则作为独立的自定义功能入口
|
|||
|
|
|
|||
|
|
**注意**:目前只支持**两级菜单**,不允许更多层级嵌套。
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
// 使用 table:绑定数据表,有增删查改权限
|
|||
|
|
{ "label": "用户管理", "table": "user", "auth": ["show", "add", "edit", "delete"] }
|
|||
|
|
|
|||
|
|
// 使用 name:自定义功能(无子菜单)
|
|||
|
|
{ "label": "首页", "name": "home", "icon": "House", "auth": ["show"] }
|
|||
|
|
|
|||
|
|
// 使用 name:分组功能(有子菜单)
|
|||
|
|
{ "label": "系统管理", "name": "sys", "icon": "Setting", "auth": ["show"], "menus": [...] }
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 自动分组规则
|
|||
|
|
|
|||
|
|
代码生成器在自动生成配置时,会根据表名的 `_` 分词进行自动分组:
|
|||
|
|
|
|||
|
|
- 表名 `sys_logs`、`sys_menus`、`sys_config` → 自动归入 `sys` 分组
|
|||
|
|
- 表名 `article`、`article_tag` → 自动归入 `article` 分组
|
|||
|
|
|
|||
|
|
分组的显示名称(label)使用该分组下**第一张表的名字**,如果表有备注则使用备注名。
|
|||
|
|
|
|||
|
|
### 2.4 auth 配置
|
|||
|
|
|
|||
|
|
权限数组定义菜单/表拥有的操作权限:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"auth": ["show", "add", "delete", "edit", "info", "download"]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 内置权限
|
|||
|
|
|
|||
|
|
| 权限 | 对应接口 | 说明 |
|
|||
|
|
|------|----------|------|
|
|||
|
|
| show | /search | 列表查询 |
|
|||
|
|
| add | /add | 新增数据 |
|
|||
|
|
| delete | /remove | 删除数据 |
|
|||
|
|
| edit | /update | 编辑数据 |
|
|||
|
|
| info | /info | 查看详情 |
|
|||
|
|
| download | /search?download=1 | 导出数据 |
|
|||
|
|
|
|||
|
|
#### 自定义权限扩展
|
|||
|
|
|
|||
|
|
auth 数组**可以自由增删**,新增的权限项会:
|
|||
|
|
- 在前端菜单/功能中显示
|
|||
|
|
- 在角色管理(role)的权限设置中显示,供管理员分配
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
// 示例:为文章表添加自定义权限
|
|||
|
|
{
|
|||
|
|
"label": "文章管理",
|
|||
|
|
"table": "article",
|
|||
|
|
"auth": ["show", "add", "edit", "delete", "info", "publish", "audit", "top"]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
上例中 `publish`(发布)、`audit`(审核)、`top`(置顶)为自定义权限,前端可根据这些权限控制对应按钮的显示和操作。
|
|||
|
|
|
|||
|
|
### 2.5 icon 配置
|
|||
|
|
|
|||
|
|
菜单图标,使用 Element Plus 图标名称:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{ "icon": "Setting" } // 设置图标
|
|||
|
|
{ "icon": "User" } // 用户图标
|
|||
|
|
{ "icon": "Document" } // 文档图标
|
|||
|
|
{ "icon": "Folder" } // 文件夹图标
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.6 flow 配置
|
|||
|
|
|
|||
|
|
flow 是一个简易的数据权限控制机制,用于限制用户只能操作自己权限范围内的数据。
|
|||
|
|
|
|||
|
|
#### 基本结构
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"flow": {
|
|||
|
|
"role": {
|
|||
|
|
"table": "role",
|
|||
|
|
"stop": true,
|
|||
|
|
"sql": {
|
|||
|
|
"id": "role_id"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"article": {
|
|||
|
|
"table": "article",
|
|||
|
|
"stop": false,
|
|||
|
|
"sql": {
|
|||
|
|
"admin_id": "id"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"org": {
|
|||
|
|
"table": "org",
|
|||
|
|
"stop": false,
|
|||
|
|
"sql": {
|
|||
|
|
"parent_ids[~]": ",org_id,"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### flow 字段说明
|
|||
|
|
|
|||
|
|
| 字段 | 类型 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| table | string | 表名 |
|
|||
|
|
| stop | bool | 是否禁止修改自身关联的数据 |
|
|||
|
|
| sql | object | 数据过滤条件,自动填充查询/操作条件 |
|
|||
|
|
|
|||
|
|
#### stop 配置详解
|
|||
|
|
|
|||
|
|
`stop` 用于防止用户修改自己当前关联的敏感数据。
|
|||
|
|
|
|||
|
|
**场景示例**:当前登录用户是 admin 表的用户,其 `role_id = 1`
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
"role": {
|
|||
|
|
"table": "role",
|
|||
|
|
"stop": true,
|
|||
|
|
"sql": { "id": "role_id" }
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**效果**:
|
|||
|
|
- 用户**不能修改** role 表中 `id = 1` 的这行数据(自己的角色)
|
|||
|
|
- 用户**可以修改**其他 role 记录(如果有权限的话)
|
|||
|
|
|
|||
|
|
**典型用途**:
|
|||
|
|
- 防止用户提升自己的角色权限
|
|||
|
|
- 防止用户修改自己所属的组织
|
|||
|
|
|
|||
|
|
#### sql 配置详解
|
|||
|
|
|
|||
|
|
`sql` 用于自动填充数据过滤条件,实现数据隔离。
|
|||
|
|
|
|||
|
|
**格式**:`{ "目标表字段": "当前用户字段" }`
|
|||
|
|
|
|||
|
|
**示例 1:精确匹配**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
"article": {
|
|||
|
|
"sql": { "admin_id": "id" }
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**效果**:查询/操作 article 表时,自动添加条件 `WHERE admin_id = 当前用户.id`
|
|||
|
|
|
|||
|
|
即:用户只能看到/操作自己创建的文章。
|
|||
|
|
|
|||
|
|
**示例 2:角色关联**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
"role": {
|
|||
|
|
"sql": { "id": "role_id" }
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**效果**:查询/操作 role 表时,自动添加条件 `WHERE id = 当前用户.role_id`
|
|||
|
|
|
|||
|
|
即:用户只能看到自己的角色。
|
|||
|
|
|
|||
|
|
**示例 3:树形结构(模糊匹配)**
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
"org": {
|
|||
|
|
"sql": { "parent_ids[~]": ",org_id," }
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**效果**:查询/操作 org 表时,自动添加条件 `WHERE parent_ids LIKE '%,用户.org_id,%'`
|
|||
|
|
|
|||
|
|
即:用户只能看到自己组织及其下级组织。
|
|||
|
|
|
|||
|
|
#### sql 条件语法
|
|||
|
|
|
|||
|
|
| 格式 | 含义 | SQL 等价 |
|
|||
|
|
|------|------|----------|
|
|||
|
|
| `"field": "user_field"` | 精确匹配 | `field = 用户.user_field` |
|
|||
|
|
| `"field[~]": ",value,"` | 模糊匹配 | `field LIKE '%,value,%'` |
|
|||
|
|
|
|||
|
|
#### 完整示例
|
|||
|
|
|
|||
|
|
假设当前登录用户数据:
|
|||
|
|
```json
|
|||
|
|
{ "id": 5, "role_id": 2, "org_id": 10 }
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
flow 配置:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"flow": {
|
|||
|
|
"role": {
|
|||
|
|
"table": "role",
|
|||
|
|
"stop": true,
|
|||
|
|
"sql": { "id": "role_id" }
|
|||
|
|
},
|
|||
|
|
"article": {
|
|||
|
|
"table": "article",
|
|||
|
|
"stop": false,
|
|||
|
|
"sql": { "admin_id": "id" }
|
|||
|
|
},
|
|||
|
|
"org": {
|
|||
|
|
"table": "org",
|
|||
|
|
"stop": false,
|
|||
|
|
"sql": { "parent_ids[~]": ",org_id," }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**效果**:
|
|||
|
|
|
|||
|
|
| 表 | 查询条件 | stop 效果 |
|
|||
|
|
|-----|----------|-----------|
|
|||
|
|
| role | `WHERE id = 2` | 不能修改 id=2 的角色 |
|
|||
|
|
| article | `WHERE admin_id = 5` | 可以修改自己的文章 |
|
|||
|
|
| org | `WHERE parent_ids LIKE '%,10,%'` | 可以修改下级组织 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 三、字段规则配置(rule.json)
|
|||
|
|
|
|||
|
|
定义字段在增删改查操作中的默认行为。
|
|||
|
|
|
|||
|
|
### 配置结构
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
"name": "id",
|
|||
|
|
"add": false,
|
|||
|
|
"edit": false,
|
|||
|
|
"info": true,
|
|||
|
|
"list": true,
|
|||
|
|
"must": false,
|
|||
|
|
"strict": true,
|
|||
|
|
"type": ""
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 字段属性说明
|
|||
|
|
|
|||
|
|
| 属性 | 类型 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| name | string | 字段名或字段名包含的关键词 |
|
|||
|
|
| add | bool | 新增时是否显示该字段 |
|
|||
|
|
| edit | bool | 编辑时是否显示该字段 |
|
|||
|
|
| info | bool | 详情页是否显示该字段 |
|
|||
|
|
| list | bool | 列表页是否显示该字段 |
|
|||
|
|
| must | bool | 是否必填(详见下方说明) |
|
|||
|
|
| strict | bool | 是否严格匹配字段名(true=完全匹配,false=包含匹配) |
|
|||
|
|
| type | string | 字段类型(影响前端控件和数据处理) |
|
|||
|
|
|
|||
|
|
### must 必填字段规则
|
|||
|
|
|
|||
|
|
`must` 字段用于控制前端表单的必填验证:
|
|||
|
|
|
|||
|
|
**自动识别规则**:
|
|||
|
|
1. **MySQL**:如果字段设置为 `NOT NULL`(即 `IS_NULLABLE='NO'`),自动设为 `must=true`
|
|||
|
|
2. **SQLite**:如果字段是主键(`pk=1`),自动设为 `must=true`
|
|||
|
|
|
|||
|
|
**规则配置覆盖**:
|
|||
|
|
- `rule.json` 中的 `must` 设置会覆盖数据库的自动识别结果
|
|||
|
|
- 可以将数据库中 NOT NULL 的字段在规则中设为 `must=false`,反之亦然
|
|||
|
|
|
|||
|
|
**前端效果**:
|
|||
|
|
- `must=true` 的字段在新增/编辑表单中显示必填标记(*)
|
|||
|
|
- 提交时前端会验证必填字段
|
|||
|
|
|
|||
|
|
**后端验证**:
|
|||
|
|
- 新增操作时,如果 `must=true` 的字段为空,返回"请求参数不足"
|
|||
|
|
|
|||
|
|
### type 类型说明
|
|||
|
|
|
|||
|
|
| 类型 | 说明 | 前端控件 |
|
|||
|
|
|------|------|----------|
|
|||
|
|
| (空) | 普通文本 | 文本输入框 |
|
|||
|
|
| text | 文本 | 文本输入框 |
|
|||
|
|
| number | 数字 | 数字输入框 |
|
|||
|
|
| select | 选择 | 下拉选择框(根据注释自动生成选项) |
|
|||
|
|
| time | 时间(datetime) | 日期时间选择器 |
|
|||
|
|
| unixTime | 时间戳 | 日期时间选择器(存储为 Unix 时间戳) |
|
|||
|
|
| password | 密码 | 密码输入框(自动 MD5 加密) |
|
|||
|
|
| textArea | 多行文本 | 文本域 |
|
|||
|
|
| image | 图片 | 图片上传 |
|
|||
|
|
| file | 文件 | 文件上传 |
|
|||
|
|
| money | 金额 | 金额输入框 |
|
|||
|
|
| auth | 权限 | 权限树选择器 |
|
|||
|
|
| form | 表单 | 动态表单 |
|
|||
|
|
| index | 索引 | 隐藏字段(用于 parent_ids 等) |
|
|||
|
|
| table | 动态表 | 表名选择器 |
|
|||
|
|
| table_id | 动态表ID | 根据 table 字段动态关联 |
|
|||
|
|
|
|||
|
|
### 内置字段规则
|
|||
|
|
|
|||
|
|
以下是框架默认的字段规则,可在 `rule.json` 中覆盖:
|
|||
|
|
|
|||
|
|
#### 主键和索引
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{"name": "id", "add": false, "list": true, "edit": false, "info": true, "strict": true}
|
|||
|
|
{"name": "sn", "add": false, "list": true, "edit": false, "info": true}
|
|||
|
|
{"name": "parent_ids", "add": false, "list": false, "edit": false, "info": false, "type": "index", "strict": true}
|
|||
|
|
{"name": "index", "add": false, "list": false, "edit": false, "info": false, "type": "index", "strict": true}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 层级关系
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{"name": "parent_id", "add": true, "list": true, "edit": true, "info": true}
|
|||
|
|
{"name": "level", "add": false, "list": false, "edit": false, "info": true}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 时间字段
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{"name": "create_time", "add": false, "list": false, "edit": false, "info": true, "type": "time", "strict": true}
|
|||
|
|
{"name": "modify_time", "add": false, "list": true, "edit": false, "info": true, "type": "time", "strict": true}
|
|||
|
|
{"name": "time", "add": true, "list": true, "edit": true, "info": true, "type": "time"}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 状态字段
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{"name": "status", "add": true, "list": true, "edit": true, "info": true, "type": "select"}
|
|||
|
|
{"name": "state", "add": true, "list": true, "edit": true, "info": true, "type": "select"}
|
|||
|
|
{"name": "sex", "add": true, "list": true, "edit": true, "info": true, "type": "select"}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 敏感字段
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{"name": "password", "add": true, "list": false, "edit": true, "info": false, "type": "password"}
|
|||
|
|
{"name": "pwd", "add": true, "list": false, "edit": true, "info": false, "type": "password"}
|
|||
|
|
{"name": "delete", "add": false, "list": false, "edit": false, "info": false}
|
|||
|
|
{"name": "version", "add": false, "list": false, "edit": false, "info": false}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 媒体字段
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{"name": "image", "add": true, "list": false, "edit": true, "info": true, "type": "image"}
|
|||
|
|
{"name": "img", "add": true, "list": false, "edit": true, "info": true, "type": "image"}
|
|||
|
|
{"name": "avatar", "add": true, "list": false, "edit": true, "info": true, "type": "image"}
|
|||
|
|
{"name": "icon", "add": true, "list": false, "edit": true, "info": true, "type": "image"}
|
|||
|
|
{"name": "file", "add": true, "list": false, "edit": true, "info": true, "type": "file"}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 文本字段
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{"name": "info", "add": true, "list": false, "edit": true, "info": true, "type": "textArea"}
|
|||
|
|
{"name": "content", "add": true, "list": false, "edit": true, "info": true, "type": "textArea"}
|
|||
|
|
{"name": "description", "add": true, "list": false, "edit": true, "info": true}
|
|||
|
|
{"name": "note", "add": true, "list": false, "edit": true, "info": true}
|
|||
|
|
{"name": "address", "add": true, "list": true, "edit": true, "info": true}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 特殊字段
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{"name": "amount", "add": true, "list": true, "edit": true, "info": true, "type": "money", "strict": true}
|
|||
|
|
{"name": "auth", "add": true, "list": false, "edit": true, "info": true, "type": "auth", "strict": true}
|
|||
|
|
{"name": "rule", "add": true, "list": true, "edit": true, "info": true, "type": "form"}
|
|||
|
|
{"name": "table", "add": false, "list": true, "edit": false, "info": true, "type": "table"}
|
|||
|
|
{"name": "table_id", "add": false, "list": true, "edit": false, "info": true, "type": "table_id"}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 自定义字段规则
|
|||
|
|
|
|||
|
|
在 `rule.json` 中添加项目特定的字段规则:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
// 项目特定规则
|
|||
|
|
{
|
|||
|
|
"name": "company_name",
|
|||
|
|
"add": true,
|
|||
|
|
"edit": true,
|
|||
|
|
"info": true,
|
|||
|
|
"list": true,
|
|||
|
|
"must": true,
|
|||
|
|
"strict": true,
|
|||
|
|
"type": ""
|
|||
|
|
},
|
|||
|
|
// 表.字段 形式的精确规则
|
|||
|
|
{
|
|||
|
|
"name": "user.nickname",
|
|||
|
|
"add": true,
|
|||
|
|
"edit": true,
|
|||
|
|
"info": true,
|
|||
|
|
"list": true,
|
|||
|
|
"strict": true,
|
|||
|
|
"type": ""
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 四、配置示例
|
|||
|
|
|
|||
|
|
### 完整的 admin.json 示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": "74a8a59407fa7d6c7fcdc85742dbae57",
|
|||
|
|
"name": "admin",
|
|||
|
|
"label": "后台管理系统",
|
|||
|
|
"labelConfig": {
|
|||
|
|
"show": "开启",
|
|||
|
|
"add": "添加",
|
|||
|
|
"delete": "删除",
|
|||
|
|
"edit": "编辑",
|
|||
|
|
"info": "查看详情",
|
|||
|
|
"download": "下载清单"
|
|||
|
|
},
|
|||
|
|
"menus": [
|
|||
|
|
{
|
|||
|
|
"label": "系统管理",
|
|||
|
|
"name": "sys",
|
|||
|
|
"icon": "Setting",
|
|||
|
|
"auth": ["show"],
|
|||
|
|
"menus": [
|
|||
|
|
{
|
|||
|
|
"label": "日志管理",
|
|||
|
|
"table": "logs",
|
|||
|
|
"auth": ["show", "download"]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"label": "角色管理",
|
|||
|
|
"table": "role",
|
|||
|
|
"auth": ["show", "add", "delete", "edit", "info"]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"label": "组织管理",
|
|||
|
|
"table": "org",
|
|||
|
|
"auth": ["show", "add", "delete", "edit", "info"]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"label": "人员管理",
|
|||
|
|
"table": "admin",
|
|||
|
|
"auth": ["show", "add", "delete", "edit", "info", "download"]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"flow": {
|
|||
|
|
"admin": {
|
|||
|
|
"table": "admin",
|
|||
|
|
"stop": false,
|
|||
|
|
"sql": { "role_id": "role_id" }
|
|||
|
|
},
|
|||
|
|
"role": {
|
|||
|
|
"table": "role",
|
|||
|
|
"stop": true,
|
|||
|
|
"sql": { "admin_id": "id", "id": "role_id" }
|
|||
|
|
},
|
|||
|
|
"org": {
|
|||
|
|
"table": "org",
|
|||
|
|
"stop": false,
|
|||
|
|
"sql": { "admin_id": "id" }
|
|||
|
|
},
|
|||
|
|
"logs": {
|
|||
|
|
"table": "logs",
|
|||
|
|
"stop": false,
|
|||
|
|
"sql": {}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 五、SQLite 备注替代方案
|
|||
|
|
|
|||
|
|
SQLite 数据库不支持表备注(TABLE COMMENT)和字段备注(COLUMN COMMENT),代码生成器会使用表名/字段名作为默认显示名称。
|
|||
|
|
|
|||
|
|
### 通过配置文件设置备注
|
|||
|
|
|
|||
|
|
利用 HoTime 的配置覆盖机制,可以在配置文件中手动设置显示名称和提示:
|
|||
|
|
|
|||
|
|
**步骤**:
|
|||
|
|
1. 首次运行,生成配置文件(如 admin.json)
|
|||
|
|
2. 编辑配置文件中的 `tables` 部分
|
|||
|
|
|
|||
|
|
### 设置表显示名称
|
|||
|
|
|
|||
|
|
在菜单配置中设置 `label`:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"menus": [
|
|||
|
|
{
|
|||
|
|
"label": "用户管理", // 手动设置表显示名称
|
|||
|
|
"table": "user",
|
|||
|
|
"auth": ["show", "add", "edit", "delete"]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 设置字段显示名称和提示
|
|||
|
|
|
|||
|
|
在 `configDB` 文件(如 adminDB.json)中的 `tables.表名.columns` 部分设置:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"tables": {
|
|||
|
|
"user": {
|
|||
|
|
"label": "用户管理",
|
|||
|
|
"columns": [
|
|||
|
|
{
|
|||
|
|
"name": "id",
|
|||
|
|
"label": "ID",
|
|||
|
|
"type": "number"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"name": "name",
|
|||
|
|
"label": "用户名",
|
|||
|
|
"ps": "请输入用户名", // 前端输入提示
|
|||
|
|
"must": true
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"name": "phone",
|
|||
|
|
"label": "手机号",
|
|||
|
|
"ps": "请输入11位手机号"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"name": "status",
|
|||
|
|
"label": "状态",
|
|||
|
|
"type": "select",
|
|||
|
|
"options": [
|
|||
|
|
{"name": "正常", "value": "0"},
|
|||
|
|
{"name": "禁用", "value": "1"}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**注意**:直接编辑的是 `configDB` 指定的文件(如 adminDB.json),该文件会在每次启动时重新生成。如需持久化修改,应将自定义的 columns 配置放入 `config` 指定的文件(如 admin.json)中。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 六、配置检查清单
|
|||
|
|
|
|||
|
|
### codeConfig 检查
|
|||
|
|
|
|||
|
|
- [ ] config 文件路径正确
|
|||
|
|
- [ ] rule 文件路径正确
|
|||
|
|
- [ ] table 指定的管理员表存在
|
|||
|
|
|
|||
|
|
### 菜单权限配置检查
|
|||
|
|
|
|||
|
|
- [ ] 所有 table 指向的表在数据库中存在
|
|||
|
|
- [ ] auth 数组包含需要的权限
|
|||
|
|
- [ ] menus 结构正确(有子菜单用 name,无子菜单用 table)
|
|||
|
|
- [ ] flow 配置的 sql 条件字段存在
|
|||
|
|
|
|||
|
|
### 字段规则配置检查
|
|||
|
|
|
|||
|
|
- [ ] strict=true 的规则字段名完全匹配
|
|||
|
|
- [ ] type 类型与前端控件需求一致
|
|||
|
|
- [ ] 敏感字段(password等)的 list 和 info 为 false
|