- IScheduler.OnOrderStatusChanged添加order参数

This commit is contained in:
gazebo
2019-04-23 10:19:38 +08:00
parent 976e1b26e4
commit 4dcf90e2f6
3 changed files with 10 additions and 4 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)