From aa0b574a35be9392e6d358783ed9e700d4457c6d Mon Sep 17 00:00:00 2001 From: gazebo Date: Tue, 23 Oct 2018 22:11:28 +0800 Subject: [PATCH] - ebai.RefreshAllStoresID --- business/partner/purchase/ebai/store.go | 49 ++++++++++++++++++++++++- business/partner/purchase/jd/sku.go | 30 +++++---------- business/partner/purchase/jd/store.go | 30 ++++++--------- 3 files changed, 70 insertions(+), 39 deletions(-) diff --git a/business/partner/purchase/ebai/store.go b/business/partner/purchase/ebai/store.go index 6c1f712ac..d86e78516 100644 --- a/business/partner/purchase/ebai/store.go +++ b/business/partner/purchase/ebai/store.go @@ -10,6 +10,7 @@ import ( "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" @@ -181,7 +182,53 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin } func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, isAsync bool) (hint string, err error) { - return hint, err + globals.SugarLogger.Debugf("ebai RefreshAllStoresID") + const batchSize = 50 + const stepCount = 3 + var stores []*tEbaiStoreInfo + db := dao.GetDB() + rootTask := tasksch.NewSeqTask("ebai RefreshAllStoresID", ctx.GetUserName(), func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + switch step { + case 0: + err = dao.GetRows(db, &stores, ` + SELECT t1.*, t2.vendor_store_id + FROM store t1 + JOIN store_map t2 ON t1.id = t2.store_id AND t2.deleted_at = ? AND t2.vendor_id = ? + WHERE t1.deleted_at = ? + `, utils.DefaultTimeValue, model.VendorIDEBAI, utils.DefaultTimeValue) + default: + taskName := "ebai RefreshAllStoresID update to custom id" + if step != stepCount-1 { + taskName = "ebai RefreshAllStoresID update to uuid" + } + task1 := tasksch.NewParallelTask(taskName, tasksch.NewParallelConfig().SetBatchSize(batchSize), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + baiduShopIDs := make([]string, len(batchItemList)) + shopIDs := make([]string, len(batchItemList)) + for k, v := range batchItemList { + store := v.(*tEbaiStoreInfo) + baiduShopIDs[k] = store.VendorStoreID + shopIDs[k] = utils.Int2Str(store.ID) + if step != stepCount-1 { + shopIDs[k] = utils.GetUUID() + } + } + if globals.EnableStoreWrite { + err = api.EbaiAPI.ShopIDBatchUpdate(baiduShopIDs, shopIDs) + } + return nil, err + }, stores) + task.AddChild(task1).Run() + _, err = task1.GetResult(0) + } + return nil, err + }, stepCount) + + ctx.SetTaskOrAddChild(rootTask) + rootTask.Run() + if !isAsync { + _, err = rootTask.GetResult(0) + } + return rootTask.ID, err } func EbaiDeliveryType2Jx(deliveryType string) int8 { diff --git a/business/partner/purchase/jd/sku.go b/business/partner/purchase/jd/sku.go index ca943cb48..8f794b885 100644 --- a/business/partner/purchase/jd/sku.go +++ b/business/partner/purchase/jd/sku.go @@ -268,14 +268,21 @@ func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, isAsync bool) FROM sku t1 WHERE t1.deleted_at = ? `, utils.DefaultTimeValue) - case 1: - task1 := tasksch.NewParallelTask("RefreshAllSkusID update uuid", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx.GetUserName(), func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + default: + taskName := "RefreshAllSkusID update id" + if step == 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) { skuPairs := make([]*jdapi.SkuIDPair, len(batchItemList)) for k, v := range batchItemList { pair := v.(*jdapi.SkuIDPair) skuPairs[k] = &jdapi.SkuIDPair{ SkuId: pair.SkuId, - OutSkuId: utils.GetUUID(), + OutSkuId: pair.OutSkuId, + } + if step == 1 { + skuPairs[k].OutSkuId = utils.GetUUID() } } if globals.EnableStoreWrite { @@ -285,23 +292,6 @@ func (p *PurchaseHandler) RefreshAllSkusID(ctx *jxcontext.Context, isAsync bool) }, skuPairs) rootTask.AddChild(task1).Run() _, err = task1.GetResult(0) - case 2: - task2 := tasksch.NewParallelTask("RefreshAllSkusID update id", tasksch.NewParallelConfig().SetIsContinueWhenError(true), 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) - skuPairs[k] = &jdapi.SkuIDPair{ - SkuId: pair.SkuId, - OutSkuId: pair.OutSkuId, - } - } - if globals.EnableStoreWrite { - _, err = api.JdAPI.BatchUpdateOutSkuId(skuPairs) - } - return nil, err - }, skuPairs) - rootTask.AddChild(task2).Run() - _, err = task2.GetResult(0) } return nil, err }, 3) diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index 48029aef1..57b324935 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -201,14 +201,21 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, isAsync boo err = dao.GetRows(db, &stores, ` SELECT t1.*, t2.vendor_store_id FROM store t1 - JOIN store_map t2 ON t1.id = t2.store_id AND t2.deleted_at = ? + JOIN store_map t2 ON t1.id = t2.store_id AND t2.deleted_at = ? AND t2.vendor_id = ? WHERE t1.deleted_at = ? - `, utils.DefaultTimeValue, utils.DefaultTimeValue) - case 1: - task1 := tasksch.NewParallelTask("jd RefreshAllStoresID update to uuid", nil, ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + `, utils.DefaultTimeValue, model.VendorIDJD, utils.DefaultTimeValue) + default: + taskName := "jd RefreshAllStoresID update outSystemId" + if step == 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) { store := batchItemList[0].(*tJdStoreInfo) storeParams := map[string]interface{}{ - "outSystemId": utils.GetUUID(), + "outSystemId": store.ID, + } + if step == 1 { + storeParams["outSystemId"] = utils.GetUUID() } if globals.EnableStoreWrite { err = api.JdAPI.UpdateStoreInfo4Open(store.VendorStoreID, ctx.GetUserName(), storeParams) @@ -217,19 +224,6 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, isAsync boo }, stores) task.AddChild(task1).Run() _, err = task1.GetResult(0) - case 2: - task2 := tasksch.NewParallelTask("jd RefreshAllStoresID update outSystemId", nil, ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - store := batchItemList[0].(*tJdStoreInfo) - storeParams := map[string]interface{}{ - "outSystemId": store.ID, - } - if globals.EnableStoreWrite { - err = api.JdAPI.UpdateStoreInfo4Open(store.VendorStoreID, ctx.GetUserName(), storeParams) - } - return nil, err - }, stores) - task.AddChild(task2).Run() - _, err = task2.GetResult(0) } return nil, err }, 3)