package dada import ( "git.rosy.net.cn/baseapi/platformapi/dadaapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/controller" "git.rosy.net.cn/jx-callback/business/model" ) type WaybillController struct { } func init() { controller.OrderManager.RegisterDeliveryPlatform(controller.VendorIDDada, new(WaybillController)) } func (c *WaybillController) OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { controller.CallMsgHandler(func() { retVal = c.onWaybillMsg(msg) }, msg.OrderID) return retVal } func (c *WaybillController) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { order := c.callbackMsg2Waybill(msg) switch msg.OrderStatus { case dadaapi.OrderStatusWaitingForAccept: order.Status = controller.WaybillStatusNew case dadaapi.OrderStatusAccepted: order.Status = controller.WaybillStatusAccepted case dadaapi.OrderStatusDeliverying: order.Status = controller.WaybillStatusDelivering case dadaapi.OrderStatusFinished: order.Status = controller.WaybillStatusDelivered case dadaapi.OrderStatusCanceled: order.Status = controller.WaybillStatusCanceled case dadaapi.OrderStatusExpired, dadaapi.OrderStatusAddOrderFailed: order.Status = controller.WaybillStatusFailed default: order.Status = controller.WaybillStatusUnknown } return dadaapi.Err2CallbackResponse(controller.WaybillManager.OnWaybillStatusChanged(order), utils.Int2Str(order.Status)) } func (c *WaybillController) callbackMsg2Waybill(msg *dadaapi.CallbackMsg) (retVal *model.Waybill) { retVal = &model.Waybill{ VendorWaybillID: msg.ClientID, WaybillVendorID: controller.VendorIDDada, CourierName: msg.DmName, CourierMobile: msg.DmMobile, VendorStatus: utils.Int2Str(msg.OrderStatus), WaybillCreatedAt: utils.Timestamp2Time(int64(msg.UpdateTime)), } retVal.VendorOrderID, retVal.OrderVendorID = controller.SplitUniversalOrderID(msg.OrderID) return retVal }