package models import ( "time" "github.com/beego/beego/v2/client/orm" ) // Position 职位模型 type Position 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"` DepartmentId int `orm:"column(department_id);null" json:"department_id"` Level int `orm:"default(0)" json:"level"` Description string `orm:"type(text);null" json:"description"` 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 (p *Position) TableName() string { return "yz_tenant_positions" } func init() { orm.RegisterModel(new(Position)) } // GetTenantPositions 获取租户下的所有职位 func GetTenantPositions(tenantId int) ([]*Position, error) { o := orm.NewOrm() var positions []*Position _, err := o.QueryTable("yz_tenant_positions"). Filter("tenant_id", tenantId). Filter("delete_time__isnull", true). OrderBy("sort_order", "create_time"). All(&positions) return positions, err } // GetPositionsByDepartment 根据部门ID获取职位列表 func GetPositionsByDepartment(departmentId int) ([]*Position, error) { o := orm.NewOrm() var positions []*Position _, err := o.QueryTable("yz_tenant_positions"). Filter("department_id", departmentId). Filter("delete_time__isnull", true). Filter("status", 1). OrderBy("sort_order", "create_time"). All(&positions) return positions, err } // GetPositionById 根据ID获取职位信息 func GetPositionById(id int) (*Position, error) { o := orm.NewOrm() position := &Position{Id: id} err := o.Read(position) if err != nil { return nil, err } // 检查是否已删除 if position.DeleteTime != nil { return nil, orm.ErrNoRows } return position, err } // AddPosition 添加职位 func AddPosition(position *Position) (int64, error) { o := orm.NewOrm() id, err := o.Insert(position) return id, err } // UpdatePosition 更新职位信息 func UpdatePosition(position *Position) error { o := orm.NewOrm() _, err := o.Update(position, "name", "code", "department_id", "level", "description", "sort_order", "status", "update_time") return err } // DeletePosition 软删除职位 func DeletePosition(id int) error { o := orm.NewOrm() position := &Position{Id: id} if err := o.Read(position); err != nil { return err } now := time.Now() position.DeleteTime = &now _, err := o.Update(position, "delete_time") return err }