size boyut
This commit is contained in:
parent
da8c13310b
commit
d4ff2a48b3
|
|
@ -1,16 +1,25 @@
|
||||||
package gorm_models
|
package gorm_models
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AttributeOption struct {
|
type AttributeOption struct {
|
||||||
ID uint `gorm:"primaryKey"`
|
ID uint `gorm:"primaryKey"`
|
||||||
AttributeID uint
|
AttributeID uint
|
||||||
AdminName string
|
AdminName string
|
||||||
SortOrder int `sql:"DEFAULT:NULL" gorm:"default:null"`
|
SortOrder int `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
|
Translations []AttributeOptionTranslation
|
||||||
|
}
|
||||||
|
|
||||||
|
type AttributeOptionTranslation struct {
|
||||||
|
ID uint `gorm:"primaryKey"`
|
||||||
|
AttributeOptionID uint
|
||||||
|
Locale string
|
||||||
|
Label string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Attribute struct {
|
type Attribute struct {
|
||||||
|
|
@ -61,11 +70,27 @@ func GetAttributes(db *gorm.DB) ([]Attribute, error) {
|
||||||
|
|
||||||
func GetAttributeOption(db *gorm.DB, attrbuteID uint, value string) AttributeOption {
|
func GetAttributeOption(db *gorm.DB, attrbuteID uint, value string) AttributeOption {
|
||||||
var option AttributeOption
|
var option AttributeOption
|
||||||
err := db.FirstOrCreate(&option, AttributeOption{AttributeID: attrbuteID, AdminName: value}).Error
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err.Error())
|
|
||||||
|
|
||||||
|
err := db.Where("attribute_id=? and admin_name", attrbuteID, value).First(&option).Error
|
||||||
|
|
||||||
|
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
option = AttributeOption{
|
||||||
|
AttributeID: attrbuteID,
|
||||||
|
AdminName: value,
|
||||||
|
SortOrder: 1000,
|
||||||
|
Translations: []AttributeOptionTranslation{
|
||||||
|
{Locale: "tm", Label: value},
|
||||||
|
{Locale: "ru", Label: value},
|
||||||
|
{Locale: "tr", Label: value},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := db.Create(&option).Error; err != nil {
|
||||||
|
log.Println(err.Error())
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return option
|
return option
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,13 +32,12 @@ type ProductRelation struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProductFlat struct {
|
type ProductFlat struct {
|
||||||
ID uint `gorm:"primary_key"`
|
ID uint `gorm:"primary_key"`
|
||||||
Sku string
|
Sku string
|
||||||
ProductNumber string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
ProductNumber string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
Name string `sql:"DEFAULT:''" gorm:"default:''"`
|
Name string `sql:"DEFAULT:''" gorm:"default:''"`
|
||||||
Weight float64 `sql:"DEFAULT:NULL" gorm:"type:decimal(12,4);default:null"`
|
Weight float64 `sql:"DEFAULT:NULL" gorm:"type:decimal(12,4);default:null"`
|
||||||
Status bool `sql:"DEFAULT:NULL" gorm:"default:null"`
|
Status bool `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
//Source string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
|
||||||
VisibleIndividually bool `sql:"DEFAULT:NULL" gorm:"default:null"`
|
VisibleIndividually bool `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
Price float64 `gorm:"type:decimal(12,4)"`
|
Price float64 `gorm:"type:decimal(12,4)"`
|
||||||
MinPrice float64 `gorm:"type:decimal(12,4)"`
|
MinPrice float64 `gorm:"type:decimal(12,4)"`
|
||||||
|
|
@ -60,6 +59,8 @@ type ProductFlat struct {
|
||||||
ColorLabel string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
ColorLabel string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
Size int `sql:"DEFAULT:NULL" gorm:"default:null"`
|
Size int `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
SizeLabel string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
SizeLabel string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
|
Boyut int `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
|
BoyutLabel string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
MetaTitle string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
MetaTitle string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
MetaKeywords string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
MetaKeywords string `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
BrandID uint `sql:"DEFAULT:NULL" gorm:"default:null"`
|
BrandID uint `sql:"DEFAULT:NULL" gorm:"default:null"`
|
||||||
|
|
|
||||||
|
|
@ -304,7 +304,14 @@ func (importer *Importer) importVariant(product models.Product) (*gm.Product, er
|
||||||
}
|
}
|
||||||
savePoint := "size" + strconv.Itoa(index)
|
savePoint := "size" + strconv.Itoa(index)
|
||||||
tx.SavePoint(savePoint)
|
tx.SavePoint(savePoint)
|
||||||
sizeOPtion := gm.GetAttributeOption(tx, importer.AttributesMap["size"].ID, variant.AttributeValue)
|
|
||||||
|
var sizeOPtion gm.AttributeOption
|
||||||
|
|
||||||
|
if variant.AttributeName == "Beden" {
|
||||||
|
sizeOPtion = gm.GetAttributeOption(tx, importer.AttributesMap["size"].ID, variant.AttributeValue)
|
||||||
|
} else {
|
||||||
|
sizeOPtion = gm.GetAttributeOption(tx, importer.AttributesMap["boyut"].ID, variant.AttributeValue)
|
||||||
|
}
|
||||||
|
|
||||||
sku := fmt.Sprintf("%s-%d", product.ProductNumber, variant.ItemNumber)
|
sku := fmt.Sprintf("%s-%d", product.ProductNumber, variant.ItemNumber)
|
||||||
variantProduct := productRepo.makeVariant(mainPorduct.ID, mainPorduct.AttributeFamilyID, sku)
|
variantProduct := productRepo.makeVariant(mainPorduct.ID, mainPorduct.AttributeFamilyID, sku)
|
||||||
|
|
@ -422,9 +429,45 @@ func (importer *Importer) updateVariant(product models.Product) (*gm.Product, er
|
||||||
}
|
}
|
||||||
|
|
||||||
if flat.Product.Type == "configurable" {
|
if flat.Product.Type == "configurable" {
|
||||||
|
//todo update variant prices
|
||||||
|
//todo create none existing variant
|
||||||
|
//todo update min max price
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
price := product.Price
|
||||||
|
|
||||||
|
if price.OriginalPrice.Value > price.DiscountedPrice.Value {
|
||||||
|
|
||||||
|
importer.baza.Model(&flat).Updates(map[string]interface{}{
|
||||||
|
"price": price.OriginalPrice.Value,
|
||||||
|
"special_price": price.DiscountedPrice.Value,
|
||||||
|
"min_price": price.DiscountedPrice.Value,
|
||||||
|
"max_price": price.OriginalPrice.Value,
|
||||||
|
})
|
||||||
|
|
||||||
|
importer.baza.Model(&gm.ProductAttributeValue{}).
|
||||||
|
Where("attribute_id = 11 and product_id = ?", flat.ProductID).
|
||||||
|
Update("float_value", price.OriginalPrice.Value)
|
||||||
|
|
||||||
|
importer.baza.Model(&gm.ProductAttributeValue{}).
|
||||||
|
Where("attribute_id = 13 and product_id = ?", flat.ProductID).
|
||||||
|
Update("float_value", price.DiscountedPrice.Value)
|
||||||
|
} else {
|
||||||
|
|
||||||
|
importer.baza.Model(&flat).Updates(map[string]interface{}{
|
||||||
|
"price": price.DiscountedPrice.Value,
|
||||||
|
"special_price": nil,
|
||||||
|
"min_price": price.DiscountedPrice.Value,
|
||||||
|
"max_price": price.DiscountedPrice.Value,
|
||||||
|
})
|
||||||
|
|
||||||
|
importer.baza.Model(&gm.ProductAttributeValue{}).
|
||||||
|
Where("attribute_id = 11 and product_id = ?", flat.ProductID).
|
||||||
|
Update("float_value", price.DiscountedPrice.Value)
|
||||||
|
|
||||||
|
importer.baza.Where("attribute_id = 13 and product_id = ?", flat.ProductID).
|
||||||
|
Delete(&gm.ProductAttributeValue{})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -198,12 +198,20 @@ func (pr *ProductRepo) makeVariantFlat(variant models.Variant, SizID, parentID,
|
||||||
ProductNumber: fmt.Sprintf("%d", variant.ItemNumber),
|
ProductNumber: fmt.Sprintf("%d", variant.ItemNumber),
|
||||||
Weight: pr.Weight,
|
Weight: pr.Weight,
|
||||||
FavoritesCount: uint(pr.Data.FavoriteCount),
|
FavoritesCount: uint(pr.Data.FavoriteCount),
|
||||||
SizeLabel: variant.AttributeValue,
|
//SizeLabel: variant.AttributeValue,
|
||||||
Size: int(SizID),
|
//Size: int(SizID),
|
||||||
MaxPrice: maxPRice,
|
MaxPrice: maxPRice,
|
||||||
MinPrice: variant.Price.DiscountedPrice.Value,
|
MinPrice: variant.Price.DiscountedPrice.Value,
|
||||||
Price: maxPRice,
|
Price: maxPRice,
|
||||||
ProductID: productID,
|
ProductID: productID,
|
||||||
|
}
|
||||||
|
|
||||||
|
if variant.AttributeName == "Beden" {
|
||||||
|
flat.Size = int(SizID)
|
||||||
|
flat.SizeLabel = variant.AttributeValue
|
||||||
|
} else {
|
||||||
|
flat.Boyut = int(SizID)
|
||||||
|
flat.BoyutLabel = variant.AttributeValue
|
||||||
}
|
}
|
||||||
|
|
||||||
if flat.MaxPrice > flat.MinPrice {
|
if flat.MaxPrice > flat.MinPrice {
|
||||||
|
|
@ -253,9 +261,14 @@ func (pr *ProductRepo) getVariantAttributes(AttributesMap map[string]gm.Attribut
|
||||||
{AttributeID: AttributesMap["name"].ID, TextValue: pr.Data.Name, Channel: "default", Locale: "tm"},
|
{AttributeID: AttributesMap["name"].ID, TextValue: pr.Data.Name, Channel: "default", Locale: "tm"},
|
||||||
{AttributeID: AttributesMap["weight"].ID, TextValue: pr.Data.Weight},
|
{AttributeID: AttributesMap["weight"].ID, TextValue: pr.Data.Weight},
|
||||||
{AttributeID: AttributesMap["status"].ID, BooleanValue: true},
|
{AttributeID: AttributesMap["status"].ID, BooleanValue: true},
|
||||||
{AttributeID: AttributesMap["size"].ID, IntegerValue: int(SizID)},
|
//{AttributeID: AttributesMap["size"].ID, IntegerValue: int(SizID)},
|
||||||
{AttributeID: AttributesMap["price"].ID, FloatValue: price},
|
{AttributeID: AttributesMap["price"].ID, FloatValue: price},
|
||||||
}
|
}
|
||||||
|
if product.AttributeName == "Beden" {
|
||||||
|
attributes = append(attributes, gm.ProductAttributeValue{AttributeID: AttributesMap["size"].ID, IntegerValue: int(SizID)})
|
||||||
|
} else {
|
||||||
|
attributes = append(attributes, gm.ProductAttributeValue{AttributeID: AttributesMap["boyut"].ID, IntegerValue: int(SizID)})
|
||||||
|
}
|
||||||
|
|
||||||
if pr.Data.Color != "" {
|
if pr.Data.Color != "" {
|
||||||
attributes = append(attributes, gm.ProductAttributeValue{AttributeID: AttributesMap["color"].ID, IntegerValue: int(pr.ColorOption.ID)})
|
attributes = append(attributes, gm.ProductAttributeValue{AttributeID: AttributesMap["color"].ID, IntegerValue: int(pr.ColorOption.ID)})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue