From c32c0fd9d07d669b0e03509b502fd5fda6adcca9 Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期三, 12 七月 2023 09:44:58 +0800 Subject: [PATCH] add --- api/v1/index.go | 2 service/salesDetails.go | 54 ++ api/v1/subOrder.go | 2 pkg/ecode/code.go | 7 router/salesDetails.go | 19 docs/swagger.yaml | 193 +++++++++ docs/docs.go | 306 +++++++++++++++ docs/swagger.json | 306 +++++++++++++++ model/response/response.go | 4 model/salesDetails.go | 85 ++++ service/index.go | 1 api/v1/salesDetails.go | 166 ++++++++ model/index.go | 1 router/index.go | 2 model/request/saleDetails.go | 32 + 15 files changed, 1,176 insertions(+), 4 deletions(-) diff --git a/api/v1/index.go b/api/v1/index.go index af7f83b..9c6b130 100644 --- a/api/v1/index.go +++ b/api/v1/index.go @@ -34,6 +34,7 @@ QuotationApi MasterOrderApi SubOrderApi + SalesDetailsApi } var ApiGroup = new(Group) @@ -67,4 +68,5 @@ quotationService = service.ServiceGroup.QuotationService masterOrderService = service.ServiceGroup.MasterOrderService subOrderService = service.ServiceGroup.SubOrderService + salesDetailsService = service.ServiceGroup.SalesDetailsService ) diff --git a/api/v1/salesDetails.go b/api/v1/salesDetails.go new file mode 100644 index 0000000..2f57c93 --- /dev/null +++ b/api/v1/salesDetails.go @@ -0,0 +1,166 @@ +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 SalesDetailsApi struct{} + +// Add +// +// @Tags SalesDetails +// @Summary 娣诲姞閿�鍞槑缁� +// @Produce application/json +// @Param object body request.AddSalesDetails true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/salesDetails/add [post] +func (s *SalesDetailsApi) Add(c *gin.Context) { + var params request.AddSalesDetails + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode, salesDetails := checkSalesDetailsParams(params.SalesDetails) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + errCode = salesDetailsService.AddSalesDetails(&salesDetails) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// +// @Tags SalesDetails +// @Summary 鍒犻櫎閿�鍞槑缁� +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/salesDetails/delete/{id} [delete] +func (s *SalesDetailsApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := salesDetailsService.DeleteSalesDetails(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// +// @Tags SalesDetails +// @Summary 鏇存柊閿�鍞槑缁� +// @Produce application/json +// @Param object body request.UpdateSalesDetails true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/salesDetails/update [put] +func (s *SalesDetailsApi) Update(c *gin.Context) { + var params request.UpdateSalesDetails + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode, salesDetails := checkSalesDetailsParams(params.SalesDetails) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + errCode = salesDetailsService.UpdateSalesDetails(&salesDetails) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// +// @Tags SalesDetails +// @Summary 鑾峰彇閿�鍞槑缁嗗垪琛� +// @Produce application/json +// @Success 200 {object} contextx.Response{data=response.SalesDetailsResponse} +// @Router /api/salesDetails/list [get] +func (s *SalesDetailsApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + list, errCode := salesDetailsService.GetSalesDetailsList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.SalesDetailsResponse{ + List: list, + }) +} + +func checkSalesDetailsParams(salesDetails request.SalesDetails) (errCode int, salesDetailsModel model.SalesDetails) { + if salesDetails.ClientId == 0 { + return ecode.InvalidParams, salesDetailsModel + } + + if salesDetails.Number == "" { + return ecode.InvalidParams, salesDetailsModel + } + + if salesDetails.MemberId == 0 { + return ecode.InvalidParams, salesDetailsModel + } + + if salesDetails.SignTime == "" { + return ecode.InvalidParams, salesDetailsModel + } + + t, err := checkTimeFormat(salesDetails.SignTime) + if err != nil { + return ecode.InvalidParams, salesDetailsModel + } + + t, err = checkTimeFormat(salesDetails.DeliveryDate) + if err != nil { + return ecode.InvalidParams, salesDetailsModel + } + + salesDetailsModel.ClientId = salesDetails.ClientId + salesDetailsModel.Number = salesDetails.Number + salesDetailsModel.SaleChanceId = salesDetails.SaleChanceId + salesDetailsModel.SaleType = salesDetails.SaleType + salesDetailsModel.SignTime = t + salesDetailsModel.MemberId = salesDetails.MemberId + salesDetailsModel.DeliveryDate = t + salesDetailsModel.WechatOrderStatus = salesDetails.WechatOrderStatus + salesDetailsModel.Address = salesDetails.Address + salesDetailsModel.Phone = salesDetails.Phone + salesDetailsModel.Remark = salesDetails.Remark + salesDetailsModel.Addressee = salesDetails.Addressee + salesDetailsModel.Conditions = salesDetails.Conditions + salesDetailsModel.Products = salesDetails.Products + + return ecode.OK, salesDetailsModel +} diff --git a/api/v1/subOrder.go b/api/v1/subOrder.go index 2ec0fd3..41e74cd 100644 --- a/api/v1/subOrder.go +++ b/api/v1/subOrder.go @@ -101,7 +101,7 @@ // @Tags SubOrder // @Summary 鑾峰彇瀛愯鍗曞垪琛� // @Produce application/json -// @Success 200 {object} contextx.Response{} +// @Success 200 {object} contextx.Response{data=response.SubOrderResponse} // @Router /api/subOrder/list [get] func (s *SubOrderApi) List(c *gin.Context) { ctx, ok := contextx.NewContext(c, nil) diff --git a/docs/docs.go b/docs/docs.go index 1ef0d67..849e893 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -2818,6 +2818,125 @@ } } }, + "/api/salesDetails/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "SalesDetails" + ], + "summary": "娣诲姞閿�鍞槑缁�", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddSalesDetails" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/salesDetails/delete/{id}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "SalesDetails" + ], + "summary": "鍒犻櫎閿�鍞槑缁�", + "parameters": [ + { + "type": "integer", + "description": "鏌ヨ鍙傛暟", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/salesDetails/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "SalesDetails" + ], + "summary": "鑾峰彇閿�鍞槑缁嗗垪琛�", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SalesDetailsResponse" + } + } + } + ] + } + } + } + } + }, + "/api/salesDetails/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "SalesDetails" + ], + "summary": "鏇存柊閿�鍞槑缁�", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateSalesDetails" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/salesLeads/add": { "post": { "produces": [ @@ -3234,7 +3353,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/contextx.Response" + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SubOrderResponse" + } + } + } + ] } } } @@ -4316,6 +4447,59 @@ } } }, + "model.SalesDetails": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "addressee": { + "type": "string" + }, + "clientId": { + "type": "integer" + }, + "conditions": { + "type": "string" + }, + "deliveryDate": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } + }, + "remark": { + "type": "string" + }, + "saleChanceId": { + "type": "integer" + }, + "saleType": { + "type": "integer" + }, + "signTime": { + "type": "string" + }, + "wechatOrderStatus": { + "type": "integer" + } + } + }, "model.SalesLeads": { "type": "object", "properties": { @@ -4389,6 +4573,32 @@ }, "name": { "type": "string" + } + } + }, + "model.SubOrder": { + "type": "object", + "properties": { + "clientId": { + "type": "integer" + }, + "id": { + "type": "integer" + }, + "masterOrderId": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } } } }, @@ -4943,6 +5153,14 @@ } } }, + "request.AddSalesDetails": { + "type": "object", + "properties": { + "salesDetails": { + "$ref": "#/definitions/request.SalesDetails" + } + } + }, "request.AddSalesLeads": { "type": "object", "properties": { @@ -5259,6 +5477,59 @@ "userName": { "type": "string", "example": "鐢ㄦ埛鍚�" + } + } + }, + "request.SalesDetails": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "addressee": { + "type": "string" + }, + "clientId": { + "type": "integer" + }, + "conditions": { + "type": "string" + }, + "deliveryDate": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } + }, + "remark": { + "type": "string" + }, + "saleChanceId": { + "type": "integer" + }, + "saleType": { + "type": "integer" + }, + "signTime": { + "type": "string" + }, + "wechatOrderStatus": { + "type": "integer" } } }, @@ -6104,6 +6375,17 @@ } } }, + "request.UpdateSalesDetails": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "salesDetails": { + "$ref": "#/definitions/request.SalesDetails" + } + } + }, "request.UpdateSalesLeads": { "type": "object", "properties": { @@ -6497,6 +6779,17 @@ } } }, + "response.SalesDetailsResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.SalesDetails" + } + } + } + }, "response.SalesLeadsResponse": { "type": "object", "properties": { @@ -6519,6 +6812,17 @@ } } }, + "response.SubOrderResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.SubOrder" + } + } + } + }, "response.UserResponse": { "type": "object", "properties": { diff --git a/docs/swagger.json b/docs/swagger.json index ab980ca..6434c7b 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -2806,6 +2806,125 @@ } } }, + "/api/salesDetails/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "SalesDetails" + ], + "summary": "娣诲姞閿�鍞槑缁�", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddSalesDetails" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/salesDetails/delete/{id}": { + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "SalesDetails" + ], + "summary": "鍒犻櫎閿�鍞槑缁�", + "parameters": [ + { + "type": "integer", + "description": "鏌ヨ鍙傛暟", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/salesDetails/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "SalesDetails" + ], + "summary": "鑾峰彇閿�鍞槑缁嗗垪琛�", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SalesDetailsResponse" + } + } + } + ] + } + } + } + } + }, + "/api/salesDetails/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "SalesDetails" + ], + "summary": "鏇存柊閿�鍞槑缁�", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateSalesDetails" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, "/api/salesLeads/add": { "post": { "produces": [ @@ -3222,7 +3341,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/contextx.Response" + "allOf": [ + { + "$ref": "#/definitions/contextx.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SubOrderResponse" + } + } + } + ] } } } @@ -4304,6 +4435,59 @@ } } }, + "model.SalesDetails": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "addressee": { + "type": "string" + }, + "clientId": { + "type": "integer" + }, + "conditions": { + "type": "string" + }, + "deliveryDate": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } + }, + "remark": { + "type": "string" + }, + "saleChanceId": { + "type": "integer" + }, + "saleType": { + "type": "integer" + }, + "signTime": { + "type": "string" + }, + "wechatOrderStatus": { + "type": "integer" + } + } + }, "model.SalesLeads": { "type": "object", "properties": { @@ -4377,6 +4561,32 @@ }, "name": { "type": "string" + } + } + }, + "model.SubOrder": { + "type": "object", + "properties": { + "clientId": { + "type": "integer" + }, + "id": { + "type": "integer" + }, + "masterOrderId": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } } } }, @@ -4931,6 +5141,14 @@ } } }, + "request.AddSalesDetails": { + "type": "object", + "properties": { + "salesDetails": { + "$ref": "#/definitions/request.SalesDetails" + } + } + }, "request.AddSalesLeads": { "type": "object", "properties": { @@ -5247,6 +5465,59 @@ "userName": { "type": "string", "example": "鐢ㄦ埛鍚�" + } + } + }, + "request.SalesDetails": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "addressee": { + "type": "string" + }, + "clientId": { + "type": "integer" + }, + "conditions": { + "type": "string" + }, + "deliveryDate": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "memberId": { + "type": "integer" + }, + "number": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } + }, + "remark": { + "type": "string" + }, + "saleChanceId": { + "type": "integer" + }, + "saleType": { + "type": "integer" + }, + "signTime": { + "type": "string" + }, + "wechatOrderStatus": { + "type": "integer" } } }, @@ -6092,6 +6363,17 @@ } } }, + "request.UpdateSalesDetails": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "salesDetails": { + "$ref": "#/definitions/request.SalesDetails" + } + } + }, "request.UpdateSalesLeads": { "type": "object", "properties": { @@ -6485,6 +6767,17 @@ } } }, + "response.SalesDetailsResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.SalesDetails" + } + } + } + }, "response.SalesLeadsResponse": { "type": "object", "properties": { @@ -6507,6 +6800,17 @@ } } }, + "response.SubOrderResponse": { + "type": "object", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/definitions/model.SubOrder" + } + } + } + }, "response.UserResponse": { "type": "object", "properties": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 3d30a6b..0b2fc53 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -528,6 +528,41 @@ name: type: string type: object + model.SalesDetails: + properties: + address: + type: string + addressee: + type: string + clientId: + type: integer + conditions: + type: string + deliveryDate: + type: string + id: + type: integer + memberId: + type: integer + number: + type: string + phone: + type: string + products: + items: + $ref: '#/definitions/model.Product' + type: array + remark: + type: string + saleChanceId: + type: integer + saleType: + type: integer + signTime: + type: string + wechatOrderStatus: + type: integer + type: object model.SalesLeads: properties: city: @@ -577,6 +612,23 @@ type: integer name: type: string + type: object + model.SubOrder: + properties: + clientId: + type: integer + id: + type: integer + masterOrderId: + type: integer + memberId: + type: integer + number: + type: string + products: + items: + $ref: '#/definitions/model.Product' + type: array type: object model.User: properties: @@ -952,6 +1004,11 @@ required: - name type: object + request.AddSalesDetails: + properties: + salesDetails: + $ref: '#/definitions/request.SalesDetails' + type: object request.AddSalesLeads: properties: city_id: @@ -1175,6 +1232,41 @@ userName: example: 鐢ㄦ埛鍚� type: string + type: object + request.SalesDetails: + properties: + address: + type: string + addressee: + type: string + clientId: + type: integer + conditions: + type: string + deliveryDate: + type: string + id: + type: integer + memberId: + type: integer + number: + type: string + phone: + type: string + products: + items: + $ref: '#/definitions/model.Product' + type: array + remark: + type: string + saleChanceId: + type: integer + saleType: + type: integer + signTime: + type: string + wechatOrderStatus: + type: integer type: object request.SetCity: properties: @@ -1745,6 +1837,13 @@ required: - sale_types type: object + request.UpdateSalesDetails: + properties: + id: + type: integer + salesDetails: + $ref: '#/definitions/request.SalesDetails' + type: object request.UpdateSalesLeads: properties: city_id: @@ -2001,6 +2100,13 @@ $ref: '#/definitions/model.SaleType' type: array type: object + response.SalesDetailsResponse: + properties: + list: + items: + $ref: '#/definitions/model.SalesDetails' + type: array + type: object response.SalesLeadsResponse: properties: list: @@ -2013,6 +2119,13 @@ list: items: $ref: '#/definitions/model.SalesSources' + type: array + type: object + response.SubOrderResponse: + properties: + list: + items: + $ref: '#/definitions/model.SubOrder' type: array type: object response.UserResponse: @@ -3740,6 +3853,79 @@ summary: 鏇存柊閿�鍞被鍨� tags: - SaleType + /api/salesDetails/add: + post: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.AddSalesDetails' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 娣诲姞閿�鍞槑缁� + tags: + - SalesDetails + /api/salesDetails/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: + - SalesDetails + /api/salesDetails/list: + get: + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/contextx.Response' + - properties: + data: + $ref: '#/definitions/response.SalesDetailsResponse' + type: object + summary: 鑾峰彇閿�鍞槑缁嗗垪琛� + tags: + - SalesDetails + /api/salesDetails/update: + put: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.UpdateSalesDetails' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 鏇存柊閿�鍞槑缁� + tags: + - SalesDetails /api/salesLeads/add: post: parameters: @@ -3999,7 +4185,12 @@ "200": description: OK schema: - $ref: '#/definitions/contextx.Response' + allOf: + - $ref: '#/definitions/contextx.Response' + - properties: + data: + $ref: '#/definitions/response.SubOrderResponse' + type: object summary: 鑾峰彇瀛愯鍗曞垪琛� tags: - SubOrder diff --git a/model/index.go b/model/index.go index 91a30b1..2d29e86 100644 --- a/model/index.go +++ b/model/index.go @@ -50,6 +50,7 @@ MasterOrder{}, SubOrder{}, Product{}, + SalesDetails{}, ) return err } diff --git a/model/request/saleDetails.go b/model/request/saleDetails.go new file mode 100644 index 0000000..c8966aa --- /dev/null +++ b/model/request/saleDetails.go @@ -0,0 +1,32 @@ +package request + +import ( + "aps_crm/model" +) + +type AddSalesDetails struct { + SalesDetails SalesDetails `json:"salesDetails"` +} + +type SalesDetails 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:閿�鍞瓙鍗曞彿"` + SaleChanceId int `json:"saleChanceId" gorm:"column:sale_chance_id;type:int;comment:閿�鍞満浼歩d"` + SaleType int `json:"saleType" gorm:"column:sale_type;type:int;comment:閿�鍞被鍨�"` + SignTime string `json:"signTime" gorm:"column:sign_time;type:datetime;comment:绛惧崟鏃堕棿"` + MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:璐熻矗浜篿d"` + DeliveryDate string `json:"deliveryDate" gorm:"column:delivery_date;type:datetime;comment:浜よ揣鏃ユ湡"` + WechatOrderStatus int `json:"wechatOrderStatus" gorm:"column:wechat_order_status;type:int;comment:寰俊璁㈠崟鐘舵��"` + Address string `json:"address" gorm:"column:address;type:varchar(255);comment:鍦板潃"` + Phone string `json:"phone" gorm:"column:phone;type:varchar(255);comment:鐢佃瘽"` + Addressee string `json:"addressee" gorm:"column:addressee;type:varchar(255);comment:鏀朵欢浜�"` + Conditions string `json:"conditions" gorm:"column:conditions;type:text;comment:鏉′欢"` + Remark string `json:"remark" gorm:"column:remark;type:text;comment:澶囨敞"` + Products []model.Product `json:"products" gorm:"many2many:salesDetails_product;"` +} + +type UpdateSalesDetails struct { + Id int `json:"id"` + SalesDetails SalesDetails `json:"salesDetails"` +} diff --git a/model/response/response.go b/model/response/response.go index 842c0f3..ef188e4 100644 --- a/model/response/response.go +++ b/model/response/response.go @@ -133,4 +133,8 @@ SubOrderResponse struct { List []*model.SubOrder `json:"list"` } + + SalesDetailsResponse struct { + List []*model.SalesDetails `json:"list"` + } ) diff --git a/model/salesDetails.go b/model/salesDetails.go new file mode 100644 index 0000000..bcc0528 --- /dev/null +++ b/model/salesDetails.go @@ -0,0 +1,85 @@ +package model + +import ( + "aps_crm/pkg/mysqlx" + "gorm.io/gorm" + "time" +) + +type ( + SalesDetails 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:閿�鍞瓙鍗曞彿"` + SaleChanceId int `json:"saleChanceId" gorm:"column:sale_chance_id;type:int;comment:閿�鍞満浼歩d"` + SaleType int `json:"saleType" gorm:"column:sale_type;type:int;comment:閿�鍞被鍨�"` + SignTime time.Time `json:"signTime" gorm:"column:sign_time;type:datetime;comment:绛惧崟鏃堕棿"` + MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:璐熻矗浜篿d"` + DeliveryDate time.Time `json:"deliveryDate" gorm:"column:delivery_date;type:datetime;comment:浜よ揣鏃ユ湡"` + WechatOrderStatus int `json:"wechatOrderStatus" gorm:"column:wechat_order_status;type:int;comment:寰俊璁㈠崟鐘舵��"` + Address string `json:"address" gorm:"column:address;type:varchar(255);comment:鍦板潃"` + Phone string `json:"phone" gorm:"column:phone;type:varchar(255);comment:鐢佃瘽"` + Addressee string `json:"addressee" gorm:"column:addressee;type:varchar(255);comment:鏀朵欢浜�"` + Conditions string `json:"conditions" gorm:"column:conditions;type:text;comment:鏉′欢"` + Remark string `json:"remark" gorm:"column:remark;type:text;comment:澶囨敞"` + Products []Product `json:"products" gorm:"many2many:salesDetails_product;"` + } + + SalesDetailsSearch struct { + SalesDetails + Orm *gorm.DB + } +) + +func (SalesDetails) TableName() string { + return "sales_details" +} + +func NewSalesDetailsSearch() *SalesDetailsSearch { + return &SalesDetailsSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *SalesDetailsSearch) build() *gorm.DB { + var db = slf.Orm.Model(&SalesDetails{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *SalesDetailsSearch) Create(record *SalesDetails) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *SalesDetailsSearch) Delete() error { + var db = slf.build() + return db.Delete(&SalesDetails{}).Error +} + +func (slf *SalesDetailsSearch) Update(record *SalesDetails) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *SalesDetailsSearch) SetId(id int) *SalesDetailsSearch { + slf.Id = id + return slf +} + +func (slf *SalesDetailsSearch) Find() (*SalesDetails, error) { + var db = slf.build() + var record = new(SalesDetails) + err := db.First(record).Error + return record, err +} + +func (slf *SalesDetailsSearch) FindAll() ([]*SalesDetails, error) { + var db = slf.build() + var records = make([]*SalesDetails, 0) + err := db.Find(&records).Error + return records, err +} diff --git a/pkg/ecode/code.go b/pkg/ecode/code.go index 867c208..b4008d2 100644 --- a/pkg/ecode/code.go +++ b/pkg/ecode/code.go @@ -198,4 +198,11 @@ SubOrderUpdateErr = 2700005 // 鏇存柊瀛愯鍗曞け璐� SubOrderDeleteErr = 2700006 // 鍒犻櫎瀛愯鍗曞け璐� + SalesDetailsExist = 2800001 // 閿�鍞槑缁嗗凡瀛樺湪 + SalesDetailsNotExist = 2800002 // 閿�鍞槑缁嗕笉瀛樺湪 + SalesDetailsListErr = 2800003 // 鑾峰彇閿�鍞槑缁嗗垪琛ㄥけ璐� + SalesDetailsSetErr = 2800004 // 璁剧疆閿�鍞槑缁嗗け璐� + SalesDetailsUpdateErr = 2800005 // 鏇存柊閿�鍞槑缁嗗け璐� + SalesDetailsDeleteErr = 2800006 // 鍒犻櫎閿�鍞槑缁嗗け璐� + ) diff --git a/router/index.go b/router/index.go index 2cf4c1b..6b96a23 100644 --- a/router/index.go +++ b/router/index.go @@ -40,6 +40,7 @@ QuotationRouter MasterOrderRouter SubOrderRouter + SalesDetailsRouter } func InitRouter() *gin.Engine { @@ -97,6 +98,7 @@ routerGroup.InitQuotationRouter(PrivateGroup) // 娉ㄥ唽quotation璺敱 routerGroup.InitMasterOrderRouter(PrivateGroup) // 娉ㄥ唽masterOrder璺敱 routerGroup.InitSubOrderRouter(PrivateGroup) // 娉ㄥ唽subOrder璺敱 + routerGroup.InitSalesDetailsRouter(PrivateGroup) // 娉ㄥ唽salesDetails璺敱 } return Router } diff --git a/router/salesDetails.go b/router/salesDetails.go new file mode 100644 index 0000000..e892a26 --- /dev/null +++ b/router/salesDetails.go @@ -0,0 +1,19 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +type SalesDetailsRouter struct{} + +func (s *SalesDetailsRouter) InitSalesDetailsRouter(router *gin.RouterGroup) { + salesDetailsRouter := router.Group("salesDetails") + salesDetailsApi := v1.ApiGroup.SalesDetailsApi + { + salesDetailsRouter.POST("add", salesDetailsApi.Add) // 娣诲姞閿�鍞槑缁� + salesDetailsRouter.DELETE("delete/:id", salesDetailsApi.Delete) // 鍒犻櫎閿�鍞槑缁� + salesDetailsRouter.PUT("update", salesDetailsApi.Update) // 鏇存柊閿�鍞槑缁� + salesDetailsRouter.GET("list", salesDetailsApi.List) // 鑾峰彇閿�鍞槑缁嗗垪琛� + } +} diff --git a/service/index.go b/service/index.go index d8ab5e1..fd6af9f 100644 --- a/service/index.go +++ b/service/index.go @@ -29,6 +29,7 @@ QuotationService MasterOrderService SubOrderService + SalesDetailsService } var ServiceGroup = new(Group) diff --git a/service/salesDetails.go b/service/salesDetails.go new file mode 100644 index 0000000..cde3653 --- /dev/null +++ b/service/salesDetails.go @@ -0,0 +1,54 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/pkg/ecode" +) + +type SalesDetailsService struct{} + +func (SalesDetailsService) AddSalesDetails(salesDetails *model.SalesDetails) int { + err := model.NewSalesDetailsSearch().Create(salesDetails) + if err != nil { + return ecode.SalesDetailsExist + } + + return ecode.OK +} + +func (SalesDetailsService) DeleteSalesDetails(id int) int { + _, err := model.NewSalesDetailsSearch().SetId(id).Find() + if err != nil { + return ecode.SalesDetailsNotExist + } + + err = model.NewSalesDetailsSearch().SetId(id).Delete() + if err != nil { + return ecode.SalesDetailsNotExist + } + return ecode.OK +} + +func (SalesDetailsService) GetSalesDetailsList() ([]*model.SalesDetails, int) { + list, err := model.NewSalesDetailsSearch().FindAll() + if err != nil { + return nil, ecode.SalesDetailsListErr + } + + return list, ecode.OK +} + +func (SalesDetailsService) UpdateSalesDetails(salesDetails *model.SalesDetails) int { + // check salesDetails exist + _, err := model.NewSalesDetailsSearch().SetId(salesDetails.Id).Find() + if err != nil { + return ecode.SalesDetailsNotExist + } + + err = model.NewSalesDetailsSearch().SetId(salesDetails.Id).Update(salesDetails) + if err != nil { + return ecode.SalesDetailsSetErr + } + + return ecode.OK +} -- Gitblit v1.8.0