From 7a3a9a739392d048655efac6a28592410a8809c2 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期五, 17 十一月 2023 09:57:29 +0800
Subject: [PATCH] 在库产品类型修改

---
 controllers/product_controller.go |   16 ++++++++++++++++
 models/location_product_amount.go |   31 +++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/controllers/product_controller.go b/controllers/product_controller.go
index 96f9306..3a40e59 100644
--- a/controllers/product_controller.go
+++ b/controllers/product_controller.go
@@ -214,6 +214,22 @@
 		return
 	}
 
+	//鏇存柊鍦ㄥ簱鐨勪骇鍝佺被鍨�
+	if params.CategoryId > 0 {
+		find, _ := models.NewLocationProductAmountSearch().SetProductId(params.ID).Find()
+		if len(find) > 0 {
+			var ids []int
+			for _, f := range find {
+				if f.ProductCategoryID != params.CategoryId {
+					ids = append(ids, f.Id)
+				}
+			}
+			m := make(map[string]interface{})
+			m["productCategoryId"] = params.CategoryId
+			_ = models.NewLocationProductAmountSearch().SetIds(ids).UpdateByMap(m)
+		}
+	}
+
 	materialAttachmentList := []*models.MaterialAttachment{}
 	for _, v := range params.AttachmentIDs {
 		ma := &models.MaterialAttachment{MaterialID: params.ID, AttachmentID: v}
diff --git a/models/location_product_amount.go b/models/location_product_amount.go
index 6f3f767..4f1af2b 100644
--- a/models/location_product_amount.go
+++ b/models/location_product_amount.go
@@ -35,6 +35,7 @@
 		//LocationProductIds []int
 		LocationIds []int
 		ProductIds  []string
+		Ids         []int
 	}
 
 	LocationProductAmountWithOperation struct {
@@ -80,6 +81,11 @@
 
 func (slf *LocationProductAmountSearch) SetID(id int) *LocationProductAmountSearch {
 	slf.Id = id
+	return slf
+}
+
+func (slf *LocationProductAmountSearch) SetIds(ids []int) *LocationProductAmountSearch {
+	slf.Ids = ids
 	return slf
 }
 
@@ -151,6 +157,10 @@
 
 	if slf.ProductId != "" {
 		db = db.Where("product_id=?", slf.ProductId)
+	}
+
+	if len(slf.Ids) > 0 {
+		db = db.Where("id in (?)", slf.Ids)
 	}
 
 	return db
@@ -247,3 +257,24 @@
 
 	return record, db.First(&record)
 }
+
+func (slf *LocationProductAmountSearch) Count() (int64, error) {
+	var (
+		total int64
+		db    = slf.build()
+	)
+	err := db.Count(&total).Error
+	return total, err
+}
+
+func (slf *LocationProductAmountSearch) UpdateByMap(upMap map[string]interface{}) error {
+	var (
+		db = slf.build()
+	)
+
+	if err := db.Updates(upMap).Error; err != nil {
+		return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
+	}
+
+	return nil
+}

--
Gitblit v1.8.0