- 修复ebai.syncStoreSkus中没有调用SyncStoreCategory的bug

This commit is contained in:
gazebo
2019-07-21 22:18:25 +08:00
parent 8812d4056d
commit b39798e940

View File

@@ -194,11 +194,6 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
if err != nil { if err != nil {
return "", err return "", err
} }
if len(skuIDs) == 0 {
if _, err = p.SyncStoreCategory(ctx, parentTask, storeID, false); err != nil {
return "", err
}
}
return p.syncStoreSkus(ctx, parentTask, storeDetail, skuIDs, isAsync, isContinueWhenError) return p.syncStoreSkus(ctx, parentTask, storeDetail, skuIDs, isAsync, isContinueWhenError)
} }
@@ -215,6 +210,9 @@ func (p *PurchaseHandler) syncStoreSkus(ctx *jxcontext.Context, parentTask tasks
func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
if step == 0 { if step == 0 {
db := dao.GetDB() db := dao.GetDB()
if _, err = p.SyncStoreCategory(ctx, parentTask, storeID, false); err != nil {
return nil, err
}
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 nil, err return nil, err
@@ -225,6 +223,9 @@ func (p *PurchaseHandler) syncStoreSkus(ctx *jxcontext.Context, parentTask tasks
if num == 0 { if num == 0 {
break break
} }
if _, err = p.SyncStoreCategory(ctx, parentTask, storeID, false); err != nil {
return nil, err
}
} }
if num != 0 { if num != 0 {
globals.SugarLogger.Infof("SyncStoreSkus 不能创建商品所需的类别, storeID:%d, skuIDs:%v, isContinueWhenError:%t, userName:%s", storeID, skuIDs, isContinueWhenError, userName) globals.SugarLogger.Infof("SyncStoreSkus 不能创建商品所需的类别, storeID:%d, skuIDs:%v, isContinueWhenError:%t, userName:%s", storeID, skuIDs, isContinueWhenError, userName)
@@ -480,49 +481,51 @@ func (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask t
utils.DefaultTimeValue, utils.DefaultTimeValue,
} }
if err = dao.GetRows(db, &catList, sql, sqlParams...); err == nil { if err = dao.GetRows(db, &catList, sql, sqlParams...); err == nil {
strStoreID := utils.Int2Str(storeID) if len(catList) > 0 {
task := tasksch.NewParallelTask("SyncStoreCategory", nil, ctx, strStoreID := utils.Int2Str(storeID)
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { task := tasksch.NewParallelTask("SyncStoreCategory", nil, ctx,
updateFields := []string{model.FieldEbaiSyncStatus} func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
catInfo := batchItemList[0].(*tStoreCatInfo) updateFields := []string{model.FieldEbaiSyncStatus}
// globals.SugarLogger.Debug(utils.Format4Output(catInfo, false)) catInfo := batchItemList[0].(*tStoreCatInfo)
if catInfo.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除 // globals.SugarLogger.Debug(utils.Format4Output(catInfo, false))
if catInfo.EbaiSyncStatus&model.SyncFlagNewMask == 0 && catInfo.EbaiID != 0 { if catInfo.EbaiSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除
if catInfo.EbaiSyncStatus&model.SyncFlagNewMask == 0 && catInfo.EbaiID != 0 {
if globals.EnableEbaiStoreWrite {
if err = api.EbaiAPI.ShopCategoryDelete(strStoreID, catInfo.EbaiID); ebaiapi.IsErrCategoryNotExist(err) {
err = nil
}
}
}
} else if catInfo.EbaiSyncStatus&model.SyncFlagNewMask != 0 { // 新增
if globals.EnableEbaiStoreWrite { if globals.EnableEbaiStoreWrite {
if err = api.EbaiAPI.ShopCategoryDelete(strStoreID, catInfo.EbaiID); ebaiapi.IsErrCategoryNotExist(err) { catName := formatName(catInfo.Name)
err = nil catInfo.EbaiID, err = api.EbaiAPI.ShopCategoryCreate(strStoreID, catInfo.ParentEbaiID, catName, jxCatSeq2Ebai(catInfo.Seq))
if ebaiapi.IsErrCategoryExist(err) {
if catInfo.EbaiID = api.EbaiAPI.GetEbaiCatIDFromName(strStoreID, catName); catInfo.EbaiID > 0 {
err = nil
}
} }
} else {
catInfo.EbaiID = jxutils.GenFakeID()
} }
} if err == nil {
} else if catInfo.EbaiSyncStatus&model.SyncFlagNewMask != 0 { // 新增 updateFields = append(updateFields, model.FieldEbaiID)
if globals.EnableEbaiStoreWrite { }
catName := formatName(catInfo.Name) } else if catInfo.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改
catInfo.EbaiID, err = api.EbaiAPI.ShopCategoryCreate(strStoreID, catInfo.ParentEbaiID, catName, jxCatSeq2Ebai(catInfo.Seq)) if globals.EnableEbaiStoreWrite {
if ebaiapi.IsErrCategoryExist(err) { err = api.EbaiAPI.ShopCategoryUpdate(strStoreID, catInfo.EbaiID, formatName(catInfo.Name), jxCatSeq2Ebai(catInfo.Seq))
if catInfo.EbaiID = api.EbaiAPI.GetEbaiCatIDFromName(strStoreID, catName); catInfo.EbaiID > 0 {
err = nil
}
} }
} else {
catInfo.EbaiID = jxutils.GenFakeID()
} }
if err == nil { if err == nil {
updateFields = append(updateFields, model.FieldEbaiID) db2 := dao.GetDB()
catInfo.EbaiSyncStatus = 0
_, err = dao.UpdateEntity(db2, &catInfo.StoreSkuCategoryMap, updateFields...)
} }
} else if catInfo.EbaiSyncStatus&model.SyncFlagModifiedMask != 0 { // 修改 return nil, err
if globals.EnableEbaiStoreWrite { }, catList)
err = api.EbaiAPI.ShopCategoryUpdate(strStoreID, catInfo.EbaiID, formatName(catInfo.Name), jxCatSeq2Ebai(catInfo.Seq)) rootTask.AddChild(task).Run()
} _, err = task.GetResult(0)
} }
if err == nil {
db2 := dao.GetDB()
catInfo.EbaiSyncStatus = 0
_, err = dao.UpdateEntity(db2, &catInfo.StoreSkuCategoryMap, updateFields...)
}
return nil, err
}, catList)
rootTask.AddChild(task).Run()
_, err = task.GetResult(0)
} }
return nil, err return nil, err
}, 2) }, 2)