Files

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{}