5.9 KiB

Implementation Plan: Admin System Backend

Overview

本实现计划将为 adminSystem 前端提供完整的后端 API 支持。实现将扩展现有的 C# ASP.NET Core 项目,添加用户认证、用户管理、角色管理和动态菜单功能。

Tasks

  • 1. 数据库模型和迁移

    • 1.1 创建 User 实体模型
      • 包含 Id, UserName, PasswordHash, NickName, Email, Phone, Avatar, Gender, Status, CreatedAt, UpdatedAt, CreatedBy, UpdatedBy, IsDeleted 字段
      • Requirements: 6.1
    • 1.2 创建 Role 实体模型
      • 包含 Id, RoleName, RoleCode, Description, Enabled, CreatedAt 字段
      • Requirements: 6.2
    • 1.3 创建 UserRole 关联实体
      • 多对多关系配置
      • Requirements: 6.3
    • 1.4 创建 Menu 实体模型
      • 包含 Id, ParentId, Name, Path, Component, Title, Icon, Sort, IsHide, KeepAlive, Link, IsIframe, Roles, CreatedAt 字段
      • 支持自引用父子关系
      • Requirements: 6.4
    • 1.5 创建 RoleMenu 关联实体
      • Requirements: 6.5
    • 1.6 更新 AppDbContext 添加新的 DbSet
      • 配置实体关系和索引
    • 1.7 创建数据库迁移并应用
      • 生成迁移文件并执行
  • 2. 统一响应格式和中间件

    • 2.1 创建 ApiResponse 统一响应模型
      • 包含 Code, Msg, Data 字段
      • Requirements: 7.1
    • 2.2 创建全局异常处理中间件
      • 捕获异常并返回统一格式
      • Requirements: 7.2, 7.3, 7.4, 7.5
  • 3. JWT 认证服务

    • 3.1 安装 JWT 相关 NuGet 包
      • Microsoft.AspNetCore.Authentication.JwtBearer
      • System.IdentityModel.Tokens.Jwt
    • 3.2 创建 JwtSettings 配置类
      • 包含 SecretKey, Issuer, Audience, AccessTokenExpiration, RefreshTokenExpiration
    • 3.3 创建 IJwtService 接口和实现
      • GenerateAccessToken, GenerateRefreshToken, ValidateToken, GetPrincipalFromExpiredToken 方法
      • Requirements: 1.1, 1.4, 1.5
    • 3.4 配置 JWT 认证中间件
      • 在 Program.cs 中配置 AddAuthentication 和 AddJwtBearer
      • 添加 UseAuthentication 和 UseGlobalExceptionHandler 中间件
    • 3.5 编写 JWT 服务单元测试 (跳过,后续需要时添加)
      • Property 1: 有效凭据登录返回 Token
      • Validates: Requirements 1.1, 1.5
  • 4. 认证控制器 (AuthController)

    • 4.1 创建 AuthService 服务
      • 实现登录验证、密码哈希、Token 生成逻辑
      • Requirements: 1.1, 1.2, 1.3
    • 4.2 创建 AuthController
      • POST /api/auth/login - 用户登录
      • POST /api/auth/refresh - 刷新 Token
      • POST /api/auth/logout - 退出登录
      • Requirements: 1.1, 1.2, 1.4
    • 4.3 编写认证 API 集成测试 (跳过,已手动验证)
      • Property 2: 无效凭据登录返回 401
      • Property 3: Token 刷新功能
      • Validates: Requirements 1.2, 1.4
  • 5. 用户控制器 (UserController)

    • 5.1 创建 UserService 服务 (集成在 AuthService 中)
      • 实现用户 CRUD、分页查询、搜索过滤逻辑
      • Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
    • 5.2 创建 UserController
      • GET /api/user/info - 获取当前用户信息
      • Requirements: 2.1, 2.2, 2.3
    • 5.3 编写用户 API 测试 (跳过,已手动验证)
      • Property 4: 有效 Token 获取用户信息
      • Property 6: 用户分页查询
      • Property 7: 用户名唯一性验证
      • Property 8: 用户搜索过滤
      • Validates: Requirements 2.1, 2.2, 2.3, 3.1, 3.2, 3.3
  • 6. 角色控制器 (RoleController) - 后续扩展

    • 6.1 创建 RoleService 服务
      • 实现角色 CRUD、菜单权限分配逻辑
      • Requirements: 4.1, 4.2, 4.3, 4.4
    • 6.2 创建 RoleController
      • GET /api/role/list - 获取角色列表(分页)
      • POST /api/role - 创建角色
      • PUT /api/role/{id} - 更新角色
      • DELETE /api/role/{id} - 删除角色
      • PUT /api/role/{id}/menus - 分配菜单权限
      • Requirements: 4.1, 4.2, 4.3, 4.4
    • 6.3 编写角色 API 测试
      • Property 9: 角色编码唯一性验证
      • Validates: Requirements 4.2
  • 7. 菜单控制器 (MenuController)

    • 7.1 创建 MenuService 服务
      • 实现菜单树构建、角色过滤逻辑
      • Requirements: 5.1, 5.2, 5.3, 5.4
    • 7.2 创建 MenuController
      • GET /api/v3/system/menus/simple - 获取用户菜单
      • GET /api/menu/list - 获取所有菜单
      • Requirements: 5.1, 5.2, 5.3, 5.4
    • 7.3 编写菜单 API 测试 (跳过,已手动验证)
      • Property 10: 菜单角色过滤
      • Validates: Requirements 5.1, 5.4
  • 8. 初始化数据

    • 8.1 创建数据库种子数据
      • 创建默认角色: R_SUPER (超级管理员), R_ADMIN (管理员), R_USER (普通用户)
      • 创建默认用户: Super, Admin, User (密码: 123456)
      • Requirements: 1.1
    • 8.2 创建 AMT Scanner 菜单数据
      • 设备管理、网络扫描、凭据管理、远程桌面、电源控制菜单
      • Requirements: 8.1, 8.2, 8.3, 8.4, 8.5
    • 8.3 创建系统管理菜单数据
      • 用户管理、角色管理、菜单管理
      • Requirements: 5.2, 5.3
  • 9. Checkpoint - 确保所有测试通过

    • 确保所有测试通过,如有问题请询问用户
  • 10. 前端配置更新

    • 10.1 更新 adminSystem 环境变量
    • 10.2 修改 HTTP 请求工具添加 Bearer 前缀
    • 10.3 验证前端登录功能
      • 测试登录、获取用户信息、获取菜单
  • 11. Final Checkpoint - 完整功能验证

    • 确保所有功能正常工作,如有问题请询问用户

Notes

  • All tasks including tests are required for comprehensive coverage
  • Each task references specific requirements for traceability
  • Checkpoints ensure incremental validation
  • Property tests validate universal correctness properties
  • Unit tests validate specific examples and edge cases