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 { } func init() { controller.OrderManager.RegisterDeliveryPlatform(controller.VendorIDMTPS, new(WaybillController)) } func (c *WaybillController) OnWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { controller.CallMsgHandler(func() { retVal = c.onWaybillMsg(msg) }, msg.MtPeisongID) return retVal } func (c *WaybillController) OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionMsg) (retVal *mtpsapi.CallbackResponse) { controller.CallMsgHandler(func() { order := &model.Waybill{ VendorWaybillID: msg.MtPeisongID, VendorWaybillID2: utils.Int64ToStr(msg.DeliveryID), WaybillVendorID: controller.VendorIDMTPS, CourierName: msg.CourierName, CourierMobile: msg.CourierPhone, Status: controller.WaybillStatusFailed, VendorStatus: utils.Int2Str(msg.ExceptionCode), WaybillCreatedAt: utils.Timestamp2Time(msg.Timestamp), } order.VendorOrderID, order.OrderVendorID = controller.SplitUniversalOrderID(msg.OrderID) retVal = mtpsapi.Err2CallbackResponse(controller.WaybillManager.OnWaybillStatusChanged(order), "mtps OnWaybillExcept") }, msg.MtPeisongID) return retVal } func (c *WaybillController) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) { order := c.callbackMsg2Waybill(msg) switch msg.Status { case mtpsapi.OrderStatusWaitingForSchedule: order.Status = controller.WaybillStatusNew case mtpsapi.OrderStatusAccepted: order.Status = controller.WaybillStatusAccepted case mtpsapi.OrderStatusPickedUp: order.Status = controller.WaybillStatusDelivering case mtpsapi.OrderStatusDeliverred: order.Status = controller.WaybillStatusDelivered case mtpsapi.OrderStatusCanceled: order.Status = controller.WaybillStatusCanceled default: globals.SugarLogger.Warnf("unknown msg:%v", msg) return mtpsapi.SuccessResponse } return mtpsapi.Err2CallbackResponse(controller.WaybillManager.OnWaybillStatusChanged(order), order.VendorStatus) } func (c *WaybillController) callbackMsg2Waybill(msg *mtpsapi.CallbackOrderMsg) (retVal *model.Waybill) { retVal = &model.Waybill{ VendorWaybillID: msg.MtPeisongID, VendorWaybillID2: utils.Int64ToStr(msg.DeliveryID), WaybillVendorID: controller.VendorIDMTPS, CourierName: msg.CourierName, CourierMobile: msg.CourierPhone, VendorStatus: utils.Int2Str(msg.Status), WaybillCreatedAt: utils.Timestamp2Time(msg.Timestamp), } retVal.VendorOrderID, retVal.OrderVendorID = controller.SplitUniversalOrderID(msg.OrderID) return retVal }