Files
silk/server-go/internal/model/permission.go
T

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