This commit is contained in:
richboo111
2023-05-23 09:38:57 +08:00
parent de25d3d9f7
commit e17074366b
8 changed files with 988 additions and 4 deletions

140
platformapi/sfps2/order.go Normal file
View File

@@ -0,0 +1,140 @@
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
}
}