8.8 KiB
8.8 KiB
Implementation Plan: Admin System
Overview
实现 HoneyBox.Admin 后台管理系统,包括后端 API 和 Vue3 前端。采用分阶段实现:先搭建后端框架和核心功能,再实现前端界面。
Tasks
-
1. 创建 HoneyBox.Admin 项目结构
- 创建 ASP.NET Core Web API 项目
- 配置项目文件夹结构 (Controllers, Services, Entities, Models, Data, Filters, Extensions)
- 添加必要的 NuGet 包引用
- 配置 appsettings.json 数据库连接
- Requirements: 1.1, 1.2
-
2. 实现数据库实体和 DbContext
- 2.1 创建 Entity 类
- 创建 AdminUser, Role, Menu, Permission, Department 实体
- 创建 AdminUserRole, RoleMenu, RolePermission, DepartmentMenu, AdminUserMenu 关联实体
- 创建 OperationLog 实体
- Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7
- 2.2 创建 AdminDbContext
- 配置 DbSet 属性
- 配置实体关系和索引
- Requirements: 2.8
- 2.3 执行数据库迁移
- 创建数据库表
- 验证表结构
- Requirements: 2.1-2.8
- 2.1 创建 Entity 类
-
3. 实现认证服务
- 3.1 创建通用 DTO 模型
- 创建 ApiResponse 通用响应模型
- 创建 PagedResult 分页结果模型
- 创建 AdminErrorCodes 错误码定义
- Requirements: 3.1
- 3.2 创建认证相关 DTO 模型
- 创建 LoginRequest, LoginResponse, AdminUserInfo
- 创建 ChangePasswordRequest
- Requirements: 3.1
- 3.3 实现 IAuthService 和 AuthService
- 实现 LoginAsync 方法 (验证凭据、生成 JWT)
- 实现登录失败计数和账户锁定逻辑
- 实现 GetCurrentUserInfoAsync 方法
- 实现 ChangePasswordAsync 方法
- Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
- 3.4 创建 AuthController
- 实现 POST /api/admin/auth/login
- 实现 GET /api/admin/auth/info
- 实现 PUT /api/admin/auth/password
- 实现 POST /api/admin/auth/logout
- Requirements: 3.1, 3.6
- 3.5 创建 AdminAuthFilter
- 实现 JWT Token 验证
- 处理无效/过期 Token
- Requirements: 3.6, 3.7
- 3.1 创建通用 DTO 模型
-
4. 实现菜单管理
- 4.1 创建菜单相关 DTO
- 创建 MenuDto, MenuTreeDto, CreateMenuRequest, UpdateMenuRequest
- Requirements: 4.1
- 4.2 实现 IMenuService 和 MenuService
- 实现 GetMenuTreeAsync (构建树形结构)
- 实现 CRUD 方法
- 实现 GetUserMenusAsync (合并部门菜单、角色菜单、用户专属菜单)
- Requirements: 4.1, 4.2, 4.3, 4.4, 4.5, 4.7, 11.2, 11.3
- 4.3 创建 MenuController
- 实现所有菜单管理 API
- Requirements: 4.1-4.7
- 4.1 创建菜单相关 DTO
-
5. 实现角色管理
- 5.1 创建角色相关 DTO
- 创建 RoleDto, CreateRoleRequest, UpdateRoleRequest, RoleQueryRequest
- Requirements: 5.1
- 5.2 实现 IRoleService 和 RoleService
- 实现分页查询
- 实现 CRUD 方法
- 实现菜单/权限分配
- Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7
- 5.3 创建 RoleController
- 实现所有角色管理 API
- Requirements: 5.1-5.7
- 5.1 创建角色相关 DTO
-
6. 实现管理员管理
- 6.1 创建管理员相关 DTO
- 创建 AdminUserDto, CreateAdminUserRequest, UpdateAdminUserRequest, AdminUserQueryRequest
- Requirements: 6.1
- 6.2 实现 IAdminUserService 和 AdminUserService
- 实现分页查询
- 实现 CRUD 方法
- 实现角色分配、部门分配、用户专属菜单分配、状态切换、密码重置
- Requirements: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 10.8, 11.1
- 6.3 创建 AdminUserController
- 实现所有管理员管理 API
- 包含分配部门、分配用户专属菜单接口
- Requirements: 6.1-6.7, 10.8, 11.1
- 6.1 创建管理员相关 DTO
-
7. 实现部门管理
- 7.1 创建部门相关 DTO
- 创建 DepartmentDto, DepartmentTreeDto, CreateDepartmentRequest, UpdateDepartmentRequest
- Requirements: 10.1, 10.2
- 7.2 实现 IDepartmentService 和 DepartmentService
- 实现 GetDepartmentTreeAsync (构建树形结构,支持无限嵌套)
- 实现 CRUD 方法
- 实现部门菜单分配
- 实现循环引用检测 (防止部门设为自己的子部门)
- Requirements: 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7
- 7.3 创建 DepartmentController
- 实现所有部门管理 API
- Requirements: 10.1-10.8
- 7.1 创建部门相关 DTO
-
8. 实现权限控制
- 8.1 实现 IPermissionService 和 PermissionService
- 实现 GetUserPermissionsAsync
- 实现 HasPermissionAsync
- 实现权限缓存和失效 (角色、部门、用户菜单变更时失效)
- Requirements: 7.1, 7.4, 7.5, 11.5
- 8.2 创建 PermissionFilter
- 实现 AdminPermissionAttribute
- 实现权限验证逻辑
- Requirements: 7.1, 7.2, 7.3
- 8.3 创建 PermissionController
- 实现权限列表查询 API
- Requirements: 7.1
- 8.1 实现 IPermissionService 和 PermissionService
-
9. 实现操作日志
- 9.1 实现 IOperationLogService 和 OperationLogService
- 实现日志记录方法
- 实现分页查询
- Requirements: 8.1, 8.2, 8.3, 8.4
- 9.2 创建 OperationLogFilter
- 自动记录 API 操作日志
- Requirements: 8.1, 8.2
- 9.3 创建 OperationLogController
- 实现日志查询 API
- Requirements: 8.3, 8.4
- 9.1 实现 IOperationLogService 和 OperationLogService
-
10. 配置服务注册和静态文件
- 10.1 创建 ServiceCollectionExtensions
- 实现 AddHoneyBoxAdmin() 扩展方法
- 注册所有服务和 DbContext
- Requirements: 1.5
- 10.2 重构 Program.cs 使用扩展方法
- 使用 AddHoneyBoxAdmin() 替代手动注册
- 确保静态文件服务和 SPA Fallback 路由配置正确
- Requirements: 1.3, 1.4
- 10.1 创建 ServiceCollectionExtensions
-
11. 数据初始化
- 11.1 创建 DataSeeder
- 初始化超级管理员账号 (admin/admin123)
- 初始化超级管理员角色
- 初始化系统菜单
- 初始化系统权限
- 初始化根部门
- Requirements: 12.1, 12.2, 12.3, 12.4, 12.5
- 11.1 创建 DataSeeder
-
12. Checkpoint - 后端 API 完成
- 确保所有 API 可正常调用
- 确保认证和权限控制正常工作
- 使用 Postman 或 .http 文件测试
-
13. 创建 Vue3 前端项目
- 13.1 初始化项目
- 使用 Vite 创建 Vue3 + TypeScript 项目
- 安装 Element Plus, Pinia, Vue Router, Axios
- 配置 vite.config.ts 输出到 wwwroot
- Requirements: 9.1, 9.2, 9.3, 9.4, 9.8
- 13.2 创建基础结构
- 创建目录结构 (api, store, router, views, layout, utils)
- 配置 Axios 请求封装
- 配置 Token 管理
- Requirements: 9.1, 9.2, 9.3
- 13.1 初始化项目
-
14. 实现前端登录功能
- 14.1 创建登录页面
- 实现登录表单 (用户名、密码)
- 实现表单验证
- 调用登录 API
- Requirements: 9.5
- 14.2 实现用户状态管理
- 创建 user store (Pinia)
- 存储 token 和用户信息
- Requirements: 9.3
- 14.1 创建登录页面
-
15. 实现前端布局和路由
- 15.1 创建主布局
- 实现侧边栏菜单组件
- 实现顶部栏组件
- 实现主内容区域
- Requirements: 9.6
- 15.2 实现动态路由
- 创建 permission store
- 根据用户菜单生成动态路由
- 实现路由守卫
- Requirements: 9.4
- 15.3 实现权限指令
- 创建 v-permission 指令
- 实现按钮级别权限控制
- Requirements: 9.7
- 15.1 创建主布局
-
16. 实现前端系统管理页面
- 16.1 实现菜单管理页面
- 菜单树形表格
- 新增/编辑/删除菜单
- Requirements: 4.1-4.7
- 16.2 实现角色管理页面
- 角色列表表格
- 新增/编辑/删除角色
- 分配菜单/权限
- Requirements: 5.1-5.7
- 16.3 实现部门管理页面
- 部门树形表格
- 新增/编辑/删除部门
- 分配部门菜单
- Requirements: 10.1-10.8
- 16.4 实现管理员管理页面
- 管理员列表表格
- 新增/编辑/删除管理员
- 分配角色、分配部门、分配用户专属菜单、启用/禁用
- Requirements: 6.1-6.7, 10.8, 11.1
- 16.1 实现菜单管理页面
-
17. 实现首页仪表盘
- 创建 Dashboard 页面
- 显示基本统计信息
- Requirements: 9.6
-
18. 前端打包和部署配置
- 配置生产环境构建
- 输出到 HoneyBox.Admin/wwwroot
- 验证一体化部署
- Requirements: 9.8
- 注意: 由于项目路径包含
#字符,Vite 构建会失败。需要将项目移动到不包含特殊字符的路径下进行构建。
-
19. Final Checkpoint - 系统完成
- 确保前后端联调正常
- 确保所有功能可用
- 确保权限控制正常
- 后端: 构建成功,所有 API 已实现
- 前端: 所有页面已创建,需在无特殊字符路径下构建
Notes
- 任务按顺序执行,后端优先于前端
- Checkpoint 任务用于阶段性验证
- 前端打包后部署到 wwwroot,实现一体化部署
- 默认管理员账号: admin / admin123
- 用户菜单 = 部门菜单 ∪ 角色菜单 ∪ 用户专属菜单