|
|
|
@ -9,7 +9,7 @@ package models
|
|
|
|
import (
|
|
|
|
import (
|
|
|
|
"time"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
"github.com/veypi/vigo"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
// 角色代码常量
|
|
|
|
// 角色代码常量
|
|
|
|
@ -22,10 +22,9 @@ const (
|
|
|
|
// Permission 权限定义表(权限字典)
|
|
|
|
// Permission 权限定义表(权限字典)
|
|
|
|
// ID 格式: app:resource:action (例如: crm:customer:read)
|
|
|
|
// ID 格式: app:resource:action (例如: crm:customer:read)
|
|
|
|
type Permission struct {
|
|
|
|
type Permission struct {
|
|
|
|
|
|
|
|
ID string `json:"id" gorm:"primaryKey;size:100" desc:"权限ID,格式: app:resource:action"`
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
|
|
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
|
|
|
|
|
|
|
|
ID string `json:"id" gorm:"primaryKey;size:100" desc:"权限ID,格式: app:resource:action"`
|
|
|
|
|
|
|
|
AppKey string `json:"app_key" gorm:"index;size:50" desc:"应用标识"`
|
|
|
|
AppKey string `json:"app_key" gorm:"index;size:50" desc:"应用标识"`
|
|
|
|
Resource string `json:"resource" gorm:"index;size:50" desc:"资源类型"`
|
|
|
|
Resource string `json:"resource" gorm:"index;size:50" desc:"资源类型"`
|
|
|
|
Action string `json:"action" gorm:"index;size:50" desc:"操作类型"`
|
|
|
|
Action string `json:"action" gorm:"index;size:50" desc:"操作类型"`
|
|
|
|
@ -38,13 +37,16 @@ func (Permission) TableName() string {
|
|
|
|
|
|
|
|
|
|
|
|
// Role 角色表(不关联 app,可跨应用)
|
|
|
|
// Role 角色表(不关联 app,可跨应用)
|
|
|
|
type Role struct {
|
|
|
|
type Role struct {
|
|
|
|
Base
|
|
|
|
vigo.Model
|
|
|
|
OrgID string `json:"org_id" gorm:"index;size:36" desc:"组织ID,空=系统预设"`
|
|
|
|
OrgID string `json:"org_id" gorm:"index;size:36" desc:"组织ID,空=系统预设"`
|
|
|
|
Code string `json:"code" gorm:"index;size:50" desc:"角色代码"`
|
|
|
|
Code string `json:"code" gorm:"index;size:50" desc:"角色代码"`
|
|
|
|
Name string `json:"name" desc:"角色名称"`
|
|
|
|
Name string `json:"name" desc:"角色名称"`
|
|
|
|
Description string `json:"description" desc:"角色描述"`
|
|
|
|
Description string `json:"description" desc:"角色描述"`
|
|
|
|
IsSystem bool `json:"is_system" desc:"是否系统预设角色"`
|
|
|
|
IsSystem bool `json:"is_system" desc:"是否系统预设角色"`
|
|
|
|
Status int `json:"status" gorm:"default:1" desc:"状态: 1=启用, 0=禁用"`
|
|
|
|
Status int `json:"status" gorm:"default:1" desc:"状态: 1=启用, 0=禁用"`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 外键关联
|
|
|
|
|
|
|
|
Org *Org `json:"org,omitempty" gorm:"foreignKey:OrgID;references:ID"`
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (Role) TableName() string {
|
|
|
|
func (Role) TableName() string {
|
|
|
|
@ -53,10 +55,14 @@ func (Role) TableName() string {
|
|
|
|
|
|
|
|
|
|
|
|
// RolePermission 角色权限关联表
|
|
|
|
// RolePermission 角色权限关联表
|
|
|
|
type RolePermission struct {
|
|
|
|
type RolePermission struct {
|
|
|
|
Base
|
|
|
|
vigo.Model
|
|
|
|
RoleID string `json:"role_id" gorm:"index;size:36" desc:"角色ID"`
|
|
|
|
RoleID string `json:"role_id" gorm:"index;size:36" desc:"角色ID"`
|
|
|
|
PermissionID string `json:"permission_id" gorm:"index;size:100" desc:"权限ID"`
|
|
|
|
PermissionID string `json:"permission_id" gorm:"index;size:100" desc:"权限ID"`
|
|
|
|
Condition string `json:"condition" gorm:"size:20;default:'none'" desc:"权限条件: none/owner/admin"`
|
|
|
|
Condition string `json:"condition" gorm:"size:20;default:'none'" desc:"权限条件: none/owner/admin"`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 外键关联
|
|
|
|
|
|
|
|
Role Role `json:"role,omitempty" gorm:"foreignKey:RoleID;references:ID"`
|
|
|
|
|
|
|
|
Permission Permission `json:"permission,omitempty" gorm:"foreignKey:PermissionID;references:ID"`
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (RolePermission) TableName() string {
|
|
|
|
func (RolePermission) TableName() string {
|
|
|
|
@ -65,11 +71,16 @@ func (RolePermission) TableName() string {
|
|
|
|
|
|
|
|
|
|
|
|
// UserRole 用户角色关联表
|
|
|
|
// UserRole 用户角色关联表
|
|
|
|
type UserRole struct {
|
|
|
|
type UserRole struct {
|
|
|
|
Base
|
|
|
|
vigo.Model
|
|
|
|
UserID string `json:"user_id" gorm:"index;size:36" desc:"用户ID"`
|
|
|
|
UserID string `json:"user_id" gorm:"index;size:36" desc:"用户ID"`
|
|
|
|
OrgID string `json:"org_id" gorm:"index;size:36" desc:"组织ID"`
|
|
|
|
OrgID string `json:"org_id" gorm:"index;size:36" desc:"组织ID"`
|
|
|
|
RoleID string `json:"role_id" gorm:"index;size:36" desc:"角色ID"`
|
|
|
|
RoleID string `json:"role_id" gorm:"index;size:36" desc:"角色ID"`
|
|
|
|
ExpireAt *time.Time `json:"expire_at" desc:"过期时间(可选)"`
|
|
|
|
ExpireAt *time.Time `json:"expire_at" desc:"过期时间(可选)"`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 外键关联
|
|
|
|
|
|
|
|
User User `json:"user,omitempty" gorm:"foreignKey:UserID;references:ID"`
|
|
|
|
|
|
|
|
Org *Org `json:"org,omitempty" gorm:"foreignKey:OrgID;references:ID"`
|
|
|
|
|
|
|
|
Role Role `json:"role,omitempty" gorm:"foreignKey:RoleID;references:ID"`
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (UserRole) TableName() string {
|
|
|
|
func (UserRole) TableName() string {
|
|
|
|
@ -78,13 +89,18 @@ func (UserRole) TableName() string {
|
|
|
|
|
|
|
|
|
|
|
|
// UserPermission 用户特定资源权限表(数据级权限)
|
|
|
|
// UserPermission 用户特定资源权限表(数据级权限)
|
|
|
|
type UserPermission struct {
|
|
|
|
type UserPermission struct {
|
|
|
|
Base
|
|
|
|
vigo.Model
|
|
|
|
UserID string `json:"user_id" gorm:"index;size:36" desc:"用户ID"`
|
|
|
|
UserID string `json:"user_id" gorm:"index;size:36" desc:"用户ID"`
|
|
|
|
OrgID string `json:"org_id" gorm:"index;size:36" desc:"组织ID"`
|
|
|
|
OrgID string `json:"org_id" gorm:"index;size:36" desc:"组织ID"`
|
|
|
|
PermissionID string `json:"permission_id" gorm:"index;size:100" desc:"权限ID"`
|
|
|
|
PermissionID string `json:"permission_id" gorm:"index;size:100" desc:"权限ID"`
|
|
|
|
ResourceID string `json:"resource_id" gorm:"index;size:100" desc:"具体资源ID,* 表示所有"`
|
|
|
|
ResourceID string `json:"resource_id" gorm:"index;size:100" desc:"具体资源ID,* 表示所有"`
|
|
|
|
ExpireAt *time.Time `json:"expire_at" desc:"过期时间(可选)"`
|
|
|
|
ExpireAt *time.Time `json:"expire_at" desc:"过期时间(可选)"`
|
|
|
|
GrantedBy string `json:"granted_by" gorm:"size:36" desc:"授权人ID"`
|
|
|
|
GrantedBy string `json:"granted_by" gorm:"size:36" desc:"授权人ID"`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 外键关联
|
|
|
|
|
|
|
|
User User `json:"user,omitempty" gorm:"foreignKey:UserID;references:ID"`
|
|
|
|
|
|
|
|
Org *Org `json:"org,omitempty" gorm:"foreignKey:OrgID;references:ID"`
|
|
|
|
|
|
|
|
Permission Permission `json:"permission,omitempty" gorm:"foreignKey:PermissionID;references:ID"`
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (UserPermission) TableName() string {
|
|
|
|
func (UserPermission) TableName() string {
|
|
|
|
|