From 663db1dd160e759c9401289554543b1d1ea1e5cb Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期六, 05 八月 2023 12:17:17 +0800
Subject: [PATCH] 服务单管理故障类别增删改查,服务单管理花费时间增删改查,增加服务方式、花费时间、严重程度、优先级别初始化数据
---
model/severity.go | 42
constvar/timeSpent.go | 12
service/faultType.go | 66 +
service/serviceOrder.go | 14
docs/swagger.yaml | 302 ++++++-
model/request/serviceOrder.go | 31
model/serviceType.go | 43
api/v1/timeSpent.go | 106 ++
api/v1/serviceType.go | 5
pkg/safe/safe.go | 2
pkg/structx/structx.go | 16
model/timeSpent.go | 142 +++
constvar/faultType.go | 12
router/faultType.go | 17
model/request/faultType.go | 22
api/v1/serviceOrder.go | 15
docs/docs.go | 447 +++++++++--
model/priorityLevel.go | 42
docs/swagger.json | 447 +++++++++--
model/serviceOrder.go | 30
router/timeSpent.go | 17
model/faultType.go | 119 +++
model/index.go | 54 +
model/request/timeSpent.go | 22
api/v1/faultType.go | 106 ++
service/timeSpent.go | 66 +
api/v1/severity.go | 5
model/faq.go | 21
28 files changed, 1,899 insertions(+), 324 deletions(-)
diff --git a/api/v1/faultType.go b/api/v1/faultType.go
new file mode 100644
index 0000000..2b2beb5
--- /dev/null
+++ b/api/v1/faultType.go
@@ -0,0 +1,106 @@
+package v1
+
+import (
+ "aps_crm/model/request"
+ "aps_crm/model/response"
+ "aps_crm/pkg/contextx"
+ "aps_crm/pkg/ecode"
+ "aps_crm/service"
+ "github.com/gin-gonic/gin"
+ "strconv"
+)
+
+type FaultTypeApi struct{}
+
+// Add
+// @Tags 鏁呴殰绫诲埆绠$悊
+// @Summary 娣诲姞鏁呴殰绫诲埆
+// @Produce application/json
+// @Param object body request.AddFaultType true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{}
+// @Router /api/faultType/add [post]
+func (s *FaultTypeApi) Add(c *gin.Context) {
+ var params request.AddFaultType
+ ctx, ok := contextx.NewContext(c, ¶ms)
+ if !ok {
+ return
+ }
+
+ errCode := service.NewFaultTypeService().AddFaultType(¶ms.FaultType)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.Ok()
+}
+
+// Delete
+// @Tags 鏁呴殰绫诲埆绠$悊
+// @Summary 鍒犻櫎鏁呴殰绫诲埆
+// @Produce application/json
+// @Param id path int true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{}
+// @Router /api/faultType/delete/{id} [delete]
+func (s *FaultTypeApi) Delete(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+
+ id, _ := strconv.Atoi(c.Param("id"))
+ errCode := service.NewFaultTypeService().DeleteFaultType(id)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.Ok()
+}
+
+// Update
+// @Tags 鏁呴殰绫诲埆绠$悊
+// @Summary 鏇存柊鏁呴殰绫诲埆
+// @Produce application/json
+// @Param object body request.UpdateFaultType true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{}
+// @Router /api/faultType/update [put]
+func (s *FaultTypeApi) Update(c *gin.Context) {
+ var params request.UpdateFaultType
+ ctx, ok := contextx.NewContext(c, ¶ms)
+ if !ok {
+ return
+ }
+
+ errCode := service.NewFaultTypeService().UpdateFaultType(¶ms.FaultType)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.Ok()
+}
+
+// List
+// @Tags 鏁呴殰绫诲埆绠$悊
+// @Summary 鑾峰彇鏁呴殰绫诲埆鍒楄〃
+// @Produce application/json
+// @Success 200 {object} response.ListResponse{data=[]model.FaultType}
+// @Router /api/faultType/list [get]
+func (s *FaultTypeApi) List(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+
+ faultType, total, errCode := service.NewFaultTypeService().GetFaultTypeList()
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.OkWithDetailed(response.ListResponse{
+ Data: faultType,
+ Count: total,
+ })
+}
diff --git a/api/v1/serviceOrder.go b/api/v1/serviceOrder.go
index 3beabbd..426dcef 100644
--- a/api/v1/serviceOrder.go
+++ b/api/v1/serviceOrder.go
@@ -6,6 +6,7 @@
"aps_crm/model/response"
"aps_crm/pkg/contextx"
"aps_crm/pkg/ecode"
+ "aps_crm/pkg/structx"
"aps_crm/service"
"github.com/gin-gonic/gin"
"strconv"
@@ -28,6 +29,10 @@
}
serviceOrder := new(model.ServiceOrder)
+ if err := structx.AssignTo(params, serviceOrder); err != nil {
+ ctx.Fail(ecode.ParamsErr)
+ return
+ }
errCode := service.NewServiceOrderService().AddServiceOrder(serviceOrder)
if errCode != ecode.OK {
@@ -75,7 +80,13 @@
return
}
- errCode := service.NewServiceOrderService().UpdateServiceOrder(¶ms.ServiceOrder)
+ serviceOrder := new(model.ServiceOrder)
+ if err := structx.AssignTo(params, serviceOrder); err != nil {
+ ctx.Fail(ecode.ParamsErr)
+ return
+ }
+
+ errCode := service.NewServiceOrderService().UpdateServiceOrder(serviceOrder)
if errCode != ecode.OK {
ctx.Fail(errCode)
return
@@ -103,7 +114,7 @@
}
ctx.OkWithDetailed(response.ListResponse{
- Data: serviceOrder,
+ Data: serviceOrder,
Count: total,
})
}
diff --git a/api/v1/serviceType.go b/api/v1/serviceType.go
index 5e4ba9f..ed5843b 100644
--- a/api/v1/serviceType.go
+++ b/api/v1/serviceType.go
@@ -1,7 +1,6 @@
package v1
import (
- "aps_crm/model"
"aps_crm/model/request"
"aps_crm/model/response"
"aps_crm/pkg/contextx"
@@ -27,9 +26,7 @@
return
}
- serviceType := new(model.ServiceType)
-
- errCode := service.NewServiceTypeService().AddServiceType(serviceType)
+ errCode := service.NewServiceTypeService().AddServiceType(¶ms.ServiceType)
if errCode != ecode.OK {
ctx.Fail(errCode)
return
diff --git a/api/v1/severity.go b/api/v1/severity.go
index e7f5e7a..fe4100d 100644
--- a/api/v1/severity.go
+++ b/api/v1/severity.go
@@ -1,7 +1,6 @@
package v1
import (
- "aps_crm/model"
"aps_crm/model/request"
"aps_crm/model/response"
"aps_crm/pkg/contextx"
@@ -27,9 +26,7 @@
return
}
- severity := new(model.Severity)
-
- errCode := service.NewSeverityService().AddSeverity(severity)
+ errCode := service.NewSeverityService().AddSeverity(¶ms.Severity)
if errCode != ecode.OK {
ctx.Fail(errCode)
return
diff --git a/api/v1/timeSpent.go b/api/v1/timeSpent.go
new file mode 100644
index 0000000..0960310
--- /dev/null
+++ b/api/v1/timeSpent.go
@@ -0,0 +1,106 @@
+package v1
+
+import (
+ "aps_crm/model/request"
+ "aps_crm/model/response"
+ "aps_crm/pkg/contextx"
+ "aps_crm/pkg/ecode"
+ "aps_crm/service"
+ "github.com/gin-gonic/gin"
+ "strconv"
+)
+
+type TimeSpentApi struct{}
+
+// Add
+// @Tags 鑺辫垂鏃堕棿绠$悊
+// @Summary 娣诲姞鑺辫垂鏃堕棿
+// @Produce application/json
+// @Param object body request.AddTimeSpent true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{}
+// @Router /api/timeSpent/add [post]
+func (s *TimeSpentApi) Add(c *gin.Context) {
+ var params request.AddTimeSpent
+ ctx, ok := contextx.NewContext(c, ¶ms)
+ if !ok {
+ return
+ }
+
+ errCode := service.NewTimeSpentService().AddTimeSpent(¶ms.TimeSpent)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.Ok()
+}
+
+// Delete
+// @Tags 鑺辫垂鏃堕棿绠$悊
+// @Summary 鍒犻櫎鑺辫垂鏃堕棿
+// @Produce application/json
+// @Param id path int true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{}
+// @Router /api/timeSpent/delete/{id} [delete]
+func (s *TimeSpentApi) Delete(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+
+ id, _ := strconv.Atoi(c.Param("id"))
+ errCode := service.NewTimeSpentService().DeleteTimeSpent(id)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.Ok()
+}
+
+// Update
+// @Tags 鑺辫垂鏃堕棿绠$悊
+// @Summary 鏇存柊鑺辫垂鏃堕棿
+// @Produce application/json
+// @Param object body request.UpdateTimeSpent true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{}
+// @Router /api/timeSpent/update [put]
+func (s *TimeSpentApi) Update(c *gin.Context) {
+ var params request.UpdateTimeSpent
+ ctx, ok := contextx.NewContext(c, ¶ms)
+ if !ok {
+ return
+ }
+
+ errCode := service.NewTimeSpentService().UpdateTimeSpent(¶ms.TimeSpent)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.Ok()
+}
+
+// List
+// @Tags 鑺辫垂鏃堕棿绠$悊
+// @Summary 鑾峰彇鑺辫垂鏃堕棿鍒楄〃
+// @Produce application/json
+// @Success 200 {object} response.ListResponse{data=[]model.TimeSpent}
+// @Router /api/timeSpent/list [get]
+func (s *TimeSpentApi) List(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+
+ timeSpent, total, errCode := service.NewTimeSpentService().GetTimeSpentList()
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.OkWithDetailed(response.ListResponse{
+ Data: timeSpent,
+ Count: total,
+ })
+}
diff --git a/constvar/faultType.go b/constvar/faultType.go
new file mode 100644
index 0000000..e522e0a
--- /dev/null
+++ b/constvar/faultType.go
@@ -0,0 +1,12 @@
+package constvar
+type FaultTypeQueryClass string
+
+const (
+ FaultTypeQueryClassExpireLessThen60Days FaultTypeQueryClass = ""
+)
+
+type FaultTypeKeywordType string
+
+const (
+ FaultTypeKeywordCustomerName FaultTypeKeywordType = ""
+)
diff --git a/constvar/timeSpent.go b/constvar/timeSpent.go
new file mode 100644
index 0000000..4f38fe2
--- /dev/null
+++ b/constvar/timeSpent.go
@@ -0,0 +1,12 @@
+package constvar
+type TimeSpentQueryClass string
+
+const (
+ TimeSpentQueryClassExpireLessThen60Days TimeSpentQueryClass = ""
+)
+
+type TimeSpentKeywordType string
+
+const (
+ TimeSpentKeywordCustomerName TimeSpentKeywordType = ""
+)
diff --git a/docs/docs.go b/docs/docs.go
index 041b0a8..20e3b51 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -2196,6 +2196,128 @@
}
}
},
+ "/api/faultType/add": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鏁呴殰绫诲埆绠$悊"
+ ],
+ "summary": "娣诲姞鏁呴殰绫诲埆",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.AddFaultType"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/faultType/delete/{id}": {
+ "delete": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鏁呴殰绫诲埆绠$悊"
+ ],
+ "summary": "鍒犻櫎鏁呴殰绫诲埆",
+ "parameters": [
+ {
+ "type": "integer",
+ "description": "鏌ヨ鍙傛暟",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/faultType/list": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鏁呴殰绫诲埆绠$悊"
+ ],
+ "summary": "鑾峰彇鏁呴殰绫诲埆鍒楄〃",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/response.ListResponse"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.FaultType"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/api/faultType/update": {
+ "put": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鏁呴殰绫诲埆绠$悊"
+ ],
+ "summary": "鏇存柊鏁呴殰绫诲埆",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.UpdateFaultType"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
"/api/followRecord/add": {
"post": {
"produces": [
@@ -7252,6 +7374,128 @@
}
}
},
+ "/api/timeSpent/add": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鑺辫垂鏃堕棿绠$悊"
+ ],
+ "summary": "娣诲姞鑺辫垂鏃堕棿",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.AddTimeSpent"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/timeSpent/delete/{id}": {
+ "delete": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鑺辫垂鏃堕棿绠$悊"
+ ],
+ "summary": "鍒犻櫎鑺辫垂鏃堕棿",
+ "parameters": [
+ {
+ "type": "integer",
+ "description": "鏌ヨ鍙傛暟",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/timeSpent/list": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鑺辫垂鏃堕棿绠$悊"
+ ],
+ "summary": "鑾峰彇鑺辫垂鏃堕棿鍒楄〃",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/response.ListResponse"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.TimeSpent"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/api/timeSpent/update": {
+ "put": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鑺辫垂鏃堕棿绠$悊"
+ ],
+ "summary": "鏇存柊鑺辫垂鏃堕棿",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.UpdateTimeSpent"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
"/api/timelyRate/add": {
"post": {
"produces": [
@@ -8333,6 +8577,17 @@
}
}
},
+ "model.FaultType": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
"model.FollowRecord": {
"type": "object",
"properties": {
@@ -9319,14 +9574,21 @@
"client": {
"$ref": "#/definitions/model.Client"
},
- "client_id": {
+ "clientId": {
"description": "瀹㈡埛id",
+ "type": "integer"
+ },
+ "contact": {
+ "$ref": "#/definitions/model.Contact"
+ },
+ "contact_id": {
+ "description": "鑱旂郴浜篿d",
"type": "integer"
},
"contract": {
"$ref": "#/definitions/model.Contract"
},
- "contract_id": {
+ "contractId": {
"description": "鍚堝悓id",
"type": "integer"
},
@@ -9340,14 +9602,10 @@
"id": {
"type": "integer"
},
- "linkman_id": {
- "description": "鑱旂郴浜篿d",
- "type": "integer"
- },
"order": {
"$ref": "#/definitions/model.OrderManage"
},
- "order_id": {
+ "orderId": {
"description": "閿�鍞鍗昳d",
"type": "integer"
},
@@ -9369,7 +9627,7 @@
"product": {
"$ref": "#/definitions/model.Product"
},
- "product_id": {
+ "productId": {
"description": "浜у搧id",
"type": "integer"
},
@@ -9381,22 +9639,25 @@
"description": "澶囨敞",
"type": "string"
},
- "sale_leads": {
+ "saleChance": {
+ "$ref": "#/definitions/model.SaleChance"
+ },
+ "saleChanceId": {
"description": "閿�鍞満浼歩d",
"type": "integer"
+ },
+ "serviceManId": {
+ "description": "鏈嶅姟浜哄憳",
+ "type": "integer"
+ },
+ "serviceNumber": {
+ "description": "鏈嶅姟鍗曠紪鍙�",
+ "type": "string"
},
"serviceType": {
"$ref": "#/definitions/model.ServiceType"
},
- "service_man_id": {
- "description": "鏈嶅姟浜哄憳",
- "type": "integer"
- },
- "service_number": {
- "description": "鏈嶅姟鍗曠紪鍙�",
- "type": "string"
- },
- "service_type_id": {
+ "serviceTypeId": {
"description": "鏈嶅姟鏂瑰紡",
"type": "integer"
},
@@ -9495,6 +9756,17 @@
"items": {
"$ref": "#/definitions/model.Product"
}
+ }
+ }
+ },
+ "model.TimeSpent": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
}
}
},
@@ -9890,6 +10162,17 @@
}
},
"request.AddFaq": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "request.AddFaultType": {
"type": "object",
"properties": {
"id": {
@@ -10631,17 +10914,15 @@
"description": "鏀惰垂閲戦",
"type": "number"
},
- "client": {
- "$ref": "#/definitions/model.Client"
- },
- "client_id": {
+ "clientId": {
"description": "瀹㈡埛id",
"type": "integer"
},
- "contract": {
- "$ref": "#/definitions/model.Contract"
+ "contact_id": {
+ "description": "鑱旂郴浜篿d",
+ "type": "integer"
},
- "contract_id": {
+ "contractId": {
"description": "鍚堝悓id",
"type": "integer"
},
@@ -10649,25 +10930,9 @@
"description": "甯屾湜澶勭悊鏃堕棿",
"type": "string"
},
- "faq": {
- "$ref": "#/definitions/model.Faq"
- },
- "id": {
- "type": "integer"
- },
- "linkman_id": {
- "description": "鑱旂郴浜篿d",
- "type": "integer"
- },
- "order": {
- "$ref": "#/definitions/model.OrderManage"
- },
- "order_id": {
+ "orderId": {
"description": "閿�鍞鍗昳d",
"type": "integer"
- },
- "priorityLevel": {
- "$ref": "#/definitions/model.PriorityLevel"
},
"priority_level_id": {
"description": "浼樺厛绾у埆",
@@ -10681,10 +10946,7 @@
"description": "甯歌闂id",
"type": "integer"
},
- "product": {
- "$ref": "#/definitions/model.Product"
- },
- "product_id": {
+ "productId": {
"description": "浜у搧id",
"type": "integer"
},
@@ -10696,27 +10958,25 @@
"description": "澶囨敞",
"type": "string"
},
- "sale_leads": {
+ "saleChanceId": {
"description": "閿�鍞満浼歩d",
"type": "integer"
},
- "serviceType": {
- "$ref": "#/definitions/model.ServiceType"
- },
- "service_man_id": {
+ "serviceManId": {
"description": "鏈嶅姟浜哄憳",
"type": "integer"
},
- "service_number": {
+ "serviceNumber": {
"description": "鏈嶅姟鍗曠紪鍙�",
"type": "string"
},
- "service_type_id": {
+ "serviceTypeId": {
"description": "鏈嶅姟鏂瑰紡",
"type": "integer"
},
"severity": {
- "$ref": "#/definitions/model.Severity"
+ "description": "涓ラ噸绋嬪害",
+ "type": "integer"
},
"solution": {
"description": "瑙e喅鏂规硶",
@@ -10804,6 +11064,17 @@
"items": {
"$ref": "#/definitions/model.Product"
}
+ }
+ }
+ },
+ "request.AddTimeSpent": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
}
}
},
@@ -12165,6 +12436,17 @@
}
}
},
+ "request.UpdateFaultType": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
"request.UpdateFollowRecord": {
"type": "object",
"required": [
@@ -13286,17 +13568,15 @@
"description": "鏀惰垂閲戦",
"type": "number"
},
- "client": {
- "$ref": "#/definitions/model.Client"
- },
- "client_id": {
+ "clientId": {
"description": "瀹㈡埛id",
"type": "integer"
},
- "contract": {
- "$ref": "#/definitions/model.Contract"
+ "contact_id": {
+ "description": "鑱旂郴浜篿d",
+ "type": "integer"
},
- "contract_id": {
+ "contractId": {
"description": "鍚堝悓id",
"type": "integer"
},
@@ -13304,25 +13584,12 @@
"description": "甯屾湜澶勭悊鏃堕棿",
"type": "string"
},
- "faq": {
- "$ref": "#/definitions/model.Faq"
- },
"id": {
"type": "integer"
},
- "linkman_id": {
- "description": "鑱旂郴浜篿d",
- "type": "integer"
- },
- "order": {
- "$ref": "#/definitions/model.OrderManage"
- },
- "order_id": {
+ "orderId": {
"description": "閿�鍞鍗昳d",
"type": "integer"
- },
- "priorityLevel": {
- "$ref": "#/definitions/model.PriorityLevel"
},
"priority_level_id": {
"description": "浼樺厛绾у埆",
@@ -13336,10 +13603,7 @@
"description": "甯歌闂id",
"type": "integer"
},
- "product": {
- "$ref": "#/definitions/model.Product"
- },
- "product_id": {
+ "productId": {
"description": "浜у搧id",
"type": "integer"
},
@@ -13351,27 +13615,25 @@
"description": "澶囨敞",
"type": "string"
},
- "sale_leads": {
+ "saleChanceId": {
"description": "閿�鍞満浼歩d",
"type": "integer"
},
- "serviceType": {
- "$ref": "#/definitions/model.ServiceType"
- },
- "service_man_id": {
+ "serviceManId": {
"description": "鏈嶅姟浜哄憳",
"type": "integer"
},
- "service_number": {
+ "serviceNumber": {
"description": "鏈嶅姟鍗曠紪鍙�",
"type": "string"
},
- "service_type_id": {
+ "serviceTypeId": {
"description": "鏈嶅姟鏂瑰紡",
"type": "integer"
},
"severity": {
- "$ref": "#/definitions/model.Severity"
+ "description": "涓ラ噸绋嬪害",
+ "type": "integer"
},
"solution": {
"description": "瑙e喅鏂规硶",
@@ -13501,6 +13763,17 @@
}
}
},
+ "request.UpdateTimeSpent": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
"request.UpdateTimelyRate": {
"type": "object",
"required": [
diff --git a/docs/swagger.json b/docs/swagger.json
index 92d8014..5375918 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -2184,6 +2184,128 @@
}
}
},
+ "/api/faultType/add": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鏁呴殰绫诲埆绠$悊"
+ ],
+ "summary": "娣诲姞鏁呴殰绫诲埆",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.AddFaultType"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/faultType/delete/{id}": {
+ "delete": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鏁呴殰绫诲埆绠$悊"
+ ],
+ "summary": "鍒犻櫎鏁呴殰绫诲埆",
+ "parameters": [
+ {
+ "type": "integer",
+ "description": "鏌ヨ鍙傛暟",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/faultType/list": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鏁呴殰绫诲埆绠$悊"
+ ],
+ "summary": "鑾峰彇鏁呴殰绫诲埆鍒楄〃",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/response.ListResponse"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.FaultType"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/api/faultType/update": {
+ "put": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鏁呴殰绫诲埆绠$悊"
+ ],
+ "summary": "鏇存柊鏁呴殰绫诲埆",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.UpdateFaultType"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
"/api/followRecord/add": {
"post": {
"produces": [
@@ -7240,6 +7362,128 @@
}
}
},
+ "/api/timeSpent/add": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鑺辫垂鏃堕棿绠$悊"
+ ],
+ "summary": "娣诲姞鑺辫垂鏃堕棿",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.AddTimeSpent"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/timeSpent/delete/{id}": {
+ "delete": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鑺辫垂鏃堕棿绠$悊"
+ ],
+ "summary": "鍒犻櫎鑺辫垂鏃堕棿",
+ "parameters": [
+ {
+ "type": "integer",
+ "description": "鏌ヨ鍙傛暟",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/timeSpent/list": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鑺辫垂鏃堕棿绠$悊"
+ ],
+ "summary": "鑾峰彇鑺辫垂鏃堕棿鍒楄〃",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/response.ListResponse"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.TimeSpent"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/api/timeSpent/update": {
+ "put": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "鑺辫垂鏃堕棿绠$悊"
+ ],
+ "summary": "鏇存柊鑺辫垂鏃堕棿",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.UpdateTimeSpent"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
"/api/timelyRate/add": {
"post": {
"produces": [
@@ -8321,6 +8565,17 @@
}
}
},
+ "model.FaultType": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
"model.FollowRecord": {
"type": "object",
"properties": {
@@ -9307,14 +9562,21 @@
"client": {
"$ref": "#/definitions/model.Client"
},
- "client_id": {
+ "clientId": {
"description": "瀹㈡埛id",
+ "type": "integer"
+ },
+ "contact": {
+ "$ref": "#/definitions/model.Contact"
+ },
+ "contact_id": {
+ "description": "鑱旂郴浜篿d",
"type": "integer"
},
"contract": {
"$ref": "#/definitions/model.Contract"
},
- "contract_id": {
+ "contractId": {
"description": "鍚堝悓id",
"type": "integer"
},
@@ -9328,14 +9590,10 @@
"id": {
"type": "integer"
},
- "linkman_id": {
- "description": "鑱旂郴浜篿d",
- "type": "integer"
- },
"order": {
"$ref": "#/definitions/model.OrderManage"
},
- "order_id": {
+ "orderId": {
"description": "閿�鍞鍗昳d",
"type": "integer"
},
@@ -9357,7 +9615,7 @@
"product": {
"$ref": "#/definitions/model.Product"
},
- "product_id": {
+ "productId": {
"description": "浜у搧id",
"type": "integer"
},
@@ -9369,22 +9627,25 @@
"description": "澶囨敞",
"type": "string"
},
- "sale_leads": {
+ "saleChance": {
+ "$ref": "#/definitions/model.SaleChance"
+ },
+ "saleChanceId": {
"description": "閿�鍞満浼歩d",
"type": "integer"
+ },
+ "serviceManId": {
+ "description": "鏈嶅姟浜哄憳",
+ "type": "integer"
+ },
+ "serviceNumber": {
+ "description": "鏈嶅姟鍗曠紪鍙�",
+ "type": "string"
},
"serviceType": {
"$ref": "#/definitions/model.ServiceType"
},
- "service_man_id": {
- "description": "鏈嶅姟浜哄憳",
- "type": "integer"
- },
- "service_number": {
- "description": "鏈嶅姟鍗曠紪鍙�",
- "type": "string"
- },
- "service_type_id": {
+ "serviceTypeId": {
"description": "鏈嶅姟鏂瑰紡",
"type": "integer"
},
@@ -9483,6 +9744,17 @@
"items": {
"$ref": "#/definitions/model.Product"
}
+ }
+ }
+ },
+ "model.TimeSpent": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
}
}
},
@@ -9878,6 +10150,17 @@
}
},
"request.AddFaq": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "request.AddFaultType": {
"type": "object",
"properties": {
"id": {
@@ -10619,17 +10902,15 @@
"description": "鏀惰垂閲戦",
"type": "number"
},
- "client": {
- "$ref": "#/definitions/model.Client"
- },
- "client_id": {
+ "clientId": {
"description": "瀹㈡埛id",
"type": "integer"
},
- "contract": {
- "$ref": "#/definitions/model.Contract"
+ "contact_id": {
+ "description": "鑱旂郴浜篿d",
+ "type": "integer"
},
- "contract_id": {
+ "contractId": {
"description": "鍚堝悓id",
"type": "integer"
},
@@ -10637,25 +10918,9 @@
"description": "甯屾湜澶勭悊鏃堕棿",
"type": "string"
},
- "faq": {
- "$ref": "#/definitions/model.Faq"
- },
- "id": {
- "type": "integer"
- },
- "linkman_id": {
- "description": "鑱旂郴浜篿d",
- "type": "integer"
- },
- "order": {
- "$ref": "#/definitions/model.OrderManage"
- },
- "order_id": {
+ "orderId": {
"description": "閿�鍞鍗昳d",
"type": "integer"
- },
- "priorityLevel": {
- "$ref": "#/definitions/model.PriorityLevel"
},
"priority_level_id": {
"description": "浼樺厛绾у埆",
@@ -10669,10 +10934,7 @@
"description": "甯歌闂id",
"type": "integer"
},
- "product": {
- "$ref": "#/definitions/model.Product"
- },
- "product_id": {
+ "productId": {
"description": "浜у搧id",
"type": "integer"
},
@@ -10684,27 +10946,25 @@
"description": "澶囨敞",
"type": "string"
},
- "sale_leads": {
+ "saleChanceId": {
"description": "閿�鍞満浼歩d",
"type": "integer"
},
- "serviceType": {
- "$ref": "#/definitions/model.ServiceType"
- },
- "service_man_id": {
+ "serviceManId": {
"description": "鏈嶅姟浜哄憳",
"type": "integer"
},
- "service_number": {
+ "serviceNumber": {
"description": "鏈嶅姟鍗曠紪鍙�",
"type": "string"
},
- "service_type_id": {
+ "serviceTypeId": {
"description": "鏈嶅姟鏂瑰紡",
"type": "integer"
},
"severity": {
- "$ref": "#/definitions/model.Severity"
+ "description": "涓ラ噸绋嬪害",
+ "type": "integer"
},
"solution": {
"description": "瑙e喅鏂规硶",
@@ -10792,6 +11052,17 @@
"items": {
"$ref": "#/definitions/model.Product"
}
+ }
+ }
+ },
+ "request.AddTimeSpent": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
}
}
},
@@ -12153,6 +12424,17 @@
}
}
},
+ "request.UpdateFaultType": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
"request.UpdateFollowRecord": {
"type": "object",
"required": [
@@ -13274,17 +13556,15 @@
"description": "鏀惰垂閲戦",
"type": "number"
},
- "client": {
- "$ref": "#/definitions/model.Client"
- },
- "client_id": {
+ "clientId": {
"description": "瀹㈡埛id",
"type": "integer"
},
- "contract": {
- "$ref": "#/definitions/model.Contract"
+ "contact_id": {
+ "description": "鑱旂郴浜篿d",
+ "type": "integer"
},
- "contract_id": {
+ "contractId": {
"description": "鍚堝悓id",
"type": "integer"
},
@@ -13292,25 +13572,12 @@
"description": "甯屾湜澶勭悊鏃堕棿",
"type": "string"
},
- "faq": {
- "$ref": "#/definitions/model.Faq"
- },
"id": {
"type": "integer"
},
- "linkman_id": {
- "description": "鑱旂郴浜篿d",
- "type": "integer"
- },
- "order": {
- "$ref": "#/definitions/model.OrderManage"
- },
- "order_id": {
+ "orderId": {
"description": "閿�鍞鍗昳d",
"type": "integer"
- },
- "priorityLevel": {
- "$ref": "#/definitions/model.PriorityLevel"
},
"priority_level_id": {
"description": "浼樺厛绾у埆",
@@ -13324,10 +13591,7 @@
"description": "甯歌闂id",
"type": "integer"
},
- "product": {
- "$ref": "#/definitions/model.Product"
- },
- "product_id": {
+ "productId": {
"description": "浜у搧id",
"type": "integer"
},
@@ -13339,27 +13603,25 @@
"description": "澶囨敞",
"type": "string"
},
- "sale_leads": {
+ "saleChanceId": {
"description": "閿�鍞満浼歩d",
"type": "integer"
},
- "serviceType": {
- "$ref": "#/definitions/model.ServiceType"
- },
- "service_man_id": {
+ "serviceManId": {
"description": "鏈嶅姟浜哄憳",
"type": "integer"
},
- "service_number": {
+ "serviceNumber": {
"description": "鏈嶅姟鍗曠紪鍙�",
"type": "string"
},
- "service_type_id": {
+ "serviceTypeId": {
"description": "鏈嶅姟鏂瑰紡",
"type": "integer"
},
"severity": {
- "$ref": "#/definitions/model.Severity"
+ "description": "涓ラ噸绋嬪害",
+ "type": "integer"
},
"solution": {
"description": "瑙e喅鏂规硶",
@@ -13489,6 +13751,17 @@
}
}
},
+ "request.UpdateTimeSpent": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
"request.UpdateTimelyRate": {
"type": "object",
"required": [
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index e8359e8..a09d957 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -452,6 +452,13 @@
name:
type: string
type: object
+ model.FaultType:
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ type: object
model.FollowRecord:
properties:
client:
@@ -1099,12 +1106,17 @@
type: number
client:
$ref: '#/definitions/model.Client'
- client_id:
+ clientId:
description: 瀹㈡埛id
+ type: integer
+ contact:
+ $ref: '#/definitions/model.Contact'
+ contact_id:
+ description: 鑱旂郴浜篿d
type: integer
contract:
$ref: '#/definitions/model.Contract'
- contract_id:
+ contractId:
description: 鍚堝悓id
type: integer
expect_time:
@@ -1114,12 +1126,9 @@
$ref: '#/definitions/model.Faq'
id:
type: integer
- linkman_id:
- description: 鑱旂郴浜篿d
- type: integer
order:
$ref: '#/definitions/model.OrderManage'
- order_id:
+ orderId:
description: 閿�鍞鍗昳d
type: integer
priority_level_id:
@@ -1135,7 +1144,7 @@
type: integer
product:
$ref: '#/definitions/model.Product'
- product_id:
+ productId:
description: 浜у搧id
type: integer
real_time:
@@ -1144,20 +1153,22 @@
remark:
description: 澶囨敞
type: string
- sale_leads:
+ saleChance:
+ $ref: '#/definitions/model.SaleChance'
+ saleChanceId:
description: 閿�鍞満浼歩d
type: integer
- service_man_id:
+ serviceManId:
description: 鏈嶅姟浜哄憳
type: integer
- service_number:
+ serviceNumber:
description: 鏈嶅姟鍗曠紪鍙�
type: string
- service_type_id:
- description: 鏈嶅姟鏂瑰紡
- type: integer
serviceType:
$ref: '#/definitions/model.ServiceType'
+ serviceTypeId:
+ description: 鏈嶅姟鏂瑰紡
+ type: integer
severity:
$ref: '#/definitions/model.Severity'
solution:
@@ -1222,6 +1233,13 @@
items:
$ref: '#/definitions/model.Product'
type: array
+ type: object
+ model.TimeSpent:
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
type: object
model.TimelyRate:
properties:
@@ -1492,6 +1510,13 @@
- name
type: object
request.AddFaq:
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ type: object
+ request.AddFaultType:
properties:
id:
type: integer
@@ -1985,45 +2010,31 @@
charge_amount:
description: 鏀惰垂閲戦
type: number
- client:
- $ref: '#/definitions/model.Client'
- client_id:
+ clientId:
description: 瀹㈡埛id
type: integer
- contract:
- $ref: '#/definitions/model.Contract'
- contract_id:
+ contact_id:
+ description: 鑱旂郴浜篿d
+ type: integer
+ contractId:
description: 鍚堝悓id
type: integer
expect_time:
description: 甯屾湜澶勭悊鏃堕棿
type: string
- faq:
- $ref: '#/definitions/model.Faq'
- id:
- type: integer
- linkman_id:
- description: 鑱旂郴浜篿d
- type: integer
- order:
- $ref: '#/definitions/model.OrderManage'
- order_id:
+ orderId:
description: 閿�鍞鍗昳d
type: integer
priority_level_id:
description: 浼樺厛绾у埆
type: integer
- priorityLevel:
- $ref: '#/definitions/model.PriorityLevel'
problem_desc:
description: 闂鎻忚堪
type: string
problem_id:
description: 甯歌闂id
type: integer
- product:
- $ref: '#/definitions/model.Product'
- product_id:
+ productId:
description: 浜у搧id
type: integer
real_time:
@@ -2032,22 +2043,21 @@
remark:
description: 澶囨敞
type: string
- sale_leads:
+ saleChanceId:
description: 閿�鍞満浼歩d
type: integer
- service_man_id:
+ serviceManId:
description: 鏈嶅姟浜哄憳
type: integer
- service_number:
+ serviceNumber:
description: 鏈嶅姟鍗曠紪鍙�
type: string
- service_type_id:
+ serviceTypeId:
description: 鏈嶅姟鏂瑰紡
type: integer
- serviceType:
- $ref: '#/definitions/model.ServiceType'
severity:
- $ref: '#/definitions/model.Severity'
+ description: 涓ラ噸绋嬪害
+ type: integer
solution:
description: 瑙e喅鏂规硶
type: string
@@ -2106,6 +2116,13 @@
items:
$ref: '#/definitions/model.Product'
type: array
+ type: object
+ request.AddTimeSpent:
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
type: object
request.AddTimelyRate:
properties:
@@ -3034,6 +3051,13 @@
name:
type: string
type: object
+ request.UpdateFaultType:
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ type: object
request.UpdateFollowRecord:
properties:
follow_record:
@@ -3781,45 +3805,33 @@
charge_amount:
description: 鏀惰垂閲戦
type: number
- client:
- $ref: '#/definitions/model.Client'
- client_id:
+ clientId:
description: 瀹㈡埛id
type: integer
- contract:
- $ref: '#/definitions/model.Contract'
- contract_id:
+ contact_id:
+ description: 鑱旂郴浜篿d
+ type: integer
+ contractId:
description: 鍚堝悓id
type: integer
expect_time:
description: 甯屾湜澶勭悊鏃堕棿
type: string
- faq:
- $ref: '#/definitions/model.Faq'
id:
type: integer
- linkman_id:
- description: 鑱旂郴浜篿d
- type: integer
- order:
- $ref: '#/definitions/model.OrderManage'
- order_id:
+ orderId:
description: 閿�鍞鍗昳d
type: integer
priority_level_id:
description: 浼樺厛绾у埆
type: integer
- priorityLevel:
- $ref: '#/definitions/model.PriorityLevel'
problem_desc:
description: 闂鎻忚堪
type: string
problem_id:
description: 甯歌闂id
type: integer
- product:
- $ref: '#/definitions/model.Product'
- product_id:
+ productId:
description: 浜у搧id
type: integer
real_time:
@@ -3828,22 +3840,21 @@
remark:
description: 澶囨敞
type: string
- sale_leads:
+ saleChanceId:
description: 閿�鍞満浼歩d
type: integer
- service_man_id:
+ serviceManId:
description: 鏈嶅姟浜哄憳
type: integer
- service_number:
+ serviceNumber:
description: 鏈嶅姟鍗曠紪鍙�
type: string
- service_type_id:
+ serviceTypeId:
description: 鏈嶅姟鏂瑰紡
type: integer
- serviceType:
- $ref: '#/definitions/model.ServiceType'
severity:
- $ref: '#/definitions/model.Severity'
+ description: 涓ラ噸绋嬪害
+ type: integer
solution:
description: 瑙e喅鏂规硶
type: string
@@ -3928,6 +3939,13 @@
items:
$ref: '#/definitions/model.Product'
type: array
+ type: object
+ request.UpdateTimeSpent:
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
type: object
request.UpdateTimelyRate:
properties:
@@ -5892,6 +5910,81 @@
summary: 鏇存柊甯歌闂
tags:
- 甯歌闂绠$悊
+ /api/faultType/add:
+ post:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.AddFaultType'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 娣诲姞鏁呴殰绫诲埆
+ tags:
+ - 鏁呴殰绫诲埆绠$悊
+ /api/faultType/delete/{id}:
+ delete:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: path
+ name: id
+ required: true
+ type: integer
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 鍒犻櫎鏁呴殰绫诲埆
+ tags:
+ - 鏁呴殰绫诲埆绠$悊
+ /api/faultType/list:
+ get:
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ allOf:
+ - $ref: '#/definitions/response.ListResponse'
+ - properties:
+ data:
+ items:
+ $ref: '#/definitions/model.FaultType'
+ type: array
+ type: object
+ summary: 鑾峰彇鏁呴殰绫诲埆鍒楄〃
+ tags:
+ - 鏁呴殰绫诲埆绠$悊
+ /api/faultType/update:
+ put:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.UpdateFaultType'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 鏇存柊鏁呴殰绫诲埆
+ tags:
+ - 鏁呴殰绫诲埆绠$悊
/api/followRecord/add:
post:
parameters:
@@ -9000,6 +9093,81 @@
summary: 鏇存柊瀛愯鍗�
tags:
- SubOrder
+ /api/timeSpent/add:
+ post:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.AddTimeSpent'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 娣诲姞鑺辫垂鏃堕棿
+ tags:
+ - 鑺辫垂鏃堕棿绠$悊
+ /api/timeSpent/delete/{id}:
+ delete:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: path
+ name: id
+ required: true
+ type: integer
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 鍒犻櫎鑺辫垂鏃堕棿
+ tags:
+ - 鑺辫垂鏃堕棿绠$悊
+ /api/timeSpent/list:
+ get:
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ allOf:
+ - $ref: '#/definitions/response.ListResponse'
+ - properties:
+ data:
+ items:
+ $ref: '#/definitions/model.TimeSpent'
+ type: array
+ type: object
+ summary: 鑾峰彇鑺辫垂鏃堕棿鍒楄〃
+ tags:
+ - 鑺辫垂鏃堕棿绠$悊
+ /api/timeSpent/update:
+ put:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.UpdateTimeSpent'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 鏇存柊鑺辫垂鏃堕棿
+ tags:
+ - 鑺辫垂鏃堕棿绠$悊
/api/timelyRate/add:
post:
parameters:
diff --git a/model/faq.go b/model/faq.go
index 9fe3184..874b5bc 100644
--- a/model/faq.go
+++ b/model/faq.go
@@ -12,18 +12,18 @@
// Faq 甯歌闂
Faq 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"`
}
// FaqSearch 甯歌闂鎼滅储鏉′欢
FaqSearch struct {
Faq
- Orm *gorm.DB
- QueryClass constvar.FaqQueryClass
- KeywordType constvar.FaqKeywordType
- Keyword string
- PageNum int
- PageSize int
+ Orm *gorm.DB
+ QueryClass constvar.FaqQueryClass
+ KeywordType constvar.FaqKeywordType
+ Keyword string
+ PageNum int
+ PageSize int
}
)
@@ -49,6 +49,11 @@
func (slf *FaqSearch) Create(record *Faq) error {
var db = slf.build()
return db.Create(record).Error
+}
+
+func (slf *FaqSearch) CreateBatch(records []*Faq) error {
+ var db = slf.build()
+ return db.Create(records).Error
}
func (slf *FaqSearch) Delete() error {
@@ -111,4 +116,4 @@
err := db.Find(&records).Error
return records, total, err
-}
\ No newline at end of file
+}
diff --git a/model/faultType.go b/model/faultType.go
new file mode 100644
index 0000000..68306bc
--- /dev/null
+++ b/model/faultType.go
@@ -0,0 +1,119 @@
+package model
+
+import (
+ "aps_crm/constvar"
+ "aps_crm/pkg/mysqlx"
+ "errors"
+ "fmt"
+ "gorm.io/gorm"
+)
+
+type (
+ // FaultType 鏁呴殰绫诲埆
+ FaultType struct {
+ Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+ Name string `json:"name" gorm:"column:name"`
+ }
+
+ // FaultTypeSearch 鏁呴殰绫诲埆鎼滅储鏉′欢
+ FaultTypeSearch struct {
+ FaultType
+ Orm *gorm.DB
+ QueryClass constvar.FaultTypeQueryClass
+ KeywordType constvar.FaultTypeKeywordType
+ Keyword string
+ PageNum int
+ PageSize int
+ }
+)
+
+func (FaultType) TableName() string {
+ return "fault_type"
+}
+
+func NewFaultTypeSearch() *FaultTypeSearch {
+ return &FaultTypeSearch{
+ Orm: mysqlx.GetDB(),
+ }
+}
+
+func (slf *FaultTypeSearch) build() *gorm.DB {
+ var db = slf.Orm.Model(&FaultType{})
+ if slf.Id != 0 {
+ db = db.Where("id = ?", slf.Id)
+ }
+
+ return db
+}
+
+func (slf *FaultTypeSearch) Create(record *FaultType) error {
+ var db = slf.build()
+ return db.Create(record).Error
+}
+
+func (slf *FaultTypeSearch) CreateBatch(records []*FaultType) error {
+ var db = slf.build()
+ return db.Create(records).Error
+}
+
+func (slf *FaultTypeSearch) Delete() error {
+ var db = slf.build()
+ return db.Delete(&FaultType{}).Error
+}
+
+func (slf *FaultTypeSearch) Update(record *FaultType) error {
+ var db = slf.build()
+ return db.Updates(record).Error
+}
+
+func (slf *FaultTypeSearch) FindAll() ([]*FaultType, error) {
+ var db = slf.build()
+ var record = make([]*FaultType, 0)
+ err := db.Find(&record).Error
+ return record, err
+}
+
+func (slf *FaultTypeSearch) SetId(id int) *FaultTypeSearch {
+ slf.Id = id
+ return slf
+}
+
+func (slf *FaultTypeSearch) First() (*FaultType, error) {
+ var db = slf.build()
+ var record = new(FaultType)
+ err := db.First(record).Error
+ return record, err
+}
+
+func (slf *FaultTypeSearch) Updates(values interface{}) error {
+ var db = slf.build()
+ return db.Updates(values).Error
+}
+
+func (slf *FaultTypeSearch) Save(record *FaultType) error {
+ if record.Id == 0 {
+ return errors.New("id涓虹┖")
+ }
+ var db = slf.build()
+
+ if err := db.Save(record).Error; err != nil {
+ return fmt.Errorf("save err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
+
+func (slf *FaultTypeSearch) Find() ([]*FaultType, int64, error) {
+ var db = slf.build()
+ var records = make([]*FaultType, 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)
+ }
+
+ err := db.Find(&records).Error
+ return records, total, err
+}
diff --git a/model/index.go b/model/index.go
index 7a0f17c..7a90d35 100644
--- a/model/index.go
+++ b/model/index.go
@@ -4,6 +4,8 @@
"aps_crm/conf"
"aps_crm/pkg/logx"
"aps_crm/pkg/mysqlx"
+ "aps_crm/pkg/safe"
+ "gorm.io/gorm/schema"
)
func Init() error {
@@ -14,7 +16,9 @@
if err := RegisterTables(); err != nil {
return err
}
-
+ safe.Go(func() {
+ InsertDefaultData()
+ })
return nil
}
@@ -66,19 +70,39 @@
Satisfaction{},
TimelyRate{},
SolveRate{},
- IsVisit{},
- IsVisit{},
- ReportSource{},
- OrderType{},
- ServiceContractStatus{},
- ServiceContractType{},
- RefundMethod{},
- IsInvoice{},
- AccountId{},
- SalesReturnStatus{},
- Repository{},
- QuotationStatus{},
- Currency{},
+ IsVisit{},
+ IsVisit{},
+ ReportSource{},
+ OrderType{},
+ ServiceContractStatus{},
+ ServiceContractType{},
+ RefundMethod{},
+ IsInvoice{},
+ AccountId{},
+ SalesReturnStatus{},
+ Repository{},
+ QuotationStatus{},
+ Currency{},
)
return err
-}
\ No newline at end of file
+}
+
+type InitDefaultData interface {
+ InitDefaultData() error
+}
+
+func InsertDefaultData() {
+ models := []interface{}{
+ NewServiceTypeSearch(),
+ NewPriorityLevelSearch(),
+ NewSeveritySearch(),
+ NewTimeSpentSearch(),
+ }
+ for _, model := range models {
+ if id, ok := model.(InitDefaultData); ok {
+ if err := id.InitDefaultData(); err != nil {
+ logx.Errorf("InitDefaultData for table: %v, err :%v", model.(schema.Tabler).TableName(), err.Error())
+ }
+ }
+ }
+}
diff --git a/model/priorityLevel.go b/model/priorityLevel.go
index be5b783..b2240f8 100644
--- a/model/priorityLevel.go
+++ b/model/priorityLevel.go
@@ -12,18 +12,18 @@
// PriorityLevel 浼樺厛绾у埆
PriorityLevel 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"`
}
// PriorityLevelSearch 浼樺厛绾у埆鎼滅储鏉′欢
PriorityLevelSearch struct {
PriorityLevel
- Orm *gorm.DB
- QueryClass constvar.PriorityLevelQueryClass
- KeywordType constvar.PriorityLevelKeywordType
- Keyword string
- PageNum int
- PageSize int
+ Orm *gorm.DB
+ QueryClass constvar.PriorityLevelQueryClass
+ KeywordType constvar.PriorityLevelKeywordType
+ Keyword string
+ PageNum int
+ PageSize int
}
)
@@ -49,6 +49,11 @@
func (slf *PriorityLevelSearch) Create(record *PriorityLevel) error {
var db = slf.build()
return db.Create(record).Error
+}
+
+func (slf *PriorityLevelSearch) CreateBatch(records []*PriorityLevel) error {
+ var db = slf.build()
+ return db.Create(records).Error
}
func (slf *PriorityLevelSearch) Delete() error {
@@ -111,4 +116,25 @@
err := db.Find(&records).Error
return records, total, err
-}
\ No newline at end of file
+}
+
+// InitDefaultData 鍒濆鍖栨暟鎹�
+func (slf *PriorityLevelSearch) InitDefaultData() error {
+ var (
+ db = slf.Orm.Table(slf.TableName())
+ total int64 = 0
+ )
+ if err := db.Count(&total).Error; err != nil {
+ return err
+ }
+ if total != 0 {
+ return nil
+ }
+ records := []*PriorityLevel{
+ {Name: "浣�"},
+ {Name: "涓�鑸�"},
+ {Name: "楂�"},
+ {Name: "绱ф��"},
+ }
+ return slf.CreateBatch(records)
+}
diff --git a/model/request/faultType.go b/model/request/faultType.go
new file mode 100644
index 0000000..06ec614
--- /dev/null
+++ b/model/request/faultType.go
@@ -0,0 +1,22 @@
+package request
+
+import (
+ "aps_crm/constvar"
+ "aps_crm/model"
+)
+
+type AddFaultType struct {
+ model.FaultType
+}
+
+type UpdateFaultType struct {
+ Id int `json:"id"`
+ model.FaultType
+}
+
+type GetFaultTypeList struct {
+ PageInfo
+ QueryClass constvar.FaultTypeQueryClass `json:"queryClass"`
+ KeywordType constvar.FaultTypeKeywordType `json:"keywordType"`
+ Keyword string `json:"keyword"`
+}
diff --git a/model/request/serviceOrder.go b/model/request/serviceOrder.go
index d89e900..8e1c83b 100644
--- a/model/request/serviceOrder.go
+++ b/model/request/serviceOrder.go
@@ -1,17 +1,40 @@
package request
import (
- "aps_crm/constvar"
- "aps_crm/model"
+ "aps_crm/constvar"
)
type AddServiceOrder struct {
- model.ServiceOrder
+ ServiceNumber string `gorm:"service_number" json:"serviceNumber"` // 鏈嶅姟鍗曠紪鍙�
+ ClientId int `gorm:"client_id" json:"clientId"` // 瀹㈡埛id
+ ContractId int `gorm:"contract_id" json:"contractId"` // 鍚堝悓id
+ OrderId int `gorm:"order_id" json:"orderId"` // 閿�鍞鍗昳d
+ Subject string `gorm:"subject" json:"subject"` // 涓婚
+ ProductId int `gorm:"product_id" json:"productId"` // 浜у搧id
+ ServiceTypeId int `gorm:"service_type_id" json:"serviceTypeId"` // 鏈嶅姟鏂瑰紡
+ ServiceManId int `gorm:"service_man_id" json:"serviceManId"` // 鏈嶅姟浜哄憳
+ ContactId int `gorm:"linkman_id" json:"contact_id"` // 鑱旂郴浜篿d
+ Address string `gorm:"address" json:"address"` // 涓婇棬鍦板潃
+ PriorityLevelId int `gorm:"priority_level_id" json:"priority_level_id"` // 浼樺厛绾у埆
+ AppointmentTime string `gorm:"appointment_time" json:"appointment_time"` // 棰勭害涓婇棬鏃堕棿
+ SaleChanceId int `gorm:"sale_leads" json:"saleChanceId"` // 閿�鍞満浼歩d
+ SeverityId int `gorm:"severity_id" json:"severity"` // 涓ラ噸绋嬪害
+ Status int `gorm:"status" json:"status"` // 澶勭悊鐘舵��
+ ExpectTime string `gorm:"expect_time" json:"expect_time"` // 甯屾湜澶勭悊鏃堕棿
+ RealTime string `gorm:"real_time" json:"real_time"` // 瀹為檯澶勭悊鏃堕棿
+ CarFare float64 `gorm:"car_fare" json:"car_fare"` // 浜ら�氳垂
+ ChargeAmount float64 `gorm:"charge_amount" json:"charge_amount"` // 鏀惰垂閲戦
+ TimeSpentId int `gorm:"time_spent_id" json:"time_spent_id"` // 鑺辫垂鏃堕棿
+ FaqId int `gorm:"problem_id" json:"problem_id"` // 甯歌闂id
+ ProblemDesc string `gorm:"problem_desc" json:"problem_desc"` // 闂鎻忚堪
+ Solution string `gorm:"solution" json:"solution"` // 瑙e喅鏂规硶
+ SolutionRemark string `gorm:"solution_remark" json:"solution_remark"` // 鍐呴儴澶囨敞
+ Remark string `gorm:"remark" json:"remark"` // 澶囨敞
}
type UpdateServiceOrder struct {
Id int `json:"id"`
- model.ServiceOrder
+ AddServiceOrder
}
type GetServiceOrderList struct {
diff --git a/model/request/timeSpent.go b/model/request/timeSpent.go
new file mode 100644
index 0000000..120461a
--- /dev/null
+++ b/model/request/timeSpent.go
@@ -0,0 +1,22 @@
+package request
+
+import (
+ "aps_crm/constvar"
+ "aps_crm/model"
+)
+
+type AddTimeSpent struct {
+ model.TimeSpent
+}
+
+type UpdateTimeSpent struct {
+ Id int `json:"id"`
+ model.TimeSpent
+}
+
+type GetTimeSpentList struct {
+ PageInfo
+ QueryClass constvar.TimeSpentQueryClass `json:"queryClass"`
+ KeywordType constvar.TimeSpentKeywordType `json:"keywordType"`
+ Keyword string `json:"keyword"`
+}
diff --git a/model/serviceOrder.go b/model/serviceOrder.go
index d8de6eb..fc6307c 100644
--- a/model/serviceOrder.go
+++ b/model/serviceOrder.go
@@ -12,26 +12,28 @@
// ServiceOrder 鏈嶅姟鍗�
ServiceOrder struct {
Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
- ServiceNumber string `gorm:"service_number" json:"service_number"` // 鏈嶅姟鍗曠紪鍙�
- ClientId int `gorm:"client_id" json:"client_id"` // 瀹㈡埛id
+ ServiceNumber string `gorm:"service_number" json:"serviceNumber"` // 鏈嶅姟鍗曠紪鍙�
+ ClientId int `gorm:"client_id" json:"clientId"` // 瀹㈡埛id
Client Client `gorm:"foreignKey:ClientId"`
- ContractId int `gorm:"contract_id" json:"contract_id"` // 鍚堝悓id
+ ContractId int `gorm:"contract_id" json:"contractId"` // 鍚堝悓id
Contract Contract `gorm:"foreignKey:ContractId"`
- OrderId int `gorm:"order_id" json:"order_id"` // 閿�鍞鍗昳d
- Order OrderManage `gorm:"foreignKey:OrderId"`
- Subject string `gorm:"subject" json:"subject"` // 涓婚
- ProductId int `gorm:"product_id" json:"product_id"` // 浜у搧id
+ OrderId int `gorm:"order_id" json:"orderId"` // 閿�鍞鍗昳d
+ OrderManage OrderManage `gorm:"foreignKey:OrderId"`
+ Subject string `gorm:"subject" json:"subject"` // 涓婚
+ ProductId int `gorm:"product_id" json:"productId"` // 浜у搧id
Product Product `gorm:"foreignKey:ProductId"`
- ServiceTypeId int `gorm:"service_type_id" json:"service_type_id"` // 鏈嶅姟鏂瑰紡
+ ServiceTypeId int `gorm:"service_type_id" json:"serviceTypeId"` // 鏈嶅姟鏂瑰紡
ServiceType ServiceType `gorm:"foreignKey:ServiceTypeId"`
- ServiceManId int `gorm:"service_man_id" json:"service_man_id"` // 鏈嶅姟浜哄憳
- LinkmanId int `gorm:"linkman_id" json:"linkman_id"` // 鑱旂郴浜篿d
+ ServiceManId int `gorm:"service_man_id" json:"serviceManId"` // 鏈嶅姟浜哄憳
+ ContactId int `gorm:"linkman_id" json:"contact_id"` // 鑱旂郴浜篿d
+ Contact Contact `gorm:"foreignKey:ContactId"`
Address string `gorm:"address" json:"address"` // 涓婇棬鍦板潃
PriorityLevelId int `gorm:"priority_level_id" json:"priority_level_id"` // 浼樺厛绾у埆
PriorityLevel PriorityLevel `gorm:"foreignKey:PriorityLevelId"`
AppointmentTime string `gorm:"appointment_time" json:"appointment_time"` // 棰勭害涓婇棬鏃堕棿
- SaleLeads int `gorm:"sale_leads" json:"sale_leads"` // 閿�鍞満浼歩d
- SeverityId int `gorm:"severity_id" json:"severity"` // 涓ラ噸绋嬪害
+ SaleChanceId int `gorm:"sale_leads" json:"saleChanceId"` // 閿�鍞満浼歩d
+ SaleChance SaleChance `gorm:"foreignKey:SaleChanceId"`
+ SeverityId int `gorm:"severity_id" json:"severity"` // 涓ラ噸绋嬪害
Severity Severity `gorm:"foreignKey:SeverityId"`
Status int `gorm:"status" json:"status"` // 澶勭悊鐘舵��
ExpectTime string `gorm:"expect_time" json:"expect_time"` // 甯屾湜澶勭悊鏃堕棿
@@ -76,12 +78,14 @@
db = db.Where("id = ?", slf.Id)
}
if slf.Preload {
- db = db.Model(&ServiceOrder{}).
+ db = db.
Preload("Client").
Preload("Contract").
Preload("OrderManage").
Preload("Product").
Preload("ServiceType").
+ Preload("Contact").
+ Preload("SaleChance").
Preload("PriorityLevel").
Preload("Severity").
Preload("Faq")
diff --git a/model/serviceType.go b/model/serviceType.go
index 7e6f686..402a9a5 100644
--- a/model/serviceType.go
+++ b/model/serviceType.go
@@ -12,18 +12,18 @@
// ServiceType 鏈嶅姟绫诲瀷
ServiceType 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"`
}
// ServiceTypeSearch 鏈嶅姟绫诲瀷鎼滅储鏉′欢
ServiceTypeSearch struct {
ServiceType
- Orm *gorm.DB
- QueryClass constvar.ServiceTypeQueryClass
- KeywordType constvar.ServiceTypeKeywordType
- Keyword string
- PageNum int
- PageSize int
+ Orm *gorm.DB
+ QueryClass constvar.ServiceTypeQueryClass
+ KeywordType constvar.ServiceTypeKeywordType
+ Keyword string
+ PageNum int
+ PageSize int
}
)
@@ -49,6 +49,11 @@
func (slf *ServiceTypeSearch) Create(record *ServiceType) error {
var db = slf.build()
return db.Create(record).Error
+}
+
+func (slf *ServiceTypeSearch) CreateBatch(records []*ServiceType) error {
+ var db = slf.build()
+ return db.Create(records).Error
}
func (slf *ServiceTypeSearch) Delete() error {
@@ -111,4 +116,26 @@
err := db.Find(&records).Error
return records, total, err
-}
\ No newline at end of file
+}
+
+// InitDefaultData 鍒濆鍖栨暟鎹�
+func (slf *ServiceTypeSearch) InitDefaultData() error {
+ var (
+ db = slf.Orm.Table(slf.TableName())
+ total int64 = 0
+ )
+ if err := db.Count(&total).Error; err != nil {
+ return err
+ }
+ if total != 0 {
+ return nil
+ }
+ records := []*ServiceType{
+ {Name: "鐢佃瘽"},
+ {Name: "杩滅▼"},
+ {Name: "閫佷慨"},
+ {Name: "涓婇棬"},
+ {Name: "鍏朵粬"},
+ }
+ return slf.CreateBatch(records)
+}
diff --git a/model/severity.go b/model/severity.go
index 0fb1bc0..681c4f7 100644
--- a/model/severity.go
+++ b/model/severity.go
@@ -12,18 +12,18 @@
// Severity 涓ラ噸绋嬪害
Severity 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"`
}
// SeveritySearch 涓ラ噸绋嬪害鎼滅储鏉′欢
SeveritySearch struct {
Severity
- Orm *gorm.DB
- QueryClass constvar.SeverityQueryClass
- KeywordType constvar.SeverityKeywordType
- Keyword string
- PageNum int
- PageSize int
+ Orm *gorm.DB
+ QueryClass constvar.SeverityQueryClass
+ KeywordType constvar.SeverityKeywordType
+ Keyword string
+ PageNum int
+ PageSize int
}
)
@@ -49,6 +49,11 @@
func (slf *SeveritySearch) Create(record *Severity) error {
var db = slf.build()
return db.Create(record).Error
+}
+
+func (slf *SeveritySearch) CreateBatch(records []*Severity) error {
+ var db = slf.build()
+ return db.Create(records).Error
}
func (slf *SeveritySearch) Delete() error {
@@ -111,4 +116,25 @@
err := db.Find(&records).Error
return records, total, err
-}
\ No newline at end of file
+}
+
+// InitDefaultData 鍒濆鍖栨暟鎹�
+func (slf *SeveritySearch) InitDefaultData() error {
+ var (
+ db = slf.Orm.Table(slf.TableName())
+ total int64 = 0
+ )
+ if err := db.Count(&total).Error; err != nil {
+ return err
+ }
+ if total != 0 {
+ return nil
+ }
+ records := []*Severity{
+ {Name: "杞�"},
+ {Name: "涓ラ噸"},
+ {Name: "杈冧弗閲�"},
+ {Name: "鐗逛弗閲�"},
+ }
+ return slf.CreateBatch(records)
+}
diff --git a/model/timeSpent.go b/model/timeSpent.go
new file mode 100644
index 0000000..1a4a5b0
--- /dev/null
+++ b/model/timeSpent.go
@@ -0,0 +1,142 @@
+package model
+
+import (
+ "aps_crm/constvar"
+ "aps_crm/pkg/mysqlx"
+ "errors"
+ "fmt"
+ "gorm.io/gorm"
+)
+
+type (
+ // TimeSpent 鑺辫垂鏃堕棿
+ TimeSpent struct {
+ Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+ Name string `json:"name" gorm:"column:name"`
+ }
+
+ // TimeSpentSearch 鑺辫垂鏃堕棿鎼滅储鏉′欢
+ TimeSpentSearch struct {
+ TimeSpent
+ Orm *gorm.DB
+ QueryClass constvar.TimeSpentQueryClass
+ KeywordType constvar.TimeSpentKeywordType
+ Keyword string
+ PageNum int
+ PageSize int
+ }
+)
+
+func (TimeSpent) TableName() string {
+ return "time_spent"
+}
+
+func NewTimeSpentSearch() *TimeSpentSearch {
+ return &TimeSpentSearch{
+ Orm: mysqlx.GetDB(),
+ }
+}
+
+func (slf *TimeSpentSearch) build() *gorm.DB {
+ var db = slf.Orm.Model(&TimeSpent{})
+ if slf.Id != 0 {
+ db = db.Where("id = ?", slf.Id)
+ }
+
+ return db
+}
+
+func (slf *TimeSpentSearch) Create(record *TimeSpent) error {
+ var db = slf.build()
+ return db.Create(record).Error
+}
+
+func (slf *TimeSpentSearch) CreateBatch(records []*TimeSpent) error {
+ var db = slf.build()
+ return db.Create(records).Error
+}
+
+func (slf *TimeSpentSearch) Delete() error {
+ var db = slf.build()
+ return db.Delete(&TimeSpent{}).Error
+}
+
+func (slf *TimeSpentSearch) Update(record *TimeSpent) error {
+ var db = slf.build()
+ return db.Updates(record).Error
+}
+
+func (slf *TimeSpentSearch) FindAll() ([]*TimeSpent, error) {
+ var db = slf.build()
+ var record = make([]*TimeSpent, 0)
+ err := db.Find(&record).Error
+ return record, err
+}
+
+func (slf *TimeSpentSearch) SetId(id int) *TimeSpentSearch {
+ slf.Id = id
+ return slf
+}
+
+func (slf *TimeSpentSearch) First() (*TimeSpent, error) {
+ var db = slf.build()
+ var record = new(TimeSpent)
+ err := db.First(record).Error
+ return record, err
+}
+
+func (slf *TimeSpentSearch) Updates(values interface{}) error {
+ var db = slf.build()
+ return db.Updates(values).Error
+}
+
+func (slf *TimeSpentSearch) Save(record *TimeSpent) error {
+ if record.Id == 0 {
+ return errors.New("id涓虹┖")
+ }
+ var db = slf.build()
+
+ if err := db.Save(record).Error; err != nil {
+ return fmt.Errorf("save err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
+
+func (slf *TimeSpentSearch) Find() ([]*TimeSpent, int64, error) {
+ var db = slf.build()
+ var records = make([]*TimeSpent, 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)
+ }
+
+ err := db.Find(&records).Error
+ return records, total, err
+}
+
+// InitDefaultData 鍒濆鍖栨暟鎹�
+func (slf *TimeSpentSearch) InitDefaultData() error {
+ var (
+ db = slf.Orm.Table(slf.TableName())
+ total int64 = 0
+ )
+ if err := db.Count(&total).Error; err != nil {
+ return err
+ }
+ if total != 0 {
+ return nil
+ }
+ records := []*TimeSpent{
+ {Name: "1灏忔椂"},
+ {Name: "2灏忔椂"},
+ {Name: "0.5涓伐浣滄棩"},
+ {Name: "1涓伐浣滄棩"},
+ {Name: "2涓伐浣滄棩"},
+ {Name: "2涓伐浣滄棩浠ヤ笂"},
+ }
+ return slf.CreateBatch(records)
+}
diff --git a/pkg/safe/safe.go b/pkg/safe/safe.go
index 2e37644..91ce826 100644
--- a/pkg/safe/safe.go
+++ b/pkg/safe/safe.go
@@ -1,7 +1,7 @@
package safe
import (
- "aps_admin/pkg/logx"
+ "aps_crm/pkg/logx"
"runtime/debug"
)
diff --git a/pkg/structx/structx.go b/pkg/structx/structx.go
new file mode 100644
index 0000000..e038656
--- /dev/null
+++ b/pkg/structx/structx.go
@@ -0,0 +1,16 @@
+package structx
+
+import "encoding/json"
+
+func AssignTo(from interface{}, to interface{}) error {
+ data, err := json.Marshal(from)
+ if err != nil {
+ return err
+ }
+
+ err = json.Unmarshal(data, to)
+ if err != nil {
+ return err
+ }
+ return nil
+}
diff --git a/router/faultType.go b/router/faultType.go
new file mode 100644
index 0000000..4d8d1d5
--- /dev/null
+++ b/router/faultType.go
@@ -0,0 +1,17 @@
+package router
+
+import (
+ v1 "aps_crm/api/v1"
+ "github.com/gin-gonic/gin"
+)
+
+func InitFaultTypeRouter(router *gin.RouterGroup) {
+ FaultTypeRouter := router.Group("faultType")
+ FaultTypeApi := v1.FaultTypeApi{}
+ {
+ FaultTypeRouter.POST("add", FaultTypeApi.Add) // 娣诲姞鏁呴殰绫诲埆
+ FaultTypeRouter.DELETE("delete/:id", FaultTypeApi.Delete) // 鍒犻櫎鏁呴殰绫诲埆
+ FaultTypeRouter.PUT("update", FaultTypeApi.Update) // 鏇存柊鏁呴殰绫诲埆
+ FaultTypeRouter.GET("list", FaultTypeApi.List) // 鑾峰彇鏁呴殰绫诲埆鍒楄〃
+ }
+}
diff --git a/router/timeSpent.go b/router/timeSpent.go
new file mode 100644
index 0000000..5b537c7
--- /dev/null
+++ b/router/timeSpent.go
@@ -0,0 +1,17 @@
+package router
+
+import (
+ v1 "aps_crm/api/v1"
+ "github.com/gin-gonic/gin"
+)
+
+func InitTimeSpentRouter(router *gin.RouterGroup) {
+ TimeSpentRouter := router.Group("timeSpent")
+ TimeSpentApi := v1.TimeSpentApi{}
+ {
+ TimeSpentRouter.POST("add", TimeSpentApi.Add) // 娣诲姞鑺辫垂鏃堕棿
+ TimeSpentRouter.DELETE("delete/:id", TimeSpentApi.Delete) // 鍒犻櫎鑺辫垂鏃堕棿
+ TimeSpentRouter.PUT("update", TimeSpentApi.Update) // 鏇存柊鑺辫垂鏃堕棿
+ TimeSpentRouter.GET("list", TimeSpentApi.List) // 鑾峰彇鑺辫垂鏃堕棿鍒楄〃
+ }
+}
diff --git a/service/faultType.go b/service/faultType.go
new file mode 100644
index 0000000..efa655e
--- /dev/null
+++ b/service/faultType.go
@@ -0,0 +1,66 @@
+package service
+
+import (
+ "aps_crm/model"
+ "aps_crm/model/request"
+ "aps_crm/pkg/ecode"
+)
+
+type FaultTypeService struct{}
+
+func NewFaultTypeService() FaultTypeService {
+ return FaultTypeService{}
+}
+
+func (FaultTypeService) AddFaultType(FaultType *model.FaultType) int {
+ err := model.NewFaultTypeSearch().Create(FaultType)
+ if err != nil {
+ return ecode.DBErr
+ }
+
+ return ecode.OK
+}
+
+func (FaultTypeService) DeleteFaultType(id int) int {
+ err := model.NewFaultTypeSearch().SetId(id).Delete()
+ if err != nil {
+ return ecode.DBErr
+ }
+ return ecode.OK
+}
+
+func (FaultTypeService) GetFaultTypeList() ([]*model.FaultType, int64, int) {
+ list, total, err := model.NewFaultTypeSearch().Find()
+ if err != nil {
+ return nil, 0, ecode.DBErr
+ }
+
+ return list, total, ecode.OK
+}
+
+func (FaultTypeService) UpdateFaultTypes(FaultTypes []*request.UpdateFaultType) int {
+ for _, v := range FaultTypes {
+ // check FaultType exist
+ _, err := model.NewFaultTypeSearch().SetId(v.Id).First()
+ if err != nil {
+ return ecode.DBErr
+ }
+
+ err = model.NewFaultTypeSearch().SetId(v.Id).Updates(map[string]interface{}{
+
+ })
+ if err != nil {
+ return ecode.DBErr
+ }
+ }
+
+ return ecode.OK
+}
+
+func (FaultTypeService) UpdateFaultType(faultType *model.FaultType) int {
+ err := model.NewFaultTypeSearch().Save(faultType)
+ if err != nil {
+ return ecode.DBErr
+ }
+ return ecode.OK
+}
diff --git a/service/serviceOrder.go b/service/serviceOrder.go
index 2c2e80d..60a6d5f 100644
--- a/service/serviceOrder.go
+++ b/service/serviceOrder.go
@@ -30,7 +30,7 @@
}
func (ServiceOrderService) GetServiceOrderList() ([]*model.ServiceOrder, int64, int) {
- list, total, err := model.NewServiceOrderSearch().Find()
+ list, total, err := model.NewServiceOrderSearch().SetPreload(true).Find()
if err != nil {
return nil, 0, ecode.DBErr
}
@@ -46,9 +46,7 @@
return ecode.DBErr
}
- err = model.NewServiceOrderSearch().SetId(v.Id).Updates(map[string]interface{}{
-
- })
+ err = model.NewServiceOrderSearch().SetId(v.Id).Updates(map[string]interface{}{})
if err != nil {
return ecode.DBErr
}
@@ -58,9 +56,9 @@
}
func (ServiceOrderService) UpdateServiceOrder(serviceOrder *model.ServiceOrder) int {
- err := model.NewServiceOrderSearch().Save(serviceOrder)
- if err != nil {
- return ecode.DBErr
- }
+ err := model.NewServiceOrderSearch().Save(serviceOrder)
+ if err != nil {
+ return ecode.DBErr
+ }
return ecode.OK
}
diff --git a/service/timeSpent.go b/service/timeSpent.go
new file mode 100644
index 0000000..4c245ef
--- /dev/null
+++ b/service/timeSpent.go
@@ -0,0 +1,66 @@
+package service
+
+import (
+ "aps_crm/model"
+ "aps_crm/model/request"
+ "aps_crm/pkg/ecode"
+)
+
+type TimeSpentService struct{}
+
+func NewTimeSpentService() TimeSpentService {
+ return TimeSpentService{}
+}
+
+func (TimeSpentService) AddTimeSpent(TimeSpent *model.TimeSpent) int {
+ err := model.NewTimeSpentSearch().Create(TimeSpent)
+ if err != nil {
+ return ecode.DBErr
+ }
+
+ return ecode.OK
+}
+
+func (TimeSpentService) DeleteTimeSpent(id int) int {
+ err := model.NewTimeSpentSearch().SetId(id).Delete()
+ if err != nil {
+ return ecode.DBErr
+ }
+ return ecode.OK
+}
+
+func (TimeSpentService) GetTimeSpentList() ([]*model.TimeSpent, int64, int) {
+ list, total, err := model.NewTimeSpentSearch().Find()
+ if err != nil {
+ return nil, 0, ecode.DBErr
+ }
+
+ return list, total, ecode.OK
+}
+
+func (TimeSpentService) UpdateTimeSpents(TimeSpents []*request.UpdateTimeSpent) int {
+ for _, v := range TimeSpents {
+ // check TimeSpent exist
+ _, err := model.NewTimeSpentSearch().SetId(v.Id).First()
+ if err != nil {
+ return ecode.DBErr
+ }
+
+ err = model.NewTimeSpentSearch().SetId(v.Id).Updates(map[string]interface{}{
+
+ })
+ if err != nil {
+ return ecode.DBErr
+ }
+ }
+
+ return ecode.OK
+}
+
+func (TimeSpentService) UpdateTimeSpent(timeSpent *model.TimeSpent) int {
+ err := model.NewTimeSpentSearch().Save(timeSpent)
+ if err != nil {
+ return ecode.DBErr
+ }
+ return ecode.OK
+}
--
Gitblit v1.8.0