From a5ccc6b321a3127ca064b935e42db44428c41305 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期六, 05 八月 2023 17:00:50 +0800 Subject: [PATCH] 服务合同收款计划增删改查接口 --- api/v1/faq.go | 4 service/serviceCollectionPlan.go | 80 +++ api/v1/serviceCollectionPlan.go | 112 +++++ model/request/serviceCollectionPlan.go | 18 router/index.go | 3 router/serviceCollectionPlan.go | 17 constvar/serviceCollectionPlan.go | 12 docs/swagger.yaml | 199 +++++++++ docs/docs.go | 299 ++++++++++++++ docs/swagger.json | 299 ++++++++++++++ model/serviceCollectionPlan.go | 159 +++++++ service/faq.go | 4 12 files changed, 1,203 insertions(+), 3 deletions(-) diff --git a/api/v1/faq.go b/api/v1/faq.go index 44dc341..350dae2 100644 --- a/api/v1/faq.go +++ b/api/v1/faq.go @@ -89,10 +89,12 @@ // @Tags 甯歌闂绠$悊 // @Summary 鑾峰彇甯歌闂鍒楄〃 // @Produce application/json +// @Param object body request.GetFaqList true "鍙傛暟" // @Success 200 {object} response.ListResponse{data=[]model.Faq} // @Router /api/faq/list [get] func (s *FaqApi) List(c *gin.Context) { - ctx, ok := contextx.NewContext(c, nil) + var params request.GetFaqList + ctx, ok := contextx.NewContext(c, params) if !ok { return } diff --git a/api/v1/serviceCollectionPlan.go b/api/v1/serviceCollectionPlan.go new file mode 100644 index 0000000..7476dd7 --- /dev/null +++ b/api/v1/serviceCollectionPlan.go @@ -0,0 +1,112 @@ +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 ServiceCollectionPlanApi struct{} + +// Add +// @Tags 鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊 +// @Summary 娣诲姞鏈嶅姟鍚堝悓鏀舵璁″垝 +// @Produce application/json +// @Param object body request.AddServiceCollectionPlan true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceCollectionPlan/add [post] +func (s *ServiceCollectionPlanApi) Add(c *gin.Context) { + var params request.AddServiceCollectionPlan + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewServiceCollectionPlanService().AddServiceCollectionPlan(params.List) + 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/serviceCollectionPlan/delete/{id} [delete] +func (s *ServiceCollectionPlanApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewServiceCollectionPlanService().DeleteServiceCollectionPlan(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊 +// @Summary 鏇存柊鏈嶅姟鍚堝悓鏀舵璁″垝 +// @Produce application/json +// @Param object body request.UpdateServiceCollectionPlan true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceCollectionPlan/update [put] +func (s *ServiceCollectionPlanApi) Update(c *gin.Context) { + var params request.UpdateServiceCollectionPlan + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.ServiceCollectionPlan.Id = params.Id + + errCode := service.NewServiceCollectionPlanService().UpdateServiceCollectionPlan(¶ms.ServiceCollectionPlan) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊 +// @Summary 鑾峰彇鏈嶅姟鍚堝悓鏀舵璁″垝鍒楄〃 +// @Produce application/json +// @Param object query request.GetServiceCollectionPlanList true "鍙傛暟" +// @Success 200 {object} response.ListResponse{data=[]model.ServiceCollectionPlan} +// @Router /api/serviceCollectionPlan/list [get] +func (s *ServiceCollectionPlanApi) List(c *gin.Context) { + var params request.GetServiceCollectionPlanList + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + serviceCollectionPlan, total, errCode := service.NewServiceCollectionPlanService().GetServiceCollectionPlanList(params.ServiceContractId) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: serviceCollectionPlan, + Count: total, + }) +} diff --git a/constvar/serviceCollectionPlan.go b/constvar/serviceCollectionPlan.go new file mode 100644 index 0000000..32450ec --- /dev/null +++ b/constvar/serviceCollectionPlan.go @@ -0,0 +1,12 @@ +package constvar +type ServiceCollectionPlanQueryClass string + +const ( + ServiceCollectionPlanQueryClassExpireLessThen60Days ServiceCollectionPlanQueryClass = "" +) + +type ServiceCollectionPlanKeywordType string + +const ( + ServiceCollectionPlanKeywordCustomerName ServiceCollectionPlanKeywordType = "" +) diff --git a/docs/docs.go b/docs/docs.go index 181b30a..1c6480c 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -2141,6 +2141,17 @@ "甯歌闂绠$悊" ], "summary": "鑾峰彇甯歌闂鍒楄〃", + "parameters": [ + { + "description": "鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetFaqList" + } + } + ], "responses": { "200": { "description": "OK", @@ -6024,6 +6035,136 @@ } } }, + "/api/serviceCollectionPlan/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊" + ], + "summary": "娣诲姞鏈嶅姟鍚堝悓鏀舵璁″垝", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddServiceCollectionPlan" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/serviceCollectionPlan/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/serviceCollectionPlan/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊" + ], + "summary": "鑾峰彇鏈嶅姟鍚堝悓鏀舵璁″垝鍒楄〃", + "parameters": [ + { + "type": "integer", + "description": "鏈嶅姟鍚堝悓id", + "name": "serviceContractId", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.ListResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/model.ServiceCollectionPlan" + } + } + } + } + ] + } + } + } + } + }, + "/api/serviceCollectionPlan/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊" + ], + "summary": "鏇存柊鏈嶅姟鍚堝悓鏀舵璁″垝", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateServiceCollectionPlan" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/serviceContract/add": { "post": { "produces": [ @@ -7930,6 +8071,24 @@ } }, "definitions": { + "constvar.FaqKeywordType": { + "type": "string", + "enum": [ + "" + ], + "x-enum-varnames": [ + "FaqKeywordCustomerName" + ] + }, + "constvar.FaqQueryClass": { + "type": "string", + "enum": [ + "" + ], + "x-enum-varnames": [ + "FaqQueryClassExpireLessThen60Days" + ] + }, "constvar.SalesStatus": { "type": "integer", "enum": [ @@ -9395,6 +9554,58 @@ } } }, + "model.ServiceCollectionPlan": { + "type": "object", + "properties": { + "amount": { + "description": "閲戦", + "type": "number" + }, + "collectionDate": { + "description": "璁″垝鏀舵鏃ユ湡", + "type": "string" + }, + "collectionType": { + "description": "绫诲瀷锛�1 璁″垝鏀舵鏃ユ湡 2 椤圭洰鐘舵�侊級", + "type": "integer" + }, + "fileId": { + "description": "闄勪欢id", + "type": "integer" + }, + "id": { + "type": "integer" + }, + "moneyType": { + "description": "甯佺", + "type": "string" + }, + "percent": { + "description": "姣斾緥", + "type": "number" + }, + "principal": { + "description": "鏀舵璐熻矗浜篒D", + "type": "integer" + }, + "remark": { + "description": "澶囨敞", + "type": "string" + }, + "serviceContractId": { + "description": "鏈嶅姟鍚堝悓id", + "type": "integer" + }, + "status": { + "description": "鐘舵�侊紙1鏈敹2宸叉敹锛�", + "type": "integer" + }, + "term": { + "description": "鏈熸", + "type": "integer" + } + } + }, "model.ServiceContract": { "type": "object", "properties": { @@ -9543,6 +9754,9 @@ }, "serviceId": { "type": "integer" + }, + "serviceOrder": { + "$ref": "#/definitions/model.ServiceOrder" }, "solveRateId": { "type": "integer" @@ -10681,6 +10895,17 @@ } } }, + "request.AddServiceCollectionPlan": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.ServiceCollectionPlan" + } + } + } + }, "request.AddServiceContract": { "type": "object", "properties": { @@ -11386,6 +11611,28 @@ "pageSize": { "description": "姣忛〉澶у皬", "type": "integer" + } + } + }, + "request.GetFaqList": { + "type": "object", + "properties": { + "keyword": { + "type": "string" + }, + "keywordType": { + "$ref": "#/definitions/constvar.FaqKeywordType" + }, + "page": { + "description": "椤电爜", + "type": "integer" + }, + "pageSize": { + "description": "姣忛〉澶у皬", + "type": "integer" + }, + "queryClass": { + "$ref": "#/definitions/constvar.FaqQueryClass" } } }, @@ -13296,6 +13543,58 @@ } } }, + "request.UpdateServiceCollectionPlan": { + "type": "object", + "properties": { + "amount": { + "description": "閲戦", + "type": "number" + }, + "collectionDate": { + "description": "璁″垝鏀舵鏃ユ湡", + "type": "string" + }, + "collectionType": { + "description": "绫诲瀷锛�1 璁″垝鏀舵鏃ユ湡 2 椤圭洰鐘舵�侊級", + "type": "integer" + }, + "fileId": { + "description": "闄勪欢id", + "type": "integer" + }, + "id": { + "type": "integer" + }, + "moneyType": { + "description": "甯佺", + "type": "string" + }, + "percent": { + "description": "姣斾緥", + "type": "number" + }, + "principal": { + "description": "鏀舵璐熻矗浜篒D", + "type": "integer" + }, + "remark": { + "description": "澶囨敞", + "type": "string" + }, + "serviceContractId": { + "description": "鏈嶅姟鍚堝悓id", + "type": "integer" + }, + "status": { + "description": "鐘舵�侊紙1鏈敹2宸叉敹锛�", + "type": "integer" + }, + "term": { + "description": "鏈熸", + "type": "integer" + } + } + }, "request.UpdateServiceContract": { "type": "object", "properties": { diff --git a/docs/swagger.json b/docs/swagger.json index 5513bae..7aa19d5 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -2129,6 +2129,17 @@ "甯歌闂绠$悊" ], "summary": "鑾峰彇甯歌闂鍒楄〃", + "parameters": [ + { + "description": "鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetFaqList" + } + } + ], "responses": { "200": { "description": "OK", @@ -6012,6 +6023,136 @@ } } }, + "/api/serviceCollectionPlan/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊" + ], + "summary": "娣诲姞鏈嶅姟鍚堝悓鏀舵璁″垝", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddServiceCollectionPlan" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/serviceCollectionPlan/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/serviceCollectionPlan/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊" + ], + "summary": "鑾峰彇鏈嶅姟鍚堝悓鏀舵璁″垝鍒楄〃", + "parameters": [ + { + "type": "integer", + "description": "鏈嶅姟鍚堝悓id", + "name": "serviceContractId", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.ListResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/model.ServiceCollectionPlan" + } + } + } + } + ] + } + } + } + } + }, + "/api/serviceCollectionPlan/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊" + ], + "summary": "鏇存柊鏈嶅姟鍚堝悓鏀舵璁″垝", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateServiceCollectionPlan" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/serviceContract/add": { "post": { "produces": [ @@ -7918,6 +8059,24 @@ } }, "definitions": { + "constvar.FaqKeywordType": { + "type": "string", + "enum": [ + "" + ], + "x-enum-varnames": [ + "FaqKeywordCustomerName" + ] + }, + "constvar.FaqQueryClass": { + "type": "string", + "enum": [ + "" + ], + "x-enum-varnames": [ + "FaqQueryClassExpireLessThen60Days" + ] + }, "constvar.SalesStatus": { "type": "integer", "enum": [ @@ -9383,6 +9542,58 @@ } } }, + "model.ServiceCollectionPlan": { + "type": "object", + "properties": { + "amount": { + "description": "閲戦", + "type": "number" + }, + "collectionDate": { + "description": "璁″垝鏀舵鏃ユ湡", + "type": "string" + }, + "collectionType": { + "description": "绫诲瀷锛�1 璁″垝鏀舵鏃ユ湡 2 椤圭洰鐘舵�侊級", + "type": "integer" + }, + "fileId": { + "description": "闄勪欢id", + "type": "integer" + }, + "id": { + "type": "integer" + }, + "moneyType": { + "description": "甯佺", + "type": "string" + }, + "percent": { + "description": "姣斾緥", + "type": "number" + }, + "principal": { + "description": "鏀舵璐熻矗浜篒D", + "type": "integer" + }, + "remark": { + "description": "澶囨敞", + "type": "string" + }, + "serviceContractId": { + "description": "鏈嶅姟鍚堝悓id", + "type": "integer" + }, + "status": { + "description": "鐘舵�侊紙1鏈敹2宸叉敹锛�", + "type": "integer" + }, + "term": { + "description": "鏈熸", + "type": "integer" + } + } + }, "model.ServiceContract": { "type": "object", "properties": { @@ -9531,6 +9742,9 @@ }, "serviceId": { "type": "integer" + }, + "serviceOrder": { + "$ref": "#/definitions/model.ServiceOrder" }, "solveRateId": { "type": "integer" @@ -10669,6 +10883,17 @@ } } }, + "request.AddServiceCollectionPlan": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.ServiceCollectionPlan" + } + } + } + }, "request.AddServiceContract": { "type": "object", "properties": { @@ -11374,6 +11599,28 @@ "pageSize": { "description": "姣忛〉澶у皬", "type": "integer" + } + } + }, + "request.GetFaqList": { + "type": "object", + "properties": { + "keyword": { + "type": "string" + }, + "keywordType": { + "$ref": "#/definitions/constvar.FaqKeywordType" + }, + "page": { + "description": "椤电爜", + "type": "integer" + }, + "pageSize": { + "description": "姣忛〉澶у皬", + "type": "integer" + }, + "queryClass": { + "$ref": "#/definitions/constvar.FaqQueryClass" } } }, @@ -13284,6 +13531,58 @@ } } }, + "request.UpdateServiceCollectionPlan": { + "type": "object", + "properties": { + "amount": { + "description": "閲戦", + "type": "number" + }, + "collectionDate": { + "description": "璁″垝鏀舵鏃ユ湡", + "type": "string" + }, + "collectionType": { + "description": "绫诲瀷锛�1 璁″垝鏀舵鏃ユ湡 2 椤圭洰鐘舵�侊級", + "type": "integer" + }, + "fileId": { + "description": "闄勪欢id", + "type": "integer" + }, + "id": { + "type": "integer" + }, + "moneyType": { + "description": "甯佺", + "type": "string" + }, + "percent": { + "description": "姣斾緥", + "type": "number" + }, + "principal": { + "description": "鏀舵璐熻矗浜篒D", + "type": "integer" + }, + "remark": { + "description": "澶囨敞", + "type": "string" + }, + "serviceContractId": { + "description": "鏈嶅姟鍚堝悓id", + "type": "integer" + }, + "status": { + "description": "鐘舵�侊紙1鏈敹2宸叉敹锛�", + "type": "integer" + }, + "term": { + "description": "鏈熸", + "type": "integer" + } + } + }, "request.UpdateServiceContract": { "type": "object", "properties": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 3b5e678..6fb9f7b 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1,4 +1,16 @@ definitions: + constvar.FaqKeywordType: + enum: + - "" + type: string + x-enum-varnames: + - FaqKeywordCustomerName + constvar.FaqQueryClass: + enum: + - "" + type: string + x-enum-varnames: + - FaqQueryClassExpireLessThen60Days constvar.SalesStatus: enum: - 1 @@ -987,6 +999,44 @@ name: type: string type: object + model.ServiceCollectionPlan: + properties: + amount: + description: 閲戦 + type: number + collectionDate: + description: 璁″垝鏀舵鏃ユ湡 + type: string + collectionType: + description: 绫诲瀷锛�1 璁″垝鏀舵鏃ユ湡 2 椤圭洰鐘舵�侊級 + type: integer + fileId: + description: 闄勪欢id + type: integer + id: + type: integer + moneyType: + description: 甯佺 + type: string + percent: + description: 姣斾緥 + type: number + principal: + description: 鏀舵璐熻矗浜篒D + type: integer + remark: + description: 澶囨敞 + type: string + serviceContractId: + description: 鏈嶅姟鍚堝悓id + type: integer + status: + description: 鐘舵�侊紙1鏈敹2宸叉敹锛� + type: integer + term: + description: 鏈熸 + type: integer + type: object model.ServiceContract: properties: clientId: @@ -1085,6 +1135,8 @@ type: integer serviceId: type: integer + serviceOrder: + $ref: '#/definitions/model.ServiceOrder' solveRateId: type: integer timelyRateId: @@ -1849,6 +1901,13 @@ required: - name type: object + request.AddServiceCollectionPlan: + properties: + list: + items: + $ref: '#/definitions/model.ServiceCollectionPlan' + type: array + type: object request.AddServiceContract: properties: clientId: @@ -2339,6 +2398,21 @@ pageSize: description: 姣忛〉澶у皬 type: integer + type: object + request.GetFaqList: + properties: + keyword: + type: string + keywordType: + $ref: '#/definitions/constvar.FaqKeywordType' + page: + description: 椤电爜 + type: integer + pageSize: + description: 姣忛〉澶у皬 + type: integer + queryClass: + $ref: '#/definitions/constvar.FaqQueryClass' type: object request.GetFollowRecordList: properties: @@ -3618,6 +3692,44 @@ type: array required: - satisfactions + type: object + request.UpdateServiceCollectionPlan: + properties: + amount: + description: 閲戦 + type: number + collectionDate: + description: 璁″垝鏀舵鏃ユ湡 + type: string + collectionType: + description: 绫诲瀷锛�1 璁″垝鏀舵鏃ユ湡 2 椤圭洰鐘舵�侊級 + type: integer + fileId: + description: 闄勪欢id + type: integer + id: + type: integer + moneyType: + description: 甯佺 + type: string + percent: + description: 姣斾緥 + type: number + principal: + description: 鏀舵璐熻矗浜篒D + type: integer + remark: + description: 澶囨敞 + type: string + serviceContractId: + description: 鏈嶅姟鍚堝悓id + type: integer + status: + description: 鐘舵�侊紙1鏈敹2宸叉敹锛� + type: integer + term: + description: 鏈熸 + type: integer type: object request.UpdateServiceContract: properties: @@ -5887,6 +5999,13 @@ - 甯歌闂绠$悊 /api/faq/list: get: + parameters: + - description: 鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.GetFaqList' produces: - application/json responses: @@ -8274,6 +8393,86 @@ summary: 鏇存柊婊℃剰搴� tags: - Satisfaction + /api/serviceCollectionPlan/add: + post: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.AddServiceCollectionPlan' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 娣诲姞鏈嶅姟鍚堝悓鏀舵璁″垝 + tags: + - 鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊 + /api/serviceCollectionPlan/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/serviceCollectionPlan/list: + get: + parameters: + - description: 鏈嶅姟鍚堝悓id + in: query + name: serviceContractId + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/response.ListResponse' + - properties: + data: + items: + $ref: '#/definitions/model.ServiceCollectionPlan' + type: array + type: object + summary: 鑾峰彇鏈嶅姟鍚堝悓鏀舵璁″垝鍒楄〃 + tags: + - 鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊 + /api/serviceCollectionPlan/update: + put: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.UpdateServiceCollectionPlan' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 鏇存柊鏈嶅姟鍚堝悓鏀舵璁″垝 + tags: + - 鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊 /api/serviceContract/add: post: parameters: diff --git a/model/request/serviceCollectionPlan.go b/model/request/serviceCollectionPlan.go new file mode 100644 index 0000000..b8e4f35 --- /dev/null +++ b/model/request/serviceCollectionPlan.go @@ -0,0 +1,18 @@ +package request + +import ( + "aps_crm/model" +) + +type AddServiceCollectionPlan struct { + List []*model.ServiceCollectionPlan +} + +type UpdateServiceCollectionPlan struct { + Id int `json:"id"` + model.ServiceCollectionPlan +} + +type GetServiceCollectionPlanList struct { + ServiceContractId int `gorm:"service_contract_id" form:"serviceContractId"` // 鏈嶅姟鍚堝悓id +} diff --git a/model/serviceCollectionPlan.go b/model/serviceCollectionPlan.go new file mode 100644 index 0000000..be9da1b --- /dev/null +++ b/model/serviceCollectionPlan.go @@ -0,0 +1,159 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // ServiceCollectionPlan 鏈嶅姟鍚堝悓鏀舵璁″垝 + ServiceCollectionPlan struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + CollectionType int `gorm:"collection_type" json:"collectionType"` // 绫诲瀷锛�1 璁″垝鏀舵鏃ユ湡 2 椤圭洰鐘舵�侊級 + ServiceContractId int `gorm:"service_contract_id" json:"serviceContractId"` // 鏈嶅姟鍚堝悓id + PrincipalId int `gorm:"principal_id" json:"principalId"` // 鏀舵璐熻矗浜篒D + Term int `gorm:"term" json:"term"` // 鏈熸 + Percent float64 `gorm:"percent" json:"percent"` // 姣斾緥 + Amount float64 `gorm:"amount" json:"amount"` // 閲戦 + MoneyType string `gorm:"money_type" json:"moneyType"` // 甯佺 + CollectionDate string `gorm:"collection_date" json:"collectionDate"` // 璁″垝鏀舵鏃ユ湡 + Remark string `gorm:"remark" json:"remark"` // 澶囨敞 + Status int `gorm:"status" json:"status"` // 鐘舵�侊紙1鏈敹2宸叉敹锛� + FileId int `gorm:"file_id" json:"fileId"` // 闄勪欢id + } + + // ServiceCollectionPlanSearch 鏈嶅姟鍚堝悓鏀舵璁″垝鎼滅储鏉′欢 + ServiceCollectionPlanSearch struct { + ServiceCollectionPlan + Orm *gorm.DB + QueryClass constvar.ServiceCollectionPlanQueryClass + KeywordType constvar.ServiceCollectionPlanKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (ServiceCollectionPlan) TableName() string { + return "service_collection_plan" +} + +func NewServiceCollectionPlanSearch() *ServiceCollectionPlanSearch { + return &ServiceCollectionPlanSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *ServiceCollectionPlanSearch) build() *gorm.DB { + var db = slf.Orm.Model(&ServiceCollectionPlan{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + if slf.ServiceContractId != 0 { + db = db.Where("service_contract_id = ?", slf.ServiceContractId) + } + + return db +} + +func (slf *ServiceCollectionPlanSearch) Create(record *ServiceCollectionPlan) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *ServiceCollectionPlanSearch) CreateBatch(records []*ServiceCollectionPlan) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *ServiceCollectionPlanSearch) Delete() error { + var db = slf.build() + return db.Delete(&ServiceCollectionPlan{}).Error +} + +func (slf *ServiceCollectionPlanSearch) Update(record *ServiceCollectionPlan) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *ServiceCollectionPlanSearch) FindAll() ([]*ServiceCollectionPlan, error) { + var db = slf.build() + var record = make([]*ServiceCollectionPlan, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *ServiceCollectionPlanSearch) SetId(id int) *ServiceCollectionPlanSearch { + slf.Id = id + return slf +} + +func (slf *ServiceCollectionPlanSearch) SetOrm(tx *gorm.DB) *ServiceCollectionPlanSearch { + slf.Orm = tx + return slf +} + +func (slf *ServiceCollectionPlanSearch) SetServiceContractId(id int) *ServiceCollectionPlanSearch { + slf.ServiceContractId = id + return slf +} + +func (slf *ServiceCollectionPlanSearch) First() (*ServiceCollectionPlan, error) { + var db = slf.build() + var record = new(ServiceCollectionPlan) + err := db.First(record).Error + return record, err +} + +func (slf *ServiceCollectionPlanSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *ServiceCollectionPlanSearch) Save(record *ServiceCollectionPlan) 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 *ServiceCollectionPlanSearch) Find() ([]*ServiceCollectionPlan, int64, error) { + var db = slf.build() + var records = make([]*ServiceCollectionPlan, 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 *ServiceCollectionPlanSearch) 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 := []*ServiceCollectionPlan{} + return slf.CreateBatch(records) +} diff --git a/router/index.go b/router/index.go index 506b4ab..635352f 100644 --- a/router/index.go +++ b/router/index.go @@ -164,6 +164,9 @@ InitPriorityLevelRouter(PrivateGroup) InitServiceTypeRouter(PrivateGroup) InitSeverityRouter(PrivateGroup) + InitTimeSpentRouter(PrivateGroup) + InitFaultTypeRouter(PrivateGroup) + InitServiceCollectionPlanRouter(PrivateGroup) } return Router } diff --git a/router/serviceCollectionPlan.go b/router/serviceCollectionPlan.go new file mode 100644 index 0000000..68c20f7 --- /dev/null +++ b/router/serviceCollectionPlan.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitServiceCollectionPlanRouter(router *gin.RouterGroup) { + ServiceCollectionPlanRouter := router.Group("serviceCollectionPlan") + ServiceCollectionPlanApi := v1.ServiceCollectionPlanApi{} + { + ServiceCollectionPlanRouter.POST("add", ServiceCollectionPlanApi.Add) // 娣诲姞鏈嶅姟鍚堝悓鏀舵璁″垝 + ServiceCollectionPlanRouter.DELETE("delete/:id", ServiceCollectionPlanApi.Delete) // 鍒犻櫎鏈嶅姟鍚堝悓鏀舵璁″垝 + ServiceCollectionPlanRouter.PUT("update", ServiceCollectionPlanApi.Update) // 鏇存柊鏈嶅姟鍚堝悓鏀舵璁″垝 + ServiceCollectionPlanRouter.GET("list", ServiceCollectionPlanApi.List) // 鑾峰彇鏈嶅姟鍚堝悓鏀舵璁″垝鍒楄〃 + } +} diff --git a/service/faq.go b/service/faq.go index fc9e7ea..bd01165 100644 --- a/service/faq.go +++ b/service/faq.go @@ -12,8 +12,8 @@ return FaqService{} } -func (FaqService) AddFaq(Faq *model.Faq) int { - err := model.NewFaqSearch().Create(Faq) +func (FaqService) AddFaq(faq *model.Faq) int { + err := model.NewFaqSearch().Create(faq) if err != nil { return ecode.DBErr } diff --git a/service/serviceCollectionPlan.go b/service/serviceCollectionPlan.go new file mode 100644 index 0000000..fdaa235 --- /dev/null +++ b/service/serviceCollectionPlan.go @@ -0,0 +1,80 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" + "gorm.io/gorm" +) + +type ServiceCollectionPlanService struct{} + +func NewServiceCollectionPlanService() ServiceCollectionPlanService { + return ServiceCollectionPlanService{} +} + +func (ServiceCollectionPlanService) AddServiceCollectionPlan(serviceCollectionPlan []*model.ServiceCollectionPlan) int { + if len(serviceCollectionPlan) == 0 { + return ecode.ParamsErr + } + contractId := serviceCollectionPlan[0].ServiceContractId + err := model.WithTransaction(func(db *gorm.DB) error { + err := model.NewServiceCollectionPlanSearch().SetOrm(db).SetServiceContractId(contractId).Delete() + if err != nil { + return err + } + err = model.NewServiceCollectionPlanSearch().SetOrm(db).CreateBatch(serviceCollectionPlan) + if err != nil { + return err + } + return nil + }) + + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (ServiceCollectionPlanService) DeleteServiceCollectionPlan(id int) int { + err := model.NewServiceCollectionPlanSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (ServiceCollectionPlanService) GetServiceCollectionPlanList(contractId int) ([]*model.ServiceCollectionPlan, int64, int) { + list, total, err := model.NewServiceCollectionPlanSearch().SetServiceContractId(contractId).Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (ServiceCollectionPlanService) UpdateServiceCollectionPlans(ServiceCollectionPlans []*request.UpdateServiceCollectionPlan) int { + for _, v := range ServiceCollectionPlans { + // check ServiceCollectionPlan exist + _, err := model.NewServiceCollectionPlanSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewServiceCollectionPlanSearch().SetId(v.Id).Updates(map[string]interface{}{}) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (ServiceCollectionPlanService) UpdateServiceCollectionPlan(serviceCollectionPlan *model.ServiceCollectionPlan) int { + err := model.NewServiceCollectionPlanSearch().SetId(serviceCollectionPlan.Id).Save(serviceCollectionPlan) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} -- Gitblit v1.8.0