- IScheduler.OnOrderStatusChanged添加order参数
This commit is contained in:
@@ -110,6 +110,7 @@ func LoadPendingOrders() {
|
|||||||
bills := FixedOrderManager.LoadPendingWaybills()
|
bills := FixedOrderManager.LoadPendingWaybills()
|
||||||
globals.SugarLogger.Infof("LoadPendingOrders waybills count:%d", len(bills))
|
globals.SugarLogger.Infof("LoadPendingOrders waybills count:%d", len(bills))
|
||||||
var sortOrders StatusTimerSlice
|
var sortOrders StatusTimerSlice
|
||||||
|
orderMap := make(map[string]*model.GoodsOrder)
|
||||||
for _, order := range orders {
|
for _, order := range orders {
|
||||||
if order.Status > model.OrderStatusNew {
|
if order.Status > model.OrderStatusNew {
|
||||||
status := model.Order2Status(order)
|
status := model.Order2Status(order)
|
||||||
@@ -118,6 +119,7 @@ func LoadPendingOrders() {
|
|||||||
// order.Status = model.OrderStatusNew // 就是要以实际order状态来调用scheduler.OnOrderNew
|
// order.Status = model.OrderStatusNew // 就是要以实际order状态来调用scheduler.OnOrderNew
|
||||||
order.StatusTime = order.OrderCreatedAt
|
order.StatusTime = order.OrderCreatedAt
|
||||||
sortOrders = append(sortOrders, order)
|
sortOrders = append(sortOrders, order)
|
||||||
|
orderMap[jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID)] = order
|
||||||
}
|
}
|
||||||
for _, bill := range bills {
|
for _, bill := range bills {
|
||||||
if bill.Status > model.WaybillStatusNew {
|
if bill.Status > model.WaybillStatusNew {
|
||||||
@@ -141,7 +143,8 @@ func LoadPendingOrders() {
|
|||||||
}, order.VendorOrderID)
|
}, order.VendorOrderID)
|
||||||
} else if status, ok := item.(*model.OrderStatus); ok {
|
} else if status, ok := item.(*model.OrderStatus); ok {
|
||||||
jxutils.CallMsgHandlerAsync(func() {
|
jxutils.CallMsgHandlerAsync(func() {
|
||||||
scheduler.CurrentScheduler.OnOrderStatusChanged(status, true)
|
order := orderMap[jxutils.ComposeUniversalOrderID(status.VendorOrderID, status.VendorID)]
|
||||||
|
scheduler.CurrentScheduler.OnOrderStatusChanged(order, status, true)
|
||||||
}, status.VendorOrderID)
|
}, status.VendorOrderID)
|
||||||
} else {
|
} else {
|
||||||
bill := item.(*model.Waybill)
|
bill := item.(*model.Waybill)
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ func init() {
|
|||||||
// 为了解决京东新消息与接单消息乱序的问题
|
// 为了解决京东新消息与接单消息乱序的问题
|
||||||
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 {
|
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 {
|
||||||
if order2, err2 := partner.GetPurchasePlatformFromVendorID(order.VendorID).GetOrder(order.VendorOrderID); err2 == nil && order2.Status > order.Status {
|
if order2, err2 := partner.GetPurchasePlatformFromVendorID(order.VendorID).GetOrder(order.VendorOrderID); err2 == nil && order2.Status > order.Status {
|
||||||
sch.OnOrderStatusChanged(model.Order2Status(order2), false)
|
sch.OnOrderStatusChanged(order, model.Order2Status(order2), false)
|
||||||
err = nil
|
err = nil
|
||||||
} else {
|
} else {
|
||||||
err = err2
|
err = err2
|
||||||
@@ -241,7 +241,10 @@ func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder, isPending bool) (err
|
|||||||
}
|
}
|
||||||
|
|
||||||
// todo 这个接口应该可以直接传order的,因为在OrderManager中每次都生成了
|
// todo 这个接口应该可以直接传order的,因为在OrderManager中每次都生成了
|
||||||
func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending bool) (err error) {
|
func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *model.OrderStatus, isPending bool) (err error) {
|
||||||
|
if order == nil {
|
||||||
|
globals.SugarLogger.Warnf("OnOrderStatusChanged order is nil, status:%s", utils.Format4Output(status, true))
|
||||||
|
}
|
||||||
if status.LockStatus != model.OrderStatusUnknown || (status.Status > model.OrderStatusMsg && status.Status != model.OrderStatusUnknown) {
|
if status.LockStatus != model.OrderStatusUnknown || (status.Status > model.OrderStatusMsg && status.Status != model.OrderStatusUnknown) {
|
||||||
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
|
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
|
||||||
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
|
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ var (
|
|||||||
type IScheduler interface {
|
type IScheduler interface {
|
||||||
// 以下是订单
|
// 以下是订单
|
||||||
OnOrderNew(order *model.GoodsOrder, isPending bool) (err error)
|
OnOrderNew(order *model.GoodsOrder, isPending bool) (err error)
|
||||||
OnOrderStatusChanged(status *model.OrderStatus, isPending bool) (err error)
|
OnOrderStatusChanged(order *model.GoodsOrder, status *model.OrderStatus, isPending bool) (err error)
|
||||||
|
|
||||||
// 以下是运单
|
// 以下是运单
|
||||||
OnWaybillStatusChanged(bill *model.Waybill, isPending bool) (err error)
|
OnWaybillStatusChanged(bill *model.Waybill, isPending bool) (err error)
|
||||||
|
|||||||
Reference in New Issue
Block a user