# 3.1 概述与目标 :::tip 概述 本章以项目内置的 **example(案例演示)** 模块为例,从数据库建表到前端页面联调,手把手演示开发全流程。学完本章后,您将掌握新增业务模块的标准步骤。 ::: ## 开发流程总览 ```text ┌──────────┐ │ 1. 建表 │ 创建数据库表(含公共字段) └────┬─────┘ │ ▼ ┌──────────┐ │ 2. Model │ 创建数据模型(模型 Trait 复用) └────┬─────┘ │ ▼ ┌──────────┐ │ 3. FormRequest │ 创建表单请求验证(BaseRequest) └────┬─────┘ │ ▼ ┌──────────┐ │ 4. Service│ 创建业务服务(属性配置 + 钩子) └────┬─────┘ │ ▼ ┌──────────┐ │ 5. Controller│ 创建控制器(注解 + 快捷方法) └────┬─────┘ │ ▼ ┌──────────┐ │ 6. Route │ 注册路由(routes/api.php) └────┬─────┘ │ ▼ ┌──────────┐ │ 7. Menu │ 配置菜单权限(可选) └────┬─────┘ │ ▼ ┌──────────┐ │ 8. Frontend│ 前端 API + 页面([详见第 9 章](/zh/frontend/overview.html)) └──────────┘ ``` ## 开发约定 | 约定 | 说明 | 示例 | |------|------|------| | 表名 | 不含前缀,前缀由 `DB_PREFIX` 决定(默认 `laravel_`) | `example` → 实际 `laravel_example` | | 字段名 | 小写下划线 | `create_time`、`user_id` | | 主键 | 统一使用 `id`,INT 自增 | `id INT PRIMARY KEY AUTO_INCREMENT` | | Model | 位于 `app/Models/`,`$table` 指定表名 | `protected $table = 'example'` | | Service | 继承 `BaseService` 或 `BaseTenantService` | `class ExampleService extends BaseService` | | Request | 继承 `BaseRequest`,`rules()` 声明规则 | `class ExampleRequest extends BaseRequest` | | Controller | 位于 `app/Http/Controllers/Api/`,继承 `Controller` | `class ExampleController extends Controller` | | 权限码 | `sys:模块名:操作` | `sys:example:add` | | 路由 | `routes/api.php`,RESTful 风格 | `GET /api/example/page` | ## 本章示例 本章以项目内置的 **example(案例演示)** 模块为例,完整演示从建表到联调的全过程。该模块是代码生成器的参考模板,涵盖了标准 CRUD 的所有典型场景: - 分页列表(支持名称模糊搜索、状态精确过滤) - 全量列表 - 详情查询 - 新增(含头像上传) - 修改 - 删除 / 批量删除 - Excel 导入导出 - 权限控制(`#[Permission]` 注解) - 操作日志(`#[OperationLog]` 注解) - 枚举显示名翻译(status 字典映射) - 唯一性校验(`uniqueFields` 属性声明) ## 涉及文件 ```text app/Models/Example.php # 数据模型 app/Http/Requests/ExampleRequest.php # 表单请求验证 app/Services/ExampleService.php # 业务服务 app/Http/Controllers/Api/ExampleController.php # 控制器 routes/api.php # 路由(example 模块 9 条) # 前端(独立 AntdVue 仓库): # ui/src/api/tool/example.ts # 前端 API 模块 # ui/src/views/tool/example/ # 前端页面 ``` ## 学习建议 1. 先通读 3.2~3.8 按顺序跟随 example 模块走一遍; 2. 重点理解 **声明式配置**:Service 只声明属性,CRUD 由 `BaseService` + 6 个 Trait 完成; 3. 掌握后动手:可直接使用 [第 10 章 代码生成器](/zh/generator/overview.html) 一键生成同等结构的模块。