- only clear sync status when SkuShopCategoryMap succeeded

- and DetailErrList for tasksch.
This commit is contained in:
gazebo
2018-10-27 10:22:25 +08:00
parent 0397729aa0
commit 970e8dc7b2
4 changed files with 24 additions and 9 deletions

View File

@@ -126,6 +126,9 @@ func (task *ParallelTask) Run() {
chanRetVal = err chanRetVal = err
goto end goto end
} }
task.locker.Lock()
task.DetailErrList = append(task.DetailErrList, err)
task.locker.Unlock()
} }
} }
} }
@@ -176,9 +179,8 @@ func (task *ParallelTask) Run() {
task.Result = taskResult task.Result = taskResult
task.TerminatedAt = time.Now() task.TerminatedAt = time.Now()
task.locker.Unlock() task.locker.Unlock()
globals.SugarLogger.Debugf("ParallelTask.Run %s, err:%v", task.Name, taskErr)
globals.SugarLogger.Debugf("ParallelTask.Run %s, result:%v, err:%v", task.Name, taskResult, taskErr) // globals.SugarLogger.Debugf("ParallelTask.Run %s, result:%v, err:%v", task.Name, taskResult, taskErr)
close(task.subFinishChan) close(task.subFinishChan)
if task.resultHandler != nil { if task.resultHandler != nil {

View File

@@ -45,6 +45,9 @@ func (task *SeqTask) Run() {
if !task.IsContinueWhenError { if !task.IsContinueWhenError {
break break
} }
task.locker.Lock()
task.DetailErrList = append(task.DetailErrList, err)
task.locker.Unlock()
} else if result != nil { } else if result != nil {
taskResult = append(taskResult, utils.Interface2Slice(result)...) taskResult = append(taskResult, utils.Interface2Slice(result)...)
} }

View File

@@ -61,9 +61,10 @@ type BaseTask struct {
FailedJobCount int `json:"failedJobCount"` FailedJobCount int `json:"failedJobCount"`
Status int `json:"status"` Status int `json:"status"`
Result []interface{} `json:"result"` Result []interface{} `json:"result"`
Err error `json:"err"` Err error `json:"err"`
Children TaskList `json:"children"` Children TaskList `json:"children"`
DetailErrList []error `json:"detailErrList"`
finishChan chan int finishChan chan int
C <-chan int `json:"-"` C <-chan int `json:"-"`

View File

@@ -136,16 +136,21 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
task := tasksch.NewParallelTask("SyncStoreSkus skus", nil, userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { task := tasksch.NewParallelTask("SyncStoreSkus skus", nil, 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}
isCreate := false
if globals.EnableStoreWrite { if globals.EnableStoreWrite {
if storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { if storeSku.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 {
err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID)) err = api.EbaiAPI.SkuDelete(strStoreID, utils.Int64ToStr(storeSku.EbaiID))
} else if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 { } else if storeSku.EbaiSyncStatus&model.SyncFlagNewMask != 0 {
// globals.SugarLogger.Debug(utils.Format4Output(genSkuParamsFromStoreSkuInfo(storeSku), false)) // globals.SugarLogger.Debug(utils.Format4Output(genSkuParamsFromStoreSkuInfo(storeSku), false))
if storeSku.EbaiID, err = api.EbaiAPI.SkuCreate(strStoreID, storeSku.SkuID, genSkuParamsFromStoreSkuInfo(storeSku)); err == nil { if storeSku.EbaiID, err = api.EbaiAPI.SkuCreate(strStoreID, storeSku.SkuID, genSkuParamsFromStoreSkuInfo(storeSku)); err == nil {
// todo 创建SKU后马上绑定分类会失败待解决
updateFields = append(updateFields, model.FieldEbaiID) updateFields = append(updateFields, model.FieldEbaiID)
isCreate = true
// 创建SKU后马上绑定分类会失败所以延迟绑定
time.AfterFunc(3*time.Second, func() { time.AfterFunc(3*time.Second, func() {
api.EbaiAPI.SkuShopCategoryMap(strStoreID, storeSku.EbaiID, utils.Int64ToStr(storeSku.CatEbaiID)) if err := api.EbaiAPI.SkuShopCategoryMap(strStoreID, storeSku.EbaiID, utils.Int64ToStr(storeSku.CatEbaiID)); err == nil {
storeSku.EbaiSyncStatus = 0
dao.UpdateEntity(nil, &storeSku.StoreSkuBind, updateFields...)
}
}) })
} }
} else if storeSku.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 { } else if storeSku.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 {
@@ -155,7 +160,11 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
} }
} }
if err == nil { if err == nil {
storeSku.EbaiSyncStatus = 0 if isCreate {
storeSku.EbaiSyncStatus = model.SyncFlagModifiedMask
} else {
storeSku.EbaiSyncStatus = 0
}
_, err = dao.UpdateEntity(nil, &storeSku.StoreSkuBind, updateFields...) _, err = dao.UpdateEntity(nil, &storeSku.StoreSkuBind, updateFields...)
} }
return nil, err return nil, err