From 1768349f1b5384c586d7bede93a294a120a4a061 Mon Sep 17 00:00:00 2001 From: gazebo Date: Tue, 4 Dec 2018 18:38:12 +0800 Subject: [PATCH] - mtwm.FullSyncStoreSkus --- business/model/dao/store_sku.go | 19 ++++++++++++++ business/partner/purchase/ebai/store_sku.go | 16 +----------- business/partner/purchase/mtwm/store_sku.go | 29 +++++++++++++++++++-- 3 files changed, 47 insertions(+), 17 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 6fe50cc29..e6fdd53a6 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -4,6 +4,7 @@ import ( "fmt" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" ) @@ -145,3 +146,21 @@ func GetStoreSkus(db *DaoDB, vendorID, storeID int, skuIDs []int) (skus []*Store } return skus, err } + +func SetStoreSkuSyncStatus(ctx *jxcontext.Context, db *DaoDB, storeID int, skuIDs []int, syncStatus int) (num int64, err error) { + sql := ` + UPDATE store_sku_bind + SET ebai_sync_status = ebai_sync_status | ? + WHERE deleted_at = ? AND store_id = ? + ` + sqlParams := []interface{}{ + syncStatus, + utils.DefaultTimeValue, + storeID, + } + if len(skuIDs) > 0 { + sql += " AND sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")" + sqlParams = append(sqlParams, skuIDs) + } + return ExecuteSQL(db, sql, sqlParams...) +} diff --git a/business/partner/purchase/ebai/store_sku.go b/business/partner/purchase/ebai/store_sku.go index 9aed63115..a836136b9 100644 --- a/business/partner/purchase/ebai/store_sku.go +++ b/business/partner/purchase/ebai/store_sku.go @@ -539,21 +539,7 @@ func (p *PurchaseHandler) updateLocalCatAsNew(db *dao.DaoDB, localCatMap map[str } func (p *PurchaseHandler) setStoreSkuSyncStatus(ctx *jxcontext.Context, db *dao.DaoDB, storeID int, skuIDs []int, syncStatus int) (num int64, err error) { - sql := ` - UPDATE store_sku_bind - SET ebai_sync_status = ebai_sync_status | ? - WHERE deleted_at = ? AND store_id = ? - ` - sqlParams := []interface{}{ - syncStatus, - utils.DefaultTimeValue, - storeID, - } - if len(skuIDs) > 0 { - sql += " AND sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")" - sqlParams = append(sqlParams, skuIDs) - } - return dao.ExecuteSQL(db, sql, sqlParams...) + return dao.SetStoreSkuSyncStatus(ctx, db, storeID, skuIDs, syncStatus) } func formatName(name string) string { diff --git a/business/partner/purchase/mtwm/store_sku.go b/business/partner/purchase/mtwm/store_sku.go index 36aea306e..ee19a7ecc 100644 --- a/business/partner/purchase/mtwm/store_sku.go +++ b/business/partner/purchase/mtwm/store_sku.go @@ -224,7 +224,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks skus, err := dao.GetStoreSkus(db, model.VendorIDMTWM, storeID, skuIDs) // globals.SugarLogger.Debug(utils.Format4Output(skus, false)) strStoreID := utils.Int2Str(storeID) - rootTask := tasksch.NewParallelTask("mtwm SyncStoreSkus", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx.GetUserName(), func(rootTask *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + rootTask := tasksch.NewParallelTask("美团外卖SyncStoreSkus", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx.GetUserName(), func(rootTask *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { foodDataList := make([]map[string]interface{}, len(batchItemList)) // for k, v := range batchItemList { v := batchItemList[0] @@ -288,7 +288,32 @@ func (p *PurchaseHandler) RefreshStoresAllSkusID(ctx *jxcontext.Context, parentT } func (p *PurchaseHandler) FullSyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error) { - return hint, err + userName := ctx.GetUserName() + globals.SugarLogger.Debugf("mtwm FullSyncStoreSkus storeID:%d, isContinueWhenError:%t, userName:%s", storeID, isContinueWhenError, userName) + + db := dao.GetDB() + rootTask := tasksch.NewSeqTask("美团外卖FullSyncStoreSkus", userName, func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + switch step { + case 0: + err = p.DeleteRemoteSkus(storeID, nil) + case 1: + _, err = dao.SetStoreSkuSyncStatus(ctx, db, storeID, nil, model.SyncFlagNewMask) + case 2: + err = p.DeleteRemoteCategories(storeID, nil) + case 3: + _, err = p.SyncLocalStoreCategory(ctx, db, storeID, true, false) + case 4: + _, err = p.SyncStoreCategory(ctx, rootTask, storeID, false) + case 5: + _, err = p.SyncStoreSkus(ctx, rootTask, storeID, nil, true, isContinueWhenError) + } + return nil, err + }, 6) + tasksch.AddChild(parentTask, rootTask).Run() + if !isAsync { + _, err = rootTask.GetResult(0) + } + return rootTask.ID, err } func (p *PurchaseHandler) DeleteRemoteSkus(storeID int, vendorSkuIDs []string) (err error) {