From bbccf09d0208be8a2389b04e1fca9dcb2d101ded Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 31 Oct 2018 12:54:37 +0800 Subject: [PATCH] - refactor jd RefreshAllSkusID --- business/jxstore/cms/sync.go | 5 ++--- business/partner/purchase/jd/sku.go | 12 +++++++----- business/partner/purchase/jd/store.go | 8 ++++---- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 9b420095f..a6a2d9b8c 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -231,7 +231,7 @@ func (v *VendorSync) SyncStore(ctx *jxcontext.Context, db *dao.DaoDB, vendorID, func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuID int, isAsync bool, userName string) (hint string, err error) { globals.SugarLogger.Debugf("SyncSku, nameID:%d, skuID:%d, userName:%s", nameID, skuID, userName) - hint, err = v.LoopMultiStoresVendors(ctx, db, "SyncSku", isAsync, userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) { + return v.LoopMultiStoresVendors(ctx, db, "SyncSku", isAsync, userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) { multiStoresHandler := v.GetMultiStoreHandler(batchItemList[0].(int)) syncStatusFieldName := multiStoresHandler.GetFieldSyncStatusName() var skuList []*model.Sku @@ -245,7 +245,7 @@ func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuI err := dao.GetEntitiesByKV(db, &skuList, cond, true) if err == nil { // globals.SugarLogger.Debug(utils.Format4Output(skuList, false)) - task := tasksch.NewParallelTask("SyncSku", nil, userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) { + task := tasksch.NewParallelTask("SyncSku loop sku", nil, userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) { sku := batchItemList[0].(*model.Sku) syncStatus := jxutils.GetObjFieldByName(sku, syncStatusFieldName).(int8) if (skuID == -1 || skuID == sku.ID) && (syncStatus != 0) { @@ -270,7 +270,6 @@ func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuI } return nil, err }) - return "", err } func (v *VendorSync) SyncStoresCategory(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs []int, storeIDs []int, isAsync bool) (hint string, err error) { diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index f12c7ed0e..705f876d6 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -259,6 +259,7 @@ func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, parentTask ta db := dao.GetDB() var skuPairs []*jdapi.SkuIDPair + const stepCount = 2 rootTask := tasksch.NewSeqTask("jd RefreshAllSkusID", ctx.GetUserName(), func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { switch step { @@ -270,10 +271,10 @@ func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, parentTask ta `, utils.DefaultTimeValue) default: taskName := "RefreshAllSkusID update id" - if step == 1 { + if step != stepCount-1 { taskName = "RefreshAllSkusID update uuid" } - task1 := tasksch.NewParallelTask(taskName, tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx.GetUserName(), func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + task1 := tasksch.NewParallelTask(taskName, tasksch.NewParallelConfig().SetIsContinueWhenError(true).SetBatchSize(jdapi.MaxBatchSize4BatchUpdateOutSkuId), ctx.GetUserName(), func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { skuPairs := make([]*jdapi.SkuIDPair, len(batchItemList)) for k, v := range batchItemList { pair := v.(*jdapi.SkuIDPair) @@ -281,11 +282,12 @@ func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, parentTask ta SkuId: pair.SkuId, OutSkuId: pair.OutSkuId, } - if step == 1 { + if step != stepCount-1 { skuPairs[k].OutSkuId = utils.GetUUID() } } - if globals.EnableStoreWrite { + globals.SugarLogger.Debug(utils.Format4Output(skuPairs, false)) + if true { //globals.EnableStoreWrite { _, err = api.JdAPI.BatchUpdateOutSkuId(skuPairs) } return nil, err @@ -294,7 +296,7 @@ func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, parentTask ta _, err = task1.GetResult(0) } return nil, err - }, 3) + }, stepCount) ctx.SetTaskOrAddChild(rootTask, parentTask) rootTask.Run() if !isAsync { diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index 2dfb557f3..a5f28ab75 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -195,7 +195,7 @@ func (p *PurchaseHandler) GetAllStoresFromRemote() ([]*model.Store, error) { func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) { globals.SugarLogger.Debugf("jd RefreshAllStoresID") - + const stepCount = 3 var stores []*tJdStoreInfo db := dao.GetDB() rootTask := tasksch.NewSeqTask("jd RefreshAllStoresID", ctx.GetUserName(), func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { @@ -209,7 +209,7 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask `, utils.DefaultTimeValue, model.VendorIDJD, utils.DefaultTimeValue) default: taskName := "jd RefreshAllStoresID update outSystemId" - if step == 1 { + if step != stepCount-1 { taskName = "jd RefreshAllStoresID update to uuid" } task1 := tasksch.NewParallelTask(taskName, nil, ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { @@ -217,7 +217,7 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask storeParams := map[string]interface{}{ "outSystemId": utils.Int2Str(int(store.ID)), } - if step == 1 { + if step != stepCount-1 { storeParams["outSystemId"] = utils.GetUUID() } if true { //globals.EnableStoreWrite { @@ -229,7 +229,7 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask _, err = task1.GetResult(0) } return nil, err - }, 3) + }, stepCount) ctx.SetTaskOrAddChild(rootTask, parentTask) rootTask.Run()