- handle exceptional msg(e.g. userapplycancel, lock, unlock).
This commit is contained in:
@@ -17,15 +17,18 @@ import (
|
||||
|
||||
var (
|
||||
VendorStatus2StatusMap = map[string]int{
|
||||
jdapi.OrderStatusPurchased: model.OrderStatusNew,
|
||||
jdapi.OrderStatusNew: model.OrderStatusNew,
|
||||
jdapi.OrderStatusAdjust: model.OrderStatusNew,
|
||||
jdapi.OrderStatusWaitOutStore: model.OrderStatusAccepted,
|
||||
jdapi.OrderStatusFinishedPickup: model.OrderStatusFinishedPickup,
|
||||
jdapi.OrderStatusDelivering: model.OrderStatusDelivering,
|
||||
jdapi.OrderStatusDelivered: model.OrderStatusDelivered,
|
||||
jdapi.OrderStatusCanceled: model.OrderStatusCanceled,
|
||||
jdapi.OrderStatusPurchased: model.OrderStatusNew,
|
||||
jdapi.OrderStatusNew: model.OrderStatusNew,
|
||||
jdapi.OrderStatusAdjust: model.OrderStatusNew,
|
||||
jdapi.OrderStatusWaitOutStore: model.OrderStatusAccepted,
|
||||
jdapi.OrderStatusFinishedPickup: model.OrderStatusFinishedPickup,
|
||||
jdapi.OrderStatusDelivering: model.OrderStatusDelivering,
|
||||
jdapi.OrderStatusDelivered: model.OrderStatusDelivered,
|
||||
jdapi.OrderStatusCanceled: model.OrderStatusCanceled,
|
||||
|
||||
jdapi.OrderStatusUserApplyCancel: model.OrderStatusApplyCancel,
|
||||
jdapi.OrderStatusLocked: model.OrderStatusLocked,
|
||||
jdapi.OrderStatusUnlocked: model.OrderStatusUnlocked,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -51,7 +54,6 @@ func (c *OrderController) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi
|
||||
retVal = c.onOrderAdjust(msg)
|
||||
} else {
|
||||
status := c.callbackMsg2Status(msg)
|
||||
status.Status = c.GetStatusFromVendorStatus(msg.StatusID)
|
||||
if msg.StatusID == jdapi.OrderStatusAddComment || msg.StatusID == jdapi.OrderStatusModifyComment {
|
||||
if globals.ReallyCallPlatformAPI {
|
||||
freshfood.FreshFoodAPI.JDOrderComment(msg)
|
||||
@@ -169,6 +171,7 @@ func (c *OrderController) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model
|
||||
RefVendorOrderID: msg.BillID,
|
||||
RefVendorID: model.VendorIDJD,
|
||||
VendorStatus: msg.StatusID,
|
||||
Status: c.GetStatusFromVendorStatus(msg.StatusID),
|
||||
StatusTime: utils.Str2Time(msg.Timestamp),
|
||||
Remark: msg.Remark,
|
||||
}
|
||||
|
||||
@@ -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