添加物理信息
This commit is contained in:
53
platformapi/q_bida/QBiDa_test.go
Normal file
53
platformapi/q_bida/QBiDa_test.go
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
package q_bida
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"git.rosy.net.cn/baseapi"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
api *Api
|
||||||
|
sugarLogger *zap.SugaredLogger
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
logger, _ := zap.NewDevelopment()
|
||||||
|
sugarLogger = logger.Sugar()
|
||||||
|
baseapi.Init(sugarLogger)
|
||||||
|
globals.SugarLogger.Debug("加载配置")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取登录
|
||||||
|
func TestLogin(t *testing.T) {
|
||||||
|
api := NewQBiDa("18048531223", "18080188338")
|
||||||
|
fmt.Println("api=========", api.expirationTime)
|
||||||
|
fmt.Println("api=========", api.password)
|
||||||
|
fmt.Println("api=========", api.account)
|
||||||
|
fmt.Println("api=========", api.token)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取所有的快递费接口
|
||||||
|
func TestGatAllFee(t *testing.T) {
|
||||||
|
api := NewQBiDa("18048531223", "18080188338")
|
||||||
|
for i := 1; i <= 14; i++ {
|
||||||
|
result, err := api.GetExpressPrice(&GetExpressPriceReq{
|
||||||
|
PromiseTimeType: 0,
|
||||||
|
DeliveryType: 0,
|
||||||
|
GoodsValue: 1000,
|
||||||
|
SendAddress: "四川省成都市金牛区二环北路一段10号万科加州湾V派616",
|
||||||
|
ReceiveAddress: "北京市北京市朝阳区来广营地区中铁国际城乐享汇大厦3号楼1132",
|
||||||
|
Type: i,
|
||||||
|
Weight: 1,
|
||||||
|
Length: 100,
|
||||||
|
Height: 100,
|
||||||
|
Width: 100,
|
||||||
|
SendPhone: "18981810340",
|
||||||
|
})
|
||||||
|
globals.SugarLogger.Debug("err==="+fmt.Sprintf("%d", i), err)
|
||||||
|
globals.SugarLogger.Debug("data===", &result)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
120
platformapi/q_bida/q_bida_access.go
Normal file
120
platformapi/q_bida/q_bida_access.go
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
package q_bida
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"git.rosy.net.cn/baseapi"
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi"
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"net/http"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Api struct {
|
||||||
|
token string // 登录凭证
|
||||||
|
expirationTime int64 // 过期时间
|
||||||
|
account string // 账号
|
||||||
|
password string // 密码
|
||||||
|
locker sync.RWMutex
|
||||||
|
client *http.Client
|
||||||
|
config *platformapi.APIConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetToken 设置token
|
||||||
|
func (a *Api) SetToken(token string) {
|
||||||
|
a.locker.Lock()
|
||||||
|
defer a.locker.Unlock()
|
||||||
|
a.token = token
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetExpirationTime 设置过期时间
|
||||||
|
func (a *Api) SetExpirationTime(expiration int64) {
|
||||||
|
a.locker.Lock()
|
||||||
|
defer a.locker.Unlock()
|
||||||
|
a.expirationTime = expiration
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewQBiDa 初始化token
|
||||||
|
func NewQBiDa(account, password string, config ...*platformapi.APIConfig) *Api {
|
||||||
|
if account == "" || password == "" {
|
||||||
|
panic("账号密码不能为空")
|
||||||
|
}
|
||||||
|
// 获取token,设置token和过期时间
|
||||||
|
curConfig := platformapi.DefAPIConfig
|
||||||
|
if len(config) > 0 {
|
||||||
|
curConfig = *config[0]
|
||||||
|
}
|
||||||
|
api := &Api{
|
||||||
|
token: "",
|
||||||
|
expirationTime: 0,
|
||||||
|
account: account,
|
||||||
|
password: password,
|
||||||
|
locker: sync.RWMutex{},
|
||||||
|
client: &http.Client{Timeout: curConfig.ClientTimeout},
|
||||||
|
config: &curConfig,
|
||||||
|
}
|
||||||
|
if err := api.CheckTokenExpiration(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return api
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckTokenExpiration 检查token是否存在,或者是否过期
|
||||||
|
func (a *Api) CheckTokenExpiration() error {
|
||||||
|
if a.account == "" || a.password == "" {
|
||||||
|
return errors.New("账号或者密码为空")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取token NewQBiDa
|
||||||
|
if a.token == "" || a.expirationTime < time.Now().Unix() {
|
||||||
|
return a.GetToken()
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// AccessInfo 发送请求
|
||||||
|
func (a *Api) AccessInfo(baseUrl, url, requestMethods string, param map[string]interface{}) (retVal map[string]interface{}, err error) {
|
||||||
|
err = platformapi.AccessPlatformAPIWithRetry(a.client,
|
||||||
|
func() *http.Request {
|
||||||
|
var request *http.Request
|
||||||
|
if requestMethods == http.MethodPost {
|
||||||
|
fullURL := utils.GenerateGetURL(baseUrl, url, nil)
|
||||||
|
// 获取json结构体的参数体
|
||||||
|
requestBody := new(bytes.Buffer)
|
||||||
|
json.NewEncoder(requestBody).Encode(param)
|
||||||
|
// 发送请求
|
||||||
|
request, _ = http.NewRequest(http.MethodPost, fullURL, requestBody)
|
||||||
|
request.Header.Set("Content-Type", "application/json")
|
||||||
|
} else {
|
||||||
|
request, _ = http.NewRequest(http.MethodGet, utils.GenerateGetURL(baseUrl, url, param), nil)
|
||||||
|
}
|
||||||
|
if url != LogInUrl {
|
||||||
|
request.Header.Set("token", a.token)
|
||||||
|
}
|
||||||
|
return request
|
||||||
|
},
|
||||||
|
a.config,
|
||||||
|
func(response *http.Response, bodyStr string, jsonResult1 map[string]interface{}) (errLevel string, err error) {
|
||||||
|
if jsonResult1 == nil {
|
||||||
|
return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil")
|
||||||
|
}
|
||||||
|
retVal = jsonResult1
|
||||||
|
if jsonResult1["code"] == nil {
|
||||||
|
return platformapi.ErrLevelGeneralFail, fmt.Errorf("返回结果格式不正常")
|
||||||
|
}
|
||||||
|
code := int(utils.MustInterface2Int64(jsonResult1["code"]))
|
||||||
|
if code == ResponseCodeSuccess {
|
||||||
|
retVal, _ = jsonResult1["data"].(map[string]interface{})
|
||||||
|
return platformapi.ErrLevelSuccess, nil
|
||||||
|
}
|
||||||
|
newErr := utils.NewErrorIntCode(jsonResult1["msg"].(string), code)
|
||||||
|
baseapi.SugarLogger.Debugf("QBiDa AccessUserPage failed, jsonResult1:%s", utils.Format4Output(jsonResult1, true))
|
||||||
|
return platformapi.ErrLevelCodeIsNotOK, newErr
|
||||||
|
})
|
||||||
|
return retVal, err
|
||||||
|
}
|
||||||
125
platformapi/q_bida/q_bida_client.go
Normal file
125
platformapi/q_bida/q_bida_client.go
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
package q_bida
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetToken 获取登录状态
|
||||||
|
func (a *Api) GetToken() error {
|
||||||
|
if a.account == "" {
|
||||||
|
a.account = Account
|
||||||
|
}
|
||||||
|
if a.password == "" {
|
||||||
|
a.password = Password
|
||||||
|
}
|
||||||
|
if a.token != "" && a.expirationTime > time.Now().Unix() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
data := &LoginParamsRes{}
|
||||||
|
result, err := a.AccessInfo(BaseQBiDaUrl, LogInUrl, http.MethodPost, map[string]interface{}{"account": a.account, "password": a.password})
|
||||||
|
if err != nil && !strings.Contains(err.Error(), "成功") {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := utils.Map2StructByJson(result, data, false); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if data.Code != 0 {
|
||||||
|
return errors.New(data.Msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
a.SetToken(data.Data.Token)
|
||||||
|
a.SetExpirationTime(time.Now().AddDate(0, 0, 7).Unix())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetExpressPrice 获取快递费用
|
||||||
|
func (a *Api) GetExpressPrice(param *GetExpressPriceReq) (*GetExpressPriceRes, error) {
|
||||||
|
if err := a.CheckTokenExpiration(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
result, err := a.AccessInfo(BaseQBiDaUrl, GetWayBailMoneyUrl, http.MethodPost, utils.Struct2FlatMap(param))
|
||||||
|
if err != nil && !strings.Contains(err.Error(), "成功") {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
resultData := &GetExpressPriceRes{}
|
||||||
|
if err := utils.Map2StructByJson(result, resultData, false); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if resultData.Code != 0 {
|
||||||
|
return nil, errors.New(resultData.Msg)
|
||||||
|
}
|
||||||
|
return resultData, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateOrder 创建订单
|
||||||
|
func (a *Api) CreateOrder(param *MakeOrderReq) (string, error) {
|
||||||
|
if err := a.CheckTokenExpiration(); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := a.AccessInfo(BaseQBiDaUrl, MakeWayBailOrderUrl, http.MethodPost, utils.Struct2FlatMap(param))
|
||||||
|
if err != nil && !strings.Contains(err.Error(), "成功") {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
resultData := &MakeOrderRes{}
|
||||||
|
if err := utils.Map2StructByJson(result, resultData, false); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if resultData.Code != 0 {
|
||||||
|
return "", errors.New(resultData.Msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultData.OrderNo, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CancelOrder 取消订单
|
||||||
|
func (a *Api) CancelOrder(param *CancelOrderReq) error {
|
||||||
|
if err := a.CheckTokenExpiration(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := a.AccessInfo(BaseQBiDaUrl, CancelWayBailOrderUrl, http.MethodPost, utils.Struct2FlatMap(param))
|
||||||
|
if err != nil && !strings.Contains(err.Error(), "成功") {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
resultData := &PublicParams{}
|
||||||
|
if err := utils.Map2StructByJson(result, resultData, false); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if resultData.Code != 0 {
|
||||||
|
return errors.New(resultData.Msg)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOrderDetail 获取订单详情
|
||||||
|
func (a *Api) GetOrderDetail(param *GetOrderDetailReq) (*OrderDetail, error) {
|
||||||
|
if err := a.CheckTokenExpiration(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := a.AccessInfo(BaseQBiDaUrl, GetOrderDetailUrl, http.MethodGet, utils.Struct2FlatMap(param))
|
||||||
|
if err != nil && !strings.Contains(err.Error(), "成功") {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
resultData := &GetOrderDetailRes{}
|
||||||
|
if err := utils.Map2StructByJson(result, resultData, false); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if resultData.Code != 0 {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultData.Data, nil
|
||||||
|
}
|
||||||
106
platformapi/q_bida/q_bida_model.go
Normal file
106
platformapi/q_bida/q_bida_model.go
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
package q_bida
|
||||||
|
|
||||||
|
// type 快递公司枚举
|
||||||
|
const (
|
||||||
|
JDExpress = "1" // 京东快递
|
||||||
|
DBExpress = "2" // 德邦快递
|
||||||
|
JDLogisticsExpress = "3" // 京东物流
|
||||||
|
DBLogisticsExpress = "4" // 德邦物流
|
||||||
|
STExpress = "5" // 申通快递
|
||||||
|
YTExpress = "6" // 圆通快递
|
||||||
|
DBAirCraftExpress = "7" // 德邦航空
|
||||||
|
SFExpress = "8" // 顺丰快递
|
||||||
|
JDDWExpress = "9" // 京东得物
|
||||||
|
JDStoreExpress = "10" // 京东商家
|
||||||
|
KYExpress = "11" // 跨越速运
|
||||||
|
ZTExpress = "12" // 中通快递
|
||||||
|
JSTExpress = "13" // 急速兔快递
|
||||||
|
YDExpress = "14" // 韵达快递
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
JDExpressInt = 1 // 京东快递
|
||||||
|
DBExpressInt = 2 // 德邦快递
|
||||||
|
JDLogisticsExpressInt = 3 // 京东物流
|
||||||
|
DBLogisticsExpressInt = 4 // 德邦物流
|
||||||
|
STExpressInt = 5 // 申通快递
|
||||||
|
YTExpressInt = 6 // 圆通快递
|
||||||
|
DBAirCraftExpressInt = 7 // 德邦航空
|
||||||
|
SFExpressInt = 8 // 顺丰快递
|
||||||
|
JDDWExpressInt = 9 // 京东得物
|
||||||
|
JDStoreExpressInt = 10 // 京东商家
|
||||||
|
KYExpressInt = 11 // 跨越速运
|
||||||
|
ZTExpressInt = 12 // 中通快递
|
||||||
|
JSTExpressInt = 13 // 急速兔快递
|
||||||
|
YDExpressInt = 14 // 韵达快递
|
||||||
|
)
|
||||||
|
|
||||||
|
// 快递时效产品 promiseTimeType字段说明
|
||||||
|
const (
|
||||||
|
// JDPromiseTimeTypeDefault type = 1 京东快递
|
||||||
|
JDPromiseTimeTypeDefault = 1 // 默认特惠送
|
||||||
|
JDPromiseTimeTypeFile = 20 //京东文件
|
||||||
|
|
||||||
|
// DBPromiseTimeTypeDefault type = 2 德邦快递
|
||||||
|
DBPromiseTimeTypeDefault = 101 // 普通产品(默认值)
|
||||||
|
DBPromiseTimeTypeDW = 102 // 得物
|
||||||
|
DBPromiseTimeTypeWeight = 103 // 重包入户
|
||||||
|
DBPromiseTimeTypeAirCraft = 104 // 航空件
|
||||||
|
DBPromiseTimeTypeStore = 105 // 商家
|
||||||
|
|
||||||
|
// JDPromiseTimeTypeWeight type = 3 京东重货
|
||||||
|
JDPromiseTimeTypeWeight = 100 // 普通重货(默认值)
|
||||||
|
JDPromiseTimeTypeStore = 101 // 重货商家
|
||||||
|
|
||||||
|
// SFPromiseTimeTypePublic type = 8 顺丰快递
|
||||||
|
SFPromiseTimeTypePublic = 1 // 标快(默认值)
|
||||||
|
SFPromiseTimeTypeDiscount = 2 // 特惠
|
||||||
|
SFPromiseTimeTypeDW = 3 // 得物
|
||||||
|
SFPromiseTimeTypeStore = 4 // 商家
|
||||||
|
|
||||||
|
// JDPromiseTimeTypStoreDefault type = 10 京东商家
|
||||||
|
JDPromiseTimeTypStoreDefault = 1 // 标快(默认值)
|
||||||
|
JDPromiseTimeTypeSeafoodFast = 16 // 生鲜特快
|
||||||
|
JDPromiseTimeTypeSeafoodDiscount = 17 // 生鲜特惠
|
||||||
|
)
|
||||||
|
|
||||||
|
// 产品类型 deliveryType字段说明
|
||||||
|
const (
|
||||||
|
// JDDeliveryTypeFast type=3 京东物流
|
||||||
|
JDDeliveryTypeFast = 6 // 特快零担
|
||||||
|
JDDeliveryTypeWeightFast = 25 // 特快重货
|
||||||
|
|
||||||
|
// DBDeliveryTypeCart type=4 德邦物流
|
||||||
|
DBDeliveryTypeCart = 1 // 精准汽运
|
||||||
|
DBDeliveryTypeAirCraft = 1 // 精准卡航
|
||||||
|
|
||||||
|
// KYDeliveryTypeCart type=11 跨越速运
|
||||||
|
KYDeliveryTypeCart = 40 // 省外陆运件
|
||||||
|
KYDeliveryTypeCityTomorrow = 50 // 同城次日
|
||||||
|
KYDeliveryTypeProvince = 160 // 省内次日
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ResponseCodeSuccess = 200 // 成功返回
|
||||||
|
ResponseCodeFail = -1 // 失败返回
|
||||||
|
)
|
||||||
|
|
||||||
|
// url物流请求地址
|
||||||
|
const (
|
||||||
|
BaseQBiDaUrl = "http://qbd.ulifego.com/ht" // 基础访问域名
|
||||||
|
|
||||||
|
LogInUrl = "web/login/loginNew" // 登录获取token【post】
|
||||||
|
GetOrderDetailUrl = "web/orderDetailByOrderNo" // 获取订单详情【get】
|
||||||
|
CancelWayBailOrderUrl = "web/cancelOrderByOrderNo" // 取消运单【post】
|
||||||
|
MakeWayBailOrderUrl = "web/createOrder" // 下单【Post】
|
||||||
|
GetWayBailMoneyUrl = "web/estimate" // 获取快递费【Post】
|
||||||
|
)
|
||||||
|
|
||||||
|
// 默认账号
|
||||||
|
const (
|
||||||
|
Password = "18080188338" // 密码
|
||||||
|
Account = "18048531223" // 账号
|
||||||
|
)
|
||||||
|
|
||||||
|
// ChannelFee 渠道费加价两毛
|
||||||
|
const ChannelFee = 2
|
||||||
165
platformapi/q_bida/q_bida_params.go
Normal file
165
platformapi/q_bida/q_bida_params.go
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
package q_bida
|
||||||
|
|
||||||
|
// PublicParams 公共参数
|
||||||
|
type PublicParams struct {
|
||||||
|
Code int64 `json:"code"`
|
||||||
|
Msg string `json:"msg"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// LoginParamsRes 登录返回参数
|
||||||
|
type LoginParamsRes struct {
|
||||||
|
PublicParams
|
||||||
|
Data *struct {
|
||||||
|
Genre int64 `json:"genre"` // genre
|
||||||
|
Token string `json:"token"` // token
|
||||||
|
IsVerify interface{} `json:"is_verify"` // isVerify
|
||||||
|
} `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
//#region 获取快递费
|
||||||
|
|
||||||
|
// GetExpressPriceReq 获取快递费请求参数
|
||||||
|
type GetExpressPriceReq struct {
|
||||||
|
Type int `json:"type"` // 快递公司
|
||||||
|
PromiseTimeType int `json:"promiseTimeType"` // 快递时效产品
|
||||||
|
DeliveryType int `json:"deliveryType"` // 产品类型
|
||||||
|
GoodsValue float64 `json:"goodsValue"` // 保价金额
|
||||||
|
ReceiveAddress string `json:"receiveAddress"` // 收件人地址
|
||||||
|
SendAddress string `json:"sendAddress"` // 寄件人地址
|
||||||
|
Weight int `json:"weight"` // 重量kg
|
||||||
|
Length int `json:"length"` // 所有包裹累计长cm
|
||||||
|
Height int `json:"height"` // 所有包裹累计高cm
|
||||||
|
Width int `json:"width"` // 所有包裹累计宽cm(向上取整)
|
||||||
|
SendPhone string `json:"sendPhone"` // 寄件人手机号
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetExpressPriceRes 获取快递费返回值
|
||||||
|
type GetExpressPriceRes struct {
|
||||||
|
PublicParams
|
||||||
|
Data *GetExpressPriceData `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetExpressPriceData 获取正儿八经返回值
|
||||||
|
type GetExpressPriceData struct {
|
||||||
|
ChannelFee float64 `json:"channel_fee"` // 渠道价
|
||||||
|
Bulk int64 `json:"bulk"` // 体积抛比系数
|
||||||
|
ServiceCharge float64 `json:"service_charge"` // 服务费
|
||||||
|
GuarantFee float64 `json:"guarant_fee"` // 保价费用
|
||||||
|
OriginalFee float64 `json:"original_fee"` // 原价
|
||||||
|
}
|
||||||
|
|
||||||
|
//#endregion
|
||||||
|
|
||||||
|
//#region 下单
|
||||||
|
|
||||||
|
// MakeOrderReq 下订单请求参数
|
||||||
|
type MakeOrderReq struct {
|
||||||
|
PromiseTimeType int `json:"promiseTimeType"` // 快递时效产品
|
||||||
|
DeliveryType int `json:"deliveryType"` // 产品类型
|
||||||
|
Goods string `json:"goods"` // 商品名称
|
||||||
|
GuaranteeValueAmount float64 `json:"guaranteeValueAmount"` // 保价金额
|
||||||
|
Weight int `json:"weight"` // 重量kg
|
||||||
|
Length int `json:"length"` // 所有包裹累计长cm
|
||||||
|
Height int `json:"height"` // 所有包裹累计高cm
|
||||||
|
Width int `json:"width"` // 所有包裹累计宽cm(向上取整)
|
||||||
|
OrderSendTime string `json:"orderSendTime"` // 预约时间
|
||||||
|
PackageNum int `json:"packageNum"` // 包裹数量
|
||||||
|
ReceiveAddress string `json:"receiveAddress"` // 收件人地址
|
||||||
|
ReceiveName string `json:"receiveName"` // 收件人姓名
|
||||||
|
ReceivePhone string `json:"receivePhone"` // 收件人手机号
|
||||||
|
Remark string `json:"remark"` // 运单备注
|
||||||
|
SenderAddress string `json:"senderAddress"` // 寄件人地址
|
||||||
|
SenderName string `json:"senderName"` // 寄件人姓名
|
||||||
|
SenderPhone string `json:"senderPhone"` // 寄件人手机号
|
||||||
|
ThirdPlatform int `json:"thirdPlatform"` // 第三方平台-京东商家下单传3
|
||||||
|
Type int `json:"type"` // 快递公司
|
||||||
|
Img string `json:"img"` // 包裹图片
|
||||||
|
}
|
||||||
|
|
||||||
|
// MakeOrderRes 下订单返回参数
|
||||||
|
type MakeOrderRes struct {
|
||||||
|
PublicParams
|
||||||
|
OrderNo string `json:"order_no"` // 订单编号
|
||||||
|
}
|
||||||
|
|
||||||
|
//#endregion
|
||||||
|
|
||||||
|
//#region 取消订单
|
||||||
|
|
||||||
|
// CancelOrderReq 取消订单参数
|
||||||
|
type CancelOrderReq struct {
|
||||||
|
Genre int `json:"genre"` // 1-取消,2-关闭
|
||||||
|
OrderNo string `json:"orderNo"` // 订单编号
|
||||||
|
Type int `json:"type"` // 快递公司
|
||||||
|
}
|
||||||
|
|
||||||
|
//#endregion
|
||||||
|
|
||||||
|
//#region 订单详情
|
||||||
|
|
||||||
|
// GetOrderDetailReq 获取订单详情
|
||||||
|
type GetOrderDetailReq struct {
|
||||||
|
Type int `json:"type"` // 快递公司
|
||||||
|
OrderNo string `json:"orderNo"` // 订单号
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOrderDetailRes 订单详情返回值
|
||||||
|
type GetOrderDetailRes struct {
|
||||||
|
PublicParams
|
||||||
|
Data *OrderDetail
|
||||||
|
}
|
||||||
|
|
||||||
|
type OrderDetail struct {
|
||||||
|
ChangeFee float64 // 转寄费用
|
||||||
|
ConsumeFee float64 // 耗材费元
|
||||||
|
CopyText string // 复制信息
|
||||||
|
CreateDate string // 下单时间
|
||||||
|
ExpressFee string // 快递费元 (元)
|
||||||
|
FeeStatus string // 费用状态0下单费用冻结中 ,非0下单费用已扣
|
||||||
|
Goods string // 物品
|
||||||
|
GuaranteeValueAmount float64 // 保价金额
|
||||||
|
InsuranceFee float64 // 保价费元
|
||||||
|
IsForward bool // 是否转寄单0否1是(转寄单额外收取50%运费)
|
||||||
|
IsLimit bool // 是否超限0否1是
|
||||||
|
OriginalFee float64 // 官方原价
|
||||||
|
OtherFee float64 // 其他费用
|
||||||
|
OverWeightStatus int // 超重状态
|
||||||
|
PackageNum int // 包裹数
|
||||||
|
ReceiveAddress string // 收件人地址
|
||||||
|
ReceiveCity string // 收件人地址城市
|
||||||
|
ReceiveName string // 收件人名称
|
||||||
|
ReceivePhone string // 收件人电话
|
||||||
|
SenderAddress string // 寄件人地址
|
||||||
|
SenderCity string // 寄件人地址城市
|
||||||
|
SenderName string // 寄件人姓名
|
||||||
|
SenderPhone string // 寄件人电话
|
||||||
|
Soliciter string // 揽件员
|
||||||
|
Status int // 状态0预下单1待取件2运输中5已签收6取消订单7终止揽收
|
||||||
|
StatusName string // 状态名称
|
||||||
|
TotalFee string // 总费用元
|
||||||
|
PayFee float64 // 实际支付费用元
|
||||||
|
TraceList []*TraceListDetail // 快递详情列表
|
||||||
|
TrackingNum string // 运单号
|
||||||
|
Type int // 快递公司 0:京东 1:德邦
|
||||||
|
Volume int // 体积cm3
|
||||||
|
VolumeRemark string // 体积重量计算说明
|
||||||
|
VolumeWeight int // 体积重量Kg
|
||||||
|
Weight int // 下单重量Kg
|
||||||
|
WeightActual int // 实际重量Kg
|
||||||
|
WeightBill int // 计费重量Kg
|
||||||
|
WeightStatus int // 超重状态
|
||||||
|
Yuanjia int // 快递费
|
||||||
|
}
|
||||||
|
|
||||||
|
type TraceListDetail struct {
|
||||||
|
Courier string // 快递员
|
||||||
|
CourierTel string // 快递员电话
|
||||||
|
OpeName string // 操作人
|
||||||
|
OpeRemark string // 操作详情
|
||||||
|
OpeTime string // 操作时间
|
||||||
|
OpeTimeAll string //
|
||||||
|
OpeTitle string //
|
||||||
|
WaybillCode string // 运单号
|
||||||
|
}
|
||||||
|
|
||||||
|
//#endregion
|
||||||
Reference in New Issue
Block a user