package model import ( "lone-services/pkg/modelbase" "lone-services/services/product/internal/dao" "gorm.io/gorm" ) type ProductModel struct { modelbase.Base } func (m ProductModel) TableName() string { return modelbase.Prefix() + "product" } func (m ProductModel) Init() ProductModel { m.Table = m.TableName() return m } func (m ProductModel) WithTX(tx *gorm.DB) ProductModel { m.Base = m.Base.WithTX(tx) return m } func (m ProductModel) Create(data *dao.Create) error { return m.Base.Create(data) } func (m ProductModel) IncrNumber(id int64, n uint32) (int64, error) { ret := m.Session(). Where("id = ?", id). Update("number", gorm.Expr("number + ?", n)) return ret.RowsAffected, ret.Error } func (m ProductModel) DecrNumber(id int64, n uint32) (int64, error) { ret := m.Session(). Where("id = ? AND number >= ?", id, n). Update("number", gorm.Expr("number - ?", n)) return ret.RowsAffected, ret.Error }