From 03b791e466c5db94b196c465fc2e5ac91a2d9890 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 10 八月 2023 16:38:07 +0800 Subject: [PATCH] 销售明细增删改查完善 --- model/wechatOrderStatus.go | 140 +++++ service/salesDetails.go | 8 model/request/salesDetails.go | 40 model/request/wechatOrderStatus.go | 22 constvar/wechatOrderStatus.go | 12 service/wechatOrderStatus.go | 55 ++ router/wechatOrderStatus.go | 17 docs/swagger.yaml | 233 ++++++++ docs/docs.go | 351 +++++++++++++ pkg/contextx/contextx.go | 2 docs/swagger.json | 351 +++++++++++++ model/serviceContract.go | 6 api/v1/wechatOrderStatus.go | 112 ++++ constvar/salesDetails.go | 11 model/salesDetails.go | 103 ++- model/request/serviceContract.go | 6 api/v1/salesDetails.go | 39 - 17 files changed, 1,401 insertions(+), 107 deletions(-) diff --git a/api/v1/salesDetails.go b/api/v1/salesDetails.go index 113673f..7a7ab52 100644 --- a/api/v1/salesDetails.go +++ b/api/v1/salesDetails.go @@ -97,42 +97,15 @@ ctx.Ok() } - 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.SignTime = salesDetails.SignTime salesDetailsModel.MemberId = salesDetails.MemberId - salesDetailsModel.DeliveryDate = t - salesDetailsModel.WechatOrderStatus = salesDetails.WechatOrderStatus + salesDetailsModel.DeliveryDate = salesDetails.DeliveryDate + salesDetailsModel.WechatOrderStatusId = salesDetails.WechatOrderStatusId salesDetailsModel.Address = salesDetails.Address salesDetailsModel.Phone = salesDetails.Phone salesDetailsModel.Remark = salesDetails.Remark @@ -161,14 +134,14 @@ return } - salesDetailss, total, errCode := salesDetailsService.GetSalesDetailsList(params.Page, params.PageSize, params.Keyword) + salesDetailss, total, errCode := salesDetailsService.GetSalesDetailsList(params.Page, params.PageSize, params.KeywordType, params.Keyword) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.OkWithDetailed(response.SalesDetailsResponse{ - List: salesDetailss, + List: salesDetailss, Count: int(total), }) -} \ No newline at end of file +} diff --git a/api/v1/wechatOrderStatus.go b/api/v1/wechatOrderStatus.go new file mode 100644 index 0000000..151e662 --- /dev/null +++ b/api/v1/wechatOrderStatus.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 WechatOrderStatusApi struct{} + +// Add +// @Tags 寰俊璁㈠崟鐘舵�� +// @Summary 娣诲姞寰俊璁㈠崟鐘舵�� +// @Produce application/json +// @Param object body request.AddWechatOrderStatus true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/wechatOrderStatus/add [post] +func (s *WechatOrderStatusApi) Add(c *gin.Context) { + var params request.AddWechatOrderStatus + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewWechatOrderStatusService().AddWechatOrderStatus(¶ms.WechatOrderStatus) + 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/wechatOrderStatus/delete/{id} [delete] +func (s *WechatOrderStatusApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewWechatOrderStatusService().DeleteWechatOrderStatus(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 寰俊璁㈠崟鐘舵�� +// @Summary 鏇存柊寰俊璁㈠崟鐘舵�� +// @Produce application/json +// @Param object body request.UpdateWechatOrderStatus true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/wechatOrderStatus/update [put] +func (s *WechatOrderStatusApi) Update(c *gin.Context) { + var params request.UpdateWechatOrderStatus + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.WechatOrderStatus.Id = params.Id + + errCode := service.NewWechatOrderStatusService().UpdateWechatOrderStatus(¶ms.WechatOrderStatus) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 寰俊璁㈠崟鐘舵�� +// @Summary 鑾峰彇寰俊璁㈠崟鐘舵�佸垪琛� +// @Produce application/json +// @Param object query request.GetWechatOrderStatusList true "鍙傛暟" +// @Success 200 {object} response.ListResponse{data=[]model.WechatOrderStatus} +// @Router /api/wechatOrderStatus/list [get] +func (s *WechatOrderStatusApi) List(c *gin.Context) { + var params request.GetWechatOrderStatusList + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + wechatOrderStatus, total, errCode := service.NewWechatOrderStatusService().GetWechatOrderStatusList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: wechatOrderStatus, + Count: total, + }) +} diff --git a/constvar/salesDetails.go b/constvar/salesDetails.go new file mode 100644 index 0000000..cd3321a --- /dev/null +++ b/constvar/salesDetails.go @@ -0,0 +1,11 @@ +package constvar + +type SalesDetailsKeywordType string + +const ( + SalesDetailsKeywordTypeCustomerName SalesDetailsKeywordType = "瀹㈡埛鍚嶇О" + SalesDetailsKeywordTypeOrderNumber SalesDetailsKeywordType = "璁㈠崟缂栧彿" + SalesDetailsKeywordTypeSignTime SalesDetailsKeywordType = "绛剧害鏃ユ湡" + SalesDetailsKeywordTypePrincipal SalesDetailsKeywordType = "閿�鍞礋璐d汉" + SalesDetailsKeywordTypeProductName SalesDetailsKeywordType = "浜у搧鍚嶇О" +) diff --git a/constvar/wechatOrderStatus.go b/constvar/wechatOrderStatus.go new file mode 100644 index 0000000..dc15cab --- /dev/null +++ b/constvar/wechatOrderStatus.go @@ -0,0 +1,12 @@ +package constvar +type WechatOrderStatusQueryClass string + +const ( + WechatOrderStatusQueryClassExpireLessThen60Days WechatOrderStatusQueryClass = "" +) + +type WechatOrderStatusKeywordType string + +const ( + WechatOrderStatusKeywordCustomerName WechatOrderStatusKeywordType = "" +) diff --git a/docs/docs.go b/docs/docs.go index e39c3f4..aa11e95 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -9483,6 +9483,169 @@ } } } + }, + "/api/wechatOrderStatus/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "寰俊璁㈠崟鐘舵��" + ], + "summary": "娣诲姞寰俊璁㈠崟鐘舵��", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddWechatOrderStatus" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/wechatOrderStatus/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/wechatOrderStatus/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "寰俊璁㈠崟鐘舵��" + ], + "summary": "鑾峰彇寰俊璁㈠崟鐘舵�佸垪琛�", + "parameters": [ + { + "type": "string", + "name": "keyword", + "in": "query" + }, + { + "enum": [ + "" + ], + "type": "string", + "x-enum-varnames": [ + "WechatOrderStatusKeywordCustomerName" + ], + "name": "keywordType", + "in": "query" + }, + { + "type": "integer", + "description": "椤电爜", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "姣忛〉澶у皬", + "name": "pageSize", + "in": "query" + }, + { + "enum": [ + "" + ], + "type": "string", + "x-enum-varnames": [ + "WechatOrderStatusQueryClassExpireLessThen60Days" + ], + "name": "queryClass", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.ListResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/model.WechatOrderStatus" + } + } + } + } + ] + } + } + } + } + }, + "/api/wechatOrderStatus/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "寰俊璁㈠崟鐘舵��" + ], + "summary": "鏇存柊寰俊璁㈠崟鐘舵��", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateWechatOrderStatus" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } } }, "definitions": { @@ -9656,6 +9819,23 @@ "ReceiptQueryClassExpireLessThen60Days" ] }, + "constvar.SalesDetailsKeywordType": { + "type": "string", + "enum": [ + "瀹㈡埛鍚嶇О", + "璁㈠崟缂栧彿", + "绛剧害鏃ユ湡", + "閿�鍞礋璐d汉", + "浜у搧鍚嶇О" + ], + "x-enum-varnames": [ + "SalesDetailsKeywordTypeCustomerName", + "SalesDetailsKeywordTypeOrderNumber", + "SalesDetailsKeywordTypeSignTime", + "SalesDetailsKeywordTypePrincipal", + "SalesDetailsKeywordTypeProductName" + ] + }, "constvar.SalesStatus": { "type": "integer", "enum": [ @@ -9801,6 +9981,24 @@ "UserTypeSuper", "UserTypePrimary", "UserTypeSub" + ] + }, + "constvar.WechatOrderStatusKeywordType": { + "type": "string", + "enum": [ + "" + ], + "x-enum-varnames": [ + "WechatOrderStatusKeywordCustomerName" + ] + }, + "constvar.WechatOrderStatusQueryClass": { + "type": "string", + "enum": [ + "" + ], + "x-enum-varnames": [ + "WechatOrderStatusQueryClassExpireLessThen60Days" ] }, "contextx.Response": { @@ -10457,6 +10655,12 @@ "description": "閿�鍞礋璐d汉id", "type": "integer" }, + "products": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } + }, "sourceId": { "description": "婧愬崟id", "type": "integer" @@ -10706,7 +10910,7 @@ "type": "object", "properties": { "amount": { - "type": "integer" + "type": "number" }, "desc": { "type": "string" @@ -11073,6 +11277,22 @@ "addressee": { "type": "string" }, + "amountInvoiced": { + "description": "宸插紑绁ㄩ噾棰�", + "type": "number" + }, + "amountReceivable": { + "description": "搴旀敹閲戦", + "type": "number" + }, + "amountReceived": { + "description": "宸叉敹閲戦", + "type": "number" + }, + "amountUnInvoiced": { + "description": "鏈紑绁ㄩ噾棰�", + "type": "number" + }, "client": { "$ref": "#/definitions/model.Client" }, @@ -11115,6 +11335,9 @@ "remark": { "type": "string" }, + "saleChance": { + "$ref": "#/definitions/model.SaleChance" + }, "saleChanceId": { "type": "integer" }, @@ -11125,6 +11348,9 @@ "type": "string" }, "wechatOrderStatus": { + "$ref": "#/definitions/model.WechatOrderStatus" + }, + "wechatOrderStatusId": { "type": "integer" } } @@ -11380,6 +11606,13 @@ "amountReceived": { "description": "宸叉敹閲戦", "type": "number" + }, + "amountUnInvoiced": { + "description": "鏈紑绁ㄩ噾棰�", + "type": "number" + }, + "client": { + "$ref": "#/definitions/model.Client" }, "clientId": { "type": "integer" @@ -11837,6 +12070,17 @@ "type": "string" }, "uuid": { + "type": "string" + } + } + }, + "model.WechatOrderStatus": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { "type": "string" } } @@ -12312,6 +12556,13 @@ "description": "閿�鍞礋璐d汉id", "type": "integer" }, + "products": { + "description": "鍙戠エ瀵瑰簲浜у搧锛屼粠鐩稿簲婧愬崟閲岃幏鍙�", + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } + }, "sourceId": { "description": "婧愬崟id", "type": "integer" @@ -12778,8 +13029,59 @@ "request.AddSalesDetails": { "type": "object", "properties": { - "salesDetails": { - "$ref": "#/definitions/request.SalesDetails" + "address": { + "type": "string" + }, + "addressee": { + "type": "string" + }, + "clientId": { + "type": "integer" + }, + "conditions": { + "type": "string" + }, + "deliveryDate": { + "type": "string" + }, + "logisticCompany": { + "type": "string" + }, + "logisticCost": { + "type": "number" + }, + "logisticNumber": { + "type": "string" + }, + "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" + }, + "wechatOrderStatusId": { + "type": "integer" } } }, @@ -12897,6 +13199,9 @@ }, "request.AddServiceContract": { "type": "object", + "required": [ + "memberId" + ], "properties": { "clientId": { "type": "integer" @@ -13345,6 +13650,17 @@ }, "vettingType": { "type": "integer" + } + } + }, + "request.AddWechatOrderStatus": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" } } }, @@ -13845,6 +14161,9 @@ "keyword": { "type": "string" }, + "keywordType": { + "$ref": "#/definitions/constvar.SalesDetailsKeywordType" + }, "page": { "description": "椤电爜", "type": "integer" @@ -14173,7 +14492,7 @@ "signTime": { "type": "string" }, - "wechatOrderStatus": { + "wechatOrderStatusId": { "type": "integer" } } @@ -14907,6 +15226,9 @@ }, "request.UpdateInvoice": { "type": "object", + "required": [ + "id" + ], "properties": { "clientId": { "description": "瀹㈡埛id", @@ -14942,6 +15264,13 @@ "principalId": { "description": "閿�鍞礋璐d汉id", "type": "integer" + }, + "products": { + "description": "鍙戠エ瀵瑰簲浜у搧锛屼粠鐩稿簲婧愬崟閲岃幏鍙�", + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } }, "sourceId": { "description": "婧愬崟id", @@ -15896,6 +16225,9 @@ }, "request.UpdateServiceContract": { "type": "object", + "required": [ + "memberId" + ], "properties": { "clientId": { "type": "integer" @@ -16438,6 +16770,17 @@ } } }, + "request.UpdateWechatOrderStatus": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, "response.AccountIdResponse": { "type": "object", "properties": { diff --git a/docs/swagger.json b/docs/swagger.json index 97e2fca..0fe48cc 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -9471,6 +9471,169 @@ } } } + }, + "/api/wechatOrderStatus/add": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "寰俊璁㈠崟鐘舵��" + ], + "summary": "娣诲姞寰俊璁㈠崟鐘舵��", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddWechatOrderStatus" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } + }, + "/api/wechatOrderStatus/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/wechatOrderStatus/list": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "寰俊璁㈠崟鐘舵��" + ], + "summary": "鑾峰彇寰俊璁㈠崟鐘舵�佸垪琛�", + "parameters": [ + { + "type": "string", + "name": "keyword", + "in": "query" + }, + { + "enum": [ + "" + ], + "type": "string", + "x-enum-varnames": [ + "WechatOrderStatusKeywordCustomerName" + ], + "name": "keywordType", + "in": "query" + }, + { + "type": "integer", + "description": "椤电爜", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "姣忛〉澶у皬", + "name": "pageSize", + "in": "query" + }, + { + "enum": [ + "" + ], + "type": "string", + "x-enum-varnames": [ + "WechatOrderStatusQueryClassExpireLessThen60Days" + ], + "name": "queryClass", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.ListResponse" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/model.WechatOrderStatus" + } + } + } + } + ] + } + } + } + } + }, + "/api/wechatOrderStatus/update": { + "put": { + "produces": [ + "application/json" + ], + "tags": [ + "寰俊璁㈠崟鐘舵��" + ], + "summary": "鏇存柊寰俊璁㈠崟鐘舵��", + "parameters": [ + { + "description": "鏌ヨ鍙傛暟", + "name": "object", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.UpdateWechatOrderStatus" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/contextx.Response" + } + } + } + } } }, "definitions": { @@ -9644,6 +9807,23 @@ "ReceiptQueryClassExpireLessThen60Days" ] }, + "constvar.SalesDetailsKeywordType": { + "type": "string", + "enum": [ + "瀹㈡埛鍚嶇О", + "璁㈠崟缂栧彿", + "绛剧害鏃ユ湡", + "閿�鍞礋璐d汉", + "浜у搧鍚嶇О" + ], + "x-enum-varnames": [ + "SalesDetailsKeywordTypeCustomerName", + "SalesDetailsKeywordTypeOrderNumber", + "SalesDetailsKeywordTypeSignTime", + "SalesDetailsKeywordTypePrincipal", + "SalesDetailsKeywordTypeProductName" + ] + }, "constvar.SalesStatus": { "type": "integer", "enum": [ @@ -9789,6 +9969,24 @@ "UserTypeSuper", "UserTypePrimary", "UserTypeSub" + ] + }, + "constvar.WechatOrderStatusKeywordType": { + "type": "string", + "enum": [ + "" + ], + "x-enum-varnames": [ + "WechatOrderStatusKeywordCustomerName" + ] + }, + "constvar.WechatOrderStatusQueryClass": { + "type": "string", + "enum": [ + "" + ], + "x-enum-varnames": [ + "WechatOrderStatusQueryClassExpireLessThen60Days" ] }, "contextx.Response": { @@ -10445,6 +10643,12 @@ "description": "閿�鍞礋璐d汉id", "type": "integer" }, + "products": { + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } + }, "sourceId": { "description": "婧愬崟id", "type": "integer" @@ -10694,7 +10898,7 @@ "type": "object", "properties": { "amount": { - "type": "integer" + "type": "number" }, "desc": { "type": "string" @@ -11061,6 +11265,22 @@ "addressee": { "type": "string" }, + "amountInvoiced": { + "description": "宸插紑绁ㄩ噾棰�", + "type": "number" + }, + "amountReceivable": { + "description": "搴旀敹閲戦", + "type": "number" + }, + "amountReceived": { + "description": "宸叉敹閲戦", + "type": "number" + }, + "amountUnInvoiced": { + "description": "鏈紑绁ㄩ噾棰�", + "type": "number" + }, "client": { "$ref": "#/definitions/model.Client" }, @@ -11103,6 +11323,9 @@ "remark": { "type": "string" }, + "saleChance": { + "$ref": "#/definitions/model.SaleChance" + }, "saleChanceId": { "type": "integer" }, @@ -11113,6 +11336,9 @@ "type": "string" }, "wechatOrderStatus": { + "$ref": "#/definitions/model.WechatOrderStatus" + }, + "wechatOrderStatusId": { "type": "integer" } } @@ -11368,6 +11594,13 @@ "amountReceived": { "description": "宸叉敹閲戦", "type": "number" + }, + "amountUnInvoiced": { + "description": "鏈紑绁ㄩ噾棰�", + "type": "number" + }, + "client": { + "$ref": "#/definitions/model.Client" }, "clientId": { "type": "integer" @@ -11825,6 +12058,17 @@ "type": "string" }, "uuid": { + "type": "string" + } + } + }, + "model.WechatOrderStatus": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { "type": "string" } } @@ -12300,6 +12544,13 @@ "description": "閿�鍞礋璐d汉id", "type": "integer" }, + "products": { + "description": "鍙戠エ瀵瑰簲浜у搧锛屼粠鐩稿簲婧愬崟閲岃幏鍙�", + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } + }, "sourceId": { "description": "婧愬崟id", "type": "integer" @@ -12766,8 +13017,59 @@ "request.AddSalesDetails": { "type": "object", "properties": { - "salesDetails": { - "$ref": "#/definitions/request.SalesDetails" + "address": { + "type": "string" + }, + "addressee": { + "type": "string" + }, + "clientId": { + "type": "integer" + }, + "conditions": { + "type": "string" + }, + "deliveryDate": { + "type": "string" + }, + "logisticCompany": { + "type": "string" + }, + "logisticCost": { + "type": "number" + }, + "logisticNumber": { + "type": "string" + }, + "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" + }, + "wechatOrderStatusId": { + "type": "integer" } } }, @@ -12885,6 +13187,9 @@ }, "request.AddServiceContract": { "type": "object", + "required": [ + "memberId" + ], "properties": { "clientId": { "type": "integer" @@ -13333,6 +13638,17 @@ }, "vettingType": { "type": "integer" + } + } + }, + "request.AddWechatOrderStatus": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" } } }, @@ -13833,6 +14149,9 @@ "keyword": { "type": "string" }, + "keywordType": { + "$ref": "#/definitions/constvar.SalesDetailsKeywordType" + }, "page": { "description": "椤电爜", "type": "integer" @@ -14161,7 +14480,7 @@ "signTime": { "type": "string" }, - "wechatOrderStatus": { + "wechatOrderStatusId": { "type": "integer" } } @@ -14895,6 +15214,9 @@ }, "request.UpdateInvoice": { "type": "object", + "required": [ + "id" + ], "properties": { "clientId": { "description": "瀹㈡埛id", @@ -14930,6 +15252,13 @@ "principalId": { "description": "閿�鍞礋璐d汉id", "type": "integer" + }, + "products": { + "description": "鍙戠エ瀵瑰簲浜у搧锛屼粠鐩稿簲婧愬崟閲岃幏鍙�", + "type": "array", + "items": { + "$ref": "#/definitions/model.Product" + } }, "sourceId": { "description": "婧愬崟id", @@ -15884,6 +16213,9 @@ }, "request.UpdateServiceContract": { "type": "object", + "required": [ + "memberId" + ], "properties": { "clientId": { "type": "integer" @@ -16426,6 +16758,17 @@ } } }, + "request.UpdateWechatOrderStatus": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, "response.AccountIdResponse": { "type": "object", "properties": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 058fde4..f47fa36 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -114,6 +114,20 @@ type: string x-enum-varnames: - ReceiptQueryClassExpireLessThen60Days + constvar.SalesDetailsKeywordType: + enum: + - 瀹㈡埛鍚嶇О + - 璁㈠崟缂栧彿 + - 绛剧害鏃ユ湡 + - 閿�鍞礋璐d汉 + - 浜у搧鍚嶇О + type: string + x-enum-varnames: + - SalesDetailsKeywordTypeCustomerName + - SalesDetailsKeywordTypeOrderNumber + - SalesDetailsKeywordTypeSignTime + - SalesDetailsKeywordTypePrincipal + - SalesDetailsKeywordTypeProductName constvar.SalesStatus: enum: - 0 @@ -238,6 +252,18 @@ - UserTypeSuper - UserTypePrimary - UserTypeSub + constvar.WechatOrderStatusKeywordType: + enum: + - "" + type: string + x-enum-varnames: + - WechatOrderStatusKeywordCustomerName + constvar.WechatOrderStatusQueryClass: + enum: + - "" + type: string + x-enum-varnames: + - WechatOrderStatusQueryClassExpireLessThen60Days contextx.Response: properties: code: @@ -670,6 +696,10 @@ principalId: description: 閿�鍞礋璐d汉id type: integer + products: + items: + $ref: '#/definitions/model.Product' + type: array sourceId: description: 婧愬崟id type: integer @@ -832,7 +862,7 @@ model.Product: properties: amount: - type: integer + type: number desc: type: string id: @@ -1075,6 +1105,18 @@ type: string addressee: type: string + amountInvoiced: + description: 宸插紑绁ㄩ噾棰� + type: number + amountReceivable: + description: 搴旀敹閲戦 + type: number + amountReceived: + description: 宸叉敹閲戦 + type: number + amountUnInvoiced: + description: 鏈紑绁ㄩ噾棰� + type: number client: $ref: '#/definitions/model.Client' clientId: @@ -1103,6 +1145,8 @@ type: array remark: type: string + saleChance: + $ref: '#/definitions/model.SaleChance' saleChanceId: type: integer saleType: @@ -1110,6 +1154,8 @@ signTime: type: string wechatOrderStatus: + $ref: '#/definitions/model.WechatOrderStatus' + wechatOrderStatusId: type: integer type: object model.SalesLeads: @@ -1281,6 +1327,11 @@ amountReceived: description: 宸叉敹閲戦 type: number + amountUnInvoiced: + description: 鏈紑绁ㄩ噾棰� + type: number + client: + $ref: '#/definitions/model.Client' clientId: type: integer contactId: @@ -1590,6 +1641,13 @@ username: type: string uuid: + type: string + type: object + model.WechatOrderStatus: + properties: + id: + type: integer + name: type: string type: object product.Product: @@ -1916,6 +1974,11 @@ principalId: description: 閿�鍞礋璐d汉id type: integer + products: + description: 鍙戠エ瀵瑰簲浜у搧锛屼粠鐩稿簲婧愬崟閲岃幏鍙� + items: + $ref: '#/definitions/model.Product' + type: array sourceId: description: 婧愬崟id type: integer @@ -2222,8 +2285,42 @@ type: object request.AddSalesDetails: properties: - salesDetails: - $ref: '#/definitions/request.SalesDetails' + address: + type: string + addressee: + type: string + clientId: + type: integer + conditions: + type: string + deliveryDate: + type: string + logisticCompany: + type: string + logisticCost: + type: number + logisticNumber: + type: string + 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 + wechatOrderStatusId: + type: integer type: object request.AddSalesLeads: properties: @@ -2336,6 +2433,8 @@ type: string typeId: type: integer + required: + - memberId type: object request.AddServiceContractStatus: properties: @@ -2613,6 +2712,13 @@ - userId - vettingId - vettingType + type: object + request.AddWechatOrderStatus: + properties: + id: + type: integer + name: + type: string type: object request.Assign: properties: @@ -2965,6 +3071,8 @@ properties: keyword: type: string + keywordType: + $ref: '#/definitions/constvar.SalesDetailsKeywordType' page: description: 椤电爜 type: integer @@ -3189,7 +3297,7 @@ type: integer signTime: type: string - wechatOrderStatus: + wechatOrderStatusId: type: integer type: object request.SalesRefund: @@ -3711,6 +3819,11 @@ principalId: description: 閿�鍞礋璐d汉id type: integer + products: + description: 鍙戠エ瀵瑰簲浜у搧锛屼粠鐩稿簲婧愬崟閲岃幏鍙� + items: + $ref: '#/definitions/model.Product' + type: array sourceId: description: 婧愬崟id type: integer @@ -3723,6 +3836,8 @@ taxpayerIdNumber: description: 绾崇◣璇嗗埆鍙� type: string + required: + - id type: object request.UpdateInvoiceStatus: properties: @@ -4383,6 +4498,8 @@ type: string typeId: type: integer + required: + - memberId type: object request.UpdateServiceContractStatus: properties: @@ -4717,6 +4834,13 @@ required: - id - status + type: object + request.UpdateWechatOrderStatus: + properties: + id: + type: integer + name: + type: string type: object response.AccountIdResponse: properties: @@ -11139,4 +11263,105 @@ summary: 鏇存柊瀹℃壒 tags: - Vetting + /api/wechatOrderStatus/add: + post: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.AddWechatOrderStatus' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 娣诲姞寰俊璁㈠崟鐘舵�� + tags: + - 寰俊璁㈠崟鐘舵�� + /api/wechatOrderStatus/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/wechatOrderStatus/list: + get: + parameters: + - in: query + name: keyword + type: string + - enum: + - "" + in: query + name: keywordType + type: string + x-enum-varnames: + - WechatOrderStatusKeywordCustomerName + - description: 椤电爜 + in: query + name: page + type: integer + - description: 姣忛〉澶у皬 + in: query + name: pageSize + type: integer + - enum: + - "" + in: query + name: queryClass + type: string + x-enum-varnames: + - WechatOrderStatusQueryClassExpireLessThen60Days + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/response.ListResponse' + - properties: + data: + items: + $ref: '#/definitions/model.WechatOrderStatus' + type: array + type: object + summary: 鑾峰彇寰俊璁㈠崟鐘舵�佸垪琛� + tags: + - 寰俊璁㈠崟鐘舵�� + /api/wechatOrderStatus/update: + put: + parameters: + - description: 鏌ヨ鍙傛暟 + in: body + name: object + required: true + schema: + $ref: '#/definitions/request.UpdateWechatOrderStatus' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/contextx.Response' + summary: 鏇存柊寰俊璁㈠崟鐘舵�� + tags: + - 寰俊璁㈠崟鐘舵�� swagger: "2.0" diff --git a/model/request/salesDetails.go b/model/request/salesDetails.go index f5b1975..1d12f61 100644 --- a/model/request/salesDetails.go +++ b/model/request/salesDetails.go @@ -1,31 +1,32 @@ package request import ( + "aps_crm/constvar" "aps_crm/model" ) type AddSalesDetails struct { - SalesDetails SalesDetails `json:"salesDetails"` + SalesDetails } type SalesDetails struct { - 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;"` - LogisticCompany string `json:"logisticCompany" gorm:"column:logistic_company;type:varchar(255);comment:鐗╂祦鍏徃"` - LogisticNumber string `json:"logisticNumber" gorm:"column:logistic_number;type:varchar(255);comment:鐗╂祦鍗曞彿"` - LogisticCost float64 `json:"logisticCost" gorm:"column:logistic_cost;type:decimal(10,2);comment:鐗╂祦璐圭敤"` + 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:浜よ揣鏃ユ湡"` + WechatOrderStatusId int `json:"wechatOrderStatusId" gorm:"column:wechat_order_status_id;type:int;comment:寰俊璁㈠崟鐘舵�乮d"` + 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:sales_details_product;"` + LogisticCompany string `json:"logisticCompany" gorm:"column:logistic_company;type:varchar(255);comment:鐗╂祦鍏徃"` + LogisticNumber string `json:"logisticNumber" gorm:"column:logistic_number;type:varchar(255);comment:鐗╂祦鍗曞彿"` + LogisticCost float64 `json:"logisticCost" gorm:"column:logistic_cost;type:decimal(10,2);comment:鐗╂祦璐圭敤"` } type UpdateSalesDetails struct { @@ -35,5 +36,6 @@ type GetSalesDetailsList struct { PageInfo - Keyword string `json:"keyword"` + KeywordType constvar.SalesDetailsKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` } diff --git a/model/request/serviceContract.go b/model/request/serviceContract.go index 65068e4..5e179a5 100644 --- a/model/request/serviceContract.go +++ b/model/request/serviceContract.go @@ -12,15 +12,15 @@ type ServiceContract struct { ClientId int `json:"clientId"` Number string `json:"number"` - MemberId int `json:"memberId"` + MemberId int `json:"memberId" binding:"required"` ContactId int `json:"contactId"` SaleChanceId int `json:"saleChanceId"` SalesDetailsId int `json:"salesDetailsId"` QuotationId int `json:"quotationId"` TypeId int `json:"typeId"` SignTime string `json:"signTime" binding:"datetime=2006-01-02"` - StartTime string `json:"startTime" binding:"datetime=2006-01-02"` - EndTime string `json:"endTime" binding:"datetime=2006-01-02"` + StartTime string `json:"startTime"` + EndTime string `json:"endTime"` StatusId int `json:"statusId"` ServiceTimes int `json:"serviceTimes"` Terms string `json:"terms"` diff --git a/model/request/wechatOrderStatus.go b/model/request/wechatOrderStatus.go new file mode 100644 index 0000000..499824a --- /dev/null +++ b/model/request/wechatOrderStatus.go @@ -0,0 +1,22 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddWechatOrderStatus struct { + model.WechatOrderStatus +} + +type UpdateWechatOrderStatus struct { + Id int `json:"id"` + model.WechatOrderStatus +} + +type GetWechatOrderStatusList struct { + PageInfo + QueryClass constvar.WechatOrderStatusQueryClass `json:"queryClass" form:"queryClass"` + KeywordType constvar.WechatOrderStatusKeywordType `json:"keywordType" form:"keywordType"` + Keyword string `json:"keyword" form:"keyword"` +} diff --git a/model/salesDetails.go b/model/salesDetails.go index dbcaa26..8deea7f 100644 --- a/model/salesDetails.go +++ b/model/salesDetails.go @@ -1,44 +1,53 @@ package model import ( + "aps_crm/constvar" "aps_crm/pkg/mysqlx" + "fmt" + "github.com/shopspring/decimal" "gorm.io/gorm" - "time" + "gorm.io/gorm/clause" ) 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"` - Client Client `json:"client" gorm:"foreignKey:ClientId"` - 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;"` - LogisticCompany string `json:"logisticCompany" gorm:"column:logistic_company;type:varchar(255);comment:鐗╂祦鍏徃"` - LogisticNumber string `json:"logisticNumber" gorm:"column:logistic_number;type:varchar(255);comment:鐗╂祦鍗曞彿"` - LogisticCost float64 `json:"logisticCost" gorm:"column:logistic_cost;type:decimal(10,2);comment:鐗╂祦璐圭敤"` - gorm.Model `json:"-"` + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + ClientId int `json:"clientId" gorm:"column:client_id;type:int;comment:瀹㈡埛id"` + Client Client `json:"client" gorm:"foreignKey:ClientId"` + Number string `json:"number" gorm:"column:number;type:varchar(255);comment:閿�鍞瓙鍗曞彿"` + SaleChanceId int `json:"saleChanceId" gorm:"column:sale_chance_id;type:int;comment:閿�鍞満浼歩d"` + SaleChance SaleChance `json:"saleChance" gorm:"foreignKey:SaleChanceId"` + SaleType int `json:"saleType" gorm:"column:sale_type;type:int;comment:閿�鍞被鍨�"` + SignTime string `json:"signTime" gorm:"column:sign_time;type:varchar(255);comment:绛惧崟鏃堕棿"` + MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:璐熻矗浜篿d"` + DeliveryDate string `json:"deliveryDate" gorm:"column:delivery_date;type:varchar(255);comment:浜よ揣鏃ユ湡"` + WechatOrderStatusId int `json:"wechatOrderStatusId" gorm:"column:wechat_order_status;type:int;comment:寰俊璁㈠崟鐘舵��"` + WechatOrderStatus WechatOrderStatus `json:"wechatOrderStatus" gorm:"foreignKey:WechatOrderStatusId"` + 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:sales_details_product;"` + LogisticCompany string `json:"logisticCompany" gorm:"column:logistic_company;type:varchar(255);comment:鐗╂祦鍏徃"` + LogisticNumber string `json:"logisticNumber" gorm:"column:logistic_number;type:varchar(255);comment:鐗╂祦鍗曞彿"` + LogisticCost float64 `json:"logisticCost" gorm:"column:logistic_cost;type:decimal(10,2);comment:鐗╂祦璐圭敤"` + AmountReceivable decimal.Decimal `gorm:"amount_receivable" json:"amountReceivable"` // 搴旀敹閲戦 + AmountReceived decimal.Decimal `gorm:"amount_received" json:"amountReceived"` // 宸叉敹閲戦 + AmountInvoiced decimal.Decimal `gorm:"amount_invoiced" json:"amountInvoiced"` // 宸插紑绁ㄩ噾棰� + AmountUnInvoiced decimal.Decimal `gorm:"-" json:"amountUnInvoiced"` // 鏈紑绁ㄩ噾棰� + gorm.Model `json:"-"` } SalesDetailsSearch struct { SalesDetails - - Orm *gorm.DB - Keyword string - OrderBy string - PageNum int - PageSize int - + KeywordType constvar.SalesDetailsKeywordType + Orm *gorm.DB + Keyword string + OrderBy string + PageNum int + PageSize int + Preload bool } ) @@ -54,11 +63,29 @@ func (slf *SalesDetailsSearch) build() *gorm.DB { var db = slf.Orm.Model(&SalesDetails{}) - if slf.Keyword != "" { - db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") - } if slf.Id != 0 { db = db.Where("id = ?", slf.Id) + } + + switch slf.KeywordType { + case constvar.SalesDetailsKeywordTypeCustomerName: + db = db.Joins("Client", clause.LeftJoin).Where("Client.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + case constvar.SalesDetailsKeywordTypeOrderNumber: + db = db.Where("number like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + case constvar.SalesDetailsKeywordTypeSignTime: + db = db.Where("sign_time like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + case constvar.SalesDetailsKeywordTypePrincipal: + db = db.Joins("left join user on user.id = sales_details.member_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + case constvar.SalesDetailsKeywordTypeProductName: + //db = db.Joins("left join sales_details_product sdp on sdp.sales_details_id = sales_details.id left join product").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + + } + if slf.Preload { + db = db.Preload("Products"). + Preload("Client"). + Preload("SaleChance"). + Preload("WechatOrderStatus"). + Preload("Client") } return db @@ -106,12 +133,22 @@ db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) } - err := db.Preload("Products").Preload("Client").Find(&records).Error + err := db.Find(&records).Error return records, total, err } func (slf *SalesDetailsSearch) SetKeyword(keyword string) *SalesDetailsSearch { slf.Keyword = keyword + return slf +} + +func (slf *SalesDetailsSearch) SetKeywordType(keywordType constvar.SalesDetailsKeywordType) *SalesDetailsSearch { + slf.KeywordType = keywordType + return slf +} + +func (slf *SalesDetailsSearch) SetPreload(preload bool) *SalesDetailsSearch { + slf.Preload = preload return slf } @@ -123,4 +160,4 @@ func (slf *SalesDetailsSearch) SetOrder(order string) *SalesDetailsSearch { slf.OrderBy = order return slf -} \ No newline at end of file +} diff --git a/model/serviceContract.go b/model/serviceContract.go index 1b6b901..14a5e7a 100644 --- a/model/serviceContract.go +++ b/model/serviceContract.go @@ -44,7 +44,6 @@ ServiceContractSearch struct { ServiceContract - Orm *gorm.DB QueryClass constvar.ServiceContractQueryClass KeywordType constvar.ServiceContractKeywordType @@ -95,10 +94,9 @@ db = db.Joins("left join service_contract_status on service_contract_status.id = service_contract.service_contract_status_id") db = db.Where("service_contract_status.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) case constvar.ServiceContractKeywordPrincipal: - db = db.Joins("left join user on user.id = service_contract.member_id") - db = db.Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) + db = db.Joins("left join user on user.id = service_contract.member_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) case constvar.ServiceContractKeywordProductName: - //db = db.Joins("ServiceContractProduct", clause.LeftJoin).Joins("Product", clause.LeftJoin).Where("Product.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) todo + db = db.Joins("Products", clause.LeftJoin).Where("Products.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) case constvar.ServiceContractKeywordServiceBeginDate: db = db.Where("start_time = ?", slf.Keyword) case constvar.ServiceContractKeywordServiceEndDate: diff --git a/model/wechatOrderStatus.go b/model/wechatOrderStatus.go new file mode 100644 index 0000000..e458a99 --- /dev/null +++ b/model/wechatOrderStatus.go @@ -0,0 +1,140 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // WechatOrderStatus 寰俊璁㈠崟鐘舵�� + WechatOrderStatus struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name"` + } + + // WechatOrderStatusSearch 寰俊璁㈠崟鐘舵�佹悳绱㈡潯浠� + WechatOrderStatusSearch struct { + WechatOrderStatus + Orm *gorm.DB + QueryClass constvar.WechatOrderStatusQueryClass + KeywordType constvar.WechatOrderStatusKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (WechatOrderStatus) TableName() string { + return "wechat_order_status" +} + +func NewWechatOrderStatusSearch() *WechatOrderStatusSearch { + return &WechatOrderStatusSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *WechatOrderStatusSearch) build() *gorm.DB { + var db = slf.Orm.Model(&WechatOrderStatus{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *WechatOrderStatusSearch) Create(record *WechatOrderStatus) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *WechatOrderStatusSearch) CreateBatch(records []*WechatOrderStatus) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *WechatOrderStatusSearch) Delete() error { + var db = slf.build() + return db.Delete(&WechatOrderStatus{}).Error +} + +func (slf *WechatOrderStatusSearch) Update(record *WechatOrderStatus) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *WechatOrderStatusSearch) FindAll() ([]*WechatOrderStatus, error) { + var db = slf.build() + var record = make([]*WechatOrderStatus, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *WechatOrderStatusSearch) SetId(id int) *WechatOrderStatusSearch { + slf.Id = id + return slf +} + +func (slf *WechatOrderStatusSearch) SetOrm(tx *gorm.DB) *WechatOrderStatusSearch { + slf.Orm = tx + return slf +} + +func (slf *WechatOrderStatusSearch) First() (*WechatOrderStatus, error) { + var db = slf.build() + var record = new(WechatOrderStatus) + err := db.First(record).Error + return record, err +} + +func (slf *WechatOrderStatusSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *WechatOrderStatusSearch) Save(record *WechatOrderStatus) 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 *WechatOrderStatusSearch) Find() ([]*WechatOrderStatus, int64, error) { + var db = slf.build() + var records = make([]*WechatOrderStatus, 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 *WechatOrderStatusSearch) 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 := []*WechatOrderStatus{} + return slf.CreateBatch(records) +} diff --git a/pkg/contextx/contextx.go b/pkg/contextx/contextx.go index 77a9b64..94fce95 100644 --- a/pkg/contextx/contextx.go +++ b/pkg/contextx/contextx.go @@ -42,7 +42,7 @@ if params != nil { if err := r.ctx.ShouldBind(params); err != nil { logx.Errorf("bind param error: %v", err.Error()) - r.Fail(ecode.ParamsErr) + r.FailWithMsg(ecode.ParamsErr, err.Error()) return } } diff --git a/router/wechatOrderStatus.go b/router/wechatOrderStatus.go new file mode 100644 index 0000000..732179c --- /dev/null +++ b/router/wechatOrderStatus.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitWechatOrderStatusRouter(router *gin.RouterGroup) { + WechatOrderStatusRouter := router.Group("wechatOrderStatus") + WechatOrderStatusApi := v1.WechatOrderStatusApi{} + { + WechatOrderStatusRouter.POST("add", WechatOrderStatusApi.Add) // 娣诲姞寰俊璁㈠崟鐘舵�� + WechatOrderStatusRouter.DELETE("delete/:id", WechatOrderStatusApi.Delete) // 鍒犻櫎寰俊璁㈠崟鐘舵�� + WechatOrderStatusRouter.PUT("update", WechatOrderStatusApi.Update) // 鏇存柊寰俊璁㈠崟鐘舵�� + WechatOrderStatusRouter.GET("list", WechatOrderStatusApi.List) // 鑾峰彇寰俊璁㈠崟鐘舵�佸垪琛� + } +} diff --git a/service/salesDetails.go b/service/salesDetails.go index 8c0b0a2..d504748 100644 --- a/service/salesDetails.go +++ b/service/salesDetails.go @@ -1,6 +1,7 @@ package service import ( + "aps_crm/constvar" "aps_crm/model" "aps_crm/pkg/ecode" ) @@ -44,9 +45,12 @@ return ecode.OK } -func (SalesDetailsService) GetSalesDetailsList(page, pageSize int, keyword string) ([]*model.SalesDetails, int64, int) { +func (SalesDetailsService) GetSalesDetailsList(page, pageSize int, keywordType constvar.SalesDetailsKeywordType, keyword string) ([]*model.SalesDetails, int64, int) { // get contact list - contacts, total, err := model.NewSalesDetailsSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll() + contacts, total, err := model.NewSalesDetailsSearch(). + SetPreload(true). + SetKeywordType(keywordType). + SetKeyword(keyword).SetPage(page, pageSize).FindAll() if err != nil { return nil, 0, ecode.SalesDetailsListErr } diff --git a/service/wechatOrderStatus.go b/service/wechatOrderStatus.go new file mode 100644 index 0000000..bc7b442 --- /dev/null +++ b/service/wechatOrderStatus.go @@ -0,0 +1,55 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/pkg/ecode" +) + +type WechatOrderStatusService struct{} + +func NewWechatOrderStatusService() WechatOrderStatusService { + return WechatOrderStatusService{} +} + +func (WechatOrderStatusService) AddWechatOrderStatus(wechatOrderStatus *model.WechatOrderStatus) int { + err := model.NewWechatOrderStatusSearch().Create(wechatOrderStatus) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (WechatOrderStatusService) GetWechatOrderStatus(id int) (*model.WechatOrderStatus, int) { + wechatOrderStatus, err := model.NewWechatOrderStatusSearch().SetId(id).First() + if err != nil { + return nil, ecode.DBErr + } + + return wechatOrderStatus, ecode.OK +} + +func (WechatOrderStatusService) DeleteWechatOrderStatus(id int) int { + err := model.NewWechatOrderStatusSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (WechatOrderStatusService) GetWechatOrderStatusList() ([]*model.WechatOrderStatus, int64, int) { + list, total, err := model.NewWechatOrderStatusSearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (WechatOrderStatusService) UpdateWechatOrderStatus(wechatOrderStatus *model.WechatOrderStatus) int { + err := model.NewWechatOrderStatusSearch().SetId(wechatOrderStatus.Id).Save(wechatOrderStatus) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} -- Gitblit v1.8.0