From 90ebefc0ce4306bdc96f34ea9503ca986a59bbe7 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 31 一月 2024 14:12:00 +0800
Subject: [PATCH] 客户列表grpc接口
---
api/v1/product.go | 138 ++++++++++++++++++++++++++++++++++++---------
1 files changed, 109 insertions(+), 29 deletions(-)
diff --git a/api/v1/product.go b/api/v1/product.go
index 8782b69..ee678df 100644
--- a/api/v1/product.go
+++ b/api/v1/product.go
@@ -1,35 +1,39 @@
package v1
import (
- "aps_crm/conf"
+ "aps_crm/model"
+ "aps_crm/model/grpc_init"
"aps_crm/model/request"
"aps_crm/model/response"
"aps_crm/pkg/contextx"
"aps_crm/pkg/ecode"
"aps_crm/pkg/logx"
"aps_crm/proto/product"
- "fmt"
"github.com/gin-gonic/gin"
+ "github.com/shopspring/decimal"
"github.com/spf13/cast"
- "google.golang.org/grpc"
- "google.golang.org/grpc/credentials/insecure"
)
type ProductApi struct{}
-var (
- productServiceConn *grpc.ClientConn
-)
-
-func InitProductServiceConn() {
- fmt.Println(conf.Conf.GrpcServiceAddr.Aps)
- var err error
- productServiceConn, err = grpc.Dial(conf.Conf.GrpcServiceAddr.Aps, grpc.WithTransportCredentials(insecure.NewCredentials()))
- if err != nil {
- logx.Errorf("grpc dial product service error: %v", err.Error())
- return
- }
-}
+//var (
+// productServiceConn *grpc.ClientConn
+//)
+//
+//func InitProductServiceConn() {
+// var err error
+// productServiceConn, err = grpc.Dial(conf.Conf.GrpcServiceAddr.Aps, grpc.WithTransportCredentials(insecure.NewCredentials()))
+// if err != nil {
+// logx.Errorf("grpc dial product service error: %v", err.Error())
+// return
+// }
+//}
+//
+//func CloseProductServiceConn() {
+// if productServiceConn != nil {
+// productServiceConn.Close()
+// }
+//}
// List
//
@@ -51,8 +55,20 @@
return
}
- cli := product.NewProductServiceClient(productServiceConn)
-
+ if params.QuotationNumber != "" {
+ find, err := model.NewQuotationSearch(nil).SetNumber(params.QuotationNumber).Find()
+ if err != nil {
+ ctx.FailWithMsg(ecode.UnknownErr, "鎶ヤ环鍗曚俊鎭煡璇㈠け璐�")
+ return
+ }
+ products := find.Products
+ ctx.OkWithDetailed(response.ListResponse{
+ Data: products,
+ Count: int64(len(products)),
+ })
+ return
+ }
+ cli := product.NewProductServiceClient(grpc_init.CrmApsGrpcServiceConn)
getProductListResponse, err := cli.GetProductList(ctx.GetCtx(), &product.GetProductListRequest{
Page: cast.ToInt32(params.Page),
PageSize: cast.ToInt32(params.PageSize),
@@ -60,17 +76,29 @@
ProductName: params.ProductName,
})
if err != nil {
- logx.Errorf("GetProductList err: %v", err.Error())
+ logx.Errorf("grpc GetProductList err: %v", err.Error())
ctx.FailWithMsg(ecode.UnknownErr, "鍐呴儴閿欒")
return
}
if getProductListResponse.Code != 0 {
- logx.Errorf("GetProductList err: %v", err.Error())
+ logx.Errorf("grpc GetProductList err: %v", err.Error())
ctx.FailWithMsg(ecode.UnknownErr, "鍐呴儴閿欒")
return
}
+ rawProductList := getProductListResponse.List
+ productList := make([]model.Product, len(rawProductList))
+
+ for k, v := range rawProductList {
+ productList[k].Number = v.Number
+ productList[k].Name = v.Name
+ productList[k].Price = decimal.NewFromFloat(v.SalePrice).Round(2)
+ productList[k].Amount = decimal.NewFromFloat(1)
+ productList[k].Total = productList[k].Price.Mul(productList[k].Amount).Round(2)
+ productList[k].Unit = v.Unit
+ }
+
ctx.OkWithDetailed(response.ListResponse{
- Data: getProductListResponse.List,
+ Data: productList,
Count: getProductListResponse.Total,
})
}
@@ -90,20 +118,72 @@
// 鑾峰彇浜у搧ID
productId := c.Query("productNumber")
- cli := product.NewProductServiceClient(productServiceConn)
+ cli := product.NewProductServiceClient(grpc_init.CrmApsGrpcServiceConn)
- getProductInfoResponse, err := cli.GetProductInfo(ctx.GetCtx(), &product.GetProductInfoRequest{ProductId: productId}, nil)
+ getProductInfoResponse, err := cli.GetProductInfo(ctx.GetCtx(), &product.GetProductInfoRequest{ProductId: productId})
if err != nil {
- logx.Errorf("GetProductInfo err: %v", err.Error())
+ logx.Errorf(" grpc GetProductInfo err: %v", err.Error())
ctx.FailWithMsg(ecode.UnknownErr, "鍐呴儴閿欒")
return
}
if getProductInfoResponse.Code != 0 {
- logx.Errorf("GetProductInfo err: %v", err.Error())
+ logx.Errorf("grpc GetProductInfo err: %v", err.Error())
ctx.FailWithMsg(ecode.UnknownErr, "鍐呴儴閿欒")
return
}
- ctx.OkWithDetailed(contextx.Response{
- Data: getProductInfoResponse.Data,
- })
+ ctx.OkWithDetailed(getProductInfoResponse.Data)
+}
+
+// GetProductOrderInfo
+//
+// @Tags 浜у搧
+// @Summary 鑾峰彇浜у搧璁㈠崟淇℃伅
+// @Produce application/json
+// @Param number path string true "鏄庣粏缂栫爜"
+// @Success 200 {object} contextx.Response{data=response.Info} "鎴愬姛"
+//
+// @Router /api/product/getProductOrderInfo/{number} [get]
+func (ci *ProductApi) GetProductOrderInfo(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+ number := c.Param("number")
+ if number == "" || number == "undefined" {
+ ctx.Ok()
+ return
+ }
+ client := product.NewProductServiceClient(grpc_init.CrmApsGrpcServiceConn)
+ info, err := client.GetProductOrder(ctx.GetCtx(), &product.GetProductOrderRequest{SalesDetailsNumber: number})
+ if err != nil {
+ logx.Errorf("grpc GetProductOrder err: %v", err.Error())
+ ctx.FailWithMsg(ecode.UnknownErr, "鍐呴儴閿欒")
+ return
+ }
+ var result response.Info
+ var list []response.WorkOrderInfo
+ for _, orderInfo := range info.List {
+ var wo response.WorkOrderInfo
+ wo.OrderId = orderInfo.OrderId
+ wo.ProductName = orderInfo.ProductName
+ wo.OrderStatus = orderInfo.OrderStatus
+ wo.WorkOrderId = orderInfo.WorkOrderId
+ wo.WorkOrderStatus = orderInfo.WorkOrderStatus
+ wo.StartTime = orderInfo.StartTime
+ wo.EndTime = orderInfo.EndTime
+ list = append(list, wo)
+ }
+ result.MakeInfo = list
+ var purchaseInfo []response.Purchase
+ for _, pl := range info.PurchaseList {
+ var p response.Purchase
+ p.Amount = pl.Amount
+ p.Status = pl.Status
+ p.PurchaseName = pl.PurchaseName
+ p.PurchaseNumber = pl.PurchaseNumber
+ p.SupplierName = pl.SupplierName
+ purchaseInfo = append(purchaseInfo, p)
+ }
+ result.PurchaseInfo = purchaseInfo
+ ctx.OkWithDetailed(result)
}
--
Gitblit v1.8.0