package gome_live_show import ( "encoding/json" "errors" "git.rosy.net.cn/baseapi/utils" "net/http" ) // 根据创建时间查询订单的列表信息 // 为了防止访问及返回的压力过大,可支持的时间区间查询范围, // 不允许超过 30 分钟,每页显示 10 条;正常频率查询:增量查询,建议1~3 分钟查询一次, // 查询开始时间为上次查询结束时间,查询结束时间为当前 1~3 分钟之前;补充频率查询:为了防止数据遗漏, // 建议10分钟查询一次。例如当前时间为 10:50,查询区间为10:10~10:30,具体细节有调用方把握,减少数据遗漏的可能性 func (a *API) QueryOrderListByTime(req *QueryOrderListForTimeReq) (*QueryOrderListForTimeRes, error) { byteReq, err := json.Marshal(req) if err != nil { return nil, err } gomeResult, err := a.AccessAPI(gomeUrl, QueryOrderList, http.MethodPost, utils.Struct2FlatMap(a.MakeRequestParam(byteReq))) if err != nil { return nil, err } result := &QueryOrderListForTimeRes{} if err := utils.Map2StructByJson(gomeResult, result, false); err != nil { return nil, err } if result.Code != 200 { return nil, errors.New(result.Message) } return result, nil } // 查询订单详情接口 // 此接口主要用于订单下单后获取订单详细信息,包括订单基础信息、商品信息、配送信息、物流信息等 func (a *API) QueryOrderDetail(orderNo string) (*QueryOrderDetailRes, error) { byteReq, err := json.Marshal(map[string]string{"orderNo": orderNo}) if err != nil { return nil, err } gomeResult, err := a.AccessAPI(gomeUrl, QueryOrderDetail, http.MethodPost, utils.Struct2FlatMap(a.MakeRequestParam(byteReq))) if err != nil { return nil, err } result := &QueryOrderDetailRes{} if err := utils.Map2StructByJson(gomeResult, result, false); err != nil { return nil, err } if result.Code != 200 { return nil, errors.New(result.Message) } return result, nil } // 商家取消订单 ,订单处于待备货或待发货的情况下,商家可主动操作取消订单,取消成功后订单变成支付后取消状态 func (a *API) CancelOrder(orderNo string) (*SystemParameterRes, error) { byteReq, err := json.Marshal(map[string]string{"orderNo": orderNo}) if err != nil { return nil, err } gomeResult, err := a.AccessAPI(gomeUrl, CancelOrder, http.MethodPost, utils.Struct2FlatMap(a.MakeRequestParam(byteReq))) if err != nil { return nil, err } result := &SystemParameterRes{} if err := utils.Map2StructByJson(gomeResult, result, false); err != nil { return nil, err } if result.Code != 200 { return nil, errors.New(result.Message) } return result, nil } // 接单 func (a *API) ConfirmOrder(orderNo string) (*SystemParameterRes, error) { byteReq, err := json.Marshal(map[string]string{"orderNo": orderNo}) if err != nil { return nil, err } gomeResult, err := a.AccessAPI(gomeUrl, ConfirmOrder, http.MethodPost, utils.Struct2FlatMap(a.MakeRequestParam(byteReq))) if err != nil { return nil, err } result := &SystemParameterRes{} if err := utils.Map2StructByJson(gomeResult, result, false); err != nil { return nil, err } if result.Code != 200 { return nil, errors.New(result.Message) } return result, nil } // 发货接口 此接口主要用于商户基于订单发货场景,第三方平台调用成功后,订单状态将变为待收货 func (a *API) DeliveryOrder(param *DeliveryOrderReq) (*SystemParameterRes, error) { byteReq, err := json.Marshal(param) if err != nil { return nil, err } gomeResult, err := a.AccessAPI(gomeUrl, DeliveryOrder, http.MethodPost, utils.Struct2FlatMap(a.MakeRequestParam(byteReq))) if err != nil { return nil, err } result := &SystemParameterRes{} if err := utils.Map2StructByJson(gomeResult, result, false); err != nil { return nil, err } if result.Code != 200 { return nil, errors.New(result.Message) } return result, nil } // 核销接口此接口主要用于 C 端用户下单自提,商家核销场景,核销成功订单状态变成已完成(订单号/核销码) func (a *API) CheckOrder(orderNo, deliverCheckCode string) (*SystemParameterRes, error) { byteReq, err := json.Marshal(map[string]string{"orderNo": orderNo, "deliverCheckCode": deliverCheckCode}) if err != nil { return nil, err } gomeResult, err := a.AccessAPI(gomeUrl, CheckOutOrder, http.MethodPost, utils.Struct2FlatMap(a.MakeRequestParam(byteReq))) if err != nil { return nil, err } result := &SystemParameterRes{} if err := utils.Map2StructByJson(gomeResult, result, false); err != nil { return nil, err } if result.Code != 200 { return nil, errors.New(result.Message) } return result, nil } // 此接口主要用于,售中(待发货状态)订单,用户发起全单取消,申请后进行商家审核场景,商家审核通过订单将变成备货后取消状态,商家拒绝订单则进行走正向流程 func (a *API) OrderAgreeOrRefuseAfterApply(req *AgreeOrRefuseCheck) (*SystemParameterRes, error) { byteReq, err := json.Marshal(req) if err != nil { return nil, err } gomeResult, err := a.AccessAPI(gomeUrl, CancelAgreeOrRefuseAfterApply, http.MethodPost, utils.Struct2FlatMap(a.MakeRequestParam(byteReq))) if err != nil { return nil, err } result := &SystemParameterRes{} if err := utils.Map2StructByJson(gomeResult, result, false); err != nil { return nil, err } if result.Code != 200 { return nil, errors.New(result.Message) } return result, nil }