From 9cd9b44d7727437add866faf74ed7785ecb1d6e8 Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期五, 07 七月 2023 15:24:45 +0800 Subject: [PATCH] add --- api/v1/index.go | 2 service/regularCustomers.go | 59 ++++ pkg/ecode/code.go | 7 docs/swagger.yaml | 113 ++++++++ docs/docs.go | 181 ++++++++++++ docs/swagger.json | 181 ++++++++++++ model/response/response.go | 4 model/request/regularCustomers.go | 14 + model/RegularCustomers.go | 86 ++++++ service/index.go | 1 router/regularCustomers.go | 19 + model/index.go | 1 router/index.go | 2 api/v1/regularCustomers.go | 112 ++++++++ 14 files changed, 782 insertions(+), 0 deletions(-) diff --git a/api/v1/index.go b/api/v1/index.go index d14c159..febef50 100644 --- a/api/v1/index.go +++ b/api/v1/index.go @@ -28,6 +28,7 @@ SaleChanceApi SaleStageApi SaleTypeApi + RegularCustomersApi } var ApiGroup = new(Group) @@ -55,4 +56,5 @@ saleChanceService = service.ServiceGroup.SaleChanceService saleStageService = service.ServiceGroup.SaleStageService saleTypeService = service.ServiceGroup.SaleTypeService + regularCustomersService = service.ServiceGroup.RegularCustomersService ) diff --git a/api/v1/regularCustomers.go b/api/v1/regularCustomers.go new file mode 100644 index 0000000..b2fa48d --- /dev/null +++ b/api/v1/regularCustomers.go @@ -0,0 +1,112 @@ +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 RegularCustomersApi struct{} + +// Add +// +// @Tags RegularCustomers +// @Summary 娣诲姞甯稿 +// @Produce application/json +// @Param object body request.AddRegularCustomers true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/regularCustomers/add [post] +func (s *RegularCustomersApi) Add(c *gin.Context) { + var params request.AddRegularCustomers + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + regularCustomers := new(model.RegularCustomers) + regularCustomers.Name = params.Name + + errCode := regularCustomersService.AddRegularCustomers(regularCustomers) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// +// @Tags RegularCustomers +// @Summary 鍒犻櫎甯稿 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/regularCustomers/delete/{id} [delete] +func (s *RegularCustomersApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := regularCustomersService.DeleteRegularCustomers(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// +// @Tags RegularCustomers +// @Summary 鏇存柊甯稿 +// @Produce application/json +// @Param object body request.UpdateRegularCustomersList true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/regularCustomers/update [put] +func (s *RegularCustomersApi) Update(c *gin.Context) { + var params request.UpdateRegularCustomersList + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := regularCustomersService.UpdateRegularCustomers(params.RegularCustomers) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// +// @Tags RegularCustomers +// @Summary 甯稿鍒楄〃 +// @Produce application/json +// @Success 200 {object} contextx.Response{data=response.RegularCustomersResponse} +// @Router /api/regularCustomers/list [get] +func (s *RegularCustomersApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + regularCustomers, errCode := regularCustomersService.GetRegularCustomersList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.RegularCustomersResponse{ + List: regularCustomers, + }) +} diff --git a/docs/docs.go b/docs/docs.go index f8d51cf..4200359 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1985,6 +1985,125 @@ } } }, + "/api/regularCustomers/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "RegularCustomers" + ], + "summary": "娣诲姞甯稿", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddRegularCustomers" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/regularCustomers/delete/{id}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "RegularCustomers" + ], + "summary": "鍒犻櫎甯稿", + "parameters": [ + { + "type": "integer", + "description": "鏌ヨ鍙傛暟", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/regularCustomers/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "RegularCustomers" + ], + "summary": "甯稿鍒楄〃", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.RegularCustomersResponse" + } + } + } + ] + } + } + } + } + }, + "/api/regularCustomers/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "RegularCustomers" + ], + "summary": "鏇存柊甯稿", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateRegularCustomersList" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/saleChance/add": { "post": { "produces": [ @@ -3364,6 +3483,17 @@ } } }, + "model.RegularCustomers": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, "model.SaleChance": { "type": "object", "properties": { @@ -3928,6 +4058,17 @@ } }, "request.AddRegisteredCapital": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + } + } + }, + "request.AddRegularCustomers": { "type": "object", "required": [ "name" @@ -4896,6 +5037,35 @@ } } }, + "request.UpdateRegularCustomers": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, + "request.UpdateRegularCustomersList": { + "type": "object", + "required": [ + "regularCustomers" + ], + "properties": { + "regularCustomers": { + "type": "array", + "items": { + "$ref": "#/definitions/request.UpdateRegularCustomers" + } + } + } + }, "request.UpdateSaleChance": { "type": "object", "required": [ @@ -5319,6 +5489,17 @@ } } }, + "response.RegularCustomersResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.RegularCustomers" + } + } + } + }, "response.SaleChanceResponse": { "type": "object", "properties": { diff --git a/docs/swagger.json b/docs/swagger.json index 6e7d691..16de0c0 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1973,6 +1973,125 @@ } } }, + "/api/regularCustomers/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "RegularCustomers" + ], + "summary": "娣诲姞甯稿", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddRegularCustomers" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/regularCustomers/delete/{id}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "RegularCustomers" + ], + "summary": "鍒犻櫎甯稿", + "parameters": [ + { + "type": "integer", + "description": "鏌ヨ鍙傛暟", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/regularCustomers/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "RegularCustomers" + ], + "summary": "甯稿鍒楄〃", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.RegularCustomersResponse" + } + } + } + ] + } + } + } + } + }, + "/api/regularCustomers/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "RegularCustomers" + ], + "summary": "鏇存柊甯稿", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateRegularCustomersList" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/saleChance/add": { "post": { "produces": [ @@ -3352,6 +3471,17 @@ } } }, + "model.RegularCustomers": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, "model.SaleChance": { "type": "object", "properties": { @@ -3916,6 +4046,17 @@ } }, "request.AddRegisteredCapital": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + } + } + }, + "request.AddRegularCustomers": { "type": "object", "required": [ "name" @@ -4884,6 +5025,35 @@ } } }, + "request.UpdateRegularCustomers": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, + "request.UpdateRegularCustomersList": { + "type": "object", + "required": [ + "regularCustomers" + ], + "properties": { + "regularCustomers": { + "type": "array", + "items": { + "$ref": "#/definitions/request.UpdateRegularCustomers" + } + } + } + }, "request.UpdateSaleChance": { "type": "object", "required": [ @@ -5307,6 +5477,17 @@ } } }, + "response.RegularCustomersResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.RegularCustomers" + } + } + } + }, "response.SaleChanceResponse": { "type": "object", "properties": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 030a27f..55dbd57 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -356,6 +356,13 @@ name: type: string type: object + model.RegularCustomers: + properties: + id: + type: integer + name: + type: string + type: object model.SaleChance: properties: advantages: @@ -740,6 +747,13 @@ type: string type: object request.AddRegisteredCapital: + properties: + name: + type: string + required: + - name + type: object + request.AddRegularCustomers: properties: name: type: string @@ -1406,6 +1420,25 @@ $ref: '#/definitions/request.UpdateRegisteredCapital' type: array type: object + request.UpdateRegularCustomers: + properties: + id: + type: integer + name: + type: string + required: + - id + - name + type: object + request.UpdateRegularCustomersList: + properties: + regularCustomers: + items: + $ref: '#/definitions/request.UpdateRegularCustomers' + type: array + required: + - regularCustomers + type: object request.UpdateSaleChance: properties: advantages: @@ -1682,6 +1715,13 @@ list: items: $ref: '#/definitions/model.RegisteredCapital' + type: array + type: object + response.RegularCustomersResponse: + properties: + list: + items: + $ref: '#/definitions/model.RegularCustomers' type: array type: object response.SaleChanceResponse: @@ -2933,6 +2973,79 @@ summary: 鏇存柊娉ㄥ唽璧勬湰 tags: - RegisteredCapital + /api/regularCustomers/add: + post: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.AddRegularCustomers' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 娣诲姞甯稿 + tags: + - RegularCustomers + /api/regularCustomers/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: + - RegularCustomers + /api/regularCustomers/list: + get: + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/contextx.Response' + - properties: + data: + $ref: '#/definitions/response.RegularCustomersResponse' + type: object + summary: 甯稿鍒楄〃 + tags: + - RegularCustomers + /api/regularCustomers/update: + put: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.UpdateRegularCustomersList' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 鏇存柊甯稿 + tags: + - RegularCustomers /api/saleChance/add: post: parameters: diff --git a/model/RegularCustomers.go b/model/RegularCustomers.go new file mode 100644 index 0000000..32b427a --- /dev/null +++ b/model/RegularCustomers.go @@ -0,0 +1,86 @@ +package model + +import ( + "aps_crm/pkg/mysqlx" + "gorm.io/gorm" +) + +type ( + // RegularCustomers 鑰佸鎴� + RegularCustomers struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name;type:varchar(255);comment:瀹㈡埛鍚嶇О"` + } + + // RegularCustomersSearch 鑰佸鎴锋悳绱㈡潯浠� + RegularCustomersSearch struct { + RegularCustomers + Orm *gorm.DB + } +) + +func (RegularCustomers) TableName() string { + return "regular_customers" +} + +func NewRegularCustomersSearch() *RegularCustomersSearch { + return &RegularCustomersSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *RegularCustomersSearch) build() *gorm.DB { + var db = slf.Orm.Model(&RegularCustomers{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + if slf.Name != "" { + db = db.Where("name = ?", slf.Name) + } + + return db +} + +func (slf *RegularCustomersSearch) Create(record *RegularCustomers) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *RegularCustomersSearch) Delete() error { + var db = slf.build() + return db.Delete(&RegularCustomers{}).Error +} + +func (slf *RegularCustomersSearch) Update(record *RegularCustomers) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *RegularCustomersSearch) Find() (*RegularCustomers, error) { + var db = slf.build() + var record = &RegularCustomers{} + err := db.First(record).Error + return record, err +} + +func (slf *RegularCustomersSearch) FindAll() ([]*RegularCustomers, error) { + var db = slf.build() + var records = make([]*RegularCustomers, 0) + err := db.Find(&records).Error + return records, err +} + +func (slf *RegularCustomersSearch) SetId(id int) *RegularCustomersSearch { + slf.Id = id + return slf +} + +func (slf *RegularCustomersSearch) SetName(name string) *RegularCustomersSearch { + slf.Name = name + return slf +} + +func (slf *RegularCustomersSearch) Updates(data map[string]interface{}) error { + var db = slf.build() + return db.Updates(data).Error +} diff --git a/model/index.go b/model/index.go index b94d2bf..7f7b1bc 100644 --- a/model/index.go +++ b/model/index.go @@ -43,6 +43,7 @@ SalesSources{}, SaleStage{}, SaleType{}, + RegularCustomers{}, ) return err } diff --git a/model/request/regularCustomers.go b/model/request/regularCustomers.go new file mode 100644 index 0000000..db6ed8c --- /dev/null +++ b/model/request/regularCustomers.go @@ -0,0 +1,14 @@ +package request + +type AddRegularCustomers struct { + Name string `json:"name" binding:"required"` +} + +type UpdateRegularCustomers struct { + Id int `json:"id" binding:"required"` + Name string `json:"name" binding:"required"` +} + +type UpdateRegularCustomersList struct { + RegularCustomers []*UpdateRegularCustomers `json:"regularCustomers" binding:"required"` +} diff --git a/model/response/response.go b/model/response/response.go index f1ee34f..d298bb2 100644 --- a/model/response/response.go +++ b/model/response/response.go @@ -109,4 +109,8 @@ SaleTypeResponse struct { List []*model.SaleType `json:"list"` } + + RegularCustomersResponse struct { + List []*model.RegularCustomers `json:"list"` + } ) diff --git a/pkg/ecode/code.go b/pkg/ecode/code.go index 519dbc2..4fefc1f 100644 --- a/pkg/ecode/code.go +++ b/pkg/ecode/code.go @@ -156,4 +156,11 @@ SaleTypeUpdateErr = 2100005 // 鏇存柊閿�鍞被鍨嬪け璐� SaleTypeDeleteErr = 2100006 // 鍒犻櫎閿�鍞被鍨嬪け璐� + RegularCustomersExist = 2200001 // 鍥哄畾瀹㈡埛宸插瓨鍦� + RegularCustomersNotExist = 2200002 // 鍥哄畾瀹㈡埛涓嶅瓨鍦� + RegularCustomersListErr = 2200003 // 鑾峰彇鍥哄畾瀹㈡埛鍒楄〃澶辫触 + RegularCustomersSetErr = 2200004 // 璁剧疆鍥哄畾瀹㈡埛澶辫触 + RegularCustomersUpdateErr = 2200005 // 鏇存柊鍥哄畾瀹㈡埛澶辫触 + RegularCustomersDeleteErr = 2200006 // 鍒犻櫎鍥哄畾瀹㈡埛澶辫触 + ) diff --git a/router/index.go b/router/index.go index 71d997c..8787204 100644 --- a/router/index.go +++ b/router/index.go @@ -34,6 +34,7 @@ SaleChanceRouter SaleStageRouter SaleTypeRouter + RegularCustomersRouter } func InitRouter() *gin.Engine { @@ -85,6 +86,7 @@ routerGroup.InitSaleChanceRouter(PrivateGroup) // 娉ㄥ唽saleChance璺敱 routerGroup.InitSaleStageRouter(PrivateGroup) // 娉ㄥ唽saleStage璺敱 routerGroup.InitSaleTypeRouter(PrivateGroup) // 娉ㄥ唽saleType璺敱 + routerGroup.InitRegularCustomersRouter(PrivateGroup) // 娉ㄥ唽regularCustomers璺敱 } return Router } diff --git a/router/regularCustomers.go b/router/regularCustomers.go new file mode 100644 index 0000000..3fc31a0 --- /dev/null +++ b/router/regularCustomers.go @@ -0,0 +1,19 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +type RegularCustomersRouter struct{} + +func (r *RegularCustomersRouter) InitRegularCustomersRouter(router *gin.RouterGroup) { + regularCustomersRouter := router.Group("regularCustomers") + regularCustomersApi := v1.ApiGroup.RegularCustomersApi + { + regularCustomersRouter.POST("add", regularCustomersApi.Add) // 娣诲姞甯稿 + regularCustomersRouter.DELETE("delete/:id", regularCustomersApi.Delete) // 鍒犻櫎甯稿 + regularCustomersRouter.PUT("update", regularCustomersApi.Update) // 鏇存柊甯稿 + regularCustomersRouter.GET("list", regularCustomersApi.List) // 鑾峰彇甯稿鍒楄〃 + } +} diff --git a/service/index.go b/service/index.go index 4e61453..c5091d2 100644 --- a/service/index.go +++ b/service/index.go @@ -23,6 +23,7 @@ SaleChanceService SaleStageService SaleTypeService + RegularCustomersService } var ServiceGroup = new(Group) diff --git a/service/regularCustomers.go b/service/regularCustomers.go new file mode 100644 index 0000000..527e80c --- /dev/null +++ b/service/regularCustomers.go @@ -0,0 +1,59 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type RegularCustomersService struct{} + +func (RegularCustomersService) AddRegularCustomers(regularCustomers *model.RegularCustomers) int { + err := model.NewRegularCustomersSearch().Create(regularCustomers) + if err != nil { + return ecode.RegularCustomersExist + } + + return ecode.OK +} + +func (RegularCustomersService) DeleteRegularCustomers(id int) int { + _, err := model.NewRegularCustomersSearch().SetId(id).Find() + if err != nil { + return ecode.RegularCustomersNotExist + } + + err = model.NewRegularCustomersSearch().SetId(id).Delete() + if err != nil { + return ecode.RegularCustomersNotExist + } + return ecode.OK +} + +func (RegularCustomersService) GetRegularCustomersList() ([]*model.RegularCustomers, int) { + list, err := model.NewRegularCustomersSearch().FindAll() + if err != nil { + return nil, ecode.RegularCustomersListErr + } + + return list, ecode.OK +} + +func (RegularCustomersService) UpdateRegularCustomers(regularCustomers []*request.UpdateRegularCustomers) int { + for _, v := range regularCustomers { + // check regularCustomers exist + _, err := model.NewRegularCustomersSearch().SetId(v.Id).Find() + if err != nil { + return ecode.RegularCustomersNotExist + } + + err = model.NewRegularCustomersSearch().SetId(v.Id).Updates(map[string]interface{}{ + "name": v.Name, + }) + if err != nil { + return ecode.RegularCustomersSetErr + } + } + + return ecode.OK +} -- Gitblit v1.8.0