66 lines
2.3 KiB
Go
66 lines
2.3 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"
|
|
)
|
|
|
|
type Controller struct {
|
|
}
|
|
|
|
func (c *Controller) 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 = new(OrderController).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 = new(OrderController).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 = new(OrderController).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 = new(OrderController).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 = new(WaybillController).OnWaybillStatusMsg(&innerMsg)
|
|
}
|
|
} else {
|
|
retVal = elmapi.SuccessResponse
|
|
}
|
|
return retVal
|
|
}
|