From aab89dff18f597d4cdd10c73b9ad8c3c14d82d28 Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期四, 20 七月 2023 20:28:59 +0800 Subject: [PATCH] add --- api/v1/index.go | 2 model/request/timelyRate.go | 15 + model/timelyRate.go | 85 +++++ api/v1/satisfaction.go | 14 service/dataServer.go | 8 service/timelyRate.go | 69 ++++ pkg/ecode/code.go | 7 docs/swagger.yaml | 122 ++++++++ docs/docs.go | 192 ++++++++++++ docs/swagger.json | 192 ++++++++++++ model/response/response.go | 16 + model/serviceFollowup.go | 4 api/v1/timelyRate.go | 113 +++++++ model/serviceFeeManage.go | 2 service/index.go | 1 model/index.go | 1 router/index.go | 2 api/v1/serviceFollowup.go | 26 router/timelyRate.go | 19 + 19 files changed, 861 insertions(+), 29 deletions(-) diff --git a/api/v1/index.go b/api/v1/index.go index 94e421e..5866de6 100644 --- a/api/v1/index.go +++ b/api/v1/index.go @@ -50,6 +50,7 @@ DepartmentApi VettingApi SatisfactionApi + TimelyRateApi } var ApiGroup = new(Group) @@ -100,4 +101,5 @@ departmentService = service.ServiceGroup.DepartmentService vettingService = service.ServiceGroup.VettingService satisfactionService = service.ServiceGroup.SatisfactionService + timelyRateService = service.ServiceGroup.TimelyRateService ) diff --git a/api/v1/satisfaction.go b/api/v1/satisfaction.go index 5f96bfc..b6d49ec 100644 --- a/api/v1/satisfaction.go +++ b/api/v1/satisfaction.go @@ -68,8 +68,8 @@ // @Tags Satisfaction // @Summary 鏇存柊婊℃剰搴� // @Produce application/json -// @Param object body request.UpdateSatisfactions true "鏌ヨ鍙傛暟" -// @Success 200 {object} contextx.Response{} +// @Param object body request.UpdateSatisfactions true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} // @Router /api/satisfaction/update [put] func (s *SatisfactionApi) Update(c *gin.Context) { var params request.UpdateSatisfactions @@ -89,11 +89,11 @@ // List // -// @Tags Satisfaction -// @Summary 婊℃剰搴﹀垪琛� -// @Produce application/json -// @Success 200 {object} contextx.Response{data=response.SatisfactionResponse} -// @Router /api/satisfaction/list [get] +// @Tags Satisfaction +// @Summary 婊℃剰搴﹀垪琛� +// @Produce application/json +// @Success 200 {object} contextx.Response{data=response.SatisfactionResponse} +// @Router /api/satisfaction/list [get] func (s *SatisfactionApi) List(c *gin.Context) { ctx, ok := contextx.NewContext(c, nil) if !ok { diff --git a/api/v1/serviceFollowup.go b/api/v1/serviceFollowup.go index d39f3b5..2157325 100644 --- a/api/v1/serviceFollowup.go +++ b/api/v1/serviceFollowup.go @@ -133,19 +133,19 @@ //} 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, + ClientId: serviceFollowup.ClientId, + Number: serviceFollowup.Number, + ContactId: serviceFollowup.ContactId, + ServiceId: serviceFollowup.ServiceId, + MemberId: serviceFollowup.MemberId, + PlanId: serviceFollowup.PlanId, + SatisfactionId: serviceFollowup.Satisfaction, + TimelyRateId: serviceFollowup.TimelyRate, + SolveRate: serviceFollowup.SolveRate, + IsVisit: serviceFollowup.IsVisit, + OldMemberId: serviceFollowup.OldMemberId, + Remark: serviceFollowup.Remark, + File: serviceFollowup.File, } return ecode.OK, serviceFollowupModel diff --git a/api/v1/timelyRate.go b/api/v1/timelyRate.go new file mode 100644 index 0000000..5206b77 --- /dev/null +++ b/api/v1/timelyRate.go @@ -0,0 +1,113 @@ + +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 TimelyRateApi struct{} + +// Add +// +// @Tags TimelyRate +// @Summary 娣诲姞閿�鍞樁娈� +// @Produce application/json +// @Param object body request.AddTimelyRate true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/timelyRate/add [post] +func (s *TimelyRateApi) Add(c *gin.Context) { + var params request.AddTimelyRate + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + timelyRate := new(model.TimelyRate) + timelyRate.Name = params.Name + + errCode := timelyRateService.AddTimelyRate(timelyRate) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// +// @Tags TimelyRate +// @Summary 鍒犻櫎閿�鍞樁娈� +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/timelyRate/delete/{id} [delete] +func (s *TimelyRateApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := timelyRateService.DeleteTimelyRate(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// +// @Tags TimelyRate +// @Summary 鏇存柊閿�鍞樁娈� +// @Produce application/json +// @Param object body request.UpdateTimelyRates true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/timelyRate/update [put] +func (s *TimelyRateApi) Update(c *gin.Context) { + var params request.UpdateTimelyRates + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := timelyRateService.UpdateTimelyRate(params.TimelyRates) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// +// @Tags TimelyRate +// @Summary 鑾峰彇閿�鍞樁娈靛垪琛� +// @Produce application/json +// @Success 200 {object} contextx.Response{data=response.TimelyRateResponse} +// @Router /api/timelyRate/list [get] +func (s *TimelyRateApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + timelyRates, errCode := timelyRateService.GetTimelyRateList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.TimelyRateResponse{ + List: timelyRates, + }) +} diff --git a/docs/docs.go b/docs/docs.go index 6d6eace..eeb01be 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -4864,6 +4864,125 @@ } } }, + "/api/timelyRate/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "TimelyRate" + ], + "summary": "娣诲姞閿�鍞樁娈�", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddTimelyRate" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/timelyRate/delete/{id}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "TimelyRate" + ], + "summary": "鍒犻櫎閿�鍞樁娈�", + "parameters": [ + { + "type": "integer", + "description": "鏌ヨ鍙傛暟", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/timelyRate/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "TimelyRate" + ], + "summary": "鑾峰彇閿�鍞樁娈靛垪琛�", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.TimelyRateResponse" + } + } + } + ] + } + } + } + } + }, + "/api/timelyRate/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "TimelyRate" + ], + "summary": "鏇存柊閿�鍞樁娈�", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateTimelyRates" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/user/changePassword": { "post": { "produces": [ @@ -6461,7 +6580,7 @@ "remark": { "type": "string" }, - "satisfaction": { + "satisfactionId": { "type": "integer" }, "serviceId": { @@ -6470,7 +6589,7 @@ "solveRate": { "type": "integer" }, - "timelyRate": { + "timelyRateId": { "type": "integer" } } @@ -6501,6 +6620,17 @@ "items": { "$ref": "#/definitions/model.Product" } + } + } + }, + "model.TimelyRate": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" } } }, @@ -7484,6 +7614,17 @@ "items": { "$ref": "#/definitions/model.Product" } + } + } + }, + "request.AddTimelyRate": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" } } }, @@ -9300,6 +9441,35 @@ } } }, + "request.UpdateTimelyRate": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, + "request.UpdateTimelyRates": { + "type": "object", + "required": [ + "timely_rate" + ], + "properties": { + "timely_rate": { + "type": "array", + "items": { + "$ref": "#/definitions/request.UpdateTimelyRate" + } + } + } + }, "response.CityResponse": { "type": "object", "properties": { @@ -9526,6 +9696,13 @@ "type": "array", "items": { "$ref": "#/definitions/model.SalesSources" + } + }, + "satisfaction": { + "description": "婊℃剰搴�", + "type": "array", + "items": { + "$ref": "#/definitions/model.Satisfaction" } } } @@ -9845,6 +10022,17 @@ } } }, + "response.TimelyRateResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.TimelyRate" + } + } + } + }, "response.UserResponse": { "type": "object", "properties": { diff --git a/docs/swagger.json b/docs/swagger.json index 4fb2c34..fc1e881 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -4852,6 +4852,125 @@ } } }, + "/api/timelyRate/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "TimelyRate" + ], + "summary": "娣诲姞閿�鍞樁娈�", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddTimelyRate" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/timelyRate/delete/{id}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "TimelyRate" + ], + "summary": "鍒犻櫎閿�鍞樁娈�", + "parameters": [ + { + "type": "integer", + "description": "鏌ヨ鍙傛暟", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/timelyRate/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "TimelyRate" + ], + "summary": "鑾峰彇閿�鍞樁娈靛垪琛�", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.TimelyRateResponse" + } + } + } + ] + } + } + } + } + }, + "/api/timelyRate/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "TimelyRate" + ], + "summary": "鏇存柊閿�鍞樁娈�", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateTimelyRates" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/user/changePassword": { "post": { "produces": [ @@ -6449,7 +6568,7 @@ "remark": { "type": "string" }, - "satisfaction": { + "satisfactionId": { "type": "integer" }, "serviceId": { @@ -6458,7 +6577,7 @@ "solveRate": { "type": "integer" }, - "timelyRate": { + "timelyRateId": { "type": "integer" } } @@ -6489,6 +6608,17 @@ "items": { "$ref": "#/definitions/model.Product" } + } + } + }, + "model.TimelyRate": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" } } }, @@ -7472,6 +7602,17 @@ "items": { "$ref": "#/definitions/model.Product" } + } + } + }, + "request.AddTimelyRate": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" } } }, @@ -9288,6 +9429,35 @@ } } }, + "request.UpdateTimelyRate": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, + "request.UpdateTimelyRates": { + "type": "object", + "required": [ + "timely_rate" + ], + "properties": { + "timely_rate": { + "type": "array", + "items": { + "$ref": "#/definitions/request.UpdateTimelyRate" + } + } + } + }, "response.CityResponse": { "type": "object", "properties": { @@ -9514,6 +9684,13 @@ "type": "array", "items": { "$ref": "#/definitions/model.SalesSources" + } + }, + "satisfaction": { + "description": "婊℃剰搴�", + "type": "array", + "items": { + "$ref": "#/definitions/model.Satisfaction" } } } @@ -9833,6 +10010,17 @@ } } }, + "response.TimelyRateResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.TimelyRate" + } + } + } + }, "response.UserResponse": { "type": "object", "properties": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 9eb98ef..9b02d7a 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -872,13 +872,13 @@ type: integer remark: type: string - satisfaction: + satisfactionId: type: integer serviceId: type: integer solveRate: type: integer - timelyRate: + timelyRateId: type: integer type: object model.SubOrder: @@ -899,6 +899,13 @@ items: $ref: '#/definitions/model.Product' type: array + type: object + model.TimelyRate: + properties: + id: + type: integer + name: + type: string type: object model.User: properties: @@ -1564,6 +1571,13 @@ items: $ref: '#/definitions/model.Product' type: array + type: object + request.AddTimelyRate: + properties: + name: + type: string + required: + - name type: object request.AddVetting: properties: @@ -2793,6 +2807,25 @@ $ref: '#/definitions/model.Product' type: array type: object + request.UpdateTimelyRate: + properties: + id: + type: integer + name: + type: string + required: + - id + - name + type: object + request.UpdateTimelyRates: + properties: + timely_rate: + items: + $ref: '#/definitions/request.UpdateTimelyRate' + type: array + required: + - timely_rate + type: object response.CityResponse: properties: list: @@ -2947,6 +2980,11 @@ description: 鍟嗘満鏉ユ簮 items: $ref: '#/definitions/model.SalesSources' + type: array + satisfaction: + description: 婊℃剰搴� + items: + $ref: '#/definitions/model.Satisfaction' type: array type: object response.DepartmentResponse: @@ -3148,6 +3186,13 @@ list: items: $ref: '#/definitions/model.SubOrder' + type: array + type: object + response.TimelyRateResponse: + properties: + list: + items: + $ref: '#/definitions/model.TimelyRate' type: array type: object response.UserResponse: @@ -6133,6 +6178,79 @@ summary: 鏇存柊瀛愯鍗� tags: - SubOrder + /api/timelyRate/add: + post: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.AddTimelyRate' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 娣诲姞閿�鍞樁娈� + tags: + - TimelyRate + /api/timelyRate/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: + - TimelyRate + /api/timelyRate/list: + get: + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/contextx.Response' + - properties: + data: + $ref: '#/definitions/response.TimelyRateResponse' + type: object + summary: 鑾峰彇閿�鍞樁娈靛垪琛� + tags: + - TimelyRate + /api/timelyRate/update: + put: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.UpdateTimelyRates' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 鏇存柊閿�鍞樁娈� + tags: + - TimelyRate /api/user/changePassword: post: parameters: diff --git a/model/index.go b/model/index.go index 722dfce..efcc71c 100644 --- a/model/index.go +++ b/model/index.go @@ -64,6 +64,7 @@ Api{}, Department{}, Satisfaction{}, + TimelyRate{}, ) return err } diff --git a/model/request/timelyRate.go b/model/request/timelyRate.go new file mode 100644 index 0000000..0dd1208 --- /dev/null +++ b/model/request/timelyRate.go @@ -0,0 +1,15 @@ + +package request + +type AddTimelyRate struct { + Name string ` json:"name" binding:"required"` +} + +type UpdateTimelyRate struct { + Id int `json:"id" binding:"required"` + Name string `json:"name" binding:"required"` +} + +type UpdateTimelyRates struct { + TimelyRates []*UpdateTimelyRate `json:"timely_rate" binding:"required"` +} diff --git a/model/response/response.go b/model/response/response.go index 364428d..3846070 100644 --- a/model/response/response.go +++ b/model/response/response.go @@ -215,6 +215,10 @@ Member []*model.User `json:"member"` // 閮ㄩ棬 Department []*model.Department `json:"department"` + // 婊℃剰搴� + Satisfaction []*model.Satisfaction `json:"satisfaction"` + // 鍙婃椂鐜� + TimelyRate []*model.TimelyRate `json:"timely_rate"` } DepartmentResponse struct { @@ -224,4 +228,16 @@ SatisfactionResponse struct { List []*model.Satisfaction `json:"list"` } + + TimelyRateResponse struct { + List []*model.TimelyRate `json:"list"` + } ) + +// 鍙婃椂鐜� 瑙e喅鐜� 婊℃剰搴� 鏈嶅姟浜哄憳鏄惁鏉ヨ繃 锛堟湇鍔″洖璁垮崟锛� +// 宸ュ崟绫诲瀷 鎶ヤ慨鏉ユ簮锛堝伐鍗曠鐞嗭級 +// 鍚堝悓绫诲瀷 鍚堝悓鐘舵�侊紙鏈嶅姟鍚堝悓锛� +// 浠樻鏂瑰紡 鏄惁寮�绁� 璐︽埛锛堥攢鍞��娆惧崟锛� +// 閫�鍏ヤ粨搴� 鐘舵�侊紙閿�鍞��璐у崟锛� +// 鎶ヤ环鍗曠姸鎬� 锛堟姤浠峰崟锛� +// 鍙兘鎬� 甯佺 褰撳墠鐘舵�侊紙閿�鍞満浼氾級 diff --git a/model/serviceFeeManage.go b/model/serviceFeeManage.go index 5905d04..6db6e76 100644 --- a/model/serviceFeeManage.go +++ b/model/serviceFeeManage.go @@ -80,6 +80,6 @@ func (slf *ServiceFeeManageSearch) FindAll() ([]*ServiceFeeManage, error) { var db = slf.build() var records = make([]*ServiceFeeManage, 0) - err := db.Find(&records).Error + err := db.Preload("Client").Find(&records).Error return records, err } diff --git a/model/serviceFollowup.go b/model/serviceFollowup.go index d05e848..3d44828 100644 --- a/model/serviceFollowup.go +++ b/model/serviceFollowup.go @@ -15,8 +15,8 @@ CustomerServiceSheet CustomerServiceSheet `json:"customerServiceSheet" gorm:"foreignKey:ServiceId"` MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:鏈嶅姟浜哄憳id"` PlanId int `json:"planId" gorm:"column:plan_id;type:int;comment:鏈嶅姟璁″垝id"` - Satisfaction int `json:"satisfaction" gorm:"column:satisfaction;type:int;comment:婊℃剰搴�"` - TimelyRate int `json:"timelyRate" gorm:"column:timely_rate;type:int;comment:鍙婃椂鐜�"` + SatisfactionId int `json:"satisfactionId" gorm:"column:satisfaction_id;type:int;comment:婊℃剰搴d"` + TimelyRateId int `json:"timelyRateId" gorm:"column:timely_rate_id;type:int;comment:鍙婃椂鐜噄d"` 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:鍘熸湇鍔′汉鍛�"` diff --git a/model/timelyRate.go b/model/timelyRate.go new file mode 100644 index 0000000..b98e414 --- /dev/null +++ b/model/timelyRate.go @@ -0,0 +1,85 @@ +package model + +import ( + "aps_crm/pkg/mysqlx" + "gorm.io/gorm" +) + +type ( + // TimelyRate 鍟嗘満闃舵 + TimelyRate struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name;type:varchar(255);comment:鍟嗘満闃舵鍚嶇О"` + } + + TimelyRateSearch struct { + TimelyRate + Orm *gorm.DB + } +) + +func (TimelyRate) TableName() string { + return "timely_rate" +} + +func NewTimelyRateSearch() *TimelyRateSearch { + return &TimelyRateSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *TimelyRateSearch) build() *gorm.DB { + var db = slf.Orm.Model(&TimelyRate{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + if slf.Name != "" { + db = db.Where("name = ?", slf.Name) + } + + return db +} + +func (slf *TimelyRateSearch) Create(record *TimelyRate) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *TimelyRateSearch) Delete() error { + var db = slf.build() + return db.Delete(&TimelyRate{}).Error +} + +func (slf *TimelyRateSearch) Update(record *TimelyRate) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *TimelyRateSearch) Find() (*TimelyRate, error) { + var db = slf.build() + var record = new(TimelyRate) + err := db.First(record).Error + return record, err +} + +func (slf *TimelyRateSearch) FindAll() ([]*TimelyRate, error) { + var db = slf.build() + var records = make([]*TimelyRate, 0) + err := db.Find(&records).Error + return records, err +} + +func (slf *TimelyRateSearch) SetId(id int) *TimelyRateSearch { + slf.Id = id + return slf +} + +func (slf *TimelyRateSearch) SetName(name string) *TimelyRateSearch { + slf.Name = name + return slf +} + +func (slf *TimelyRateSearch) Updates(data map[string]interface{}) error { + var db = slf.build() + return db.Updates(data).Error +} diff --git a/pkg/ecode/code.go b/pkg/ecode/code.go index 310ef8b..bab5c87 100644 --- a/pkg/ecode/code.go +++ b/pkg/ecode/code.go @@ -297,4 +297,11 @@ SatisfactionListErr = 4200003 // 鑾峰彇婊℃剰搴﹀垪琛ㄥけ璐� SatisfactionSetErr = 4200004 // 璁剧疆婊℃剰搴﹀け璐� SatisfactionUpdateErr = 4200005 // 鏇存柊婊℃剰搴﹀け璐� + + TimelyRateExist = 4300001 // 鍙婃椂鐜囧凡瀛樺湪 + TimelyRateNotExist = 4300002 // 鍙婃椂鐜囦笉瀛樺湪 + TimelyRateListErr = 4300003 // 鑾峰彇鍙婃椂鐜囧垪琛ㄥけ璐� + TimelyRateSetErr = 4300004 // 璁剧疆鍙婃椂鐜囧け璐� + TimelyRateUpdateErr = 4300005 // 鏇存柊鍙婃椂鐜囧け璐� + ) diff --git a/router/index.go b/router/index.go index 19ce012..cd7916b 100644 --- a/router/index.go +++ b/router/index.go @@ -55,6 +55,7 @@ DataRouter DepartmentRouter SatisfactionRouter + TimelyRateRouter } func InitRouter() *gin.Engine { @@ -129,6 +130,7 @@ routerGroup.InitDataRouter(PrivateGroup) // 娉ㄥ唽data璺敱 routerGroup.InitDepartmentRouter(PrivateGroup) // 娉ㄥ唽department璺敱 routerGroup.InitSatisfactionRouter(PrivateGroup) // 娉ㄥ唽satisfaction璺敱 + routerGroup.InitTimelyRateRouter(PrivateGroup) // 娉ㄥ唽timelyRate璺敱 } return Router } diff --git a/router/timelyRate.go b/router/timelyRate.go new file mode 100644 index 0000000..bc1c063 --- /dev/null +++ b/router/timelyRate.go @@ -0,0 +1,19 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +type TimelyRateRouter struct{} + +func (s *TimelyRateRouter) InitTimelyRateRouter(router *gin.RouterGroup) { + timelyRateRouter := router.Group("timelyRate") + timelyRateApi := v1.ApiGroup.TimelyRateApi + { + timelyRateRouter.POST("add", timelyRateApi.Add) // 娣诲姞閿�鍞樁娈� + timelyRateRouter.DELETE("delete/:id", timelyRateApi.Delete) // 鍒犻櫎閿�鍞樁娈� + timelyRateRouter.PUT("update", timelyRateApi.Update) // 鏇存柊閿�鍞樁娈� + timelyRateRouter.GET("list", timelyRateApi.List) // 鑾峰彇閿�鍞樁娈靛垪琛� + } +} diff --git a/service/dataServer.go b/service/dataServer.go index c29d5f8..15d2d04 100644 --- a/service/dataServer.go +++ b/service/dataServer.go @@ -80,6 +80,14 @@ departmentList, _ := ServiceGroup.GetDepartmentList() data.Department = departmentList + // get Satisfaction list + satisfactionList, _ := ServiceGroup.GetSatisfactionList() + data.Satisfaction = satisfactionList + + // get TimelyRate list + timelyRateList, _ := ServiceGroup.GetTimelyRateList() + data.TimelyRate = timelyRateList + errCode = ecode.OK return diff --git a/service/index.go b/service/index.go index ef84553..6655a5f 100644 --- a/service/index.go +++ b/service/index.go @@ -46,6 +46,7 @@ DepartmentService VettingService SatisfactionService + TimelyRateService } var ServiceGroup = new(Group) diff --git a/service/timelyRate.go b/service/timelyRate.go new file mode 100644 index 0000000..f22c918 --- /dev/null +++ b/service/timelyRate.go @@ -0,0 +1,69 @@ + +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type TimelyRateService struct{} + +func (TimelyRateService) AddTimelyRate(timelyRate *model.TimelyRate) int { + err := model.NewTimelyRateSearch().Create(timelyRate) + if err != nil { + return ecode.TimelyRateExist + } + + return ecode.OK +} + +func (TimelyRateService) DeleteTimelyRate(id int) int { + _, err := model.NewTimelyRateSearch().SetId(id).Find() + if err != nil { + return ecode.TimelyRateNotExist + } + + err = model.NewTimelyRateSearch().SetId(id).Delete() + if err != nil { + return ecode.TimelyRateNotExist + } + return ecode.OK +} + +func (TimelyRateService) GetTimelyRateList() ([]*model.TimelyRate, int) { + list, err := model.NewTimelyRateSearch().FindAll() + if err != nil { + return nil, ecode.TimelyRateListErr + } + + return list, ecode.OK +} + +func (TimelyRateService) UpdateTimelyRate(timelyRates []*request.UpdateTimelyRate) int { + for _, v := range timelyRates { + // check timelyRate exist + _, err := model.NewTimelyRateSearch().SetId(v.Id).Find() + if err != nil { + return ecode.TimelyRateNotExist + } + + err = model.NewTimelyRateSearch().SetId(v.Id).Updates(map[string]interface{}{ + "name": v.Name, + }) + if err != nil { + return ecode.TimelyRateSetErr + } + } + + return ecode.OK +} + +func (TimelyRateService) GetTimelyRateDetail(id int) (*model.TimelyRate, int) { + timelyRate, err := model.NewTimelyRateSearch().SetId(id).Find() + if err != nil { + return nil, ecode.TimelyRateNotExist + } + + return timelyRate, ecode.OK +} -- Gitblit v1.8.0