From 892cbd365a23927e21c7f5d43b4aaa2dbb4663ca Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 19 Apr 2019 17:29:37 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E6=96=B0=E5=A2=9EOrderStatusUndoApplyCance?= =?UTF-8?q?l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 16 +++++----- business/model/const.go | 40 +++++++++++++++++++------ business/partner/purchase/ebai/order.go | 36 +++++++++++----------- business/partner/purchase/elm/order.go | 8 ++--- business/partner/purchase/mtwm/order.go | 8 +++-- 5 files changed, 65 insertions(+), 43 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index d7cf2470a..20ca38a26 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -350,36 +350,34 @@ func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db *dao.Da db = dao.GetDB() } isDuplicated, err = addOrderOrWaybillStatus(orderStatus, db) - if err == nil && !isDuplicated && - (orderStatus.Status > model.OrderStatusUnknown || - (orderStatus.Status == model.OrderStatusUnlocked || orderStatus.Status == model.OrderStatusLocked || orderStatus.Status == model.OrderStatusApplyCancel)) { + if err == nil && !isDuplicated && model.IsOrderImportantStatus(orderStatus.Status) { order := &model.GoodsOrder{ VendorOrderID: orderStatus.VendorOrderID, VendorID: orderStatus.VendorID, } if err = db.Db.ReadForUpdate(order, "VendorOrderID", "VendorID"); err == nil { - if (orderStatus.Status == model.OrderStatusUnlocked || orderStatus.Status == model.OrderStatusLocked || orderStatus.Status == model.OrderStatusApplyCancel) || - (orderStatus.Status > model.OrderStatusUnknown && orderStatus.Status >= order.Status) { // todo 要求status不能回绕 + if (model.IsOrderLockStatus(orderStatus.Status) || model.IsOrderUnlockStatus(orderStatus.Status)) || + (model.IsOrderMainStatus(orderStatus.Status) && orderStatus.Status >= order.Status) { // todo 要求status不能回绕 order.VendorStatus = orderStatus.VendorStatus order.StatusTime = orderStatus.StatusTime updateFields := []string{ "VendorStatus", "StatusTime", } - if orderStatus.Status > model.OrderStatusUnknown { + if model.IsOrderMainStatus(orderStatus.Status) { order.LockStatus = model.OrderStatusUnknown order.Status = orderStatus.Status updateFields = append(updateFields, "Status", "LockStatus") } else { - if orderStatus.Status == model.OrderStatusUnlocked { + if model.IsOrderUnlockStatus(orderStatus.Status) { order.LockStatus = model.OrderStatusUnknown updateFields = append(updateFields, "LockStatus") - } else if orderStatus.Status == model.OrderStatusLocked || orderStatus.Status == model.OrderStatusApplyCancel { + } else if model.IsOrderLockStatus(orderStatus.Status) { order.LockStatus = orderStatus.Status updateFields = append(updateFields, "LockStatus") } } orderStatus.LockStatus = order.LockStatus - if orderStatus.Status >= model.OrderStatusEndBegin { + if model.IsOrderFinalStatus(orderStatus.Status) { order.OrderFinishedAt = orderStatus.StatusTime updateFields = append(updateFields, "OrderFinishedAt") } diff --git a/business/model/const.go b/business/model/const.go index 6e65d06ae..8bfa4e63a 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -73,8 +73,8 @@ var ( OrderStatusUnlocked: "解锁", OrderStatusLocked: "锁定", OrderStatusApplyUrgeOrder: "催单", - OrderStatusApplyRefund: "申请退款", - OrderStatusApplyCancel: "申请取消", + // OrderStatusApplyRefund: "申请退款", + OrderStatusApplyCancel: "申请取消", OrderStatusUnknown: "一般事件", @@ -159,13 +159,15 @@ const ( const ( OrderStatusMsg = -100 - OrderStatusAdjust = -35 // 订单调整完成 - OrderStatusWait4Pay = -30 // 下单待支付,微盟在这个时间发新订单事件 - OrderStatusUnlocked = -25 - OrderStatusLocked = -20 - OrderStatusApplyUrgeOrder = -15 - OrderStatusApplyRefund = -10 - OrderStatusApplyCancel = -5 + OrderStatusAdjust = -65 // 原值-35 订单调整完成 + OrderStatusWait4Pay = -60 // 原值-30 下单待支付,微盟在这个时间发新订单事件 + OrderStatusApplyUrgeOrder = -55 // 原值-15 + + OrderStatusUnlocked = -25 + OrderStatusLocked = -20 + // OrderStatusApplyRefund = -10 + OrderStatusUndoApplyCancel = -10 + OrderStatusApplyCancel = -5 OrderStatusUnknown = 0 @@ -239,3 +241,23 @@ func IsPrinterVendorExist(vendorID int) bool { _, ok := VendorNames[vendorID] return ok && vendorID >= VendorIDPrinterBegin && vendorID <= VendorIDPrinterEnd } + +func IsOrderLockStatus(status int) bool { + return status == OrderStatusLocked || status == OrderStatusApplyCancel +} + +func IsOrderUnlockStatus(status int) bool { + return status == OrderStatusUnlocked || status == OrderStatusUndoApplyCancel +} + +func IsOrderMainStatus(status int) bool { + return status > OrderStatusUnknown +} + +func IsOrderFinalStatus(status int) bool { + return status >= OrderStatusEndBegin +} + +func IsOrderImportantStatus(status int) bool { + return IsOrderMainStatus(status) || IsOrderLockStatus(status) || IsOrderUnlockStatus(status) +} diff --git a/business/partner/purchase/ebai/order.go b/business/partner/purchase/ebai/order.go index 23b04b722..e542bfa55 100644 --- a/business/partner/purchase/ebai/order.go +++ b/business/partner/purchase/ebai/order.go @@ -25,6 +25,7 @@ const ( callDeliveryDelayGap = 30 fakeUserApplyCancel = "fake_user_apply_cancel" + fakeUserUndoApplyCancel = "fake_user_undo_apply_cancel" fakeAcceptOrder = "fake_accept_order" fakeOrderAdjustFinished = "fake_order_adjust_finished" ) @@ -43,6 +44,7 @@ var ( fakeOrderAdjustFinished: model.OrderStatusAdjust, fakeUserApplyCancel: model.OrderStatusApplyCancel, + fakeUserUndoApplyCancel: model.OrderStatusUndoApplyCancel, } ) @@ -262,30 +264,31 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta RefVendorOrderID: orderID, RefVendorID: model.VendorIDEBAI, StatusTime: utils.Timestamp2Time(msg.Timestamp), + VendorStatus: msg.Cmd, } if msg.Cmd == ebaiapi.CmdOrderUserCancel { msgType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"])) cancelType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["cancel_type"])) - if msgType == ebaiapi.OrderUserCancelApply && cancelType == ebaiapi.OrderUserCancelTypeBeforeSale { - orderStatus.VendorStatus = fakeUserApplyCancel - orderStatus.Remark = utils.Interface2String(msg.Body["cancel_reason"]) - if additionReason := utils.Interface2String(msg.Body["addition_reason"]); additionReason != "" { - orderStatus.Remark += ",额外原因:" + additionReason + orderStatus.Remark = utils.Interface2String(msg.Body["cancel_reason"]) + if additionReason := utils.Interface2String(msg.Body["addition_reason"]); additionReason != "" { + orderStatus.Remark += ",额外原因:" + additionReason + } + if cancelType == ebaiapi.OrderUserCancelTypeBeforeSale { + if msgType == ebaiapi.OrderUserCancelApply { + orderStatus.VendorStatus = fakeUserApplyCancel + } else if msgType == ebaiapi.OrderUserCancelInvalid { + orderStatus.VendorStatus = fakeUserUndoApplyCancel } - } else { - orderStatus = nil } } else if msg.Cmd == ebaiapi.CmdOrderPartRefund { msgType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"])) status := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["status"])) + orderStatus.Remark = utils.Interface2String(msg.Body["reason"]) + if additionReason := utils.Interface2String(msg.Body["addition_reason"]); additionReason != "" { + orderStatus.Remark += ",额外原因:" + additionReason + } if msgType == ebaiapi.OrderPartRefuncTypeMerchant && status == ebaiapi.OrderPartRefundSuccess { orderStatus.VendorStatus = fakeOrderAdjustFinished - orderStatus.Remark = utils.Interface2String(msg.Body["reason"]) - if additionReason := utils.Interface2String(msg.Body["addition_reason"]); additionReason != "" { - orderStatus.Remark += ",额外原因:" + additionReason - } - } else { - orderStatus = nil } } else if status, ok := msg.Body["status"]; ok { if vendorStatus, ok := status.(string); ok { @@ -294,13 +297,8 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta orderStatus.VendorStatus = utils.Int64ToStr(utils.MustInterface2Int64(status)) } orderStatus.Remark = utils.Interface2String(msg.Body["reason"]) - } else { - orderStatus = nil - globals.SugarLogger.Infof("ebai callbackMsg2Status can not find status field in msg:%s", utils.Format4Output(msg, false)) - } - if orderStatus != nil { - orderStatus.Status = c.GetStatusFromVendorStatus(orderStatus.VendorStatus) } + orderStatus.Status = c.GetStatusFromVendorStatus(orderStatus.VendorStatus) return orderStatus } diff --git a/business/partner/purchase/elm/order.go b/business/partner/purchase/elm/order.go index b5c53a6a2..18710720a 100644 --- a/business/partner/purchase/elm/order.go +++ b/business/partner/purchase/elm/order.go @@ -29,9 +29,9 @@ var ( elmapi.OrderStatusUnprocessed: model.OrderStatusNew, elmapi.OrderStatusValid: model.OrderStatusAccepted, elmapi.OrderStatusPending: model.OrderStatusNew, - elmapi.OrderStatusRefunding: model.OrderStatusApplyRefund, - elmapi.OrderStatusInvalid: model.OrderStatusCanceled, - elmapi.OrderStatusSettled: model.OrderStatusFinished, + // elmapi.OrderStatusRefunding: model.OrderStatusApplyRefund, + elmapi.OrderStatusInvalid: model.OrderStatusCanceled, + elmapi.OrderStatusSettled: model.OrderStatusFinished, } ) @@ -115,7 +115,7 @@ func (c *PurchaseHandler) onOrderCancelRefundMsg(msg *elmapi.CallbackOrderCancel case elmapi.MsgTypeUserApplyCancel: status.Status = model.OrderStatusApplyCancel case elmapi.MsgTypeUserApplyRefund: - status.Status = model.OrderStatusApplyRefund + // status.Status = model.OrderStatusApplyRefund default: status.Status = model.OrderStatusUnknown } diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index f42dcc43b..d0d5db83d 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -22,6 +22,7 @@ const ( FakeMsgTypeOrderDelivering = "orderDelivering" fakeUserApplyCancel = "fake_user_apply_cancel" + fakeUserUndoApplyCancel = "fake_user_undo_apply_cancel" fakeOrderAdjustFinished = "fake_order_adjust_finished" ) @@ -49,6 +50,7 @@ var ( fakeOrderAdjustFinished: model.OrderStatusAdjust, fakeUserApplyCancel: model.OrderStatusApplyCancel, + fakeUserUndoApplyCancel: model.OrderStatusUndoApplyCancel, } ) @@ -187,7 +189,7 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderStatus *model.OrderStatus) { orderID := GetOrderIDFromMsg(msg) - vendorStatus := "" + vendorStatus := msg.Cmd remark := "" statusTime := utils.Str2Int64(msg.Data.Get("timestamp")) switch msg.Cmd { @@ -206,13 +208,15 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderSta remark = msg.Data.Get("reason") if msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund { if notifyType == mtwmapi.NotifyTypePartyApply { - api.MtwmAPI.OrderRefundAgree(utils.Str2Int64(orderID), "bu") // todo 自动同意调整单 + api.MtwmAPI.OrderRefundReject(utils.Str2Int64(orderID), "bu") // todo 京东与饿百都没有售前用户提出订单调整的,自动拒绝调整单 } else if notifyType == mtwmapi.NotifyTypeSuccess { vendorStatus = fakeOrderAdjustFinished } } else if msg.Cmd == mtwmapi.MsgTypeOrderRefund { if notifyType == mtwmapi.NotifyTypeApply { vendorStatus = fakeUserApplyCancel + } else if notifyType == mtwmapi.NotifyTypeCancelRefund { + vendorStatus = fakeUserUndoApplyCancel } } }