SpringBoot实现阿里云快递物流查询的示例代码

 更新时间:2021年10月29日 09:41:14   作者:郑清  
本文将基于springboot实现快递物流查询,物流信息的获取通过阿里云第三方实现,具有一定的参考价值,感兴趣的可以了解一下

一、前言

本文将基于springboot2.4.0实现快递物流查询,物流信息的获取通过阿里云第三方实现

可参考: https://market.aliyun.com/products/57124001/cmapi022273.html?spm=5176.730005.productlist.d_cmapi022273.e8357d36FVX3Eu&innerSource=search#sku=yuncode1627300000

在这里插入图片描述

快递查询API,快递识别单号,快递接口可查询上百家快递公司及物流快递信息包括:顺丰、申通、圆通、韵达、中通、汇通、EMS、天天、国通、德邦、宅急送等几百家快递物流公司单号查询接口。与官网实时同步更新,包含快递送达时间。

二、快递物流查询

注:需要购买快递物流查询接口服务获取AppCode

在这里插入图片描述

工具类

其中http请求工具类自行查看demo源码

@Slf4j
public class LogisticUtil {

    /**
     * 查询物流信息
     *
     * @param params 提交参数
     * @return 物流信息
     * @author zhengqingya
     * @date 2021/10/23 10:48 下午
     */
    public static LogisticVO getLogisticInfo(LogisticDTO params) {
        String no = params.getNo();
        String type = params.getType();
        String appCode = params.getAppCode();

        // 请求地址
        String requestUrl = String.format("https://kdwlcxf.market.alicloudapi.com/kdwlcx?no=%s&type=%s",
                no, StringUtils.isBlank(type) ? "" : type);
        // 发起请求
        Map<String, String> headerMap = Maps.newHashMap();
        headerMap.put("Authorization", String.format("APPCODE %s", appCode));
        String resultJson = HttpUtil.getUrl(requestUrl, headerMap);
        LogisticApiResult logisticApiResult = JSON.parseObject(resultJson, LogisticApiResult.class);
        Assert.notNull(logisticApiResult, "参数异常");
        Assert.isTrue(logisticApiResult.getStatus() == 0, logisticApiResult.getMsg());
        return logisticApiResult.getResult();
    }
}

请求实体类

@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("物流-查询参数")
public class LogisticDTO {

    @ApiModelProperty(value = "快递单号 【顺丰请输入运单号 : 收件人或寄件人手机号后四位。例如:123456789:1234】", required = true, example = "780098068058")
    private String no;

    @ApiModelProperty(value = "快递公司代码: 可不填自动识别,填了查询更快【代码见附表】", required = true, example = "zto")
    private String type;

    @ApiModelProperty(value = "appCode", required = true, example = "xxx")
    private String appCode;
}

响应实体类

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("物流-api响应结果")
public class LogisticApiResult {

    @ApiModelProperty("状态码")
    private Integer status;

    @ApiModelProperty("提示信息")
    private String msg;

    @ApiModelProperty("结果集")
    private LogisticVO result;

}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("物流-响应参数")
public class LogisticVO {

    @ApiModelProperty("运单编号")
    private String number;

    @ApiModelProperty("快递公司编码[见附表]")
    private String type;

    @ApiModelProperty("投递状态 0快递收件(揽件)1在途中 2正在派件 3已签收 4派送失败 5.疑难件 6.退件签收")
    private String deliverystatus;

    @ApiModelProperty("是否本人签收")
    private String issign;

    @ApiModelProperty("快递公司名字")
    private String expName;

    @ApiModelProperty("快递公司官网")
    private String expSite;

    @ApiModelProperty("快递公司电话")
    private String expPhone;

    @ApiModelProperty("快递员")
    private String courier;

    @ApiModelProperty("快递员电话")
    private String courierPhone;

    @ApiModelProperty("最新轨迹的时间")
    private String updateTime;

    @ApiModelProperty("发货到收货耗时(截止最新轨迹)")
    private String takeTime;

    @ApiModelProperty("快递公司logo")
    private String logo;

    @ApiModelProperty("事件轨迹集")
    private List<LogisticItem> list;

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @ApiModel("事件轨迹集")
    public static class LogisticItem {
        @ApiModelProperty("时间点")
        private String time;

        @ApiModelProperty("事件详情")
        private String status;
    }
}

三、测试api

@Slf4j
@RestController
@RequestMapping("/test")
@Api(tags = "测试api")
public class TestController {

    @ApiOperation("查询物流信息")
    @GetMapping("getLogistic")
    public LogisticVO getLogistic(@ModelAttribute LogisticDTO params) {
        return LogisticUtil.getLogisticInfo(params);
    }

}

接口文档 http://127.0.0.1/doc.html

在这里插入图片描述

本文demo源码

https://gitee.com/zhengqingya/java-workspace

到此这篇关于SpringBoot实现阿里云快递物流查询的示例代码的文章就介绍到这了,更多相关SpringBoot 阿里云快递物流查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java短路逻辑运算符实例用法详解

    java短路逻辑运算符实例用法详解

    在本篇文章里小编给大家分享的是一篇关于java短路逻辑运算符实例用法内容,有需要的朋友们可以学习参考下。
    2021-04-04
  • Java的RocketMq队列之消息可靠性详解

    Java的RocketMq队列之消息可靠性详解

    这篇文章主要介绍了Java的RocketMq队列之消息可靠性详解,生产者通过网络发送消息给 Broker,当 Broker 收到之后,将会返回确认响应信息给 Producer,所以生产者只要接收到返回的确认响应,就代表消息在生产阶段未丢失,需要的朋友可以参考下
    2024-01-01
  • SpringBoot配置文件启动加载顺序的方法步骤

    SpringBoot配置文件启动加载顺序的方法步骤

    SpringBoot的启动加载顺序涉及多个步骤和组件,通过分层和优先级机制加载配置文件,确保在启动时正确配置应用程序,本文就来介绍一下SpringBoot配置文件启动加载顺序的方法步骤,感兴趣的可以了解一下
    2024-11-11
  • JAVA Iterator 转成 List 的操作

    JAVA Iterator 转成 List 的操作

    这篇文章主要介绍了JAVA Iterator 转成 List 的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 浅谈java中replace()和replaceAll()的区别

    浅谈java中replace()和replaceAll()的区别

    这篇文章主要介绍了java中replace()和replaceAll()的区别,两者都是常用的替换字符的方法,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • Mybatis plus 配置多数据源的实现示例

    Mybatis plus 配置多数据源的实现示例

    这篇文章主要介绍了Mybatis plus 配置多数据源的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 为何修改equals方法时还要重写hashcode方法的原因分析

    为何修改equals方法时还要重写hashcode方法的原因分析

    这篇文章主要介绍了为何修改equals方法时还要重写hashcode方法的原因分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Freemarker中的3种循环模式

    Freemarker中的3种循环模式

    这篇文章主要介绍了Freemarker中的3种循环模式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • JDK1.8中的ConcurrentHashMap使用及场景分析

    JDK1.8中的ConcurrentHashMap使用及场景分析

    这篇文章主要介绍了JDK1.8中的ConcurrentHashMap使用及场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • SpringBoot整合Shiro框架,实现用户权限管理

    SpringBoot整合Shiro框架,实现用户权限管理

    Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。作为一款安全框架Shiro的设计相当巧妙。Shiro的应用不依赖任何容器,它不仅可以在JavaEE下使用,还可以应用在JavaSE环境中。
    2021-06-06

最新评论