From 5bc036d71ff6094e550c99168eae2e2b4d495f51 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 13 九月 2023 21:10:26 +0800
Subject: [PATCH] 增加位置表,产品分类表,产品表
---
constvar/const.go | 86 +++++++
models/product_category.go | 246 ++++++++++++++++++++++
models/db.go | 7
models/location.go | 13 +
models/product.go | 287 ++++++++++++++++++++++++++
5 files changed, 637 insertions(+), 2 deletions(-)
diff --git a/constvar/const.go b/constvar/const.go
index 9a4e5c9..dff496d 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -41,3 +41,89 @@
slf == WhetherTypeAlways ||
slf == ReservationNever
}
+
+// ProductType 浜у搧绫诲瀷
+type ProductType int
+
+const (
+ ProductTypeRaw = iota + 1 // 鍘熸潗鏂�
+ ProductTypeSemi // 鍗婃垚鍝�
+ ProductTypeFinished // 鎴愬搧
+)
+
+type ProductStatus int
+
+const (
+ ProductStatusCreate ProductStatus = iota // 鏂板缓
+ ProductStatusActive // 鍚敤
+ ProductStatusInactive = -1 // 鍋滅敤
+)
+
+// PurchaseType 閲囪喘绫诲瀷
+type PurchaseType int
+
+const (
+ PurchaseTypeOutSource PurchaseType = iota + 1 // 閲囪喘
+ PurchaseTypeSelf // 鑷埗
+ PurchaseTypeEntrust // 濮斿
+)
+
+func (t PurchaseType) Valid() bool {
+ if t < PurchaseTypeOutSource ||
+ t > PurchaseTypeEntrust {
+ return false
+ }
+ return true
+}
+
+// LocationType 浣嶇疆绫诲瀷
+type LocationType int
+
+const (
+ LocationTypeVendor LocationType = iota + 1 // 渚涘簲鍟嗕綅缃�
+ LocationTypeView // 瑙嗗浘
+ LocationTypeInternal // 鍐呴儴浣嶇疆
+ LocationTypeCustomer // 瀹㈡埛浣嶇疆
+ LocationTypeInventoryLoss // 搴撳瓨鎹熷け
+ LocationTypeProduction // 鐢熶骇
+ LocationTypeTransit // 涓浆浣嶇疆
+)
+
+func (t LocationType) Valid() bool {
+ return t >= LocationTypeVendor && t <= LocationTypeTransit
+}
+
+type ForceRemovalStrategy int
+
+const (
+ ForceRemovalStrategyFIFO ForceRemovalStrategy = iota + 1
+ ForceRemovalStrategyLIFO
+ ForceRemovalStrategyClosestLocation
+)
+
+func (t ForceRemovalStrategy) Valid() bool {
+ return t >= ForceRemovalStrategyFIFO && t <= ForceRemovalStrategyClosestLocation
+}
+
+type CostingMethod int
+
+const (
+ CostingMethodStandardPrice CostingMethod = iota + 1 //鏍囧噯浠锋牸
+ CostingMethodFIFO //鍏堣繘鍏堝嚭
+ CostingMethodAverageCost //
+)
+
+func (t CostingMethod) Valid() bool {
+ return t >= CostingMethodStandardPrice && t <= CostingMethodAverageCost
+}
+
+type InventoryValuation int
+
+const (
+ InventoryValuationManual InventoryValuation = iota + 1 //鎵嬪姩
+ InventoryValuationAuto //鑷姩
+)
+
+func (t InventoryValuation) Valid() bool {
+ return t >= InventoryValuationManual && t <= InventoryValuationAuto
+}
diff --git a/models/db.go b/models/db.go
index fe88df7..e32a28e 100644
--- a/models/db.go
+++ b/models/db.go
@@ -77,6 +77,13 @@
Warehouse{},
OperationType{},
Location{},
+ OperationType{},
+ Operation{},
+ OperationDetails{},
+ Scrap{},
+ MoveHistory{},
+ Product{},
+ ProductCategory{},
)
return err
}
diff --git a/models/location.go b/models/location.go
index 54ec4af..0146ca0 100644
--- a/models/location.go
+++ b/models/location.go
@@ -3,6 +3,7 @@
import (
"fmt"
"gorm.io/gorm"
+ "wms/constvar"
"wms/pkg/mysqlx"
)
@@ -10,8 +11,16 @@
// Location 浣嶇疆
Location struct {
WmsModel
- Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
- Name string `json:"name" gorm:"index;type:varchar(255);not null;comment:浣嶇疆鍚嶇О"` //浣嶇疆鍚嶇О
+ Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+ Name string `json:"name" gorm:"index;type:varchar(255);not null;comment:浣嶇疆鍚嶇О"` //浣嶇疆鍚嶇О
+ ParentId int `json:"parentId" gorm:"type:int;not null"` //涓婄骇id
+ CompanyId int `json:"companyId" gorm:"type:int;not null"` //鍏徃id
+ Company Company `json:"company" gorm:"foreignKey:CompanyId"` //鍏徃
+ Type constvar.LocationType `json:"type" gorm:"type:tinyint;not null;comment:浣嶇疆绫诲瀷"` //浣嶇疆绫诲瀷
+ CountFrequency int `json:"countFrequency" gorm:"type:tinyint;not null;comment:鐩樼偣棰戠巼锛堝ぉ锛�"` //鐩樼偣棰戠巼锛堝ぉ锛�
+ IsScrapLocation bool `json:"isScrapLocation" gorm:"type:tinyint;not null;comment:鏄惁鎶ュ簾浣嶇疆"` //鏄惁鎶ュ簾浣嶇疆
+ IsReturnLocation bool `json:"isReturnLocation" gorm:"type:tinyint;not null;comment:鏄惁閫�璐т綅缃�"` //鏄惁閫�璐т綅缃�
+ ReplenishLocation bool `json:"replenishLocation" gorm:"type:tinyint;not null;comment:鏄惁琛ュ厖浣嶇疆"` //鏄惁琛ュ厖浣嶇疆
}
LocationSearch struct {
diff --git a/models/product.go b/models/product.go
new file mode 100644
index 0000000..c97e2f1
--- /dev/null
+++ b/models/product.go
@@ -0,0 +1,287 @@
+package models
+
+import (
+ "fmt"
+ "google.golang.org/genproto/googleapis/type/decimal"
+ "gorm.io/gorm"
+ "wms/constvar"
+ "wms/pkg/mysqlx"
+)
+
+type (
+ // Product 浜у搧
+ Product struct {
+ WmsModel
+ Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+ Name string `json:"name" gorm:"index;type:varchar(255);not null;comment:浜у搧鍚嶇О"` //浜у搧鍚嶇О
+ Type constvar.ProductType `gorm:"type:tinyint;comment:浜у搧绫诲瀷" json:"type"` //浜у搧绫诲瀷
+ CategoryId int `gorm:"type:int(11);comment:浜у搧鍒嗙被" json:"categoryId"` //浜у搧鍒嗙被id
+ Category string `gorm:"type:int(11);comment:浜у搧鍒嗙被" json:"category"` //浜у搧鍒嗙被
+ Specs string `gorm:"type:varchar(191);comment:浜у搧瑙勬牸" json:"specs"` //浜у搧瑙勬牸
+ Model string `gorm:"type:varchar(191);comment:浜у搧鍨嬪彿" json:"model"` //浜у搧鍨嬪彿
+ //MinInventory decimal.Decimal `gorm:"type:decimal(20,2);comment:鏈�灏忓簱瀛�" json:"minInventory"` //鏈�澶у簱瀛�
+ //MaxInventory decimal.Decimal `gorm:"type:decimal(20,2);comment:鏈�澶у簱瀛�" json:"maxInventory"` //鏈�灏忓簱瀛�
+ //Amount decimal.Decimal `gorm:"type:decimal(20,2);comment:鏁伴噺" json:"amount"`
+ //LockAmount decimal.Decimal `gorm:"type:decimal(20,2);default:0;comment:閿佸畾鏁伴噺" json:"lockAmount"`
+ Unit string `gorm:"type:varchar(100);comment:鍗曚綅" json:"unit"` //鍗曚綅
+ PurchaseUnit string `gorm:"type:varchar(100);comment:閲囪喘鍗曚綅" json:"purchaseUnit"` //閲囪喘鍗曚綅
+ Note string `gorm:"type:varchar(1024);comment:澶囨敞" json:"note"`
+ Status constvar.ProductStatus `gorm:"type:int(11);comment:鐘舵��" json:"status"`
+ Purchases []*PurchaseInfo `gorm:"-" json:"purchases"` //閲囪喘淇℃伅
+ PurchasesStr string `gorm:"column:purchase;type:varchar(4096);comment:璐拱淇℃伅" json:"-"`
+
+ //PurchaseType constvar.PurchaseType `gorm:"type:int(11);comment:閲囪喘绫诲瀷" json:"purchaseType"` ///閲囪喘绫诲瀷
+ CanBePurchased bool `gorm:"type:int(11);not null;comment:鏄惁鍙噰璐�" json:"purchaseType"` //鏄惁鍙噰璐�
+ IsSale bool `gorm:"type:tinyint(1);comment:鏄惁閿�鍞�" json:"isSale"` //鏄惁閿�鍞�
+ SalePrice decimal.Decimal `gorm:"type:decimal(35,18);comment:閿�鍞崟浠�" json:"salePrice"` //閿�鍞环鏍�
+ CustomerTaxes decimal.Decimal `gorm:"type:decimal(20,2);not null;comment:瀹㈡埛绋�" json:"customerTaxes"` //瀹㈡埛绋庣櫨鍒嗘瘮
+ Cost decimal.Decimal `gorm:"type:decimal(20,2);not null;comment:鎴愭湰" json:"cost"` //鎴愭湰
+ OptionalProducts []int `gorm:"type:varchar(255);not null;comment:鐩镐技浜у搧id" json:"optionalProducts"` //鐩歌瘑浜у搧
+ Principal string `gorm:"type:varchar(255);not null;comment:璐熻矗浜�" json:"principal"` //璐熻矗浜�
+ Weight string `gorm:"type:decimal(20,2);not null;comment:閲嶉噺" json:"weight"` //閲嶉噺
+ Volume string `gorm:"type:decimal(20,2);not null;comment:浣撶Н" json:"volume"` //浣撶Н
+
+ InternalReference string `gorm:"type:varchar(255);not null;comment:鍐呴儴鍙傝��" json:"internalReference"` //鍐呴儴鍙傝��
+ Barcode string `gorm:"type:varchar(255);not null;comment:鏉$爜" json:"barcode"` //鏉$爜
+ Tags string `gorm:"type:varchar(255);not null;comment:浜у搧鏍囩" json:"tags"` //浜у搧鏍囩
+ InternalNotes string `gorm:"type:varchar(512);not null;comment:鍐呴儴璇存槑" json:"internalNotes"` //鍐呴儴璇存槑
+ }
+
+ ProductSearch struct {
+ Product
+ Order string
+ PageNum int
+ PageSize int
+ Keyword string
+ Orm *gorm.DB
+ Preload bool
+ }
+
+ PurchaseInfo struct {
+ PurchasePrice decimal.Decimal `gorm:"type:decimal(35,18);comment:閲囪喘浠锋牸" json:"purchasePrice"`
+ PurchaseAheadDay int `gorm:"type:int(11);comment:閲囪喘鎻愬墠鏈�(澶�)" json:"purchaseAheadDay"`
+ ProduceAheadDay int `gorm:"type:int(11);comment:鍒堕�犳彁鍓嶆湡(澶�)" json:"produceAheadDay"`
+ MinPurchaseAmount decimal.Decimal `gorm:"type:decimal(35,18);comment:鏈�灏忛噰璐噺" json:"minPurchaseAmount"`
+ }
+)
+
+func (slf *Product) TableName() string {
+ return "product"
+}
+
+func (slf *Product) BeforeCreate(db *gorm.DB) error {
+ return nil
+}
+
+func (slf *Product) AfterFind(db *gorm.DB) error {
+ return nil
+}
+
+func NewProductSearch() *ProductSearch {
+ return &ProductSearch{Orm: mysqlx.GetDB()}
+}
+
+func (slf *ProductSearch) SetOrm(tx *gorm.DB) *ProductSearch {
+ slf.Orm = tx
+ return slf
+}
+
+func (slf *ProductSearch) SetPage(page, size int) *ProductSearch {
+ slf.PageNum, slf.PageSize = page, size
+ return slf
+}
+
+func (slf *ProductSearch) SetOrder(order string) *ProductSearch {
+ slf.Order = order
+ return slf
+}
+
+func (slf *ProductSearch) SetID(id uint) *ProductSearch {
+ slf.ID = id
+ return slf
+}
+
+func (slf *ProductSearch) SetName(name string) *ProductSearch {
+ slf.Name = name
+ return slf
+}
+
+func (slf *ProductSearch) SetKeyword(keyword string) *ProductSearch {
+ slf.Keyword = keyword
+ return slf
+}
+
+func (slf *ProductSearch) SetPreload(preload bool) *ProductSearch {
+ slf.Preload = preload
+ return slf
+}
+
+func (slf *ProductSearch) build() *gorm.DB {
+ var db = slf.Orm.Model(&Product{})
+
+ if slf.ID != 0 {
+ db = db.Where("id = ?", slf.ID)
+ }
+
+ if slf.Order != "" {
+ db = db.Order(slf.Order)
+ }
+
+ if slf.Keyword != "" {
+ db = db.Where("name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
+ }
+
+ if slf.Name != "" {
+ db = db.Where("name = ?", slf.Name)
+ }
+
+ return db
+}
+
+// Create 鍗曟潯鎻掑叆
+func (slf *ProductSearch) Create(record *Product) error {
+ var db = slf.build()
+
+ if err := db.Create(record).Error; err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// CreateBatch 鎵归噺鎻掑叆
+func (slf *ProductSearch) CreateBatch(records []*Product) error {
+ var db = slf.build()
+
+ if err := db.Create(&records).Error; err != nil {
+ return fmt.Errorf("create batch err: %v, records: %+v", err, records)
+ }
+
+ return nil
+}
+
+func (slf *ProductSearch) Update(record *Product) error {
+ var db = slf.build()
+
+ if err := db.Omit("CreatedAt").Updates(record).Error; err != nil {
+ return fmt.Errorf("save err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
+
+func (slf *ProductSearch) UpdateByMap(upMap map[string]interface{}) error {
+ var (
+ db = slf.build()
+ )
+
+ if err := db.Updates(upMap).Error; err != nil {
+ return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
+ }
+
+ return nil
+}
+
+func (slf *ProductSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
+ var (
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if err := db.Updates(upMap).Error; err != nil {
+ return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
+ }
+
+ return nil
+}
+
+func (slf *ProductSearch) Delete() error {
+ var db = slf.build()
+ return db.Delete(&Product{}).Error
+}
+
+func (slf *ProductSearch) First() (*Product, error) {
+ var (
+ record = new(Product)
+ db = slf.build()
+ )
+
+ if err := db.First(record).Error; err != nil {
+ return record, err
+ }
+
+ return record, nil
+}
+
+func (slf *ProductSearch) Find() ([]*Product, int64, error) {
+ var (
+ records = make([]*Product, 0)
+ total int64
+ db = slf.build()
+ )
+
+ if err := db.Count(&total).Error; err != nil {
+ return records, total, fmt.Errorf("find count err: %v", err)
+ }
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, total, fmt.Errorf("find records err: %v", err)
+ }
+
+ return records, total, nil
+}
+
+func (slf *ProductSearch) FindNotTotal() ([]*Product, error) {
+ var (
+ records = make([]*Product, 0)
+ db = slf.build()
+ )
+
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, fmt.Errorf("find records err: %v", err)
+ }
+
+ return records, nil
+}
+
+// FindByQuery 鎸囧畾鏉′欢鏌ヨ.
+func (slf *ProductSearch) FindByQuery(query string, args []interface{}) ([]*Product, int64, error) {
+ var (
+ records = make([]*Product, 0)
+ total int64
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if err := db.Count(&total).Error; err != nil {
+ return records, total, fmt.Errorf("find by query count err: %v", err)
+ }
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+ }
+
+ return records, total, nil
+}
+
+// FindByQueryNotTotal 鎸囧畾鏉′欢鏌ヨ&涓嶆煡璇㈡�绘潯鏁�.
+func (slf *ProductSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Product, error) {
+ var (
+ records = make([]*Product, 0)
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+ }
+
+ return records, nil
+}
diff --git a/models/product_category.go b/models/product_category.go
new file mode 100644
index 0000000..f71115a
--- /dev/null
+++ b/models/product_category.go
@@ -0,0 +1,246 @@
+package models
+
+import (
+ "fmt"
+ "gorm.io/gorm"
+ "wms/constvar"
+ "wms/pkg/mysqlx"
+)
+
+type (
+ // ProductCategory 浜у搧鍒嗙被
+ ProductCategory struct {
+ WmsModel
+ Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+ Name string `json:"name" gorm:"index;type:varchar(255);not null;comment:浣嶇疆鍚嶇О"` //浣嶇疆鍚嶇О
+ ParentId int `json:"parentId" gorm:"type:int;not null"` //涓婄骇id
+ CompanyId int `json:"companyId" gorm:"type:int;not null"` //鍏徃id
+ Company Company `json:"company" gorm:"foreignKey:CompanyId"` //鍏徃
+ ForceRemovalStrategy constvar.ForceRemovalStrategy `json:"forceRemovalStrategy" gorm:"type:tinyint;not null;comment:寮哄埗涓嬫灦绛栫暐"` //寮哄埗涓嬫灦绛栫暐
+ CostingMethod constvar.CostingMethod `json:"costingMethod" gorm:"type:tinyint;not null;comment:鎴愭湰鏂规硶"` //鎴愭湰鏂规硶
+ InventoryValuation constvar.InventoryValuation `json:"inventoryValuation" gorm:"type:tinyint;not null;comment:鎴愭湰鏂规硶"` //搴撳瓨璁′环
+ }
+
+ ProductCategorySearch struct {
+ ProductCategory
+ Order string
+ PageNum int
+ PageSize int
+ Keyword string
+ Orm *gorm.DB
+ Preload bool
+ }
+)
+
+func (slf *ProductCategory) TableName() string {
+ return "ProductCategory"
+}
+
+func NewProductCategorySearch() *ProductCategorySearch {
+ return &ProductCategorySearch{Orm: mysqlx.GetDB()}
+}
+
+func (slf *ProductCategorySearch) SetOrm(tx *gorm.DB) *ProductCategorySearch {
+ slf.Orm = tx
+ return slf
+}
+
+func (slf *ProductCategorySearch) SetPage(page, size int) *ProductCategorySearch {
+ slf.PageNum, slf.PageSize = page, size
+ return slf
+}
+
+func (slf *ProductCategorySearch) SetOrder(order string) *ProductCategorySearch {
+ slf.Order = order
+ return slf
+}
+
+func (slf *ProductCategorySearch) SetID(id uint) *ProductCategorySearch {
+ slf.ID = id
+ return slf
+}
+
+func (slf *ProductCategorySearch) SetName(name string) *ProductCategorySearch {
+ slf.Name = name
+ return slf
+}
+
+func (slf *ProductCategorySearch) SetKeyword(keyword string) *ProductCategorySearch {
+ slf.Keyword = keyword
+ return slf
+}
+
+func (slf *ProductCategorySearch) SetPreload(preload bool) *ProductCategorySearch {
+ slf.Preload = preload
+ return slf
+}
+
+func (slf *ProductCategorySearch) build() *gorm.DB {
+ var db = slf.Orm.Model(&ProductCategory{})
+
+ if slf.ID != 0 {
+ db = db.Where("id = ?", slf.ID)
+ }
+
+ if slf.Order != "" {
+ db = db.Order(slf.Order)
+ }
+
+ if slf.Keyword != "" {
+ db = db.Where("name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
+ }
+
+ if slf.Name != "" {
+ db = db.Where("name = ?", slf.Name)
+ }
+
+ return db
+}
+
+// Create 鍗曟潯鎻掑叆
+func (slf *ProductCategorySearch) Create(record *ProductCategory) error {
+ var db = slf.build()
+
+ if err := db.Create(record).Error; err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// CreateBatch 鎵归噺鎻掑叆
+func (slf *ProductCategorySearch) CreateBatch(records []*ProductCategory) error {
+ var db = slf.build()
+
+ if err := db.Create(&records).Error; err != nil {
+ return fmt.Errorf("create batch err: %v, records: %+v", err, records)
+ }
+
+ return nil
+}
+
+func (slf *ProductCategorySearch) Update(record *ProductCategory) error {
+ var db = slf.build()
+
+ if err := db.Omit("CreatedAt").Updates(record).Error; err != nil {
+ return fmt.Errorf("save err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
+
+func (slf *ProductCategorySearch) UpdateByMap(upMap map[string]interface{}) error {
+ var (
+ db = slf.build()
+ )
+
+ if err := db.Updates(upMap).Error; err != nil {
+ return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
+ }
+
+ return nil
+}
+
+func (slf *ProductCategorySearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
+ var (
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if err := db.Updates(upMap).Error; err != nil {
+ return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
+ }
+
+ return nil
+}
+
+func (slf *ProductCategorySearch) Delete() error {
+ var db = slf.build()
+ return db.Delete(&ProductCategory{}).Error
+}
+
+func (slf *ProductCategorySearch) First() (*ProductCategory, error) {
+ var (
+ record = new(ProductCategory)
+ db = slf.build()
+ )
+
+ if err := db.First(record).Error; err != nil {
+ return record, err
+ }
+
+ return record, nil
+}
+
+func (slf *ProductCategorySearch) Find() ([]*ProductCategory, int64, error) {
+ var (
+ records = make([]*ProductCategory, 0)
+ total int64
+ db = slf.build()
+ )
+
+ if err := db.Count(&total).Error; err != nil {
+ return records, total, fmt.Errorf("find count err: %v", err)
+ }
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, total, fmt.Errorf("find records err: %v", err)
+ }
+
+ return records, total, nil
+}
+
+func (slf *ProductCategorySearch) FindNotTotal() ([]*ProductCategory, error) {
+ var (
+ records = make([]*ProductCategory, 0)
+ db = slf.build()
+ )
+
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, fmt.Errorf("find records err: %v", err)
+ }
+
+ return records, nil
+}
+
+// FindByQuery 鎸囧畾鏉′欢鏌ヨ.
+func (slf *ProductCategorySearch) FindByQuery(query string, args []interface{}) ([]*ProductCategory, int64, error) {
+ var (
+ records = make([]*ProductCategory, 0)
+ total int64
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if err := db.Count(&total).Error; err != nil {
+ return records, total, fmt.Errorf("find by query count err: %v", err)
+ }
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+ }
+
+ return records, total, nil
+}
+
+// FindByQueryNotTotal 鎸囧畾鏉′欢鏌ヨ&涓嶆煡璇㈡�绘潯鏁�.
+func (slf *ProductCategorySearch) FindByQueryNotTotal(query string, args []interface{}) ([]*ProductCategory, error) {
+ var (
+ records = make([]*ProductCategory, 0)
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+ }
+
+ return records, nil
+}
--
Gitblit v1.8.0