|
@@ -4,10 +4,15 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.fjhx.config.KD100Config;
|
|
|
import com.google.gson.Gson;
|
|
|
import com.kuaidi100.sdk.api.QueryTrack;
|
|
|
+import com.kuaidi100.sdk.api.Subscribe;
|
|
|
+import com.kuaidi100.sdk.contant.ApiInfoConstant;
|
|
|
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.request.SubscribeParam;
|
|
|
+import com.kuaidi100.sdk.request.SubscribeParameters;
|
|
|
+import com.kuaidi100.sdk.request.SubscribeReq;
|
|
|
import com.kuaidi100.sdk.utils.SignUtils;
|
|
|
import lombok.extern.log4j.Log4j2;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -15,6 +20,8 @@ import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.tool.api.ResultCode;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
|
|
|
+import java.net.URLDecoder;
|
|
|
+
|
|
|
@Log4j2
|
|
|
public class KD100Util {
|
|
|
|
|
@@ -44,25 +51,107 @@ public class KD100Util {
|
|
|
log.error(e.toString());
|
|
|
throw new ServiceException("请求第三方快递信息异常,请联系管理员!");
|
|
|
}
|
|
|
- return parseData(result);
|
|
|
+ return parseQueryResult(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订阅接口
|
|
|
+ *
|
|
|
+ * @param com 快递公司编码
|
|
|
+ * @param num 快递单号
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static JSONObject subscribe(String com, String num) {
|
|
|
+ HttpResult result = new HttpResult();
|
|
|
+ try {
|
|
|
+ SubscribeParameters subscribeParameters = new SubscribeParameters();
|
|
|
+ subscribeParameters.setCallbackurl(KD100Config.getCallbackurl());
|
|
|
+
|
|
|
+ SubscribeParam subscribeParam = new SubscribeParam();
|
|
|
+ subscribeParam.setParameters(subscribeParameters);
|
|
|
+ subscribeParam.setCompany(com);
|
|
|
+ subscribeParam.setNumber(num);
|
|
|
+ subscribeParam.setKey(KD100Config.getKey());
|
|
|
+
|
|
|
+ SubscribeReq subscribeReq = new SubscribeReq();
|
|
|
+ subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
|
|
|
+ subscribeReq.setParam(new Gson().toJson(subscribeParam));
|
|
|
+
|
|
|
+ IBaseClient subscribe = new Subscribe();
|
|
|
+ result = subscribe.execute(subscribeReq);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(e.toString());
|
|
|
+ throw new ServiceException("请求第三方快递订阅功能异常,请联系管理员!");
|
|
|
+ }
|
|
|
+ return parseSubscribeData(result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 解析数据
|
|
|
+ * 解析数据:查询结果
|
|
|
*
|
|
|
* @param result 数据结果
|
|
|
* @return
|
|
|
*/
|
|
|
- private static JSONObject parseData(HttpResult result) {
|
|
|
+ private static JSONObject parseQueryResult(HttpResult result) {
|
|
|
if (Func.isNotEmpty(result) && result.getStatus() == ResultCode.SUCCESS.getCode()) {
|
|
|
JSONObject body = JSONObject.parseObject(result.getBody());
|
|
|
if (Func.isNotEmpty(body.get("message")) && StringUtils.equalsIgnoreCase(body.getString("message"), "ok")) {
|
|
|
return body;
|
|
|
} else {
|
|
|
- throw new ServiceException("操作失败,原因:物流信息【" + body.getString("message") + "】,请稍后重试!");
|
|
|
+ throw new ServiceException("操作失败,原因:物流信息【" + body.getString("message") + "】,请稍后重试,或者联系管理员!");
|
|
|
}
|
|
|
} else {
|
|
|
throw new ServiceException("物流信息查询失败,请稍后重试,或者联系管理员!");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 解析数据:订阅结果
|
|
|
+ *
|
|
|
+ * @param result 数据结果
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private static JSONObject parseSubscribeData(HttpResult result) {
|
|
|
+ if (Func.isNotEmpty(result) && result.getStatus() == ResultCode.SUCCESS.getCode()) {
|
|
|
+ JSONObject body = JSONObject.parseObject(result.getBody());
|
|
|
+ if (Func.isNotEmpty(body) && body.getBoolean("result")) {
|
|
|
+ return body;
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("操作失败,原因:物流信息【" + body.getString("message") + "】,请稍后重试,或者联系管理员!");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("物流信息订阅失败,请稍后重试,或者联系管理员!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 解析数据:推送结果
|
|
|
+ *
|
|
|
+ * @param data 物流信息
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static JSONObject parsePushData(String data) {
|
|
|
+ if (StringUtils.isNotBlank(data) && StringUtils.indexOf(data, "param=") != -1) {
|
|
|
+ data = StringUtils.substringAfter(data, "param=");
|
|
|
+ try {
|
|
|
+ data = URLDecoder.decode(data, "UTF-8");
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new ServiceException("物流信息推送失败,参数解码异常!");
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONObject object = JSONObject.parseObject(data);
|
|
|
+ if (Func.isNotEmpty(object) && Func.isNotEmpty(object.getJSONObject("lastResult"))) {
|
|
|
+ JSONObject body = object.getJSONObject("lastResult");
|
|
|
+ if (Func.isNotEmpty(body.get("message")) && StringUtils.equalsIgnoreCase(body.getString("message"), "ok")) {
|
|
|
+ return body;
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("物流信息推送失败,原因:物流信息【" + body.getString("message") + "】!");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("物流信息推送失败,参数解析异常!");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("物流信息推送失败!");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|