10.3 Web 管理界面
概述
管理界面位于「工具 → 代码生成」(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 相关权限,
非管理员不应授予界面操作注意
覆盖确认
generator.overwrite: true 时生成即覆盖同名文件(含手工修改过的)——批量覆盖前:
- 确认 config.yaml overwrite 设置
- 手工改动多的模块临时改回 false
- 或先 git 提交/备份再覆盖
排障
| 症状 | 原因 |
|---|---|
| 表清单为空 | database 连接错/无表;非 MySQL 时注释列为空属正常 |
| 预览报错 | 模板渲染失败——查表结构特殊列(类型/注释) |
| 生成成功但菜单没出现 | 菜单创建成功但角色未勾选;或 parentMenuId 配置错(挂到了不存在的父级) |
| 生成成功但路由 404 | router.go 注册行写入失败(看 Route.Message);或未重启 |
| 字典没创建 | 枚举注释格式不对(须 字段:1-x 2-y);看 Dict 报告项状态 |