- 重构同步商品时,商品或分类不存在或已存在的错误处理

This commit is contained in:
gazebo
2019-07-11 21:54:51 +08:00
parent 36685f7a58
commit b6ce75191b
3 changed files with 32 additions and 41 deletions

View File

@@ -293,8 +293,9 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
if storeSku.NameID == 0 || storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 {
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask == 0 && !jxutils.IsEmptyID(storeSku.EbaiID) {
if globals.EnableEbaiStoreWrite {
err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID))
err = ignoreNoSkuErr(err)
if err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID)); ebaiapi.IsErrSkuNotExist(err) {
err = nil
}
}
}
if err == nil {
@@ -319,10 +320,11 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
}
if err == nil {
updateFields = append(updateFields, model.FieldEbaiID)
} else if storeSku.EbaiID = api.EbaiAPI.GetEbaiSkuIDFromError(strStoreID, storeSku.SkuID, err); storeSku.EbaiID > 0 {
// globals.SugarLogger.Debugf("SyncStoreSkus test storeSku.EbaiID:%d, err:%v", storeSku.EbaiID, err)
updateFields = append(updateFields, model.FieldEbaiID)
err = skuUpdate(strStoreID, storeSku)
} else if ebaiapi.IsErrSkuExist(err) {
if storeSku.EbaiID = api.EbaiAPI.GetEbaiSkuIDFromCustomID(strStoreID, utils.Int2Str(storeSku.SkuID)); storeSku.EbaiID > 0 {
updateFields = append(updateFields, model.FieldEbaiID)
err = skuUpdate(strStoreID, storeSku)
}
}
} else {
err = fmt.Errorf("SKUANME%d:%s没有图片同步失败", storeSku.NameID, storeSku.Name)
@@ -364,22 +366,6 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
return rootTask.ID, err
}
func ignoreNoSkuErr(err error) error {
if err != nil {
if codeErr, ok := err.(*utils.ErrorWithCode); ok {
if codeErr.IntCode() == 1 {
for _, v := range []string{"SKU不存在或者已经被删除", "sku_id与shop_id不匹配"} {
if strings.Index(codeErr.ErrMsg(), v) > 0 {
err = nil
break
}
}
}
}
}
return err
}
func skuUpdate(strStoreID string, storeSku *tStoreSkuFullInfo) (err error) {
if globals.EnableEbaiStoreWrite {
if _, err = api.EbaiAPI.SkuUpdate(strStoreID, storeSku.EbaiID, genSkuParamsFromStoreSkuInfo(storeSku)); err != nil {
@@ -645,12 +631,20 @@ func (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask t
if catInfo.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除
if catInfo.EbaiSyncStatus&model.SyncFlagNewMask == 0 && catInfo.EbaiID != 0 {
if globals.EnableEbaiStoreWrite {
err = api.EbaiAPI.ShopCategoryDelete(strStoreID, catInfo.EbaiID)
if err = api.EbaiAPI.ShopCategoryDelete(strStoreID, catInfo.EbaiID); ebaiapi.IsErrCategoryNotExist(err) {
err = nil
}
}
}
} else if catInfo.EbaiSyncStatus&model.SyncFlagNewMask != 0 { // 新增
if globals.EnableEbaiStoreWrite {
catInfo.EbaiID, err = api.EbaiAPI.ShopCategoryCreate(strStoreID, catInfo.ParentEbaiID, formatName(catInfo.Name), jxCatSeq2Ebai(catInfo.Seq))
catName := formatName(catInfo.Name)
catInfo.EbaiID, err = api.EbaiAPI.ShopCategoryCreate(strStoreID, catInfo.ParentEbaiID, catName, jxCatSeq2Ebai(catInfo.Seq))
if ebaiapi.IsErrCategoryExist(err) {
if catInfo.EbaiID = api.EbaiAPI.GetEbaiCatIDFromName(strStoreID, catName); catInfo.EbaiID > 0 {
err = nil
}
}
} else {
catInfo.EbaiID = jxutils.GenFakeID()
}