Files
baseapi/platformapi/sfps2/order.go
richboo111 e17074366b sfps
2023-05-23 09:38:57 +08:00

141 lines
4.1 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 sfps2
import (
"encoding/json"
"errors"
"fmt"
"time"
)
// PreCreateOrder 预创建订单(店铺)
func (a *API) PreCreateOrder(preOrder *PreCreateOrderReq) (price float64, err error) {
//补全默认参数
preOrder.PushTime = time.Now().Unix()
preOrder.DevId = a.devId
resp := a.HttpPostJson("precreateorder", preOrder)
if resp.HttpStatusCode != HttpStatusSuccessCode {
return 0, errors.New("HTTP请求错误请检查重试")
}
if resp.BaseRetVal.ErrorCode != SuccessCode {
return 0, fmt.Errorf("%s", resp.BaseRetVal.ErrorMsg)
}
retVal := PreCreateOrderResp{}
s, _ := json.Marshal(resp.BaseRetVal.Result)
if err = json.Unmarshal(s, &retVal); err == nil {
return retVal.EstimatePayMoney, nil
} else {
return 0, err
}
}
// CreateOrder 创建订单(店铺)
func (a *API) CreateOrder(order *CreateOrderReq) (sfOrderID, sfBillID string, totalPrice int, err error) {
//补全默认参数
order.PushTime = time.Now().Unix()
order.Version = DefaultVersion
order.DevId = a.devId
resp := a.HttpPostJson("createorder", order)
if resp.HttpStatusCode != HttpStatusSuccessCode {
return "", "", 0, errors.New("HTTP请求错误请检查重试")
}
if resp.BaseRetVal.ErrorCode != SuccessCode {
return "", "", 0, fmt.Errorf("%s", resp.BaseRetVal.ErrorMsg)
}
retVal := CreateOrderResp{}
s, _ := json.Marshal(resp.BaseRetVal.Result)
if err = json.Unmarshal(s, &retVal); err == nil {
return retVal.SFOrderID, retVal.SFBillID, retVal.TotalPrice, nil
} else {
return "", "", 0, err
}
}
// PreCancelOrder 预取消订单
func (a *API) PreCancelOrder(sfOrderID string) (isCancel bool, err error) {
param := PreCancelOrderReq{
DevId: a.devId,
OrderID: sfOrderID,
PushTime: time.Now().Unix(),
}
resp := a.HttpPostJson("precancelorder", param)
if resp.HttpStatusCode != HttpStatusSuccessCode {
return false, errors.New("HTTP请求错误请检查重试")
}
if resp.BaseRetVal.ErrorCode != SuccessCode {
return false, fmt.Errorf("%s", resp.BaseRetVal.ErrorMsg)
}
retVal := PreCancelOrderResp{}
s, _ := json.Marshal(resp.BaseRetVal.Result)
if err = json.Unmarshal(s, &retVal); err == nil {
return retVal.CouldCancel, nil
} else {
return false, err
}
}
// CancelOrder 取消订单
func (a *API) CancelOrder(sfOrderID string) (err error) {
param := &CancelOrderReq{
DevId: a.devId,
OrderID: sfOrderID,
PushTime: time.Now().Unix(),
CancelCode: CancelCodeChangePlan,
}
resp := a.HttpPostJson("cancelorder", param)
if resp.HttpStatusCode != HttpStatusSuccessCode {
return errors.New("HTTP请求错误请检查重试")
}
if resp.BaseRetVal.ErrorCode != SuccessCode {
return fmt.Errorf("%s", resp.BaseRetVal.ErrorMsg)
}
return nil
}
// GetOrderStatus 订单实时信息查询
func (a *API) GetOrderStatus(sfOrderID string) (retVal *GetOrderStatusResp, err error) {
param := &GetOrderStatusReq{
DevId: a.devId,
OrderID: sfOrderID,
PushTime: time.Now().Unix(),
//OrderType: orderType,
}
resp := a.HttpPostJson("getorderstatus", param)
if resp.HttpStatusCode != HttpStatusSuccessCode {
return nil, errors.New("HTTP请求错误请检查重试")
}
if resp.BaseRetVal.ErrorCode != SuccessCode {
return nil, fmt.Errorf("%s", resp.BaseRetVal.ErrorMsg)
}
s, _ := json.Marshal(resp.BaseRetVal.Result)
if err = json.Unmarshal(s, &retVal); err == nil {
return retVal, nil
} else {
return nil, err
}
}
// GetRiderLatestPosition 获取骑手实时坐标
func (a *API) GetRiderLatestPosition(sfOrderID string) (retVal *RiderLatestPositionResp, err error) {
param := &RiderLatestPositionReq{
DevId: a.devId,
OrderID: sfOrderID,
PushTime: time.Now().Unix(),
OrderType: OrderTypeSF, //暂时默认
}
resp := a.HttpPostJson("riderlatestposition", param)
if resp.HttpStatusCode != HttpStatusSuccessCode {
return nil, errors.New("HTTP请求错误请检查重试")
}
if resp.BaseRetVal.ErrorCode != SuccessCode {
return nil, fmt.Errorf("%s", resp.BaseRetVal.ErrorMsg)
}
s, _ := json.Marshal(resp.BaseRetVal.Result)
if err = json.Unmarshal(s, &retVal); err == nil {
return retVal, nil
} else {
return nil, err
}
}