From f264456b1e4fd284f53ecc4c70a3b951578bfd2d Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期五, 18 八月 2023 17:13:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 model/product.go |  121 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 111 insertions(+), 10 deletions(-)

diff --git a/model/product.go b/model/product.go
index a61ee23..7ec7b6b 100644
--- a/model/product.go
+++ b/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
+}

--
Gitblit v1.8.0