wangpengfei
2023-08-18 f264456b1e4fd284f53ecc4c70a3b951578bfd2d
model/product.go
@@ -1,21 +1,122 @@
package model
import (
   "aps_crm/pkg/mysqlx"
   "github.com/shopspring/decimal"
   "gorm.io/gorm"
)
type Product struct {
   Id         uint            `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
   Name       string          `json:"name" gorm:"column:name;type:varchar(255);comment:产品名称"`
   Price      decimal.Decimal `json:"price" gorm:"column:price;type:decimal(10,2);comment:产品价格"`
   Number     string          `json:"number" gorm:"column:number;type:varchar(255);comment:产品编号"`
   Amount     decimal.Decimal `json:"amount" gorm:"column:amount;type:int;comment:产品数量"`
   Total      decimal.Decimal `json:"total" gorm:"column:total;type:decimal(10,2);comment:产品总价"`
   Desc       string          `json:"desc" gorm:"column:desc;type:varchar(255);comment:产品描述"`
   gorm.Model `json:"-"`
}
type (
   Product struct {
      Id         uint            `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
      Name       string          `json:"name" gorm:"column:name;type:varchar(255);comment:产品名称"`
      Price      decimal.Decimal `json:"price" gorm:"column:price;type:decimal(10,2);comment:产品价格"`
      Number     string          `json:"number" gorm:"column:number;type:varchar(255);comment:产品编号"`
      Amount     decimal.Decimal `json:"amount" gorm:"column:amount;type:int;comment:产品数量"`
      Total      decimal.Decimal `json:"total" gorm:"column:total;type:decimal(10,2);comment:产品总价"`
      Desc       string          `json:"desc" gorm:"column:desc;type:varchar(255);comment:产品描述"`
      gorm.Model `json:"-"`
   }
   ProductSearch struct {
      Product
      Ids []uint
      Orm *gorm.DB
   }
)
func (Product) TableName() string {
   return "products"
}
func NewProductSearch(db *gorm.DB) *ProductSearch {
   if db == nil {
      db = mysqlx.GetDB()
   }
   return &ProductSearch{
      Orm: db,
   }
}
func (slf *ProductSearch) build() *gorm.DB {
   var db = slf.Orm.Model(&Product{})
   if slf.Id != 0 {
      db = db.Where("id = ?", slf.Id)
   }
   if slf.Name != "" {
      db = db.Where("name = ?", slf.Name)
   }
   return db
}
// Create 创建
func (slf *ProductSearch) Create(record *Product) error {
   var db = slf.build()
   return db.Create(record).Error
}
func (slf *ProductSearch) CreateBatch(records []*Product) error {
   var db = slf.build()
   return db.Create(records).Error
}
func (slf *ProductSearch) Delete() error {
   var db = slf.build()
   return db.Delete(&Product{}).Error
}
func (slf *ProductSearch) Update(record *Product) error {
   var db = slf.build()
   return db.Updates(record).Error
}
func (slf *ProductSearch) GetListByIds(ids []int) (result []Product, err error) {
   var db = slf.build()
   err = db.Where("id in (?)", ids).Find(&result).Error
   return
}
func (slf *ProductSearch) Find() (result []Product, err error) {
   var db = slf.build()
   err = db.Preload("country").Find(&result).Error
   return
}
func (slf *ProductSearch) SetId(id uint) *ProductSearch {
   slf.Id = id
   return slf
}
func (slf *ProductSearch) SetIds(ids []uint) *ProductSearch {
   slf.Ids = ids
   return slf
}
func (slf *ProductSearch) SetName(name string) *ProductSearch {
   slf.Name = name
   return slf
}
func (slf *ProductSearch) UpdateList(m map[string]interface{}, ids []int) error {
   var db = slf.build()
   return db.Where("id in (?)", ids).Updates(m).Error
}
func (slf *ProductSearch) First() (result Product, err error) {
   var db = slf.build()
   err = db.First(&result).Error
   return
}
func (slf *ProductSearch) FindAll() (result []*Product, err error) {
   var db = slf.build()
   err = db.Find(&result).Error
   return
}
func (slf *ProductSearch) Updates(m map[string]interface{}) error {
   var db = slf.build()
   return db.Updates(m).Error
}