diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index b85493b58..2ae8d0dab 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -759,9 +759,30 @@ func filterSensitiveWord(name string) (result string) { } func buildUpdateSkusParam(storeSku *dao.StoreSkuSyncInfo, v *dao.StoreSkuSyncInfo, isCreate bool) (updateSkusParam *jdshopapi.UpdateSkusParam, err error) { + var ( + ggValueID int64 //规格的属性id + attrsPropSku []*jdshopapi.CreateSkuParamAttrs + skus []*jdshopapi.UpdateSkusParamSkus + multiPropSku []*jdshopapi.CreateSkuParamAttrs + specQuality string + ) updateSkusParam = &jdshopapi.UpdateSkusParam{ WareID: storeSku.JdsWareID, } + sku := &jdshopapi.UpdateSkusParamSkus{ + WareID: storeSku.JdsWareID, + JdPrice: jxutils.IntPrice2Standard(v.VendorPrice), + Type: "com.jd.pop.ware.ic.api.domain.sku", + Type2: "com.jd.pop.ware.ic.api.domain.Sku", + OuterID: utils.Int2Str(v.SkuID), + } + //库存设置 + if v.Status == model.SkuStatusNormal { + sku.StockNum = "9999" + } else { + sku.StockNum = "0" + } + //规格类别设置 attrIDs := make(map[string]int) attrs, err := api.JdShopAPI.FindAttrs(int(storeSku.VendorVendorCatID)) for _, v := range attrs { @@ -771,75 +792,6 @@ func buildUpdateSkusParam(storeSku *dao.StoreSkuSyncInfo, v *dao.StoreSkuSyncInf attrIDs[v.Name] = v.ID } } - var ( - ggValueID int64 //规格的属性id - attrsPropSku []*jdshopapi.CreateSkuParamAttrs - skus []*jdshopapi.UpdateSkusParamSkus - multiPropSku []*jdshopapi.CreateSkuParamAttrs - specQuality string - ) - valuesSku, maxNo, _ := api.JdShopAPI.FindValuesByAttrId(attrIDs["规格"]) - if v.SpecUnit == model.SpecUnitNames[1] || v.SpecUnit == model.SpecUnitNames[2] { - specQuality = strings.TrimRight(fmt.Sprintf("%.2f", float64(v.SpecQuality)), "0.") + v.SpecUnit - } else { - specQuality = utils.Float64ToStr(float64(v.SpecQuality)) + v.SpecUnit - } - if v.Comment != "" { - specQuality = v.Comment - } - for _, vv := range valuesSku { - if vv.Name == specQuality { - ggValueID = vv.ID - break - } - } - if isCreate { - if ggValueID == 0 { //说明没有建这个规格,要建上 - catID, _ := api.JdShopAPI.SaveVenderAttrValue(specQuality, attrIDs["规格"], int(storeSku.VendorVendorCatID), maxNo+1) - ggValueID = catID - } - } - attrSku := &jdshopapi.CreateSkuParamAttrs{ - AttrID: utils.Int2Str(attrIDs["规格"]), - AttrValues: []string{utils.Int64ToStr(ggValueID)}, - } - attrsPropSku = append(attrsPropSku, attrSku) - sku := &jdshopapi.UpdateSkusParamSkus{ - WareID: storeSku.JdsWareID, - JdPrice: jxutils.IntPrice2Standard(v.VendorPrice), - Type: "com.jd.pop.ware.ic.api.domain.sku", - Type2: "com.jd.pop.ware.ic.api.domain.Sku", - OuterID: utils.Int2Str(v.SkuID), - } - sku.SaleAttrs = attrsPropSku - if v.Status == model.SkuStatusNormal { - sku.StockNum = "9999" - } else { - sku.StockNum = "0" - } - if !isCreate { - vendorSku, err2 := api.JdShopAPI.FindSkuById(utils.Str2Int64(v.VendorSkuID)) - err = err2 - var attrValue string - if v.Comment != "" { - attrValue = v.Comment - } else { - attrValue = specQuality - } - err = api.JdShopAPI.UpdateWareSaleAttrvalueAlias(&jdshopapi.UpdateWareSaleAttrvalueAliasParam{ - WareID: v.JdsWareID, - Props: []*jdshopapi.CreateSkuParamAttrs2{ - &jdshopapi.CreateSkuParamAttrs2{ - AttrID: vendorSku.SaleAttrs[0].AttrID, - AttrValues: []string{vendorSku.SaleAttrs[0].AttrValues[0]}, - AttrValueAlias: []string{attrValue}, - Type: "com.jd.pop.ware.ic.api.domain.prop", - Type2: "com.jd.pop.ware.ic.api.domain.Prop", - }, - }, - }) - sku.SkuID = utils.Str2Int64(v.VendorSkuID) - } if attrIDs["类别"] != 0 { values2, _, err2 := api.JdShopAPI.FindValuesByAttrId(attrIDs["类别"]) err = err2 @@ -851,6 +803,62 @@ func buildUpdateSkusParam(storeSku *dao.StoreSkuSyncInfo, v *dao.StoreSkuSyncInf multiPropSku = append(multiPropSku, attrlb) } sku.MultiCateProps = multiPropSku + if v.SpecUnit == model.SpecUnitNames[1] || v.SpecUnit == model.SpecUnitNames[2] { + specQuality = strings.TrimRight(fmt.Sprintf("%.2f", float64(v.SpecQuality)), "0.") + v.SpecUnit + } else { + specQuality = utils.Float64ToStr(float64(v.SpecQuality)) + v.SpecUnit + } + valuesSku, maxNo, _ := api.JdShopAPI.FindValuesByAttrId(attrIDs["规格"]) + if isCreate { + for _, vv := range valuesSku { + if vv.Name == specQuality { + ggValueID = vv.ID + break + } + } + if ggValueID == 0 { //说明没有建这个规格,要建上 + catID, _ := api.JdShopAPI.SaveVenderAttrValue(specQuality, attrIDs["规格"], int(storeSku.VendorVendorCatID), maxNo+1) + ggValueID = catID + } + attrSku := &jdshopapi.CreateSkuParamAttrs{ + AttrID: utils.Int2Str(attrIDs["规格"]), + AttrValues: []string{utils.Int64ToStr(ggValueID)}, + } + attrsPropSku = append(attrsPropSku, attrSku) + sku.SaleAttrs = attrsPropSku + } else { + vendorSku, err2 := api.JdShopAPI.FindSkuById(utils.Str2Int64(v.VendorSkuID)) + err = err2 + vendorAttrValue := vendorSku.SaleAttrs[0].AttrValueAlias[0] + if v.Comment != "" { + if v.Comment != vendorAttrValue { + err = api.JdShopAPI.UpdateWareSaleAttrvalueAlias(&jdshopapi.UpdateWareSaleAttrvalueAliasParam{ + WareID: v.JdsWareID, + Props: []*jdshopapi.CreateSkuParamAttrs2{ + &jdshopapi.CreateSkuParamAttrs2{ + AttrID: vendorSku.SaleAttrs[0].AttrID, + AttrValues: []string{vendorSku.SaleAttrs[0].AttrValues[0]}, + AttrValueAlias: []string{v.Comment}, + Type: "com.jd.pop.ware.ic.api.domain.prop", + Type2: "com.jd.pop.ware.ic.api.domain.Prop", + }, + }, + }) + sku.SkuID = utils.Str2Int64(v.VendorSkuID) + } + } else { + if vendorAttrValue != specQuality { + catID, _ := api.JdShopAPI.SaveVenderAttrValue(specQuality, utils.Str2Int(vendorSku.SaleAttrs[0].AttrID), int(storeSku.VendorVendorCatID), maxNo+1) + attrSku := &jdshopapi.CreateSkuParamAttrs{ + AttrID: vendorSku.SaleAttrs[0].AttrID, + AttrValues: []string{utils.Int64ToStr(catID)}, + } + attrsPropSku = append(attrsPropSku, attrSku) + sku.SaleAttrs = attrsPropSku + err = api.JdShopAPI.DeleteSku(utils.Str2Int64(v.VendorSkuID)) + } + } + } skus = append(skus, sku) updateSkusParam.Skus = skus return updateSkusParam, err