第 82 章:综合实战项目 - RBAC 权限管理系统
学习目标
- 整合所有学过的知识,搭建企业级 RBAC 系统
- 掌握完整项目的需求分析、架构设计、技术选型
- 实现从零到部署的全流程实战
一、项目简介
TaskFlow 是一个企业级 RBAC(Role-Based Access Control)权限管理系统,作为本课程的综合实战项目。
二、业务模块
| 模块 | 功能 | 关键特性 |
|---|---|---|
| 用户管理 | 增删改查、分配角色、重置密码 | BCrypt 加密、JWT 登录 |
| 角色管理 | 角色 CRUD、分配菜单/权限 | 按钮级权限 |
| 菜单管理 | 菜单树、按钮权限 | 三级菜单(目录/菜单/按钮) |
| 部门管理 | 组织架构树 | 树形结构、数据权限 |
| 字典管理 | 系统字典维护 | 缓存优化 |
| 操作日志 | 用户操作审计 | AOP 切面 |
| 代码生成 | 一键生成 CRUD | 模板引擎 |
| 登录认证 | JWT 双 token | 自动刷新 |
三、技术栈
| 层 | 技术 | 说明 |
|---|---|---|
| Web | Spring Boot 3.2 | 主框架 |
| ORM | MyBatis-Plus 3.5 | 单表 CRUD 简化 |
| 数据库 | MySQL 8.0 | 主流关系型数据库 |
| 缓存 | Redis 7 | 分布式缓存 |
| 消息队列 | RabbitMQ 3 | 异步、削峰 |
| 认证 | JJWT | 双 token 方案 |
| API 文档 | springdoc-openapi | 自动生成接口文档 |
| 部署 | Docker + Docker Compose | 容器化 |
| CI/CD | GitHub Actions | 自动化 |
| 监控 | Prometheus + Grafana | 可观测性 |
| 测试 | JUnit 5 + Testcontainers | 单元/集成测试 |
四、整体架构
五、模块划分
taskflow
├── taskflow-common # 通用工具类
├── taskflow-system # 系统模块(用户/角色/菜单/部门)
├── taskflow-generator # 代码生成模块
└── taskflow-application # 启动模块六、核心流程
1. 用户登录流程
2. 权限验证流程
七、数据库设计
核心表
sql
-- 用户表
sys_user (id, username, password, nickname, email, phone, status, dept_id)
-- 角色表
sys_role (id, name, code, sort, status, data_scope)
-- 菜单/权限表
sys_menu (id, parent_id, name, type, permission, path, component, icon)
-- 部门表
sys_dept (id, parent_id, name, sort, leader)
-- 中间表
sys_user_role (user_id, role_id)
sys_role_menu (role_id, menu_id)
sys_user_dept (user_id, dept_id)
-- 操作日志表
sys_operation_log (id, user_id, operation, method, params, ip, cost, status)详见第 83 章建表脚本。
八、接口设计
RESTful 风格
POST /api/auth/login # 登录
POST /api/auth/refresh # 刷新 token
POST /api/auth/logout # 登出
GET /api/user/page # 用户分页
GET /api/user/{id} # 用户详情
POST /api/user # 创建用户
PUT /api/user/{id} # 更新用户
DELETE /api/user/{id} # 删除用户
POST /api/user/{id}/reset-password # 重置密码
GET /api/role/page # 角色分页
... 类似 CRUD
GET /api/menu/tree # 菜单树
GET /api/menu/permissions # 当前用户权限
GET /api/dept/tree # 部门树详见第 84 章接口文档。
九、关键技术决策
| 决策点 | 选择 | 理由 |
|---|---|---|
| 框架版本 | Spring Boot 3.2 + JDK 17 | LTS、企业主流 |
| ORM | MyBatis-Plus | 单表 CRUD 简化 |
| 认证 | JWT(自实现) | 前后端分离主流 |
| API 文档 | springdoc-openapi | 自动生成 |
| 多租户 | 支持(开关) | SaaS 场景 |
| 部署 | Docker Compose | 一键起服务 |
| 测试 | Testcontainers | 真实数据库 |
十、项目结构
taskflow
├── docker-compose.yml # 一键起服务
├── Dockerfile # 应用镜像
├── pom.xml # 父 POM
├── docs/ # 项目文档
├── sql/ # 数据库脚本
│ ├── init.sql # 建表脚本
│ └── data.sql # 初始化数据
├── examples/ # 嵌入文档的示例代码
│ └── taskflow/ # 完整项目
└── src/
├── main/
│ ├── java/com/taskflow/
│ │ ├── TaskflowApplication.java
│ │ ├── common/ # 通用:响应、异常、工具
│ │ ├── config/ # 配置
│ │ ├── security/ # Spring Security + JWT
│ │ ├── modules/
│ │ │ ├── system/ # 系统模块
│ │ │ └── generator/ # 代码生成
│ │ └── infra/ # 基础设施(Redis、MQ)
│ └── resources/
│ ├── application.yml
│ ├── mapper/ # MyBatis XML
│ └── logback-spring.xml
└── test/
└── java/com/taskflow/
├── unit/ # 单元测试
└── integration/ # 集成测试十一、开发里程碑
十二、章节预告
后续章节将按以下顺序展开:
| 章节 | 主题 |
|---|---|
| 83 | 需求分析与数据库设计 |
| 84 | 项目初始化与基础配置 |
| 85 | 通用模块(异常/响应/工具) |
| 86 | 用户与认证模块 |
| 87 | 角色与权限模块 |
| 88 | 部门与字典模块 |
| 89 | 操作日志与代码生成 |
| 90 | 测试与部署实战 |
下一章:第 83 章:需求分析与数据库设计 →