项目的包结构
配置文件配置信息【application.yml】
丰桥月结卡号自己去注册
配置文件中的配置信息的获取代码
package com.test.demo.express.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* @Author:
* @Date: 2018/10/22 18:13
* @Description:
*/
@ConfigurationProperties(prefix = "sf.route.express")
public class SfExpressProperties {
private String clientCode;
private String checkWord;
private String reqURL;
private String expressName;
public String getClientCode() {
return clientCode;
}
public void setClientCode(String clientCode) {
this.clientCode = clientCode;
}
public String getCheckWord() {
return checkWord;
}
public void setCheckWord(String checkWord) {
this.checkWord = checkWord;
}
public String getReqURL() {
return reqURL;
}
public void setReqURL(String reqURL) {
this.reqURL = reqURL;
}
public String getExpressName() {
return expressName;
}
public void setExpressName(String expressName) {
this.expressName = expressName;
}
@Override
public String toString() {
return "SfExpressProperties{" +
"clientCode='" + clientCode + '\'' +
", checkWord='" + checkWord + '\'' +
", reqURL='" + reqURL + '\'' +
", expressName='" + expressName + '\'' +
'}';
}
}
参数封装
package com.test.demo.express.sf.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @Author:
* @Date: 2018/10/18 17:27
* @Description:
*/
@ApiModel(value = "SfTracesParam")
public class SfTracesParam {
@ApiModelProperty(value = "快递单号")
private String wayBillNo;
@ApiModelProperty(value = "订单编号")
private String orderSn;
public String getWayBillNo() {
return wayBillNo;
}
public void setWayBillNo(String wayBillNo) {
this.wayBillNo = wayBillNo;
}
public String getOrderSn() {
return orderSn;
}
public void setOrderSn(String orderSn) {
this.orderSn = orderSn;
}
@Override
public String toString() {
return "SfTracesParam{" +
"wayBillNo='" + wayBillNo + '\'' +
", orderSn='" + orderSn + '\'' +
'}';
}
}
返回值封装
这里的返回值,就是我们调用顺丰的接口返回的路由信息XLM文件,经过xmlutil.java解析以后对应的字段。
为封装成对象返回json做准备。
package com.test.demo.express.sf.dto;
import javax.xml.bind.annotation.*;
import java.io.Serializable;
import java.util.List;
/**
* @Author:
* @Date: 2018/10/18 0:12
* @Description:
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Response")
public class SfExpressResponseDTO implements Serializable{
private static final long serialVersionUID = 1L;
/**
* 响应状态
*/
@XmlElement(name = "Head")
private String Head;
/**
* 响应结果
*/
@XmlElement(name = "Body")
private Body Body;
/**
* 快递公司名称
*/
private String expressName;
/**
* 快递单号
*/
private String wayBillNo;
/**
* 订单号
*/
private String orderSn;
@XmlAccessorType(XmlAccessType.NONE)
public static class Body {
/**
* 响应的物流信息
*/
@XmlElement(name = "RouteResponse")
private RouteResponse RouteResponse;
public SfExpressResponseDTO.RouteResponse getRouteResponse() {
return RouteResponse;
}
public void setRouteResponse(SfExpressResponseDTO.RouteResponse routeResponse) {
RouteResponse = routeResponse;
}
@Override
public String toString() {
return "Body{" +
"RouteResponse=" + RouteResponse +
'}';
}
}
@XmlRootElement(name="RouteResponse")
@XmlAccessorType(XmlAccessType.NONE)
public static class RouteResponse {
/**
* 运单号
*/
@XmlAttribute(name = "mailno")
private String mailNo;
/**
* 订单号
*/
@XmlAttribute(name = "orderid")
private String orderid;
/**
* 路由
*/
@XmlElement(name = "Route")
private List<Route> Route ;
public String getMailNo() {
return mailNo;
}
public void setMailNo(String mailNo) {
this.mailNo = mailNo;
}
public String getOrderid() {
return orderid;
}
public void setOrderid(String orderid) {
this.orderid = orderid;
}
public List<SfExpressResponseDTO.Route> getRoute() {
return Route;
}
public void setRoute(List<SfExpressResponseDTO.Route> route) {
Route = route;
}
@Override
public String toString() {
return "RouteResponse{" +
"mailNo='" + mailNo + '\'' +
", orderid='" + orderid + '\'' +
", Route=" + Route +
'}';
}
}
@XmlRootElement(name="Route")
@XmlAccessorType(XmlAccessType.NONE)
public static class Route {
/**
* 路由节点发生的时间
*/
@XmlAttribute(name = "accept_time")
private String acceptTime;
/**
* 路由节点标识描述
*/
@XmlAttribute(name = "remark")
private String remark;
/**
* 路由节点地址描述
*/
@XmlAttribute(name = "accept_address")
private String accept_address;
/**
* 路由节点操作码
*/
@XmlAttribute(name = "opcode")
private String opcode;
public String getAcceptTime() {
return acceptTime;
}
public void setAcceptTime(String acceptTime) {
this.acceptTime = acceptTime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getOpcode() {
return opcode;
}
public void setOpcode(String opcode) {
this.opcode = opcode;
}
public String getAccept_address() {
return accept_address;
}
public void setAccept_address(String accept_address) {
this.accept_address = accept_address;
}
@Override
public String toString() {
return "Route{" +
"acceptTime='" + acceptTime + '\'' +
", remark='" + remark + '\'' +
", accept_address='" + accept_address + '\'' +
", opcode='" + opcode + '\'' +
'}';
}
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public String getHead() {
return Head;
}
public void setHead(String head) {
Head = head;
}
public SfExpressResponseDTO.Body getBody() {
return Body;
}
public void setBody(SfExpressResponseDTO.Body body) {
Body = body;
}
public String getExpressName() {
return expressName;
}
public void setExpressName(String expressName) {
this.expressName = expressName;
}
public String getWayBillNo() {
return wayBillNo;
}
public void setWayBillNo(String wayBillNo) {
this.wayBillNo = wayBillNo;
}
public String getOrderSn() {
return orderSn;
}
public void setOrderSn(String orderSn) {
this.orderSn = orderSn;
}
@Override
public String toString() {
return "SfExpressResponseDTO{" +
"Head='" + Head + '\'' +
", Body=" + Body +
", expressName='" + expressName + '\'' +
", wayBillNo='" + wayBillNo + '\'' +
", orderSn='" + orderSn + '\'' +
'}';
}
}
后续文章链接
第二篇:https://blog.youkuaiyun.com/wildwolf_001/article/details/83411476
第三篇:https://blog.youkuaiyun.com/wildwolf_001/article/details/83411607