package ebai import ( "git.rosy.net.cn/baseapi/platformapi/ebaiapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals/api" ) var ( VendorWaybillStatus2StatusMap = map[string]int{ ebaiapi.WaybillStatusNew: model.WaybillStatusNew, ebaiapi.WaybillStatusRequestDelivery: model.WaybillStatusUnknown, ebaiapi.WaybillStatusWait4Courier: model.WaybillStatusUnknown, ebaiapi.WaybillStatusCourierAccepted: model.WaybillStatusAccepted, ebaiapi.WaybillStatusCourierPickedup: model.WaybillStatusDelivering, ebaiapi.WaybillStatusDeliveryCancled: model.WaybillStatusCanceled, ebaiapi.WaybillStatusFinished: model.WaybillStatusDelivered, ebaiapi.WaybillStatusExceptional: model.WaybillStatusUnknown, ebaiapi.WaybillStatusSelfDelivery: model.WaybillStatusUnknown, ebaiapi.WaybillStatusNotInDelivering: model.WaybillStatusUnknown, ebaiapi.WaybillStatusDeliveryRejected: model.WaybillStatusAcceptCanceled, // ? } ) func (p *PurchaseHandler) GetWaybillStatusFromVendorStatus(vendorStatus string) int { if status, ok := VendorWaybillStatus2StatusMap[vendorStatus]; ok { return status } return model.WaybillStatusUnknown } func (c *PurchaseHandler) onWaybillMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaiapi.CallbackResponse) { order := c.callbackMsg2Waybill(msg) if order.Status == model.WaybillStatusAccepted { if result, err := api.EbaiAPI.OrderGet(order.VendorOrderID); err != nil { return api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, order.VendorOrderID) } else { order.CourierMobile = utils.Interface2String(result["order"].(map[string]interface{})["delivery_phone"]) } } return api.EbaiAPI.Err2CallbackResponse(msg.Cmd, partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus) } func (c *PurchaseHandler) callbackMsg2Waybill(msg *ebaiapi.CallbackMsg) (retVal *model.Waybill) { body := msg.Body vendorStatus := body["status"].(string) retVal = &model.Waybill{ VendorOrderID: body["order_id"].(string), OrderVendorID: model.VendorIDEBAI, VendorWaybillID: body["order_id"].(string), WaybillVendorID: model.VendorIDEBAI, Status: c.GetWaybillStatusFromVendorStatus(vendorStatus), CourierName: "", // 饿百取不到骑手的名字 // CourierMobile: msg.Phone, VendorStatus: vendorStatus, StatusTime: utils.Timestamp2Time(msg.Timestamp), } return retVal }