diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index da81c1573..4e80288db 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -370,40 +370,32 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt // SPU的SKU NAME不需要规格信息 skuName = jxutils.ComposeSkuName(skuExt.Prefix, skuExt.Name, sku.Comment, "", 0, "", 0) skuNameJdID := skuExt.JdID - // 这样写的原因是在sync里面已经把数据全部取出来了,在这个函数里对于数据库的改动不能体现,打个补丁 globals.SugarLogger.Debugf("syncSkuNameAsSpu1 sku.id=%d, bareSkuName:%s, skuName:%s, skuNameJdID:%d", sku.ID, skuExt.Name, skuName, skuNameJdID) spuAddParams, skuAddParams := splitAddParams(addParams) - // if jxutils.IsFakeID(skuNameJdID) { - // tmpSkuName := &model.SkuName{} - // tmpSkuName.ID = skuExt.ID - // if err = dao.GetEntity(db, tmpSkuName); err != nil { - // return "", err + // if !jxutils.IsFakeID(skuNameJdID) { + // if sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU + // err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted)) + // } else if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU + // if globals.EnableStoreWrite { + // vendorSkuID2, err2 := api.JdAPI.AppendSku(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, jxStatus2jdStatus(sku.Status), true, composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit), skuAddParams) + // if err = err2; err == nil { + // vendorSkuID = utils.Int64ToStr(vendorSkuID2) + // } + // } + // } else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 { + // params := make(map[string]interface{}) + // params[jdapi.KeySkuName] = skuName + // params[jdapi.KeyImages] = []string{skuExt.Img} + // params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status) + // params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight) + // params[jdapi.KeySkuPrice] = price + // if globals.EnableStoreWrite { + // err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams)) + // } // } - // globals.SugarLogger.Debugf("syncSkuNameAsSpu2 sku.id=%d, skuName:%s, tmpSkuName:%s", sku.ID, skuExt.Name, utils.Format4Output(tmpSkuName, false)) - // skuExt.JdID = tmpSkuName.JdID - // skuNameJdID = skuExt.JdID // } - if !jxutils.IsFakeID(skuNameJdID) { - if sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU - err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted)) - } else if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU - if globals.EnableStoreWrite { - vendorSkuID2, err2 := api.JdAPI.AppendSku(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, jxStatus2jdStatus(sku.Status), true, composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit), skuAddParams) - if err = err2; err == nil { - vendorSkuID = utils.Int64ToStr(vendorSkuID2) - } - } - } else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 { - params := make(map[string]interface{}) - params[jdapi.KeySkuName] = skuName - params[jdapi.KeyImages] = []string{skuExt.Img} - params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status) - params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight) - params[jdapi.KeySkuPrice] = price - if globals.EnableStoreWrite { - err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams)) - } - } + if !jxutils.IsFakeID(skuNameJdID) && sku.JdSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除SKU + err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.Params2Map(jdapi.KeyFixedStatus, jdapi.SkuFixedStatusDeleted)) } if err == nil { if skuExt.JdSyncStatus&model.SyncFlagDeletedMask != 0 { @@ -442,6 +434,8 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt vendorSpuID, skuPairs, err2 := api.JdAPI.AddSpu(utils.Int2Str(skuExt.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, spuName, []string{skuExt.Img}, jxStatus2jdStatus(skuExt.Status), spuAddParams, skus) if err = err2; err == nil { skuExt.JdID = vendorSpuID + // skuNameJdID = skuExt.JdID // 这个是故意去掉的,这样之后的首次SKU修改操作就会被忽略,下一条语句也就可以不用了 + // sku.JdSyncStatus &= ^model.SyncFlagNewMask vendorSkuID = utils.Int64ToStr(skuPairs[0].SkuId) updateFields = append(updateFields, model.FieldJdID) } @@ -468,6 +462,29 @@ func (p *PurchaseHandler) syncSkuNameAsSpu(db *dao.DaoDB, sku *model.Sku, skuExt } } } + if err == nil && !jxutils.IsFakeID(skuNameJdID) { + if sku.JdSyncStatus&model.SyncFlagNewMask != 0 { // 非首次新增SKU + if globals.EnableStoreWrite { + vendorSkuID2, err2 := api.JdAPI.AppendSku(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), skuName, price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, jxStatus2jdStatus(sku.Status), true, composeSkuSpec(sku.SpecQuality, sku.SpecUnit, skuExt.Unit), skuAddParams) + if err = err2; err == nil { + vendorSkuID = utils.Int64ToStr(vendorSkuID2) + } + } + } else if sku.JdSyncStatus&model.SyncFlagModifiedMask != 0 { + params := make(map[string]interface{}) + params[jdapi.KeySkuName] = skuName + params[jdapi.KeyImages] = []string{skuExt.Img} + params[jdapi.KeyFixedStatus] = jxStatus2jdStatus(sku.Status) + params[jdapi.KeyWeight] = jxutils.IntWeight2Float(sku.Weight) + params[jdapi.KeySkuPrice] = price + if globals.EnableStoreWrite { + err = api.JdAPI.UpdateSkuBaseInfo(utils.Int2Str(skuExt.ID), utils.Int2Str(sku.ID), utils.MergeMaps(params, skuAddParams)) + } + } + if err == nil { + sku.JdSyncStatus = 0 + } + } return vendorSkuID, err }