From 899f9d83c3f580ac9d641cd76551d3e0afcf0adf Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期一, 14 八月 2023 11:31:23 +0800 Subject: [PATCH] fix --- api/v1/subOrder.go | 7 +-- service/subOrder.go | 4 +- model/request/subOrder.go | 2 model/subOrder.go | 53 +++++++++++++++++++------- docs/swagger.yaml | 8 +++- docs/docs.go | 8 ++- docs/swagger.json | 8 ++- 7 files changed, 61 insertions(+), 29 deletions(-) diff --git a/api/v1/subOrder.go b/api/v1/subOrder.go index d749e21..8d804fe 100644 --- a/api/v1/subOrder.go +++ b/api/v1/subOrder.go @@ -98,7 +98,6 @@ ctx.Ok() } - // checkSubOrderParams // 妫�鏌ュ瓙璁㈠崟鍙傛暟 func checkSubOrderParams(subOrder request.SubOrder) (errCode int, newSubOrder model.SubOrder) { @@ -134,14 +133,14 @@ return } - subOrders, total, errCode := subOrderService.GetSubOrderList(params.Page, params.PageSize, params.Keyword) + subOrders, total, errCode := subOrderService.GetSubOrderList(params.Page, params.PageSize, params.SearchMap) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.OkWithDetailed(response.SubOrderResponse{ - List: subOrders, + List: subOrders, Count: int(total), }) -} \ No newline at end of file +} diff --git a/docs/docs.go b/docs/docs.go index 71f27c6..57239a8 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -15036,9 +15036,6 @@ "request.GetSubOrderList": { "type": "object", "properties": { - "keyword": { - "type": "string" - }, "page": { "description": "椤电爜", "type": "integer" @@ -15046,6 +15043,11 @@ "pageSize": { "description": "姣忛〉澶у皬", "type": "integer" + }, + "search_map": { + "description": "鎼滅储鏉′欢: map[string]interface{}{\"name\": \"xxx\"}; {\"number\": \"閿�鍞瓙鍗曞彿\", \"client_name\": \"瀹㈡埛鍚嶇О\", \"master_order_number\": \"閿�鍞�诲崟鍙穃", \"member_name\": \"閿�鍞礋璐d汉\", \"master_order_id\": \"閿�鍞�诲崟id\"}", + "type": "object", + "additionalProperties": true } } }, diff --git a/docs/swagger.json b/docs/swagger.json index 45cc390..ebdb831 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -15024,9 +15024,6 @@ "request.GetSubOrderList": { "type": "object", "properties": { - "keyword": { - "type": "string" - }, "page": { "description": "椤电爜", "type": "integer" @@ -15034,6 +15031,11 @@ "pageSize": { "description": "姣忛〉澶у皬", "type": "integer" + }, + "search_map": { + "description": "鎼滅储鏉′欢: map[string]interface{}{\"name\": \"xxx\"}; {\"number\": \"閿�鍞瓙鍗曞彿\", \"client_name\": \"瀹㈡埛鍚嶇О\", \"master_order_number\": \"閿�鍞�诲崟鍙穃", \"member_name\": \"閿�鍞礋璐d汉\", \"master_order_id\": \"閿�鍞�诲崟id\"}", + "type": "object", + "additionalProperties": true } } }, diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 3bb3424..fa108df 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3472,14 +3472,18 @@ type: object request.GetSubOrderList: properties: - keyword: - type: string page: description: 椤电爜 type: integer pageSize: description: 姣忛〉澶у皬 type: integer + search_map: + additionalProperties: true + description: '鎼滅储鏉′欢: map[string]interface{}{"name": "xxx"}; {"number": "閿�鍞瓙鍗曞彿", + "client_name": "瀹㈡埛鍚嶇О", "master_order_number": "閿�鍞�诲崟鍙�", "member_name": "閿�鍞礋璐d汉", + "master_order_id": "閿�鍞�诲崟id"}' + type: object type: object request.GetUserList: properties: diff --git a/model/request/subOrder.go b/model/request/subOrder.go index a9e894c..235da4a 100644 --- a/model/request/subOrder.go +++ b/model/request/subOrder.go @@ -21,5 +21,5 @@ type GetSubOrderList struct { PageInfo - Keyword string `json:"keyword"` + SearchMap map[string]interface{} `json:"search_map"` // 鎼滅储鏉′欢: map[string]interface{}{"name": "xxx"}; {"number": "閿�鍞瓙鍗曞彿", "client_name": "瀹㈡埛鍚嶇О", "master_order_number": "閿�鍞�诲崟鍙�", "member_name": "閿�鍞礋璐d汉", "master_order_id": "閿�鍞�诲崟id"} } diff --git a/model/subOrder.go b/model/subOrder.go index 42bb6eb..e702457 100644 --- a/model/subOrder.go +++ b/model/subOrder.go @@ -20,11 +20,11 @@ SubOrderSearch struct { SubOrder - Orm *gorm.DB - Keyword string - OrderBy string - PageNum int - PageSize int + Orm *gorm.DB + SearchMap map[string]interface{} + OrderBy string + PageNum int + PageSize int } ) @@ -40,11 +40,36 @@ func (slf *SubOrderSearch) build() *gorm.DB { var db = slf.Orm.Model(&SubOrder{}) - if slf.Keyword != "" { - db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") - } + if slf.Id != 0 { db = db.Where("id = ?", slf.Id) + } + + if len(slf.SearchMap) > 0 { + for key, value := range slf.SearchMap { + switch v := value.(type) { + case string: + if key == "number" { + db = db.Where(key+" LIKE ?", "%"+v+"%") + } + + if key == "client_name" { + db = db.Joins("Client").Where("Client.name LIKE ?", "%"+v+"%") + } + + if key == "master_order_number" { + db = db.Joins("MasterOrder").Where("MasterOrder.number LIKE ?", "%"+v+"%") + } + + if key == "member_name" { + db = db.Joins("Member").Where("User.username LIKE ?", "%"+v+"%") + } + case int: + if key == "master_order_id" { + db = db.Where("master_order_id = ?", v) + } + } + } } return db @@ -91,11 +116,6 @@ return slf } -func (slf *SubOrderSearch) SetKeyword(keyword string) *SubOrderSearch { - slf.Keyword = keyword - return slf -} - func (slf *SubOrderSearch) SetPage(page, size int) *SubOrderSearch { slf.PageNum, slf.PageSize = page, size return slf @@ -104,4 +124,9 @@ func (slf *SubOrderSearch) SetOrder(order string) *SubOrderSearch { slf.OrderBy = order return slf -} \ No newline at end of file +} + +func (slf *SubOrderSearch) SetSearchMap(data map[string]interface{}) *SubOrderSearch { + slf.SearchMap = data + return slf +} diff --git a/service/subOrder.go b/service/subOrder.go index 57091e4..0f23c74 100644 --- a/service/subOrder.go +++ b/service/subOrder.go @@ -44,9 +44,9 @@ return ecode.OK } -func (SubOrderService) GetSubOrderList(page, pageSize int, keyword string) ([]*model.SubOrder, int64, int) { +func (SubOrderService) GetSubOrderList(page, pageSize int, data map[string]interface{}) ([]*model.SubOrder, int64, int) { // get contact list - contacts, total, err := model.NewSubOrderSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll() + contacts, total, err := model.NewSubOrderSearch().SetSearchMap(data).SetPage(page, pageSize).SetSearchMap(data).FindAll() if err != nil { return nil, 0, ecode.SubOrderListErr } -- Gitblit v1.8.0