package jd import ( "git.rosy.net.cn/baseapi/platformapi/jdapi" "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 { controller.WaybillController } func (c *WaybillController) OnWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { controller.RoutinePool.CallFun(func() { retVal = c.onWaybillMsg(msg) }, msg.OrderID) return retVal } func (c *WaybillController) callbackMsg2Status(msg *jdapi.CallbackDeliveryStatusMsg) *model.OrderStatus { status := &model.OrderStatus{ VendorOrderID: msg.OrderID, VendorID: controller.VendorIDJD, OrderType: controller.OrderTypeWaybill, VendorStatus: msg.DeliveryStatus, StatusTime: utils.Str2Time(msg.DeliveryStatusTime), } return status } func (c *WaybillController) onWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { switch msg.DeliveryStatus { case jdapi.DeliveryStatusWait4Grap: retVal = c.onWaybillNew(msg) case jdapi.DeliveryStatusAccepted: retVal = c.onWaybillAccepted(msg) case jdapi.DeliveryStatusCourierCanceled: retVal = c.onWaybillAcceptCanceled(msg) case jdapi.DeliveryStatusGotGoods: retVal = c.onWaybillGotGoods(msg) case jdapi.DeliveryStatusFinished: retVal = c.onWaybillFinished(msg) case jdapi.DeliveryStatusFailedDelivery: retVal = c.onWaybillFailed(msg) default: retVal = c.onWaybillOtherStatus(msg) } return retVal } func (c *WaybillController) onWaybillNew(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { order := &model.Waybill{ VendorOrderID: msg.OrderID, VendorID: controller.VendorIDJD, VendorWaybillID: msg.OrderID, WaybillVendorID: controller.VendorIDJD, CourierName: msg.DeliveryManName, CourierMobile: msg.DeliveryManPhone, WaybillCreatedAt: utils.Str2Time(msg.DeliveryStatusTime), } return jdapi.Err2CallbackResponse(c.OnWaybillNew(order), "jd onWaybillNew") } func (c *WaybillController) onWaybillAccepted(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { return jdapi.Err2CallbackResponse(c.OnWaybillAccepted(c.callbackMsg2Status(msg)), "jd onWaybillAccepted") } func (c *WaybillController) onWaybillAcceptCanceled(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { return jdapi.Err2CallbackResponse(c.OnWaybillAcceptCanceled(c.callbackMsg2Status(msg)), "jd onWaybillAcceptCanceled") } func (c *WaybillController) onWaybillGotGoods(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { return jdapi.Err2CallbackResponse(c.OnWaybillDelivering(c.callbackMsg2Status(msg)), "jd onWaybillGotGoods") } func (c *WaybillController) onWaybillFinished(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { return jdapi.Err2CallbackResponse(c.OnWaybillDelivered(c.callbackMsg2Status(msg)), "jd onWaybillFinished") } func (c *WaybillController) onWaybillFailed(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { return jdapi.Err2CallbackResponse(c.OnWaybillFailed(c.callbackMsg2Status(msg)), "jd onWaybillFailed") } func (c *WaybillController) onWaybillOtherStatus(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { return jdapi.Err2CallbackResponse(c.OnWaybillOtherStatus(c.callbackMsg2Status(msg)), "jd onWaybillOtherStatus") }