- OnWaybillStatusChanged与OnAfsOrderStatusChanged中的事务处理调整

This commit is contained in:
gazebo
2019-05-30 12:19:10 +08:00
parent 7ffad7e217
commit 0964a796d9
2 changed files with 8 additions and 4 deletions

View File

@@ -166,17 +166,17 @@ func (c *OrderManager) OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) (
c.setAfsOrderID(db, orderStatus) c.setAfsOrderID(db, orderStatus)
dao.Begin(db) dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil || err != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db)
if r != nil { panic(r)
panic(r)
}
} }
}() }()
isDuplicated, afsOrder, err := c.addAfsOrderStatus(db, orderStatus) isDuplicated, afsOrder, err := c.addAfsOrderStatus(db, orderStatus)
if err != nil || isDuplicated { if err != nil || isDuplicated {
if err == nil { if err == nil {
dao.Commit(db) dao.Commit(db)
} else {
dao.Rollback(db)
} }
return err return err
} }

View File

@@ -104,6 +104,7 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
if err2 != nil { if err2 != nil {
if dao.IsNoRowsError(err2) || err2 == ErrCanNotFindWaybill { if dao.IsNoRowsError(err2) || err2 == ErrCanNotFindWaybill {
if isDuplicated, err = w.onWaybillNew(bill, db); err != nil { if isDuplicated, err = w.onWaybillNew(bill, db); err != nil {
dao.Rollback(db)
return err return err
} }
existingBill = bill existingBill = bill
@@ -111,11 +112,13 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
billCopy.Status = model.WaybillStatusNew billCopy.Status = model.WaybillStatusNew
scheduler.CurrentScheduler.OnWaybillStatusChanged(&billCopy, false) scheduler.CurrentScheduler.OnWaybillStatusChanged(&billCopy, false)
} else { } else {
dao.Rollback(db)
return err2 return err2
} }
} }
// 运单消息错序,之前已经结束了,直接返回 // 运单消息错序,之前已经结束了,直接返回
if existingBill.Status >= model.WaybillStatusEndBegin { if existingBill.Status >= model.WaybillStatusEndBegin {
dao.Commit(db)
return nil return nil
} }
} }
@@ -138,6 +141,7 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
} }
duplicatedCount, err = w.addWaybillStatus(bill, db, addParams) duplicatedCount, err = w.addWaybillStatus(bill, db, addParams)
if err != nil { if err != nil {
dao.Rollback(db)
return err return err
} }
} }