package entities import ( "time" "github.com/google/uuid" "gorm.io/gorm" ) // LinkStatus 主从关系状态 type LinkStatus string const ( LinkStatusActive LinkStatus = "active" LinkStatusRevoked LinkStatus = "revoked" ) // UserSubordinateLink 主账号与下属关系 type UserSubordinateLink struct { ID string `gorm:"primaryKey;type:varchar(36)" json:"id" comment:"唯一标识"` ParentUserID string `gorm:"type:varchar(36);not null;index:idx_parent,priority:1" json:"parent_user_id" comment:"主账号用户ID"` ChildUserID string `gorm:"type:varchar(36);not null;uniqueIndex" json:"child_user_id" comment:"子账号用户ID(唯一)"` InvitationID *string `gorm:"type:varchar(36);index" json:"invitation_id,omitempty" comment:"关联的邀请ID"` Status LinkStatus `gorm:"type:varchar(20);not null;default:active" json:"status" comment:"状态"` CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"` UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` } // TableName 表名 func (UserSubordinateLink) TableName() string { return "user_subordinate_links" } // BeforeCreate 生成ID func (l *UserSubordinateLink) BeforeCreate(tx *gorm.DB) error { if l.ID == "" { l.ID = uuid.New().String() } return nil }