gz-oarms/progress.md

102 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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) |