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