From cd6940f07750c1e2cd3a5c0eeafa6cc0309ef2f6 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 29 八月 2023 14:35:26 +0800
Subject: [PATCH] 新增和查询采购类型

---
 api/v1/purchase/purchase.go |   82 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 76 insertions(+), 6 deletions(-)

diff --git a/api/v1/purchase/purchase.go b/api/v1/purchase/purchase.go
index c2b7c52..1d220d6 100644
--- a/api/v1/purchase/purchase.go
+++ b/api/v1/purchase/purchase.go
@@ -2,12 +2,16 @@
 
 import (
 	"github.com/gin-gonic/gin"
+	"github.com/mitchellh/mapstructure"
 	"go.uber.org/zap"
+	"gorm.io/gorm"
 	"srm/global"
 	"srm/model/common/request"
 	"srm/model/common/response"
+	"srm/model/purchase"
 	purchaserequest "srm/model/purchase/request"
 	"strconv"
+	"strings"
 
 	//"srm/model/purchase"
 
@@ -35,8 +39,21 @@
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	err = service.NewPurchaseService().CreatePurchase(params)
+
+	var purchaseRecord purchase.Purchase
+	if err := mapstructure.Decode(params.Purchase, &purchaseRecord); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+
+	purchaseRecord.ID = 0
+	err = service.NewPurchaseService().CreatePurchase(&purchaseRecord, params.ProductList)
+
 	if err != nil {
+		if err == gorm.ErrDuplicatedKey || strings.Contains(err.Error(), "Duplicate entry") {
+			response.FailWithMessage("缂栧彿閲嶅", c)
+			return
+		}
 		global.GVA_LOG.Error("鍒涘缓澶辫触!", zap.Error(err))
 		response.FailWithMessage("鍒涘缓澶辫触", c)
 		return
@@ -74,22 +91,24 @@
 // @Security  ApiKeyAuth
 // @accept    application/json
 // @Produce   application/json
-// @Param     data  body      purchaserequest.AddPurchase            true  "閲囪喘鍗旾D, 閲囪喘鍗曚俊鎭�"
+// @Param     data  body      purchaserequest.UpdatePurchase            true  "閲囪喘鍗旾D, 閲囪喘鍗曚俊鎭�"
 // @Success   200   {object}  response.Response{msg=string}  "鏇存柊閲囪喘鍗曚俊鎭�"
 // @Router    /purchase/purchase [put]
 func (e *PurchaseApi) UpdatePurchase(c *gin.Context) {
-	var params purchaserequest.AddPurchase
+	var params purchaserequest.UpdatePurchase
 	err := c.ShouldBindJSON(&params)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	err = utils.Verify(params.Purchase.GVA_MODEL, utils.IdVerify)
-	if err != nil {
+
+	var purchaseRecord purchase.Purchase
+	if err := mapstructure.Decode(params.Purchase, &purchaseRecord); err != nil {
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	err = service.NewPurchaseService().UpdatePurchase(&params)
+
+	err = service.NewPurchaseService().UpdatePurchase(&purchaseRecord, params.ProductList)
 	if err != nil {
 		global.GVA_LOG.Error("鏇存柊澶辫触!", zap.Error(err))
 		response.FailWithMessage("鏇存柊澶辫触", c)
@@ -186,3 +205,54 @@
 	}
 	response.OkWithMessage("鏇存柊鎴愬姛", c)
 }
+
+// SavePurchaseType
+// @Tags      Purchase
+// @Summary   鍒涘缓閲囪喘绫诲瀷
+// @Security  ApiKeyAuth
+// @accept    application/json
+// @Produce   application/json
+// @Param     data  body     []purchaserequest.PurchaseType   true  "閲囪喘绫诲瀷list"
+// @Success   200   {object}  response.Response{msg=string}  "鍒涘缓閲囪喘绫诲瀷"
+// @Router    /purchase/purchaseType [post]
+func (e *PurchaseApi) SavePurchaseType(c *gin.Context) {
+	var params []*purchaserequest.PurchaseType
+	err := c.ShouldBindJSON(&params)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+
+	purchaseTypeList := make([]*purchase.PurchaseType, 0, len(params))
+	if err := mapstructure.Decode(params, &purchaseTypeList); err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+
+	err = service.NewPurchaseService().SavePurchaseType(purchaseTypeList)
+
+	if err != nil {
+		global.GVA_LOG.Error("鍒涘缓澶辫触!", zap.Error(err))
+		response.FailWithMessage("鍒涘缓澶辫触", c)
+		return
+	}
+	response.OkWithMessage("鍒涘缓鎴愬姛", c)
+}
+
+// GetPurchaseTypeList
+// @Tags      Purchase
+// @Summary   鑾峰彇閲囪喘绫诲瀷鍒楄〃
+// @Security  ApiKeyAuth
+// @accept    application/json
+// @Produce   application/json
+// @Success   200   {object}  response.Response{data=[]purchase.PurchaseType,msg=string}  "鑾峰彇閲囪喘绫诲瀷鍒楄〃"
+// @Router    /purchase/purchaseTypeList [get]
+func (e *PurchaseApi) GetPurchaseTypeList(c *gin.Context) {
+	list, err := service.NewPurchaseService().GetPurchaseTypeList()
+	if err != nil {
+		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+		response.FailWithMessage("鑾峰彇澶辫触"+err.Error(), c)
+		return
+	}
+	response.OkWithDetailed(list, "鑾峰彇鎴愬姛", c)
+}

--
Gitblit v1.8.0