签入版本

This commit is contained in:
小蚂蚁云
2026-10-25 17:24:27 +08:00
parent 48911cc08f
commit fdbeae092a
1010 changed files with 30682 additions and 95274 deletions
+47 -59
View File
@@ -1,74 +1,62 @@
# 10.8 实战案例
# 10.7 实战案例
:::tip 概述
以「案例演示」模块为例,演示代码生成器的完整使用流程。
以 `gin_example` 为对象完整走一遍生成流程:预览 → 生成 → 重启 → 验证。生成产物应与项目内置 example 模块高度一致——这也是检验模板正确性的手段。
:::
## 第 1 步:建表
## 准备
```sql
CREATE TABLE think_example (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(200) NOT NULL COMMENT '案例名称',
type TINYINT(1) DEFAULT 0 COMMENT '案例类型',
status TINYINT(1) DEFAULT 0 COMMENT '案例状态',
sort INT DEFAULT 0 COMMENT '排序',
avatar VARCHAR(500) DEFAULT '' COMMENT '头像',
is_delete TINYINT(1) DEFAULT 0,
create_user VARCHAR(50) DEFAULT '',
create_time DATETIME,
update_user VARCHAR(50) DEFAULT '',
update_time DATETIME
);
- 数据库已导入种子脚本(gin_example 存在)
- 后端依赖就绪(可 `go run`)
## 步骤一:预览
```bash
make gen-preview TABLES="gin_example|示例表"
```
## 第 2 步:代码生成器操作
观察 stdout 输出的文件清单与内容:dto 标签、ModuleSpec 声明、RouteSpec 块、前端页面。对照 [3.11 完整代码清单](/zh/guide/code-list.html)。
1. 进入「工具管理 → 代码生成」
2. 找到 `think_example` 表
3. 配置:
- 模块名:`example`
- 功能名:`案例演示`
- 作者:`admin`
- 是否导入导出:是
4. 点击「预览」查看生成代码
5. 点击「生成」创建文件
## 步骤二:生成
## 第 3 步:生成的文件
```bash
make gen TABLES="gin_example|示例表"
```
结果分类:
| 分类 | 本例预期 |
|---|---|
| generated/overwritten | 视 overwrite 策略(example 已存在 → false 时全 skipped,true 时覆盖) |
| menu | 幂等(已存在同名菜单则不重复建) |
| dict | example_status 已存在 → 跳过或补项 |
| route | router.go 已有 CExample 块 → 幂等跳过 |
## 步骤三:重启验证
```bash
make run # 重启使路由注册生效
pnpm dev # 前端(如页面有调整)
```
验证点:
- [ ] 接口可访问(Swagger 看 /api/example/*)
- [ ] 菜单出现且权限节点齐全
- [ ] 页面增删改查、导入导出正常
- [ ] 字典回填 statusText 正常
## 从 example 到你的模块
```text
app/controller/ExampleController.php # 控制器
app/logic/ExampleLogic.php # 业务逻辑
app/model/Example.php # 数据模型
app/validate/ExampleValidate.php # 验证器
ui/src/api/tool/example.ts # 前端 API
ui/src/views/tool/example/index.vue # 列表页
ui/src/views/tool/example/edit.vue # 编辑弹窗
ui/src/views/tool/example/detail.vue # 详情弹窗
ui/src/views/tool/example/columns.ts # 表格列配置
ui/src/views/tool/example/querySchemas.ts # 查询表单配置
① 建表(COMMENT 写全枚举取值;唯一列建 uk_ 索引;租户级加 tenant_id)
② make gen TABLES="gin_order|订单"
③ 重启 → 页面验证
④ 按业务手写补充(导入导出、特殊校验、数据权限声明)
```
## 第 4 步:后续操作
生成解决 80% 的标准形态,20% 的业务差异走手写方法与声明微调——这正是 ModuleSpec"声明 + 逃生舱"设计的呼应。
生成完成后,以下内容已自动创建:
## 相关
| 项目 | 状态 | 说明 |
|------|------|------|
| 路由 | ✅ 自动注册 | `route/app.php` 中已插入 CRUD 路由组 |
| 菜单 | ✅ 自动创建 | 主菜单和权限节点已创建 |
| 字典 | ✅ 自动创建 | 带选项的字段已创建字典和字典项 |
通常还需要手动调整:
1. 根据业务需求调整 Logic 属性配置(如 `pageLikeFields`、`pageEqFields`)
2. 补充自定义钩子(如 `beforeDelete`、`afterDetail` 等)
3. 在菜单管理中调整菜单排序和图标
:::tip 生成后调整
生成的代码是基础骨架,通常需要:
- 调整 Logic 的查询条件配置
- 添加删除前校验(beforeDelete)
- 补充详情后的关联数据(afterDetail)
- 配置文件字段和富文本字段
:::
- [10.8 常见问题](/zh/generator/faq.html)