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 阿裡雲快遞物流查詢內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- idea 在springboot中使用lombok插件的方法
- Springboot處理異常的常見方式
- 解決springboot引入swagger2不生效問題
- SpringBoot整合OpenApi的實踐
- swagger @ApiModel添加實體類不生效的解決