wpc_deliver.go 1.8 KB
package wpc

import (
	"context"
	"github.com/gogf/gf/encoding/gjson"
	"github.com/gogf/gf/frame/g"
)

type deliverWpc struct {
}

var Deliver = deliverWpc{}

type DeliverListReq struct {
	ChannelId  string `json:"vopChannelId"`
	UserNumber string `json:"userNumber"`
}

type DeliverListRes struct {
	ReturnCode string `json:"returnCode"`
	Result     []struct {
		CustNo   string `json:"custNo"`
		CustName string `json:"custName"`
		CustCode string `json:"custCode"`
	} `json:"result"`
}

//List 物流公司
func (*deliverWpc) List(ctx context.Context) (res *DeliverListRes, err error) {
	method := "getCarrierList"
	req := DeliverListReq{}
	req.ChannelId = server.AppKey
	req.UserNumber = server.UserNumber
	result, err := post(ctx, method, g.Map{
		"request": req,
	})
	_ = gjson.NewWithOptions(result, gjson.Options{
		StrNumber: true,
	}).Scan(&res)
	return
}

type DeliverTrackReq struct {
	ChannelId  string `json:"vopChannelId"`
	UserNumber string `json:"userNumber"`
	OrderSn    string `json:"orderSn"`
}

type DeliverTrackRes struct {
	ReturnCode    string      `json:"returnCode"`
	ReturnMessage string      `json:"returnMessage"`
	Result        []struct{
		TrackId string `json:"trackId"`
		Transport string `json:"transport"`
		TransportId string `json:"transportId"`
		CustCode string `json:"custCode"`
		Timeline []struct{
			Time string `json:"time"`
			User string `json:"user"`
			Remark string `json:"remark"`
		} `json:"timeline"`


	} `json:"result"`
}

//Track 物流轨迹
func (*deliverWpc) Track(ctx context.Context, req DeliverTrackReq) (res *DeliverTrackRes, err error) {
	method := "getOrderTrackV2"
	req.ChannelId = server.AppKey
	req.UserNumber = server.UserNumber
	result, err := post(ctx, method, g.Map{
		"request": req,
	})
	_ = gjson.NewWithOptions(result, gjson.Options{
		StrNumber: true,
	}).Scan(&res)
	return
}