feat: product number
This commit is contained in:
@@ -3,6 +3,8 @@ package model
|
||||
import (
|
||||
"lone-services/pkg/modelbase"
|
||||
"lone-services/services/product/internal/dao"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type ProductModel struct {
|
||||
@@ -21,3 +23,19 @@ func (m ProductModel) Init() ProductModel {
|
||||
func (m ProductModel) Create(data *dao.ProductCreate) error {
|
||||
return m.Base.Create(data)
|
||||
}
|
||||
|
||||
// IncrNumber 原子增加库存
|
||||
func (m ProductModel) IncrNumber(id int64, n uint32) (int64, error) {
|
||||
ret := modelbase.DB().Table(m.TableName()).
|
||||
Where("id = ?", id).
|
||||
Update("number", gorm.Expr("number + ?", n))
|
||||
return ret.RowsAffected, ret.Error
|
||||
}
|
||||
|
||||
// DecrNumber 原子减少库存(库存不足时 RowsAffected=0)
|
||||
func (m ProductModel) DecrNumber(id int64, n uint32) (int64, error) {
|
||||
ret := modelbase.DB().Table(m.TableName()).
|
||||
Where("id = ? AND number >= ?", id, n).
|
||||
Update("number", gorm.Expr("number - ?", n))
|
||||
return ret.RowsAffected, ret.Error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user