generated from youfool-project/youfool-prj-springboot3-template
102 lines
4.5 KiB
Markdown
102 lines
4.5 KiB
Markdown
# 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) |
|