diff --git a/business/jxcallback/orderman/waybill.go b/business/jxcallback/orderman/waybill.go index 851c5853e..73722a7b3 100644 --- a/business/jxcallback/orderman/waybill.go +++ b/business/jxcallback/orderman/waybill.go @@ -121,32 +121,32 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) { if err2 == nil { bill.DeliveryFlag = existingBill.DeliveryFlag } - //if bill.Status == model.WaybillStatusAccepted { // 处理美团配送丢失新运单消息的情况 - if err2 != nil { - if dao.IsNoRowsError(err2) || err2 == ErrCanNotFindWaybill { - existingBill = bill - billCopy := *bill - billCopy.Status = model.WaybillStatusNew - if isDuplicated, err = w.OnWaybillNew(&billCopy, db); err != nil { + if bill.Status == model.WaybillStatusAccepted { // 处理美团配送丢失新运单消息的情况 + if err2 != nil { + if dao.IsNoRowsError(err2) || err2 == ErrCanNotFindWaybill { + existingBill = bill + billCopy := *bill + billCopy.Status = model.WaybillStatusNew + if isDuplicated, err = w.OnWaybillNew(&billCopy, db); err != nil { + dao.Rollback(db, txDB) + return err + } + dao.Commit(db, txDB) + // 进运单调度器OnWaybillStatusChanged之前要确保事务是提交了的,否则会导致死锁 + // 加载数据到当前系统调度器当中 + scheduler.CurrentScheduler.OnWaybillStatusChanged(&billCopy, false) + dao.Begin(db) + } else { dao.Rollback(db, txDB) - return err + return err2 } + } + // 运单消息错序,之前已经结束了,直接返回 + if existingBill.Status >= model.WaybillStatusEndBegin { dao.Commit(db, txDB) - // 进运单调度器OnWaybillStatusChanged之前要确保事务是提交了的,否则会导致死锁 - // 加载数据到当前系统调度器当中 - scheduler.CurrentScheduler.OnWaybillStatusChanged(&billCopy, false) - dao.Begin(db) - } else { - dao.Rollback(db, txDB) - return err2 + return nil } } - // 运单消息错序,之前已经结束了,直接返回 - if existingBill.Status >= model.WaybillStatusEndBegin { - dao.Commit(db, txDB) - return nil - } - //} addParams := orm.Params{} if bill.Status >= model.WaybillStatusAccepted { if bill.Status == model.WaybillStatusAccepted {