- don't unrolling order status.
This commit is contained in:
@@ -249,18 +249,32 @@ func (c *OrderController) addOrderStatus(orderStatus *model.OrderStatus, db orm.
|
||||
}
|
||||
isDuplicated, err = addOrderOrWaybillStatus(orderStatus, db)
|
||||
if err == nil && !isDuplicated && orderStatus.Status > model.OrderStatusUnknown {
|
||||
params := orm.Params{
|
||||
"status": orderStatus.Status,
|
||||
"vendor_status": orderStatus.VendorStatus,
|
||||
"status_time": orderStatus.StatusTime,
|
||||
order := &model.GoodsOrder{
|
||||
VendorOrderID: orderStatus.VendorOrderID,
|
||||
VendorID: orderStatus.VendorID,
|
||||
}
|
||||
if orderStatus.Status >= model.OrderStatusEndBegin {
|
||||
params["order_finished_at"] = orderStatus.StatusTime
|
||||
if err = db.ReadForUpdate(order); err == nil {
|
||||
if orderStatus.Status >= order.Status { // todo 要求status不能回绕
|
||||
order.Status = orderStatus.Status
|
||||
order.VendorStatus = orderStatus.VendorStatus
|
||||
order.StatusTime = orderStatus.StatusTime
|
||||
order.OrderFinishedAt = orderStatus.StatusTime
|
||||
updateFields := []string{
|
||||
"status", "vendor_status", "status_time",
|
||||
}
|
||||
if orderStatus.Status >= model.OrderStatusEndBegin {
|
||||
updateFields = append(updateFields, "order_finished_at")
|
||||
}
|
||||
utils.CallFuncLogError(func() error {
|
||||
_, err = db.Update(order, updateFields...)
|
||||
return err
|
||||
}, "addOrderStatus update order, status:%v", orderStatus)
|
||||
} else {
|
||||
isDuplicated = true
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Warnf("addOrderStatus orderID:%s read failed with error:%v", err)
|
||||
}
|
||||
utils.CallFuncLogError(func() error {
|
||||
_, err = db.QueryTable("goods_order").Filter("vendor_order_id", orderStatus.VendorOrderID).Filter("vendor_id", orderStatus.VendorID).Update(params)
|
||||
return err
|
||||
}, "addOrderStatus update order, status:%v", orderStatus)
|
||||
}
|
||||
return isDuplicated, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user