- 新增OrderStatusUndoApplyCancel
This commit is contained in:
@@ -350,36 +350,34 @@ func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db *dao.Da
|
|||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
}
|
}
|
||||||
isDuplicated, err = addOrderOrWaybillStatus(orderStatus, db)
|
isDuplicated, err = addOrderOrWaybillStatus(orderStatus, db)
|
||||||
if err == nil && !isDuplicated &&
|
if err == nil && !isDuplicated && model.IsOrderImportantStatus(orderStatus.Status) {
|
||||||
(orderStatus.Status > model.OrderStatusUnknown ||
|
|
||||||
(orderStatus.Status == model.OrderStatusUnlocked || orderStatus.Status == model.OrderStatusLocked || orderStatus.Status == model.OrderStatusApplyCancel)) {
|
|
||||||
order := &model.GoodsOrder{
|
order := &model.GoodsOrder{
|
||||||
VendorOrderID: orderStatus.VendorOrderID,
|
VendorOrderID: orderStatus.VendorOrderID,
|
||||||
VendorID: orderStatus.VendorID,
|
VendorID: orderStatus.VendorID,
|
||||||
}
|
}
|
||||||
if err = db.Db.ReadForUpdate(order, "VendorOrderID", "VendorID"); err == nil {
|
if err = db.Db.ReadForUpdate(order, "VendorOrderID", "VendorID"); err == nil {
|
||||||
if (orderStatus.Status == model.OrderStatusUnlocked || orderStatus.Status == model.OrderStatusLocked || orderStatus.Status == model.OrderStatusApplyCancel) ||
|
if (model.IsOrderLockStatus(orderStatus.Status) || model.IsOrderUnlockStatus(orderStatus.Status)) ||
|
||||||
(orderStatus.Status > model.OrderStatusUnknown && orderStatus.Status >= order.Status) { // todo 要求status不能回绕
|
(model.IsOrderMainStatus(orderStatus.Status) && orderStatus.Status >= order.Status) { // todo 要求status不能回绕
|
||||||
order.VendorStatus = orderStatus.VendorStatus
|
order.VendorStatus = orderStatus.VendorStatus
|
||||||
order.StatusTime = orderStatus.StatusTime
|
order.StatusTime = orderStatus.StatusTime
|
||||||
updateFields := []string{
|
updateFields := []string{
|
||||||
"VendorStatus", "StatusTime",
|
"VendorStatus", "StatusTime",
|
||||||
}
|
}
|
||||||
if orderStatus.Status > model.OrderStatusUnknown {
|
if model.IsOrderMainStatus(orderStatus.Status) {
|
||||||
order.LockStatus = model.OrderStatusUnknown
|
order.LockStatus = model.OrderStatusUnknown
|
||||||
order.Status = orderStatus.Status
|
order.Status = orderStatus.Status
|
||||||
updateFields = append(updateFields, "Status", "LockStatus")
|
updateFields = append(updateFields, "Status", "LockStatus")
|
||||||
} else {
|
} else {
|
||||||
if orderStatus.Status == model.OrderStatusUnlocked {
|
if model.IsOrderUnlockStatus(orderStatus.Status) {
|
||||||
order.LockStatus = model.OrderStatusUnknown
|
order.LockStatus = model.OrderStatusUnknown
|
||||||
updateFields = append(updateFields, "LockStatus")
|
updateFields = append(updateFields, "LockStatus")
|
||||||
} else if orderStatus.Status == model.OrderStatusLocked || orderStatus.Status == model.OrderStatusApplyCancel {
|
} else if model.IsOrderLockStatus(orderStatus.Status) {
|
||||||
order.LockStatus = orderStatus.Status
|
order.LockStatus = orderStatus.Status
|
||||||
updateFields = append(updateFields, "LockStatus")
|
updateFields = append(updateFields, "LockStatus")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
orderStatus.LockStatus = order.LockStatus
|
orderStatus.LockStatus = order.LockStatus
|
||||||
if orderStatus.Status >= model.OrderStatusEndBegin {
|
if model.IsOrderFinalStatus(orderStatus.Status) {
|
||||||
order.OrderFinishedAt = orderStatus.StatusTime
|
order.OrderFinishedAt = orderStatus.StatusTime
|
||||||
updateFields = append(updateFields, "OrderFinishedAt")
|
updateFields = append(updateFields, "OrderFinishedAt")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ var (
|
|||||||
OrderStatusUnlocked: "解锁",
|
OrderStatusUnlocked: "解锁",
|
||||||
OrderStatusLocked: "锁定",
|
OrderStatusLocked: "锁定",
|
||||||
OrderStatusApplyUrgeOrder: "催单",
|
OrderStatusApplyUrgeOrder: "催单",
|
||||||
OrderStatusApplyRefund: "申请退款",
|
// OrderStatusApplyRefund: "申请退款",
|
||||||
OrderStatusApplyCancel: "申请取消",
|
OrderStatusApplyCancel: "申请取消",
|
||||||
|
|
||||||
OrderStatusUnknown: "一般事件",
|
OrderStatusUnknown: "一般事件",
|
||||||
|
|
||||||
@@ -159,13 +159,15 @@ const (
|
|||||||
const (
|
const (
|
||||||
OrderStatusMsg = -100
|
OrderStatusMsg = -100
|
||||||
|
|
||||||
OrderStatusAdjust = -35 // 订单调整完成
|
OrderStatusAdjust = -65 // 原值-35 订单调整完成
|
||||||
OrderStatusWait4Pay = -30 // 下单待支付,微盟在这个时间发新订单事件
|
OrderStatusWait4Pay = -60 // 原值-30 下单待支付,微盟在这个时间发新订单事件
|
||||||
OrderStatusUnlocked = -25
|
OrderStatusApplyUrgeOrder = -55 // 原值-15
|
||||||
OrderStatusLocked = -20
|
|
||||||
OrderStatusApplyUrgeOrder = -15
|
OrderStatusUnlocked = -25
|
||||||
OrderStatusApplyRefund = -10
|
OrderStatusLocked = -20
|
||||||
OrderStatusApplyCancel = -5
|
// OrderStatusApplyRefund = -10
|
||||||
|
OrderStatusUndoApplyCancel = -10
|
||||||
|
OrderStatusApplyCancel = -5
|
||||||
|
|
||||||
OrderStatusUnknown = 0
|
OrderStatusUnknown = 0
|
||||||
|
|
||||||
@@ -239,3 +241,23 @@ func IsPrinterVendorExist(vendorID int) bool {
|
|||||||
_, ok := VendorNames[vendorID]
|
_, ok := VendorNames[vendorID]
|
||||||
return ok && vendorID >= VendorIDPrinterBegin && vendorID <= VendorIDPrinterEnd
|
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)
|
||||||
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ const (
|
|||||||
callDeliveryDelayGap = 30
|
callDeliveryDelayGap = 30
|
||||||
|
|
||||||
fakeUserApplyCancel = "fake_user_apply_cancel"
|
fakeUserApplyCancel = "fake_user_apply_cancel"
|
||||||
|
fakeUserUndoApplyCancel = "fake_user_undo_apply_cancel"
|
||||||
fakeAcceptOrder = "fake_accept_order"
|
fakeAcceptOrder = "fake_accept_order"
|
||||||
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
||||||
)
|
)
|
||||||
@@ -43,6 +44,7 @@ var (
|
|||||||
|
|
||||||
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
||||||
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
||||||
|
fakeUserUndoApplyCancel: model.OrderStatusUndoApplyCancel,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -262,30 +264,31 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta
|
|||||||
RefVendorOrderID: orderID,
|
RefVendorOrderID: orderID,
|
||||||
RefVendorID: model.VendorIDEBAI,
|
RefVendorID: model.VendorIDEBAI,
|
||||||
StatusTime: utils.Timestamp2Time(msg.Timestamp),
|
StatusTime: utils.Timestamp2Time(msg.Timestamp),
|
||||||
|
VendorStatus: msg.Cmd,
|
||||||
}
|
}
|
||||||
if msg.Cmd == ebaiapi.CmdOrderUserCancel {
|
if msg.Cmd == ebaiapi.CmdOrderUserCancel {
|
||||||
msgType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"]))
|
msgType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"]))
|
||||||
cancelType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["cancel_type"]))
|
cancelType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["cancel_type"]))
|
||||||
if msgType == ebaiapi.OrderUserCancelApply && cancelType == ebaiapi.OrderUserCancelTypeBeforeSale {
|
orderStatus.Remark = utils.Interface2String(msg.Body["cancel_reason"])
|
||||||
orderStatus.VendorStatus = fakeUserApplyCancel
|
if additionReason := utils.Interface2String(msg.Body["addition_reason"]); additionReason != "" {
|
||||||
orderStatus.Remark = utils.Interface2String(msg.Body["cancel_reason"])
|
orderStatus.Remark += ",额外原因:" + additionReason
|
||||||
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 {
|
} else if msg.Cmd == ebaiapi.CmdOrderPartRefund {
|
||||||
msgType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"]))
|
msgType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"]))
|
||||||
status := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["status"]))
|
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 {
|
if msgType == ebaiapi.OrderPartRefuncTypeMerchant && status == ebaiapi.OrderPartRefundSuccess {
|
||||||
orderStatus.VendorStatus = fakeOrderAdjustFinished
|
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 {
|
} else if status, ok := msg.Body["status"]; ok {
|
||||||
if vendorStatus, ok := status.(string); 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.VendorStatus = utils.Int64ToStr(utils.MustInterface2Int64(status))
|
||||||
}
|
}
|
||||||
orderStatus.Remark = utils.Interface2String(msg.Body["reason"])
|
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
|
return orderStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,9 +29,9 @@ var (
|
|||||||
elmapi.OrderStatusUnprocessed: model.OrderStatusNew,
|
elmapi.OrderStatusUnprocessed: model.OrderStatusNew,
|
||||||
elmapi.OrderStatusValid: model.OrderStatusAccepted,
|
elmapi.OrderStatusValid: model.OrderStatusAccepted,
|
||||||
elmapi.OrderStatusPending: model.OrderStatusNew,
|
elmapi.OrderStatusPending: model.OrderStatusNew,
|
||||||
elmapi.OrderStatusRefunding: model.OrderStatusApplyRefund,
|
// elmapi.OrderStatusRefunding: model.OrderStatusApplyRefund,
|
||||||
elmapi.OrderStatusInvalid: model.OrderStatusCanceled,
|
elmapi.OrderStatusInvalid: model.OrderStatusCanceled,
|
||||||
elmapi.OrderStatusSettled: model.OrderStatusFinished,
|
elmapi.OrderStatusSettled: model.OrderStatusFinished,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ func (c *PurchaseHandler) onOrderCancelRefundMsg(msg *elmapi.CallbackOrderCancel
|
|||||||
case elmapi.MsgTypeUserApplyCancel:
|
case elmapi.MsgTypeUserApplyCancel:
|
||||||
status.Status = model.OrderStatusApplyCancel
|
status.Status = model.OrderStatusApplyCancel
|
||||||
case elmapi.MsgTypeUserApplyRefund:
|
case elmapi.MsgTypeUserApplyRefund:
|
||||||
status.Status = model.OrderStatusApplyRefund
|
// status.Status = model.OrderStatusApplyRefund
|
||||||
default:
|
default:
|
||||||
status.Status = model.OrderStatusUnknown
|
status.Status = model.OrderStatusUnknown
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ const (
|
|||||||
FakeMsgTypeOrderDelivering = "orderDelivering"
|
FakeMsgTypeOrderDelivering = "orderDelivering"
|
||||||
|
|
||||||
fakeUserApplyCancel = "fake_user_apply_cancel"
|
fakeUserApplyCancel = "fake_user_apply_cancel"
|
||||||
|
fakeUserUndoApplyCancel = "fake_user_undo_apply_cancel"
|
||||||
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -49,6 +50,7 @@ var (
|
|||||||
|
|
||||||
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
||||||
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
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) {
|
func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderStatus *model.OrderStatus) {
|
||||||
orderID := GetOrderIDFromMsg(msg)
|
orderID := GetOrderIDFromMsg(msg)
|
||||||
vendorStatus := ""
|
vendorStatus := msg.Cmd
|
||||||
remark := ""
|
remark := ""
|
||||||
statusTime := utils.Str2Int64(msg.Data.Get("timestamp"))
|
statusTime := utils.Str2Int64(msg.Data.Get("timestamp"))
|
||||||
switch msg.Cmd {
|
switch msg.Cmd {
|
||||||
@@ -206,13 +208,15 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderSta
|
|||||||
remark = msg.Data.Get("reason")
|
remark = msg.Data.Get("reason")
|
||||||
if msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
|
if msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
|
||||||
if notifyType == mtwmapi.NotifyTypePartyApply {
|
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 {
|
} else if notifyType == mtwmapi.NotifyTypeSuccess {
|
||||||
vendorStatus = fakeOrderAdjustFinished
|
vendorStatus = fakeOrderAdjustFinished
|
||||||
}
|
}
|
||||||
} else if msg.Cmd == mtwmapi.MsgTypeOrderRefund {
|
} else if msg.Cmd == mtwmapi.MsgTypeOrderRefund {
|
||||||
if notifyType == mtwmapi.NotifyTypeApply {
|
if notifyType == mtwmapi.NotifyTypeApply {
|
||||||
vendorStatus = fakeUserApplyCancel
|
vendorStatus = fakeUserApplyCancel
|
||||||
|
} else if notifyType == mtwmapi.NotifyTypeCancelRefund {
|
||||||
|
vendorStatus = fakeUserUndoApplyCancel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user