From 247ad164403f9abf21e0c14e5157651573f86221 Mon Sep 17 00:00:00 2001 From: merdan Date: Fri, 9 Sep 2022 14:43:25 +0500 Subject: [PATCH] link parse fx4 --- controllers/ImportController.go | 60 +++++++++++++++++++++++++++++++++ controllers/ParseController.go | 19 ++++++++++- 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/controllers/ImportController.go b/controllers/ImportController.go index ecf1685..a383846 100644 --- a/controllers/ImportController.go +++ b/controllers/ImportController.go @@ -735,6 +735,66 @@ func prepearAttributesWithFlat(data *models.Product) ([]gm.ProductAttributeValue return productAttributeValues, flat } +func UpdateProduct(product models.Product, db *gorm.DB, productFlat gm.ProductFlat) error { + + productFlat.Status = true + + if len(product.ColorVariants) == 0 && len(product.SizeVariants) == 0 { + + if product.Price.OriginalPrice.Value > product.Price.DiscountedPrice.Value { + //productAttributeValues = append(productAttributeValues, []gm.ProductAttributeValue{ + // {AttributeID: attributesMap["price"].ID, FloatValue: data.Price.OriginalPrice.Value}, + // {AttributeID: attributesMap["special_price"].ID, FloatValue: data.Price.DiscountedPrice.Value}, + //}...) + if productFlat.Price != product.Price.OriginalPrice.Value { + productFlat.Price = product.Price.OriginalPrice.Value + productFlat.MaxPrice = product.Price.OriginalPrice.Value + //db.Model(&User{}).Where("active = ?", true).Update("name", "hello") + err := db.Model(gm.ProductAttributeValue{}). + Where("attribute_id = ? AND product_id = ?", 11, productFlat.ProductID). + Update("float_value", product.Price.OriginalPrice.Value).Error + if err != nil { + return err + } + } + + if productFlat.SpecialPrice != product.Price.DiscountedPrice.Value { + + productFlat.SpecialPrice = product.Price.DiscountedPrice.Value + productFlat.MinPrice = product.Price.DiscountedPrice.Value + err := db.Model(gm.ProductAttributeValue{}). + Where("attribute_id = ? AND product_id = ?", 13, productFlat.ProductID). + Update("float_value", product.Price.OriginalPrice.Value).Error + + if err != nil { + return err + } + } + + } else { + if productFlat.Price != product.Price.OriginalPrice.Value { + productFlat.Price = product.Price.OriginalPrice.Value + productFlat.MaxPrice = product.Price.OriginalPrice.Value + productFlat.MinPrice = product.Price.OriginalPrice.Value + + err := db.Model(gm.ProductAttributeValue{}). + Where("attribute_id = ? AND product_id = ?", 11, productFlat.ProductID). + Update("float_value", product.Price.OriginalPrice.Value).Error + + if err != nil { + return err + } + } + } + } else { + + } + + errFlat := baza.Omit("Product", "ParentID", "CreatedAt").Save(&productFlat).Error + + return errFlat +} + //func productAttributesAndFlat(data *models.Product) ([]gm.ProductAttributeValue,gm.ProductFlat){ // // var description string diff --git a/controllers/ParseController.go b/controllers/ParseController.go index 49b6e88..9cf64d9 100644 --- a/controllers/ParseController.go +++ b/controllers/ParseController.go @@ -1,6 +1,7 @@ package controller import ( + gm "db_service/gorm_models" helper "db_service/pkg" "db_service/repositories" "encoding/json" @@ -48,7 +49,23 @@ func ParseLink(w http.ResponseWriter, route *http.Request) { return } - err = ImportProduct(jsonProduct, baza) + var productFlat gm.ProductFlat + + err = baza.Preload("Variants"). + //Preload("Product"). + //Preload("Proudct.AttributeValues","attribute_id in(11,13)"). + First(&productFlat, "sku = ?", jsonProduct.ProductGroupID).Error + + if err != nil { + helper.Error(err) + return + } + + if productFlat.Sku == "" { + err = ImportProduct(jsonProduct, baza) + } else { + err = UpdateProduct(jsonProduct, baza, productFlat) + } if err != nil { helper.Error(err)