- refactor ebai SyncStoreSkus
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user