| | |
| | | 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 |
| | | } |
| | |
| | | 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)) |