From 724674c54da32406a16264850c3719b2553aada6 Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期四, 10 八月 2023 19:35:36 +0800
Subject: [PATCH] Merge branch 'master' into fly
---
model/timeSpent.go | 14
router/serviceOrder.go | 2
service/serviceOrder.go | 11
api/v1/serviceOrder.go | 8
docs/swagger.yaml | 66 +++++
service/serviceFollowup.go | 4
docs/docs.go | 91 ++++++
docs/swagger.json | 91 ++++++
model/request/serviceOrder.go | 6
model/serviceFollowup.go | 317 +++++++++++++-----------
model/serviceContract.go | 8
model/serviceOrder.go | 100 +++++--
model/salesDetails.go | 2
constvar/serviceOrder.go | 10
14 files changed, 527 insertions(+), 203 deletions(-)
diff --git a/api/v1/serviceOrder.go b/api/v1/serviceOrder.go
index 426dcef..1eec84f 100644
--- a/api/v1/serviceOrder.go
+++ b/api/v1/serviceOrder.go
@@ -99,15 +99,17 @@
// @Tags 鏈嶅姟鍗曠鐞�
// @Summary 鑾峰彇鏈嶅姟鍗曞垪琛�
// @Produce application/json
+// @Param object body request.GetServiceOrderList true "鍙傛暟"
// @Success 200 {object} response.ListResponse{data=[]model.ServiceOrder}
-// @Router /api/serviceOrder/list [get]
+// @Router /api/serviceOrder/list [post]
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 b034d29..17994ca 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -8388,7 +8388,7 @@
}
},
"/api/serviceOrder/list": {
- "get": {
+ "post": {
"produces": [
"application/json"
],
@@ -8396,6 +8396,17 @@
"鏈嶅姟鍗曠鐞�"
],
"summary": "鑾峰彇鏈嶅姟鍗曞垪琛�",
+ "parameters": [
+ {
+ "description": "鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.GetServiceOrderList"
+ }
+ }
+ ],
"responses": {
"200": {
"description": "OK",
@@ -10084,6 +10095,38 @@
"ServiceFollowupKeywordCustomerServiceNo",
"ServiceFollowupKeywordVisitor",
"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": {
@@ -11854,8 +11897,17 @@
"model.ServiceFollowup": {
"type": "object",
"properties": {
+ "Member": {
+ "$ref": "#/definitions/model.User"
+ },
+ "client": {
+ "$ref": "#/definitions/model.Client"
+ },
"clientId": {
"type": "integer"
+ },
+ "contact": {
+ "$ref": "#/definitions/model.Contact"
},
"contactId": {
"type": "integer"
@@ -11869,6 +11921,9 @@
"id": {
"type": "integer"
},
+ "isVisit": {
+ "$ref": "#/definitions/model.IsVisit"
+ },
"isVisitId": {
"type": "integer"
},
@@ -11877,6 +11932,9 @@
},
"number": {
"type": "string"
+ },
+ "oldMember": {
+ "$ref": "#/definitions/model.User"
},
"oldMemberId": {
"type": "integer"
@@ -11887,6 +11945,9 @@
"remark": {
"type": "string"
},
+ "satisfaction": {
+ "$ref": "#/definitions/model.Satisfaction"
+ },
"satisfactionId": {
"type": "integer"
},
@@ -11896,8 +11957,14 @@
"serviceOrder": {
"$ref": "#/definitions/model.ServiceOrder"
},
+ "solveRate": {
+ "$ref": "#/definitions/model.SolveRate"
+ },
"solveRateId": {
"type": "integer"
+ },
+ "timelyRate": {
+ "$ref": "#/definitions/model.TimelyRate"
},
"timelyRateId": {
"type": "integer"
@@ -14425,6 +14492,28 @@
}
}
},
+ "request.GetServiceOrderList": {
+ "type": "object",
+ "properties": {
+ "keyword": {
+ "type": "string"
+ },
+ "keywordType": {
+ "$ref": "#/definitions/constvar.ServiceOrderKeywordType"
+ },
+ "page": {
+ "description": "椤电爜",
+ "type": "integer"
+ },
+ "pageSize": {
+ "description": "姣忛〉澶у皬",
+ "type": "integer"
+ },
+ "queryClass": {
+ "$ref": "#/definitions/constvar.ServiceOrderQueryClass"
+ }
+ }
+ },
"request.GetSubOrderList": {
"type": "object",
"properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index ae236c1..0b42f32 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -8376,7 +8376,7 @@
}
},
"/api/serviceOrder/list": {
- "get": {
+ "post": {
"produces": [
"application/json"
],
@@ -8384,6 +8384,17 @@
"鏈嶅姟鍗曠鐞�"
],
"summary": "鑾峰彇鏈嶅姟鍗曞垪琛�",
+ "parameters": [
+ {
+ "description": "鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.GetServiceOrderList"
+ }
+ }
+ ],
"responses": {
"200": {
"description": "OK",
@@ -10072,6 +10083,38 @@
"ServiceFollowupKeywordCustomerServiceNo",
"ServiceFollowupKeywordVisitor",
"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": {
@@ -11842,8 +11885,17 @@
"model.ServiceFollowup": {
"type": "object",
"properties": {
+ "Member": {
+ "$ref": "#/definitions/model.User"
+ },
+ "client": {
+ "$ref": "#/definitions/model.Client"
+ },
"clientId": {
"type": "integer"
+ },
+ "contact": {
+ "$ref": "#/definitions/model.Contact"
},
"contactId": {
"type": "integer"
@@ -11857,6 +11909,9 @@
"id": {
"type": "integer"
},
+ "isVisit": {
+ "$ref": "#/definitions/model.IsVisit"
+ },
"isVisitId": {
"type": "integer"
},
@@ -11865,6 +11920,9 @@
},
"number": {
"type": "string"
+ },
+ "oldMember": {
+ "$ref": "#/definitions/model.User"
},
"oldMemberId": {
"type": "integer"
@@ -11875,6 +11933,9 @@
"remark": {
"type": "string"
},
+ "satisfaction": {
+ "$ref": "#/definitions/model.Satisfaction"
+ },
"satisfactionId": {
"type": "integer"
},
@@ -11884,8 +11945,14 @@
"serviceOrder": {
"$ref": "#/definitions/model.ServiceOrder"
},
+ "solveRate": {
+ "$ref": "#/definitions/model.SolveRate"
+ },
"solveRateId": {
"type": "integer"
+ },
+ "timelyRate": {
+ "$ref": "#/definitions/model.TimelyRate"
},
"timelyRateId": {
"type": "integer"
@@ -14413,6 +14480,28 @@
}
}
},
+ "request.GetServiceOrderList": {
+ "type": "object",
+ "properties": {
+ "keyword": {
+ "type": "string"
+ },
+ "keywordType": {
+ "$ref": "#/definitions/constvar.ServiceOrderKeywordType"
+ },
+ "page": {
+ "description": "椤电爜",
+ "type": "integer"
+ },
+ "pageSize": {
+ "description": "姣忛〉澶у皬",
+ "type": "integer"
+ },
+ "queryClass": {
+ "$ref": "#/definitions/constvar.ServiceOrderQueryClass"
+ }
+ }
+ },
"request.GetSubOrderList": {
"type": "object",
"properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 81560ca..1fcbadf 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
@@ -1410,8 +1436,14 @@
type: object
model.ServiceFollowup:
properties:
+ Member:
+ $ref: '#/definitions/model.User'
+ client:
+ $ref: '#/definitions/model.Client'
clientId:
type: integer
+ contact:
+ $ref: '#/definitions/model.Contact'
contactId:
type: integer
customerServiceSheet:
@@ -1420,26 +1452,36 @@
type: string
id:
type: integer
+ isVisit:
+ $ref: '#/definitions/model.IsVisit'
isVisitId:
type: integer
memberId:
type: integer
number:
type: string
+ oldMember:
+ $ref: '#/definitions/model.User'
oldMemberId:
type: integer
planId:
type: integer
remark:
type: string
+ satisfaction:
+ $ref: '#/definitions/model.Satisfaction'
satisfactionId:
type: integer
serviceId:
type: integer
serviceOrder:
$ref: '#/definitions/model.ServiceOrder'
+ solveRate:
+ $ref: '#/definitions/model.SolveRate'
solveRateId:
type: integer
+ timelyRate:
+ $ref: '#/definitions/model.TimelyRate'
timelyRateId:
type: integer
type: object
@@ -3171,6 +3213,21 @@
pageSize:
description: 姣忛〉澶у皬
type: integer
+ type: object
+ request.GetServiceOrderList:
+ properties:
+ keyword:
+ type: string
+ keywordType:
+ $ref: '#/definitions/constvar.ServiceOrderKeywordType'
+ page:
+ description: 椤电爜
+ type: integer
+ pageSize:
+ description: 姣忛〉澶у皬
+ type: integer
+ queryClass:
+ $ref: '#/definitions/constvar.ServiceOrderQueryClass'
type: object
request.GetSubOrderList:
properties:
@@ -10614,7 +10671,14 @@
tags:
- 鏈嶅姟鍗曠鐞�
/api/serviceOrder/list:
- get:
+ post:
+ parameters:
+ - description: 鍙傛暟
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.GetServiceOrderList'
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..0b64a4f 100644
--- a/model/serviceContract.go
+++ b/model/serviceContract.go
@@ -26,9 +26,9 @@
Quotation Quotation `json:"quotation" gorm:"foreignKey:QuotationId"`
ServiceContractTypeId int `json:"serviceContractTypeId" gorm:"column:service_contract_type_id;type:int;comment:鍚堝悓绫诲瀷id"`
ServiceContractType ServiceContractType `json:"serviceContractType" gorm:"foreignKey:ServiceContractTypeId"`
- SignTime string `json:"signTime" gorm:"column:sign_time;type:datetime;comment:绛剧害鏃堕棿"`
- StartTime string `json:"startTime" gorm:"column:start_time;type:datetime;comment:寮�濮嬫椂闂�"`
- EndTime string `json:"endTime" gorm:"column:end_time;type:datetime;comment:缁撴潫鏃堕棿"`
+ SignTime string `json:"signTime" gorm:"column:sign_time;type:varchar(255);comment:绛剧害鏃堕棿"`
+ StartTime string `json:"startTime" gorm:"column:start_time;type:varchar(255);comment:寮�濮嬫椂闂�"`
+ EndTime string `json:"endTime" gorm:"column:end_time;type:varchar(255);comment:缁撴潫鏃堕棿"`
ServiceContractStatusId int `json:"serviceContractStatusId" gorm:"column:service_contract_status_id;type:int;comment:鍚堝悓鐘舵�乮d"`
ServiceContractStatus ServiceContractStatus `json:"serviceContractStatus" gorm:"foreignKey:ServiceContractStatusId"`
ServiceTimes int `json:"serviceTimes" gorm:"column:service_times;type:int;comment:鏈嶅姟娆℃暟"`
@@ -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/serviceFollowup.go b/model/serviceFollowup.go
index d2d4ada..29e80f6 100644
--- a/model/serviceFollowup.go
+++ b/model/serviceFollowup.go
@@ -1,145 +1,172 @@
-package model
-
-import (
- "aps_crm/constvar"
- "aps_crm/pkg/mysqlx"
- "gorm.io/gorm"
-)
-
-type (
- ServiceFollowup struct {
- Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
- ClientId int `json:"clientId" gorm:"column:client_id;type:int;comment:瀹㈡埛id"`
- Number string `json:"number" gorm:"column:number;type:varchar(255);comment:鍚堝悓缂栧彿"`
- ContactId int `json:"contactId" gorm:"column:contact_id;type:int;comment:鑱旂郴浜篿d"`
- ServiceId int `json:"serviceId" gorm:"column:service_id;type:int;comment:瀹㈡埛鏈嶅姟鍗昳d"`
- ServiceOrder ServiceOrder `gorm:"foreignKey:ServiceId"`
- CustomerServiceSheet CustomerServiceSheet `json:"customerServiceSheet" gorm:"foreignKey:ServiceId"`
- MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:鏈嶅姟浜哄憳id"`
- PlanId int `json:"planId" gorm:"column:plan_id;type:int;comment:鏈嶅姟璁″垝id"`
- SatisfactionId int `json:"satisfactionId" gorm:"column:satisfaction_id;type:int;comment:婊℃剰搴d"`
- TimelyRateId int `json:"timelyRateId" gorm:"column:timely_rate_id;type:int;comment:鍙婃椂鐜噄d"`
- SolveRateId int `json:"solveRateId" gorm:"column:solve_rate_id;type:int;comment:瑙e喅鐜噄d"`
- IsVisitId int `json:"isVisitId" gorm:"column:is_visit_id;type:int;comment:鏈嶅姟浜哄憳鏄惁鏉ヨ繃id"`
- OldMemberId int `json:"oldMemberId" gorm:"column:old_member_id;type:int;comment:鍘熸湇鍔′汉鍛�"`
- Remark string `json:"remark" gorm:"column:remark;type:text;comment:澶囨敞"`
- File string `json:"file" gorm:"column:file;type:varchar(255);comment:闄勪欢"`
-
- gorm.Model `json:"-"`
- }
-
- ServiceFollowupSearch struct {
- ServiceFollowup
- Orm *gorm.DB
- KeywordType constvar.ServiceFollowupKeywordType
- Keyword interface{}
- OrderBy string
- PageNum int
- PageSize int
- }
-)
-
-func (ServiceFollowup) TableName() string {
- return "service_followup"
-}
-
-func NewServiceFollowupSearch() *ServiceFollowupSearch {
- return &ServiceFollowupSearch{
- Orm: mysqlx.GetDB(),
- }
-}
-
-func (slf *ServiceFollowupSearch) build() *gorm.DB {
- var db = slf.Orm.Model(&ServiceFollowup{})
- if slf.Id != 0 {
- db = db.Where("id = ?", slf.Id)
- }
-
- switch slf.KeywordType {
- case constvar.ServiceFollowupKeywordFollowupNo:
- db = db.Where("number = ?", slf.Keyword)
- case constvar.ServiceFollowupKeywordCustomerName:
- db = db.Where("client_id = ?", slf.Keyword)
- case constvar.ServiceFollowupKeywordContactName:
- db = db.Where("contact_id = ?", slf.Keyword)
- case constvar.ServiceFollowupKeywordCustomerServiceNo:
- db = db.Where("service_id = ?", slf.Keyword)
- case constvar.ServiceFollowupKeywordVisitor:
- db = db.Where("member_id = ?", slf.Keyword)
- case constvar.ServiceFollowupKeywordSatisfactionDegree:
- db = db.Where("satisfaction_id = ?", slf.Keyword)
-
- }
-
- return db
-}
-
-func (slf *ServiceFollowupSearch) Create(record *ServiceFollowup) error {
- var db = slf.build()
- return db.Create(record).Error
-}
-
-func (slf *ServiceFollowupSearch) Update(record *ServiceFollowup) error {
- var db = slf.build()
- return db.Updates(record).Error
-}
-
-func (slf *ServiceFollowupSearch) Delete() error {
- var db = slf.build()
- return db.Delete(&ServiceFollowup{}).Error
-}
-
-func (slf *ServiceFollowupSearch) Find() (*ServiceFollowup, error) {
- var db = slf.build()
- var record = &ServiceFollowup{}
- err := db.First(record).Error
- return record, err
-}
-
-func (slf *ServiceFollowupSearch) FindAll() ([]*ServiceFollowup, int64, error) {
- var db = slf.build()
- var records = make([]*ServiceFollowup, 0)
- var total int64
- if err := db.Count(&total).Error; err != nil {
- return records, total, err
- }
- if slf.PageNum > 0 && slf.PageSize > 0 {
- db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
- }
-
- if slf.PageNum > 0 && slf.PageSize > 0 {
- db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
- }
-
- err := db.Preload("CustomerServiceSheet").Preload("ServiceOrder").Find(&records).Error
- return records, total, err
-}
-
-func (slf *ServiceFollowupSearch) SetId(id int) *ServiceFollowupSearch {
- slf.Id = id
- return slf
-}
-
-func (slf *ServiceFollowupSearch) SetKeywordType(keyword constvar.ServiceFollowupKeywordType) *ServiceFollowupSearch {
- slf.KeywordType = keyword
- return slf
-}
-
-func (slf *ServiceFollowupSearch) SetKeyword(keyword string) *ServiceFollowupSearch {
- slf.Keyword = keyword
- return slf
-}
-
-func (slf *ServiceFollowupSearch) SetPage(page, size int) *ServiceFollowupSearch {
- slf.PageNum, slf.PageSize = page, size
- return slf
-}
-
-func (slf *ServiceFollowupSearch) SetOrder(order string) *ServiceFollowupSearch {
- slf.OrderBy = order
- return slf
-}
-func (slf *ServiceFollowupSearch) SetIds(ids []int) *ServiceFollowupSearch {
- slf.Orm = slf.Orm.Where("id in (?)", ids)
- return slf
-}
+package model
+
+import (
+ "aps_crm/constvar"
+ "aps_crm/pkg/mysqlx"
+ "gorm.io/gorm"
+)
+
+type (
+ ServiceFollowup struct {
+ Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+ ClientId int `json:"clientId" gorm:"column:client_id;type:int;comment:瀹㈡埛id"`
+ Client Client `json:"client" gorm:"foreignKey:ClientId"`
+ Number string `json:"number" gorm:"column:number;type:varchar(255);comment:鍚堝悓缂栧彿"`
+ ContactId int `json:"contactId" gorm:"column:contact_id;type:int;comment:鑱旂郴浜篿d"`
+ Contact Contact `json:"contact" gorm:"foreignKey:ContactId"`
+ ServiceId int `json:"serviceId" gorm:"column:service_id;type:int;comment:瀹㈡埛鏈嶅姟鍗昳d"`
+ ServiceOrder ServiceOrder `gorm:"foreignKey:ServiceId"`
+ CustomerServiceSheet CustomerServiceSheet `json:"customerServiceSheet" gorm:"foreignKey:ServiceId"`
+ MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:鏈嶅姟浜哄憳id"`
+ Member User `json:"Member" gorm:"foreignKey:MemberId"`
+ PlanId int `json:"planId" gorm:"column:plan_id;type:int;comment:鏈嶅姟璁″垝id"`
+ SatisfactionId int `json:"satisfactionId" gorm:"column:satisfaction_id;type:int;comment:婊℃剰搴d"`
+ Satisfaction Satisfaction `json:"satisfaction" gorm:"foreignKey:SatisfactionId"`
+ TimelyRateId int `json:"timelyRateId" gorm:"column:timely_rate_id;type:int;comment:鍙婃椂鐜噄d"`
+ TimelyRate TimelyRate `json:"timelyRate" gorm:"foreignKey:TimelyRateId"`
+ SolveRateId int `json:"solveRateId" gorm:"column:solve_rate_id;type:int;comment:瑙e喅鐜噄d"`
+ SolveRate SolveRate `json:"solveRate" gorm:"foreignKey:SolveRateId"`
+ IsVisitId int `json:"isVisitId" gorm:"column:is_visit_id;type:int;comment:鏈嶅姟浜哄憳鏄惁鏉ヨ繃id"`
+ IsVisit IsVisit `json:"isVisit" gorm:"foreignKey:IsVisitId"`
+ OldMemberId int `json:"oldMemberId" gorm:"column:old_member_id;type:int;comment:鍘熸湇鍔′汉鍛�"`
+ OldMember User `json:"oldMember" gorm:"foreignKey:OldMemberId"`
+ Remark string `json:"remark" gorm:"column:remark;type:text;comment:澶囨敞"`
+ File string `json:"file" gorm:"column:file;type:varchar(255);comment:闄勪欢"`
+
+ gorm.Model `json:"-"`
+ }
+
+ ServiceFollowupSearch struct {
+ ServiceFollowup
+ Orm *gorm.DB
+ KeywordType constvar.ServiceFollowupKeywordType
+ Keyword interface{}
+ OrderBy string
+ PageNum int
+ PageSize int
+ Preload bool
+ }
+)
+
+func (ServiceFollowup) TableName() string {
+ return "service_followup"
+}
+
+func NewServiceFollowupSearch() *ServiceFollowupSearch {
+ return &ServiceFollowupSearch{
+ Orm: mysqlx.GetDB(),
+ }
+}
+
+func (slf *ServiceFollowupSearch) build() *gorm.DB {
+ var db = slf.Orm.Model(&ServiceFollowup{})
+ if slf.Id != 0 {
+ db = db.Where("id = ?", slf.Id)
+ }
+
+ switch slf.KeywordType {
+ case constvar.ServiceFollowupKeywordFollowupNo:
+ db = db.Where("number = ?", slf.Keyword)
+ case constvar.ServiceFollowupKeywordCustomerName:
+ db = db.Where("client_id = ?", slf.Keyword)
+ case constvar.ServiceFollowupKeywordContactName:
+ db = db.Where("contact_id = ?", slf.Keyword)
+ case constvar.ServiceFollowupKeywordCustomerServiceNo:
+ db = db.Where("service_id = ?", slf.Keyword)
+ case constvar.ServiceFollowupKeywordVisitor:
+ db = db.Where("member_id = ?", slf.Keyword)
+ case constvar.ServiceFollowupKeywordSatisfactionDegree:
+ db = db.Where("satisfaction_id = ?", slf.Keyword)
+
+ }
+
+ if slf.Preload {
+ db = db.Preload("CustomerServiceSheet").
+ Preload("ServiceOrder").
+ Preload("Client").
+ Preload("Contact").
+ Preload("Satisfaction").
+ Preload("TimelyRate").
+ Preload("SolveRate").
+ Preload("IsVisit").
+ Preload("OldMember").
+ Preload("Member")
+ }
+
+ return db
+}
+
+func (slf *ServiceFollowupSearch) Create(record *ServiceFollowup) error {
+ var db = slf.build()
+ return db.Create(record).Error
+}
+
+func (slf *ServiceFollowupSearch) Update(record *ServiceFollowup) error {
+ var db = slf.build()
+ return db.Updates(record).Error
+}
+
+func (slf *ServiceFollowupSearch) Delete() error {
+ var db = slf.build()
+ return db.Delete(&ServiceFollowup{}).Error
+}
+
+func (slf *ServiceFollowupSearch) Find() (*ServiceFollowup, error) {
+ var db = slf.build()
+ var record = &ServiceFollowup{}
+ err := db.First(record).Error
+ return record, err
+}
+
+func (slf *ServiceFollowupSearch) FindAll() ([]*ServiceFollowup, int64, error) {
+ var db = slf.build()
+ var records = make([]*ServiceFollowup, 0)
+ var total int64
+ if err := db.Count(&total).Error; err != nil {
+ return records, total, err
+ }
+ if slf.PageNum > 0 && slf.PageSize > 0 {
+ db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
+ }
+
+ if slf.PageNum > 0 && slf.PageSize > 0 {
+ db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
+ }
+
+ err := db.Find(&records).Error
+ return records, total, err
+}
+
+func (slf *ServiceFollowupSearch) SetId(id int) *ServiceFollowupSearch {
+ slf.Id = id
+ return slf
+}
+
+func (slf *ServiceFollowupSearch) SetPreload(preload bool) *ServiceFollowupSearch {
+ slf.Preload = preload
+ return slf
+}
+
+func (slf *ServiceFollowupSearch) SetKeywordType(keyword constvar.ServiceFollowupKeywordType) *ServiceFollowupSearch {
+ slf.KeywordType = keyword
+ return slf
+}
+
+func (slf *ServiceFollowupSearch) SetKeyword(keyword string) *ServiceFollowupSearch {
+ slf.Keyword = keyword
+ return slf
+}
+
+func (slf *ServiceFollowupSearch) SetPage(page, size int) *ServiceFollowupSearch {
+ slf.PageNum, slf.PageSize = page, size
+ return slf
+}
+
+func (slf *ServiceFollowupSearch) SetOrder(order string) *ServiceFollowupSearch {
+ slf.OrderBy = order
+ return slf
+}
+func (slf *ServiceFollowupSearch) SetIds(ids []int) *ServiceFollowupSearch {
+ slf.Orm = slf.Orm.Where("id in (?)", ids)
+ return slf
+}
diff --git a/model/serviceOrder.go b/model/serviceOrder.go
index 4e30c5a..53fea15 100644
--- a/model/serviceOrder.go
+++ b/model/serviceOrder.go
@@ -6,51 +6,51 @@
"errors"
"fmt"
"gorm.io/gorm"
+ "gorm.io/gorm/clause"
)
type (
// ServiceOrder 鏈嶅姟鍗�
ServiceOrder struct {
Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
- ServiceNumber string `gorm:"service_number" json:"serviceNumber"` // 鏈嶅姟鍗曠紪鍙�
- ClientId int `gorm:"client_id" json:"clientId"` // 瀹㈡埛id
+ ServiceNumber string `gorm:"column:service_number;type:varchar(255);not null;default:'';comment:'鏈嶅姟鍗曠紪鍙�'" json:"serviceNumber"` // 鏈嶅姟鍗曠紪鍙�
+ ClientId int `gorm:"column:client_id;type:int;not null;default:0;comment:'瀹㈡埛id'" json:"clientId"` // 瀹㈡埛id
Client Client `gorm:"foreignKey:ClientId"`
- ContractId int `gorm:"contract_id" json:"contractId"` // 鍚堝悓id
+ ContractId int `gorm:"column:contract_id;type:int;not null;default:0;comment:'鍚堝悓id'" json:"contractId"` // 鍚堝悓id
Contract Contract `gorm:"foreignKey:ContractId"`
- OrderId int `gorm:"order_id" json:"orderId"` // 閿�鍞鍗昳d
+ OrderId int `gorm:"column:order_id;type:int;not null;default:0;comment:'閿�鍞鍗昳d'" json:"orderId"` // 閿�鍞鍗昳d
OrderManage OrderManage `gorm:"foreignKey:OrderId"`
- Subject string `gorm:"subject" json:"subject"` // 涓婚
- ProductId int `gorm:"product_id" json:"productId"` // 浜у搧id
+ Subject string `gorm:"column:subject;type:varchar(255);not null;default:'';comment:'涓婚'" json:"subject"` // 涓婚
+ ProductId int `gorm:"column:product_id;type:int;not null;default:0;comment:'浜у搧id'" json:"productId"` // 浜у搧id
Product Product `gorm:"foreignKey:ProductId"`
- ServiceTypeId int `gorm:"service_type_id" json:"serviceTypeId"` // 鏈嶅姟鏂瑰紡id
+ ServiceTypeId int `gorm:"column:service_type_id;type:int;not null;default:0;comment:'鏈嶅姟鏂瑰紡id'" json:"serviceTypeId"` // 鏈嶅姟鏂瑰紡id
ServiceType ServiceType `gorm:"foreignKey:ServiceTypeId"`
- ServiceManId int `gorm:"service_man_id" json:"serviceManId"` // 鏈嶅姟浜哄憳
- ContactId int `gorm:"linkman_id" json:"contactId"` // 鑱旂郴浜篿d
+ ServiceManId int `gorm:"column:service_man_id;type:int;not null;default:0;comment:'鏈嶅姟浜哄憳'" json:"serviceManId"` // 鏈嶅姟浜哄憳
+ ContactId int `gorm:"linkman_id" json:"contactId"` // 鑱旂郴浜篿d
Contact Contact `gorm:"foreignKey:ContactId"`
- Address string `gorm:"address" json:"address"` // 涓婇棬鍦板潃
- PriorityLevelId int `gorm:"priority_level_id" json:"priorityLevelId"` // 浼樺厛绾у埆id
+ Address string `gorm:"column:address;type:varchar(255);not null;default:'';comment:'涓婇棬鍦板潃'" json:"address"` // 涓婇棬鍦板潃
+ PriorityLevelId int `gorm:"column:priority_level_id;type:int;not null;default:0;comment:'浼樺厛绾у埆id'" json:"priorityLevelId"` // 浼樺厛绾у埆id
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"` // 澶囨敞
+ AppointmentTime string `gorm:"appointment_time" json:"appointmentTime"` // 棰勭害涓婇棬鏃堕棿
+ SaleChanceId int `gorm:"column:sale_chance_id;type:int;not null;default:0;comment:'閿�鍞満浼歩d'" json:"saleChanceId"` // 閿�鍞満浼歩d
+ SaleChance SaleChance `gorm:"foreignKey:SaleChanceId"`
+ FaultTypeId int `gorm:"column:severity_id;type:int;not null;default:0;comment:'鏁呴殰绫诲埆id'" json:"faultTypeId"` // 鏁呴殰绫诲埆id
+ FaultType FaultType `gorm:"foreignKey:FaultTypeId"`
+ SeverityId int `gorm:"column:severity_id;type:int;not null;default:0;comment:'涓ラ噸绋嬪害id'" json:"severity"` // 涓ラ噸绋嬪害id
+ Severity Severity `gorm:"foreignKey:SeverityId"`
+ Status int `gorm:"status" json:"status"` // 澶勭悊鐘舵��
+ ExpectTime string `gorm:"column:expect_time;type:varchar(255);not null;default:'';comment:'甯屾湜澶勭悊鏃堕棿'" json:"expectTime"` // 甯屾湜澶勭悊鏃堕棿
+ RealTime string `gorm:"column:real_time;type:varchar(255);not null;default:'';comment:'瀹為檯澶勭悊鏃堕棿'" json:"realTime"` // 瀹為檯澶勭悊鏃堕棿
+ CarFare float64 `gorm:"car_fare" json:"carFare"` // 浜ら�氳垂
+ ChargeAmount float64 `gorm:"charge_amount" json:"chargeAmount"` // 鏀惰垂閲戦
+ TimeSpentId int `gorm:"column:time_spent_id;type:int;not null;default:0;comment:'鑺辫垂鏃堕棿'" json:"timeSpentId"` // 鑺辫垂鏃堕棿
+ TimeSpent TimeSpent `gorm:"foreignKey:TimeSpentId"`
+ FaqId int `gorm:"column:problem_id;type:int;not null;default:0;comment:'甯歌闂id'" json:"faqId"` // 甯歌闂id
+ Faq Faq `gorm:"foreignKey:FaqId"`
+ ProblemDesc string `gorm:"column:subject;type:varchar(255);not null;default:'';comment:'涓婚'problem_desc" json:"problemDesc"` // 闂鎻忚堪
+ Solution string `gorm:"column:solution;type:varchar(255);not null;default:'';comment:'瑙e喅鏂规硶'" json:"solution"` // 瑙e喅鏂规硶
+ SolutionRemark string `gorm:"column:solution_remark;type:varchar(255);not null;default:'';comment:'鍐呴儴澶囨敞'" json:"solutionRemark"` // 鍐呴儴澶囨敞
+ Remark string `gorm:"column:remark;type:varchar(255);not null;default:'';comment:'澶囨敞'" 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/model/timeSpent.go b/model/timeSpent.go
index de29623..6243445 100644
--- a/model/timeSpent.go
+++ b/model/timeSpent.go
@@ -12,18 +12,18 @@
// TimeSpent 鑺辫垂鏃堕棿
TimeSpent struct {
Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
- Name string `json:"name" gorm:"column:name"`
+ Name string `json:"name" gorm:"column:name;type:varchar(255);not null;default:'';comment:鍚嶇О"`
}
// TimeSpentSearch 鑺辫垂鏃堕棿鎼滅储鏉′欢
TimeSpentSearch struct {
TimeSpent
- Orm *gorm.DB
- QueryClass constvar.TimeSpentQueryClass
- KeywordType constvar.TimeSpentKeywordType
- Keyword string
- PageNum int
- PageSize int
+ Orm *gorm.DB
+ QueryClass constvar.TimeSpentQueryClass
+ KeywordType constvar.TimeSpentKeywordType
+ Keyword string
+ PageNum int
+ PageSize int
}
)
diff --git a/router/serviceOrder.go b/router/serviceOrder.go
index 8efdc84..c9db554 100644
--- a/router/serviceOrder.go
+++ b/router/serviceOrder.go
@@ -12,6 +12,6 @@
ServiceOrderRouter.POST("add", ServiceOrderApi.Add) // 娣诲姞鏈嶅姟鍗�
ServiceOrderRouter.DELETE("delete/:id", ServiceOrderApi.Delete) // 鍒犻櫎鏈嶅姟鍗�
ServiceOrderRouter.PUT("update", ServiceOrderApi.Update) // 鏇存柊鏈嶅姟鍗�
- ServiceOrderRouter.GET("list", ServiceOrderApi.List) // 鑾峰彇鏈嶅姟鍗曞垪琛�
+ ServiceOrderRouter.POST("list", ServiceOrderApi.List) // 鑾峰彇鏈嶅姟鍗曞垪琛�
}
}
diff --git a/service/serviceFollowup.go b/service/serviceFollowup.go
index bdcb710..1ae3722 100644
--- a/service/serviceFollowup.go
+++ b/service/serviceFollowup.go
@@ -46,7 +46,9 @@
contacts, total, err := model.NewServiceFollowupSearch().
SetKeywordType(keywordType).
SetKeyword(keyword).
- SetPage(page, pageSize).FindAll()
+ SetPage(page, pageSize).
+ SetPreload(true).
+ FindAll()
if err != nil {
return nil, 0, ecode.ServiceFollowupListErr
}
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