44 lines
1.5 KiB
Go
44 lines
1.5 KiB
Go
package model
|
|
|
|
import "time"
|
|
|
|
// 角色常量
|
|
const (
|
|
RoleAdmin = "admin"
|
|
RoleOperator = "operator"
|
|
RoleViewer = "viewer"
|
|
RoleFarmer = "farmer"
|
|
)
|
|
|
|
// AllRoles 系统支持的全部角色
|
|
var AllRoles = []string{RoleAdmin, RoleOperator, RoleViewer, RoleFarmer}
|
|
|
|
// RoleNames 角色中文名映射
|
|
var RoleNames = map[string]string{
|
|
RoleAdmin: "管理员",
|
|
RoleOperator: "操作员",
|
|
RoleViewer: "查看者",
|
|
RoleFarmer: "养殖员",
|
|
}
|
|
|
|
// Permission 权限表
|
|
type Permission struct {
|
|
ID string `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id"`
|
|
Code string `gorm:"column:code;uniqueIndex" json:"code"` // 权限码,如 device:control
|
|
Name string `gorm:"column:name" json:"name"` // 权限名称
|
|
Description *string `gorm:"column:description" json:"description,omitempty"`
|
|
CreatedAt time.Time `gorm:"type:timestamptz" json:"createdAt"`
|
|
}
|
|
|
|
func (Permission) TableName() string { return "permissions" }
|
|
|
|
// RolePermission 角色-权限关联表
|
|
type RolePermission struct {
|
|
ID string `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id"`
|
|
Role string `gorm:"column:role;index:idx_role_permissions_role_code,unique,priority:1" json:"role"`
|
|
PermissionID string `gorm:"column:permission_id;type:uuid;index:idx_role_permissions_role_code,unique,priority:2" json:"permissionId"`
|
|
CreatedAt time.Time `gorm:"type:timestamptz" json:"createdAt"`
|
|
}
|
|
|
|
func (RolePermission) TableName() string { return "role_permissions" }
|