From 8d7a2d55e0868db900c13c5eef0a3eb7f1a6eee2 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期三, 08 十一月 2023 09:50:55 +0800
Subject: [PATCH] 销售明细单从aps查询产品订单

---
 api/v1/product.go |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 58 insertions(+), 2 deletions(-)

diff --git a/api/v1/product.go b/api/v1/product.go
index f77d0a6..32b0165 100644
--- a/api/v1/product.go
+++ b/api/v1/product.go
@@ -2,14 +2,17 @@
 
 import (
 	"aps_crm/conf"
+	"aps_crm/model"
 	"aps_crm/model/request"
 	"aps_crm/model/response"
 	"aps_crm/pkg/contextx"
 	"aps_crm/pkg/ecode"
 	"aps_crm/pkg/logx"
 	"aps_crm/proto/product"
+	"aps_crm/utils"
 	"fmt"
 	"github.com/gin-gonic/gin"
+	"github.com/shopspring/decimal"
 	"github.com/spf13/cast"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/credentials/insecure"
@@ -28,6 +31,12 @@
 	if err != nil {
 		logx.Errorf("grpc dial product service error: %v", err.Error())
 		return
+	}
+}
+
+func CloseProductServiceConn() {
+	if productServiceConn != nil {
+		productServiceConn.Close()
 	}
 }
 
@@ -52,13 +61,23 @@
 	}
 
 	cli := product.NewProductServiceClient(productServiceConn)
-
 	getProductListResponse, err := cli.GetProductList(ctx.GetCtx(), &product.GetProductListRequest{
 		Page:          cast.ToInt32(params.Page),
 		PageSize:      cast.ToInt32(params.PageSize),
 		ProductNumber: params.ProductNumber,
 		ProductName:   params.ProductName,
 	})
+	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)
+	}
+
 	if err != nil {
 		logx.Errorf("GetProductList err: %v", err.Error())
 		ctx.FailWithMsg(ecode.UnknownErr, "鍐呴儴閿欒")
@@ -70,7 +89,7 @@
 		return
 	}
 	ctx.OkWithDetailed(response.ListResponse{
-		Data:  getProductListResponse.List,
+		Data:  productList,
 		Count: getProductListResponse.Total,
 	})
 }
@@ -105,3 +124,40 @@
 	}
 	ctx.OkWithDetailed(getProductInfoResponse.Data)
 }
+
+// GetProductOrderInfo
+//
+// @Tags		浜у搧
+// @Summary	鑾峰彇浜у搧璁㈠崟淇℃伅
+// @Produce	application/json
+// @Param		number	path		string	true	"鏄庣粏缂栫爜"
+// @Success	200	{object}	contextx.Response{data=[]product.WorkOrderInfo}	"鎴愬姛"
+//
+//	@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")
+	first, err := model.NewSalesDetailsSearch().SetNumber(number).SetPreload(true).First()
+	if err != nil {
+		ctx.FailWithMsg(ecode.UnknownErr, "鏄庣粏璇︽儏鏌ユ壘澶辫触")
+		return
+	}
+	params := make([]*product.Info, 0)
+	for _, p := range first.Products {
+		var pa product.Info
+		pa.ProductId = p.Number
+		pa.Time = utils.TimeToString(first.UpdatedAt)
+		params = append(params, &pa)
+	}
+	client := product.NewProductServiceClient(productServiceConn)
+	info, err := client.GetProductOrder(ctx.GetCtx(), &product.GetProductOrderRequest{Params: params})
+	if err != nil {
+		logx.Errorf("GetProductOrder err: %v", err.Error())
+		ctx.FailWithMsg(ecode.UnknownErr, "鍐呴儴閿欒")
+		return
+	}
+	ctx.OkWithDetailed(info.List)
+}

--
Gitblit v1.8.0