package models import ( "fmt" "github.com/shopspring/decimal" "gorm.io/gorm" "silkserver/pkg/mysqlx" ) type ( AttendanceRule struct { gorm.Model WeekdayRule int `json:"weekdayRule" gorm:"type:int(1);default:1;comment:工作日加班规则,1不启用,2启用"` OverTimeStart decimal.Decimal `json:"overTimeStart" gorm:"type:decimal(20,3);comment:工作日加班起算时长"` RestDayRule int `json:"restDayRule" gorm:"type:int(1);default:1;comment:休息日加班规则,1不启用,2启用"` RestDayStart decimal.Decimal `json:"restDayStart" gorm:"type:decimal(20,3);comment:休息日加班起算时长"` } AttendanceRuleSearch struct { AttendanceRule Orm *gorm.DB } ) func (slf AttendanceRule) TableName() string { return "silk_attendance_rule" } func NewAttendanceRuleSearch() *AttendanceRuleSearch { return &AttendanceRuleSearch{Orm: mysqlx.GetDB()} } func (slf *AttendanceRuleSearch) SetOrm(tx *gorm.DB) *AttendanceRuleSearch { slf.Orm = tx return slf } func (slf *AttendanceRuleSearch) build() *gorm.DB { var db = slf.Orm.Table(slf.TableName()) return db } // Create 单条插入 func (slf *AttendanceRuleSearch) Create(record *AttendanceRule) 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 *AttendanceRuleSearch) Save(record *AttendanceRule) 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 *AttendanceRuleSearch) Delete() error { var db = slf.build() if err := db.Unscoped().Delete(&AttendanceRule{}).Error; err != nil { return err } return nil } func (slf *AttendanceRuleSearch) First() (*AttendanceRule, error) { var ( record = new(AttendanceRule) db = slf.build() ) if err := db.First(record).Error; err != nil { return record, err } return record, nil } // InitDefaultData 初始化数据 func (slf *AttendanceRuleSearch) InitDefaultData() error { var ( rule AttendanceRule total int64 ) db := slf.Orm.Table(slf.TableName()) err := db.Count(&total).Error if err != nil { return err } if total > 0 { return nil } rule.WeekdayRule = 1 rule.RestDayRule = 1 err = db.Create(&rule).Error return err }