yunzer_go/server/models/position.go

101 lines
2.9 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}