- 饿百常量命名修改,支持用户申请取消与调整单
This commit is contained in:
@@ -245,6 +245,7 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending
|
|||||||
if status.LockStatus != model.OrderStatusUnknown || status.Status > model.OrderStatusUnknown {
|
if status.LockStatus != model.OrderStatusUnknown || status.Status > model.OrderStatusUnknown {
|
||||||
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
|
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
|
||||||
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
|
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
|
||||||
|
s.updateOrderByStatus(savedOrderInfo.order, status)
|
||||||
// if status.Status == model.OrderStatusNew {
|
// if status.Status == model.OrderStatusNew {
|
||||||
// if !isPending {
|
// if !isPending {
|
||||||
// utils.CallFuncAsync(func() {
|
// utils.CallFuncAsync(func() {
|
||||||
@@ -252,7 +253,6 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending
|
|||||||
// })
|
// })
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
s.updateOrderByStatus(savedOrderInfo.order, status)
|
|
||||||
if status.LockStatus == model.OrderStatusUnknown && status.Status > model.OrderStatusUnknown { // 只处理状态转换,一般消息不处理
|
if status.LockStatus == model.OrderStatusUnknown && status.Status > model.OrderStatusUnknown { // 只处理状态转换,一般消息不处理
|
||||||
s.resetTimer(savedOrderInfo, nil, isPending)
|
s.resetTimer(savedOrderInfo, nil, isPending)
|
||||||
if status.Status >= model.OrderStatusDelivering {
|
if status.Status >= model.OrderStatusDelivering {
|
||||||
@@ -280,9 +280,11 @@ func (s *DefScheduler) OnOrderStatusChanged(status *model.OrderStatus, isPending
|
|||||||
} else if status.Status == model.OrderStatusApplyCancel {
|
} else if status.Status == model.OrderStatusApplyCancel {
|
||||||
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
|
globals.SugarLogger.Debugf("OnOrderStatusChanged orderID:%s %s, status:%v", status.VendorOrderID, model.OrderStatusName[status.Status], status)
|
||||||
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
|
savedOrderInfo := s.loadSavedOrderFromMap(status, true)
|
||||||
|
s.updateOrderByStatus(savedOrderInfo.order, status)
|
||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
weixinmsg.NotifyUserApplyCancel(savedOrderInfo.order, status.Remark)
|
weixinmsg.NotifyUserApplyCancel(savedOrderInfo.order, status.Remark)
|
||||||
})
|
})
|
||||||
|
msghub.OnUserApplyCancel(savedOrderInfo.order)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,10 @@ const (
|
|||||||
ServerMsgRegister = "register"
|
ServerMsgRegister = "register"
|
||||||
ServerMsgUnregister = "unregister"
|
ServerMsgUnregister = "unregister"
|
||||||
|
|
||||||
ServerMsgPing = "ping"
|
ServerMsgPing = "ping"
|
||||||
ServerMsgNewOrder = "newOrder"
|
|
||||||
|
ServerMsgNewOrder = "newOrder"
|
||||||
|
ServerMsgUserApplyCancel = "userApplyCancel"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -162,3 +164,19 @@ func OnNewOrder(order *model.GoodsOrder) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func OnUserApplyCancel(order *model.GoodsOrder) {
|
||||||
|
globals.SugarLogger.Debugf("msghub OnUserApplyCancel, order:%s", utils.Format4Output(order, false))
|
||||||
|
utils.CallFuncAsync(func() {
|
||||||
|
msgChan <- &ServerMsg{
|
||||||
|
Type: ServerMsgUserApplyCancel,
|
||||||
|
StoreID: jxutils.GetSaleStoreIDFromOrder(order),
|
||||||
|
MsgData: 1,
|
||||||
|
// MsgData: []*model.GoodsOrderExt{
|
||||||
|
// &model.GoodsOrderExt{
|
||||||
|
// GoodsOrder: *order,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ func OnFinancialMsg(msg *ebaiapi.CallbackMsg) (err error) {
|
|||||||
}
|
}
|
||||||
} else if msg.Cmd == ebaiapi.CmdOrderUserCancel { // 全额退款处理
|
} else if msg.Cmd == ebaiapi.CmdOrderUserCancel { // 全额退款处理
|
||||||
messageType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"]))
|
messageType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"]))
|
||||||
if utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["cancel_type"])) == ebaiapi.AfterOrderFinishedCancelType &&
|
if utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["cancel_type"])) == ebaiapi.OrderUserCancelTypeAfterSale &&
|
||||||
(messageType == ebaiapi.OrderUserCancelSuccessA || messageType == ebaiapi.OrderUserCancelSuccessB) {
|
(messageType == ebaiapi.OrderUserCancelCSAgreed || messageType == ebaiapi.OrderUserCancelMerchantAgreed) {
|
||||||
globals.SugarLogger.Debug(utils.Interface2String(msg.Body["order_id"])) // 获得退款订单ID,去本地数据库拿?饿百消息推送只给了订单号,但是没有查询全额退款的接口,只有部分退款才可以查询
|
globals.SugarLogger.Debug(utils.Interface2String(msg.Body["order_id"])) // 获得退款订单ID,去本地数据库拿?饿百消息推送只给了订单号,但是没有查询全额退款的接口,只有部分退款才可以查询
|
||||||
afsOrderID := utils.Interface2String(msg.Body["order_id"])
|
afsOrderID := utils.Interface2String(msg.Body["order_id"])
|
||||||
orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrderID, model.VendorIDEBAI)
|
orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrderID, model.VendorIDEBAI)
|
||||||
|
|||||||
@@ -23,19 +23,20 @@ const (
|
|||||||
|
|
||||||
callDeliveryDelay = 10 * time.Minute
|
callDeliveryDelay = 10 * time.Minute
|
||||||
callDeliveryDelayGap = 30
|
callDeliveryDelayGap = 30
|
||||||
// fakePickedUp = "9527"
|
|
||||||
fakeUserApplyCancel = "fake_user_apply_cancel"
|
fakeUserApplyCancel = "fake_user_apply_cancel"
|
||||||
fakeAcceptOrder = "fake_accept_order"
|
fakeAcceptOrder = "fake_accept_order"
|
||||||
fakePartRefundFinished = "fake_part_refund_finished"
|
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 饿百的接单会直接召唤配送,为了统一将饿百的接单影射成拣货完成,然后模拟一个接单消息
|
// 饿百的接单会直接召唤配送,为了统一将饿百的接单影射成拣货完成,然后模拟一个接单消息
|
||||||
|
|
||||||
var (
|
var (
|
||||||
VendorStatus2StatusMap = map[string]int{
|
VendorStatus2StatusMap = map[string]int{
|
||||||
ebaiapi.OrderStatusNew: model.OrderStatusNew,
|
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
||||||
fakeAcceptOrder: model.OrderStatusAccepted,
|
|
||||||
// fakePartRefundFinished: model.OrderStatusAdjust,
|
ebaiapi.OrderStatusNew: model.OrderStatusNew,
|
||||||
|
fakeAcceptOrder: model.OrderStatusAccepted,
|
||||||
ebaiapi.OrderStatusAccepted: model.OrderStatusFinishedPickup,
|
ebaiapi.OrderStatusAccepted: model.OrderStatusFinishedPickup,
|
||||||
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
||||||
ebaiapi.OrderStatusCourierAccepted: model.OrderStatusDelivering,
|
ebaiapi.OrderStatusCourierAccepted: model.OrderStatusDelivering,
|
||||||
@@ -263,19 +264,26 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta
|
|||||||
StatusTime: utils.Timestamp2Time(msg.Timestamp),
|
StatusTime: utils.Timestamp2Time(msg.Timestamp),
|
||||||
}
|
}
|
||||||
if msg.Cmd == ebaiapi.CmdOrderUserCancel {
|
if msg.Cmd == ebaiapi.CmdOrderUserCancel {
|
||||||
cancelType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"]))
|
msgType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"]))
|
||||||
if cancelType == ebaiapi.OrderUserApplyCancel {
|
cancelType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["cancel_type"]))
|
||||||
|
if msgType == ebaiapi.OrderUserCancelApply && cancelType == ebaiapi.OrderUserCancelTypeBeforeSale {
|
||||||
orderStatus.VendorStatus = fakeUserApplyCancel
|
orderStatus.VendorStatus = fakeUserApplyCancel
|
||||||
orderStatus.Status = c.GetStatusFromVendorStatus(orderStatus.VendorStatus)
|
|
||||||
orderStatus.Remark = utils.Interface2String(msg.Body["cancel_reason"])
|
orderStatus.Remark = utils.Interface2String(msg.Body["cancel_reason"])
|
||||||
|
if additionReason := utils.Interface2String(msg.Body["addition_reason"]); additionReason != "" {
|
||||||
|
orderStatus.Remark += ",额外原因:" + additionReason
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
orderStatus = nil
|
orderStatus = nil
|
||||||
}
|
}
|
||||||
} else if msg.Cmd == ebaiapi.CmdOrderPartRefund {
|
} else if msg.Cmd == ebaiapi.CmdOrderPartRefund {
|
||||||
if utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["status"])) == ebaiapi.OrderPartRefundSuccess {
|
msgType := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["type"]))
|
||||||
orderStatus.VendorStatus = fakePartRefundFinished
|
status := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["status"]))
|
||||||
orderStatus.Status = c.GetStatusFromVendorStatus(orderStatus.VendorStatus)
|
if msgType == ebaiapi.OrderPartRefuncTypeMerchant && status == ebaiapi.OrderPartRefundSuccess {
|
||||||
|
orderStatus.VendorStatus = fakeOrderAdjustFinished
|
||||||
orderStatus.Remark = utils.Interface2String(msg.Body["reason"])
|
orderStatus.Remark = utils.Interface2String(msg.Body["reason"])
|
||||||
|
if additionReason := utils.Interface2String(msg.Body["addition_reason"]); additionReason != "" {
|
||||||
|
orderStatus.Remark += ",额外原因:" + additionReason
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
orderStatus = nil
|
orderStatus = nil
|
||||||
}
|
}
|
||||||
@@ -285,12 +293,14 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *ebaiapi.CallbackMsg) (orderSta
|
|||||||
} else {
|
} else {
|
||||||
orderStatus.VendorStatus = utils.Int64ToStr(utils.MustInterface2Int64(status))
|
orderStatus.VendorStatus = utils.Int64ToStr(utils.MustInterface2Int64(status))
|
||||||
}
|
}
|
||||||
orderStatus.Status = c.GetStatusFromVendorStatus(orderStatus.VendorStatus)
|
|
||||||
orderStatus.Remark = utils.Interface2String(msg.Body["reason"])
|
orderStatus.Remark = utils.Interface2String(msg.Body["reason"])
|
||||||
} else {
|
} else {
|
||||||
orderStatus = nil
|
orderStatus = nil
|
||||||
globals.SugarLogger.Infof("ebai callbackMsg2Status can not find status field in msg:%s", utils.Format4Output(msg, false))
|
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)
|
||||||
|
}
|
||||||
return orderStatus
|
return orderStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user