You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

19 lines
1.8 KiB

# 03 — 角色保存 + 列表 + 校验 + RoleController
**What to build:** 新建 RoleController(`/api/roles/*`),实现角色分页查询和保存两个端点,并在 ISysRoleService 中加入完整校验规则。保存时校验 roleCode 唯一性(查 DB,同 code 不同 id 则拒绝)、内置角色保护(builtin=true 禁止改 roleCode)、dataScope 范围校验(必须在 1-4 范围内)、创建角色时禁止设 builtin=true。同时从 SystemController 移除旧的 /api/system/roles/page 和 /api/system/roles/save 端点。
**Blocked by:** 02 — SysRole.builtin 字段 + DataInitializer 幂等化 + 权限种子
**Status:** ready-for-agent
- [ ] 新建 RoleController,路径 `/api/roles/*`,类级无 @PreAuthorize,方法级各带 hasAuthority
- [ ] POST /api/roles/page — hasAuthority('crm:role:list'),分页查询,current/size/keyword 表单参数
- [ ] POST /api/roles/saveOrUpdate — hasAuthority('crm:role:save'),保存基本信息(id 可选、roleName、roleCode、dataScope、sort、remark)
- [ ] ISysRoleService 增强:保存时校验 roleCode 唯一性(同 code 不同 id → 拒绝)
- [ ] 保存时内置角色保护:builtin=true 的角色禁止改 roleCode
- [ ] 保存时 dataScope 范围校验:必须在 1-4 范围内,非法值拒绝
- [ ] 创建角色时(id 为空):禁止设 builtin=true,强制 false
- [ ] RoleDetailVO 创建(基本字段:id/roleName/roleCode/dataScope/sort/remark/builtin,resourceIds 字段预留,ticket 04 填充)
- [ ] SysRoleServiceImplTest 覆盖:roleCode 重复拒绝、roleCode 同 id 通过、builtin 改 code 拒绝、dataScope 超范围拒绝、dataScope 合法通过、创建设 builtin=true 拒绝
- [ ] SystemController 移除 /api/system/roles/page 和 /api/system/roles/save 方法