From b39798e940ab44d0bdbe0d44eabcc682ca26b4d8 Mon Sep 17 00:00:00 2001 From: gazebo Date: Sun, 21 Jul 2019 22:18:25 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8Debai.syncStoreSkus?= =?UTF-8?q?=E4=B8=AD=E6=B2=A1=E6=9C=89=E8=B0=83=E7=94=A8SyncStoreCategory?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/ebai/store_sku.go | 85 +++++++++++---------- 1 file changed, 44 insertions(+), 41 deletions(-) diff --git a/business/partner/purchase/ebai/store_sku.go b/business/partner/purchase/ebai/store_sku.go index 1030b4cb8..3443ab8b0 100644 --- a/business/partner/purchase/ebai/store_sku.go +++ b/business/partner/purchase/ebai/store_sku.go @@ -194,11 +194,6 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks if err != nil { return "", err } - if len(skuIDs) == 0 { - if _, err = p.SyncStoreCategory(ctx, parentTask, storeID, false); err != nil { - return "", err - } - } return p.syncStoreSkus(ctx, parentTask, storeDetail, skuIDs, isAsync, isContinueWhenError) } @@ -215,6 +210,9 @@ func (p *PurchaseHandler) syncStoreSkus(ctx *jxcontext.Context, parentTask tasks func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { if step == 0 { db := dao.GetDB() + if _, err = p.SyncStoreCategory(ctx, parentTask, storeID, false); err != nil { + return nil, err + } for i := 0; i < 3; i++ { if storeSkuInfoList, err = p.getDirtyStoreSkus(db, storeID, skuIDs); err != nil { return nil, err @@ -225,6 +223,9 @@ func (p *PurchaseHandler) syncStoreSkus(ctx *jxcontext.Context, parentTask tasks if num == 0 { break } + if _, err = p.SyncStoreCategory(ctx, parentTask, storeID, false); err != nil { + return nil, err + } } if num != 0 { globals.SugarLogger.Infof("SyncStoreSkus 不能创建商品所需的类别, storeID:%d, skuIDs:%v, isContinueWhenError:%t, userName:%s", storeID, skuIDs, isContinueWhenError, userName) @@ -480,49 +481,51 @@ func (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask t utils.DefaultTimeValue, } if err = dao.GetRows(db, &catList, sql, sqlParams...); err == nil { - strStoreID := utils.Int2Str(storeID) - task := tasksch.NewParallelTask("SyncStoreCategory", nil, ctx, - func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - updateFields := []string{model.FieldEbaiSyncStatus} - catInfo := batchItemList[0].(*tStoreCatInfo) - // globals.SugarLogger.Debug(utils.Format4Output(catInfo, false)) - if catInfo.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除 - if catInfo.EbaiSyncStatus&model.SyncFlagNewMask == 0 && catInfo.EbaiID != 0 { + if len(catList) > 0 { + strStoreID := utils.Int2Str(storeID) + task := tasksch.NewParallelTask("SyncStoreCategory", nil, ctx, + func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + updateFields := []string{model.FieldEbaiSyncStatus} + catInfo := batchItemList[0].(*tStoreCatInfo) + // globals.SugarLogger.Debug(utils.Format4Output(catInfo, false)) + if catInfo.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除 + if catInfo.EbaiSyncStatus&model.SyncFlagNewMask == 0 && catInfo.EbaiID != 0 { + if globals.EnableEbaiStoreWrite { + if err = api.EbaiAPI.ShopCategoryDelete(strStoreID, catInfo.EbaiID); ebaiapi.IsErrCategoryNotExist(err) { + err = nil + } + } + } + } else if catInfo.EbaiSyncStatus&model.SyncFlagNewMask != 0 { // 新增 if globals.EnableEbaiStoreWrite { - if err = api.EbaiAPI.ShopCategoryDelete(strStoreID, catInfo.EbaiID); ebaiapi.IsErrCategoryNotExist(err) { - err = nil + 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() } - } - } else if catInfo.EbaiSyncStatus&model.SyncFlagNewMask != 0 { // 新增 - if globals.EnableEbaiStoreWrite { - 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 - } + if err == nil { + updateFields = append(updateFields, model.FieldEbaiID) + } + } else if catInfo.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改 + if globals.EnableEbaiStoreWrite { + err = api.EbaiAPI.ShopCategoryUpdate(strStoreID, catInfo.EbaiID, formatName(catInfo.Name), jxCatSeq2Ebai(catInfo.Seq)) } - } else { - catInfo.EbaiID = jxutils.GenFakeID() } if err == nil { - updateFields = append(updateFields, model.FieldEbaiID) + db2 := dao.GetDB() + catInfo.EbaiSyncStatus = 0 + _, err = dao.UpdateEntity(db2, &catInfo.StoreSkuCategoryMap, updateFields...) } - } else if catInfo.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改 - if globals.EnableEbaiStoreWrite { - err = api.EbaiAPI.ShopCategoryUpdate(strStoreID, catInfo.EbaiID, formatName(catInfo.Name), jxCatSeq2Ebai(catInfo.Seq)) - } - } - if err == nil { - db2 := dao.GetDB() - catInfo.EbaiSyncStatus = 0 - _, err = dao.UpdateEntity(db2, &catInfo.StoreSkuCategoryMap, updateFields...) - } - return nil, err - }, catList) - rootTask.AddChild(task).Run() - _, err = task.GetResult(0) + return nil, err + }, catList) + rootTask.AddChild(task).Run() + _, err = task.GetResult(0) + } } return nil, err }, 2)