88 lines
2.6 KiB
Go
88 lines
2.6 KiB
Go
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
|
||
}
|
||
|