diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index da3aa113e..1e8a31b88 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -163,7 +163,8 @@ func FullSyncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo switch step { case 0: if singleStoreHandler != nil { - _, err = ClearRemoteStoreStuffAndSetNew(ctx, task, vendorID, storeID, vendorStoreID, false, isContinueWhenError) + // _, err = ClearRemoteStoreStuffAndSetNew(ctx, task, vendorID, storeID, vendorStoreID, false, isContinueWhenError) + _, err = amendAndPruneStoreStuff(ctx, parentTask, vendorID, storeID, vendorStoreID, false, isContinueWhenError, AmendPruneAll, true) } else { _, err = dao.SetStoreSkuSyncStatus(dao.GetDB(), vendorID, []int{storeID}, nil, model.SyncFlagStoreSkuOnlyMask) } @@ -599,7 +600,7 @@ func amendAndPruneStoreStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, v var sku2Delete []*partner.StoreSkuInfo var cat2Delete []*partner.BareCategoryInfo - task := tasksch.NewParallelTask(fmt.Sprintf("修补平台:%s上的门店商品与分类", model.VendorChineseNames[vendorID]), + task := tasksch.NewParallelTask(fmt.Sprintf("修补门店:%d,平台:%s上的商品与商家分类", storeID, model.VendorChineseNames[vendorID]), tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { step := batchItemList[0].(int) @@ -721,10 +722,11 @@ func amendAndPruneStoreStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, v return nil, err }, []int{0, 1, 2, 3}) tasksch.HandleTask(task, parentTask, true).Run() - if isAsync { - hint = task.GetID() - } else { + if !isAsync { _, err = task.GetResult(0) + hint = "1" + } else { + hint = task.ID } return hint, err } @@ -743,35 +745,30 @@ func ClearRemoteStoreStuffAndSetNew(ctx *jxcontext.Context, parentTask tasksch.I } db := dao.GetDB() - var errDeleteSku error - rootTask := tasksch.NewSeqTask(fmt.Sprintf("ClearRemoteStoreStuffAndSetNew:%s", model.VendorChineseNames[vendorID]), ctx, - func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + task := tasksch.NewParallelTask(fmt.Sprintf("删除门店:%d,平台:%s上的商品与商家分类", storeID, model.VendorChineseNames[vendorID]), + tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + step := batchItemList[0].(int) switch step { case 0: - err = handler.DeleteStoreAllSkus(ctx, rootTask, storeID, vendorStoreID, isContinueWhenError) - errDeleteSku = err - // 强制忽略删除SKU错误 - if isContinueWhenError { - err = nil - } - if err == nil { - _, err = dao.SetStoreSkuSyncStatus(db, vendorID, []int{storeID}, nil, model.SyncFlagNewMask) - } + err = handler.DeleteStoreAllSkus(ctx, task, storeID, vendorStoreID, isContinueWhenError) case 1: - if err = handler.DeleteStoreAllCategories(ctx, rootTask, storeID, vendorStoreID, isContinueWhenError); err == nil { - _, err = dao.SetStoreCategorySyncStatus(db, vendorID, []int{storeID}, nil, model.SyncFlagNewMask) - } + _, err = dao.SetStoreSkuSyncStatus(db, vendorID, []int{storeID}, nil, model.SyncFlagNewMask) + case 2: + err = handler.DeleteStoreAllCategories(ctx, task, storeID, vendorStoreID, isContinueWhenError) + case 3: + _, err = dao.SetStoreCategorySyncStatus(db, vendorID, []int{storeID}, nil, model.SyncFlagNewMask) } return nil, err - }, 2) - tasksch.AddChild(parentTask, rootTask).Run() + }, []int{0, 1, 2, 3}) + tasksch.HandleTask(task, parentTask, true).Run() if !isAsync { - _, err = rootTask.GetResult(0) + _, err = task.GetResult(0) + hint = "1" + } else { + hint = task.ID } - if err == nil { - err = errDeleteSku - } - return rootTask.ID, err + return hint, err } func GetSensitiveWord(singleStoreHandler partner.ISingleStoreStoreSkuHandler, str string) string {