81 lines
3.0 KiB
Markdown
81 lines
3.0 KiB
Markdown
# 10.3 Web 管理界面
|
||
|
||
:::tip 概述
|
||
管理界面位于「工具 → 代码生成」(ui/src/views/tool/generator/):数据表清单分页浏览、代码预览、一键生成、批量生成。与 CLI 共用同一套生成核心。
|
||
:::
|
||
|
||
## 页面功能
|
||
|
||
| 功能 | 接口 | 权限 |
|
||
|------|------|------|
|
||
| 数据表清单 | GET /api/generator/page | sys:generator:page |
|
||
| 代码预览 | POST /api/generator/preview | sys:generator:generator |
|
||
| 一键生成 | POST /api/generator/generate | sys:generator:generator |
|
||
| 批量生成 | POST /api/generator/batchGenerate | sys:generator:batchGenerator |
|
||
|
||
页面文件:`ui/src/views/tool/generator/`(index.vue / edit.vue / columns.ts / querySchemas.ts——页面自身也是三件套模式)。
|
||
|
||
## 使用流程
|
||
|
||
```text
|
||
1. 打开「工具 → 代码生成」→ 数据表清单(含表注释/行数/引擎)
|
||
2. 选择目标表 → 「预览」查看将产出的文件与内容(不落盘)
|
||
3. 确认 → 「生成」→ 结果报告:
|
||
Generated[] / Skipped[] / Overwritten[] / Failed[]
|
||
Menu{Success, MenuId, Message}
|
||
Dict[]{Dict, Name, Items, Status}
|
||
Route{Success, Message}
|
||
4. 后端 go build + 重启
|
||
5. 角色管理勾选新权限节点 → 访问新菜单验证
|
||
```
|
||
|
||
## 预览的价值
|
||
|
||
```text
|
||
preview 返回 List[]{Path, Content}(渲染结果全文,不落盘):
|
||
* 生成前核对文件路径与命名(域名/驼峰是否符合预期)
|
||
* 核对筛选字段/枚举识别是否正确
|
||
* 作为 code review 的第一道关口
|
||
* 对照学习生成模板的产出风格
|
||
```
|
||
|
||
## 批量生成报告
|
||
|
||
```text
|
||
BatchGenerate 返回 List[]{Table, Success, Generated, Skipped, Overwritten, Failed, Message, Menu, Dict, Route}
|
||
Message 格式:"生成 N,跳过 N,覆盖 N,失败 N"
|
||
|
||
批量语义:
|
||
每表独立成败(一表失败不影响其他)
|
||
幂等副作用逐表执行(菜单已存在则跳过)
|
||
```
|
||
|
||
## 权限与安全
|
||
|
||
```text
|
||
生成器权限码特例:sys:generator:generator | sys:generator:batchGenerator
|
||
(非 sys:generator:generate——注意拼写)
|
||
日志 logType=generate(19 代码生成)——生成操作全留痕
|
||
生成器写文件系统(api/controller/logic 等目录)——收紧 generator 相关权限,
|
||
非管理员不应授予
|
||
```
|
||
|
||
## 界面操作注意
|
||
|
||
::: warning 覆盖确认
|
||
`generator.overwrite: true` 时生成即覆盖同名文件(含手工修改过的)——批量覆盖前:
|
||
1. 确认 config.yaml overwrite 设置
|
||
2. 手工改动多的模块临时改回 false
|
||
3. 或先 git 提交/备份再覆盖
|
||
:::
|
||
|
||
## 排障
|
||
|
||
| 症状 | 原因 |
|
||
|------|------|
|
||
| 表清单为空 | database 连接错/无表;非 MySQL 时注释列为空属正常 |
|
||
| 预览报错 | 模板渲染失败——查表结构特殊列(类型/注释) |
|
||
| 生成成功但菜单没出现 | 菜单创建成功但角色未勾选;或 parentMenuId 配置错(挂到了不存在的父级) |
|
||
| 生成成功但路由 404 | router.go 注册行写入失败(看 Route.Message);或未重启 |
|
||
| 字典没创建 | 枚举注释格式不对(须 `字段:1-x 2-y`);看 Dict 报告项状态 |
|