# OARMS 权限体系设计 — 进度日志 ## 当前状态 **阶段**: 第一轮完成(Phase 1-3 + Phase 7 编译验证) **进度**: Phase 1/2/3/7 已完成 --- ## 阶段进度 | 阶段 | 状态 | 备注 | |------|------|------| | Phase 1: DDL 设计 | ✅ 完成 | 5 张表 + 初始数据 | | Phase 2: Entity/Mapper | ✅ 完成 | system 模块 5 Entity + 5 Mapper + 2 Service | | Phase 3: 认证流程 | ✅ 完成 | LoginController + StpInterfaceImpl + UserBaseServiceImpl | | Phase 4: 鉴权+数据权限 | ✅ 完成 | 9 Controller 28 个方法添加 @SaCheckPermission | | Phase 5: 前端角色路由 | ✅ 完成 | routes.js + permission.js + user.js + v-permission | | Phase 6: 用户管理接口 | pending | 可选 | | Phase 7: 编译验证 | ✅ 完成 | BUILD SUCCESS | --- ## 会话记录 ### 2026-05-24 — 权限体系规划 **操作**: 1. 检查现有登录/用户模块实现 → 发现全部 TODO 未实现 2. 确认 PRD 中有角色定义 → 第三章 3 个角色 + 操作权限 + 数据权限 3. 研究后端代码 → Sa-Token 已集成,StpInterfaceImpl/LoginController/UserBaseServiceImpl 均未实现 4. 研究前端代码 → 角色/路由框架存在,但仅 admin/guest 5. 研究框架 UserBase → 字段有限(username, permission),需扩展 **结论**: - 现有代码是认证骨架,核心逻辑全部 TODO - PRD 定义了 3 角色 × 操作权限 + 数据权限的完整 RBAC 模型 - 需从 DDL → Entity/Mapper → Service → Controller → 前端全链路实现 **设计决策**: - 5 张新表:SYS_USER, SYS_ROLE, SYS_USER_ROLE, SYS_PERMISSION, SYS_ROLE_PERMISSION - 新模块路径:modules/system/ - 权限码格式:`module:action`(如 screen:create) - 数据权限:Service 层按角色动态追加查询条件 - Session 存储:LoginUserVO 替代 UserBase ### 2026-05-24 — 第一轮执行(Phase 1-3 + 7) **创建的文件**: | 文件 | 说明 | |------|------| | `docs/db/sql/V11.0.0__SYS_system_ddl.sql` | 5 张表 DDL | | `docs/db/sql/V11.0.0__SYS_system_init_data.sql` | 3 角色 + 27 权限 + 3 用户 | | `modules/system/entity/SysUserEntity.java` | 用户实体 | | `modules/system/entity/SysRoleEntity.java` | 角色实体 | | `modules/system/entity/SysUserRoleEntity.java` | 用户角色关联实体 | | `modules/system/entity/SysPermissionEntity.java` | 权限实体 | | `modules/system/entity/SysRolePermissionEntity.java` | 角色权限关联实体 | | `modules/system/entity/vo/LoginUserVO.java` | 登录用户信息 VO | | `modules/system/entity/vo/SysUserVO.java` | 用户管理 VO | | `modules/system/entity/query/SysUserQuery.java` | 用户查询条件 | | `modules/system/mapper/SysUserMapper.java` | 用户 Mapper | | `modules/system/mapper/SysRoleMapper.java` | 角色 Mapper(含自定义 SQL) | | `modules/system/mapper/SysUserRoleMapper.java` | 用户角色关联 Mapper | | `modules/system/mapper/SysPermissionMapper.java` | 权限 Mapper(含自定义 SQL) | | `modules/system/mapper/SysRolePermissionMapper.java` | 角色权限关联 Mapper | | `modules/system/service/ISysUserService.java` | 用户 Service 接口 | | `modules/system/service/ISysRoleService.java` | 角色 Service 接口 | | `modules/system/service/impl/SysUserServiceImpl.java` | 用户 Service 实现 | | `modules/system/service/impl/SysRoleServiceImpl.java` | 角色 Service 实现 | | `config/PasswordConfig.java` | BCrypt 密码加密 Bean | **修改的文件**: | 文件 | 变更 | |------|------| | `controller/LoginController.java` | 数据库认证替代硬编码,返回 LoginUserVO | | `service/impl/StpInterfaceImpl.java` | 对接 SysRoleMapper/SysPermissionMapper | | `service/impl/UserBaseServiceImpl.java` | 从 LoginUserVO 转换 UserBase | | `pom.xml` | 添加 spring-security-crypto 依赖 | **编译错误与修复**: | 错误 | 修复 | |------|------| | `lambdaQuery()` 不存在 | ISysUserService 不继承 IService,改用 SysUserMapper 直接查询 | | `RestResult.fail()` 不存在 | 框架只有 `RestResult.ok()`,改用 `AssertUtils.isTrue()` | | `AssertUtils.isTrue(boolean, String)` 签名不匹配 | 改为三参数 `isTrue(boolean, ResultCode, String)` | **编译结果**: BUILD SUCCESS --- ## 遇到的错误 | 错误 | 尝试次数 | 解决方案 | |------|---------|---------| | lambdaQuery() 在 ISysUserService 上不存在 | 1 | 改用 SysUserMapper.selectOne() | | RestResult.fail() 方法不存在 | 1 | 用 AssertUtils.isTrue() 替代 | | AssertUtils.isTrue(boolean, String) 签名不匹配 | 1 | 改为 isTrue(boolean, ResultCode, String) |