Merge remote-tracking branch 'origin/mark' into su
This commit is contained in:
@@ -32,6 +32,7 @@ const (
|
||||
fakeUserUndoApplyCancel = "fake_user_undo_apply_cancel"
|
||||
fakeAcceptOrder = "fake_accept_order"
|
||||
fakeOrderAdjustFinished = "fake_order_adjust_finished"
|
||||
fakeOrderCanceled = "fake_order_canceled"
|
||||
)
|
||||
|
||||
// 饿百的接单会直接召唤配送,为了统一将饿百的接单影射成拣货完成,然后模拟一个接单消息
|
||||
@@ -50,6 +51,7 @@ var (
|
||||
fakeOrderAdjustFinished: model.OrderStatusAdjust,
|
||||
fakeUserApplyCancel: model.OrderStatusApplyCancel,
|
||||
fakeUserUndoApplyCancel: model.OrderStatusUndoApplyCancel,
|
||||
fakeOrderCanceled: model.OrderStatusCanceled,
|
||||
}
|
||||
|
||||
skuActTypeMap = map[string]int{
|
||||
@@ -341,8 +343,11 @@ func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
|
||||
if err = api.EbaiAPI.OrderSwitchselfdelivery(order.VendorOrderID); err != nil {
|
||||
if utils.IsErrMatch(err, "301251", nil) {
|
||||
if deliveryStatus, err2 := api.EbaiAPI.OrderDeliveryGet(order.VendorOrderID); err2 == nil {
|
||||
if utils.Int64ToStr(utils.MustInterface2Int64(deliveryStatus["status"])) == ebaiapi.WaybillStatusSelfDelivery {
|
||||
deliveryStatus := utils.Int64ToStr(utils.MustInterface2Int64(deliveryStatus["status"]))
|
||||
if deliveryStatus == ebaiapi.WaybillStatusSelfDelivery {
|
||||
err = nil
|
||||
} else if deliveryStatus == ebaiapi.WaybillStatusDeliveryCancled {
|
||||
p.trySyncCancelStatus(order.VendorOrderID)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -355,6 +360,16 @@ func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) trySyncCancelStatus(vendorOrderID string) (err error) {
|
||||
orderInfo, err := api.EbaiAPI.OrderGet2(vendorOrderID)
|
||||
if err == nil {
|
||||
if utils.Int2Str(orderInfo.Order.Status) == ebaiapi.OrderStatusCanceled {
|
||||
p.postFakeMsg(vendorOrderID, fakeOrderCanceled)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// 将订单从购物平台配送转为自送后又送达
|
||||
func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||
globals.SugarLogger.Debugf("ebai Swtich2SelfDelivered orderID:%s", order.VendorOrderID)
|
||||
|
||||
@@ -101,8 +101,9 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia
|
||||
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
||||
}
|
||||
} else if msg.Cmd == ebaiapi.CmdOrderUserCancel {
|
||||
if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(orderStatus.RefVendorOrderID, model.VendorIDEBAI); err2 == nil {
|
||||
afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg)
|
||||
if afsOrder := c.createAfsOrder(msg); afsOrder != nil {
|
||||
// if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(orderStatus.RefVendorOrderID, model.VendorIDEBAI); err2 == nil {
|
||||
// afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg)
|
||||
cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo)
|
||||
afsOrder.AfsOrderID = orderStatus.VendorOrderID
|
||||
afsOrder.RefundType = model.AfsTypeFullRefund
|
||||
@@ -124,6 +125,18 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia
|
||||
return retVal
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) createAfsOrder(msg *ebaiapi.CallbackMsg) (afsOrder *model.AfsOrder) {
|
||||
cancelData := msg.Data.(*ebaiapi.CBUserCancelInfo)
|
||||
afsOrder, err := partner.CurOrderManager.CreateAfsOrderFromOrder(utils.Int64ToStr(cancelData.OrderID), model.VendorIDEBAI)
|
||||
if err == nil {
|
||||
afsOrder.AfsOrderID = afsOrder.VendorOrderID
|
||||
afsOrder.AfsCreatedAt = utils.Timestamp2Time(msg.Timestamp)
|
||||
} else {
|
||||
afsOrder = nil
|
||||
}
|
||||
return afsOrder
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) convertAfsReasonType(vendorReasonType string) int8 {
|
||||
return model.AfsReasonNotOthers
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package ebai
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
@@ -9,6 +11,10 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
|
||||
const (
|
||||
timeout4WaybillCancel = 10 * time.Minute // 饿百发送运单取消消息10分钟后,如果没有转自送,就要取消订单,且不再发送订单取消消息
|
||||
)
|
||||
|
||||
var (
|
||||
VendorWaybillStatus2StatusMap = map[string]int{
|
||||
ebaiapi.WaybillStatusNew: model.WaybillStatusUnknown,
|
||||
@@ -44,6 +50,14 @@ func (c *PurchaseHandler) onWaybillMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiap
|
||||
order.CourierName = utils.Interface2String(result["name"])
|
||||
order.CourierMobile = utils.Interface2String(result["phone"])
|
||||
}
|
||||
} else if order.Status == model.WaybillStatusCanceled {
|
||||
utils.AfterFuncWithRecover(timeout4WaybillCancel, func() {
|
||||
if localOrder, err2 := partner.CurOrderManager.LoadOrder(order.VendorOrderID, model.VendorIDEBAI); err2 == nil {
|
||||
if localOrder.Status < model.OrderStatusEndBegin {
|
||||
c.trySyncCancelStatus(order.VendorOrderID)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
return api.EbaiAPI.Err2CallbackResponse(msg.Cmd, partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user