Skip to content

概述与目标

本章以「岗位管理(Position)」模块为完整案例,手把手演示从零开发一个业务模块的全流程。学完本章后,你将掌握项目中任意模块的开发方式。

你将学到什么

通过本章的实战演练,你将完整经历以下开发环节:

环节涉及文件说明
数据模型models.py定义数据库表结构
请求校验schemas.pyPydantic 表单验证
数据访问repository.py封装数据库查询
业务逻辑service.py实现增删改查与业务规则
API 端点endpoints/position.py定义 HTTP 接口
路由注册router.py挂载路由到应用
权限配置菜单管理配置权限节点
前端对接API + 页面 + 路由前端完整开发

案例模块:岗位管理

选择「岗位管理」作为案例的原因:

  1. 结构典型:包含完整的 CRUD + 状态管理 + 删除校验,覆盖大多数业务场景
  2. 复杂度适中:字段少(name / status / sort),逻辑清晰,适合入门
  3. 依赖简单:仅被 User 模块引用,无复杂关联关系
  4. 代码精简:后端 4 个文件 + 前端 3 个文件,总计约 500 行代码

模块文件总览

后端(src/)
├── modules/system/position/
│   ├── models.py          # 数据模型
│   ├── schemas.py         # 表单验证
│   ├── repository.py      # 数据访问层
│   └── service.py         # 业务逻辑层
└── api/v1/endpoints/
    └── position.py        # API 端点层

前端(ui/src/)
├── api/system/
│   └── position.ts        # API 请求封装
├── views/system/
│   └── position/
│       ├── index.vue      # 主页面:搜索 + 表格 + 操作
│       ├── edit.vue       # 编辑弹窗:新增/编辑表单
│       ├── columns.ts     # 表格列定义
│       └── querySchemas.ts # 搜索表单 Schema
└── router/routes/
    └── system.ts          # 路由配置(追加)

数据库表结构

岗位表 fastapi_position 结构如下:

字段类型说明
idint主键,自增
namevarchar(255)岗位名称
statusint状态:1-在用 2-停用
sortint排序号
create_uservarchar(255)创建人
create_timedatetime创建时间
update_uservarchar(255)更新人
update_timedatetime更新时间
is_deleteint软删除标记:0-正常 1-已删除

温馨提示

其中 idcreate_usercreate_timeupdate_userupdate_timeis_delete 由基类 base_model 自动提供,业务字段仅需定义 namestatussort

开发顺序

建议按以下顺序逐步开发,每完成一步即可验证:

1. models.py     → 建表,确认数据库中有 fastapi_position 表
2. schemas.py    → 定义验证规则(无独立验证方式,后续端点调用时自动校验)
3. repository.py → 数据访问层(通常只需声明类,无需写代码)
4. service.py    → 业务逻辑层(声明差异点 + 自定义方法)
5. endpoint.py   → API 端点(声明路由 + 权限装饰器)
6. router.py     → 注册路由(一行代码)
7. 权限配置       → 在菜单管理中添加权限节点
8. 前端对接       → API → 页面 → 路由

温馨提示

本章每一步都附有完整代码和详细注释。建议对照项目中 src/modules/system/position/ 目录下的实际源码一起阅读,加深理解。

总结

模块开发实战以岗位管理(position)为例,完整演示从 Model → Schema → Repository → Service → Endpoint → 路由注册 → 权限配置 → 前端 API → 前端页面的全流程。每一步都附有完整代码和详细注释,建议对照实际源码一起阅读。

小蚂蚁云团队 · 提供技术支持