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 { controller.WaybillController } func (c *WaybillController) OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { controller.RoutinePool.CallFun(func() { retVal = c.onWaybillMsg(msg) }, msg.OrderID) return retVal } func (c *WaybillController) callbackMsg2Status(msg *dadaapi.CallbackMsg) *model.OrderStatus { orderStatus := &model.OrderStatus{ VendorOrderID: msg.ClientID, VendorID: controller.VendorIDDada, OrderType: controller.OrderTypeWaybill, VendorStatus: utils.Int2Str(msg.OrderStatus), StatusTime: utils.Timestamp2Time(int64(msg.UpdateTime)), } return orderStatus } func (c *WaybillController) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { switch msg.OrderStatus { case dadaapi.OrderStatusWaitingForAccept: retVal = c.onWaybillNew(msg) case dadaapi.OrderStatusAccepted: retVal = c.onWaybillAccepted(msg) case dadaapi.OrderStatusDeliverying: retVal = c.onWaybillDelivering(msg) case dadaapi.OrderStatusFinished: retVal = c.onWaybillDelivered(msg) case dadaapi.OrderStatusCanceled: retVal = c.onWaybillCanceled(msg) case dadaapi.OrderStatusExpired, dadaapi.OrderStatusAddOrderFailed: retVal = c.onWaybillFailed(msg) default: retVal = c.onWaybillOtherStatus(msg) } return retVal } func (c *WaybillController) onWaybillNew(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { order := &model.Waybill{ VendorOrderID: msg.OrderID, VendorID: controller.GetVendorIDFromUniversalOrderID(msg.OrderID), VendorWaybillID: msg.ClientID, WaybillVendorID: controller.VendorIDDada, CourierName: msg.DmName, CourierMobile: msg.DmMobile, WaybillCreatedAt: utils.Timestamp2Time(int64(msg.UpdateTime)), } return dadaapi.Err2CallbackResponse(c.OnWaybillNew(order), "dada onWaybillNew") } func (c *WaybillController) onWaybillAccepted(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { return dadaapi.Err2CallbackResponse(c.OnWaybillAccepted(c.callbackMsg2Status(msg)), "dada onWaybillAccepted") } func (c *WaybillController) onWaybillDelivering(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { return dadaapi.Err2CallbackResponse(c.OnWaybillDelivering(c.callbackMsg2Status(msg)), "dada onWaybillDelivering") } func (c *WaybillController) onWaybillDelivered(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { return dadaapi.Err2CallbackResponse(c.OnWaybillDelivered(c.callbackMsg2Status(msg)), "dada onWaybillDelivered") } func (c *WaybillController) onWaybillCanceled(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { return dadaapi.Err2CallbackResponse(c.OnWaybillCanceled(c.callbackMsg2Status(msg)), "dada onWaybillCanceled") } func (c *WaybillController) onWaybillFailed(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { return dadaapi.Err2CallbackResponse(c.OnWaybillFailed(c.callbackMsg2Status(msg)), "dada onWaybillFailed") } func (c *WaybillController) onWaybillOtherStatus(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) { return dadaapi.Err2CallbackResponse(c.OnWaybillOtherStatus(c.callbackMsg2Status(msg)), "dada onWaybillOtherStatus") }