Pu Zhibing
2025-03-26 7f26677ab7f9b83697370fa142dd1686cdf4082a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package com.ruoyi.order.util;
 
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.google.gson.Gson;
import com.kuaidi100.sdk.api.QueryTrack;
import com.kuaidi100.sdk.api.QueryTrackMap;
import com.kuaidi100.sdk.contant.CompanyConstant;
import com.kuaidi100.sdk.core.IBaseClient;
import com.kuaidi100.sdk.pojo.HttpResult;
import com.kuaidi100.sdk.request.QueryTrackParam;
import com.kuaidi100.sdk.request.QueryTrackReq;
import com.kuaidi100.sdk.response.QueryTrackMapResp;
import com.kuaidi100.sdk.utils.SignUtils;
import com.ruoyi.order.util.vo.MapTrackKD100Vo;
import com.ruoyi.order.util.vo.QueryKD100Vo;
import lombok.extern.slf4j.Slf4j;
 
 
/**
 * 快递工具类
 * @author zhibing.pu
 * @Date 2024/12/13 18:05
 */
@Slf4j
public class ExpressDeliveryUtil {
    
    private static String customer = "8FC09A2DE534142E93BE068830FCA43E";
    
    private static String key = "KFBYEnrO3201";
    
    
    /**
     * 查询快递实时数据
     * @param com   快递公司代码
     * @param num   快递单号
     * @return
     */
    public static QueryKD100Vo kd100QueryTrack(String com, String num){
        QueryTrackReq queryTrackReq = new QueryTrackReq();
        QueryTrackParam queryTrackParam = new QueryTrackParam();
//        queryTrackParam.setCom(CompanyConstant.YD);
        queryTrackParam.setCom(com);
        queryTrackParam.setNum(num);
        String param = new Gson().toJson(queryTrackParam);
        
        queryTrackReq.setParam(param);
        queryTrackReq.setCustomer(customer);
        queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));
        
        IBaseClient baseClient = new QueryTrack();
        HttpResult execute = null;
        try {
            execute = baseClient.execute(queryTrackReq);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        String result = execute.getBody();
        QueryKD100Vo queryKD100Vo = JSON.parseObject(result, QueryKD100Vo.class);
        return queryKD100Vo;
    }
    
    
    /**
     * 快递100查询带有地图轨迹数据的快递详情
     * @param com   快递公司代码
     * @param num   快递单号
     * @param from  出发城市名称
     * @param to    到达城市名称
     * @return
     */
    public static MapTrackKD100Vo kd100MapTrack(String com, String num, String from, String to){
        QueryTrackReq queryTrackReq = new QueryTrackReq();
        QueryTrackParam queryTrackParam = new QueryTrackParam();
//        queryTrackParam.setCom(CompanyConstant.YD);
        queryTrackParam.setCom(com);
        queryTrackParam.setNum(num);
        queryTrackParam.setFrom(from);
        queryTrackParam.setTo(to);
        queryTrackParam.setResultv2("2");
        String param = new Gson().toJson(queryTrackParam);
        
        queryTrackReq.setParam(param);
        queryTrackReq.setCustomer(customer);
        queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));
        
        IBaseClient baseClient = new QueryTrackMap();
        HttpResult execute = null;
        try {
            execute = baseClient.execute(queryTrackReq);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        
        String result = execute.getBody();
        MapTrackKD100Vo mapTrackKD100Vo = JSON.parseObject(result, MapTrackKD100Vo.class);
        return mapTrackKD100Vo;
    }
    
    
    public static void main(String[] args) {
        MapTrackKD100Vo mapTrackKD100Vo = ExpressDeliveryUtil.kd100MapTrack("zhongtong", "73543720196087", "湖南省长沙市", "四川省成都市");
        System.out.println(mapTrackKD100Vo);
    }
    
}