@Value("${aliyun.logistics.AppCode}")
private String appCode;
@Value("${aliyun.logistics.host}")
private String host;
@Value("${aliyun.logistics.path}")
private String path;
@Resource
private RedisUtil redisUtil;
@Override
public MessageBean logistics(Long id,Integer type) {
MessageBean result = new MessageBean();
try {
String userPhone ="";
String deliveryCode ="";
String deliveryNum ="";
String deliveryName ="";
if (type.equals(ConstantNumber.INTEGER_ZERO)){
Order one = orderMapper.getOne(id);
userPhone = one.getUserPhone();
deliveryCode = one.getDeliveryCode();
deliveryNum = one.getDeliveryNum();
deliveryName = one.getDeliveryName();
}else if (type.equals(ConstantNumber.INTEGER_ONE)){
PointsOrder one = pointsOrderMapper.selectByPrimaryKey(id);
userPhone = one.getUserPhone();
deliveryCode = one.getDeliveryCode();
deliveryNum = one.getDeliveryNum();
deliveryName = one.getDeliveryName();
}else {
throw new BDException("type参数错误");
}
//先从redis查询数据
Object obj = redisUtil.get("logistics" + deliveryNum);
JSONObject jsonObject = null;
if (obj == null) {
logger.info("从阿里云查询物流信息!");
Map<String, String> headers = new HashMap<>(1);
headers.put("Authorization", "APPCODE " + appCode);
Map<String, String> querys = new HashMap<>(2);
if ("SFEXPRESS".equals(deliveryCode) || deliveryName.contains("顺丰")) {
if (StringUtils.isEmpty(userPhone)) {
userPhone = redisUtil.hmget("returnAddress").get("phone").toString();
}
userPhone = userPhone.substring(userPhone.length() - 4);
deliveryNum = deliveryNum + ":" + userPhone;
}
querys.put("no", deliveryNum.trim());
querys.put("type", deliveryCode);
HttpResponse response = HttpUtils.doGet(host, path, HttpUtils.GET, headers, querys);
//获取response的body
String ss = EntityUtils.toString(response.getEntity());
jsonObject = JSONObject.parseObject(ss);
redisUtil.set("logistics" + deliveryNum,ss,1800);
}else {
logger.info("从redis查询物流信息!");
jsonObject = JSONObject.parseObject(obj.toString());
}
result.setData(jsonObject);
}catch (Exception e){
logger.error(ErrorInfoUtil.getErrorInfo(e));
throw ExceptionFormatUtil.formatException(e, ErrorEnum.GETINFO_ERROR);
}
return result;
}
aliyun.properties
aliyun.logistics.AppCode= 你自己的appcode
aliyun.logistics.host=http://kdwlcxf.market.alicloudapi.com
aliyun.logistics.path=/kdwlcx