85 lines
2.6 KiB
Go
85 lines
2.6 KiB
Go
package elm
|
|
|
|
import (
|
|
"git.rosy.net.cn/baseapi/platformapi/elmapi"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
|
"git.rosy.net.cn/jx-callback/business/model"
|
|
"git.rosy.net.cn/jx-callback/business/partner"
|
|
)
|
|
|
|
var (
|
|
curPurchaseHandler *PurchaseHandler
|
|
)
|
|
|
|
type PurchaseHandler struct {
|
|
partner.BasePurchasePlatform
|
|
}
|
|
|
|
func init() {
|
|
curPurchaseHandler = new(PurchaseHandler)
|
|
partner.RegisterPurchasePlatform(curPurchaseHandler)
|
|
}
|
|
|
|
func (c *PurchaseHandler) GetVendorID() int {
|
|
return model.VendorIDELM
|
|
}
|
|
|
|
func OnCallbackMsg(msg *elmapi.CallbackMsg) (retVal *elmapi.CallbackResponse) {
|
|
return curPurchaseHandler.OnCallbackMsg(msg)
|
|
}
|
|
|
|
func (c *PurchaseHandler) OnCallbackMsg(msg *elmapi.CallbackMsg) (retVal *elmapi.CallbackResponse) {
|
|
if msg.Type == elmapi.MsgTypeOrderValid {
|
|
innerMsg := make(map[string]interface{})
|
|
err := utils.UnmarshalUseNumber([]byte(msg.Message), &innerMsg)
|
|
if err != nil {
|
|
retVal = elmapi.Err2CallbackResponse(err, "")
|
|
} else {
|
|
innerMsg["msgType"] = msg.Type
|
|
retVal = c.OnOrderNewMsg(innerMsg)
|
|
}
|
|
} else if msg.Type > elmapi.MsgTypeOrderValid && msg.Type < elmapi.MsgTypeUserApplyCancel {
|
|
var innerMsg elmapi.CallbackOrderStatusMsg
|
|
err := utils.UnmarshalUseNumber([]byte(msg.Message), &innerMsg)
|
|
if err != nil {
|
|
retVal = elmapi.Err2CallbackResponse(err, "")
|
|
} else {
|
|
innerMsg.MsgType = msg.Type
|
|
retVal = c.OnOrderStatusMsg(&innerMsg)
|
|
}
|
|
} else if msg.Type >= elmapi.MsgTypeUserApplyCancel && msg.Type < elmapi.MsgTypeUserUrgeOrder {
|
|
var innerMsg elmapi.CallbackOrderCancelRefundMsg
|
|
err := utils.UnmarshalUseNumber([]byte(msg.Message), &innerMsg)
|
|
if err != nil {
|
|
retVal = elmapi.Err2CallbackResponse(err, "")
|
|
} else {
|
|
innerMsg.MsgType = msg.Type
|
|
retVal = c.OnOrderCancelRefundMsg(&innerMsg)
|
|
}
|
|
} else if msg.Type == elmapi.MsgTypeUserUrgeOrder {
|
|
var innerMsg elmapi.CallbackOrderUrgeMsg
|
|
err := utils.UnmarshalUseNumber([]byte(msg.Message), &innerMsg)
|
|
if err != nil {
|
|
retVal = elmapi.Err2CallbackResponse(err, "")
|
|
} else {
|
|
innerMsg.MsgType = msg.Type
|
|
jxutils.CallMsgHandler(func() {
|
|
retVal = c.onOrderUserUrgeOrder(&innerMsg)
|
|
}, jxutils.ComposeUniversalOrderID(innerMsg.OrderID, model.VendorIDELM))
|
|
}
|
|
} else if msg.Type >= elmapi.MsgTypeWaybillWait4DeliveryVendor && msg.Type <= elmapi.MsgTypeRejectedSystemError {
|
|
var innerMsg elmapi.CallbackWaybillStatusMsg
|
|
err := utils.UnmarshalUseNumber([]byte(msg.Message), &innerMsg)
|
|
if err != nil {
|
|
retVal = elmapi.Err2CallbackResponse(err, "")
|
|
} else {
|
|
innerMsg.MsgType = msg.Type
|
|
retVal = c.OnWaybillStatusMsg(&innerMsg)
|
|
}
|
|
} else {
|
|
retVal = elmapi.SuccessResponse
|
|
}
|
|
return retVal
|
|
}
|