From 0d86d93cff554f54f83927d4f8bf03ed8c847883 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 29 八月 2023 17:14:54 +0800
Subject: [PATCH] fix&字段完善

---
 service/purchase/purchase.go |   31 ++++++++++++++++++++++++++-----
 1 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/service/purchase/purchase.go b/service/purchase/purchase.go
index bbef0f1..352395d 100644
--- a/service/purchase/purchase.go
+++ b/service/purchase/purchase.go
@@ -132,7 +132,7 @@
 func (slf *PurchaseService) GetPurchaseProductList(purchaseId uint) (list []*purchase.PurchaseProducts, err error) {
 	db := global.GVA_DB.Model(&purchase.PurchaseProducts{})
 	list = make([]*purchase.PurchaseProducts, 0)
-	err = db.Where("purchase_id = ?", purchaseId).Find(&list).Error
+	err = db.Where("purchase_id = ?", purchaseId).Preload("Product").Find(&list).Error
 	return list, err
 }
 
@@ -214,15 +214,36 @@
 }
 
 func (slf *PurchaseService) SavePurchaseType(list []*purchase.PurchaseType) (err error) {
+	ids := make([]uint, 0)
+	newRecords := make([]*purchase.PurchaseType, 0)
+	for _, item := range list {
+		if item.ID != 0 {
+			ids = append(ids, item.ID)
+		} else {
+			newRecords = append(newRecords, item)
+		}
+	}
 	err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
-		err = tx.Where("1 = ?", 1).Delete(&purchase.PurchaseType{}).Error
+		err = tx.Where("id not in ?", ids).Delete(&purchase.PurchaseType{}).Error
 		if err != nil {
 			return err
 		}
-		for _, item := range list {
-			item.ID = 0
+		if len(newRecords) > 0 {
+			err = tx.Create(newRecords).Error
+			if err != nil {
+				return err
+			}
 		}
-		return tx.Create(list).Error
+
+		for _, item := range list {
+			if item.ID != 0 {
+				err = tx.Save(item).Error
+				if err != nil {
+					return err
+				}
+			}
+		}
+		return nil
 	})
 	return err
 }

--
Gitblit v1.8.0