From 1129c91762fdb8c9940d87ca300851bc3065eef2 Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期五, 11 八月 2023 16:58:35 +0800 Subject: [PATCH] add --- api/v1/saleChance.go | 2 service/saleChance.go | 4 +- model/request/saleChance.go | 2 model/saleChance.go | 64 +++++++++++++++++++++++++------ docs/swagger.yaml | 9 +++- docs/docs.go | 8 ++- docs/swagger.json | 8 ++- 7 files changed, 72 insertions(+), 25 deletions(-) diff --git a/api/v1/saleChance.go b/api/v1/saleChance.go index 245d7f8..06712c1 100644 --- a/api/v1/saleChance.go +++ b/api/v1/saleChance.go @@ -201,7 +201,7 @@ return } - saleChances, total, errCode := saleChanceService.GetSaleChanceList(params.Page, params.PageSize, params.Keyword) + saleChances, total, errCode := saleChanceService.GetSaleChanceList(params.Page, params.PageSize, params.SearchMap) if errCode != ecode.OK { ctx.Fail(errCode) return diff --git a/docs/docs.go b/docs/docs.go index 62f6386..d7d128f 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -14640,9 +14640,6 @@ "request.GetSaleChanceList": { "type": "object", "properties": { - "keyword": { - "type": "string" - }, "page": { "description": "椤电爜", "type": "integer" @@ -14650,6 +14647,11 @@ "pageSize": { "description": "姣忛〉澶у皬", "type": "integer" + }, + "search_map": { + "description": "鎼滅储鏉′欢: map[string]interface{}{\"name\": \"xxx\"}; {\"name\": \"鏈轰細鍚嶇О\", \"client_name\": \"瀹㈡埛鍚嶇О\",\"number\":\"缂栧彿\", \"contact_name\":\"鑱旂郴浜哄鍚峔", \"member_name\": \"閿�鍞礋璐d汉\", \"status\": \"鐘舵�乗", \"sale_stage\": \"闃舵\", \"possibilities\": \"鍙兘鎬", \"expected_time\": \"棰勮鎴愪氦鏃堕棿\", \"budget\": \"璧勯噾缁濆鍊糪", \"projected_amount\": \"棰勮鍚堝悓閲戦\"}", + "type": "object", + "additionalProperties": true } } }, diff --git a/docs/swagger.json b/docs/swagger.json index f8fd45c..f4be661 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -14628,9 +14628,6 @@ "request.GetSaleChanceList": { "type": "object", "properties": { - "keyword": { - "type": "string" - }, "page": { "description": "椤电爜", "type": "integer" @@ -14638,6 +14635,11 @@ "pageSize": { "description": "姣忛〉澶у皬", "type": "integer" + }, + "search_map": { + "description": "鎼滅储鏉′欢: map[string]interface{}{\"name\": \"xxx\"}; {\"name\": \"鏈轰細鍚嶇О\", \"client_name\": \"瀹㈡埛鍚嶇О\",\"number\":\"缂栧彿\", \"contact_name\":\"鑱旂郴浜哄鍚峔", \"member_name\": \"閿�鍞礋璐d汉\", \"status\": \"鐘舵�乗", \"sale_stage\": \"闃舵\", \"possibilities\": \"鍙兘鎬", \"expected_time\": \"棰勮鎴愪氦鏃堕棿\", \"budget\": \"璧勯噾缁濆鍊糪", \"projected_amount\": \"棰勮鍚堝悓閲戦\"}", + "type": "object", + "additionalProperties": true } } }, diff --git a/docs/swagger.yaml b/docs/swagger.yaml index fb21e1c..60d12cb 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3189,14 +3189,19 @@ type: object request.GetSaleChanceList: properties: - keyword: - type: string page: description: 椤电爜 type: integer pageSize: description: 姣忛〉澶у皬 type: integer + search_map: + additionalProperties: true + description: '鎼滅储鏉′欢: map[string]interface{}{"name": "xxx"}; {"name": "鏈轰細鍚嶇О", + "client_name": "瀹㈡埛鍚嶇О","number":"缂栧彿", "contact_name":"鑱旂郴浜哄鍚�", "member_name": + "閿�鍞礋璐d汉", "status": "鐘舵��", "sale_stage": "闃舵", "possibilities": "鍙兘鎬�", "expected_time": + "棰勮鎴愪氦鏃堕棿", "budget": "璧勯噾缁濆鍊�", "projected_amount": "棰勮鍚堝悓閲戦"}' + type: object type: object request.GetSalesDetailsList: properties: diff --git a/model/request/saleChance.go b/model/request/saleChance.go index b175a1e..83f3ee1 100644 --- a/model/request/saleChance.go +++ b/model/request/saleChance.go @@ -44,7 +44,7 @@ type GetSaleChanceList struct { PageInfo - Keyword string `json:"keyword"` + SearchMap map[string]interface{} `json:"search_map"` // 鎼滅储鏉′欢: map[string]interface{}{"name": "xxx"}; {"name": "鏈轰細鍚嶇О", "client_name": "瀹㈡埛鍚嶇О","number":"缂栧彿", "contact_name":"鑱旂郴浜哄鍚�", "member_name": "閿�鍞礋璐d汉", "status": "鐘舵��", "sale_stage": "闃舵", "possibilities": "鍙兘鎬�", "expected_time": "棰勮鎴愪氦鏃堕棿", "budget": "璧勯噾缁濆鍊�", "projected_amount": "棰勮鍚堝悓閲戦"} } type PushSaleChance struct { diff --git a/model/saleChance.go b/model/saleChance.go index 3667873..d5c444d 100644 --- a/model/saleChance.go +++ b/model/saleChance.go @@ -48,11 +48,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 +66,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.name 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 @@ -128,11 +166,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 +175,8 @@ slf.OrderBy = order return slf } + +func (slf *SaleChanceSearch) SetSearchMap(searchMap map[string]interface{}) *SaleChanceSearch { + slf.SearchMap = searchMap + return slf +} diff --git a/service/saleChance.go b/service/saleChance.go index 24dedae..2c62a4f 100644 --- a/service/saleChance.go +++ b/service/saleChance.go @@ -54,9 +54,9 @@ return ecode.OK } -func (SaleChanceService) GetSaleChanceList(page, pageSize int, keyword string) ([]*model.SaleChance, int64, int) { +func (SaleChanceService) GetSaleChanceList(page, pageSize int, data map[string]interface{}) ([]*model.SaleChance, int64, int) { // get contact list - contacts, total, err := model.NewSaleChanceSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll() + contacts, total, err := model.NewSaleChanceSearch().SetPage(page, pageSize).SetSearchMap(data).FindAll() if err != nil { return nil, 0, ecode.SaleChanceListErr } -- Gitblit v1.8.0