From 0b3bcdad216e73b43dec04db4a4792efefef0e37 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 17 八月 2023 10:09:03 +0800 Subject: [PATCH] Merge branch 'zq' --- model/saleChance.go | 73 +++++++++++++++++++++++++++++------- 1 files changed, 58 insertions(+), 15 deletions(-) diff --git a/model/saleChance.go b/model/saleChance.go index 3667873..175ac2a 100644 --- a/model/saleChance.go +++ b/model/saleChance.go @@ -14,11 +14,16 @@ ClientId int `json:"client_id" gorm:"column:client_id;type:int(11);comment:瀹㈡埛ID"` SalesSourcesId int `json:"sales_sources_id" gorm:"column:sales_sources_id;type:int(11);comment:鍟嗘満鏉ユ簮ID"` SaleTypeId int `json:"sale_type_id" gorm:"column:sale_type_id;type:int(11);comment:鍟嗘満绫诲瀷ID"` + SaleType SaleType `json:"sale_type" ` SaleStageId int `json:"sale_stage_id" gorm:"column:sale_stage_id;type:int(11);comment:鍟嗘満闃舵ID"` + SaleStage SaleStage `json:"sale_stage" gorm:"foreignKey:SaleStageId;references:Id"` MemberId int `json:"member_id" gorm:"column:member_id;type:int(11);comment:閿�鍞礋璐d汉ID"` + Member User `json:"member" gorm:"foreignKey:MemberId"` RegularCustomersId int `json:"regular_customers_id" gorm:"column:regular_customers_id;type:int(11);comment:甯稿ID"` + RegularCustomers RegularCustomers `json:"regular_customers"` Competitors string `json:"competitors" gorm:"column:competitors;type:varchar(255);comment:绔炰簤瀵规墜"` PossibilitiesId int `json:"possibilities_id" gorm:"column:possibilities_id;type:int(11);comment:鍙兘鎬D"` + Possibility Possibility `json:"possibility" gorm:"foreignKey:PossibilitiesId;references:Id"` Budget float64 `json:"budget" gorm:"column:budget;type:decimal(10,2);comment:棰勭畻"` ProjectedAmount float64 `json:"projected_amount" gorm:"column:projected_amount;type:decimal(10,2);comment:棰勮閲戦"` Currency int `json:"currency" gorm:"column:currency;type:int(11);comment:甯佺"` @@ -40,7 +45,7 @@ Contact Contact `json:"contact" gorm:"foreignKey:ContactId;references:Id"` Client Client `json:"client" gorm:"foreignKey:ClientId;references:Id"` CollectionProjections []CollectionProjection `json:"collection_projections" gorm:"foreignKey:SaleChanceId"` - SalesSources SalesSources + SalesSources SalesSources `json:"sales_sources"` Address gorm.Model `json:"-"` } @@ -48,11 +53,11 @@ SaleChanceSearch struct { SaleChance - Orm *gorm.DB - Keyword string - OrderBy string - PageNum int - PageSize int + Orm *gorm.DB + SearchMap map[string]interface{} + OrderBy string + PageNum int + PageSize int } ) @@ -66,14 +71,52 @@ func (slf *SaleChanceSearch) build() *gorm.DB { var db = slf.Orm.Model(&SaleChance{}) - if slf.Keyword != "" { - db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") - } if slf.Id > 0 { db = db.Where("id = ?", slf.Id) } if slf.Name != "" { db = db.Where("name = ?", slf.Name) + } + + if len(slf.SearchMap) > 0 { + for key, value := range slf.SearchMap { + switch v := value.(type) { + case string: + if key == "name" || key == "number" { + db = db.Where(key+" LIKE ?", "%"+v+"%") + } + + if key == "client_name" { + db = db.Joins("Client").Where("Client.name LIKE ?", "%"+v+"%") + } + + if key == "contact_name" { + db = db.Joins("Contact").Where("Contact.name LIKE ?", "%"+v+"%") + } + + if key == "member_name" { + db = db.Joins("User").Where("User.username LIKE ?", "%"+v+"%") + } + + if key == "sale_stage" { + db = db.Joins("SaleStage").Where("SaleStage.name LIKE ?", "%"+v+"%") + } + + if key == "possibilities" { + db = db.Joins("Possibilities").Where("Possibilities.name LIKE ?", "%"+v+"%") + } + + if key == "expected_time" { + db = db.Where("expected_time LIKE ?", "%"+v+"%") + } + + case int: + case float64: + if key == "member_id" || key == "budget" || key == "projected_amount" { + db = db.Where(key+" = ?", v) + } + } + } } return db @@ -114,7 +157,7 @@ db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) } - err := db.Preload("CollectionProjections").Preload("Client").Preload("Contact").Find(&records).Error + err := db.Preload("SaleType").Preload("RegularCustomers").Preload("SalesSources").Preload("Member").Preload("SaleStage").Preload("Possibility").Preload("CollectionProjections").Preload("Client").Preload("Contact").Order("id desc").Find(&records).Error return records, total, err } @@ -128,11 +171,6 @@ return slf } -func (slf *SaleChanceSearch) SetKeyword(keyword string) *SaleChanceSearch { - slf.Keyword = keyword - return slf -} - func (slf *SaleChanceSearch) SetPage(page, size int) *SaleChanceSearch { slf.PageNum, slf.PageSize = page, size return slf @@ -142,3 +180,8 @@ slf.OrderBy = order return slf } + +func (slf *SaleChanceSearch) SetSearchMap(searchMap map[string]interface{}) *SaleChanceSearch { + slf.SearchMap = searchMap + return slf +} -- Gitblit v1.8.0