From 5f0170df9787c6f3ff17cc168b3f2e3f511453f6 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 31 十月 2023 20:04:16 +0800
Subject: [PATCH] 支持职级降级的情况
---
model/product.go | 129 +++++++++++++++++++++++++++++++++++++++---
1 files changed, 118 insertions(+), 11 deletions(-)
diff --git a/model/product.go b/model/product.go
index 029857b..2880731 100644
--- a/model/product.go
+++ b/model/product.go
@@ -1,18 +1,125 @@
package model
-import "gorm.io/gorm"
+import (
+ "aps_crm/pkg/mysqlx"
+ "github.com/shopspring/decimal"
+ "gorm.io/gorm"
+)
-type Product struct {
- Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
- Name string `json:"name" gorm:"column:name;type:varchar(255);comment:浜у搧鍚嶇О"`
- Price float64 `json:"price" gorm:"column:price;type:decimal(10,2);comment:浜у搧浠锋牸"`
- Number string `json:"number" gorm:"column:number;type:varchar(255);comment:浜у搧缂栧彿"`
- Amount int `json:"amount" gorm:"column:amount;type:int;comment:浜у搧鏁伴噺"`
- Total float64 `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:decimal(12,2);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)
+ }
+ if len(slf.Ids) != 0 {
+ db = db.Where("id in ?", slf.Ids)
+ }
+
+ 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