package models import ( "fmt" "gorm.io/gorm" "silkserver/pkg/mysqlx" ) type ( //SalaryPlan 薪资方案 SalaryPlan struct { gorm.Model Name string `json:"name" gorm:"type:varchar(255);comment:薪资方案名称"` SalaryTypeId uint `json:"salaryTypeId" gorm:"type:int(11);comment:薪资类型id"` SalaryType MiniDict `json:"salaryType" gorm:"foreignKey:SalaryTypeId;references:ID"` //SalaryType string `json:"salaryType" gorm:"type:varchar(255);comment:薪资类型"` SalaryFormula string `json:"salaryFormula" gorm:"type:varchar(255);comment:薪资公式"` Cycle string `json:"cycle" gorm:"type:varchar(255);comment:周期"` CreateTime string `json:"createTime" gorm:"type:varchar(255);comment:添加时间"` AddPeople string `gorm:"type:varchar(255);comment:添加人" json:"addPeople"` WorkTypes []*WorkTypeManage `gorm:"many2many:silk_salaryPlan_workType" json:"workTypes"` } SalaryPlanSearch struct { SalaryPlan PageNum int PageSize int Preload bool Orm *gorm.DB } ) func (slf SalaryPlan) TableName() string { return "silk_salary_plan" } func NewSalaryPlanSearch() *SalaryPlanSearch { return &SalaryPlanSearch{Orm: mysqlx.GetDB()} } func (slf *SalaryPlanSearch) SetOrm(tx *gorm.DB) *SalaryPlanSearch { slf.Orm = tx return slf } func (slf *SalaryPlanSearch) SetPage(page, size int) *SalaryPlanSearch { slf.PageNum, slf.PageSize = page, size return slf } func (slf *SalaryPlanSearch) SetPreload(preload bool) *SalaryPlanSearch { slf.Preload = preload return slf } func (slf *SalaryPlanSearch) SetId(id int) *SalaryPlanSearch { slf.ID = uint(id) return slf } func (slf *SalaryPlanSearch) build() *gorm.DB { var db = slf.Orm.Table(slf.TableName()) if slf.ID > 0 { db = db.Where("id = ?", slf.ID) } if slf.Preload { db = db.Model(&SalaryPlan{}).Preload("WorkTypes").Preload("SalaryType") } return db } // Create 单条插入 func (slf *SalaryPlanSearch) Create(record *SalaryPlan) error { var db = slf.build() if err := db.Create(record).Error; err != nil { return fmt.Errorf("create err: %v, record: %+v", err, record) } return nil } func (slf *SalaryPlanSearch) Save(record *SalaryPlan) error { var db = slf.build() if err := db.Omit("CreatedAt").Save(record).Error; err != nil { return fmt.Errorf("save err: %v, record: %+v", err, record) } return nil } func (slf *SalaryPlanSearch) UpdateByMap(upMap map[string]interface{}) error { var ( db = slf.build() ) if err := db.Updates(upMap).Error; err != nil { return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap) } return nil } func (slf *SalaryPlanSearch) Delete() error { var db = slf.build() if err := db.Unscoped().Delete(&SalaryPlan{}).Error; err != nil { return err } return nil } func (slf *SalaryPlanSearch) Find() ([]*SalaryPlan, int64, error) { var ( records = make([]*SalaryPlan, 0) total int64 db = slf.build() ) if err := db.Count(&total).Error; err != nil { return records, total, fmt.Errorf("find count err: %v", err) } if slf.PageNum*slf.PageSize > 0 { db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) } if err := db.Find(&records).Error; err != nil { return records, total, fmt.Errorf("find records err: %v", err) } return records, total, nil } func (slf *SalaryPlanSearch) FindNotTotal() ([]*SalaryPlan, error) { var ( records = make([]*SalaryPlan, 0) db = slf.build() ) if err := db.Find(&records).Error; err != nil { return records, fmt.Errorf("find records err: %v", err) } return records, nil } func (slf *SalaryPlanSearch) Count() (int64, error) { var ( total int64 db = slf.build() ) if err := db.Count(&total).Error; err != nil { return total, fmt.Errorf("find count err: %v", err) } return total, nil }