- OnWaybillStatusChanged与OnAfsOrderStatusChanged中的事务处理调整
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user