From 80fd9e3da4b45285c29cdb380ce743202b0c2af4 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Thu, 21 Nov 2024 11:22:36 +0800 Subject: [PATCH] feat(mall): 添加快递信息查询功能 --- src/main/java/com/best/javaSdk/kdTraceQuery/response/KdTraceQueryRsp.java | 19 src/main/java/com/best/javaSdk/kdTraceQuery/response/TraceLogs.java | 51 src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/response/ChildMailNo.java | 19 src/main/java/com/best/javaSdk/Param.java | 56 src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONReader.java | 238 +++ src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidator.java | 214 +++ src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONErrorListener.java | 7 src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/response/KdCreateWaybillOrderPdfNotifyRsp.java | 120 + src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Sender.java | 107 + src/main/java/com/best/javaSdk/converter/impl/BooleanConverter.java | 25 src/main/java/com/best/javaSdk/BaseRequest.java | 7 src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/response/KdCreateWaybillOrderNotifyRsp.java | 98 + src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Item.java | 74 + src/main/java/com/best/javaSdk/Client.java | 49 src/main/java/com/best/javaSdk/kdTraceQuery/request/KdTraceQueryReq.java | 44 src/main/java/com/best/javaSdk/Sign.java | 53 src/main/java/com/best/javaSdk/kdTraceQuery/request/MailNos.java | 12 src/main/java/com/best/javaSdk/kdUpdateOrderNotify/response/ChildMailNo.java | 19 src/main/java/cc/mrbird/febs/mall/controller/CommonController.java | 14 src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Receiver.java | 107 + src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/response/ChildMailNo.java | 19 src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidatingReader.java | 23 src/main/java/com/best/javaSdk/BsApi.java | 32 src/main/java/com/best/javaSdk/kdCancelOrderNotify/response/KdCancelOrderNotifyRsp.java | 53 src/main/java/com/best/javaSdk/kdTraceQuery/response/Trace.java | 118 + src/main/java/com/best/javaSdk/kdUpdateOrderNotify/response/KdUpdateOrderNotifyRsp.java | 109 + src/main/java/cc/mrbird/febs/mall/dto/ApiCheckTraceInfoDto.java | 15 src/main/java/com/best/javaSdk/converter/impl/IntConverter.java | 24 pom.xml | 20 src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Sender.java | 107 + src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Receiver.java | 107 + src/main/java/com/best/javaSdk/converter/util/jsonReader/BufferErrorListener.java | 41 src/main/java/com/best/javaSdk/converter/impl/DoubleConverter.java | 25 src/main/java/com/best/javaSdk/Parser.java | 278 +++ src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONWriter.java | 221 +++ src/main/java/com/best/javaSdk/converter/impl/LongConverter.java | 25 src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/KdCreateWaybillOrderPdfNotifyReq.java | 333 ++++ src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/KdCreateWaybillOrderNotifyReq.java | 333 ++++ src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java | 27 src/main/java/com/best/javaSdk/converter/impl/FloatConverter.java | 25 src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java | 11 src/main/java/com/best/javaSdk/kdCancelOrderNotify/request/KdCancelOrderNotifyReq.java | 44 src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Items.java | 20 src/main/java/com/best/javaSdk/kdUpdateOrderNotify/request/KdUpdateOrderNotifyReq.java | 56 src/main/java/com/best/javaSdk/BaseResponse.java | 4 src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidatingWriter.java | 56 src/main/java/com/best/javaSdk/converter/util/jsonReader/StdoutStreamErrorListener.java | 8 src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Items.java | 20 src/main/java/com/best/javaSdk/kdUpdateOrderNotify/request/Params.java | 360 +++++ src/main/java/com/best/javaSdk/converter/ConverterUtil.java | 12 src/main/java/cc/mrbird/febs/mall/service/ICommonService.java | 4 src/main/java/com/best/javaSdk/converter/impl/DateConverter.java | 47 src/main/java/com/best/javaSdk/kdTraceQuery/response/Traces.java | 19 src/main/java/com/best/javaSdk/converter/Converter.java | 15 src/main/java/com/best/javaSdk/converter/XmlConverter.java | 12 src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Item.java | 74 + src/main/java/com/best/javaSdk/converter/impl/StringConverter.java | 25 src/main/java/com/best/javaSdk/HttpService.java | 96 + src/main/java/com/best/javaSdk/converter/util/jsonReader/ExceptionErrorListener.java | 9 src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java | 2 src/main/resources/application.yml | 2 61 files changed, 4,151 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index 3f933da..900945f 100644 --- a/pom.xml +++ b/pom.xml @@ -40,16 +40,16 @@ <artifactId>json</artifactId> <version>20230618</version> </dependency> - <dependency> - <groupId>com.github.wechatpay-apiv3</groupId> - <artifactId>wechatpay-apache-httpclient</artifactId> - <version>0.4.7</version> - </dependency> - <dependency> - <groupId>com.github.wechatpay-apiv3</groupId> - <artifactId>wechatpay-java</artifactId> - <version>0.2.12</version> - </dependency> +<!-- <dependency>--> +<!-- <groupId>com.github.wechatpay-apiv3</groupId>--> +<!-- <artifactId>wechatpay-apache-httpclient</artifactId>--> +<!-- <version>0.4.7</version>--> +<!-- </dependency>--> +<!-- <dependency>--> +<!-- <groupId>com.github.wechatpay-apiv3</groupId>--> +<!-- <artifactId>wechatpay-java</artifactId>--> +<!-- <version>0.2.12</version>--> +<!-- </dependency>--> <!-- 图片压缩--> <dependency> <groupId>net.coobird</groupId> diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java index 7165cd8..984c91a 100644 --- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java +++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java @@ -2,6 +2,7 @@ import cc.mrbird.febs.common.interceptor.LoginInterceptor; import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -40,4 +41,14 @@ registration.excludePathPatterns("/configuration/security"); registration.excludePathPatterns("/swagger-resources"); } + + @Override + public void addCorsMappings( CorsRegistry registry) { + // 跨域请求配置 + registry.addMapping("/**")//允许请求路径 + .allowedOrigins("*")//表示允许所有网址发起跨域请求 + .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")//表示允许跨域请求的方法 + .maxAge(3600)//表示在3600秒内不需要再发送预校验请求 + .allowCredentials(true);//允许客户端携带验证信息,即允许携带cookie + } } diff --git a/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java b/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java index 2d10d5b..4e1b19c 100644 --- a/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java +++ b/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java @@ -31,7 +31,7 @@ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - String headerToken = request.getHeader("token"); + String headerToken = request.getHeader("Token"); if (StringUtils.isBlank(headerToken)) { responseUnAuth(response); return false; diff --git a/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java b/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java index 58cb018..7db03b9 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java @@ -5,11 +5,13 @@ import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.*; import cc.mrbird.febs.mall.dto.AccountAndCodeDto; +import cc.mrbird.febs.mall.dto.ApiCheckTraceInfoDto; import cc.mrbird.febs.mall.dto.Base64UploadDto; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.service.ICommonService; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.best.javaSdk.kdTraceQuery.response.KdTraceQueryRsp; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -210,4 +212,16 @@ } return new FebsResponse().fail().message("验证码错误"); } + + @ApiOperation(value = "获取快递信息接口") + @PostMapping(value = "/checkTraceInfo") + public FebsResponse checkTraceInfo(@RequestBody ApiCheckTraceInfoDto checkTraceInfoDto) { + + KdTraceQueryRsp traceQueryRsp = commonService.checkTraceInfo(checkTraceInfoDto); + boolean result = traceQueryRsp.isResult(); + if (result) { + return new FebsResponse().success().data(traceQueryRsp); + } + return new FebsResponse().fail().message("请检查您的快递单号是否输入正确。"); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiCheckTraceInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiCheckTraceInfoDto.java new file mode 100644 index 0000000..1730a0a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiCheckTraceInfoDto.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class ApiCheckTraceInfoDto { + + + @NotBlank(message = "快递单号不能为空") + @ApiModelProperty(value = "快递单号", example = "60850007041815") + private String traceNo; +} diff --git a/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java b/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java index afd64f4..f574449 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java @@ -1,8 +1,9 @@ package cc.mrbird.febs.mall.service; +import cc.mrbird.febs.mall.dto.ApiCheckTraceInfoDto; import cc.mrbird.febs.mall.entity.AppVersion; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; -import cc.mrbird.febs.mall.vo.CashOutSettingVo; +import com.best.javaSdk.kdTraceQuery.response.KdTraceQueryRsp; import java.util.List; @@ -21,4 +22,5 @@ void addDataDic(String type, String key, Object value, String description, boolean isJson); + KdTraceQueryRsp checkTraceInfo(ApiCheckTraceInfoDto checkTraceInfoDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java index 4f4cd2f..89ef59d 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java @@ -2,6 +2,7 @@ import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.RedisUtils; +import cc.mrbird.febs.mall.dto.ApiCheckTraceInfoDto; import cc.mrbird.febs.mall.entity.AppVersion; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.mapper.AppVersionMapper; @@ -9,10 +10,15 @@ import cc.mrbird.febs.mall.service.ICommonService; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; +import com.best.javaSdk.Client; +import com.best.javaSdk.kdTraceQuery.request.KdTraceQueryReq; +import com.best.javaSdk.kdTraceQuery.request.MailNos; +import com.best.javaSdk.kdTraceQuery.response.KdTraceQueryRsp; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -83,4 +89,25 @@ dic.setDescription(description); dataDictionaryCustomMapper.insert(dic); } + + @Override + public KdTraceQueryRsp checkTraceInfo(ApiCheckTraceInfoDto checkTraceInfoDto) { + String url = "http://open-sgp.800best.com/api-server/m9api/api/process"; + String partnerID = "71"; + String partnerKey = "G95DIM64"; + String format = "JSON"; + + Client client = new Client(url, partnerID, partnerKey, format); + + KdTraceQueryReq tdTraceQueryReq = new KdTraceQueryReq(); + MailNos mailNos = new MailNos(); + List<String> mailNo = new ArrayList<>(); + mailNo.add(checkTraceInfoDto.getTraceNo()); + mailNos.setMailNo(mailNo); + tdTraceQueryReq.setMailNos(mailNos); + tdTraceQueryReq.setLangType("zh-CN"); + + KdTraceQueryRsp kdTraceQueryRsp = client.executed(tdTraceQueryReq); + return kdTraceQueryRsp; + } } diff --git a/src/main/java/com/best/javaSdk/BaseRequest.java b/src/main/java/com/best/javaSdk/BaseRequest.java new file mode 100644 index 0000000..ad0ea7f --- /dev/null +++ b/src/main/java/com/best/javaSdk/BaseRequest.java @@ -0,0 +1,7 @@ +package com.best.javaSdk; + +public interface BaseRequest { + public String obtainServiceType(); + + BaseResponse makeResponse(String rsp, String format); +} diff --git a/src/main/java/com/best/javaSdk/BaseResponse.java b/src/main/java/com/best/javaSdk/BaseResponse.java new file mode 100644 index 0000000..c409afb --- /dev/null +++ b/src/main/java/com/best/javaSdk/BaseResponse.java @@ -0,0 +1,4 @@ +package com.best.javaSdk; + +public interface BaseResponse { +} diff --git a/src/main/java/com/best/javaSdk/BsApi.java b/src/main/java/com/best/javaSdk/BsApi.java new file mode 100644 index 0000000..1792271 --- /dev/null +++ b/src/main/java/com/best/javaSdk/BsApi.java @@ -0,0 +1,32 @@ +package com.best.javaSdk; + +import cn.hutool.json.JSONUtil; +import com.best.javaSdk.kdTraceQuery.request.KdTraceQueryReq; +import com.best.javaSdk.kdTraceQuery.request.MailNos; +import com.best.javaSdk.kdTraceQuery.response.KdTraceQueryRsp; + +import java.util.ArrayList; +import java.util.List; + +public class BsApi { + + public static void main(String[] args) { + String url = "http://open-sgp.800best.com/api-server/m9api/api/process"; + String partnerID = "71"; + String partnerKey = "G95DIM64"; + String format = "JSON"; + + Client client = new Client(url, partnerID, partnerKey, format); + + KdTraceQueryReq tdTraceQueryReq = new KdTraceQueryReq(); + MailNos mailNos = new MailNos(); + List<String> mailNo = new ArrayList<>(); + mailNo.add("JT689574278404"); + mailNos.setMailNo(mailNo); + tdTraceQueryReq.setMailNos(mailNos); + tdTraceQueryReq.setLangType("zh-CN"); + + KdTraceQueryRsp kdTraceQueryRsp = client.executed(tdTraceQueryReq); + System.out.println(JSONUtil.parseObj(kdTraceQueryRsp)); + } +} diff --git a/src/main/java/com/best/javaSdk/Client.java b/src/main/java/com/best/javaSdk/Client.java new file mode 100644 index 0000000..b3e08d8 --- /dev/null +++ b/src/main/java/com/best/javaSdk/Client.java @@ -0,0 +1,49 @@ +package com.best.javaSdk; + +import java.util.HashMap; +import java.util.Map; + +public class Client { + + private String url; + private String partnerID; + private String partnerKey; + private String messageFormat; + + public Client(String url, String partnerID, String partnerKey, String messageFormat){ + this.url = url; + this.messageFormat = messageFormat; + this.partnerID = partnerID; + this.partnerKey = partnerKey; + + } + + public <T extends BaseResponse> T executed(BaseRequest baseRequest) { + String response = ""; + Map<String, String> params = new HashMap<>(); + Map<String, String> headers = new HashMap<>(); + Param param = new Param(); + param.setPartnerID(partnerID); + param.setServiceType(baseRequest.obtainServiceType()); + param.setBizData(makeBizData(baseRequest)); + param.setPartnerKey(partnerKey); + + params.put("partnerID", param.getPartnerID()); + params.put("serviceType", param.getServiceType()); + params.put("bizData", param.getBizData()); + params.put("sign", Sign.makeSign(param)); + try { + response = HttpService.sendPost(url, params, headers); + } catch (Exception e) { + e.printStackTrace(); + } + return response == null ? null : (T) baseRequest.makeResponse(response, messageFormat); + } + + private String makeBizData(BaseRequest baseRequest) { + if("xml".equalsIgnoreCase(this.messageFormat)) { + return Parser.coverObject2Xml(baseRequest); + } + return Parser.convertObject2Json(baseRequest); + } +} \ No newline at end of file diff --git a/src/main/java/com/best/javaSdk/HttpService.java b/src/main/java/com/best/javaSdk/HttpService.java new file mode 100644 index 0000000..fd80477 --- /dev/null +++ b/src/main/java/com/best/javaSdk/HttpService.java @@ -0,0 +1,96 @@ +package com.best.javaSdk; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.util.Map; + +public class HttpService { + public static String sendPost(String url, Map<String, String> paramMap, Map<String, String> headerMap) throws Exception { + StringBuffer buffer = new StringBuffer(); //用来拼接参数 + StringBuffer result = new StringBuffer(); //用来接受返回值 + //创建URL + URL httpUrl = new URL(url); + //建立连接 + URLConnection connection = httpUrl.openConnection(); + connection.setRequestProperty("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + connection.setRequestProperty("connection", "keep-alive"); + connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"); + connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); + connection.setDoOutput(true); + connection.setDoInput(true); + if (headerMap != null && !headerMap.isEmpty()) { + for (Map.Entry<String, String> entry : headerMap.entrySet()) { + connection.setRequestProperty(entry.getKey(), URLEncoder.encode(entry.getValue(), "utf-8")); + } + } + + PrintWriter printWriter = new PrintWriter(connection.getOutputStream()); + String request = ""; + if(paramMap != null && !paramMap.isEmpty()){ + for (Map.Entry<String, String> entry : paramMap.entrySet()) { + buffer.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8")).append("&"); + } + //去掉最后一个&并urlencode + request = buffer.toString().substring(0, buffer.toString().length() - 1); + } + printWriter.print(request); + printWriter.flush(); + connection.connect(); + //接受连接返回参数 + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String line; + while ((line = bufferedReader.readLine()) != null) { + result.append(line); + } + bufferedReader.close(); + return result.toString(); + } + + public static String sendPost(String url, Map<String, String> paramMap, Map<String, String> headerMap, String body) throws Exception { + StringBuffer buffer = new StringBuffer(); //用来拼接参数 + StringBuffer result = new StringBuffer(); //用来接受返回值 + String request = ""; + if(paramMap != null && !paramMap.isEmpty()){ + for (Map.Entry<String, String> entry : paramMap.entrySet()) { + buffer.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8")).append("&"); + } + //去掉最后一个&并urlencode + request = buffer.toString().substring(0, buffer.toString().length() - 1); + } + + //创建URL + URL httpUrl = new URL(url + "?" + request); + //建立连接 + URLConnection connection = httpUrl.openConnection(); + connection.setRequestProperty("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); + connection.setRequestProperty("connection", "keep-alive"); + connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"); + connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); + connection.setDoOutput(true); + connection.setDoInput(true); + if (headerMap != null && !headerMap.isEmpty()) { + for (Map.Entry<String, String> entry : headerMap.entrySet()) { + connection.setRequestProperty(entry.getKey(), URLEncoder.encode(entry.getValue(), "utf-8")); + } + } + + PrintWriter printWriter = new PrintWriter(connection.getOutputStream()); + + printWriter.print(body); + printWriter.flush(); + connection.connect(); + //接受连接返回参数 + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String line; + while ((line = bufferedReader.readLine()) != null) { + result.append(line); + } + bufferedReader.close(); + return result.toString(); + } + +} diff --git a/src/main/java/com/best/javaSdk/Param.java b/src/main/java/com/best/javaSdk/Param.java new file mode 100644 index 0000000..eb37609 --- /dev/null +++ b/src/main/java/com/best/javaSdk/Param.java @@ -0,0 +1,56 @@ +package com.best.javaSdk; + + +public class Param { + private String partnerID; + private String serviceType; + private String bizData; + private String partnerKey; + private String sign; + + public String getPartnerID() + { + return this.partnerID; + } + + public void setPartnerID(String value) + { + this.partnerID = value; + } + public String getServiceType() + { + return this.serviceType; + } + + public void setServiceType(String value) + { + this.serviceType = value; + } + public String getBizData() + { + return this.bizData; + } + + public void setBizData(String value) + { + this.bizData = value; + } + public String getPartnerKey() + { + return this.partnerKey; + } + + public void setPartnerKey(String value) + { + this.partnerKey = value; + } + public String getSign() + { + return this.sign; + } + + public void setSign(String value) + { + this.sign = value; + } +} \ No newline at end of file diff --git a/src/main/java/com/best/javaSdk/Parser.java b/src/main/java/com/best/javaSdk/Parser.java new file mode 100644 index 0000000..ee1eeb7 --- /dev/null +++ b/src/main/java/com/best/javaSdk/Parser.java @@ -0,0 +1,278 @@ +package com.best.javaSdk; + +import com.best.javaSdk.converter.Converter; +import com.best.javaSdk.converter.impl.*; +import com.best.javaSdk.converter.util.jsonReader.*; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.io.StringReader; +import java.lang.reflect.Field; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.*; + +public class Parser { + + private static Map<Class, Converter> converterMap; + + static { + converterMap = new HashMap<>(); + converterMap.put(String.class, new StringConverter()); + converterMap.put(int.class, new IntConverter()); + converterMap.put(Integer.class, new IntConverter()); + converterMap.put(float.class, new FloatConverter()); + converterMap.put(Float.class, new FloatConverter()); + converterMap.put(double.class, new DoubleConverter()); + converterMap.put(Double.class, new DoubleConverter()); + converterMap.put(long.class, new LongConverter()); + converterMap.put(Long.class, new LongConverter()); + converterMap.put(boolean.class, new BooleanConverter()); + converterMap.put(Boolean.class, new BooleanConverter()); + converterMap.put(Date.class, new DateConverter()); + } + + public static String coverObject2Xml(Object o) { + StringBuilder sb = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); + Class cls = o.getClass(); + String className = cls.getName(); + className = className.substring(className.lastIndexOf(".") + 1); + if (className.endsWith("Req")) { + sb.append(appendXmlNode("request", object2XmlConvert(o))); + } else { + sb.append(appendXmlNode("response", object2XmlConvert(o))); + } + + return sb.toString(); + } + + public static String object2XmlConvert(Object o) { + StringBuilder stringBuilder = new StringBuilder(); + try { + Class cls = o.getClass(); + if (cls.getName().startsWith("java.lang")) { + return o.toString(); + } + + Field[] props = cls.getDeclaredFields(); + for (Field prop : props) { + prop.setAccessible(true); + String propName = prop.getName(); + Class propType = prop.getType(); + Object propValue = prop.get(o); + StringBuilder stb = new StringBuilder(); + if(propValue == null) { + continue; + } + if(converterMap.containsKey(propType)) { + stb = new StringBuilder(converterMap.get(propType).xmlReverse(propValue, prop)); + } else if (propType.getName().equals("java.util.List")) { + List valueList = (List) propValue; + for (Object value : valueList) { + stb.append(appendXmlNode(propName, object2XmlConvert(value))); + } + } else { + stb = new StringBuilder(appendXmlNode(propName, object2XmlConvert(propValue))); + } + stringBuilder.append(stb); + } + } catch (Exception e) { + return "parser error : " + e.getMessage(); + } + return stringBuilder.toString(); + } + + public static String appendXmlNode(String nodeName, String nodeValue) { + StringBuilder sb = new StringBuilder(); + return sb.append("<").append(nodeName).append(">").append(nodeValue).append("</").append(nodeName).append(">").toString(); + } + + public static <T> T coverXml2Object(String xml, Class<T> clazz) { + + if(xml == null || "".equals(xml)) { + return null; + } + + try { + DocumentBuilderFactory factory = DocumentBuilderFactory + .newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document doc = builder.parse(new InputSource(new StringReader(xml))); + Element root = doc.getDocumentElement(); + NodeList nodeList = root.getChildNodes(); + return handelNodes(nodeList, clazz); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static <T> T handelNodes(NodeList nodeList, Class<T> clazz) { + try { + if (nodeList == null) { + return null; + } + if (clazz.getName().startsWith("java.lang")) { + return (T)nodeList.item(0).getNodeValue(); + } + + T obj = clazz.newInstance(); + Map<Field, List<Object>> listChildMap = new HashMap<>(); + for (int i = 0; i < nodeList.getLength(); i++) { + Node node = nodeList.item(i); + String nodeName = node.getNodeName(); + short nodeType = node.getNodeType(); + if (nodeType == 3 || nodeType == 4) { + continue; + } + if(!node.hasChildNodes()) { + continue; + } + Field[] fields = clazz.getDeclaredFields(); + if(!isContainProp(fields, nodeName)) { + continue; + } + Field field = clazz.getDeclaredField(nodeName); + field.setAccessible(true); + Class<?> fieldType = field.getType(); + + if (fieldType.getName().equals("java.util.List")) { + Type type = field.getGenericType(); + if(type instanceof ParameterizedType) { + ParameterizedType pt = (ParameterizedType) type; + Class genericClazz = (Class) pt.getActualTypeArguments()[0]; + Object listChildObj = handelNodes(node.getChildNodes(), genericClazz); + + if (listChildMap.get(field) == null) { + List<Object> objectList = new ArrayList<>(); + objectList.add(listChildObj); + listChildMap.put(field, objectList); + } else { + listChildMap.get(field).add(listChildObj); + } + } + } else { + Converter converter = converterMap.get(fieldType); + if (converter == null) { + field.set(obj, handelNodes(node.getChildNodes(), fieldType)); + continue; + } + Object convert = converter.convertXml(node, field); + if (convert != null) { + field.set(obj, convert); + } + } + } + for (Field field : listChildMap.keySet()) { + field.set(obj, listChildMap.get(field)); + } + return obj; + } catch (InstantiationException | IllegalAccessException | NoSuchFieldException e) { + e.printStackTrace(); + } + return null; + } + + public static <T> T convertJson2Object(String str, Class<T> clazz) { + try { + JSONReader reader = new JSONValidatingReader(new ExceptionErrorListener()); + Object rootObj = reader.read(str); + return convertJson2Object(rootObj, clazz); + }catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + private static <T> T convertJson2Object(Object object, Class<T> clazz) throws Exception { + T t = clazz.newInstance(); + if (object instanceof Map<?, ?>) { + Map<?, ?> rootJson = (Map<?, ?>) object; + for (Object obj : rootJson.keySet()) { + String itemName = obj.toString(); + Object itemValue = rootJson.get(obj); + Field[] fields = clazz.getDeclaredFields(); + if (!isContainProp(fields, itemName)) { + continue; + } + Field field = clazz.getDeclaredField(itemName); + field.setAccessible(true); + Class<?> fieldType = field.getType(); + Object value; + + Converter converter = converterMap.get(fieldType); + if (converter == null && itemValue instanceof Map<?, ?>) { + value = convertJson2Object(itemValue, fieldType); + } else if (itemValue instanceof ArrayList<?> && fieldType.equals(List.class)) { + value = handlerListJson((ArrayList<?>) itemValue, field); + } else if (converter != null) { + if (itemValue == null) { + value = null; + } else { + value = converter.convertJson(itemValue, field); + } + } else { + continue; + } + if (value != null) { + field.set(t, value); + } + } + } + return t; + } + + private static List handlerListJson(ArrayList<?> value, Field field) throws Exception { + List list = new ArrayList<>(); + Type type = field.getGenericType(); + if(type instanceof ParameterizedType) { + ParameterizedType pt = (ParameterizedType) type; + Class genericClazz = (Class) pt.getActualTypeArguments()[0]; + Converter converter = converterMap.get(genericClazz); + for (Object object : value) { + if (object instanceof Map<?, ?>) { + list.add(convertJson2Object(object, genericClazz)); + }else { + list.add(converter.convertJson(object, field)); + } + } + } + + return list; + } + + public static String convertObject2Json(Object object) { + try { + JSONWriter jsonWriter = new JSONWriter(); + return jsonWriter.write(object); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + private static boolean isContainProp(Field[] fields, String nodeName) { + + if(fields == null || fields.length < 0) { + return false; + } + + if(nodeName == null || "".equals(nodeName)) { + return false; + } + + for(Field field : fields) { + if(field.getName().equals(nodeName)) { + return true; + } + } + return false; + } + +} diff --git a/src/main/java/com/best/javaSdk/Sign.java b/src/main/java/com/best/javaSdk/Sign.java new file mode 100644 index 0000000..315b1d5 --- /dev/null +++ b/src/main/java/com/best/javaSdk/Sign.java @@ -0,0 +1,53 @@ +package com.best.javaSdk; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class Sign { + public static String makeSign(Param param){ + String signString = makeSignString(param); + String sign = ""; + try { + sign = digestEncrypte(signString.getBytes("utf-8"), "MD5"); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return sign; + } + + public static String makeBase64Sign(Param param){ + String signString = makeSignString(param); + String sign = ""; + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(signString.getBytes("utf-8")); + byte[] b = md.digest(); + sign = (new sun.misc.BASE64Encoder()).encode(b); + }catch (Throwable e) { + e.printStackTrace(); + } + return sign; + } + + private static String makeSignString(Param param) { + String signString = param.getBizData() + param.getPartnerKey(); return signString; + } + + public static String digestEncrypte(byte[] plainText, String algorithm) throws NoSuchAlgorithmException, UnsupportedEncodingException { + MessageDigest md = MessageDigest.getInstance(algorithm); + md.update(plainText); + byte[] b = md.digest(); + StringBuilder output = new StringBuilder(32); + for (int i = 0; i < b.length; i++) { + String temp = Integer.toHexString(b[i] & 0xff); + if (temp.length() < 2) { + output.append("0"); + } + output.append(temp); + } + return output.toString(); + } +} diff --git a/src/main/java/com/best/javaSdk/converter/Converter.java b/src/main/java/com/best/javaSdk/converter/Converter.java new file mode 100644 index 0000000..f7e3a89 --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/Converter.java @@ -0,0 +1,15 @@ +package com.best.javaSdk.converter; + +import org.w3c.dom.Node; + +import java.lang.reflect.Field; + +public interface Converter { + + Object convertXml(Node node, Field field); + + String xmlReverse(Object propValue, Field prop); + + Object convertJson(Object value, Field field); + +} diff --git a/src/main/java/com/best/javaSdk/converter/ConverterUtil.java b/src/main/java/com/best/javaSdk/converter/ConverterUtil.java new file mode 100644 index 0000000..dff3f8b --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/ConverterUtil.java @@ -0,0 +1,12 @@ +package com.best.javaSdk.converter; + +public class ConverterUtil { + public static Object convert(Class<?> type, String value){ + if(type.isAssignableFrom(int.class)){ + return Integer.parseInt(value); + }else if(type.isAssignableFrom(double.class)){ + return Double.valueOf(value); + } + return value; + } +} diff --git a/src/main/java/com/best/javaSdk/converter/XmlConverter.java b/src/main/java/com/best/javaSdk/converter/XmlConverter.java new file mode 100644 index 0000000..0e50889 --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/XmlConverter.java @@ -0,0 +1,12 @@ +package com.best.javaSdk.converter; + +import org.w3c.dom.Node; + +import java.lang.reflect.Field; + +public interface XmlConverter { + + Object convert(Node node, Field field); + + String reverse(Object propValue, Field prop); +} diff --git a/src/main/java/com/best/javaSdk/converter/impl/BooleanConverter.java b/src/main/java/com/best/javaSdk/converter/impl/BooleanConverter.java new file mode 100644 index 0000000..d59aef7 --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/impl/BooleanConverter.java @@ -0,0 +1,25 @@ +package com.best.javaSdk.converter.impl; + +import com.best.javaSdk.converter.Converter; +import org.w3c.dom.Node; + +import java.lang.reflect.Field; + +public class BooleanConverter implements Converter { + @Override + public Object convertXml(Node node, Field field) { + Node firstChild = node.getFirstChild(); + return Boolean.parseBoolean(firstChild.getNodeValue()); + } + + @Override + public String xmlReverse(Object propValue, Field prop) { + String propName = prop.getName(); + return com.best.javaSdk.Parser.appendXmlNode(propName, propValue.toString()); + } + + @Override + public Object convertJson(Object value, Field field) { + return Boolean.parseBoolean(value.toString()); + } +} diff --git a/src/main/java/com/best/javaSdk/converter/impl/DateConverter.java b/src/main/java/com/best/javaSdk/converter/impl/DateConverter.java new file mode 100644 index 0000000..fd05673 --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/impl/DateConverter.java @@ -0,0 +1,47 @@ +package com.best.javaSdk.converter.impl; + +import com.best.javaSdk.converter.Converter; +import org.w3c.dom.Node; + +import java.lang.reflect.Field; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.TimeZone; + +public class DateConverter implements Converter { + + private static DateFormat format; + + static { + format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + format.setTimeZone(TimeZone.getTimeZone("GMT+8")); + } + + @Override + public Object convertXml(Node node, Field field) { + Node firstChild = node.getFirstChild(); + try { + return format.parse(firstChild.getNodeValue().toString()); + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + @Override + public String xmlReverse(Object propValue, Field prop) { + String propName = prop.getName(); + return com.best.javaSdk.Parser.appendXmlNode(propName, propValue.toString()); + } + + @Override + public Object convertJson(Object value, Field field) { + try { + return format.parse(value.toString()); + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/src/main/java/com/best/javaSdk/converter/impl/DoubleConverter.java b/src/main/java/com/best/javaSdk/converter/impl/DoubleConverter.java new file mode 100644 index 0000000..ae0201c --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/impl/DoubleConverter.java @@ -0,0 +1,25 @@ +package com.best.javaSdk.converter.impl; + +import com.best.javaSdk.converter.Converter; +import org.w3c.dom.Node; + +import java.lang.reflect.Field; + +public class DoubleConverter implements Converter { + @Override + public Object convertXml(Node node, Field field) { + Node firstChild = node.getFirstChild(); + return Double.valueOf(firstChild.getNodeValue()); + } + + @Override + public String xmlReverse(Object propValue, Field prop) { + String propName = prop.getName(); + return com.best.javaSdk.Parser.appendXmlNode(propName, propValue.toString()); + } + + @Override + public Object convertJson(Object value, Field field) { + return Double.valueOf(value.toString()); + } +} diff --git a/src/main/java/com/best/javaSdk/converter/impl/FloatConverter.java b/src/main/java/com/best/javaSdk/converter/impl/FloatConverter.java new file mode 100644 index 0000000..268f04b --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/impl/FloatConverter.java @@ -0,0 +1,25 @@ +package com.best.javaSdk.converter.impl; + +import com.best.javaSdk.converter.Converter; +import org.w3c.dom.Node; + +import java.lang.reflect.Field; + +public class FloatConverter implements Converter { + @Override + public Object convertXml(Node node, Field field) { + Node firstChild = node.getFirstChild(); + return Float.valueOf(firstChild.getNodeValue()); + } + + @Override + public String xmlReverse(Object propValue, Field prop) { + String propName = prop.getName(); + return com.best.javaSdk.Parser.appendXmlNode(propName, propValue.toString()); + } + + @Override + public Object convertJson(Object value, Field field) { + return Float.valueOf(value.toString()); + } +} diff --git a/src/main/java/com/best/javaSdk/converter/impl/IntConverter.java b/src/main/java/com/best/javaSdk/converter/impl/IntConverter.java new file mode 100644 index 0000000..2bac771 --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/impl/IntConverter.java @@ -0,0 +1,24 @@ +package com.best.javaSdk.converter.impl; + +import org.w3c.dom.Node; + +import java.lang.reflect.Field; + +public class IntConverter implements com.best.javaSdk.converter.Converter { + @Override + public Object convertXml(Node node, Field field) { + Node firstChild = node.getFirstChild(); + return Integer.parseInt(firstChild.getNodeValue()); + } + + @Override + public String xmlReverse(Object propValue, Field prop) { + String propName = prop.getName(); + return com.best.javaSdk.Parser.appendXmlNode(propName, propValue.toString()); + } + + @Override + public Object convertJson(Object value, Field field) { + return Integer.parseInt(value.toString()); + } +} diff --git a/src/main/java/com/best/javaSdk/converter/impl/LongConverter.java b/src/main/java/com/best/javaSdk/converter/impl/LongConverter.java new file mode 100644 index 0000000..f7b57ca --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/impl/LongConverter.java @@ -0,0 +1,25 @@ +package com.best.javaSdk.converter.impl; + +import com.best.javaSdk.converter.Converter; +import org.w3c.dom.Node; + +import java.lang.reflect.Field; + +public class LongConverter implements Converter { + @Override + public Object convertXml(Node node, Field field) { + Node firstChild = node.getFirstChild(); + return Long.valueOf(firstChild.getNodeValue()); + } + + @Override + public String xmlReverse(Object propValue, Field prop) { + String propName = prop.getName(); + return com.best.javaSdk.Parser.appendXmlNode(propName, propValue.toString()); + } + + @Override + public Object convertJson(Object value, Field field) { + return Long.valueOf(value.toString()); + } +} diff --git a/src/main/java/com/best/javaSdk/converter/impl/StringConverter.java b/src/main/java/com/best/javaSdk/converter/impl/StringConverter.java new file mode 100644 index 0000000..3b8195c --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/impl/StringConverter.java @@ -0,0 +1,25 @@ +package com.best.javaSdk.converter.impl; + +import com.best.javaSdk.converter.Converter; +import org.w3c.dom.Node; + +import java.lang.reflect.Field; + +public class StringConverter implements Converter { + @Override + public Object convertXml(Node node, Field field) { + Node firstChild = node.getFirstChild(); + return firstChild.getNodeValue(); + } + + @Override + public String xmlReverse(Object propValue, Field prop) { + String propName = prop.getName(); + return com.best.javaSdk.Parser.appendXmlNode(propName, propValue.toString()); + } + + @Override + public Object convertJson(Object value, Field field) { + return value.toString(); + } +} diff --git a/src/main/java/com/best/javaSdk/converter/util/jsonReader/BufferErrorListener.java b/src/main/java/com/best/javaSdk/converter/util/jsonReader/BufferErrorListener.java new file mode 100644 index 0000000..2dea0fa --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/util/jsonReader/BufferErrorListener.java @@ -0,0 +1,41 @@ +package com.best.javaSdk.converter.util.jsonReader; + +public class BufferErrorListener implements JSONErrorListener { + + protected StringBuffer buffer; + private String input; + + public BufferErrorListener(StringBuffer buffer) { + this.buffer = buffer; + } + + public BufferErrorListener() { + this(new StringBuffer()); + } + + public void start(String input) { + this.input = input; + buffer.setLength(0); + } + + public void error(String type, int col) { + buffer.append("expected "); + buffer.append(type); + buffer.append(" at column "); + buffer.append(col); + buffer.append("\n"); + buffer.append(input); + buffer.append("\n"); + indent(col-1, buffer); + buffer.append("^"); + } + + private void indent(int n, StringBuffer ret) { + for (int i = 0; i< n; ++i) { + ret.append(' '); + } + } + + public void end() { + } +} diff --git a/src/main/java/com/best/javaSdk/converter/util/jsonReader/ExceptionErrorListener.java b/src/main/java/com/best/javaSdk/converter/util/jsonReader/ExceptionErrorListener.java new file mode 100644 index 0000000..21eaf32 --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/util/jsonReader/ExceptionErrorListener.java @@ -0,0 +1,9 @@ +package com.best.javaSdk.converter.util.jsonReader; + +public class ExceptionErrorListener extends BufferErrorListener { + + public void error(String type, int col) { + super.error(type, col); + throw new IllegalArgumentException(buffer.toString()); + } +} diff --git a/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONErrorListener.java b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONErrorListener.java new file mode 100644 index 0000000..d7a483e --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONErrorListener.java @@ -0,0 +1,7 @@ +package com.best.javaSdk.converter.util.jsonReader; + +public interface JSONErrorListener { + void start(String text); + void error(String message, int column); + void end(); +} diff --git a/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONReader.java b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONReader.java new file mode 100644 index 0000000..23da6a7 --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONReader.java @@ -0,0 +1,238 @@ +package com.best.javaSdk.converter.util.jsonReader; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.text.CharacterIterator; +import java.text.StringCharacterIterator; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 不能直接使用JSONReader,请用JSONValidatingReader,所以这里改为abstract修饰。 + */ +public abstract class JSONReader { + + private static final Object OBJECT_END = new Object(); + private static final Object ARRAY_END = new Object(); + private static final Object COLON = new Object(); + private static final Object COMMA = new Object(); + public static final int FIRST = 0; + public static final int CURRENT = 1; + public static final int NEXT = 2; + + private static Map<Character, Character> escapes = new HashMap<Character, Character>(); + static { + escapes.put(Character.valueOf('"'), Character.valueOf('"')); + escapes.put(Character.valueOf('\\'), Character.valueOf('\\')); + escapes.put(Character.valueOf('/'), Character.valueOf('/')); + escapes.put(Character.valueOf('b'), Character.valueOf('\b')); + escapes.put(Character.valueOf('f'), Character.valueOf('\f')); + escapes.put(Character.valueOf('n'), Character.valueOf('\n')); + escapes.put(Character.valueOf('r'), Character.valueOf('\r')); + escapes.put(Character.valueOf('t'), Character.valueOf('\t')); + } + + private CharacterIterator it; + private char c; + private Object token; + private StringBuffer buf = new StringBuffer(); + + private char next() { + c = it.next(); + return c; + } + + private void skipWhiteSpace() { + while (Character.isWhitespace(c)) { + next(); + } + } + + /** + * 2 + * @param ci + * @param start + * @return + */ + public Object read(CharacterIterator ci, int start) { + it = ci; + switch (start) { + case FIRST: + c = it.first(); + break; + case CURRENT: + c = it.current(); + break; + case NEXT: + c = it.next(); + break; + } + return read(); + } + + public Object read(CharacterIterator it) { + return read(it, NEXT); + } + + /** + * 1 + * @param string + * @return + */ + public Object read(String string) { + return read(new StringCharacterIterator(string), FIRST); + } + + /** + * 3 + * @return + */ + private Object read() { + skipWhiteSpace(); + char ch = c; + next(); + switch (ch) { + case '"': token = string(); break; + case '[': token = array(); break; + case ']': token = ARRAY_END; break; + case ',': token = COMMA; break; + case '{': token = object(); break; + case '}': token = OBJECT_END; break; + case ':': token = COLON; break; + case 't': + next(); next(); next(); // assumed r-u-e + token = Boolean.TRUE; + break; + case'f': + next(); next(); next(); next(); // assumed a-l-s-e + token = Boolean.FALSE; + break; + case 'n': + next(); next(); next(); // assumed u-l-l + token = null; + break; + default: + c = it.previous(); + if (Character.isDigit(c) || c == '-') { + token = number(); + } + } + // System.out.println("token: " + token); // enable this line to see the token stream + return token; + } + + private Object object() { + Map<Object, Object> ret = new HashMap<Object, Object>(); + Object key = read(); + while (token != OBJECT_END) { + read(); // should be a colon + if (token != OBJECT_END) { + ret.put(key, read()); + if (read() == COMMA) { + key = read(); + } + } + } + + return ret; + } + + private Object array() { + List<Object> ret = new ArrayList<Object>(); + Object value = read(); + while (token != ARRAY_END) { + ret.add(value); + if (read() == COMMA) { + value = read(); + } + } + return ret; + } + + private Object number() { + int length = 0; + boolean isFloatingPoint = false; + buf.setLength(0); + + if (c == '-') { + add(); + } + length += addDigits(); + if (c == '.') { + add(); + length += addDigits(); + isFloatingPoint = true; + } + if (c == 'e' || c == 'E') { + add(); + if (c == '+' || c == '-') { + add(); + } + addDigits(); + isFloatingPoint = true; + } + + String s = buf.toString(); + return isFloatingPoint ? (length < 17) ? (Object)Double.valueOf(s) : new BigDecimal(s) : (length < 19) ? (Object)Long.valueOf(s) : new BigInteger(s); + } + + private int addDigits() { + int ret; + for (ret = 0; Character.isDigit(c); ++ret) { + add(); + } + return ret; + } + + private Object string() { + buf.setLength(0); + while (c != '"') { + if (c == '\\') { + next(); + if (c == 'u') { + add(unicode()); + } else { + Object value = escapes.get(Character.valueOf(c)); + if (value != null) { + add(((Character) value).charValue()); + } + } + } else { + add(); + } + } + next(); + + return buf.toString(); + } + + private void add(char cc) { + buf.append(cc); + next(); + } + + private void add() { + add(c); + } + + private char unicode() { + int value = 0; + for (int i = 0; i < 4; ++i) { + switch (next()) { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + value = (value << 4) + c - '0'; + break; + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + value = (value << 4) + c - 'k'; + break; + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + value = (value << 4) + c - 'K'; + break; + } + } + return (char) value; + } +} diff --git a/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidatingReader.java b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidatingReader.java new file mode 100644 index 0000000..1014681 --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidatingReader.java @@ -0,0 +1,23 @@ +package com.best.javaSdk.converter.util.jsonReader; + +public class JSONValidatingReader extends JSONReader { + public static final Object INVALID = new Object(); + private JSONValidator validator; + + public JSONValidatingReader(JSONValidator validator) { + this.validator = validator; + } + + public JSONValidatingReader(ExceptionErrorListener listener) { + this(new JSONValidator(listener)); + } + +/* public JSONValidatingReader() { + this(new StdoutStreamErrorListener()); + }*/ + + public Object read(String string) { + if (!validator.validate(string)) return INVALID; + return super.read(string); + } +} diff --git a/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidatingWriter.java b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidatingWriter.java new file mode 100644 index 0000000..ac2e30e --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidatingWriter.java @@ -0,0 +1,56 @@ +package com.best.javaSdk.converter.util.jsonReader; + +public class JSONValidatingWriter extends JSONWriter { + + private JSONValidator validator; + + public JSONValidatingWriter(JSONValidator validator, boolean emitClassName) { + super(emitClassName); + this.validator = validator; + } + + public JSONValidatingWriter(JSONValidator validator) { + this.validator = validator; + } + + public JSONValidatingWriter(JSONErrorListener listener, boolean emitClassName) { + this(new JSONValidator(listener), emitClassName); + } + + public JSONValidatingWriter(JSONErrorListener listener) { + this(new JSONValidator(listener)); + } + + public JSONValidatingWriter() { + this(new StdoutStreamErrorListener()); + } + + public JSONValidatingWriter(boolean emitClassName) { + this(new StdoutStreamErrorListener(), emitClassName); + } + + private String validate(String text) { + validator.validate(text); + return text; + } + + public String write(Object object) { + return validate(super.write(object)); + } + + public String write(long n) { + return validate(super.write(n)); + } + + public String write(double d) { + return validate(super.write(d)); + } + + public String write(char c) { + return validate(super.write(c)); + } + + public String write(boolean b) { + return validate(super.write(b)); + } +} diff --git a/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidator.java b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidator.java new file mode 100644 index 0000000..cf55cd3 --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONValidator.java @@ -0,0 +1,214 @@ +package com.best.javaSdk.converter.util.jsonReader; + +import java.text.CharacterIterator; +import java.text.StringCharacterIterator; + +public class JSONValidator { + + private JSONErrorListener listener; + private CharacterIterator it; + private char c; + private int col; + + public JSONValidator(JSONErrorListener listener) { + this.listener = listener; + } + + public boolean validate(String input) { + input = input.trim(); + listener.start(input); + boolean ret = valid(input); + listener.end(); + return ret; + } + + private boolean valid(String input) { + if ("".equals(input)) return true; + + boolean ret = true; + it = new StringCharacterIterator(input); + c = it.first(); + col = 1; + if (!value()) { + ret = error("value", 1); + } else { + skipWhiteSpace(); + if (c != CharacterIterator.DONE) { + ret = error("end", col); + } + } + + return ret; + } + + private boolean value() { + return + literal("true") || + literal("false") || + literal("null") || + string() || + number() || + object() || + array(); + } + + private boolean literal(String text) { + CharacterIterator ci = new StringCharacterIterator(text); + char t = ci.first(); + if (c != t) return false; + + int start = col; + boolean ret = true; + for (t = ci.next(); t != CharacterIterator.DONE; t = ci.next()) { + if (t != nextCharacter()) { + ret = false; + break; + } + } + nextCharacter(); + + if (!ret) error("literal " + text, start); + return ret; + } + + private boolean array() { + return aggregate('[', ']', false); + } + + private boolean object() { + return aggregate('{', '}', true); + } + + private boolean aggregate(char entryCharacter, char exitCharacter, boolean prefix) { + if (c != entryCharacter) return false; + nextCharacter(); + skipWhiteSpace(); + if (c == exitCharacter) { + nextCharacter(); + return true; + } + + for(;;) { + if (prefix) { + int start = col; + if (!string()) return error("string", start); + skipWhiteSpace(); + if (c != ':') return error("colon", col); + nextCharacter(); + skipWhiteSpace(); + } + if (value()) { + skipWhiteSpace(); + if (c == ',') { + nextCharacter(); + } else if (c == exitCharacter) { + break; + } else { + return error("comma or " + exitCharacter, col); + } + } else { + return error("value", col); + } + skipWhiteSpace(); + } + + nextCharacter(); + return true; + } + + private boolean number() { + if (!Character.isDigit(c) && c != '-') return false; + int start = col; + + if (c == '-') nextCharacter(); + + if (c == '0') { + nextCharacter(); + } else if (Character.isDigit(c)) { + while(Character.isDigit(c)) nextCharacter(); + } else { + return error("number", start); + } + + if (c == '.') { + nextCharacter(); + if (Character.isDigit(c)) { + while(Character.isDigit(c)) nextCharacter(); + } else { + return error("number", start); + } + } + + if (c == 'e' || c == 'E') { + nextCharacter(); + if (c == '+' || c=='-') { + nextCharacter(); + } + if (Character.isDigit(c)) { + while(Character.isDigit(c)) nextCharacter(); + } else { + return error("number", start); + } + } + + return true; + } + + private boolean string() { + if (c != '"') return false; + + int start = col; + boolean escaped = false; + + for (nextCharacter(); c != CharacterIterator.DONE; nextCharacter()) { + if (!escaped && c == '\\') { + escaped = true; + } else if (escaped) { + if (!escape()) { + return false; + } + escaped = false; + } else if (c == '"') { + nextCharacter(); + return true; + } + } + + return error("quoted string", start); + } + + private boolean escape() { + int start = col-1; + if ("\\\"/bfnrtu".indexOf(c) < 0) { + return error("escape sequence \\\",\\\\,\\/,\\b,\\f,\\n,\\r,\\t or \\uxxxx", start); + } + if (c == 'u') { + if (!ishex(nextCharacter()) || !ishex(nextCharacter()) || + !ishex(nextCharacter()) || !ishex(nextCharacter())) { + return error("unicode escape sequence \\uxxxx", start); + } + } + return true; + } + + private boolean ishex(char d) { + return "0123456789abcdefABCDEF".indexOf(c) >= 0; + } + + private char nextCharacter() { + c = it.next(); + ++col; + return c; + } + + private void skipWhiteSpace() { + while (Character.isWhitespace(c)) { + nextCharacter(); + } + } + + private boolean error(String type, int col) { + if (listener != null) listener.error(type, col); + return false; + } +} diff --git a/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONWriter.java b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONWriter.java new file mode 100644 index 0000000..f52914a --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/util/jsonReader/JSONWriter.java @@ -0,0 +1,221 @@ +package com.best.javaSdk.converter.util.jsonReader; + +import java.beans.BeanInfo; +import java.beans.IntrospectionException; +import java.beans.Introspector; +import java.beans.PropertyDescriptor; +import java.lang.reflect.Array; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.text.CharacterIterator; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.text.StringCharacterIterator; +import java.util.*; + +public class JSONWriter { + + private StringBuffer buf = new StringBuffer(); + private Stack<Object> calls = new Stack<Object>(); + private boolean emitClassName = true; + private DateFormat format; + + public JSONWriter(boolean emitClassName) { + this.emitClassName = emitClassName; + } + + public JSONWriter() { + this(false); + } + + public JSONWriter(DateFormat format) { + this(false); + this.format = format; + } + + public String write(Object object) { + buf.setLength(0); + value(object); + return buf.toString(); + } + + public String write(long n) { + return String.valueOf(n); + } + + public String write(double d) { + return String.valueOf(d); + } + + public String write(char c) { + return "\"" + c + "\""; + } + + public String write(boolean b) { + return String.valueOf(b); + } + + private void value(Object object) { + if (object == null || cyclic(object)) { + add(null); + } else { + calls.push(object); + if (object instanceof Class<?>) string(object); + else if (object instanceof Boolean) bool(((Boolean) object).booleanValue()); + else if (object instanceof Number) add(object); + else if (object instanceof String) string(object); + else if (object instanceof Character) string(object); + else if (object instanceof Map<?, ?>) map((Map<?, ?>)object); + else if (object.getClass().isArray()) array(object); + else if (object instanceof Iterator<?>) array((Iterator<?>)object); + else if (object instanceof Collection<?>) array(((Collection<?>)object).iterator()); + else if (object instanceof Date) date((Date)object); + else bean(object); + calls.pop(); + } + } + + private boolean cyclic(Object object) { + Iterator<Object> it = calls.iterator(); + while (it.hasNext()) { + Object called = it.next(); + if (object == called) return true; + } + return false; + } + + private void bean(Object object) { + add("{"); + BeanInfo info; + boolean addedSomething = false; + try { + info = Introspector.getBeanInfo(object.getClass()); + PropertyDescriptor[] props = info.getPropertyDescriptors(); + for (int i = 0; i < props.length; ++i) { + PropertyDescriptor prop = props[i]; + String name = prop.getName(); + Method accessor = prop.getReadMethod(); + if ((emitClassName || !"class".equals(name)) && accessor != null) { + if (!accessor.isAccessible()) accessor.setAccessible(true); + Object value = accessor.invoke(object, (Object[])null); + if (value == null) continue; + if (addedSomething) add(','); + add(name, value); + addedSomething = true; + } + } + Field[] ff = object.getClass().getFields(); + for (int i = 0; i < ff.length; ++i) { + Field field = ff[i]; + Object value = field.get(object); + if (value == null) continue; + if (addedSomething) add(','); + add(field.getName(), value); + addedSomething = true; + } + } catch (IllegalAccessException iae) { + iae.printStackTrace(); + } catch (InvocationTargetException ite) { + ite.getCause().printStackTrace(); + ite.printStackTrace(); + } catch (IntrospectionException ie) { + ie.printStackTrace(); + } + add("}"); + } + + private void add(String name, Object value) { + add('"'); + add(name); + add("\":"); + value(value); + } + + private void map(Map<?, ?> map) { + add("{"); + Iterator<?> it = map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry<?, ?> e = (Map.Entry<?, ?>) it.next(); + value(e.getKey()); + add(":"); + value(e.getValue()); + if (it.hasNext()) add(','); + } + add("}"); + } + + private void array(Iterator<?> it) { + add("["); + while (it.hasNext()) { + value(it.next()); + if (it.hasNext()) add(","); + } + add("]"); + } + + private void array(Object object) { + add("["); + int length = Array.getLength(object); + for (int i = 0; i < length; ++i) { + value(Array.get(object, i)); + if (i < length - 1) add(','); + } + add("]"); + } + + private void bool(boolean b) { + add(b ? "true" : "false"); + } + + private void date(Date date) { + if (this.format == null) { + this.format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + this.format.setTimeZone(TimeZone.getTimeZone("GMT+8")); + } + add("\""); + add(format.format(date)); + add("\""); + } + + private void string(Object obj) { + add('"'); + CharacterIterator it = new StringCharacterIterator(obj.toString()); + for (char c = it.first(); c != CharacterIterator.DONE; c = it.next()) { + if (c == '"') add("\\\""); + else if (c == '\\') add("\\\\"); + else if (c == '/') add("\\/"); + else if (c == '\b') add("\\b"); + else if (c == '\f') add("\\f"); + else if (c == '\n') add("\\n"); + else if (c == '\r') add("\\r"); + else if (c == '\t') add("\\t"); + else if (Character.isISOControl(c)) { + unicode(c); + } else { + add(c); + } + } + add('"'); + } + + private void add(Object obj) { + buf.append(obj); + } + + private void add(char c) { + buf.append(c); + } + + static char[] hex = "0123456789ABCDEF".toCharArray(); + + private void unicode(char c) { + add("\\u"); + int n = c; + for (int i = 0; i < 4; ++i) { + int digit = (n & 0xf000) >> 12; + add(hex[digit]); + n <<= 4; + } + } +} diff --git a/src/main/java/com/best/javaSdk/converter/util/jsonReader/StdoutStreamErrorListener.java b/src/main/java/com/best/javaSdk/converter/util/jsonReader/StdoutStreamErrorListener.java new file mode 100644 index 0000000..b1f015f --- /dev/null +++ b/src/main/java/com/best/javaSdk/converter/util/jsonReader/StdoutStreamErrorListener.java @@ -0,0 +1,8 @@ +package com.best.javaSdk.converter.util.jsonReader; + +public class StdoutStreamErrorListener extends BufferErrorListener { + + public void end() { + System.out.print(buffer.toString()); + } +} diff --git a/src/main/java/com/best/javaSdk/kdCancelOrderNotify/request/KdCancelOrderNotifyReq.java b/src/main/java/com/best/javaSdk/kdCancelOrderNotify/request/KdCancelOrderNotifyReq.java new file mode 100644 index 0000000..a5748a0 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCancelOrderNotify/request/KdCancelOrderNotifyReq.java @@ -0,0 +1,44 @@ +package com.best.javaSdk.kdCancelOrderNotify.request; + +import com.best.javaSdk.BaseRequest; +import com.best.javaSdk.BaseResponse; +import com.best.javaSdk.Parser; + + +public class KdCancelOrderNotifyReq implements BaseRequest { + private String txLogisticId; + private String reason; + + public String getTxLogisticId() + { + return this.txLogisticId; + } + + public void setTxLogisticId(String value) + { + this.txLogisticId = value; + } + + public String getReason() + { + return this.reason; + } + + public void setReason(String value) + { + this.reason = value; + } + + public String obtainServiceType() { + return "KD_CANCEL_ORDER_NOTIFY"; + } + + public BaseResponse makeResponse(String rsp, String format) { + if ("xml".equalsIgnoreCase(format)) { + return Parser.coverXml2Object(rsp, com.best.javaSdk.kdCancelOrderNotify.response.KdCancelOrderNotifyRsp.class); + } + return Parser.convertJson2Object(rsp, com.best.javaSdk.kdCancelOrderNotify.response.KdCancelOrderNotifyRsp.class); + + } + +} diff --git a/src/main/java/com/best/javaSdk/kdCancelOrderNotify/response/KdCancelOrderNotifyRsp.java b/src/main/java/com/best/javaSdk/kdCancelOrderNotify/response/KdCancelOrderNotifyRsp.java new file mode 100644 index 0000000..45a68e7 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCancelOrderNotify/response/KdCancelOrderNotifyRsp.java @@ -0,0 +1,53 @@ +package com.best.javaSdk.kdCancelOrderNotify.response; + +import com.best.javaSdk.BaseResponse; + + +public class KdCancelOrderNotifyRsp implements BaseResponse { + private boolean result; + private String remark; + private String errorCode; + private String errorDescription; + + public boolean getResult() + { + return this.result; + } + + public void setResult(boolean value) + { + this.result = value; + } + + public String getRemark() + { + return this.remark; + } + + public void setRemark(String value) + { + this.remark = value; + } + + public String getErrorCode() + { + return this.errorCode; + } + + public void setErrorCode(String value) + { + this.errorCode = value; + } + + public String getErrorDescription() + { + return this.errorDescription; + } + + public void setErrorDescription(String value) + { + this.errorDescription = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Item.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Item.java new file mode 100644 index 0000000..52f8964 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Item.java @@ -0,0 +1,74 @@ +package com.best.javaSdk.kdCreateWaybillOrderNotify.request; + + + +public class Item { + private long itemCount; + private long itemWeight; + private long itemLength; + private long itemWidth; + private long itemHeight; + private String itemName; + + public long getItemCount() + { + return this.itemCount; + } + + public void setItemCount(long value) + { + this.itemCount = value; + } + + public long getItemWeight() + { + return this.itemWeight; + } + + public void setItemWeight(long value) + { + this.itemWeight = value; + } + + public long getItemLength() + { + return this.itemLength; + } + + public void setItemLength(long value) + { + this.itemLength = value; + } + + public long getItemWidth() + { + return this.itemWidth; + } + + public void setItemWidth(long value) + { + this.itemWidth = value; + } + + public long getItemHeight() + { + return this.itemHeight; + } + + public void setItemHeight(long value) + { + this.itemHeight = value; + } + + public String getItemName() + { + return this.itemName; + } + + public void setItemName(String value) + { + this.itemName = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Items.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Items.java new file mode 100644 index 0000000..065e9b5 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Items.java @@ -0,0 +1,20 @@ +package com.best.javaSdk.kdCreateWaybillOrderNotify.request; + +import com.best.javaSdk.kdCreateWaybillOrderNotify.request.Item; +import java.util.List; + + +public class Items { + private List<Item> item; + + public List<Item> getItem() + { + return this.item; + } + + public void setItem(List<Item> value) + { + this.item = value; + } + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/KdCreateWaybillOrderNotifyReq.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/KdCreateWaybillOrderNotifyReq.java new file mode 100644 index 0000000..2e96dcc --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/KdCreateWaybillOrderNotifyReq.java @@ -0,0 +1,333 @@ +package com.best.javaSdk.kdCreateWaybillOrderNotify.request; + +import com.best.javaSdk.kdCreateWaybillOrderNotify.request.Sender; +import com.best.javaSdk.kdCreateWaybillOrderNotify.request.Receiver; +import com.best.javaSdk.kdCreateWaybillOrderNotify.request.Items; +import com.best.javaSdk.BaseRequest; +import com.best.javaSdk.BaseResponse; +import com.best.javaSdk.Parser; + + +public class KdCreateWaybillOrderNotifyReq implements BaseRequest { + private long piece; + private double length; + private double width; + private double height; + private String customerName; + private String txLogisticId; + private String mailNo; + private String tradeNo; + private String serviceType; + private long sendStartTime; + private long sendEndTime; + private String recSite; + private double goodsValue; + private double itemsValue; + private double insuranceValue; + private String special; + private String bankCardOwner; + private String bankCode; + private String bankCardNo; + private String remark; + private Sender sender; + private Receiver receiver; + private Items items; + private double itemsWeight; + private String certificateType; + private String certificateNo; + private String deliverySite; + private String deliveryType; + + public long getPiece() + { + return this.piece; + } + + public void setPiece(long value) + { + this.piece = value; + } + + public double getLength() + { + return this.length; + } + + public void setLength(double value) + { + this.length = value; + } + + public double getWidth() + { + return this.width; + } + + public void setWidth(double value) + { + this.width = value; + } + + public double getHeight() + { + return this.height; + } + + public void setHeight(double value) + { + this.height = value; + } + + public String getCustomerName() + { + return this.customerName; + } + + public void setCustomerName(String value) + { + this.customerName = value; + } + + public String getTxLogisticId() + { + return this.txLogisticId; + } + + public void setTxLogisticId(String value) + { + this.txLogisticId = value; + } + + public String getMailNo() + { + return this.mailNo; + } + + public void setMailNo(String value) + { + this.mailNo = value; + } + + public String getTradeNo() + { + return this.tradeNo; + } + + public void setTradeNo(String value) + { + this.tradeNo = value; + } + + public String getServiceType() + { + return this.serviceType; + } + + public void setServiceType(String value) + { + this.serviceType = value; + } + + public long getSendStartTime() + { + return this.sendStartTime; + } + + public void setSendStartTime(long value) + { + this.sendStartTime = value; + } + + public long getSendEndTime() + { + return this.sendEndTime; + } + + public void setSendEndTime(long value) + { + this.sendEndTime = value; + } + + public String getRecSite() + { + return this.recSite; + } + + public void setRecSite(String value) + { + this.recSite = value; + } + + public double getGoodsValue() + { + return this.goodsValue; + } + + public void setGoodsValue(double value) + { + this.goodsValue = value; + } + + public double getItemsValue() + { + return this.itemsValue; + } + + public void setItemsValue(double value) + { + this.itemsValue = value; + } + + public double getInsuranceValue() + { + return this.insuranceValue; + } + + public void setInsuranceValue(double value) + { + this.insuranceValue = value; + } + + public String getSpecial() + { + return this.special; + } + + public void setSpecial(String value) + { + this.special = value; + } + + public String getBankCardOwner() + { + return this.bankCardOwner; + } + + public void setBankCardOwner(String value) + { + this.bankCardOwner = value; + } + + public String getBankCode() + { + return this.bankCode; + } + + public void setBankCode(String value) + { + this.bankCode = value; + } + + public String getBankCardNo() + { + return this.bankCardNo; + } + + public void setBankCardNo(String value) + { + this.bankCardNo = value; + } + + public String getRemark() + { + return this.remark; + } + + public void setRemark(String value) + { + this.remark = value; + } + + public Sender getSender() + { + return this.sender; + } + + public void setSender(Sender value) + { + this.sender = value; + } + + public Receiver getReceiver() + { + return this.receiver; + } + + public void setReceiver(Receiver value) + { + this.receiver = value; + } + + public Items getItems() + { + return this.items; + } + + public void setItems(Items value) + { + this.items = value; + } + + public double getItemsWeight() + { + return this.itemsWeight; + } + + public void setItemsWeight(double value) + { + this.itemsWeight = value; + } + + public String getCertificateType() + { + return this.certificateType; + } + + public void setCertificateType(String value) + { + this.certificateType = value; + } + + public String getCertificateNo() + { + return this.certificateNo; + } + + public void setCertificateNo(String value) + { + this.certificateNo = value; + } + + public String getDeliverySite() + { + return this.deliverySite; + } + + public void setDeliverySite(String value) + { + this.deliverySite = value; + } + + public String getDeliveryType() + { + return this.deliveryType; + } + + public void setDeliveryType(String value) + { + this.deliveryType = value; + } + + public String obtainServiceType() { + return "KD_CREATE_WAYBILL_ORDER_NOTIFY"; + } + + public BaseResponse makeResponse(String rsp, String format) { + if ("xml".equalsIgnoreCase(format)) { + return Parser.coverXml2Object(rsp, com.best.javaSdk.kdCreateWaybillOrderNotify.response.KdCreateWaybillOrderNotifyRsp.class); + } + return Parser.convertJson2Object(rsp, com.best.javaSdk.kdCreateWaybillOrderNotify.response.KdCreateWaybillOrderNotifyRsp.class); + + } + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Receiver.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Receiver.java new file mode 100644 index 0000000..ec56ce3 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Receiver.java @@ -0,0 +1,107 @@ +package com.best.javaSdk.kdCreateWaybillOrderNotify.request; + + + +public class Receiver { + private String name; + private String postCode; + private String mobile; + private String prov; + private String city; + private String county; + private String address; + private String email; + private String country; + + public String getName() + { + return this.name; + } + + public void setName(String value) + { + this.name = value; + } + + public String getPostCode() + { + return this.postCode; + } + + public void setPostCode(String value) + { + this.postCode = value; + } + + public String getMobile() + { + return this.mobile; + } + + public void setMobile(String value) + { + this.mobile = value; + } + + public String getProv() + { + return this.prov; + } + + public void setProv(String value) + { + this.prov = value; + } + + public String getCity() + { + return this.city; + } + + public void setCity(String value) + { + this.city = value; + } + + public String getCounty() + { + return this.county; + } + + public void setCounty(String value) + { + this.county = value; + } + + public String getAddress() + { + return this.address; + } + + public void setAddress(String value) + { + this.address = value; + } + + public String getEmail() + { + return this.email; + } + + public void setEmail(String value) + { + this.email = value; + } + + public String getCountry() + { + return this.country; + } + + public void setCountry(String value) + { + this.country = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Sender.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Sender.java new file mode 100644 index 0000000..80c8164 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/request/Sender.java @@ -0,0 +1,107 @@ +package com.best.javaSdk.kdCreateWaybillOrderNotify.request; + + + +public class Sender { + private String name; + private String postCode; + private String mobile; + private String prov; + private String city; + private String county; + private String address; + private String email; + private String country; + + public String getName() + { + return this.name; + } + + public void setName(String value) + { + this.name = value; + } + + public String getPostCode() + { + return this.postCode; + } + + public void setPostCode(String value) + { + this.postCode = value; + } + + public String getMobile() + { + return this.mobile; + } + + public void setMobile(String value) + { + this.mobile = value; + } + + public String getProv() + { + return this.prov; + } + + public void setProv(String value) + { + this.prov = value; + } + + public String getCity() + { + return this.city; + } + + public void setCity(String value) + { + this.city = value; + } + + public String getCounty() + { + return this.county; + } + + public void setCounty(String value) + { + this.county = value; + } + + public String getAddress() + { + return this.address; + } + + public void setAddress(String value) + { + this.address = value; + } + + public String getEmail() + { + return this.email; + } + + public void setEmail(String value) + { + this.email = value; + } + + public String getCountry() + { + return this.country; + } + + public void setCountry(String value) + { + this.country = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/response/ChildMailNo.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/response/ChildMailNo.java new file mode 100644 index 0000000..1821ad9 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/response/ChildMailNo.java @@ -0,0 +1,19 @@ +package com.best.javaSdk.kdCreateWaybillOrderNotify.response; + +import java.util.List; + + +public class ChildMailNo { + private List<String> mailNo; + + public List<String> getMailNo() + { + return this.mailNo; + } + + public void setMailNo(List<String> value) + { + this.mailNo = value; + } + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/response/KdCreateWaybillOrderNotifyRsp.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/response/KdCreateWaybillOrderNotifyRsp.java new file mode 100644 index 0000000..528cfdd --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderNotify/response/KdCreateWaybillOrderNotifyRsp.java @@ -0,0 +1,98 @@ +package com.best.javaSdk.kdCreateWaybillOrderNotify.response; + +import com.best.javaSdk.kdCreateWaybillOrderNotify.response.ChildMailNo; +import com.best.javaSdk.BaseResponse; + + +public class KdCreateWaybillOrderNotifyRsp implements BaseResponse { + private ChildMailNo childMailNo; + private boolean result; + private String txLogisticId; + private String mailNo; + private String triSortCode; + private String packRule; + private String errorCode; + private String errorDescription; + + public ChildMailNo getChildMailNo() + { + return this.childMailNo; + } + + public void setChildMailNo(ChildMailNo value) + { + this.childMailNo = value; + } + + public boolean getResult() + { + return this.result; + } + + public void setResult(boolean value) + { + this.result = value; + } + + public String getTxLogisticId() + { + return this.txLogisticId; + } + + public void setTxLogisticId(String value) + { + this.txLogisticId = value; + } + + public String getMailNo() + { + return this.mailNo; + } + + public void setMailNo(String value) + { + this.mailNo = value; + } + + public String getTriSortCode() + { + return this.triSortCode; + } + + public void setTriSortCode(String value) + { + this.triSortCode = value; + } + + public String getPackRule() + { + return this.packRule; + } + + public void setPackRule(String value) + { + this.packRule = value; + } + + public String getErrorCode() + { + return this.errorCode; + } + + public void setErrorCode(String value) + { + this.errorCode = value; + } + + public String getErrorDescription() + { + return this.errorDescription; + } + + public void setErrorDescription(String value) + { + this.errorDescription = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Item.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Item.java new file mode 100644 index 0000000..d492fab --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Item.java @@ -0,0 +1,74 @@ +package com.best.javaSdk.kdCreateWaybillOrderPdfNotify.request; + + + +public class Item { + private long itemCount; + private long itemWeight; + private long itemLength; + private long itemWidth; + private long itemHeight; + private String itemName; + + public long getItemCount() + { + return this.itemCount; + } + + public void setItemCount(long value) + { + this.itemCount = value; + } + + public long getItemWeight() + { + return this.itemWeight; + } + + public void setItemWeight(long value) + { + this.itemWeight = value; + } + + public long getItemLength() + { + return this.itemLength; + } + + public void setItemLength(long value) + { + this.itemLength = value; + } + + public long getItemWidth() + { + return this.itemWidth; + } + + public void setItemWidth(long value) + { + this.itemWidth = value; + } + + public long getItemHeight() + { + return this.itemHeight; + } + + public void setItemHeight(long value) + { + this.itemHeight = value; + } + + public String getItemName() + { + return this.itemName; + } + + public void setItemName(String value) + { + this.itemName = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Items.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Items.java new file mode 100644 index 0000000..84c358a --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Items.java @@ -0,0 +1,20 @@ +package com.best.javaSdk.kdCreateWaybillOrderPdfNotify.request; + +import com.best.javaSdk.kdCreateWaybillOrderPdfNotify.request.Item; +import java.util.List; + + +public class Items { + private List<Item> item; + + public List<Item> getItem() + { + return this.item; + } + + public void setItem(List<Item> value) + { + this.item = value; + } + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/KdCreateWaybillOrderPdfNotifyReq.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/KdCreateWaybillOrderPdfNotifyReq.java new file mode 100644 index 0000000..41af936 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/KdCreateWaybillOrderPdfNotifyReq.java @@ -0,0 +1,333 @@ +package com.best.javaSdk.kdCreateWaybillOrderPdfNotify.request; + +import com.best.javaSdk.kdCreateWaybillOrderPdfNotify.request.Sender; +import com.best.javaSdk.kdCreateWaybillOrderPdfNotify.request.Receiver; +import com.best.javaSdk.kdCreateWaybillOrderPdfNotify.request.Items; +import com.best.javaSdk.BaseRequest; +import com.best.javaSdk.BaseResponse; +import com.best.javaSdk.Parser; + + +public class KdCreateWaybillOrderPdfNotifyReq implements BaseRequest { + private String customerName; + private String txLogisticId; + private String mailNo; + private String tradeNo; + private String serviceType; + private long sendStartTime; + private long sendEndTime; + private String recSite; + private long piece; + private double goodsValue; + private double length; + private double itemsValue; + private double width; + private double insuranceValue; + private double height; + private String special; + private String bankCardOwner; + private String bankCode; + private String bankCardNo; + private String remark; + private Sender sender; + private Receiver receiver; + private Items items; + private double itemsWeight; + private String certificateType; + private String certificateNo; + private String deliveryType; + private String deliverySite; + + public String getCustomerName() + { + return this.customerName; + } + + public void setCustomerName(String value) + { + this.customerName = value; + } + + public String getTxLogisticId() + { + return this.txLogisticId; + } + + public void setTxLogisticId(String value) + { + this.txLogisticId = value; + } + + public String getMailNo() + { + return this.mailNo; + } + + public void setMailNo(String value) + { + this.mailNo = value; + } + + public String getTradeNo() + { + return this.tradeNo; + } + + public void setTradeNo(String value) + { + this.tradeNo = value; + } + + public String getServiceType() + { + return this.serviceType; + } + + public void setServiceType(String value) + { + this.serviceType = value; + } + + public long getSendStartTime() + { + return this.sendStartTime; + } + + public void setSendStartTime(long value) + { + this.sendStartTime = value; + } + + public long getSendEndTime() + { + return this.sendEndTime; + } + + public void setSendEndTime(long value) + { + this.sendEndTime = value; + } + + public String getRecSite() + { + return this.recSite; + } + + public void setRecSite(String value) + { + this.recSite = value; + } + + public long getPiece() + { + return this.piece; + } + + public void setPiece(long value) + { + this.piece = value; + } + + public double getGoodsValue() + { + return this.goodsValue; + } + + public void setGoodsValue(double value) + { + this.goodsValue = value; + } + + public double getLength() + { + return this.length; + } + + public void setLength(double value) + { + this.length = value; + } + + public double getItemsValue() + { + return this.itemsValue; + } + + public void setItemsValue(double value) + { + this.itemsValue = value; + } + + public double getWidth() + { + return this.width; + } + + public void setWidth(double value) + { + this.width = value; + } + + public double getInsuranceValue() + { + return this.insuranceValue; + } + + public void setInsuranceValue(double value) + { + this.insuranceValue = value; + } + + public double getHeight() + { + return this.height; + } + + public void setHeight(double value) + { + this.height = value; + } + + public String getSpecial() + { + return this.special; + } + + public void setSpecial(String value) + { + this.special = value; + } + + public String getBankCardOwner() + { + return this.bankCardOwner; + } + + public void setBankCardOwner(String value) + { + this.bankCardOwner = value; + } + + public String getBankCode() + { + return this.bankCode; + } + + public void setBankCode(String value) + { + this.bankCode = value; + } + + public String getBankCardNo() + { + return this.bankCardNo; + } + + public void setBankCardNo(String value) + { + this.bankCardNo = value; + } + + public String getRemark() + { + return this.remark; + } + + public void setRemark(String value) + { + this.remark = value; + } + + public Sender getSender() + { + return this.sender; + } + + public void setSender(Sender value) + { + this.sender = value; + } + + public Receiver getReceiver() + { + return this.receiver; + } + + public void setReceiver(Receiver value) + { + this.receiver = value; + } + + public Items getItems() + { + return this.items; + } + + public void setItems(Items value) + { + this.items = value; + } + + public double getItemsWeight() + { + return this.itemsWeight; + } + + public void setItemsWeight(double value) + { + this.itemsWeight = value; + } + + public String getCertificateType() + { + return this.certificateType; + } + + public void setCertificateType(String value) + { + this.certificateType = value; + } + + public String getCertificateNo() + { + return this.certificateNo; + } + + public void setCertificateNo(String value) + { + this.certificateNo = value; + } + + public String getDeliveryType() + { + return this.deliveryType; + } + + public void setDeliveryType(String value) + { + this.deliveryType = value; + } + + public String getDeliverySite() + { + return this.deliverySite; + } + + public void setDeliverySite(String value) + { + this.deliverySite = value; + } + + public String obtainServiceType() { + return "KD_CREATE_WAYBILL_ORDER_PDF_NOTIFY"; + } + + public BaseResponse makeResponse(String rsp, String format) { + if ("xml".equalsIgnoreCase(format)) { + return Parser.coverXml2Object(rsp, com.best.javaSdk.kdCreateWaybillOrderPdfNotify.response.KdCreateWaybillOrderPdfNotifyRsp.class); + } + return Parser.convertJson2Object(rsp, com.best.javaSdk.kdCreateWaybillOrderPdfNotify.response.KdCreateWaybillOrderPdfNotifyRsp.class); + + } + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Receiver.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Receiver.java new file mode 100644 index 0000000..4f1ce1c --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Receiver.java @@ -0,0 +1,107 @@ +package com.best.javaSdk.kdCreateWaybillOrderPdfNotify.request; + + + +public class Receiver { + private String name; + private String postCode; + private String mobile; + private String prov; + private String city; + private String county; + private String address; + private String email; + private String country; + + public String getName() + { + return this.name; + } + + public void setName(String value) + { + this.name = value; + } + + public String getPostCode() + { + return this.postCode; + } + + public void setPostCode(String value) + { + this.postCode = value; + } + + public String getMobile() + { + return this.mobile; + } + + public void setMobile(String value) + { + this.mobile = value; + } + + public String getProv() + { + return this.prov; + } + + public void setProv(String value) + { + this.prov = value; + } + + public String getCity() + { + return this.city; + } + + public void setCity(String value) + { + this.city = value; + } + + public String getCounty() + { + return this.county; + } + + public void setCounty(String value) + { + this.county = value; + } + + public String getAddress() + { + return this.address; + } + + public void setAddress(String value) + { + this.address = value; + } + + public String getEmail() + { + return this.email; + } + + public void setEmail(String value) + { + this.email = value; + } + + public String getCountry() + { + return this.country; + } + + public void setCountry(String value) + { + this.country = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Sender.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Sender.java new file mode 100644 index 0000000..6292c54 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/request/Sender.java @@ -0,0 +1,107 @@ +package com.best.javaSdk.kdCreateWaybillOrderPdfNotify.request; + + + +public class Sender { + private String name; + private String postCode; + private String mobile; + private String prov; + private String city; + private String county; + private String address; + private String email; + private String country; + + public String getName() + { + return this.name; + } + + public void setName(String value) + { + this.name = value; + } + + public String getPostCode() + { + return this.postCode; + } + + public void setPostCode(String value) + { + this.postCode = value; + } + + public String getMobile() + { + return this.mobile; + } + + public void setMobile(String value) + { + this.mobile = value; + } + + public String getProv() + { + return this.prov; + } + + public void setProv(String value) + { + this.prov = value; + } + + public String getCity() + { + return this.city; + } + + public void setCity(String value) + { + this.city = value; + } + + public String getCounty() + { + return this.county; + } + + public void setCounty(String value) + { + this.county = value; + } + + public String getAddress() + { + return this.address; + } + + public void setAddress(String value) + { + this.address = value; + } + + public String getEmail() + { + return this.email; + } + + public void setEmail(String value) + { + this.email = value; + } + + public String getCountry() + { + return this.country; + } + + public void setCountry(String value) + { + this.country = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/response/ChildMailNo.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/response/ChildMailNo.java new file mode 100644 index 0000000..b1c418b --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/response/ChildMailNo.java @@ -0,0 +1,19 @@ +package com.best.javaSdk.kdCreateWaybillOrderPdfNotify.response; + +import java.util.List; + + +public class ChildMailNo { + private List<String> mailNo; + + public List<String> getMailNo() + { + return this.mailNo; + } + + public void setMailNo(List<String> value) + { + this.mailNo = value; + } + +} diff --git a/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/response/KdCreateWaybillOrderPdfNotifyRsp.java b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/response/KdCreateWaybillOrderPdfNotifyRsp.java new file mode 100644 index 0000000..4b59ff3 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdCreateWaybillOrderPdfNotify/response/KdCreateWaybillOrderPdfNotifyRsp.java @@ -0,0 +1,120 @@ +package com.best.javaSdk.kdCreateWaybillOrderPdfNotify.response; + +import com.best.javaSdk.kdCreateWaybillOrderPdfNotify.response.ChildMailNo; +import java.util.List; +import com.best.javaSdk.BaseResponse; + + +public class KdCreateWaybillOrderPdfNotifyRsp implements BaseResponse { + private ChildMailNo childMailNo; + private boolean result; + private String txLogisticId; + private String mailNo; + private String errorCode; + private String errorDescription; + private String pdfStream; + private String triSortCode; + private List<String> pdfStreamList; + private String packRule; + + public ChildMailNo getChildMailNo() + { + return this.childMailNo; + } + + public void setChildMailNo(ChildMailNo value) + { + this.childMailNo = value; + } + + public boolean getResult() + { + return this.result; + } + + public void setResult(boolean value) + { + this.result = value; + } + + public String getTxLogisticId() + { + return this.txLogisticId; + } + + public void setTxLogisticId(String value) + { + this.txLogisticId = value; + } + + public String getMailNo() + { + return this.mailNo; + } + + public void setMailNo(String value) + { + this.mailNo = value; + } + + public String getErrorCode() + { + return this.errorCode; + } + + public void setErrorCode(String value) + { + this.errorCode = value; + } + + public String getErrorDescription() + { + return this.errorDescription; + } + + public void setErrorDescription(String value) + { + this.errorDescription = value; + } + + public String getPdfStream() + { + return this.pdfStream; + } + + public void setPdfStream(String value) + { + this.pdfStream = value; + } + + public String getTriSortCode() + { + return this.triSortCode; + } + + public void setTriSortCode(String value) + { + this.triSortCode = value; + } + + public List<String> getPdfStreamList() + { + return this.pdfStreamList; + } + + public void setPdfStreamList(List<String> value) + { + this.pdfStreamList = value; + } + public String getPackRule() + { + return this.packRule; + } + + public void setPackRule(String value) + { + this.packRule = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdTraceQuery/request/KdTraceQueryReq.java b/src/main/java/com/best/javaSdk/kdTraceQuery/request/KdTraceQueryReq.java new file mode 100644 index 0000000..37f3cba --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdTraceQuery/request/KdTraceQueryReq.java @@ -0,0 +1,44 @@ +package com.best.javaSdk.kdTraceQuery.request; + +import com.best.javaSdk.BaseRequest; +import com.best.javaSdk.BaseResponse; +import com.best.javaSdk.Parser; + + +public class KdTraceQueryReq implements BaseRequest { + private MailNos mailNos; + private String langType; + + public MailNos getMailNos() + { + return this.mailNos; + } + + public void setMailNos(MailNos value) + { + this.mailNos = value; + } + + public String getLangType() + { + return this.langType; + } + + public void setLangType(String value) + { + this.langType = value; + } + + public String obtainServiceType() { + return "KD_TRACE_QUERY"; + } + + public BaseResponse makeResponse(String rsp, String format) { + if ("xml".equalsIgnoreCase(format)) { + return Parser.coverXml2Object(rsp, com.best.javaSdk.kdTraceQuery.response.KdTraceQueryRsp.class); + } + return Parser.convertJson2Object(rsp, com.best.javaSdk.kdTraceQuery.response.KdTraceQueryRsp.class); + + } + +} diff --git a/src/main/java/com/best/javaSdk/kdTraceQuery/request/MailNos.java b/src/main/java/com/best/javaSdk/kdTraceQuery/request/MailNos.java new file mode 100644 index 0000000..cfd9c31 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdTraceQuery/request/MailNos.java @@ -0,0 +1,12 @@ +package com.best.javaSdk.kdTraceQuery.request; + +import lombok.Data; + +import java.util.List; + + +@Data +public class MailNos { + private List<String> mailNo; + +} diff --git a/src/main/java/com/best/javaSdk/kdTraceQuery/response/KdTraceQueryRsp.java b/src/main/java/com/best/javaSdk/kdTraceQuery/response/KdTraceQueryRsp.java new file mode 100644 index 0000000..79038e9 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdTraceQuery/response/KdTraceQueryRsp.java @@ -0,0 +1,19 @@ +package com.best.javaSdk.kdTraceQuery.response; + +import com.best.javaSdk.BaseResponse; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +@Data +public class KdTraceQueryRsp implements BaseResponse { + + @ApiModelProperty(value = "请求结果", example = "60850007041815") + private boolean result; + + @ApiModelProperty(value = "快递物流详情", example = "60850007041815") + private List<TraceLogs> traceLogs; + +} diff --git a/src/main/java/com/best/javaSdk/kdTraceQuery/response/Trace.java b/src/main/java/com/best/javaSdk/kdTraceQuery/response/Trace.java new file mode 100644 index 0000000..e6d8967 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdTraceQuery/response/Trace.java @@ -0,0 +1,118 @@ +package com.best.javaSdk.kdTraceQuery.response; + + + +public class Trace { + private String receiverType; + private String receiverName; + private String receiverSignature; + private String receiverImage; + private String packageStatusCode; + private String statusCodeDesc; + private String operateTime; + private String currentCity; + private String nextCity; + private String remark; + + public String getReceiverType() + { + return this.receiverType; + } + + public void setReceiverType(String value) + { + this.receiverType = value; + } + + public String getReceiverName() + { + return this.receiverName; + } + + public void setReceiverName(String value) + { + this.receiverName = value; + } + + public String getReceiverSignature() + { + return this.receiverSignature; + } + + public void setReceiverSignature(String value) + { + this.receiverSignature = value; + } + + public String getReceiverImage() + { + return this.receiverImage; + } + + public void setReceiverImage(String value) + { + this.receiverImage = value; + } + + public String getPackageStatusCode() + { + return this.packageStatusCode; + } + + public void setPackageStatusCode(String value) + { + this.packageStatusCode = value; + } + + public String getStatusCodeDesc() + { + return this.statusCodeDesc; + } + + public void setStatusCodeDesc(String value) + { + this.statusCodeDesc = value; + } + + public String getOperateTime() + { + return this.operateTime; + } + + public void setOperateTime(String value) + { + this.operateTime = value; + } + + public String getCurrentCity() + { + return this.currentCity; + } + + public void setCurrentCity(String value) + { + this.currentCity = value; + } + + public String getNextCity() + { + return this.nextCity; + } + + public void setNextCity(String value) + { + this.nextCity = value; + } + + public String getRemark() + { + return this.remark; + } + + public void setRemark(String value) + { + this.remark = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdTraceQuery/response/TraceLogs.java b/src/main/java/com/best/javaSdk/kdTraceQuery/response/TraceLogs.java new file mode 100644 index 0000000..a0285d1 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdTraceQuery/response/TraceLogs.java @@ -0,0 +1,51 @@ +package com.best.javaSdk.kdTraceQuery.response; + + +public class TraceLogs { + private String mailNo; + private String txLogisticId; + private double weight; + private Traces traces; + + public String getMailNo() + { + return this.mailNo; + } + + public void setMailNo(String value) + { + this.mailNo = value; + } + + public String getTxLogisticId() + { + return this.txLogisticId; + } + + public void setTxLogisticId(String value) + { + this.txLogisticId = value; + } + + public double getWeight() + { + return this.weight; + } + + public void setWeight(double value) + { + this.weight = value; + } + + public Traces getTraces() + { + return this.traces; + } + + public void setTraces(Traces value) + { + this.traces = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdTraceQuery/response/Traces.java b/src/main/java/com/best/javaSdk/kdTraceQuery/response/Traces.java new file mode 100644 index 0000000..f37465c --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdTraceQuery/response/Traces.java @@ -0,0 +1,19 @@ +package com.best.javaSdk.kdTraceQuery.response; + +import java.util.List; + + +public class Traces { + private List<Trace> trace; + + public List<Trace> getTrace() + { + return this.trace; + } + + public void setTrace(List<Trace> value) + { + this.trace = value; + } + +} diff --git a/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/request/KdUpdateOrderNotifyReq.java b/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/request/KdUpdateOrderNotifyReq.java new file mode 100644 index 0000000..c4d9027 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/request/KdUpdateOrderNotifyReq.java @@ -0,0 +1,56 @@ +package com.best.javaSdk.kdUpdateOrderNotify.request; + +import com.best.javaSdk.kdUpdateOrderNotify.request.Params; +import com.best.javaSdk.BaseRequest; +import com.best.javaSdk.BaseResponse; +import com.best.javaSdk.Parser; + + +public class KdUpdateOrderNotifyReq implements BaseRequest { + private String txLogisticId; + private Params params; + private boolean pdfStream; + + public String getTxLogisticId() + { + return this.txLogisticId; + } + + public void setTxLogisticId(String value) + { + this.txLogisticId = value; + } + + public Params getParams() + { + return this.params; + } + + public void setParams(Params value) + { + this.params = value; + } + + public boolean getPdfStream() + { + return this.pdfStream; + } + + public void setPdfStream(boolean value) + { + this.pdfStream = value; + } + + public String obtainServiceType() { + return "KD_UPDATE_ORDER_NOTIFY"; + } + + public BaseResponse makeResponse(String rsp, String format) { + if ("xml".equalsIgnoreCase(format)) { + return Parser.coverXml2Object(rsp, com.best.javaSdk.kdUpdateOrderNotify.response.KdUpdateOrderNotifyRsp.class); + } + return Parser.convertJson2Object(rsp, com.best.javaSdk.kdUpdateOrderNotify.response.KdUpdateOrderNotifyRsp.class); + + } + +} diff --git a/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/request/Params.java b/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/request/Params.java new file mode 100644 index 0000000..b9d77d4 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/request/Params.java @@ -0,0 +1,360 @@ +package com.best.javaSdk.kdUpdateOrderNotify.request; + + + +public class Params { + private String mailNo; + private String deliveryType; + private String deliverySite; + private long sendStartTime; + private long sendEndTime; + private String recSite; + private double itemsValue; + private double insuranceValue; + private String senderName; + private String senderPostCode; + private String senderMobile; + private String senderProv; + private String senderCity; + private String senderCounty; + private String senderAddress; + private String senderEmail; + private String senderCountry; + private String receiverName; + private String receiverPostCode; + private String receiverMobile; + private String receiverProv; + private String receiverCity; + private String receiverCounty; + private String receiverAddress; + private String receiverEmail; + private String receiverCountry; + private long piece; + private double itemsWeight; + private double length; + private double width; + private double height; + private String remark; + + public String getMailNo() + { + return this.mailNo; + } + + public void setMailNo(String value) + { + this.mailNo = value; + } + + public String getDeliveryType() + { + return this.deliveryType; + } + + public void setDeliveryType(String value) + { + this.deliveryType = value; + } + + public String getDeliverySite() + { + return this.deliverySite; + } + + public void setDeliverySite(String value) + { + this.deliverySite = value; + } + + public long getSendStartTime() + { + return this.sendStartTime; + } + + public void setSendStartTime(long value) + { + this.sendStartTime = value; + } + + public long getSendEndTime() + { + return this.sendEndTime; + } + + public void setSendEndTime(long value) + { + this.sendEndTime = value; + } + + public String getRecSite() + { + return this.recSite; + } + + public void setRecSite(String value) + { + this.recSite = value; + } + + public double getItemsValue() + { + return this.itemsValue; + } + + public void setItemsValue(double value) + { + this.itemsValue = value; + } + + public double getInsuranceValue() + { + return this.insuranceValue; + } + + public void setInsuranceValue(double value) + { + this.insuranceValue = value; + } + + public String getSenderName() + { + return this.senderName; + } + + public void setSenderName(String value) + { + this.senderName = value; + } + + public String getSenderPostCode() + { + return this.senderPostCode; + } + + public void setSenderPostCode(String value) + { + this.senderPostCode = value; + } + + public String getSenderMobile() + { + return this.senderMobile; + } + + public void setSenderMobile(String value) + { + this.senderMobile = value; + } + + public String getSenderProv() + { + return this.senderProv; + } + + public void setSenderProv(String value) + { + this.senderProv = value; + } + + public String getSenderCity() + { + return this.senderCity; + } + + public void setSenderCity(String value) + { + this.senderCity = value; + } + + public String getSenderCounty() + { + return this.senderCounty; + } + + public void setSenderCounty(String value) + { + this.senderCounty = value; + } + + public String getSenderAddress() + { + return this.senderAddress; + } + + public void setSenderAddress(String value) + { + this.senderAddress = value; + } + + public String getSenderEmail() + { + return this.senderEmail; + } + + public void setSenderEmail(String value) + { + this.senderEmail = value; + } + + public String getSenderCountry() + { + return this.senderCountry; + } + + public void setSenderCountry(String value) + { + this.senderCountry = value; + } + + public String getReceiverName() + { + return this.receiverName; + } + + public void setReceiverName(String value) + { + this.receiverName = value; + } + + public String getReceiverPostCode() + { + return this.receiverPostCode; + } + + public void setReceiverPostCode(String value) + { + this.receiverPostCode = value; + } + + public String getReceiverMobile() + { + return this.receiverMobile; + } + + public void setReceiverMobile(String value) + { + this.receiverMobile = value; + } + + public String getReceiverProv() + { + return this.receiverProv; + } + + public void setReceiverProv(String value) + { + this.receiverProv = value; + } + + public String getReceiverCity() + { + return this.receiverCity; + } + + public void setReceiverCity(String value) + { + this.receiverCity = value; + } + + public String getReceiverCounty() + { + return this.receiverCounty; + } + + public void setReceiverCounty(String value) + { + this.receiverCounty = value; + } + + public String getReceiverAddress() + { + return this.receiverAddress; + } + + public void setReceiverAddress(String value) + { + this.receiverAddress = value; + } + + public String getReceiverEmail() + { + return this.receiverEmail; + } + + public void setReceiverEmail(String value) + { + this.receiverEmail = value; + } + + public String getReceiverCountry() + { + return this.receiverCountry; + } + + public void setReceiverCountry(String value) + { + this.receiverCountry = value; + } + + public long getPiece() + { + return this.piece; + } + + public void setPiece(long value) + { + this.piece = value; + } + + public double getItemsWeight() + { + return this.itemsWeight; + } + + public void setItemsWeight(double value) + { + this.itemsWeight = value; + } + + public double getLength() + { + return this.length; + } + + public void setLength(double value) + { + this.length = value; + } + + public double getWidth() + { + return this.width; + } + + public void setWidth(double value) + { + this.width = value; + } + + public double getHeight() + { + return this.height; + } + + public void setHeight(double value) + { + this.height = value; + } + + public String getRemark() + { + return this.remark; + } + + public void setRemark(String value) + { + this.remark = value; + } + + +} diff --git a/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/response/ChildMailNo.java b/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/response/ChildMailNo.java new file mode 100644 index 0000000..4252553 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/response/ChildMailNo.java @@ -0,0 +1,19 @@ +package com.best.javaSdk.kdUpdateOrderNotify.response; + +import java.util.List; + + +public class ChildMailNo { + private List<String> mailNo; + + public List<String> getMailNo() + { + return this.mailNo; + } + + public void setMailNo(List<String> value) + { + this.mailNo = value; + } + +} diff --git a/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/response/KdUpdateOrderNotifyRsp.java b/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/response/KdUpdateOrderNotifyRsp.java new file mode 100644 index 0000000..bc2d2a0 --- /dev/null +++ b/src/main/java/com/best/javaSdk/kdUpdateOrderNotify/response/KdUpdateOrderNotifyRsp.java @@ -0,0 +1,109 @@ +package com.best.javaSdk.kdUpdateOrderNotify.response; + +import com.best.javaSdk.kdUpdateOrderNotify.response.ChildMailNo; +import java.util.List; +import com.best.javaSdk.BaseResponse; + + +public class KdUpdateOrderNotifyRsp implements BaseResponse { + private boolean result; + private String triSortCode; + private String txLogisticId; + private String mailNo; + private ChildMailNo childMailNo; + private String packRule; + private String errorCode; + private String errorDescription; + private List<String> pdfStreamList; + + public boolean getResult() + { + return this.result; + } + + public void setResult(boolean value) + { + this.result = value; + } + + public String getTriSortCode() + { + return this.triSortCode; + } + + public void setTriSortCode(String value) + { + this.triSortCode = value; + } + + public String getTxLogisticId() + { + return this.txLogisticId; + } + + public void setTxLogisticId(String value) + { + this.txLogisticId = value; + } + + public String getMailNo() + { + return this.mailNo; + } + + public void setMailNo(String value) + { + this.mailNo = value; + } + + public ChildMailNo getChildMailNo() + { + return this.childMailNo; + } + + public void setChildMailNo(ChildMailNo value) + { + this.childMailNo = value; + } + + public String getPackRule() + { + return this.packRule; + } + + public void setPackRule(String value) + { + this.packRule = value; + } + + public String getErrorCode() + { + return this.errorCode; + } + + public void setErrorCode(String value) + { + this.errorCode = value; + } + + public String getErrorDescription() + { + return this.errorDescription; + } + + public void setErrorDescription(String value) + { + this.errorDescription = value; + } + + public List<String> getPdfStreamList() + { + return this.pdfStreamList; + } + + public void setPdfStreamList(List<String> value) + { + this.pdfStreamList = value; + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index f1ab545..27b958e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -5,7 +5,7 @@ spring: profiles: - active: test + active: dev servlet: multipart: -- Gitblit v1.9.1