From 642b32ac1e86f596a0348ba230d3ba6822832e96 Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期四, 13 七月 2023 14:13:18 +0800 Subject: [PATCH] add --- api/v1/index.go | 2 pkg/ecode/code.go | 6 docs/swagger.yaml | 171 +++++++++ service/serviceFollowup.go | 54 +++ docs/docs.go | 268 ++++++++++++++ docs/swagger.json | 268 ++++++++++++++ model/response/response.go | 4 model/serviceFollowup.go | 83 ++++ router/serviceFollowup.go | 19 + service/index.go | 1 model/request/serviceFollowup.go | 26 + model/index.go | 1 logs/aps-admin.err.log | 1 router/index.go | 2 api/v1/serviceFollowup.go | 150 ++++++++ 15 files changed, 1,056 insertions(+), 0 deletions(-) diff --git a/api/v1/index.go b/api/v1/index.go index bdc1117..213ccca 100644 --- a/api/v1/index.go +++ b/api/v1/index.go @@ -41,6 +41,7 @@ PlanApi ServiceContractApi OrderManageApi + ServiceFollowupApi } var ApiGroup = new(Group) @@ -81,4 +82,5 @@ planService = service.ServiceGroup.PlanService serviceContractService = service.ServiceGroup.SContractService orderManageService = service.ServiceGroup.OrderManageService + serviceFollowupService = service.ServiceGroup.FollowupService ) diff --git a/api/v1/serviceFollowup.go b/api/v1/serviceFollowup.go new file mode 100644 index 0000000..65f8f53 --- /dev/null +++ b/api/v1/serviceFollowup.go @@ -0,0 +1,150 @@ +package v1 + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "github.com/gin-gonic/gin" + "strconv" +) + +type ServiceFollowupApi struct{} + +// Add +// +// @Tags ServiceFollowup +// @Summary 娣诲姞鏈嶅姟璺熻繘 +// @Produce application/json +// @Param object body request.AddServiceFollowup true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceFollowup/add [post] +func (s *ServiceFollowupApi) Add(c *gin.Context) { + var params request.AddServiceFollowup + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode, serviceFollowup := checkServiceFollowupParams(params.ServiceFollowup) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + errCode = serviceFollowupService.AddServiceFollowup(&serviceFollowup) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// +// @Tags ServiceFollowup +// @Summary 鍒犻櫎鏈嶅姟璺熻繘 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceFollowup/delete/{id} [delete] +func (s *ServiceFollowupApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := serviceFollowupService.DeleteServiceFollowup(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// +// @Tags ServiceFollowup +// @Summary 鏇存柊鏈嶅姟璺熻繘 +// @Produce application/json +// @Param object body request.UpdateServiceFollowup true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceFollowup/update [put] +func (s *ServiceFollowupApi) Update(c *gin.Context) { + var params request.UpdateServiceFollowup + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode, serviceFollowup := checkServiceFollowupParams(params.ServiceFollowup) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + errCode = serviceFollowupService.UpdateServiceFollowup(&serviceFollowup) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// +// @Tags ServiceFollowup +// @Summary 鏈嶅姟璺熻繘鍒楄〃 +// @Produce application/json +// @Success 200 {object} contextx.Response{data=response.ServiceFollowupResponse} +// @Router /api/serviceFollowup/list [get] +func (s *ServiceFollowupApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + list, errCode := serviceFollowupService.GetServiceFollowupList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ServiceFollowupResponse{ + List: list, + }) +} + +// checkServiceFollowupParams +func checkServiceFollowupParams(serviceFollowup request.ServiceFollowup) (errCode int, serviceFollowupModel model.ServiceFollowup) { + if serviceFollowup.Number == "" { + return ecode.InvalidParams, serviceFollowupModel + } + + if serviceFollowup.MemberId == 0 { + return ecode.InvalidParams, serviceFollowupModel + } + + serviceFollowupModel = model.ServiceFollowup{ + ClientId: serviceFollowup.ClientId, + Number: serviceFollowup.Number, + ContactId: serviceFollowup.ContactId, + ServiceId: serviceFollowup.ServiceId, + MemberId: serviceFollowup.MemberId, + PlanId: serviceFollowup.PlanId, + Satisfaction: serviceFollowup.Satisfaction, + TimelyRate: serviceFollowup.TimelyRate, + SolveRate: serviceFollowup.SolveRate, + IsVisit: serviceFollowup.IsVisit, + OldMemberId: serviceFollowup.OldMemberId, + Remark: serviceFollowup.Remark, + File: serviceFollowup.File, + } + + return ecode.OK, serviceFollowupModel +} diff --git a/docs/docs.go b/docs/docs.go index dea128f..3a20450 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -3865,6 +3865,125 @@ } } }, + "/api/serviceFollowup/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceFollowup" + ], + "summary": "娣诲姞鏈嶅姟璺熻繘", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddServiceFollowup" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/serviceFollowup/delete/{id}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceFollowup" + ], + "summary": "鍒犻櫎鏈嶅姟璺熻繘", + "parameters": [ + { + "type": "integer", + "description": "鏌ヨ鍙傛暟", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/serviceFollowup/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceFollowup" + ], + "summary": "鏈嶅姟璺熻繘鍒楄〃", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.ServiceFollowupResponse" + } + } + } + ] + } + } + } + } + }, + "/api/serviceFollowup/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceFollowup" + ], + "summary": "鏇存柊鏈嶅姟璺熻繘", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateServiceFollowup" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/status/add": { "post": { "produces": [ @@ -5433,6 +5552,53 @@ } } }, + "model.ServiceFollowup": { + "type": "object", + "properties": { + "clientId": { + "type": "integer" + }, + "contactId": { + "type": "integer" + }, + "file": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "isVisit": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "oldMemberId": { + "type": "integer" + }, + "planId": { + "type": "integer" + }, + "remark": { + "type": "string" + }, + "satisfaction": { + "type": "integer" + }, + "serviceId": { + "type": "integer" + }, + "solveRate": { + "type": "integer" + }, + "timelyRate": { + "type": "integer" + } + } + }, "model.SubOrder": { "type": "object", "properties": { @@ -6209,6 +6375,50 @@ "type": "string" }, "typeId": { + "type": "integer" + } + } + }, + "request.AddServiceFollowup": { + "type": "object", + "properties": { + "clientId": { + "type": "integer" + }, + "contactId": { + "type": "integer" + }, + "file": { + "type": "string" + }, + "isVisit": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "oldMemberId": { + "type": "integer" + }, + "planId": { + "type": "integer" + }, + "remark": { + "type": "string" + }, + "satisfaction": { + "type": "integer" + }, + "serviceId": { + "type": "integer" + }, + "solveRate": { + "type": "integer" + }, + "timelyRate": { "type": "integer" } } @@ -7729,6 +7939,53 @@ } } }, + "request.UpdateServiceFollowup": { + "type": "object", + "properties": { + "clientId": { + "type": "integer" + }, + "contactId": { + "type": "integer" + }, + "file": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "isVisit": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "oldMemberId": { + "type": "integer" + }, + "planId": { + "type": "integer" + }, + "remark": { + "type": "string" + }, + "satisfaction": { + "type": "integer" + }, + "serviceId": { + "type": "integer" + }, + "solveRate": { + "type": "integer" + }, + "timelyRate": { + "type": "integer" + } + } + }, "request.UpdateStatus": { "type": "object", "required": [ @@ -8121,6 +8378,17 @@ } } }, + "response.ServiceFollowupResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.ServiceFollowup" + } + } + } + }, "response.SubOrderResponse": { "type": "object", "properties": { diff --git a/docs/swagger.json b/docs/swagger.json index fe36c36..2f66cb6 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -3853,6 +3853,125 @@ } } }, + "/api/serviceFollowup/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceFollowup" + ], + "summary": "娣诲姞鏈嶅姟璺熻繘", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddServiceFollowup" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/serviceFollowup/delete/{id}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceFollowup" + ], + "summary": "鍒犻櫎鏈嶅姟璺熻繘", + "parameters": [ + { + "type": "integer", + "description": "鏌ヨ鍙傛暟", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/serviceFollowup/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceFollowup" + ], + "summary": "鏈嶅姟璺熻繘鍒楄〃", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.ServiceFollowupResponse" + } + } + } + ] + } + } + } + } + }, + "/api/serviceFollowup/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "ServiceFollowup" + ], + "summary": "鏇存柊鏈嶅姟璺熻繘", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateServiceFollowup" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/status/add": { "post": { "produces": [ @@ -5421,6 +5540,53 @@ } } }, + "model.ServiceFollowup": { + "type": "object", + "properties": { + "clientId": { + "type": "integer" + }, + "contactId": { + "type": "integer" + }, + "file": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "isVisit": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "oldMemberId": { + "type": "integer" + }, + "planId": { + "type": "integer" + }, + "remark": { + "type": "string" + }, + "satisfaction": { + "type": "integer" + }, + "serviceId": { + "type": "integer" + }, + "solveRate": { + "type": "integer" + }, + "timelyRate": { + "type": "integer" + } + } + }, "model.SubOrder": { "type": "object", "properties": { @@ -6197,6 +6363,50 @@ "type": "string" }, "typeId": { + "type": "integer" + } + } + }, + "request.AddServiceFollowup": { + "type": "object", + "properties": { + "clientId": { + "type": "integer" + }, + "contactId": { + "type": "integer" + }, + "file": { + "type": "string" + }, + "isVisit": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "oldMemberId": { + "type": "integer" + }, + "planId": { + "type": "integer" + }, + "remark": { + "type": "string" + }, + "satisfaction": { + "type": "integer" + }, + "serviceId": { + "type": "integer" + }, + "solveRate": { + "type": "integer" + }, + "timelyRate": { "type": "integer" } } @@ -7717,6 +7927,53 @@ } } }, + "request.UpdateServiceFollowup": { + "type": "object", + "properties": { + "clientId": { + "type": "integer" + }, + "contactId": { + "type": "integer" + }, + "file": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "isVisit": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "oldMemberId": { + "type": "integer" + }, + "planId": { + "type": "integer" + }, + "remark": { + "type": "string" + }, + "satisfaction": { + "type": "integer" + }, + "serviceId": { + "type": "integer" + }, + "solveRate": { + "type": "integer" + }, + "timelyRate": { + "type": "integer" + } + } + }, "request.UpdateStatus": { "type": "object", "required": [ @@ -8109,6 +8366,17 @@ } } }, + "response.ServiceFollowupResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.ServiceFollowup" + } + } + } + }, "response.SubOrderResponse": { "type": "object", "properties": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 490ca68..4a14862 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -723,6 +723,37 @@ typeId: type: integer type: object + model.ServiceFollowup: + properties: + clientId: + type: integer + contactId: + type: integer + file: + type: string + id: + type: integer + isVisit: + type: integer + memberId: + type: integer + number: + type: string + oldMemberId: + type: integer + planId: + type: integer + remark: + type: string + satisfaction: + type: integer + serviceId: + type: integer + solveRate: + type: integer + timelyRate: + type: integer + type: object model.SubOrder: properties: clientId: @@ -1247,6 +1278,35 @@ terms: type: string typeId: + type: integer + type: object + request.AddServiceFollowup: + properties: + clientId: + type: integer + contactId: + type: integer + file: + type: string + isVisit: + type: integer + memberId: + type: integer + number: + type: string + oldMemberId: + type: integer + planId: + type: integer + remark: + type: string + satisfaction: + type: integer + serviceId: + type: integer + solveRate: + type: integer + timelyRate: type: integer type: object request.AddStatus: @@ -2275,6 +2335,37 @@ typeId: type: integer type: object + request.UpdateServiceFollowup: + properties: + clientId: + type: integer + contactId: + type: integer + file: + type: string + id: + type: integer + isVisit: + type: integer + memberId: + type: integer + number: + type: string + oldMemberId: + type: integer + planId: + type: integer + remark: + type: string + satisfaction: + type: integer + serviceId: + type: integer + solveRate: + type: integer + timelyRate: + type: integer + type: object request.UpdateStatus: properties: id: @@ -2524,6 +2615,13 @@ list: items: $ref: '#/definitions/model.ServiceContract' + type: array + type: object + response.ServiceFollowupResponse: + properties: + list: + items: + $ref: '#/definitions/model.ServiceFollowup' type: array type: object response.SubOrderResponse: @@ -4905,6 +5003,79 @@ summary: 鏇存柊鏈嶅姟鍚堝悓 tags: - ServiceContract + /api/serviceFollowup/add: + post: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.AddServiceFollowup' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 娣诲姞鏈嶅姟璺熻繘 + tags: + - ServiceFollowup + /api/serviceFollowup/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: + - ServiceFollowup + /api/serviceFollowup/list: + get: + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/contextx.Response' + - properties: + data: + $ref: '#/definitions/response.ServiceFollowupResponse' + type: object + summary: 鏈嶅姟璺熻繘鍒楄〃 + tags: + - ServiceFollowup + /api/serviceFollowup/update: + put: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.UpdateServiceFollowup' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 鏇存柊鏈嶅姟璺熻繘 + tags: + - ServiceFollowup /api/status/add: post: parameters: diff --git a/logs/aps-admin.err.log b/logs/aps-admin.err.log index c3683ac..f595613 100644 --- a/logs/aps-admin.err.log +++ b/logs/aps-admin.err.log @@ -348,3 +348,4 @@ [2023-07-12 15:23:10] [error] [aps_crm/model.(*ContractSearch).Create:46] trace {"error": "Error 1146 (42S02): Table 'aps_crm.contract' doesn't exist", "elapsed": 0.003547, "rows": 0, "sql": "INSERT INTO `contract` (`client_id`,`member_id`,`number`,`quotation_id`,`status_id`,`file`) VALUES (11,11,'ZDYB02-2',0,0,'string')"} [2023-07-13 10:55:49] [error] [aps_crm/model.(*ServiceContractSearch).FindAll:80] trace {"error": ": unsupported relations for schema ServiceContract", "elapsed": 0.001442, "rows": 2, "sql": "SELECT * FROM `service_contract`"} [2023-07-13 10:57:45] [error] [aps_crm/model.(*ServiceContractSearch).FindAll:80] trace {"error": ": unsupported relations for schema ServiceContract", "elapsed": 0.0011591, "rows": 2, "sql": "SELECT * FROM `service_contract`"} +[2023-07-13 14:11:03] [error] [aps_crm/model.(*ServiceFollowupSearch).Create:53] trace {"error": "Error 1146 (42S02): Table 'aps_crm.service_followup' doesn't exist", "elapsed": 0.0024191, "rows": 0, "sql": "INSERT INTO `service_followup` (`client_id`,`number`,`contact_id`,`service_id`,`member_id`,`plan_id`,`satisfaction`,`timely_rate`,`solve_rate`,`is_visit`,`old_member_id`,`remark`,`file`) VALUES (0,'HF21',0,0,110,0,0,0,0,0,0,'string','string')"} diff --git a/model/index.go b/model/index.go index fec053b..15c1827 100644 --- a/model/index.go +++ b/model/index.go @@ -57,6 +57,7 @@ Plan{}, ServiceContract{}, OrderManage{}, + ServiceFollowup{}, ) return err } diff --git a/model/request/serviceFollowup.go b/model/request/serviceFollowup.go new file mode 100644 index 0000000..9ae6706 --- /dev/null +++ b/model/request/serviceFollowup.go @@ -0,0 +1,26 @@ +package request + +type AddServiceFollowup struct { + ServiceFollowup +} + +type ServiceFollowup struct { + ClientId int `json:"clientId"` + Number string `json:"number"` + ContactId int `json:"contactId"` + ServiceId int `json:"serviceId"` + MemberId int `json:"memberId"` + PlanId int `json:"planId"` + Satisfaction int `json:"satisfaction"` + TimelyRate int `json:"timelyRate"` + SolveRate int `json:"solveRate"` + IsVisit int `json:"isVisit"` + OldMemberId int `json:"oldMemberId"` + Remark string `json:"remark"` + File string `json:"file"` +} + +type UpdateServiceFollowup struct { + Id int `json:"id"` + ServiceFollowup +} diff --git a/model/response/response.go b/model/response/response.go index 9bc5c0b..9f09dab 100644 --- a/model/response/response.go +++ b/model/response/response.go @@ -161,4 +161,8 @@ OrderManageResponse struct { List []*model.OrderManage `json:"list"` } + + ServiceFollowupResponse struct { + List []*model.ServiceFollowup `json:"list"` + } ) diff --git a/model/serviceFollowup.go b/model/serviceFollowup.go new file mode 100644 index 0000000..f4bc52c --- /dev/null +++ b/model/serviceFollowup.go @@ -0,0 +1,83 @@ +package model + +import ( + "aps_crm/pkg/mysqlx" + "gorm.io/gorm" +) + +type ( + ServiceFollowup struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + ClientId int `json:"clientId" gorm:"column:client_id;type:int;comment:瀹㈡埛id"` + Number string `json:"number" gorm:"column:number;type:varchar(255);comment:鍚堝悓缂栧彿"` + ContactId int `json:"contactId" gorm:"column:contact_id;type:int;comment:鑱旂郴浜篿d"` + ServiceId int `json:"serviceId" gorm:"column:service_id;type:int;comment:瀹㈡埛鏈嶅姟鍗昳d"` + MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:鏈嶅姟浜哄憳id"` + PlanId int `json:"planId" gorm:"column:plan_id;type:int;comment:鏈嶅姟璁″垝id"` + Satisfaction int `json:"satisfaction" gorm:"column:satisfaction;type:int;comment:婊℃剰搴�"` + TimelyRate int `json:"timelyRate" gorm:"column:timely_rate;type:int;comment:鍙婃椂鐜�"` + SolveRate int `json:"solveRate" gorm:"column:solve_rate;type:int;comment:瑙e喅鐜�"` + IsVisit int `json:"isVisit" gorm:"column:is_visit;type:int;comment:鏈嶅姟浜哄憳鏄惁鏉ヨ繃"` + OldMemberId int `json:"oldMemberId" gorm:"column:old_member_id;type:int;comment:鍘熸湇鍔′汉鍛�"` + Remark string `json:"remark" gorm:"column:remark;type:text;comment:澶囨敞"` + File string `json:"file" gorm:"column:file;type:varchar(255);comment:闄勪欢"` + } + + ServiceFollowupSearch struct { + ServiceFollowup + Orm *gorm.DB + } +) + +func (ServiceFollowup) TableName() string { + return "service_followup" +} + +func NewServiceFollowupSearch() *ServiceFollowupSearch { + return &ServiceFollowupSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *ServiceFollowupSearch) build() *gorm.DB { + var db = slf.Orm.Model(&ServiceFollowup{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *ServiceFollowupSearch) Create(record *ServiceFollowup) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *ServiceFollowupSearch) Update(record *ServiceFollowup) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *ServiceFollowupSearch) Delete() error { + var db = slf.build() + return db.Delete(&ServiceFollowup{}).Error +} + +func (slf *ServiceFollowupSearch) Find() (*ServiceFollowup, error) { + var db = slf.build() + var record = &ServiceFollowup{} + err := db.First(record).Error + return record, err +} + +func (slf *ServiceFollowupSearch) FindAll() ([]*ServiceFollowup, error) { + var db = slf.build() + var records = make([]*ServiceFollowup, 0) + err := db.Find(&records).Error + return records, err +} + +func (slf *ServiceFollowupSearch) SetId(id int) *ServiceFollowupSearch { + slf.Id = id + return slf +} diff --git a/pkg/ecode/code.go b/pkg/ecode/code.go index 623a843..bb7640a 100644 --- a/pkg/ecode/code.go +++ b/pkg/ecode/code.go @@ -247,4 +247,10 @@ OrderManageUpdateErr = 3400005 // 鏇存柊璁㈠崟绠$悊澶辫触 OrderManageDeleteErr = 3400006 // 鍒犻櫎璁㈠崟绠$悊澶辫触 + ServiceFollowupExist = 3500001 // 鏈嶅姟璺熻繘宸插瓨鍦� + ServiceFollowupNotExist = 3500002 // 鏈嶅姟璺熻繘涓嶅瓨鍦� + ServiceFollowupListErr = 3500003 // 鑾峰彇鏈嶅姟璺熻繘鍒楄〃澶辫触 + ServiceFollowupSetErr = 3500004 // 璁剧疆鏈嶅姟璺熻繘澶辫触 + ServiceFollowupUpdateErr = 3500005 // 鏇存柊鏈嶅姟璺熻繘澶辫触 + ServiceFollowupDeleteErr = 3500006 // 鍒犻櫎鏈嶅姟璺熻繘澶辫触 ) diff --git a/router/index.go b/router/index.go index ce4efd2..3fba11a 100644 --- a/router/index.go +++ b/router/index.go @@ -47,6 +47,7 @@ PlanRouter ServiceContractRouter OrderManageRouter + ServiceFollowupRouter } func InitRouter() *gin.Engine { @@ -111,6 +112,7 @@ routerGroup.InitPlanRouter(PrivateGroup) // 娉ㄥ唽plan璺敱 routerGroup.InitServiceContractRouter(PrivateGroup) // 娉ㄥ唽serviceContract璺敱 routerGroup.InitOrderManageRouter(PrivateGroup) // 娉ㄥ唽orderManage璺敱 + routerGroup.InitServiceFollowupRouter(PrivateGroup) // 娉ㄥ唽serviceFollowup璺敱 } return Router } diff --git a/router/serviceFollowup.go b/router/serviceFollowup.go new file mode 100644 index 0000000..18c728b --- /dev/null +++ b/router/serviceFollowup.go @@ -0,0 +1,19 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +type ServiceFollowupRouter struct{} + +func (s *ServiceFollowupRouter) InitServiceFollowupRouter(router *gin.RouterGroup) { + serviceFollowupRouter := router.Group("serviceFollowup") + serviceFollowupApi := v1.ApiGroup.ServiceFollowupApi + { + serviceFollowupRouter.POST("add", serviceFollowupApi.Add) // 娣诲姞鏈嶅姟璺熻繘 + serviceFollowupRouter.DELETE("delete/:id", serviceFollowupApi.Delete) // 鍒犻櫎鏈嶅姟璺熻繘 + serviceFollowupRouter.PUT("update", serviceFollowupApi.Update) // 鏇存柊鏈嶅姟璺熻繘 + serviceFollowupRouter.GET("list", serviceFollowupApi.List) // 鑾峰彇鏈嶅姟璺熻繘鍒楄〃 + } +} diff --git a/service/index.go b/service/index.go index 40b102e..ccfcca8 100644 --- a/service/index.go +++ b/service/index.go @@ -36,6 +36,7 @@ PlanService SContractService OrderManageService + FollowupService } var ServiceGroup = new(Group) diff --git a/service/serviceFollowup.go b/service/serviceFollowup.go new file mode 100644 index 0000000..83ea5f5 --- /dev/null +++ b/service/serviceFollowup.go @@ -0,0 +1,54 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/pkg/ecode" +) + +type FollowupService struct{} + +func (FollowupService) AddServiceFollowup(serviceFollowup *model.ServiceFollowup) int { + err := model.NewServiceFollowupSearch().Create(serviceFollowup) + if err != nil { + return ecode.ServiceFollowupExist + } + + return ecode.OK +} + +func (FollowupService) DeleteServiceFollowup(id int) int { + _, err := model.NewServiceFollowupSearch().SetId(id).Find() + if err != nil { + return ecode.ServiceFollowupNotExist + } + + err = model.NewServiceFollowupSearch().SetId(id).Delete() + if err != nil { + return ecode.ServiceFollowupNotExist + } + return ecode.OK +} + +func (FollowupService) GetServiceFollowupList() ([]*model.ServiceFollowup, int) { + list, err := model.NewServiceFollowupSearch().FindAll() + if err != nil { + return nil, ecode.ServiceFollowupListErr + } + + return list, ecode.OK +} + +func (FollowupService) UpdateServiceFollowup(serviceFollowup *model.ServiceFollowup) int { + // check serviceFollowup exist + _, err := model.NewServiceFollowupSearch().SetId(serviceFollowup.Id).Find() + if err != nil { + return ecode.ServiceFollowupNotExist + } + + err = model.NewServiceFollowupSearch().SetId(serviceFollowup.Id).Update(serviceFollowup) + if err != nil { + return ecode.ServiceFollowupSetErr + } + + return ecode.OK +} -- Gitblit v1.8.0