package mtps import ( "git.rosy.net.cn/baseapi/platformapi/mtpsapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/controller" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/globals" ) type WaybillController struct { controller.WaybillController } func (c *WaybillController) OnWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { controller.RoutinePool.CallFun(func() { retVal = c.onWaybillMsg(msg) }, msg.MtPeisongID) return retVal } func (c *WaybillController) OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionMsg) (retVal *mtpsapi.CallbackResponse) { controller.RoutinePool.CallFun(func() { status := &model.OrderStatus{ VendorOrderID: msg.MtPeisongID, VendorID: controller.VendorIDMTPS, OrderType: controller.OrderTypeWaybill, VendorStatus: utils.Int2Str(msg.ExceptionCode), StatusTime: utils.Timestamp2Time(int64(msg.Timestamp)), } retVal = mtpsapi.Err2CallbackResponse(c.OnWaybillFailed(status), "mtps OnWaybillExcept") }, msg.MtPeisongID) return retVal } func (c *WaybillController) callbackMsg2Status(msg *mtpsapi.CallbackOrderMsg) *model.OrderStatus { status := &model.OrderStatus{ VendorOrderID: msg.MtPeisongID, VendorID: controller.VendorIDMTPS, OrderType: controller.OrderTypeWaybill, VendorStatus: utils.Int2Str(msg.Status), StatusTime: utils.Timestamp2Time(int64(msg.Timestamp)), } return status } func (c *WaybillController) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { switch msg.Status { case mtpsapi.OrderStatusWaitingForSchedule: retVal = c.onWaybillNew(msg) case mtpsapi.OrderStatusAccepted: retVal = c.onWaybillAccepted(msg) case mtpsapi.OrderStatusPickedUp: retVal = c.onWaybillPickedUp(msg) case mtpsapi.OrderStatusDeliverred: retVal = c.onWaybillDelivered(msg) case mtpsapi.OrderStatusCanceled: retVal = c.onWaybillCanceled(msg) default: globals.SugarLogger.Warnf("unknown msg:%v", msg) retVal = mtpsapi.SuccessResponse } return retVal } func (c *WaybillController) onWaybillNew(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { order := &model.Waybill{ VendorOrderID: msg.OrderID, VendorID: controller.GetVendorIDFromUniversalOrderID(msg.OrderID), VendorWaybillID: msg.MtPeisongID, VendorWaybillID2: utils.Int64ToStr(msg.DeliveryID), WaybillVendorID: controller.VendorIDMTPS, CourierName: msg.CourierName, CourierMobile: msg.CourierPhone, WaybillCreatedAt: utils.Timestamp2Time(msg.Timestamp), } return mtpsapi.Err2CallbackResponse(c.OnWaybillNew(order), "mtps onWaybillNew") } func (c *WaybillController) onWaybillAccepted(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { return mtpsapi.Err2CallbackResponse(c.OnWaybillAccepted(c.callbackMsg2Status(msg)), "mtps onWaybillAccepted") } func (c *WaybillController) onWaybillPickedUp(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { return mtpsapi.Err2CallbackResponse(c.OnWaybillDelivering(c.callbackMsg2Status(msg)), "mtps onWaybillPickedUp") } func (c *WaybillController) onWaybillDelivered(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { return mtpsapi.Err2CallbackResponse(c.OnWaybillDelivered(c.callbackMsg2Status(msg)), "mtps onWaybillDelivered") } func (c *WaybillController) onWaybillCanceled(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { return mtpsapi.Err2CallbackResponse(c.OnWaybillCanceled(c.callbackMsg2Status(msg)), "mtps onWaybillCanceled") }