- handle exceptional msg(e.g. userapplycancel, lock, unlock).
This commit is contained in:
@@ -254,16 +254,29 @@ func (c *OrderController) addOrderStatus(orderStatus *model.OrderStatus, db orm.
|
||||
VendorID: orderStatus.VendorID,
|
||||
}
|
||||
if err = db.ReadForUpdate(order, "VendorOrderID", "VendorID"); err == nil {
|
||||
if orderStatus.Status >= order.Status { // todo 要求status不能回绕
|
||||
order.Status = orderStatus.Status
|
||||
if (orderStatus.Status == model.OrderStatusUnlocked || orderStatus.Status == model.OrderStatusLocked || orderStatus.Status == model.OrderStatusApplyCancel) ||
|
||||
(orderStatus.Status > model.OrderStatusUnknown && orderStatus.Status >= order.Status) { // todo 要求status不能回绕
|
||||
order.VendorStatus = orderStatus.VendorStatus
|
||||
order.StatusTime = orderStatus.StatusTime
|
||||
order.OrderFinishedAt = orderStatus.StatusTime
|
||||
updateFields := []string{
|
||||
"status", "vendor_status", "status_time",
|
||||
"VendorStatus", "StatusTime",
|
||||
}
|
||||
if orderStatus.Status > model.OrderStatusUnknown {
|
||||
order.LockStatus = model.OrderStatusUnknown
|
||||
order.Status = orderStatus.Status
|
||||
updateFields = append(updateFields, "Status", "LockStatus")
|
||||
} else {
|
||||
if orderStatus.Status == model.OrderStatusUnlocked {
|
||||
order.LockStatus = model.OrderStatusUnknown
|
||||
updateFields = append(updateFields, "LockStatus")
|
||||
} else if orderStatus.Status == model.OrderStatusLocked || orderStatus.Status == model.OrderStatusApplyCancel {
|
||||
order.LockStatus = orderStatus.Status
|
||||
updateFields = append(updateFields, "LockStatus")
|
||||
}
|
||||
}
|
||||
if orderStatus.Status >= model.OrderStatusEndBegin {
|
||||
updateFields = append(updateFields, "order_finished_at")
|
||||
order.OrderFinishedAt = orderStatus.StatusTime
|
||||
updateFields = append(updateFields, "OrderFinishedAt")
|
||||
}
|
||||
utils.CallFuncLogError(func() error {
|
||||
_, err = db.Update(order, updateFields...)
|
||||
|
||||
Reference in New Issue
Block a user