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