修复上次提交处理平台vendorOrgCode的bug
This commit is contained in:
@@ -162,12 +162,12 @@ func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, orderStatus *model
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderManager) OnOrderStatusChanged(orderStatus *model.OrderStatus) (err error) {
|
func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *model.OrderStatus) (err error) {
|
||||||
// 有些平台(比如美团外卖),在新订单事件没有成功返回,但在重发订单消息前,订单状态转换,则不会再重发新订单事件,特殊处理一下
|
// 有些平台(比如美团外卖),在新订单事件没有成功返回,但在重发订单消息前,订单状态转换,则不会再重发新订单事件,特殊处理一下
|
||||||
if orderStatus.Status == model.OrderStatusAccepted {
|
if orderStatus.Status == model.OrderStatusAccepted {
|
||||||
if order, err2 := c.LoadOrder(orderStatus.VendorOrderID, orderStatus.VendorID); err2 == ErrCanNotFindOrder {
|
if _, err2 := c.LoadOrder(orderStatus.VendorOrderID, orderStatus.VendorID); err2 == ErrCanNotFindOrder {
|
||||||
if handler := partner.GetPurchaseOrderHandlerFromVendorID(orderStatus.VendorID); handler != nil {
|
if handler := partner.GetPurchaseOrderHandlerFromVendorID(orderStatus.VendorID); handler != nil {
|
||||||
if order, err2 := handler.GetOrder(order.VendorOrgCode, orderStatus.VendorOrderID); err2 == nil {
|
if order, err2 := handler.GetOrder(vendorOrgCode, orderStatus.VendorOrderID); err2 == nil {
|
||||||
c.OnOrderNew(order, orderStatus)
|
c.OnOrderNew(order, orderStatus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
|||||||
StatusTime: bill.StatusTime,
|
StatusTime: bill.StatusTime,
|
||||||
Remark: bill.Remark,
|
Remark: bill.Remark,
|
||||||
}
|
}
|
||||||
w.OnOrderStatusChanged(fakeOrderStatus)
|
w.OnOrderStatusChanged(bill.VendorOrgCode, fakeOrderStatus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -180,6 +180,8 @@ type Waybill struct {
|
|||||||
ModelTimeInfo `json:"-"`
|
ModelTimeInfo `json:"-"`
|
||||||
OriginalData string `orm:"type(text)" json:"-"`
|
OriginalData string `orm:"type(text)" json:"-"`
|
||||||
Remark string `orm:"-" json:"-"` // 用于传递remark
|
Remark string `orm:"-" json:"-"` // 用于传递remark
|
||||||
|
|
||||||
|
VendorOrgCode string `orm:"size(64)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *Waybill) TableUnique() [][]string {
|
func (w *Waybill) TableUnique() [][]string {
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ type IOrderManager interface {
|
|||||||
|
|
||||||
OnOrderNew(order *model.GoodsOrder, orderStatus *model.OrderStatus) (err error)
|
OnOrderNew(order *model.GoodsOrder, orderStatus *model.OrderStatus) (err error)
|
||||||
OnOrderAdjust(order *model.GoodsOrder, orderStatus *model.OrderStatus) (err error)
|
OnOrderAdjust(order *model.GoodsOrder, orderStatus *model.OrderStatus) (err error)
|
||||||
OnOrderStatusChanged(orderStatus *model.OrderStatus) (err error)
|
OnOrderStatusChanged(vendorOrgCode string, orderStatus *model.OrderStatus) (err error)
|
||||||
OnOrderMsg(order *model.GoodsOrder, vendorStatus, remark string) (err error)
|
OnOrderMsg(order *model.GoodsOrder, vendorStatus, remark string) (err error)
|
||||||
|
|
||||||
OnWaybillStatusChanged(bill *model.Waybill) (err error)
|
OnWaybillStatusChanged(bill *model.Waybill) (err error)
|
||||||
|
|||||||
@@ -435,7 +435,7 @@ func (c *PurchaseHandler) onOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
err = partner.CurOrderManager.OnOrderStatusChanged(msg.Source, status)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil)
|
retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil)
|
||||||
|
|||||||
@@ -73,6 +73,8 @@ func (c *PurchaseHandler) callbackMsg2Waybill(msg *ebaiapi.CallbackMsg) (retVal
|
|||||||
Status: c.GetWaybillStatusFromVendorStatus(vendorStatus),
|
Status: c.GetWaybillStatusFromVendorStatus(vendorStatus),
|
||||||
VendorStatus: vendorStatus,
|
VendorStatus: vendorStatus,
|
||||||
StatusTime: utils.Timestamp2Time(msg.Timestamp),
|
StatusTime: utils.Timestamp2Time(msg.Timestamp),
|
||||||
|
|
||||||
|
VendorOrgCode: msg.Source,
|
||||||
}
|
}
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,13 +96,13 @@ func (c *PurchaseHandler) onOrderStatusMsg(msg *elmapi.CallbackOrderStatusMsg) (
|
|||||||
globals.SugarLogger.Warnf("onOrderStatusMsg elm msg:%v not handled", msg)
|
globals.SugarLogger.Warnf("onOrderStatusMsg elm msg:%v not handled", msg)
|
||||||
return elmapi.SuccessResponse
|
return elmapi.SuccessResponse
|
||||||
}
|
}
|
||||||
err := partner.CurOrderManager.OnOrderStatusChanged(status)
|
err := partner.CurOrderManager.OnOrderStatusChanged("", status)
|
||||||
|
|
||||||
// 直接跳到拣货完成
|
// 直接跳到拣货完成
|
||||||
if msg.MsgType == elmapi.MsgTypeOrderAccepted {
|
if msg.MsgType == elmapi.MsgTypeOrderAccepted {
|
||||||
status.Status = model.OrderStatusFinishedPickup
|
status.Status = model.OrderStatusFinishedPickup
|
||||||
status.VendorStatus = fakePickedUp
|
status.VendorStatus = fakePickedUp
|
||||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
err = partner.CurOrderManager.OnOrderStatusChanged("", status)
|
||||||
}
|
}
|
||||||
// if globals.HandleLegacyJxOrder && err == nil {
|
// if globals.HandleLegacyJxOrder && err == nil {
|
||||||
// c.legacyElmOrderStatusChanged(status)
|
// c.legacyElmOrderStatusChanged(status)
|
||||||
|
|||||||
@@ -6,21 +6,21 @@ import (
|
|||||||
|
|
||||||
func OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
func OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||||
if CurPurchaseHandler != nil {
|
if CurPurchaseHandler != nil {
|
||||||
retVal = CurPurchaseHandler.OnOrderMsg(GetAPIByAppKey(msg.AppKey), msg)
|
retVal = CurPurchaseHandler.OnOrderMsg(appKey2OrgCode(msg.AppKey), msg)
|
||||||
}
|
}
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func OnWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
func OnWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
||||||
if CurPurchaseHandler != nil {
|
if CurPurchaseHandler != nil {
|
||||||
retVal = CurPurchaseHandler.OnWaybillMsg(GetAPIByAppKey(msg.AppKey), msg)
|
retVal = CurPurchaseHandler.OnWaybillMsg(appKey2OrgCode(msg.AppKey), msg)
|
||||||
}
|
}
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func OnStoreMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
func OnStoreMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||||
if CurPurchaseHandler != nil {
|
if CurPurchaseHandler != nil {
|
||||||
retVal = CurPurchaseHandler.OnStoreMsg(GetAPIByAppKey(msg.AppKey), msg)
|
retVal = CurPurchaseHandler.OnStoreMsg(appKey2OrgCode(msg.AppKey), msg)
|
||||||
}
|
}
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,18 @@ func getAPI(appOrgCode string) (apiObj *jdapi.API) {
|
|||||||
return partner.CurAPIManager.GetAPI(model.VendorIDJD, appOrgCode).(*jdapi.API)
|
return partner.CurAPIManager.GetAPI(model.VendorIDJD, appOrgCode).(*jdapi.API)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func appKey2OrgCode(appKey string) (vendorOrgCode string) {
|
||||||
|
apiList := partner.CurAPIManager.GetAppOrgCodeList(model.VendorIDJD)
|
||||||
|
for _, v := range apiList {
|
||||||
|
jdAPI := partner.CurAPIManager.GetAPI(model.VendorIDJD, v).(*jdapi.API)
|
||||||
|
if jdAPI.GetAppKey() == appKey {
|
||||||
|
vendorOrgCode = v
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return vendorOrgCode
|
||||||
|
}
|
||||||
|
|
||||||
func GetAPIByAppKey(appKey string) (apiObj *jdapi.API) {
|
func GetAPIByAppKey(appKey string) (apiObj *jdapi.API) {
|
||||||
if appKey == "" {
|
if appKey == "" {
|
||||||
apiObj = getAPI("")
|
apiObj = getAPI("")
|
||||||
|
|||||||
@@ -44,9 +44,9 @@ var (
|
|||||||
selfTakeCodeReg = regexp.MustCompile(`等待用户凭提货码(\d+)于`)
|
selfTakeCodeReg = regexp.MustCompile(`等待用户凭提货码(\d+)于`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *PurchaseHandler) OnOrderMsg(a *jdapi.API, msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
func (c *PurchaseHandler) OnOrderMsg(vendorOrgCode string, msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||||
jxutils.CallMsgHandler(func() {
|
jxutils.CallMsgHandler(func() {
|
||||||
retVal = c.onOrderMsg(a, msg)
|
retVal = c.onOrderMsg(vendorOrgCode, msg)
|
||||||
}, jxutils.ComposeUniversalOrderID(msg.BillID, model.VendorIDJD))
|
}, jxutils.ComposeUniversalOrderID(msg.BillID, model.VendorIDJD))
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,8 @@ func (c *PurchaseHandler) updateOrderFinancialInfo(a *jdapi.API, orderID string)
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) onOrderMsg(a *jdapi.API, msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
func (c *PurchaseHandler) onOrderMsg(vendorOrgCode string, msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) {
|
||||||
|
a := getAPI(vendorOrgCode)
|
||||||
status := c.callbackMsg2Status(msg)
|
status := c.callbackMsg2Status(msg)
|
||||||
if jdapi.StatusIDNewOrder == msg.StatusID {
|
if jdapi.StatusIDNewOrder == msg.StatusID {
|
||||||
status.Status = model.OrderStatusNew // 因为京东将事件32000与状态32000混用,事件32000可能是新订单,也可能是已接单,统一当成新订单处理
|
status.Status = model.OrderStatusNew // 因为京东将事件32000与状态32000混用,事件32000可能是新订单,也可能是已接单,统一当成新订单处理
|
||||||
@@ -91,7 +92,7 @@ func (c *PurchaseHandler) onOrderMsg(a *jdapi.API, msg *jdapi.CallbackOrderMsg)
|
|||||||
c.onOrderComment2(a, msg)
|
c.onOrderComment2(a, msg)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
err := partner.CurOrderManager.OnOrderStatusChanged(status)
|
err := partner.CurOrderManager.OnOrderStatusChanged(vendorOrgCode, status)
|
||||||
// if globals.HandleLegacyJxOrder && err == nil {
|
// if globals.HandleLegacyJxOrder && err == nil {
|
||||||
// c.legacyJdOrderStatusChanged(status)
|
// c.legacyJdOrderStatusChanged(status)
|
||||||
// }
|
// }
|
||||||
|
|||||||
@@ -279,7 +279,7 @@ func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode s
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 当前京东的storeCrud消息不会在门店状态改变时发送,所以意义不大,先放在这里
|
// 当前京东的storeCrud消息不会在门店状态改变时发送,所以意义不大,先放在这里
|
||||||
func (c *PurchaseHandler) OnStoreMsg(a *jdapi.API, msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) {
|
func (c *PurchaseHandler) OnStoreMsg(vendorOrgCode string, msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) {
|
||||||
var err error
|
var err error
|
||||||
// if msg.StatusID == jdapi.StatusIDUpdateStore {
|
// if msg.StatusID == jdapi.StatusIDUpdateStore {
|
||||||
// var storeStatus int
|
// var storeStatus int
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *PurchaseHandler) OnWaybillMsg(a *jdapi.API, msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
func (c *PurchaseHandler) OnWaybillMsg(vendorOrgCode string, msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
||||||
jxutils.CallMsgHandler(func() {
|
jxutils.CallMsgHandler(func() {
|
||||||
retVal = c.onWaybillMsg(a, msg)
|
retVal = c.onWaybillMsg(vendorOrgCode, msg)
|
||||||
}, jxutils.ComposeUniversalOrderID(msg.OrderID, model.VendorIDJD))
|
}, jxutils.ComposeUniversalOrderID(msg.OrderID, model.VendorIDJD))
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) onWaybillMsg(a *jdapi.API, msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
func (c *PurchaseHandler) onWaybillMsg(vendorOrgCode string, msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) {
|
||||||
order := c.callbackMsg2Waybill(msg)
|
order := c.callbackMsg2Waybill(msg)
|
||||||
switch msg.DeliveryStatus {
|
switch msg.DeliveryStatus {
|
||||||
case jdapi.DeliveryStatusWait4Grap:
|
case jdapi.DeliveryStatusWait4Grap:
|
||||||
@@ -63,6 +63,8 @@ func (c *PurchaseHandler) callbackMsg2Waybill(msg *jdapi.CallbackDeliveryStatusM
|
|||||||
VendorStatus: msg.DeliveryStatus,
|
VendorStatus: msg.DeliveryStatus,
|
||||||
StatusTime: utils.Str2Time(msg.DeliveryStatusTime),
|
StatusTime: utils.Str2Time(msg.DeliveryStatusTime),
|
||||||
Remark: msg.Remark,
|
Remark: msg.Remark,
|
||||||
|
|
||||||
|
VendorOrgCode: appKey2OrgCode(msg.AppKey),
|
||||||
}
|
}
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -556,7 +556,7 @@ func changeOrderStatus(vendorOrderID string, status int, remark string) (err err
|
|||||||
Remark: remark,
|
Remark: remark,
|
||||||
}
|
}
|
||||||
jxutils.CallMsgHandlerAsync(func() {
|
jxutils.CallMsgHandlerAsync(func() {
|
||||||
err = partner.CurOrderManager.OnOrderStatusChanged(orderStatus)
|
err = partner.CurOrderManager.OnOrderStatusChanged("", orderStatus)
|
||||||
}, jxutils.ComposeUniversalOrderID(vendorOrderID, model.VendorIDJX))
|
}, jxutils.ComposeUniversalOrderID(vendorOrderID, model.VendorIDJX))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ func onOrderMsg(msg *CallbackMsg) (retVal, errCode string, err error) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
status := callbackMsg2Status(msg)
|
status := callbackMsg2Status(msg)
|
||||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
err = partner.CurOrderManager.OnOrderStatusChanged("", status)
|
||||||
}
|
}
|
||||||
return retVal, errCode, err
|
return retVal, errCode, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ func onAfsOrderMsg(msg *CallbackMsg) (err error) {
|
|||||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, status)
|
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, status)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
err = partner.CurOrderManager.OnOrderStatusChanged("", status)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
err = partner.CurOrderManager.OnOrderStatusChanged(msg.AppID, status)
|
||||||
if err == nil && msg.Cmd == mtwmapi.MsgTypeOrderFinished {
|
if err == nil && msg.Cmd == mtwmapi.MsgTypeOrderFinished {
|
||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
orderMap, err := api.MtwmAPI.OrderGetOrderDetail(utils.Str2Int64(GetOrderIDFromMsg(msg)), true)
|
orderMap, err := api.MtwmAPI.OrderGetOrderDetail(utils.Str2Int64(GetOrderIDFromMsg(msg)), true)
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ func (c *PurchaseHandler) callbackMsg2Waybill(msg *mtwmapi.CallbackMsg) (retVal
|
|||||||
Status: c.GetWaybillStatusFromVendorStatus(vendorStatus),
|
Status: c.GetWaybillStatusFromVendorStatus(vendorStatus),
|
||||||
StatusTime: getTimeFromTimestamp(utils.Str2Int64(msg.FormData.Get("time"))),
|
StatusTime: getTimeFromTimestamp(utils.Str2Int64(msg.FormData.Get("time"))),
|
||||||
Remark: "",
|
Remark: "",
|
||||||
|
|
||||||
|
VendorOrgCode: msg.AppID,
|
||||||
}
|
}
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ func (p *PurchaseHandler) onOrderMsg(msg *weimobapi.CallbackMsg) (response *weim
|
|||||||
order.StatusTime = msg.StatusTime
|
order.StatusTime = msg.StatusTime
|
||||||
err = partner.CurOrderManager.OnOrderNew(order, status)
|
err = partner.CurOrderManager.OnOrderNew(order, status)
|
||||||
} else {
|
} else {
|
||||||
err = partner.CurOrderManager.OnOrderStatusChanged(status)
|
err = partner.CurOrderManager.OnOrderStatusChanged("", status)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user