- 对于单门店平台,同步商品时,多个门店同时并发同步
This commit is contained in:
@@ -403,17 +403,29 @@ func (v *VendorSync) SyncStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, vendo
|
|||||||
dao.SetStoreSkuSyncStatus(db, loopMapInfo.VendorID, storeIDs, skuIDs, model.SyncFlagModifiedMask)
|
dao.SetStoreSkuSyncStatus(db, loopMapInfo.VendorID, storeIDs, skuIDs, model.SyncFlagModifiedMask)
|
||||||
}
|
}
|
||||||
if len(loopMapInfo.StoreMapList) > 1 {
|
if len(loopMapInfo.StoreMapList) > 1 {
|
||||||
loopStoreTask := tasksch.NewSeqTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[loopMapInfo.VendorID]), ctx,
|
var loopStoreTask tasksch.ITask
|
||||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
if model.MultiStoresVendorMap[loopMapInfo.VendorID] == 1 {
|
||||||
storeID := loopMapInfo.StoreMapList[step].StoreID
|
loopStoreTask = tasksch.NewSeqTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[loopMapInfo.VendorID]), ctx,
|
||||||
if _, err = handler.SyncStoreSkus(ctx, task, storeID, skuIDs, false, isContinueWhenError); err != nil {
|
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
globals.SugarLogger.Debugf("SyncStoresSkus failed1 store:%d failed with error:%v", storeID, err)
|
storeID := loopMapInfo.StoreMapList[step].StoreID
|
||||||
if isContinueWhenError {
|
if _, err = handler.SyncStoreSkus(ctx, task, storeID, skuIDs, false, isContinueWhenError); err != nil {
|
||||||
err = nil
|
globals.SugarLogger.Debugf("SyncStoresSkus failed1 store:%d failed with error:%v", storeID, err)
|
||||||
|
if isContinueWhenError {
|
||||||
|
err = nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
return nil, err
|
||||||
return nil, err
|
}, len(loopMapInfo.StoreMapList))
|
||||||
}, len(loopMapInfo.StoreMapList))
|
} else {
|
||||||
|
loopStoreTask = tasksch.NewParallelTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[loopMapInfo.VendorID]), tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
storeMap := batchItemList[0].(*model.StoreMap)
|
||||||
|
if _, err = handler.SyncStoreSkus(ctx, task, storeMap.StoreID, skuIDs, false, isContinueWhenError); err != nil {
|
||||||
|
globals.SugarLogger.Debugf("SyncStoresSkus failed2 store:%d failed with error:%v", storeMap.StoreID, err)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}, loopMapInfo.StoreMapList)
|
||||||
|
}
|
||||||
t.AddChild(loopStoreTask).Run()
|
t.AddChild(loopStoreTask).Run()
|
||||||
_, err = loopStoreTask.GetResult(0)
|
_, err = loopStoreTask.GetResult(0)
|
||||||
} else {
|
} else {
|
||||||
@@ -447,17 +459,29 @@ func (v *VendorSync) FullSyncStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, v
|
|||||||
loopMapInfo := batchItemList[0].(*LoopStoreMapInfo)
|
loopMapInfo := batchItemList[0].(*LoopStoreMapInfo)
|
||||||
if handler := v.GetStoreHandler(loopMapInfo.VendorID); handler != nil {
|
if handler := v.GetStoreHandler(loopMapInfo.VendorID); handler != nil {
|
||||||
if len(loopMapInfo.StoreMapList) > 1 {
|
if len(loopMapInfo.StoreMapList) > 1 {
|
||||||
loopStoreTask := tasksch.NewSeqTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[loopMapInfo.VendorID]), ctx,
|
var loopStoreTask tasksch.ITask
|
||||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
if model.MultiStoresVendorMap[loopMapInfo.VendorID] == 1 {
|
||||||
storeID := loopMapInfo.StoreMapList[step].StoreID
|
loopStoreTask = tasksch.NewSeqTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[loopMapInfo.VendorID]), ctx,
|
||||||
if _, err = handler.FullSyncStoreSkus(ctx, task, storeID, false, isContinueWhenError); err != nil {
|
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
globals.SugarLogger.Debugf("FullSyncStoresSkus failed1 store:%d failed with error:%v", storeID, err)
|
storeID := loopMapInfo.StoreMapList[step].StoreID
|
||||||
if isContinueWhenError {
|
if _, err = handler.FullSyncStoreSkus(ctx, task, storeID, false, isContinueWhenError); err != nil {
|
||||||
err = nil
|
globals.SugarLogger.Debugf("FullSyncStoresSkus failed1 store:%d failed with error:%v", storeID, err)
|
||||||
|
if isContinueWhenError {
|
||||||
|
err = nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
return nil, err
|
||||||
return nil, err
|
}, len(loopMapInfo.StoreMapList))
|
||||||
}, len(loopMapInfo.StoreMapList))
|
} else {
|
||||||
|
loopStoreTask = tasksch.NewParallelTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[loopMapInfo.VendorID]), tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
storeMap := batchItemList[0].(*model.StoreMap)
|
||||||
|
if _, err = handler.FullSyncStoreSkus(ctx, task, storeMap.StoreID, false, isContinueWhenError); err != nil {
|
||||||
|
globals.SugarLogger.Debugf("FullSyncStoresSkus failed2 store:%d failed with error:%v", storeMap.StoreID, err)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}, loopMapInfo.StoreMapList)
|
||||||
|
}
|
||||||
t.AddChild(loopStoreTask).Run()
|
t.AddChild(loopStoreTask).Run()
|
||||||
_, err = loopStoreTask.GetResult(0)
|
_, err = loopStoreTask.GetResult(0)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -89,23 +89,24 @@ func (c *PurchaseHandler) getOrder(orderID string) (order *model.GoodsOrder, ord
|
|||||||
switch taskIndex {
|
switch taskIndex {
|
||||||
case 0:
|
case 0:
|
||||||
orderMap, err = api.JdAPI.QuerySingleOrder(orderID)
|
orderMap, err = api.JdAPI.QuerySingleOrder(orderID)
|
||||||
|
if err == nil {
|
||||||
|
order = c.Map2Order(orderMap)
|
||||||
|
realMobile, err = api.JdAPI.GetRealMobile4Order(orderID, order.VendorStoreID)
|
||||||
|
if realMobile != "" {
|
||||||
|
order.ConsigneeMobile2 = jxutils.FormalizeMobile(realMobile)
|
||||||
|
}
|
||||||
|
}
|
||||||
case 1:
|
case 1:
|
||||||
realMobile, err = api.JdAPI.GetRealMobile4Order(orderID, order.VendorStoreID)
|
|
||||||
case 2:
|
|
||||||
orderSettlement, err = api.JdAPI.OrderShoudSettlementService2(orderID)
|
orderSettlement, err = api.JdAPI.OrderShoudSettlementService2(orderID)
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}, []int{0, 1, 2})
|
}, []int{0, 1})
|
||||||
task.Run()
|
task.Run()
|
||||||
task.GetResult(0)
|
task.GetResult(0)
|
||||||
if orderMap != nil {
|
if order != nil {
|
||||||
order = c.Map2Order(orderMap)
|
|
||||||
if orderSettlement != nil {
|
if orderSettlement != nil {
|
||||||
order.TotalShopMoney = orderSettlement.SettlementAmount + orderSettlement.PlatOrderGoodsDiscountMoney
|
order.TotalShopMoney = orderSettlement.SettlementAmount + orderSettlement.PlatOrderGoodsDiscountMoney
|
||||||
}
|
}
|
||||||
if realMobile != "" {
|
|
||||||
order.ConsigneeMobile2 = jxutils.FormalizeMobile(realMobile)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// if orderMap, err = api.JdAPI.QuerySingleOrder(orderID); err == nil {
|
// if orderMap, err = api.JdAPI.QuerySingleOrder(orderID); err == nil {
|
||||||
// globals.SugarLogger.Debugf("jd getOrder2 orderID:%s", orderID)
|
// globals.SugarLogger.Debugf("jd getOrder2 orderID:%s", orderID)
|
||||||
|
|||||||
Reference in New Issue
Block a user