package model

import (
	"time"
	"ulink-admin/pkg/base"
)

// SysDept 部门结构体
type SysDept struct {
	Id         int64     `xorm:"pk autoincr comment('主键')" json:"id"`
	Ancestors  string    `xorm:"varchar(50) comment('祖级列表')" json:"ancestors"`
	DeptName   string    `xorm:"varchar(128) comment('部门名称')" json:"name" binding:"required"`
	OrderNum   int       `xorm:"int(10) comment('显示顺序')" json:"orderNum" binding:"gte=0"`
	Leader     int64     `xorm:"varchar(20) comment('负责人')" json:"leader" `
	ParentId   int64     `xorm:"bigint(20) comment('上级部门id')" json:"parentId" binding:"gte=0"`
	Phone      string    `xorm:"varchar(11) comment('联系电话')" json:"phone"`
	Status     int       `xorm:"int(1) comment('部门状态(0正常 1停用)')" json:"status"`
	Email      string    `xorm:"varchar(50) comment('电子邮件')"  json:"email"`
	DelFlag    string    `xorm:"char(1) default('0') comment('删除标志(0代表存在 2代表删除)')" json:"delFlag"`
	CreateTime time.Time `xorm:"created comment('创建时间')" json:"createTime"`       //创建时间
	CreateBy   string    `json:"createBy comment('创建人')"`                         //创建人
	UpdateTime time.Time `json:"updateTime comment('更新时间')"`                      //更新时间
	UpdateBy   string    `json:"updateBy comment('更新人')"`                         //更新人
	CompanyId  int64     `excel:"name=公司Id" xorm:"bigint(20)" json:"companyId"  ` //公司Id
}

func (d SysDept) GetLabel() string {
	return d.DeptName
}

func (d SysDept) GetId() int64 {
	return d.Id
}

func (d SysDept) GetParentId() int64 {
	return d.ParentId
}

func (d SysDept) GetData() interface{} {
	return d
}

func (d SysDept) IsRoot() bool {
	return d.ParentId == 0 || d.ParentId == d.Id
}

func (SysDept) TableName() string {
	return "sys_dept"
}

func (r *SysDept) BeforeUpdate() {
	user := base.GetCurUser()
	if user != nil {
		r.UpdateBy = user.Name
	}
	if user.ComponyId > 0 {
		r.CompanyId = user.ComponyId
	}
}
func (r *SysDept) BeforeInsert() {
	user := base.GetCurUser()
	if user != nil {
		r.CreateBy = user.Name
		r.UpdateBy = user.Name
	}
	if user.ComponyId > 0 {
		r.CompanyId = user.ComponyId
	}
}