Files
EchoChat/backend/go-service/app/auth/model/role.go
bujinyuan fa6f1e5c58 feat: 角色等级体系与权限管控实施
- 数据库:auth_roles 表新增 level 字段(1=超管, 10=管理员, 100=普通用户)
- 后端:新增 GetAllRoles/GetUserMaxLevel/SetUserRoles/FindByCodeList DAO 方法
- 后端:SetRolesRequest 替换 AssignRoleRequest,AdminUserInfo.Roles 改为 []RoleInfo
- 后端:所有管理操作(禁用/启用/角色分配/创建用户)强制层级权限校验
- 后端:PUT /users/:id/roles(批量设置角色)+ GET /roles(角色列表)
- 前端:角色管理改为 Checkbox Group 多选,高等级角色禁用
- 前端:禁用/启用按钮受角色层级约束,列表页操作按钮权限管控
- 前端:创建用户对话框角色选项根据操作者等级动态过滤
- 文档:API 文档、设计方案、集成规范、进度文档同步更新

Made-with: Cursor
2026-03-02 15:40:02 +08:00

33 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package model
import "time"
// Role 角色表模型,对应 auth_roles 表
// 系统预置三种角色user普通用户、admin管理员、super_admin超级管理员
type Role struct {
ID int `json:"id" gorm:"primaryKey;autoIncrement"` // 角色唯一标识,自增主键
Code string `json:"code" gorm:"uniqueIndex;size:50;not null"` // 角色代码,全局唯一,如 user/admin/super_admin对应 constants.RoleCode*
Name string `json:"name" gorm:"size:50;not null"` // 角色中文显示名称,如「普通用户」「管理员」
Level int `json:"level" gorm:"not null;default:100"` // 角色等级值越小权限越高1=超管, 10=管理员, 100=普通用户
Description string `json:"description" gorm:"size:200;default:''"` // 角色描述说明,用于后台管理界面展示
CreatedAt time.Time `json:"created_at" gorm:"not null;autoCreateTime;type:timestamp(0)"` // 创建时间,由 GORM 自动填充,精确到秒
}
// TableName 指定数据库表名
func (Role) TableName() string {
return "auth_roles"
}
// UserRole 用户角色关联表模型,对应 auth_user_roles 表
// 采用联合主键user_id + role_id一个用户可拥有多个角色
type UserRole struct {
UserID int64 `json:"user_id" gorm:"primaryKey"` // 关联的用户 ID外键指向 auth_users.id
RoleID int `json:"role_id" gorm:"primaryKey"` // 关联的角色 ID外键指向 auth_roles.id
CreatedAt time.Time `json:"created_at" gorm:"not null;autoCreateTime;type:timestamp(0)"` // 角色分配时间,由 GORM 自动填充,精确到秒
}
// TableName 指定数据库表名
func (UserRole) TableName() string {
return "auth_user_roles"
}