Files
jx-callback/business/partner/purchase/ebai/waybill.go

63 lines
2.5 KiB
Go

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 := utils.Int64ToStr(utils.MustInterface2Int64(body["status"]))
orderID := utils.Int64ToStr(utils.MustInterface2Int64(msg.Body["order_id"]))
retVal = &model.Waybill{
VendorOrderID: orderID,
OrderVendorID: model.VendorIDEBAI,
VendorWaybillID: orderID,
WaybillVendorID: model.VendorIDEBAI,
Status: c.GetWaybillStatusFromVendorStatus(vendorStatus),
CourierName: "", // 饿百取不到骑手的名字
// CourierMobile: msg.Phone,
VendorStatus: vendorStatus,
StatusTime: utils.Timestamp2Time(msg.Timestamp),
}
return retVal
}