package models import ( "fmt" "github.com/shopspring/decimal" "gorm.io/gorm" "silkserver/pkg/mysqlx" ) // RawSilkPriceStandard 生丝定价管理 type ( RawSilkPriceStandard struct { gorm.Model MarketId uint `json:"marketId" gorm:"type:int(11);comment:庄口id"` MarketNumber string `json:"marketNumber" gorm:"type:varchar(255);comment:庄口编码"` MarketName string `json:"marketName" gorm:"type:varchar(255);comment:庄口名称"` RawSilkGrade string `json:"rawSilkGrade" gorm:"type:varchar(255);comment:生丝等级"` PayStandard decimal.Decimal `json:"payStandard" gorm:"type:decimal(20,3);comment:薪酬标准"` Unit string `json:"unit" gorm:"type:varchar(100);comment:单位"` Notes string `json:"notes" gorm:"type:varchar(255);comment:备注"` } RawSilkPriceStandardSearch struct { RawSilkPriceStandard Order string PageNum int PageSize int MarketNames []string Orm *gorm.DB } ) func (slf RawSilkPriceStandard) TableName() string { return "silk_raw_silk_price_standard" } func NewRawSilkPriceStandardSearch() *RawSilkPriceStandardSearch { return &RawSilkPriceStandardSearch{Orm: mysqlx.GetDB()} } func (slf *RawSilkPriceStandardSearch) SetOrm(tx *gorm.DB) *RawSilkPriceStandardSearch { slf.Orm = tx return slf } func (slf *RawSilkPriceStandardSearch) SetPage(page, size int) *RawSilkPriceStandardSearch { slf.PageNum, slf.PageSize = page, size return slf } func (slf *RawSilkPriceStandardSearch) SetOrder(order string) *RawSilkPriceStandardSearch { slf.Order = order return slf } func (slf *RawSilkPriceStandardSearch) SetId(id int) *RawSilkPriceStandardSearch { slf.ID = uint(id) return slf } func (slf *RawSilkPriceStandardSearch) SetMarketNumber(marketNumber string) *RawSilkPriceStandardSearch { slf.MarketNumber = marketNumber return slf } func (slf *RawSilkPriceStandardSearch) SetMarketNames(names []string) *RawSilkPriceStandardSearch { slf.MarketNames = names return slf } func (slf *RawSilkPriceStandardSearch) build() *gorm.DB { db := slf.Orm.Table(slf.TableName()) if slf.ID > 0 { db = db.Where("id = ?", slf.ID) } if len(slf.MarketNumber) > 0 { db = db.Where("market_number = ", slf.MarketNumber) } if len(slf.MarketNames) > 0 { db = db.Where("market_name in (?)", slf.MarketNames) } return db } // Create 单条插入 func (slf *RawSilkPriceStandardSearch) Create(record *RawSilkPriceStandard) error { db := slf.build() err := db.Create(record).Error if err != nil { return fmt.Errorf("create err: %v, record: %+v", err, record) } return nil } func (slf *RawSilkPriceStandardSearch) Find() ([]*RawSilkPriceStandard, int64, error) { var ( records = make([]*RawSilkPriceStandard, 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.Order("updated_at desc").Find(&records).Error; err != nil { return records, total, fmt.Errorf("find records err: %v", err) } return records, total, nil } func (slf *RawSilkPriceStandardSearch) FindNotTotal() ([]*RawSilkPriceStandard, error) { var ( records = make([]*RawSilkPriceStandard, 0) db = slf.build() ) if slf.PageNum*slf.PageSize > 0 { db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) } if err := db.Order("updated_at desc").Find(&records).Error; err != nil { return records, fmt.Errorf("find records err: %v", err) } return records, nil } func (slf *RawSilkPriceStandardSearch) Save(record *RawSilkPriceStandard) 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 *RawSilkPriceStandardSearch) Delete() error { var db = slf.build() if err := db.Unscoped().Delete(&RawSilkPriceStandard{}).Error; err != nil { return err } return nil }