From 0964a796d9ade91087b11095c37781d071f0ec92 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 30 May 2019 12:19:10 +0800 Subject: [PATCH] =?UTF-8?q?-=20OnWaybillStatusChanged=E4=B8=8EOnAfsOrderSt?= =?UTF-8?q?atusChanged=E4=B8=AD=E7=9A=84=E4=BA=8B=E5=8A=A1=E5=A4=84?= =?UTF-8?q?=E7=90=86=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order_afs.go | 8 ++++---- business/jxcallback/orderman/waybill.go | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index 1bd29b603..f061fa842 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -166,17 +166,17 @@ func (c *OrderManager) OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) ( c.setAfsOrderID(db, orderStatus) dao.Begin(db) defer func() { - if r := recover(); r != nil || err != nil { + if r := recover(); r != nil { dao.Rollback(db) - if r != nil { - panic(r) - } + panic(r) } }() isDuplicated, afsOrder, err := c.addAfsOrderStatus(db, orderStatus) if err != nil || isDuplicated { if err == nil { dao.Commit(db) + } else { + dao.Rollback(db) } return err } diff --git a/business/jxcallback/orderman/waybill.go b/business/jxcallback/orderman/waybill.go index 310608826..a7a0a40a9 100644 --- a/business/jxcallback/orderman/waybill.go +++ b/business/jxcallback/orderman/waybill.go @@ -104,6 +104,7 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) { if err2 != nil { if dao.IsNoRowsError(err2) || err2 == ErrCanNotFindWaybill { if isDuplicated, err = w.onWaybillNew(bill, db); err != nil { + dao.Rollback(db) return err } existingBill = bill @@ -111,11 +112,13 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) { billCopy.Status = model.WaybillStatusNew scheduler.CurrentScheduler.OnWaybillStatusChanged(&billCopy, false) } else { + dao.Rollback(db) return err2 } } // 运单消息错序,之前已经结束了,直接返回 if existingBill.Status >= model.WaybillStatusEndBegin { + dao.Commit(db) return nil } } @@ -138,6 +141,7 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) { } duplicatedCount, err = w.addWaybillStatus(bill, db, addParams) if err != nil { + dao.Rollback(db) return err } }