Files
baseapi/platformapi/fnpsapi_v3/order.go
2022-03-18 14:08:15 +08:00

171 lines
7.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
//}