package fnpsapi import ( "encoding/json" "git.rosy.net.cn/baseapi/utils" ) const ( OrderCancelReson1 = 1 // 1:物流原因:订单长时间未分配骑手, OrderCancelReson2 = 2 // 2:物流原因:分配骑手后,骑手长时间未取件 , OrderCancelReson3 = 3 // 3:物流原因:骑手告知不配送,让取消订单, OrderCancelReson4 = 4 // 4:商品缺货/无法出货/已售完, OrderCancelReson5 = 5 // 5:商户联系不上门店/门店关门了, OrderCancelReson6 = 6 // 6:商户发错单, OrderCancelReson7 = 7 // 7:商户/顾客自身定位错误, OrderCancelReson8 = 8 // 8:商户改其他第三方配送, OrderCancelReson9 = 9 // 9:顾客下错单/临时不想要了, OrderCancelReson10 = 10 // 10:顾客自取/不在家/要求另改时间配送)(0类型已下线) OrderStatusAccept = 1 //系统已接单 OrderStatusAssigned = 20 //已分配骑手 OrderStatusArrived = 80 //已到店 OrderStatusDelivering = 2 //配送中 OrderStatusDelivered = 3 //已送达 OrderStatusException = 5 //异常 ) // 蜂鸟预下单 func (a *API) PreCreateByShopFn(basicParams *PreCreateOrder) (deliveryFee, baseDeliveryFee int64, err error) { preOrder := a.MakeFnRequestHead() params := utils.Struct2MapByJson(basicParams) preOrder["business_data"] = params result, err := a.AccessAPI(ApiURL, "preCreateOrder", RequestPost, params) if err != nil { return 0, 0, err } preOrderResult := PreCreateOrderResp{} if err := json.Unmarshal([]byte(result["business_data"].(string)), &preOrderResult); err != nil { return 0, 0, err } deliveryFee = utils.Float64TwoInt64(utils.MustInterface2Float64(preOrderResult.GoodsInfos[0].ActualDeliveryAmountCent)) // 订单配送价格 baseDeliveryFee = utils.Float64TwoInt64(utils.MustInterface2Float64(preOrderResult.GoodsInfos[0].TotalDeliveryAmountCent)) // 订单优惠价格 return deliveryFee, baseDeliveryFee, nil } // 蜂鸟正式下单 func (a *API) CreateOrder(createOrderParam *CreateOrderReqParam) (err error) { orderHead := a.MakeFnRequestHead() bytes, err := json.Marshal(createOrderParam) if err != nil { return err } orderHead["business_data"] = string(bytes) _, err = a.AccessAPI(ApiURL, "createOrder", RequestPost, orderHead) return err } type ReceiverInfo struct { ReceiverName string `json:"receiver_name,omitempty"` ReceiverPrimaryPhone string `json:"receiver_primary_phone,omitempty"` ReceiverSecondPhone string `json:"receiver_second_phone,omitempty"` ReceiverAddress string `json:"receiver_address,omitempty"` ReceiverLongitude float64 `json:"receiver_longitude,omitempty"` ReceiverLatitude float64 `json:"receiver_latitude,omitempty"` PositionSource int `json:"position_source,omitempty"` // 经纬度来源 } type TransportInfo struct { TransportName string `json:"transport_name,omitempty"` TransportAddress string `json:"transport_address,omitempty"` TransportLongitude float64 `json:"transport_longitude,omitempty"` TransportLatitude float64 `json:"transport_latitude,omitempty"` PositionSource int `json:"position_source,omitempty"` // 经纬度来源 TransportTel string `json:"transport_tel,omitempty"` TransportRemark string `json:"transport_remark,omitempty"` } type ItemsJSON struct { ItemID string `json:"item_id,omitempty"` ItemName string `json:"item_name,omitempty"` ItemQuantity int `json:"item_quantity,omitempty"` ItemPrice float64 `json:"item_price"` ItemActualPrice float64 `json:"item_actual_price"` ItemSize int `json:"item_size,omitempty"` ItemRemark string `json:"item_remark,omitempty"` IsNeedPackage int `json:"is_need_package"` IsAgentPurchase int `json:"is_agent_purchase"` AgentPurchasePrice float64 `json:"agent_purchase_price,omitempty"` } //order_cancel_reason_code 订单取消原因代码(1:用户取消,2:商家取消) // order_cancel_code 订单取消编码( // 1:物流原因:订单长时间未分配骑手, // 2:物流原因:分配骑手后,骑手长时间未取件 , // 3:物流原因:骑手告知不配送,让取消订单, // 4:商品缺货/无法出货/已售完, 5:商户联系不上门店/门店关门了, 6:商户发错单, // 7:商户/顾客自身定位错误, 8:商户改其他第三方配送, 9:顾客下错单/临时不想要了, // 10:顾客自取/不在家/要求另改时间配送)(0类型已下线) type CancelOrderParam struct { PartnerOrderCode string `json:"partner_order_code,omitempty"` OrderCancelReasonCode int `json:"order_cancel_reason_code,omitempty"` OrderCancelCode int `json:"order_cancel_code,omitempty"` OrderCancelDescription string `json:"order_cancel_description,omitempty"` OrderCancelTime int64 `json:"order_cancel_time,omitempty"` } // //func (a *API) CancelOrder(cancelOrderParam *CancelOrderParam) (err error) { // params := utils.Struct2FlatMap(cancelOrderParam) // _, err = a.AccessAPI("v2/order/cancel", URL, params, true) // return err //} // //func (a *API) ComplaintOrder(cancelOrderParam *CancelOrderParam) (err error) { // params := utils.Struct2FlatMap(cancelOrderParam) // _, err = a.AccessAPI("v2/order/complaint", URL, params, true) // return err //} type QueryOrderResult struct { AbnormalCode string `json:"abnormal_code"` AbnormalDesc string `json:"abnormal_desc"` CarrierDriverID int `json:"carrier_driver_id"` CarrierDriverName string `json:"carrier_driver_name"` CarrierDriverPhone string `json:"carrier_driver_phone"` ComplaintDescription interface{} `json:"complaintDescription"` ComplaintStatus interface{} `json:"complaintStatus"` EstimateArriveTime int64 `json:"estimate_arrive_time"` EventLogDetails []struct { CarrierDriverName string `json:"carrier_driver_name"` CarrierDriverPhone string `json:"carrier_driver_phone"` OccurTime int64 `json:"occur_time"` OrderStatus int `json:"order_status"` } `json:"event_log_details"` HandleID interface{} `json:"handleId"` OrderID interface{} `json:"orderId"` OrderStatus int `json:"order_status"` OrderTotalDeliveryCost float64 `json:"order_total_delivery_cost"` OrderTotalDeliveryDiscount interface{} `json:"order_total_delivery_discount"` OvertimeCompensationCost float64 `json:"overtime_compensation_cost"` Reason string `json:"reason"` SupportClaims bool `json:"support_claims"` TrackingID int64 `json:"trackingId"` TrackingID2 int64 `json:"tracking_id"` TransportStationID string `json:"transport_station_id"` TransportStationTel string `json:"transport_station_tel"` } // //func (a *API) QueryOrder(partnerOrderCode string) (queryOrderResult *QueryOrderResult, err error) { // result, err := a.AccessAPI("v2/order/query", URL, map[string]interface{}{ // "partner_order_code": partnerOrderCode, // }, true) // if err == nil { // utils.Map2StructByJson(result["data"], &queryOrderResult, false) // } // return queryOrderResult, err //} // //func (a *API) ComplaintRider(partnerOrderCode string, orderComplaintCode int) (err error) { // _, err = a.AccessAPI("v2/order/complaint", URL, map[string]interface{}{ // "partner_order_code": partnerOrderCode, // "order_complaint_code": orderComplaintCode, // "order_complaint_time": time.Now().UnixNano() / 1e6, // }, true) // return err //}