gz-oarms/progress.md

4.5 KiB
Raw Blame History

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)