- refactor ebai SyncStoreSkus

This commit is contained in:
gazebo
2018-11-13 19:12:21 +08:00
parent 70bcf0cec2
commit b692f9adae

View File

@@ -115,7 +115,7 @@ func (p *PurchaseHandler) getDirtyStoreSkus(db *dao.DaoDB, storeID int, skuIDs [
func (p *PurchaseHandler) createCatByStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, db *dao.DaoDB, storeID int, storeSkuInfoList []*tStoreSkuFullInfo) (num int64, err error) { func (p *PurchaseHandler) createCatByStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, db *dao.DaoDB, storeID int, storeSkuInfoList []*tStoreSkuFullInfo) (num int64, err error) {
catList2Add := make(map[int]int) catList2Add := make(map[int]int)
for _, storeSku := range storeSkuInfoList { for _, storeSku := range storeSkuInfoList {
if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 { if storeSku.EbaiSyncStatus&(model.SyncFlagNewMask|model.SyncFlagModifiedMask) != 0 {
if storeSku.ParentCatEbaiID == 0 { if storeSku.ParentCatEbaiID == 0 {
catList2Add[storeSku.ParentCatID] = 1 catList2Add[storeSku.ParentCatID] = 1
} }
@@ -131,39 +131,41 @@ func (p *PurchaseHandler) createCatByStoreSkus(ctx *jxcontext.Context, parentTas
return 0, err return 0, err
} }
} }
}
if _, err = p.SyncStoreCategory(ctx, parentTask, storeID, false); err != nil { if _, err = p.SyncStoreCategory(ctx, parentTask, storeID, false); err != nil {
return 0, err return 0, err
} }
}
return num, nil return num, nil
} }
func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) { func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
userName := ctx.GetUserName() userName := ctx.GetUserName()
globals.SugarLogger.Debugf("SyncStoreSkus storeID:%d, skuIDs:%v, isContinueWhenError:%t, userName:%s", storeID, skuIDs, isContinueWhenError, userName) globals.SugarLogger.Debugf("SyncStoreSkus storeID:%d, skuIDs:%v, isContinueWhenError:%t, userName:%s", storeID, skuIDs, isContinueWhenError, userName)
db := dao.GetDB()
var storeSkuInfoList []*tStoreSkuFullInfo
var num int64
strStoreID := utils.Int2Str(storeID)
rootTask := tasksch.NewSeqTask("SyncStoreSkus cat", userName, func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
if step == 0 {
db := dao.GetDB()
if err = p.SyncLocalStoreCategory(db, storeID, userName); err != nil { if err = p.SyncLocalStoreCategory(db, storeID, userName); err != nil {
return "", err return "", err
} }
strStoreID := utils.Int2Str(storeID)
var storeSkuInfoList []*tStoreSkuFullInfo
var num int64
for i := 0; i < 3; i++ { for i := 0; i < 3; i++ {
if storeSkuInfoList, err = p.getDirtyStoreSkus(db, storeID, skuIDs); err != nil { if storeSkuInfoList, err = p.getDirtyStoreSkus(db, storeID, skuIDs); err != nil {
return "", err return nil, err
} }
if num, err = p.createCatByStoreSkus(ctx, parentTask, db, storeID, storeSkuInfoList); err != nil { if num, err = p.createCatByStoreSkus(ctx, parentTask, db, storeID, storeSkuInfoList); err != nil {
return "", err return nil, err
} }
if num == 0 { if num == 0 {
break break
} }
} }
if num != 0 { if num != 0 {
return "", errors.New("不能创建商品所需的类别") return nil, errors.New("不能创建商品所需的类别")
} }
} else if step == 1 {
task := tasksch.NewParallelTask("SyncStoreSkus skus", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { task := tasksch.NewParallelTask("SyncStoreSkus skus", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
storeSku := batchItemList[0].(*tStoreSkuFullInfo) storeSku := batchItemList[0].(*tStoreSkuFullInfo)
updateFields := []string{model.FieldEbaiSyncStatus} updateFields := []string{model.FieldEbaiSyncStatus}
@@ -200,10 +202,16 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
} }
return nil, err return nil, err
}, storeSkuInfoList) }, storeSkuInfoList)
tasksch.AddChild(parentTask, task).Run() tasksch.AddChild(rootTask, task).Run()
_, err = task.GetResult(0) _, err = task.GetResult(0)
}
return "", err return nil, err
}, 2)
tasksch.AddChild(parentTask, rootTask).Run()
if !isAsync {
_, err = rootTask.GetResult(0)
}
return rootTask.ID, err
} }
func (p *PurchaseHandler) ReadStoreCategories(storeID int) (cats []*model.SkuCategory, err error) { func (p *PurchaseHandler) ReadStoreCategories(storeID int) (cats []*model.SkuCategory, err error) {