From d557ed582308257aaefcbcfe2bada1e195d83a91 Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期二, 08 八月 2023 19:24:30 +0800
Subject: [PATCH] fix

---
 model/salesLeads.go |   70 ++++++++++++++++++----------------
 1 files changed, 37 insertions(+), 33 deletions(-)

diff --git a/model/salesLeads.go b/model/salesLeads.go
index 6e9f65e..b854d46 100644
--- a/model/salesLeads.go
+++ b/model/salesLeads.go
@@ -15,7 +15,9 @@
 		ContactPhone    string               `json:"contact_phone" gorm:"column:contact_phone;type:varchar(255);comment:鑱旂郴浜虹數璇�"`
 		ContactPosition string               `json:"contact_position" gorm:"column:contact_position;type:varchar(255);comment:鑱旂郴浜鸿亴浣�"`
 		SalesSourcesId  int                  `json:"sales_sources_id" gorm:"column:sales_sources_id;type:int(11);comment:鍟嗘満鏉ユ簮ID"`
+		SalesSources    SalesSources         `json:"-" gorm:"foreignKey:SalesSourcesId"`
 		MemberId        int                  `json:"member_id" gorm:"column:member_id;type:int(11);comment:閿�鍞礋璐d汉ID"`
+		Member          User                 `json:"-" gorm:"foreignKey:MemberId"`
 		SalesStatus     constvar.SalesStatus `json:"sales_status" gorm:"column:sales_status;type:int(11);comment:閿�鍞姸鎬�"`
 		Desc            string               `json:"desc" gorm:"column:desc;type:varchar(255);comment:澶囨敞"`
 		Reason          string               `json:"reason" gorm:"column:reason;type:text;comment:澶辫触鍘熷洜"`
@@ -27,11 +29,11 @@
 	SalesLeadsSearch struct {
 		SalesLeads
 
-		Orm      *gorm.DB
-		Keyword  string
-		OrderBy  string
-		PageNum  int
-		PageSize int
+		Orm       *gorm.DB
+		SearchMap map[string]interface{}
+		OrderBy   string
+		PageNum   int
+		PageSize  int
 	}
 )
 
@@ -51,12 +53,6 @@
 
 func (slf *SalesLeadsSearch) build() *gorm.DB {
 	var db = slf.Orm.Model(&SalesLeads{})
-	if slf.Keyword != "" {
-		db = db.Where("name LIKE ?", "%"+slf.Keyword+"%")
-	}
-	if slf.Keyword != "" {
-		db = db.Where("name LIKE ?", "%"+slf.Keyword+"%")
-	}
 	if slf.Id != 0 {
 		db = db.Where("id = ?", slf.Id)
 	}
@@ -64,28 +60,36 @@
 		db = db.Where("name = ?", slf.Name)
 	}
 
-	if slf.Number != "" {
-		db = db.Where("number = ?", slf.Number)
-	}
+	if len(slf.SearchMap) > 0 {
+		for key, value := range slf.SearchMap {
+			switch v := value.(type) {
+			case string:
+				if key == "number" || key == "contact_name" || key == "contact_phone" || key == "name" {
+					db = db.Where(key+" LIKE ?", "%"+v+"%")
+				}
 
-	if slf.ContactName != "" {
-		db = db.Where("contact_name = ?", slf.ContactName)
-	}
+				if key == "city" {
+					db = db.Joins("City").Where("City.name LIKE ?", "%"+v+"%")
+				}
 
-	if slf.ContactPhone != "" {
-		db = db.Where("contact_phone = ?", slf.ContactPhone)
-	}
+				if key == "province" {
+					db = db.Joins("Province").Where("Province.name LIKE ?", "%"+v+"%")
+				}
 
-	if slf.ContactPosition != "" {
-		db = db.Where("contact_position = ?", slf.ContactPosition)
-	}
+				if key == "sales_sources" {
+					db = db.Joins("SalesSources").Where("SalesSources.name LIKE ?", "%"+v+"%")
+				}
 
-	if slf.SalesSourcesId != 0 {
-		db = db.Where("sales_sources_id = ?", slf.SalesSourcesId)
-	}
+				if key == "member_name" {
+					db = db.Joins("Member").Where("Member.username LIKE ?", "%"+v+"%")
+				}
 
-	if slf.MemberId != 0 {
-		db = db.Where("member_id = ?", slf.MemberId)
+			case int:
+				if key == "member_id" {
+					db = db.Where("member_id = ?", v)
+				}
+			}
+		}
 	}
 
 	return db
@@ -149,11 +153,6 @@
 	return
 }
 
-func (slf *SalesLeadsSearch) SetKeyword(keyword string) *SalesLeadsSearch {
-	slf.Keyword = keyword
-	return slf
-}
-
 func (slf *SalesLeadsSearch) SetPage(page, size int) *SalesLeadsSearch {
 	slf.PageNum, slf.PageSize = page, size
 	return slf
@@ -172,3 +171,8 @@
 	slf.Orm = slf.Orm.Where("id in (?)", ids)
 	return slf
 }
+
+func (slf *SalesLeadsSearch) SetSearchMap(data map[string]interface{}) *SalesLeadsSearch {
+	slf.SearchMap = data
+	return slf
+}

--
Gitblit v1.8.0