generated from youfool-project/youfool-prj-springboot3-template
4.5 KiB
4.5 KiB
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 — 权限体系规划
操作:
- 检查现有登录/用户模块实现 → 发现全部 TODO 未实现
- 确认 PRD 中有角色定义 → 第三章 3 个角色 + 操作权限 + 数据权限
- 研究后端代码 → Sa-Token 已集成,StpInterfaceImpl/LoginController/UserBaseServiceImpl 均未实现
- 研究前端代码 → 角色/路由框架存在,但仅 admin/guest
- 研究框架 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) |