feat(role): 新增平台角色管理功能增强
- 权限表增加 available_for_role_types 字段,支持标记权限可用角色类型 - 权限列表和权限树接口支持按 available_for_role_type 过滤 - 新增角色状态切换接口 PUT /api/admin/roles/:id/status - 角色分配权限时验证权限的可用角色类型 - 完善数据库迁移脚本和单元测试 - 补充数据库迁移相关开发规范文档
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# Change: 平台角色管理功能增强
|
||||
|
||||
## Why
|
||||
|
||||
现有的角色管理系统虽然已实现完整的 RBAC 功能,但缺少面向平台管理员的专用角色管理接口。当前接口设计为通用型(同时支持平台角色和客户角色),但在实际使用中,平台管理员主要管理平台角色(用于分配给平台用户),而客户角色的管理需求相对较少且需要单独的权限控制。
|
||||
|
||||
此外,权限分配时缺少对"哪些权限可以分配给平台角色"的明确过滤机制,导致在创建角色时可能分配不合适的权限。未来需要提供内部开发人员专用的权限配置接口,用于标记权限的可用角色类型。
|
||||
|
||||
## What Changes
|
||||
|
||||
- ✅ 扩展 `Permission` 模型,增加 `available_for_role_types` 字段,用于标记权限可分配给哪些角色类型
|
||||
- ✅ 修改权限列表查询接口,支持按 `available_for_role_type` 过滤
|
||||
- ✅ 修改权限树查询接口,支持按 `available_for_role_type` 过滤
|
||||
- ✅ 新增角色状态切换接口:`PUT /api/admin/roles/:id/status`
|
||||
- ✅ 扩展角色列表查询,支持按 `status` 过滤
|
||||
- ✅ 更新角色 Service 层,在分配权限时验证权限的 `available_for_role_types`
|
||||
- ✅ 提供数据库迁移脚本,为现有权限设置默认值 `1,2`(兼容平台角色和客户角色)
|
||||
|
||||
**注意**:暂不实现权限配置接口(修改 `available_for_role_types`),该功能仅供内部开发人员手动修改数据库使用。
|
||||
|
||||
## Impact
|
||||
|
||||
**Affected specs:**
|
||||
- `role-permission` — 修改权限查询和角色权限分配的需求
|
||||
|
||||
**Affected code:**
|
||||
- `internal/model/permission.go` — 增加 `AvailableForRoleTypes` 字段
|
||||
- `internal/model/permission_dto.go` — 修改 `PermissionListRequest`,增加 `AvailableForRoleType` 查询参数
|
||||
- `internal/model/role_dto.go` — 修改 `RoleListRequest`,增加 `Status` 查询参数;增加 `UpdateRoleStatusRequest`
|
||||
- `internal/store/postgres/permission_store.go` — 修改 `List()` 和 `GetAll()` 方法,支持按 `available_for_role_types` 过滤
|
||||
- `internal/service/permission/service.go` — 修改 `List()` 和 `GetTree()` 方法,支持新的过滤参数
|
||||
- `internal/service/role/service.go` — 修改 `AssignPermissions()` 方法,验证权限的 `available_for_role_types`;增加 `UpdateStatus()` 方法
|
||||
- `internal/handler/admin/role.go` — 增加 `UpdateStatus()` Handler
|
||||
- `internal/handler/admin/permission.go` — 修改 `List()` 和 `GetTree()` Handler,支持新的查询参数
|
||||
- `internal/routes/role.go` — 注册状态切换路由
|
||||
- `migrations/` — 增加迁移脚本:添加 `available_for_role_types` 字段
|
||||
|
||||
**Breaking changes:**
|
||||
- 无
|
||||
|
||||
**Database changes:**
|
||||
```sql
|
||||
-- 添加 available_for_role_types 字段
|
||||
ALTER TABLE tb_permission
|
||||
ADD COLUMN available_for_role_types VARCHAR(20) DEFAULT '1,2'
|
||||
COMMENT '可用角色类型 1=平台 2=客户';
|
||||
|
||||
-- 为现有权限设置默认值(兼容所有角色类型)
|
||||
UPDATE tb_permission SET available_for_role_types = '1,2' WHERE available_for_role_types IS NULL;
|
||||
```
|
||||
|
||||
**Non-breaking enhancements:**
|
||||
- 权限列表查询新增可选参数 `available_for_role_type`
|
||||
- 角色列表查询新增可选参数 `status`
|
||||
- 新增角色状态切换接口 `PUT /api/admin/roles/:id/status`
|
||||
Reference in New Issue
Block a user