mirror of https://github.com/veypi/OneAuth.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.8 KiB
Go
62 lines
1.8 KiB
Go
|
2 weeks ago
|
package model
|
||
|
|
|
||
|
|
// Org 组织/租户
|
||
|
|
type Org struct {
|
||
|
|
Base
|
||
|
|
Name string `json:"name" gorm:"size:50;not null"`
|
||
|
|
Code string `json:"code" gorm:"uniqueIndex;size:30;not null"`
|
||
|
|
OwnerID string `json:"owner_id" gorm:"not null"`
|
||
|
|
ParentID *string `json:"parent_id" gorm:"index"`
|
||
|
|
Path string `json:"path" gorm:"size:500;index"`
|
||
|
|
Level int `json:"level" gorm:"default:0"`
|
||
|
|
LeaderID *string `json:"leader_id"`
|
||
|
|
Description string `json:"description" gorm:"size:200"`
|
||
|
|
Logo string `json:"logo" gorm:"size:500"`
|
||
|
|
Settings string `json:"-" gorm:"type:text"` // JSON配置
|
||
|
|
Status int `json:"status" gorm:"default:1"`
|
||
|
|
MaxMembers int `json:"max_members" gorm:"default:100"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func (Org) TableName() string {
|
||
|
|
return "orgs"
|
||
|
|
}
|
||
|
|
|
||
|
|
// OrgMember 组织成员关系
|
||
|
|
type OrgMember struct {
|
||
|
|
Base
|
||
|
|
OrgID string `json:"org_id" gorm:"type:varchar(36);uniqueIndex:idx_org_user;not null"`
|
||
|
|
UserID string `json:"user_id" gorm:"type:varchar(36);uniqueIndex:idx_org_user;not null"`
|
||
|
|
RoleIDs string `json:"role_ids" gorm:"size:200"` // 逗号分隔
|
||
|
|
Position string `json:"position" gorm:"size:50"`
|
||
|
|
Department string `json:"department" gorm:"size:50"`
|
||
|
|
JoinedAt string `json:"joined_at"`
|
||
|
|
Status int `json:"status" gorm:"default:1"` // 0:待审核 1:正常 2:禁用
|
||
|
|
}
|
||
|
|
|
||
|
|
func (OrgMember) TableName() string {
|
||
|
|
return "org_members"
|
||
|
|
}
|
||
|
|
|
||
|
|
// OrgStatus 组织状态
|
||
|
|
const (
|
||
|
|
OrgStatusDisabled = 0
|
||
|
|
OrgStatusActive = 1
|
||
|
|
)
|
||
|
|
|
||
|
|
// MemberStatus 成员状态
|
||
|
|
const (
|
||
|
|
MemberStatusPending = 0
|
||
|
|
MemberStatusActive = 1
|
||
|
|
MemberStatusDisabled = 2
|
||
|
|
)
|
||
|
|
|
||
|
|
// IsOwner 检查用户是否是组织所有者
|
||
|
|
func (o *Org) IsOwner(userID string) bool {
|
||
|
|
return o.OwnerID == userID
|
||
|
|
}
|
||
|
|
|
||
|
|
// IsMemberActive 成员是否有效
|
||
|
|
func (m *OrgMember) IsMemberActive() bool {
|
||
|
|
return m.Status == MemberStatusActive
|
||
|
|
}
|