feat: product number

This commit is contained in:
zzw
2026-08-25 18:11:28 +08:00
parent 13ea690874
commit 0ca3f6d84f
13 changed files with 481 additions and 52 deletions
@@ -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
}