package models

import coreTypes "git.apinb.com/bsm-sdk/core/types"

// 部门模型（应用->部门->权限：每个应用拥有不同的部门）
type MgtDepartment struct {
	coreTypes.Std_IICUDS                  // 标准字段
	AppID                uint             `gorm:"column:app_id;default:0" json:"app_id,omitempty"`       // 所属应用ID
	Name                 string           `gorm:"column:name;" json:"name,omitempty"`                    // 部门名称
	ParentID             uint             `gorm:"column:parent_id;default:0" json:"parent_id,omitempty"` // 父部门ID
	LeaderID             uint             `gorm:"column:leader_id;" json:"leader_id,omitempty"`          // 部门负责人ID
	Leader               MgtUser          `gorm:"foreignKey:LeaderID;references:ID" json:"leader"`       // 部门负责人
	Users                []MgtUser        `gorm:"many2many:mgt_link_user_dpt;foreignKey:ID;joinForeignKey:dpt_id;References:ID;joinReferences:user_id" json:"users,omitempty"`
	Roles                []MgtRole        `gorm:"many2many:mgt_link_dpt_role;foreignKey:ID;joinForeignKey:dpt_id;References:ID;joinReferences:role_id" json:"roles,omitempty"`         // 部门关联的角色（部门替代用户组）
	Permissions          []MgtPermission  `gorm:"many2many:mgt_link_dpt_pmn;foreignKey:ID;joinForeignKey:dpt_id;References:ID;joinReferences:pmn_id" json:"permissions,omitempty"`     // 部门关联的权限
	PmnApplication       []MgtApplication `gorm:"many2many:mgt_link_dpt_pmn;foreignKey:ID;joinForeignKey:dpt_id;References:ID;joinReferences:app_id" json:"pmn_application,omitempty"` // 部门权限按应用聚合（树形用）
	Children             []MgtDepartment  `gorm:"foreignKey:ParentID;references:ID" json:"children,omitempty"`                                                                         // 子部门
}

// func init() {
// 	database.AppendMigrate(&Department{})
// }
