Files
jx-callback/business/controller/elm/elm.go
2018-07-10 13:37:35 +08:00

65 lines
2.2 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/controller"
)
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
controller.RoutinePool.CallFun(func() {
retVal = new(OrderController).onOrderUserUrgeOrder(&innerMsg)
}, innerMsg.OrderID)
}
} 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
}