kdniao_deliver.go 1.8 KB
package kdniao

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

type deliverKdniao struct {
}

var Deliver = deliverKdniao{}

type DeliverTrackReq struct {
	CustomerName string `json:"CustomerName"`
	DeliverNo    string `json:"LogisticCode"`
	Code         string `json:"ShipperCode"`
}

type DeliverTrackRes struct {
	EBusinessID  string `json:"EBusinessID"`
	ShipperCode  string `json:"ShipperCode"`
	LogisticCode string `json:"LogisticCode"`
	State        string `json:"State"`
	StateEx      string `json:"StateEx"`
	Location     string `json:"Location"`
	Traces       []struct {
		Action        string `json:"Action"`
		AcceptStation string `json:"AcceptStation"`
		AcceptTime    string `json:"AcceptTime"`
		Location      string `json:"Location"`
	} `json:"Traces"`
	DeliveryMan    string `json:"DeliveryMan"`
	DeliveryManTel string `json:"DeliveryManTel"`
	Success        bool   `json:"Success"`
}

//Track 物流轨迹
func (*deliverKdniao) Track(ctx context.Context, req DeliverTrackReq) (res *DeliverTrackRes, err error) {
	url := "Ebusiness/EbusinessOrderHandle.aspx"
	result, err := post(ctx, url, "8001", req)
	_ = gjson.New(result).Scan(&res)
	return
}

type DeliverParseRes struct {
	LogisticCode string `json:"LogisticCode"`
	Shippers     []struct {
		ShipperName string `json:"ShipperName"`
		ShipperCode string `json:"ShipperCode"`
	} `json:"Shippers"`
	EBusinessID string `json:"EBusinessID"`
	Code        string `json:"Code"`
	Success     bool   `json:"Success"`
}

//Parse 单号识别
func (*deliverKdniao) Parse(ctx context.Context, req string) (res *DeliverParseRes, err error) {
	url := "Ebusiness/EbusinessOrderHandle.aspx"
	result, err := post(ctx, url, "2002", g.Map{
		"LogisticCode": req,
	})
	_ = gjson.New(result).Scan(&res)
	return
}