package models import ( "time" "github.com/beego/beego/v2/client/orm" ) // Department 部门模型 type Department struct { Id int `orm:"auto" json:"id"` TenantId int `orm:"column(tenant_id);default(0)" json:"tenant_id"` Name string `orm:"size(100)" json:"name"` Code string `orm:"size(50);null" json:"code"` ParentId int `orm:"column(parent_id);default(0)" json:"parent_id"` Description string `orm:"type(text);null" json:"description"` ManagerId int `orm:"column(manager_id);null" json:"manager_id"` SortOrder int `orm:"column(sort_order);default(0)" json:"sort_order"` Status int8 `orm:"default(1)" json:"status"` // 1-启用,0-禁用 CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"` UpdateTime time.Time `orm:"column(update_time);type(datetime);auto_now" json:"update_time"` DeleteTime *time.Time `orm:"column(delete_time);null;type(datetime)" json:"delete_time,omitempty"` } // TableName 设置表名 func (d *Department) TableName() string { return "yz_tenant_departments" } func init() { orm.RegisterModel(new(Department)) } // GetTenantDepartments 获取租户下的所有部门 func GetTenantDepartments(tenantId int) ([]*Department, error) { o := orm.NewOrm() var departments []*Department _, err := o.QueryTable("yz_tenant_departments"). Filter("tenant_id", tenantId). Filter("delete_time__isnull", true). OrderBy("sort_order", "create_time"). All(&departments) return departments, err } // GetDepartmentById 根据ID获取部门信息 func GetDepartmentById(id int) (*Department, error) { o := orm.NewOrm() department := &Department{Id: id} err := o.Read(department) if err != nil { return nil, err } // 检查是否已删除 if department.DeleteTime != nil { return nil, orm.ErrNoRows } return department, nil } // AddDepartment 添加部门 func AddDepartment(department *Department) (int64, error) { o := orm.NewOrm() id, err := o.Insert(department) return id, err } // UpdateDepartment 更新部门信息 func UpdateDepartment(department *Department) error { o := orm.NewOrm() _, err := o.Update(department, "name", "code", "parent_id", "description", "manager_id", "sort_order", "status", "update_time") return err } // DeleteDepartment 软删除部门 func DeleteDepartment(id int) error { o := orm.NewOrm() department := &Department{Id: id} if err := o.Read(department); err != nil { return err } now := time.Now() department.DeleteTime = &now _, err := o.Update(department, "delete_time") return err }