Become a sponsor

概述
本章以项目内置的 example(案例演示,gin_example) 模块为例,从数据库建表到前端页面联调,完整演示开发全流程。学完本章后,你将掌握新增业务模块的标准步骤。
┌──────────┐
│ 1. 建表 │ 创建 gin_ 前缀表(含公共审计字段)
└────┬─────┘
│
▼
┌──────────┐
│ 2. dto │ internal/model/dto/{module}.go —— 请求/响应契约 + 校验标签
└────┬─────┘
│
▼
┌──────────┐
│ 3. repo │ internal/repository/{module}.go —— XxxRepo + Base,统一 Ctx(ctx)
└────┬─────┘
│
▼
┌──────────┐
│ 4. service│ internal/service/{module}.go —— sXxx + ModuleSpec 声明 + 手写逻辑
└────┬─────┘
│
▼
┌──────────┐
│ 5. handler│ internal/handler/{module}.go —— 极薄委托,签名固定
└────┬─────┘
│
▼
┌──────────┐
│ 6. 路由 │ router.go 注册表加一条 Bind 声明(RouteSpec 表)
└────┬─────┘
│
▼
┌──────────┐
│ 7. 菜单 │ 配置菜单与权限节点(或直接用代码生成器代劳)
└────┬─────┘
│
▼
┌──────────┐
│ 8. 前端 │ ui/src/api + ui/src/views(详见第 9 章)
└──────────┘第 2~6 步也可以交给 第 10 章 代码生成器 自动完成——生成器产物与手写规约完全一致,本章教你读懂并手工掌握每一步。
| 约定 | 说明 | 示例 |
|---|---|---|
| 表名 | gin_ 前缀 + 小写下划线 | gin_example |
| 字段名 | 小写下划线 | create_user、sort |
| 主键 | 统一 id,自增 | id INT PRIMARY KEY AUTO_INCREMENT |
| 四件套 | dto / repository / service / handler 同名成套 | example.go × 4 |
| 服务实例 | type sXxx struct{} + init 注册 | var Example *sExample |
| 权限码 | sys:模块名:操作 | sys:example:page |
| 路由风格 | 动词命名、全小驼峰方法 | GET /api/example/page |
| 日志文案 | 模块名-动作描述 | 案例演示-查询分页记录 |
gin_example 是代码生成器的参考模板,涵盖标准 CRUD 的全部典型场景:
internal/model/dto/example.go # 契约层
internal/repository/example.go # 数据访问层
internal/service/example.go # 业务层(ModuleSpec 声明)
internal/handler/example.go # 接口层
internal/router/router.go # RouteSpec 注册表
ui/src/api/tool/example.ts # 前端 API 模块
ui/src/views/tool/example/ # 前端页面