ali_logistics.go 3.7 KB
package alibaba

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

type logisticsAli struct {
}

var Logistics = logisticsAli{}

type LogisticsInfosRes struct {
	CommonRes
	Result []struct {
		Sender struct {
			SenderName         string `json:"senderName"`
			SenderMobile       string `json:"senderMobile"`
			Encrypt            string `json:"encrypt"`
			SenderProvinceCode string `json:"senderProvinceCode"`
			SenderCityCOde     string `json:"senderCityC  ode"`
			SenderCountyCode   string `json:"senderCountyCode"`
			SenderAddress      string `json:"senderAddress"`
			SenderProvince     string `json:"senderProvince"`
			SenderCity         string `json:"senderCity"`
			SenderCounty       string `json:"senderCounty"`
		} `json:"sender"`
		OrderEntryIds   string `json:"orderEntryIds"`
		LogisticsBillNo string `json:"logisticsBillNo"`
		LogisticsId     string `json:"logisticsId  "`
		Receiver        struct {
			ReceiverName         string `json:"receiverName"`
			ReceiverPhone        string `json:"receiverPhone"`
			ReceiverMobile       string `json:"receiverMobile"`
			Encrypt              string `json:"encrypt"`
			ReceiverProvinceCode string `json:"receiverProvinceCode"`
			ReceiverCityCode     string `json:"receiverCityCode"`
			ReceiverCountyCode   string `json:"receiverCountyCode"`
			ReceiverAddresS      string `json:"receiverAddres  s"`
			ReceiverProvince     string `json:"receiverProvince"`
			ReceiverCity         string `json:"receiverCity"`
			ReceiverCounty       string `json:"receiverCounty"`
		} `json:"receiver"`
		LogisticsCompanyName string `json:"logisticsCompanyName"`
		Status               string `json:"status"`
		SendGoods            []struct {
			GoodName string `json:"goodName"`
			Quantity string `json:"quantity"`
			Unit     string `json:"unit"`
		} `json:"sendGoods"`
		Remarks            string `json:"remarks"`
		LogisticsCompanyId string `json:"logisticsCompanyId"`
	} `json:"result"`
}

type LogisticsTraceRes struct {
	CommonRes
	LogisticsTrace []struct {
		LogisticsId     string `json:"logisticsId"`
		OrderId         int64  `json:"orderId"`
		LogisticsBillNo string `json:"logisticsBillNo"`
		LogisticsSteps  []struct {
			AcceptTime string `json:"acceptTime"`
			Remark     string `json:"remark"`
		} `json:"logisticsSteps"`
	} `json:"logisticsTrace"`
}

//Info 物流详情
func (*logisticsAli) Info(ctx context.Context, orderSn string) (res *LogisticsInfosRes, err error) {
	method := "com.alibaba.logistics/alibaba.trade.getLogisticsInfos.buyerView"
	result, err := server.Post(ctx, method, g.Map{
		"access_token": server.AccessToken,
		"webSite":      WebSite,
		"orderId":      orderSn,
	})
	_ = gjson.New(result).Scan(&res)
	return
}

//Trace 物流轨迹
func (*logisticsAli) Trace(ctx context.Context, orderSn string) (res *LogisticsTraceRes, err error) {
	method := "com.alibaba.logistics/alibaba.trade.getLogisticsTraceInfo.buyerView"
	result, err := server.Post(ctx, method, g.Map{
		"access_token": server.AccessToken,
		"webSite":      WebSite,
		"orderId":      orderSn,
	})
	_ = gjson.New(result).Scan(&res)
	return
}

type LogisticsCompanyRes struct {
	CommonRes
	Result []LogisticsCompanyItem `json:"result"` //result
}

type LogisticsCompanyItem struct {
	Id          int64  `json:"id"`
	CompanyName string `json:"companyName"` //物流公司名称
	CompanyNo   string `json:"companyNo"`   //	物流公司编号
}

//Company 物流公司
func (s *logisticsAli) Company(ctx context.Context) (res *LogisticsCompanyRes, err error) {
	method := "com.alibaba.logistics/alibaba.logistics.OpQueryLogisticCompanyList"
	result, err := server.Post(ctx, method, g.Map{
		"access_token": server.AccessToken,
	})
	_ = gjson.New(result).Scan(&res)
	return
}