From f67698f7abf35689f24fdb17827249de79034a95 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 10 八月 2023 17:23:12 +0800 Subject: [PATCH] 服务单增加筛选条件 --- model/serviceContract.go | 2 model/serviceOrder.go | 74 +++++++++--- model/salesDetails.go | 2 service/serviceOrder.go | 11 + constvar/serviceOrder.go | 10 + api/v1/serviceOrder.go | 6 docs/swagger.yaml | 66 +++++++++++ docs/docs.go | 87 ++++++++++++++ docs/swagger.json | 87 ++++++++++++++ model/request/serviceOrder.go | 6 10 files changed, 322 insertions(+), 29 deletions(-) diff --git a/api/v1/serviceOrder.go b/api/v1/serviceOrder.go index 426dcef..e482d3c 100644 --- a/api/v1/serviceOrder.go +++ b/api/v1/serviceOrder.go @@ -99,15 +99,17 @@ // @Tags 鏈嶅姟鍗曠鐞� // @Summary 鑾峰彇鏈嶅姟鍗曞垪琛� // @Produce application/json +// @Param object query request.GetServiceOrderList true "鍙傛暟" // @Success 200 {object} response.ListResponse{data=[]model.ServiceOrder} // @Router /api/serviceOrder/list [get] func (s *ServiceOrderApi) List(c *gin.Context) { - ctx, ok := contextx.NewContext(c, nil) + var params request.GetServiceOrderList + ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } - serviceOrder, total, errCode := service.NewServiceOrderService().GetServiceOrderList() + serviceOrder, total, errCode := service.NewServiceOrderService().GetServiceOrderList(params.Page, params.PageSize, params.QueryClass, params.KeywordType, params.Keyword) if errCode != ecode.OK { ctx.Fail(errCode) return diff --git a/constvar/serviceOrder.go b/constvar/serviceOrder.go index 959e402..0e67d54 100644 --- a/constvar/serviceOrder.go +++ b/constvar/serviceOrder.go @@ -1,4 +1,5 @@ package constvar + type ServiceOrderQueryClass string const ( @@ -8,5 +9,12 @@ type ServiceOrderKeywordType string const ( - ServiceOrderKeywordCustomerName ServiceOrderKeywordType = "" + ServiceOrderKeywordOrderNumber ServiceOrderKeywordType = "鏈嶅姟鍗曠紪鍙�" + ServiceOrderKeywordSubject ServiceOrderKeywordType = "涓婚" + ServiceOrderKeywordClientName ServiceOrderKeywordType = "瀹㈡埛鍚嶇О" + ServiceOrderKeywordRealProcessTime ServiceOrderKeywordType = "瀹為檯澶勭悊鏃堕棿" + ServiceOrderKeywordServiceMan ServiceOrderKeywordType = "鏈嶅姟浜哄憳" + ServiceOrderKeywordServiceType ServiceOrderKeywordType = "鏈嶅姟鏂瑰紡" + ServiceOrderKeywordProductType ServiceOrderKeywordType = "浜у搧绫诲埆" + ServiceOrderKeywordFaultType ServiceOrderKeywordType = "鏁呴殰绫诲埆" ) diff --git a/docs/docs.go b/docs/docs.go index aa11e95..5b72437 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -8275,6 +8275,61 @@ "鏈嶅姟鍗曠鐞�" ], "summary": "鑾峰彇鏈嶅姟鍗曞垪琛�", + "parameters": [ + { + "type": "string", + "name": "keyword", + "in": "query" + }, + { + "enum": [ + "鏈嶅姟鍗曠紪鍙�", + "涓婚", + "瀹㈡埛鍚嶇О", + "瀹為檯澶勭悊鏃堕棿", + "鏈嶅姟浜哄憳", + "鏈嶅姟鏂瑰紡", + "浜у搧绫诲埆", + "鏁呴殰绫诲埆" + ], + "type": "string", + "x-enum-varnames": [ + "ServiceOrderKeywordOrderNumber", + "ServiceOrderKeywordSubject", + "ServiceOrderKeywordClientName", + "ServiceOrderKeywordRealProcessTime", + "ServiceOrderKeywordServiceMan", + "ServiceOrderKeywordServiceType", + "ServiceOrderKeywordProductType", + "ServiceOrderKeywordFaultType" + ], + "name": "keywordType", + "in": "query" + }, + { + "type": "integer", + "description": "椤电爜", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "姣忛〉澶у皬", + "name": "pageSize", + "in": "query" + }, + { + "enum": [ + "" + ], + "type": "string", + "x-enum-varnames": [ + "ServiceOrderQueryClassExpireLessThen60Days" + ], + "name": "queryClass", + "in": "query" + } + ], "responses": { "200": { "description": "OK", @@ -9965,6 +10020,38 @@ "ServiceFollowupKeywordSatisfactionDegree" ] }, + "constvar.ServiceOrderKeywordType": { + "type": "string", + "enum": [ + "鏈嶅姟鍗曠紪鍙�", + "涓婚", + "瀹㈡埛鍚嶇О", + "瀹為檯澶勭悊鏃堕棿", + "鏈嶅姟浜哄憳", + "鏈嶅姟鏂瑰紡", + "浜у搧绫诲埆", + "鏁呴殰绫诲埆" + ], + "x-enum-varnames": [ + "ServiceOrderKeywordOrderNumber", + "ServiceOrderKeywordSubject", + "ServiceOrderKeywordClientName", + "ServiceOrderKeywordRealProcessTime", + "ServiceOrderKeywordServiceMan", + "ServiceOrderKeywordServiceType", + "ServiceOrderKeywordProductType", + "ServiceOrderKeywordFaultType" + ] + }, + "constvar.ServiceOrderQueryClass": { + "type": "string", + "enum": [ + "" + ], + "x-enum-varnames": [ + "ServiceOrderQueryClassExpireLessThen60Days" + ] + }, "constvar.UserType": { "type": "integer", "enum": [ diff --git a/docs/swagger.json b/docs/swagger.json index 0fe48cc..04fbdf9 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -8263,6 +8263,61 @@ "鏈嶅姟鍗曠鐞�" ], "summary": "鑾峰彇鏈嶅姟鍗曞垪琛�", + "parameters": [ + { + "type": "string", + "name": "keyword", + "in": "query" + }, + { + "enum": [ + "鏈嶅姟鍗曠紪鍙�", + "涓婚", + "瀹㈡埛鍚嶇О", + "瀹為檯澶勭悊鏃堕棿", + "鏈嶅姟浜哄憳", + "鏈嶅姟鏂瑰紡", + "浜у搧绫诲埆", + "鏁呴殰绫诲埆" + ], + "type": "string", + "x-enum-varnames": [ + "ServiceOrderKeywordOrderNumber", + "ServiceOrderKeywordSubject", + "ServiceOrderKeywordClientName", + "ServiceOrderKeywordRealProcessTime", + "ServiceOrderKeywordServiceMan", + "ServiceOrderKeywordServiceType", + "ServiceOrderKeywordProductType", + "ServiceOrderKeywordFaultType" + ], + "name": "keywordType", + "in": "query" + }, + { + "type": "integer", + "description": "椤电爜", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "姣忛〉澶у皬", + "name": "pageSize", + "in": "query" + }, + { + "enum": [ + "" + ], + "type": "string", + "x-enum-varnames": [ + "ServiceOrderQueryClassExpireLessThen60Days" + ], + "name": "queryClass", + "in": "query" + } + ], "responses": { "200": { "description": "OK", @@ -9953,6 +10008,38 @@ "ServiceFollowupKeywordSatisfactionDegree" ] }, + "constvar.ServiceOrderKeywordType": { + "type": "string", + "enum": [ + "鏈嶅姟鍗曠紪鍙�", + "涓婚", + "瀹㈡埛鍚嶇О", + "瀹為檯澶勭悊鏃堕棿", + "鏈嶅姟浜哄憳", + "鏈嶅姟鏂瑰紡", + "浜у搧绫诲埆", + "鏁呴殰绫诲埆" + ], + "x-enum-varnames": [ + "ServiceOrderKeywordOrderNumber", + "ServiceOrderKeywordSubject", + "ServiceOrderKeywordClientName", + "ServiceOrderKeywordRealProcessTime", + "ServiceOrderKeywordServiceMan", + "ServiceOrderKeywordServiceType", + "ServiceOrderKeywordProductType", + "ServiceOrderKeywordFaultType" + ] + }, + "constvar.ServiceOrderQueryClass": { + "type": "string", + "enum": [ + "" + ], + "x-enum-varnames": [ + "ServiceOrderQueryClassExpireLessThen60Days" + ] + }, "constvar.UserType": { "type": "integer", "enum": [ diff --git a/docs/swagger.yaml b/docs/swagger.yaml index f47fa36..aa5fcc2 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -238,6 +238,32 @@ - ServiceFollowupKeywordCustomerServiceNo - ServiceFollowupKeywordVisitor - ServiceFollowupKeywordSatisfactionDegree + constvar.ServiceOrderKeywordType: + enum: + - 鏈嶅姟鍗曠紪鍙� + - 涓婚 + - 瀹㈡埛鍚嶇О + - 瀹為檯澶勭悊鏃堕棿 + - 鏈嶅姟浜哄憳 + - 鏈嶅姟鏂瑰紡 + - 浜у搧绫诲埆 + - 鏁呴殰绫诲埆 + type: string + x-enum-varnames: + - ServiceOrderKeywordOrderNumber + - ServiceOrderKeywordSubject + - ServiceOrderKeywordClientName + - ServiceOrderKeywordRealProcessTime + - ServiceOrderKeywordServiceMan + - ServiceOrderKeywordServiceType + - ServiceOrderKeywordProductType + - ServiceOrderKeywordFaultType + constvar.ServiceOrderQueryClass: + enum: + - "" + type: string + x-enum-varnames: + - ServiceOrderQueryClassExpireLessThen60Days constvar.UserType: enum: - 1 @@ -10515,6 +10541,46 @@ - 鏈嶅姟鍗曠鐞� /api/serviceOrder/list: get: + parameters: + - in: query + name: keyword + type: string + - enum: + - 鏈嶅姟鍗曠紪鍙� + - 涓婚 + - 瀹㈡埛鍚嶇О + - 瀹為檯澶勭悊鏃堕棿 + - 鏈嶅姟浜哄憳 + - 鏈嶅姟鏂瑰紡 + - 浜у搧绫诲埆 + - 鏁呴殰绫诲埆 + in: query + name: keywordType + type: string + x-enum-varnames: + - ServiceOrderKeywordOrderNumber + - ServiceOrderKeywordSubject + - ServiceOrderKeywordClientName + - ServiceOrderKeywordRealProcessTime + - ServiceOrderKeywordServiceMan + - ServiceOrderKeywordServiceType + - ServiceOrderKeywordProductType + - ServiceOrderKeywordFaultType + - description: 椤电爜 + in: query + name: page + type: integer + - description: 姣忛〉澶у皬 + in: query + name: pageSize + type: integer + - enum: + - "" + in: query + name: queryClass + type: string + x-enum-varnames: + - ServiceOrderQueryClassExpireLessThen60Days produces: - application/json responses: diff --git a/model/request/serviceOrder.go b/model/request/serviceOrder.go index 869fd9a..d4f2b3e 100644 --- a/model/request/serviceOrder.go +++ b/model/request/serviceOrder.go @@ -40,7 +40,7 @@ type GetServiceOrderList struct { PageInfo - QueryClass constvar.ServiceOrderQueryClass `json:"queryClass"` - KeywordType constvar.ServiceOrderKeywordType `json:"keywordType"` - Keyword string `json:"keyword"` + QueryClass constvar.ServiceOrderQueryClass `json:"queryClass" form:"queryClass"` + KeywordType constvar.ServiceOrderKeywordType `json:"keywordType" form:"keywordType"` + Keyword string `json:"keyword" form:"keyword"` } diff --git a/model/salesDetails.go b/model/salesDetails.go index 8deea7f..b318ab7 100644 --- a/model/salesDetails.go +++ b/model/salesDetails.go @@ -77,7 +77,7 @@ case constvar.SalesDetailsKeywordTypePrincipal: db = db.Joins("left join user on user.id = sales_details.member_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) case constvar.SalesDetailsKeywordTypeProductName: - //db = db.Joins("left join sales_details_product sdp on sdp.sales_details_id = sales_details.id left join product").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + db = db.Joins("left join sales_details_product sdp on sdp.sales_details_id = sales_details.id left join products on sdp.product_id = products.id").Where("products.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) } if slf.Preload { diff --git a/model/serviceContract.go b/model/serviceContract.go index 14a5e7a..1ecbb1a 100644 --- a/model/serviceContract.go +++ b/model/serviceContract.go @@ -96,7 +96,7 @@ case constvar.ServiceContractKeywordPrincipal: db = db.Joins("left join user on user.id = service_contract.member_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) case constvar.ServiceContractKeywordProductName: - db = db.Joins("Products", clause.LeftJoin).Where("Products.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + db = db.Joins("left join service_contract_product scp on scp.service_contract_id = service_contract.id left join products on scp.product_id = products.id").Where("products.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) case constvar.ServiceContractKeywordServiceBeginDate: db = db.Where("start_time = ?", slf.Keyword) case constvar.ServiceContractKeywordServiceEndDate: diff --git a/model/serviceOrder.go b/model/serviceOrder.go index 4e30c5a..2e4ae18 100644 --- a/model/serviceOrder.go +++ b/model/serviceOrder.go @@ -6,6 +6,7 @@ "errors" "fmt" "gorm.io/gorm" + "gorm.io/gorm/clause" ) type ( @@ -32,25 +33,24 @@ PriorityLevel PriorityLevel `gorm:"foreignKey:PriorityLevelId"` AppointmentTime string `gorm:"appointment_time" json:"appointmentTime"` // 棰勭害涓婇棬鏃堕棿 SaleChanceId int `gorm:"sale_leads" json:"saleChanceId"` // 閿�鍞満浼歩d - - SaleChance SaleChance `gorm:"foreignKey:SaleChanceId"` - FaultTypeId int `gorm:"severity_id" json:"faultTypeId"` // 鏁呴殰绫诲埆id - FaultType FaultType `gorm:"foreignKey:FaultTypeId"` - SeverityId int `gorm:"severity_id" json:"severity"` // 涓ラ噸绋嬪害id - Severity Severity `gorm:"foreignKey:SeverityId"` - Status int `gorm:"status" json:"status"` // 澶勭悊鐘舵�� - ExpectTime string `gorm:"expect_time" json:"expectTime"` // 甯屾湜澶勭悊鏃堕棿 - RealTime string `gorm:"real_time" json:"realTime"` // 瀹為檯澶勭悊鏃堕棿 - CarFare float64 `gorm:"car_fare" json:"carFare"` // 浜ら�氳垂 - ChargeAmount float64 `gorm:"charge_amount" json:"chargeAmount"` // 鏀惰垂閲戦 - TimeSpentId int `gorm:"time_spent_id" json:"timeSpentId"` // 鑺辫垂鏃堕棿 - TimeSpent TimeSpent `gorm:"foreignKey:TimeSpentId"` - FaqId int `gorm:"problem_id" json:"faqId"` // 甯歌闂id - Faq Faq `gorm:"foreignKey:FaqId"` - ProblemDesc string `gorm:"problem_desc" json:"problemDesc"` // 闂鎻忚堪 - Solution string `gorm:"solution" json:"solution"` // 瑙e喅鏂规硶 - SolutionRemark string `gorm:"solution_remark" json:"solutionRemark"` // 鍐呴儴澶囨敞 - Remark string `gorm:"remark" json:"remark"` // 澶囨敞 + SaleChance SaleChance `gorm:"foreignKey:SaleChanceId"` + FaultTypeId int `gorm:"severity_id" json:"faultTypeId"` // 鏁呴殰绫诲埆id + FaultType FaultType `gorm:"foreignKey:FaultTypeId"` + SeverityId int `gorm:"severity_id" json:"severity"` // 涓ラ噸绋嬪害id + Severity Severity `gorm:"foreignKey:SeverityId"` + Status int `gorm:"status" json:"status"` // 澶勭悊鐘舵�� + ExpectTime string `gorm:"expect_time" json:"expectTime"` // 甯屾湜澶勭悊鏃堕棿 + RealTime string `gorm:"real_time" json:"realTime"` // 瀹為檯澶勭悊鏃堕棿 + CarFare float64 `gorm:"car_fare" json:"carFare"` // 浜ら�氳垂 + ChargeAmount float64 `gorm:"charge_amount" json:"chargeAmount"` // 鏀惰垂閲戦 + TimeSpentId int `gorm:"time_spent_id" json:"timeSpentId"` // 鑺辫垂鏃堕棿 + TimeSpent TimeSpent `gorm:"foreignKey:TimeSpentId"` + FaqId int `gorm:"problem_id" json:"faqId"` // 甯歌闂id + Faq Faq `gorm:"foreignKey:FaqId"` + ProblemDesc string `gorm:"problem_desc" json:"problemDesc"` // 闂鎻忚堪 + Solution string `gorm:"solution" json:"solution"` // 瑙e喅鏂规硶 + SolutionRemark string `gorm:"solution_remark" json:"solutionRemark"` // 鍐呴儴澶囨敞 + Remark string `gorm:"remark" json:"remark"` // 澶囨敞 } // ServiceOrderSearch 鏈嶅姟鍗曟悳绱㈡潯浠� @@ -94,6 +94,22 @@ Preload("Severity"). Preload("Faq") } + switch slf.KeywordType { + case constvar.ServiceOrderKeywordClientName: + db = db.Joins("Client", clause.LeftJoin).Where("Client.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + case constvar.ServiceOrderKeywordOrderNumber: + db = db.Where("service_number = ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + case constvar.ServiceOrderKeywordSubject: + db = db.Where("subject = ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + case constvar.ServiceOrderKeywordRealProcessTime: + db = db.Where("real_time = ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + case constvar.ServiceOrderKeywordServiceMan: + db = db.Joins("left join user on user.id = service_order.service_man_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + case constvar.ServiceOrderKeywordServiceType: + db = db.Joins("ServiceType", clause.LeftJoin).Where("ServiceType.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + case constvar.ServiceOrderKeywordFaultType: + db = db.Joins("FaultType", clause.LeftJoin).Where("FaultType.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + } return db } @@ -125,6 +141,26 @@ return slf } +func (slf *ServiceOrderSearch) SetPage(page, size int) *ServiceOrderSearch { + slf.PageNum, slf.PageSize = page, size + return slf +} + +func (slf *ServiceOrderSearch) SetKeywordType(keyword constvar.ServiceOrderKeywordType) *ServiceOrderSearch { + slf.KeywordType = keyword + return slf +} + +func (slf *ServiceOrderSearch) SetQueryClass(queryClass constvar.ServiceOrderQueryClass) *ServiceOrderSearch { + slf.QueryClass = queryClass + return slf +} + +func (slf *ServiceOrderSearch) SetKeyword(keyword string) *ServiceOrderSearch { + slf.Keyword = keyword + return slf +} + func (slf *ServiceOrderSearch) SetPreload(preload bool) *ServiceOrderSearch { slf.Preload = preload return slf diff --git a/service/serviceOrder.go b/service/serviceOrder.go index c33f292..cdfe5d9 100644 --- a/service/serviceOrder.go +++ b/service/serviceOrder.go @@ -1,6 +1,7 @@ package service import ( + "aps_crm/constvar" "aps_crm/model" "aps_crm/model/request" "aps_crm/pkg/ecode" @@ -29,8 +30,14 @@ return ecode.OK } -func (ServiceOrderService) GetServiceOrderList() ([]*model.ServiceOrder, int64, int) { - list, total, err := model.NewServiceOrderSearch().SetPreload(true).Find() +func (ServiceOrderService) GetServiceOrderList(page, pageSize int, queryClass constvar.ServiceOrderQueryClass, keywordType constvar.ServiceOrderKeywordType, keyword string) ([]*model.ServiceOrder, int64, int) { + list, total, err := model.NewServiceOrderSearch(). + SetPage(page, pageSize). + SetKeyword(keyword). + SetKeywordType(keywordType). + SetQueryClass(queryClass). + SetPreload(true). + Find() if err != nil { return nil, 0, ecode.DBErr } -- Gitblit v1.8.0