- handle exceptional msg(e.g. userapplycancel, lock, unlock).

This commit is contained in:
gazebo
2018-08-03 15:55:00 +08:00
parent a5fd029457
commit 4862649d77
7 changed files with 51 additions and 25 deletions

View File

@@ -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,
}

View File

@@ -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...)