From d20acf38c36c11ee4428c3e74a17f5870dc61b51 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期四, 16 十一月 2023 09:51:00 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/SRM

---
 api/v1/test/product.go |  149 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 131 insertions(+), 18 deletions(-)

diff --git a/api/v1/test/product.go b/api/v1/test/product.go
index c7b7457..aba8c67 100644
--- a/api/v1/test/product.go
+++ b/api/v1/test/product.go
@@ -3,11 +3,14 @@
 import (
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
+	"google.golang.org/grpc"
+	"google.golang.org/grpc/credentials/insecure"
 	"srm/global"
 	"srm/model/common/request"
 	"srm/model/common/response"
 	"srm/model/test"
 	testReq "srm/model/test/request"
+	testResp "srm/model/test/response"
 	"srm/service"
 )
 
@@ -22,17 +25,30 @@
 // @Security ApiKeyAuth
 // @accept application/json
 // @Produce application/json
-// @Param data body test.Product true "鍒涘缓Product"
+// @Param data body request.ProductCreate true "鍒涘缓Product"
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"鑾峰彇鎴愬姛"}"
 // @Router /p/createProduct [post]
 func (pApi *ProductApi) CreateProduct(c *gin.Context) {
-	var p test.Product
+	var p testReq.ProductCreate
 	err := c.ShouldBindJSON(&p)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	if err := pService.CreateProduct(&p); err != nil {
+	for _, t := range p.List {
+		var num int64
+		db := global.GVA_DB.Model(&test.SupplierMaterial{})
+		err := db.Where("number = ?", t.Number).Where("supplier_id = ?", t.SupplierId).Count(&num).Error
+		if err != nil {
+			response.FailWithMessage(err.Error(), c)
+			return
+		}
+		if num > 0 {
+			response.FailWithMessage("褰撳墠渚涘簲鍟嗗凡缁忔彁渚涙浜у搧", c)
+			return
+		}
+	}
+	if err := pService.CreateProduct(p.List); err != nil {
 		global.GVA_LOG.Error("鍒涘缓澶辫触!", zap.Error(err))
 		response.FailWithMessage("鍒涘缓澶辫触", c)
 	} else {
@@ -46,17 +62,17 @@
 // @Security ApiKeyAuth
 // @accept application/json
 // @Produce application/json
-// @Param data body test.Product true "鍒犻櫎Product"
+// @Param data body request.GetById true "鍒犻櫎Product"
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"鍒犻櫎鎴愬姛"}"
 // @Router /p/deleteProduct [delete]
 func (pApi *ProductApi) DeleteProduct(c *gin.Context) {
-	var p test.Product
+	var p request.GetById
 	err := c.ShouldBindJSON(&p)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	if err := pService.DeleteProduct(p); err != nil {
+	if err := pService.DeleteProduct(p.ID); err != nil {
 		global.GVA_LOG.Error("鍒犻櫎澶辫触!", zap.Error(err))
 		response.FailWithMessage("鍒犻櫎澶辫触", c)
 	} else {
@@ -94,11 +110,11 @@
 // @Security ApiKeyAuth
 // @accept application/json
 // @Produce application/json
-// @Param data body test.Product true "鏇存柊Product"
+// @Param data body test.SupplierMaterial true "鏇存柊Product"
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"鏇存柊鎴愬姛"}"
 // @Router /p/updateProduct [put]
 func (pApi *ProductApi) UpdateProduct(c *gin.Context) {
-	var p test.Product
+	var p test.SupplierMaterial
 	err := c.ShouldBindJSON(&p)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -118,11 +134,11 @@
 // @Security ApiKeyAuth
 // @accept application/json
 // @Produce application/json
-// @Param data query test.Product true "鐢╥d鏌ヨProduct"
+// @Param data query request.GetById true "鐢╥d鏌ヨProduct"
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"鏌ヨ鎴愬姛"}"
 // @Router /p/findProduct [get]
 func (pApi *ProductApi) FindProduct(c *gin.Context) {
-	var p test.Product
+	var p request.GetById
 	err := c.ShouldBindQuery(&p)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
@@ -152,15 +168,112 @@
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	if list, total, err := pService.GetProductInfoList(pageInfo); err != nil {
+	list, total, err := pService.GetProductInfoList(pageInfo)
+	if err != nil {
 		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
 		response.FailWithMessage("鑾峰彇澶辫触", c)
-	} else {
-		response.OkWithDetailed(response.PageResult{
-			List:     list,
-			Total:    total,
-			Page:     pageInfo.Page,
-			PageSize: pageInfo.PageSize,
-		}, "鑾峰彇鎴愬姛", c)
+		return
 	}
+
+	productList := make([]testResp.Product, 0, len(list))
+
+	for _, item := range list {
+		productList = append(productList, testResp.Product{
+			Name:             item.Name,
+			Number:           item.Number,
+			SupplierId:       item.SupplierId,
+			Unit:             item.Unit,
+			PurchasePrice:    item.PurchasePrice,
+			DeliveryTime:     item.DeliveryTime,
+			ShippingDuration: item.ShippingDuration,
+			Specifications:   item.Specifications,
+			ModelNumber:      item.ModelNumber,
+			ProductType:      "",
+			MinimumStock:     item.MinimumStock,
+			MaximumStock:     item.MaximumStock,
+			Remark:           "",
+			SupplierName:     item.Supplier.Name,
+			CategoryName:     item.CategoryName,
+		})
+	}
+
+	response.OkWithDetailed(response.PageResult{
+		List:     list,
+		Total:    total,
+		Page:     pageInfo.Page,
+		PageSize: pageInfo.PageSize,
+	}, "鑾峰彇鎴愬姛", c)
+}
+
+var (
+	productServiceConn *grpc.ClientConn
+)
+
+func InitProductServiceConn() {
+	var err error
+	productServiceConn, err = grpc.Dial(global.GVA_CONFIG.System.GrpcUrl, 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()
+	}
+}
+
+// GetProductListFromGrpc 鍒嗛〉鑾峰彇Product鍒楄〃
+// @Tags Product
+// @Summary 鍒嗛〉鑾峰彇Product鍒楄〃
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data query testReq.ProductSearch true "鍒嗛〉鑾峰彇Product鍒楄〃"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"鑾峰彇鎴愬姛"}"
+// @Router /p/getProductListFromGrpc [get]
+func (pApi *ProductApi) GetProductListFromGrpc(c *gin.Context) {
+	var pageInfo testReq.ProductSearch
+	err := c.ShouldBindQuery(&pageInfo)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+
+	list, total, err := pService.GetMaterials(pageInfo)
+	if err != nil {
+		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+		response.FailWithMessage("鑾峰彇澶辫触", c)
+		return
+	}
+
+	productList := make([]testResp.Material, len(list))
+
+	for _, item := range list {
+		productList = append(productList, testResp.Material{
+			Name:           item.Name,
+			Number:         item.ID,
+			Unit:           item.Unit,
+			Specifications: item.Specs,
+			ModelNumber:    string(item.Model),
+			MinimumStock:   item.MinInventory.IntPart(),
+			MaximumStock:   item.MaxInventory.IntPart(),
+			Remark:         "",
+			CategoryName:   item.CategoryName,
+		})
+	}
+
+	if err != nil {
+		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+		response.FailWithMessage("鑾峰彇澶辫触", c)
+	}
+
+	response.OkWithDetailed(response.PageResult{
+		List:     productList,
+		Total:    total,
+		Page:     pageInfo.Page,
+		PageSize: pageInfo.PageSize,
+	}, "鑾峰彇鎴愬姛", c)
+
 }

--
Gitblit v1.8.0