From ae1b07994f7785196d1d3ba1d53215bbded2dbc0 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 18 八月 2023 20:07:29 +0800
Subject: [PATCH] fix

---
 service/products.go |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/service/products.go b/service/products.go
index e8d46e5..249cc9c 100644
--- a/service/products.go
+++ b/service/products.go
@@ -28,6 +28,9 @@
 	for _, product := range products {
 		if productIdMap[product.Id] == nil && productNumberMap[product.Number] == nil {
 			newProducts = append(newProducts, product)
+		} else if productIdMap[product.Id] != nil && slf.CheckProductChanged(productIdMap[product.Id], product) || productNumberMap[product.Number] != nil && slf.CheckProductChanged(productNumberMap[product.Number], product) {
+			removedProducts = append(removedProducts, product)
+			newProducts = append(newProducts, product)
 		}
 		productNumberMap2[product.Number] = product
 	}
@@ -39,6 +42,13 @@
 	return
 }
 
+func (slf ProductsService) CheckProductChanged(originProduct, newProduct *model.Product) bool {
+	return originProduct.Number != newProduct.Number ||
+		!originProduct.Amount.Equal(newProduct.Amount) ||
+		!originProduct.Price.Equal(newProduct.Price) ||
+		!originProduct.Total.Equal(newProduct.Total)
+}
+
 func (slf ProductsService) getMappedProducts(sourceProducts []*model.Product) (map[uint]*model.Product, map[string]*model.Product) {
 	productIdMap := make(map[uint]*model.Product, len(sourceProducts))
 	productNumberMap := make(map[string]*model.Product, len(sourceProducts))

--
Gitblit v1.8.0