162 lines
7.7 KiB
Go
162 lines
7.7 KiB
Go
package v1
|
|
|
|
import "github.com/gogf/gf/v2/frame/g"
|
|
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
// 角色管理
|
|
//
|
|
// 超级管理员不在本接口的管辖范围:它由 sys_admin_users.role 判定并在鉴权时短路,
|
|
// 界面上作为一张固定卡片展示「全部权限(不可配置)」。
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
// AdminRoleBrief 角色简要信息(登录响应、用户列表等处展示用)
|
|
type AdminRoleBrief struct {
|
|
ID int64 `json:"id"`
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
IsEnabled bool `json:"is_enabled"`
|
|
}
|
|
|
|
// AdminRoleItem 角色列表项
|
|
type AdminRoleItem struct {
|
|
ID int64 `json:"id"`
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
IsBuiltin bool `json:"is_builtin"`
|
|
IsEnabled bool `json:"is_enabled"`
|
|
Sort int `json:"sort"`
|
|
UserCount int `json:"user_count"` // 关联的管理员账号数(删除前的影响面提示)
|
|
PermCount int `json:"perm_count"` // 已授予的权限点数量
|
|
CreatedAt string `json:"created_at"`
|
|
}
|
|
|
|
// AdminRoleListReq 角色列表请求
|
|
type AdminRoleListReq struct {
|
|
g.Meta `path:"/roles" method:"get" mime:"json" tags:"管理后台-角色" summary:"角色列表"`
|
|
}
|
|
|
|
// AdminRoleListRes 角色列表响应(角色数量少,不分页)
|
|
type AdminRoleListRes struct {
|
|
List []AdminRoleItem `json:"list"`
|
|
}
|
|
|
|
// AdminRoleModuleTier 角色在某个模块上的档位选择
|
|
type AdminRoleModuleTier struct {
|
|
Module string `json:"module"` // 模块名,如 tenant
|
|
Tier string `json:"tier"` // none / read / operate / full;空串表示不匹配任何档位(自定义)
|
|
}
|
|
|
|
// AdminRoleDetailReq 角色详情请求
|
|
type AdminRoleDetailReq struct {
|
|
g.Meta `path:"/roles/{id}" method:"get" mime:"json" tags:"管理后台-角色" summary:"角色详情"`
|
|
ID int64 `json:"id" in:"path" v:"required" dc:"角色ID"`
|
|
}
|
|
|
|
// AdminRoleDetailRes 角色详情响应
|
|
//
|
|
// 同时给出权限点全集与档位视图:界面默认按档位渲染(19 行单选),
|
|
// 高级模式切到权限点级勾选。二者是同一份数据的两个视图。
|
|
type AdminRoleDetailRes struct {
|
|
ID int64 `json:"id"`
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
IsBuiltin bool `json:"is_builtin"`
|
|
IsEnabled bool `json:"is_enabled"`
|
|
Sort int `json:"sort"`
|
|
UserCount int `json:"user_count"`
|
|
Permissions []string `json:"permissions"` // 权限点全集
|
|
ModuleTiers []AdminRoleModuleTier `json:"module_tiers"` // 按模块归纳的档位视图
|
|
CreatedAt string `json:"created_at"`
|
|
}
|
|
|
|
// AdminRoleCreateReq 新建角色请求
|
|
type AdminRoleCreateReq struct {
|
|
g.Meta `path:"/roles" method:"post" mime:"json" tags:"管理后台-角色" summary:"新建角色"`
|
|
Code string `json:"code" v:"required#请输入角色标识" dc:"角色标识(小写字母开头,可含数字与下划线,创建后不可修改)"`
|
|
Name string `json:"name" v:"required#请输入角色名称" dc:"角色显示名称"`
|
|
Description string `json:"description" dc:"角色说明"`
|
|
Sort int `json:"sort" dc:"排序权重"`
|
|
Permissions []string `json:"permissions" dc:"权限点列表(与 copy_from_role_id 二选一,同时给出时以本字段为准)"`
|
|
CopyFromRoleID int64 `json:"copy_from_role_id" dc:"从现有角色复制权限(建「实习运营」就是复制「运营」再收掉几个模块)"`
|
|
}
|
|
|
|
// AdminRoleCreateRes 新建角色响应
|
|
type AdminRoleCreateRes struct {
|
|
ID int64 `json:"id"`
|
|
}
|
|
|
|
// AdminRoleUpdateReq 更新角色请求(code 不可修改)
|
|
type AdminRoleUpdateReq struct {
|
|
g.Meta `path:"/roles/{id}" method:"put" mime:"json" tags:"管理后台-角色" summary:"更新角色"`
|
|
ID int64 `json:"id" in:"path" v:"required" dc:"角色ID"`
|
|
Name *string `json:"name" dc:"角色显示名称"`
|
|
Description *string `json:"description" dc:"角色说明"`
|
|
Sort *int `json:"sort" dc:"排序权重"`
|
|
Permissions *[]string `json:"permissions" dc:"权限点列表(全量覆盖,传 null 表示不改动权限)"`
|
|
}
|
|
|
|
// AdminRoleUpdateRes 更新角色响应
|
|
type AdminRoleUpdateRes struct{}
|
|
|
|
// AdminRoleDeleteReq 删除角色请求
|
|
type AdminRoleDeleteReq struct {
|
|
g.Meta `path:"/roles/{id}" method:"delete" mime:"json" tags:"管理后台-角色" summary:"删除角色"`
|
|
ID int64 `json:"id" in:"path" v:"required" dc:"角色ID"`
|
|
}
|
|
|
|
// AdminRoleDeleteRes 删除角色响应
|
|
//
|
|
// 预置角色同样可删 —— is_builtin 只标识来源,不构成删除保护。
|
|
// 不存在把自己锁死的风险:超级管理员由 sys_admin_users.role 判定,不依赖任何角色记录。
|
|
type AdminRoleDeleteRes struct {
|
|
AffectedUsers int `json:"affected_users"` // 因此次删除而失去该角色权限的账号数
|
|
}
|
|
|
|
// AdminRoleStatusUpdateReq 启用/禁用角色请求
|
|
type AdminRoleStatusUpdateReq struct {
|
|
g.Meta `path:"/roles/{id}/status" method:"put" mime:"json" tags:"管理后台-角色" summary:"启用/禁用角色"`
|
|
ID int64 `json:"id" in:"path" v:"required" dc:"角色ID"`
|
|
IsEnabled bool `json:"is_enabled" dc:"是否启用:禁用后该角色权限对全部关联用户立即失效"`
|
|
}
|
|
|
|
// AdminRoleStatusUpdateRes 启用/禁用角色响应
|
|
type AdminRoleStatusUpdateRes struct{}
|
|
|
|
// AdminRoleResetReq 恢复预置角色的默认权限请求
|
|
type AdminRoleResetReq struct {
|
|
g.Meta `path:"/roles/{id}/reset" method:"post" mime:"json" tags:"管理后台-角色" summary:"恢复预置角色默认权限"`
|
|
ID int64 `json:"id" in:"path" v:"required" dc:"角色ID"`
|
|
}
|
|
|
|
// AdminRoleResetRes 恢复默认权限响应
|
|
type AdminRoleResetRes struct {
|
|
Permissions []string `json:"permissions"`
|
|
}
|
|
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
// 用户角色分配
|
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
// AdminUserRoleListReq 查询管理员已分配角色
|
|
type AdminUserRoleListReq struct {
|
|
g.Meta `path:"/users/{id}/roles" method:"get" mime:"json" tags:"管理后台-角色" summary:"查询用户角色"`
|
|
Id int64 `json:"id" in:"path" v:"required" dc:"管理员用户ID"`
|
|
}
|
|
|
|
// AdminUserRoleListRes 用户角色列表响应
|
|
type AdminUserRoleListRes struct {
|
|
List []AdminRoleBrief `json:"list"`
|
|
}
|
|
|
|
// AdminUserRoleAssignReq 分配管理员角色请求(全量覆盖)
|
|
type AdminUserRoleAssignReq struct {
|
|
g.Meta `path:"/users/{id}/roles" method:"put" mime:"json" tags:"管理后台-角色" summary:"分配用户角色"`
|
|
Id int64 `json:"id" in:"path" v:"required" dc:"管理员用户ID"`
|
|
RoleIDs []int64 `json:"role_ids" dc:"角色ID列表(全量覆盖;传空数组表示不分配任何角色,该账号将只剩自助接口权限)"`
|
|
}
|
|
|
|
// AdminUserRoleAssignRes 分配用户角色响应
|
|
type AdminUserRoleAssignRes struct{}
|