101 lines
2.9 KiB
Go
101 lines
2.9 KiB
Go
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
|
||
}
|
||
|