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