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