Browse Source

修复物流状态查询

zyj
sj 2 years ago
parent
commit
200346ee71
  1. 6
      pom.xml
  2. 6
      yudao-server/pom.xml
  3. 9
      yudao-server/src/main/resources/application-local.yaml
  4. 7
      yudao-server/src/main/resources/application.yaml
  5. 6
      zsw-bxg/pom.xml
  6. 38
      zsw-bxg/src/main/java/co/yixiang/app/modules/order/rest/AppStoreOrderController.java
  7. 22
      zsw-bxg/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java
  8. 6
      zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java
  9. 213
      zsw-bxg/src/main/java/co/yixiang/tools/express/ExpressService.java
  10. 54
      zsw-bxg/src/main/java/co/yixiang/tools/express/config/ExpressAutoConfiguration.java
  11. 1
      zsw-bxg/src/main/java/co/yixiang/tools/express/config/ExpressProperties.java
  12. 19
      zsw-bxg/src/main/java/co/yixiang/tools/express/config/Kuaidi100Properties.java
  13. 8
      zsw-bxg/src/main/java/co/yixiang/tools/express/dao/ExpressInfo.java
  14. 10
      zsw-bxg/src/main/java/co/yixiang/tools/service/impl/QiNiuServiceImpl.java
  15. 54
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/AutoNum.java
  16. 63
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/BOrder.java
  17. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/BOrderOfficial.java
  18. 52
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/CloudPrintAttachment.java
  19. 54
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/CloudPrintCustom.java
  20. 52
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/CloudPrintOld.java
  21. 39
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/PrintCloud.java
  22. 39
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/PrintHtml.java
  23. 61
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/PrintImg.java
  24. 33
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/QueryTrack.java
  25. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/QueryTrackMap.java
  26. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/SameCityOrder.java
  27. 59
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/SendSms.java
  28. 79
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/Subscribe.java
  29. 79
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/SubscribeWithMap.java
  30. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/ThirdAuth.java
  31. 31
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/cloud/CloudBase.java
  32. 144
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/contant/ApiInfoConstant.java
  33. 40
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/contant/CloudApiCodeConstant.java
  34. 23
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/contant/CompanyConstant.java
  35. 42
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/core/BaseClient.java
  36. 18
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/core/IBaseClient.java
  37. 20
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/pojo/HttpResult.java
  38. 15
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/AutoNumReq.java
  39. 23
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BOrderCancelReq.java
  40. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BOrderGetCodeReq.java
  41. 21
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BOrderOfficialQueryPriceReq.java
  42. 13
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BOrderQueryReq.java
  43. 64
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BOrderReq.java
  44. 13
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BaseRequest.java
  45. 14
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/CloudAttachmentReq.java
  46. 47
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/CloudPrintAttachmentParam.java
  47. 39
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/CloudPrintCustomParam.java
  48. 8
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/CloudPrintCustomReq.java
  49. 13
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/CloudPrintOldParam.java
  50. 27
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/ManInfo.java
  51. 181
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintCloudParam.java
  52. 32
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintCloudReq.java
  53. 145
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintHtmlParam.java
  54. 32
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintHtmlReq.java
  55. 179
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintImgParam.java
  56. 31
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintImgReq.java
  57. 36
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintReq.java
  58. 43
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/QueryTrackParam.java
  59. 23
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/QueryTrackReq.java
  60. 44
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/SendSmsReq.java
  61. 36
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/SubscribeParam.java
  62. 57
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/SubscribeParameters.java
  63. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/SubscribeReq.java
  64. 25
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/ThirdAuthReq.java
  65. 23
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/cloud/COrderCancelReq.java
  66. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/cloud/COrderQueryReq.java
  67. 75
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/cloud/COrderReq.java
  68. 31
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/cloud/CloudBaseReq.java
  69. 23
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/samecity/AuthReq.java
  70. 24
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/samecity/CancelReq.java
  71. 27
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/samecity/OrderGoods.java
  72. 115
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/samecity/OrderReq.java
  73. 20
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/samecity/QueryReq.java
  74. 27
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/AutoNumResp.java
  75. 27
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/BOrderQueryData.java
  76. 22
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/BOrderQueryDataInfo.java
  77. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/BOrderResp.java
  78. 8
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/BaseResponse.java
  79. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/PrintBaseResp.java
  80. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/PrintCloudData.java
  81. 33
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/PrintHtmlData.java
  82. 23
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/PrintHtmlResp.java
  83. 21
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/PrintImgData.java
  84. 35
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/QueryTrackData.java
  85. 30
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/QueryTrackMapResp.java
  86. 20
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/QueryTrackPosition.java
  87. 55
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/QueryTrackResp.java
  88. 23
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/QueryTrackRouteInfo.java
  89. 19
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SendSmsResp.java
  90. 27
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SmsCallbackData.java
  91. 34
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SmsCallbackResp.java
  92. 35
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribePushData.java
  93. 50
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribePushParamResp.java
  94. 45
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribePushResult.java
  95. 17
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribeResp.java
  96. 46
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribeWithMapPushParamResp.java
  97. 65
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribeWithMapPushResult.java
  98. 21
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/ThirdAuthResp.java
  99. 20
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/cloud/COrderRespData.java
  100. 20
      zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/cloud/CloudBaseResp.java
  101. Some files were not shown because too many files have changed in this diff Show More

6
pom.xml

@ -51,6 +51,12 @@
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.7.4</version>
<optional>true</optional>
</dependency>
</dependencies>
</dependencyManagement>

6
yudao-server/pom.xml

@ -33,7 +33,11 @@
<artifactId>zsw-erp</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>zsw-farm-impl</artifactId>

9
yudao-server/src/main/resources/application-local.yaml

@ -243,8 +243,15 @@ dubbo:
bxg:
shop:
API_URL: https://2598-27-19-79-216.jp.ngrok.io
# API_URL: http://192.168.10.113:48080/bxgApp
API_URL: https://2b36-27-19-79-216.ap.ngrok.io
SITE_URL: http://192.168.10.113:48080/bxgApp
UNI_SITE_URL: http://192.168.10.113:48080/bxgApp
ADMIN_API_URL: http://192.168.10.113:48080/bxg
# 快递100 参数
kuaidi100:
enable: true
key: mmbOboEj7168
customer: A6D46C8A03A4127C78DF0E377D721702
secret: 13fcbe029263431293f5658cbf3259d3
userid: 79978ee033e640dca101450508620182

7
yudao-server/src/main/resources/application.yaml

@ -161,3 +161,10 @@ wxma:
spring:
jackson:
time-zone: GMT+8
# 快递100 参数
kuaidi100:
enable: true
key: mmbOboEj7168
customer: A6D46C8A03A4127C78DF0E377D721702
secret: 13fcbe029263431293f5658cbf3259d3
userid: 79978ee033e640dca101450508620182

6
zsw-bxg/pom.xml

@ -27,7 +27,11 @@
<artifactId>yudao-module-system-impl</artifactId>
<version>1.6.2-snapshot</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-biz-weixin</artifactId>

38
zsw-bxg/src/main/java/co/yixiang/app/modules/order/rest/AppStoreOrderController.java

@ -32,14 +32,12 @@ import co.yixiang.modules.order.param.*;
import co.yixiang.modules.order.service.YxStoreOrderCartInfoService;
import co.yixiang.modules.order.service.YxStoreOrderService;
import co.yixiang.modules.order.service.YxStoreOrderStatusService;
import co.yixiang.modules.order.service.dto.YxStoreOrderDto;
import co.yixiang.modules.order.vo.ComputeVo;
import co.yixiang.modules.order.vo.ConfirmOrderVo;
import co.yixiang.modules.order.vo.OrderCartInfoVo;
import co.yixiang.modules.order.vo.YxStoreOrderQueryVo;
import co.yixiang.modules.user.domain.YxUser;
import co.yixiang.tools.express.ExpressService;
import co.yixiang.tools.express.config.ExpressAutoConfiguration;
import co.yixiang.tools.express.dao.ExpressInfo;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vdurmont.emoji.EmojiParser;
@ -74,7 +72,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@Api(value = "订单模块", tags = "商城:订单模块")
public class AppStoreOrderController {
private final ExpressService expressService;
private final YxStoreOrderService storeOrderService;
private final OrderSupplyService orderSupplyService;
private final CreatShareProductService creatShareProductService;
@ -432,23 +430,25 @@ public class AppStoreOrderController {
@ApiOperation(value = "获取物流信息", notes = "获取物流信息")
public ApiResult<ExpressInfo> express(@RequestBody ExpressParam expressInfoDo) {
//顺丰轨迹查询处理
String lastFourNumber = "";
if (expressInfoDo.getShipperCode().equals(ShipperCodeEnum.SF.getValue())) {
YxStoreOrderDto yxStoreOrderDto;
yxStoreOrderDto = storeOrderService.getOrderDetail(Long.valueOf(expressInfoDo.getOrderCode()));
lastFourNumber = yxStoreOrderDto.getUserPhone();
if (lastFourNumber.length() == 11) {
lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);
}
}
ExpressService expressService = ExpressAutoConfiguration.expressService();
// //顺丰轨迹查询处理
// String lastFourNumber = "";
// if (expressInfoDo.getShipperCode().equals(ShipperCodeEnum.SF.getValue())) {
// YxStoreOrderDto yxStoreOrderDto;
// yxStoreOrderDto = storeOrderService.getOrderDetail(Long.valueOf(expressInfoDo.getOrderCode()));
// lastFourNumber = yxStoreOrderDto.getUserPhone();
// if (lastFourNumber.length() == 11) {
// lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);
// }
// }
//
// ExpressService expressService = ExpressAutoConfiguration.expressService();
// ExpressInfo expressInfo = expressService.getExpressInfo(expressInfoDo.getOrderCode(),
// expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode(), lastFourNumber);
// if (!expressInfo.isSuccess()) {
// throw new YshopException(expressInfo.getReason());
// }
ExpressInfo expressInfo = expressService.getExpressInfo(expressInfoDo.getOrderCode(),
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode(), lastFourNumber);
if (!expressInfo.isSuccess()) {
throw new YshopException(expressInfo.getReason());
}
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode());
return ApiResult.ok(expressInfo);
}

22
zsw-bxg/src/main/java/co/yixiang/modules/order/rest/StoreOrderController.java

@ -16,7 +16,6 @@ import co.yixiang.annotation.AnonymousAccess;
import co.yixiang.dozer.service.IGenerator;
import co.yixiang.enums.OrderInfoEnum;
import co.yixiang.enums.OrderLogEnum;
import co.yixiang.enums.ShipperCodeEnum;
import co.yixiang.enums.ShopCommonEnum;
import co.yixiang.exception.BadRequestException;
import co.yixiang.logging.aop.log.Log;
@ -28,7 +27,6 @@ import co.yixiang.modules.order.service.YxStoreOrderService;
import co.yixiang.modules.order.service.YxStoreOrderStatusService;
import co.yixiang.modules.order.service.dto.*;
import co.yixiang.tools.express.ExpressService;
import co.yixiang.tools.express.config.ExpressAutoConfiguration;
import co.yixiang.tools.express.dao.ExpressInfo;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -36,6 +34,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@ -74,7 +73,8 @@ public class StoreOrderController {
private final IGenerator generator;
private final YxStoreOrderService yxStoreOrderService;
private final YxStoreOrderStatusService yxStoreOrderStatusService;
@Autowired
private ExpressService expressService;
public StoreOrderController(IGenerator generator, YxStoreOrderService yxStoreOrderService,
YxStoreOrderStatusService yxStoreOrderStatusService) {
@ -316,21 +316,9 @@ public class StoreOrderController {
@ApiOperation(value = "获取物流信息",notes = "获取物流信息",response = ExpressParam.class)
public ResponseEntity express( @RequestBody ExpressParam expressInfoDo){
//顺丰轨迹查询处理
String lastFourNumber = "";
if (expressInfoDo.getShipperCode().equals(ShipperCodeEnum.SF.getValue())) {
YxStoreOrderDto yxStoreOrderDto;
yxStoreOrderDto = yxStoreOrderService.getOrderDetail(Long.valueOf(expressInfoDo.getOrderCode()));
lastFourNumber = yxStoreOrderDto.getUserPhone();
if (lastFourNumber.length()==11) {
lastFourNumber = StrUtil.sub(lastFourNumber,lastFourNumber.length(),-4);
}
}
ExpressService expressService = ExpressAutoConfiguration.expressService();
ExpressInfo expressInfo = expressService.getExpressInfo(expressInfoDo.getOrderCode(),
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode(),lastFourNumber);
if(!expressInfo.isSuccess()) {
expressInfoDo.getShipperCode(), expressInfoDo.getLogisticCode());
if (!expressInfo.isSuccess()) {
throw new BadRequestException(expressInfo.getReason());
}
return new ResponseEntity<>(expressInfo, HttpStatus.OK);

6
zsw-bxg/src/main/java/co/yixiang/modules/order/service/impl/YxStoreOrderServiceImpl.java

@ -83,6 +83,7 @@ import co.yixiang.utils.OrderUtil;
import co.yixiang.utils.RedisUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -2386,7 +2387,10 @@ public class YxStoreOrderServiceImpl extends BaseServiceImpl<StoreOrderMapper, Y
*/
@Override
public YxStoreOrderDto getOrderDetail(Long orderId) {
YxStoreOrder yxStoreOrder = this.getById(orderId);
// YxStoreOrder yxStoreOrder = this.getById(orderId);
LambdaQueryWrapper<YxStoreOrder> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(YxStoreOrder::getOrderId, orderId);
YxStoreOrder yxStoreOrder=yxStoreOrderMapper.selectOne(wrapper);
if (ObjectUtil.isEmpty(yxStoreOrder)) {
throw new BadRequestException("订单详情不存在");
}

213
zsw-bxg/src/main/java/co/yixiang/tools/express/ExpressService.java

@ -5,57 +5,42 @@
*/
package co.yixiang.tools.express;
import cn.hutool.http.HttpUtil;
import co.yixiang.enums.ShipperCodeEnum;
import co.yixiang.tools.express.config.ExpressProperties;
import cn.hutool.json.JSONUtil;
import co.yixiang.tools.express.config.Kuaidi100Properties;
import co.yixiang.tools.express.dao.ExpressInfo;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import co.yixiang.tools.express.dao.Traces;
import co.yixiang.tools.utils.kuaidi100.sdk.api.QueryTrack;
import co.yixiang.tools.utils.kuaidi100.sdk.core.IBaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.QueryTrackParam;
import co.yixiang.tools.utils.kuaidi100.sdk.request.QueryTrackReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.QueryTrackData;
import co.yixiang.tools.utils.kuaidi100.sdk.response.QueryTrackResp;
import co.yixiang.tools.utils.kuaidi100.sdk.utils.SignUtils;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.util.Base64Utils;
import java.io.Serializable;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
/**
* 物流查询服务
* <p>
* 快递鸟即时查询API http://www.kdniao.com/api-track
*/
@Component
@Slf4j
@EnableConfigurationProperties(Kuaidi100Properties.class)
public class ExpressService implements Serializable {
private final Log logger = LogFactory.getLog(ExpressService.class);
//请求url
private String ReqURL = "http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx";
private ExpressProperties properties;
public ExpressProperties getProperties() {
return properties;
}
public void setProperties(ExpressProperties properties) {
this.properties = properties;
}
/**
* 获取物流供应商名
*
* @param vendorCode
* @return
*/
public String getVendorName(String vendorCode) {
for (Map<String, String> item : properties.getVendors()) {
if (item.get("code").equals(vendorCode)) {
return item.get("name");
}
}
return null;
}
@Autowired
private Kuaidi100Properties properties;
/**
* 获取物流信息
*
@ -63,52 +48,92 @@ public class ExpressService implements Serializable {
* @param ShipperCode
* @return
*/
public ExpressInfo getExpressInfo(String OrderCode,String ShipperCode, String LogisticCode,String lastFourNumber) {
public ExpressInfo getExpressInfo(String OrderCode,String ShipperCode, String LogisticCode) {
try {
String result = getOrderTracesByJson(OrderCode,ShipperCode, LogisticCode,lastFourNumber);
ObjectMapper objMap = new ObjectMapper();
ExpressInfo ei = objMap.readValue(result, ExpressInfo.class);
ei.setShipperName(getVendorName(ShipperCode));
return ei;
QueryTrackResp result = getOrderTraceByJson(OrderCode,ShipperCode, LogisticCode);
ExpressInfo info = new ExpressInfo();
assert result != null;
if (!result.getMessage().equals("ok")){
info.setSuccess(false);
info.setReason(result.getMessage());
return info;
}
info.setLogisticCode(LogisticCode);
info.setSuccess(result.getIscheck().equals("1"));
List<Traces> tracesList = Lists.newArrayList();
for (QueryTrackData t: result.getData()){
Traces traces = new Traces();
traces.setAcceptStation(t.getContext());
traces.setAcceptTime(t.getTime());
tracesList.add(traces);
}
info.setSuccess(true);
info.setTraces(tracesList);
return info;
} catch (Exception e) {
logger.error(e.getMessage(), e);
log.error(e.getMessage(), e);
}
return null;
}
/**
* Json方式 查询订单物流轨迹
* Json方式 快递100查询订单物流轨迹
*
* @throws Exception
*/
private String getOrderTracesByJson(String OrderCode,String ShipperCode, String LogisticCode,String lastFourNumber) throws Exception {
if (!properties.isEnable()) {
private QueryTrackResp getOrderTraceByJson(String OrderCode,String ShipperCode, String LogisticCode) throws Exception {
if (!properties.getEnable()) {
return null;
}
//处理顺丰查询轨迹需手机号码后4位
String requestData;
if (ShipperCode.equals(ShipperCodeEnum.SF.getValue())) {
requestData = "{'OrderCode':'" + OrderCode + "','ShipperCode':'" + ShipperCode + "','LogisticCode':'" + LogisticCode + "','CustomerName':'" + lastFourNumber + "'}";
} else {
requestData = "{'OrderCode':'" + OrderCode + "','ShipperCode':'" + ShipperCode + "','LogisticCode':'" + LogisticCode + "'}";
}
Map<String, Object> params = new HashMap<>();
params.put("RequestData", URLEncoder.encode(requestData, "UTF-8"));
params.put("EBusinessID", properties.getAppId());
params.put("RequestType", "1002");
String dataSign = encrypt(requestData, properties.getAppKey(), "UTF-8");
params.put("DataSign", URLEncoder.encode(dataSign, "UTF-8"));
params.put("DataType", "2");
String result = HttpUtil.post(ReqURL, params);
//根据公司业务处理返回的信息......
return result;
}
QueryTrackReq queryTrackReq = new QueryTrackReq();
QueryTrackParam queryTrackParam = new QueryTrackParam();
queryTrackParam.setCom(ShipperCode);
queryTrackParam.setNum(LogisticCode);
String param = new Gson().toJson(queryTrackParam);
queryTrackReq.setParam(param);
queryTrackReq.setCustomer(this.properties.getCustomer());
queryTrackReq.setSign(SignUtils.querySign(param ,this.properties.getKey(),this.properties.getCustomer()));
IBaseClient baseClient = new QueryTrack();
HttpResult rsp = baseClient.execute(queryTrackReq);
return JSONUtil.toBean(rsp.getBody(),QueryTrackResp.class);
}
// /**
// * Json方式 快递鸟查询订单物流轨迹
// *
// * @throws Exception
// */
// private String getOrderTracesByJson(String OrderCode,String ShipperCode, String LogisticCode,String lastFourNumber) throws Exception {
// if (!properties.isEnable()) {
// return null;
// }
//
// //处理顺丰查询轨迹需手机号码后4位(改为都需要手机号后四位)
// String requestData;
// if (ShipperCode.equals(ShipperCodeEnum.SF.getValue())) {
// requestData = "{'OrderCode':'" + OrderCode + "','ShipperCode':'" + ShipperCode + "','LogisticCode':'" + LogisticCode + "','CustomerName':'" + lastFourNumber + "'}";
// } else {
// requestData = "{'OrderCode':'" + OrderCode + "','ShipperCode':'" + ShipperCode + "','LogisticCode':'" + LogisticCode + "'}";
// }
//
// Map<String, Object> params = new HashMap<>();
// params.put("RequestData", URLEncoder.encode(requestData, "UTF-8"));
// params.put("EBusinessID", properties.getAppId());
// params.put("RequestType", "8001");
// String dataSign = encrypt(requestData, properties.getAppKey(), "UTF-8");
// params.put("DataSign", URLEncoder.encode(dataSign, "UTF-8"));
// params.put("DataType", "2");
//
// String result = HttpUtil.post(ReqURL, params);
//
// //根据公司业务处理返回的信息......
//
// return result;
// }
/**
* MD5加密
@ -132,28 +157,28 @@ public class ExpressService implements Serializable {
return sb.toString().toLowerCase();
}
/**
* Sign签名生成
*
* @param content 内容
* @param keyValue Appkey
* @param charset 编码方式
* @return DataSign签名
*/
private String encrypt(String content, String keyValue, String charset) {
if (keyValue != null) {
content = content + keyValue;
}
byte[] src;
try {
src = MD5(content, charset).getBytes(charset);
return Base64Utils.encodeToString(src);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return null;
}
// /**
// * Sign签名生成
// *
// * @param content 内容
// * @param keyValue Appkey
// * @param charset 编码方式
// * @return DataSign签名
// */
// private String encrypt(String content, String keyValue, String charset) {
// if (keyValue != null) {
// content = content + keyValue;
// }
// byte[] src;
// try {
// src = MD5(content, charset).getBytes(charset);
// return Base64Utils.encodeToString(src);
// } catch (Exception e) {
// logger.error(e.getMessage(), e);
// }
//
// return null;
// }
}

54
zsw-bxg/src/main/java/co/yixiang/tools/express/config/ExpressAutoConfiguration.java

@ -1,54 +0,0 @@
/**
* Copyright (C) 2018-2022
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.tools.express.config;
import co.yixiang.constant.ShopConstants;
import co.yixiang.enums.ShopCommonEnum;
import co.yixiang.tools.express.ExpressService;
import co.yixiang.utils.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
@Configuration(proxyBeanMethods = false)
public class ExpressAutoConfiguration {
private static RedisUtils redisUtil;
@Autowired
public ExpressAutoConfiguration(RedisUtils redisUtil) {
ExpressAutoConfiguration.redisUtil = redisUtil;
}
public static ExpressService expressService() {
ExpressService expressService = (ExpressService)redisUtil.get(ShopConstants.ZSW_EXPRESS_SERVICE);
if(expressService != null) {
return expressService;
}
ExpressProperties properties = new ExpressProperties();
String enable = redisUtil.getY("exp_enable");
String appId = redisUtil.getY("exp_appId");
String appKey = redisUtil.getY("exp_appKey");
properties.setAppId(appId);
properties.setAppKey(appKey);
if(ShopCommonEnum.ENABLE_2.getValue().toString().equals(enable)){
properties.setEnable(false);
}else{
properties.setEnable(true);
}
ExpressService service = new ExpressService();
service.setProperties(properties);
redisUtil.set(ShopConstants.ZSW_EXPRESS_SERVICE,service);
return service;
}
}

1
zsw-bxg/src/main/java/co/yixiang/tools/express/config/ExpressProperties.java

@ -5,6 +5,7 @@
*/
package co.yixiang.tools.express.config;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

19
zsw-bxg/src/main/java/co/yixiang/tools/express/config/Kuaidi100Properties.java

@ -0,0 +1,19 @@
package co.yixiang.tools.express.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "kuaidi100")
@Data
public class Kuaidi100Properties {
private String key;
private String customer;
private String secret;
private String userid;
private Boolean enable;
}

8
zsw-bxg/src/main/java/co/yixiang/tools/express/dao/ExpressInfo.java

@ -41,6 +41,14 @@ public class ExpressInfo {
@ApiModelProperty(value = "物流状态:2-在途中,3-签收,4-问题件")
private String State;
// @JsonProperty("Location")
// @ApiModelProperty(value = "不知道干啥的")
// private String Location;
//
// @JsonProperty("StateEx")
// @ApiModelProperty(value = "不知道干啥的")
// private String StateEx;
@JsonProperty("EBusinessID")
@ApiModelProperty(value = "用户ID")
private String EBusinessID;

10
zsw-bxg/src/main/java/co/yixiang/tools/service/impl/QiNiuServiceImpl.java

@ -103,10 +103,12 @@ public class QiNiuServiceImpl implements QiNiuService {
Auth auth = Auth.create(qiniuConfig.getAccessKey(), qiniuConfig.getSecretKey());
String upToken = auth.uploadToken(qiniuConfig.getBucket());
try {
String key = file.getOriginalFilename();
if(qiniuContentService.getOne(new LambdaQueryWrapper<QiniuContent>().eq(QiniuContent::getName,key)) != null) {
key = QiNiuUtil.getKey(key);
}
String key = QiNiuUtil.getKey(file.getOriginalFilename());;
// String key = file.getOriginalFilename();
//key不能重复
// if(qiniuContentService.getOne(new LambdaQueryWrapper<QiniuContent>().eq(QiniuContent::getName,key)) != null) {
// key = QiNiuUtil.getKey(key);
// }
Response response = uploadManager.put(file.getBytes(), key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);

54
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/AutoNum.java

@ -0,0 +1,54 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.AutoNumReq;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.response.AutoNumResp;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import java.util.List;
/**
* 快递100智能判断接口只提供给正式用户使用
*
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 9:59
*/
public class AutoNum extends BaseClient {
public String getApiUrl(BaseRequest request) {
AutoNumReq autoNumReq = (AutoNumReq) request;
return String.format(ApiInfoConstant.AUTO_NUM_URL,autoNumReq.getNum(),autoNumReq.getKey());
}
/**
* 根据单号获取快递公司列表
*
* @return
*/
public List<AutoNumResp> getComByNumList(BaseRequest request) throws Exception{
HttpResult httpResult = this.execute(request);
if ( httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),new TypeToken<List<AutoNumResp>>(){}.getType());
}
return null;
}
/**
* 根据单号获取第一个快递公司
*
* @return
*/
public String getFirstComByNum(BaseRequest request) throws Exception{
List<AutoNumResp> comByNumList = this.getComByNumList(request);
if (comByNumList != null && comByNumList.size()>0){
return comByNumList.get(0).getComCode();
}
return null;
}
}

63
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/BOrder.java

@ -0,0 +1,63 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.BOrderQueryData;
import co.yixiang.tools.utils.kuaidi100.sdk.response.BOrderResp;
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import java.util.Map;
/**
* 商家寄件(优选寄件)
*
* @Author: api.kuaidi100.com
* @Date: 2020-09-17 11:14
*/
public class BOrder extends BaseClient {
@Override
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.B_ORDER_URL;
}
public PrintBaseResp transportCapacity(PrintReq param) throws Exception{
HttpResult httpResult = execute(param);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<BOrderQueryData>>(){}.getType());
}
return null;
}
public PrintBaseResp order(PrintReq param) throws Exception{
HttpResult httpResult = execute(param);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<BOrderResp>>(){}.getType());
}
return null;
}
public PrintBaseResp getCode(PrintReq param) throws Exception{
HttpResult httpResult = execute(param);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<Map<String,String>>>(){}.getType());
}
return null;
}
public PrintBaseResp cancel(PrintReq param) throws Exception{
HttpResult httpResult = execute(param);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp>(){}.getType());
}
return null;
}
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/BOrderOfficial.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
/**
* 商家寄件官方快递
*
* @Author: api.kuaidi100.com
* @Date: 2021-01-21 15:55
*/
public class BOrderOfficial extends BaseClient {
@Override
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.B_ORDER_OFFICIAL_URL;
}
}

52
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/CloudPrintAttachment.java

@ -0,0 +1,52 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.CloudAttachmentReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp;
import co.yixiang.tools.utils.kuaidi100.sdk.utils.HttpUtils;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import java.net.URLEncoder;
import java.util.Map;
/**
* 附件云打印
*
* @Author: api.kuaidi100.com
* @Date: 2020-07-20 9:26
*/
public class CloudPrintAttachment extends BaseClient {
public String getApiUrl(BaseRequest request) {
return null;
}
@Override
public HttpResult execute(BaseRequest request) throws Exception{
if (request instanceof CloudAttachmentReq){
CloudAttachmentReq cloudPrintAttachmentReq = (CloudAttachmentReq)request;
String url = String.format(ApiInfoConstant.CLOUD_PRINT_URL,
cloudPrintAttachmentReq.getMethod(),
cloudPrintAttachmentReq.getT(),
cloudPrintAttachmentReq.getKey(),
cloudPrintAttachmentReq.getSign(),
URLEncoder.encode(cloudPrintAttachmentReq.getParam(), "UTF-8"));
return HttpUtils.doPostFile(url,cloudPrintAttachmentReq.getFile(),super.getConnectTimeout(),super.getSocketTimeout());
}
throw new ClassCastException();
}
public PrintBaseResp print(CloudAttachmentReq cloudPrintAttachmentReq) throws Exception{
HttpResult httpResult = this.execute(cloudPrintAttachmentReq);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<Map<String,String>>>(){}.getType());
}
return null;
}
}

54
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/CloudPrintCustom.java

@ -0,0 +1,54 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp;
import co.yixiang.tools.utils.kuaidi100.sdk.utils.HttpUtils;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import java.net.URLEncoder;
/**
* 自定义云打印
*
* @Author: api.kuaidi100.com
* @Date: 2020-07-20 9:22
*/
public class CloudPrintCustom extends BaseClient {
private int connectTimeout = 3000;
private int socketTimeout = 3000;
public String getApiUrl(BaseRequest request) {
return null;
}
@Override
public HttpResult execute(BaseRequest request) throws Exception{
if (request instanceof PrintReq){
PrintReq printReq = (PrintReq)request;
String url = String.format(ApiInfoConstant.CLOUD_PRINT_URL,
printReq.getMethod(),
printReq.getT(),
printReq.getKey(),
printReq.getSign(),
URLEncoder.encode(printReq.getParam(), "UTF-8"));
return HttpUtils.doPost(url,printReq,super.getConnectTimeout(),super.getSocketTimeout());
}
throw new ClassCastException();
}
public PrintBaseResp print(PrintReq printReq) throws Exception {
HttpResult httpResult = execute(printReq);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())) {
return new Gson().fromJson(httpResult.getBody(), PrintBaseResp.class);
}
return null;
}
}

52
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/CloudPrintOld.java

@ -0,0 +1,52 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp;
import co.yixiang.tools.utils.kuaidi100.sdk.utils.HttpUtils;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import java.net.URLEncoder;
/**
* 复打
*
* @Author: api.kuaidi100.com
* @Date: 2020-07-20 9:26
*/
public class CloudPrintOld extends BaseClient {
public String getApiUrl(BaseRequest request) {
return null;
}
@Override
public HttpResult execute(BaseRequest request) throws Exception{
if (request instanceof PrintReq){
PrintReq printReq = (PrintReq)request;
String url = String.format(ApiInfoConstant.CLOUD_PRINT_URL,
printReq.getMethod(),
printReq.getT(),
printReq.getKey(),
printReq.getSign(),
URLEncoder.encode(printReq.getParam(), "UTF-8"));
return HttpUtils.doPost(url,printReq,super.getConnectTimeout(),super.getSocketTimeout());
}
throw new ClassCastException();
}
public PrintBaseResp print(PrintReq request) throws Exception{
HttpResult httpResult = this.execute(request);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),PrintBaseResp.class);
}
return null;
}
}

39
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/PrintCloud.java

@ -0,0 +1,39 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp;
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintCloudData;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 15:46
*/
public class PrintCloud extends BaseClient {
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.ELECTRONIC_ORDER_PRINT_URL;
}
/**
* 电子面单打印
*
* @param printReq
* @author: api.kuaidi100.com
* @time: 2020/7/17 17:15
*/
public PrintBaseResp<PrintCloudData> print(PrintReq printReq) throws Exception{
HttpResult httpResult = execute(printReq);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<PrintCloudData>>(){}.getType());
}
return null;
}
}

39
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/PrintHtml.java

@ -0,0 +1,39 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintHtmlResp;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 17:20
*/
public class PrintHtml extends BaseClient {
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.ELECTRONIC_ORDER_HTML_URL;
}
/**
* 电子面单打印
*
* @param printReq
* @return: java.lang.String
* @author: api.kuaidi100.com
* @time: 2020/7/17 17:15
*/
public PrintHtmlResp print(PrintReq printReq) throws Exception{
HttpResult httpResult = execute(printReq);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),PrintHtmlResp.class);
}
return null;
}
}

61
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/PrintImg.java

@ -0,0 +1,61 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.PrintReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintBaseResp;
import co.yixiang.tools.utils.kuaidi100.sdk.response.PrintImgData;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 15:46
*/
public class PrintImg extends BaseClient {
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.ELECTRONIC_ORDER_PIC_URL;
}
/**
* 获取电子面单图片BASE64
*
* @param printReq
* @return: java.lang.String
* @author: api.kuaidi100.com
* @time: 2020/7/17 17:15
*/
public PrintBaseResp<PrintImgData> printImG(PrintReq printReq) throws Exception{
HttpResult httpResult = execute(printReq);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),new TypeToken<PrintBaseResp<PrintImgData>>(){}.getType());
}
return null;
}
/**
* 处理返回的base64字符串返回的是一个字符串json数组多个子单时会有多个
*
* @param imgBase64 base64 json字符串数组
* @return
*/
public List<String> getBase64Img(String imgBase64){
List<String> stringList= new Gson().fromJson(imgBase64, new TypeToken<List<String>>() {}.getType());
List<String> base64Img = new ArrayList<String>();
if (stringList != null && stringList.size()>0){
for (String s : stringList) {
s = "data:image/png;base64,"+s.replace("\\\\n","");
base64Img.add(s);
}
}
return base64Img;
}
}

33
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/QueryTrack.java

@ -0,0 +1,33 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.QueryTrackReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.QueryTrackResp;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
/**
* 实时查询
*
* @Author: api.kuaidi100.com
* @Date: 2020-07-14 16:27
*/
public class QueryTrack extends BaseClient {
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.QUERY_URL;
}
public QueryTrackResp queryTrack(QueryTrackReq queryTrackReq) throws Exception{
HttpResult httpResult = execute(queryTrackReq);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),QueryTrackResp.class);
}
return null;
}
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/QueryTrackMap.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
/**
* 快递信息地图轨迹
*
* @Author: api.kuaidi100.com
* @Date: 2020-07-14 16:27
*/
public class QueryTrackMap extends BaseClient {
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.QUERY_MAP_VIEW_URL;
}
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/SameCityOrder.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
/**
* 同城配送
*
* @Author: api.kuaidi100.com
* @Date: 2021-03-22 16:37
*/
public class SameCityOrder extends BaseClient {
@Override
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.SAME_CITY_ORDER_URL;
}
}

59
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/SendSms.java

@ -0,0 +1,59 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.SendSmsReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.SendSmsResp;
import co.yixiang.tools.utils.kuaidi100.sdk.response.SmsCallbackResp;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-20 19:00
*/
public class SendSms extends BaseClient {
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.SEND_SMS_URL;
}
/**
* 发送短信
*
* @param sendSmsReq
* @return
*/
public SendSmsResp sendSms(SendSmsReq sendSmsReq) throws Exception{
HttpResult httpResult = execute(sendSmsReq);
if (StringUtils.isNotBlank(httpResult.getBody()) && httpResult.getStatus() == HttpStatus.SC_OK){
return new Gson().fromJson(httpResult.getBody(),SendSmsResp.class);
}
return null;
}
/**
* 短信回调接口 例子
* @param
* @return: java.util.Map<java.lang.String, java.lang.Boolean>
* @author: api.kuaidi100.com
* @time: 2020/7/21 10:11
*/
public Map<String,Boolean> callback(SmsCallbackResp smsCallbackResp){
//建议记录一下这个回调的内容,方便出问题后双方排查问题
//log.debug("快递100短信回调结果|{}",new Gson().toJson(smsCallbackResp));
Map<String,Boolean> result = new HashMap<String, Boolean>();
if (smsCallbackResp == null){
return result;
}
result.put("status",Boolean.TRUE);
return result;
}
}

79
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/Subscribe.java

@ -0,0 +1,79 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.SubscribeReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.SubscribePushParamResp;
import co.yixiang.tools.utils.kuaidi100.sdk.response.SubscribeResp;
import co.yixiang.tools.utils.kuaidi100.sdk.utils.SignUtils;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import javax.servlet.http.HttpServletRequest;
/**
* 订阅
*
* @Author: api.kuaidi100.com
* @Date: 2020-07-16 14:38
*/
public class Subscribe extends BaseClient {
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.SUBSCRIBE_URL;
}
/**
* 订阅接口
*
* @param subscribeReq
* @return
*/
public SubscribeResp subscribe(SubscribeReq subscribeReq) throws Exception{
HttpResult httpResult = execute(subscribeReq);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(), SubscribeResp.class);
}
return null;
}
/**
* 订阅推送处理(参照)
* 订阅成功后如果该快递单号有轨迹包括已经签收的单快递100将会在15分钟-4个小时推送后面将会4个小时跟踪一次跟踪到有轨迹变化则推送
* 如果订阅成功后3天查无结果录错单/快递公司错了/揽收比较晚快递100将会推送3天查无结果可以继续重新订阅
*
* 回调接口支持自定义参数,比如订阅时回调地址填写的是 http://www.xxx.com?orderId=1233333
* 可以通过下面这种方式获取到orderId String orderId = request.getParameter("orderId");
*
* 返回值必须是下面这样的格式否则快递100将认为该推送失败快递100将会重试3次该推送时间间隔35分钟
* 成功结果返回例子 {"result":true,"returnCode":"200","message":"提交成功"}
*
* @param request
* @return: com.zsw.tools.utils.kuaidi100.sdk.response.SubscribeResp
* @author: api.kuaidi100.com
* @time: 2020/7/16 19:48
*/
public SubscribeResp callBackUrl(HttpServletRequest request){
String param = request.getParameter("param");
String sign = request.getParameter("sign");
//建议记录一下这个回调的内容,方便出问题后双方排查问题
//log.debug("快递100订阅推送回调结果|{}|{}",param,sign);
//订阅时传的salt,没有可以忽略
String salt = "";
String ourSign = SignUtils.sign(param + salt);
SubscribeResp subscribeResp = new SubscribeResp();
subscribeResp.setResult(Boolean.TRUE);
subscribeResp.setReturnCode("200");
subscribeResp.setMessage("成功");
//加密如果相等,属于快递100推送;否则可以忽略掉当前请求
if (ourSign.equals(sign)){
//TODO 业务处理
SubscribePushParamResp subscribePushParamResp = new Gson().fromJson(param, SubscribePushParamResp.class);
return subscribeResp;
}
return null;
}
}

79
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/SubscribeWithMap.java

@ -0,0 +1,79 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.SubscribeReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.SubscribeResp;
import co.yixiang.tools.utils.kuaidi100.sdk.response.SubscribeWithMapPushParamResp;
import co.yixiang.tools.utils.kuaidi100.sdk.utils.SignUtils;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import javax.servlet.http.HttpServletRequest;
/**
* 订阅(地图)
*
* @Author: api.kuaidi100.com
* @Date: 2020-07-16 14:38
*/
public class SubscribeWithMap extends BaseClient {
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.SUBSCRIBE_WITH_MAP_URL;
}
/**
* 订阅接口
*
* @param subscribeReq
* @return
*/
public SubscribeResp subscribe(SubscribeReq subscribeReq) throws Exception{
HttpResult httpResult = execute(subscribeReq);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(), SubscribeResp.class);
}
return null;
}
/**
* 订阅推送处理(参照)
* 订阅成功后如果该快递单号有轨迹包括已经签收的单快递100将会在15分钟-4个小时推送后面将会4个小时跟踪一次跟踪到有轨迹变化则推送
* 如果订阅成功后3天查无结果录错单/快递公司错了/揽收比较晚快递100将会推送3天查无结果可以继续重新订阅
*
* 回调接口支持自定义参数,比如订阅时回调地址填写的是 http://www.xxx.com?orderId=1233333
* 可以通过下面这种方式获取到orderId String orderId = request.getParameter("orderId");
*
* 返回值必须是下面这样的格式否则快递100将认为该推送失败快递100将会重试3次该推送时间间隔35分钟
* 成功结果返回例子 {"result":true,"returnCode":"200","message":"提交成功"}
*
* @param request
* @return: com.zsw.tools.utils.kuaidi100.sdk.response.SubscribeResp
* @author: api.kuaidi100.com
* @time: 2020/7/16 19:48
*/
public SubscribeResp callBackUrl(HttpServletRequest request){
String param = request.getParameter("param");
String sign = request.getParameter("sign");
//建议记录一下这个回调的内容,方便出问题后双方排查问题
//log.debug("快递100订阅推送回调结果|{}|{}",param,sign);
//订阅时传的salt,没有可以忽略
String salt = "";
String ourSign = SignUtils.sign(param + salt);
SubscribeResp subscribeResp = new SubscribeResp();
subscribeResp.setResult(Boolean.TRUE);
subscribeResp.setReturnCode("200");
subscribeResp.setMessage("成功");
//加密如果相等,属于快递100推送;否则可以忽略掉当前请求
if (ourSign.equals(sign)){
//TODO 业务处理
SubscribeWithMapPushParamResp mapPushParamResp = new Gson().fromJson(param, SubscribeWithMapPushParamResp.class);
return subscribeResp;
}
return null;
}
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/api/ThirdAuth.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.api;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
/**
* 第三方平台账号授权
*
* @Author: api.kuaidi100.com
* @Date: 2021-01-06 14:12
*/
public class ThirdAuth extends BaseClient {
@Override
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.THIRD_AUTH_URL;
}
}

31
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/cloud/CloudBase.java

@ -0,0 +1,31 @@
package co.yixiang.tools.utils.kuaidi100.sdk.cloud;
import co.yixiang.tools.utils.kuaidi100.sdk.contant.ApiInfoConstant;
import co.yixiang.tools.utils.kuaidi100.sdk.core.BaseClient;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.request.cloud.CloudBaseReq;
import co.yixiang.tools.utils.kuaidi100.sdk.response.cloud.CloudBaseResp;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-11-20 10:36
*/
public class CloudBase<T> extends BaseClient {
public String getApiUrl(BaseRequest request) {
return ApiInfoConstant.CLOUD_NORMAL_URL;
}
public CloudBaseResp<T> executeToObject(CloudBaseReq param) throws Exception{
HttpResult httpResult = execute(param);
if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())){
return new Gson().fromJson(httpResult.getBody(),new TypeToken<CloudBaseResp<T>>(){}.getType());
}
return null;
}
}

144
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/contant/ApiInfoConstant.java

@ -0,0 +1,144 @@
package co.yixiang.tools.utils.kuaidi100.sdk.contant;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-15 17:43
*/
public class ApiInfoConstant {
/**
* 查询url
*/
public static final String QUERY_URL = "https://poll.kuaidi100.com/poll/query.do";
/**
* 快递查询地图轨迹url
*/
public static final String QUERY_MAP_VIEW_URL = "https://poll.kuaidi100.com/poll/maptrack.do";
/**
* 订阅url
*/
public static final String SUBSCRIBE_URL = "https://poll.kuaidi100.com/poll";
/**
* 订阅带地图url
*/
public static final String SUBSCRIBE_WITH_MAP_URL = "http://poll.kuaidi100.com/pollmap";
/**
* 订阅SCHEMA
*/
public static final String SUBSCRIBE_SCHEMA = "json";
/**
* 智能单号识别url
*/
public static final String AUTO_NUM_URL = "http://www.kuaidi100.com/autonumber/auto?num=%s&key=%s";
/**
* 电子面单html url
*/
public static final String ELECTRONIC_ORDER_HTML_URL = "http://poll.kuaidi100.com/eorderapi.do";
/**
* 电子面单html方法
*/
public static final String ELECTRONIC_ORDER_HTML_METHOD = "getElecOrder";
/**
* 电子面单获取图片 url
*/
public static final String ELECTRONIC_ORDER_PIC_URL = "https://poll.kuaidi100.com/printapi/printtask.do";
/**
* 电子面单获取图片
*/
public static final String ELECTRONIC_ORDER_PIC_METHOD = "getPrintImg";
/**
* 电子面单打印 url
*/
public static final String ELECTRONIC_ORDER_PRINT_URL = "https://poll.kuaidi100.com/printapi/printtask.do";
/**
* 电子面单打印方法
*/
public static final String ELECTRONIC_ORDER_PRINT_METHOD = "eOrder";
/**
* 菜鸟淘宝账号授权
*/
public static final String AUTH_THIRD_URL = "https://poll.kuaidi100.com/printapi/authThird.do";
/**
* 云打印url
*/
public static final String CLOUD_PRINT_URL = "http://poll.kuaidi100.com/printapi/printtask.do?method=%s&t=%s&key=%s&sign=%s&param=%s";
/**
* 自定义打印方法
*/
public static final String CLOUD_PRINT_CUSTOM_METHOD = "printOrder";
/**
* 附件打印方法
*/
public static final String CLOUD_PRINT_ATTACHMENT_METHOD = "imgOrder";
/**
* 复打方法
*/
public static final String CLOUD_PRINT_OLD_METHOD = "printOld";
/**
* 复打方法
*/
public static final String SEND_SMS_URL = "http://apisms.kuaidi100.com:9502/sms/send.do";
/**
* 商家寄件
*/
public static final String B_ORDER_URL = "https://order.kuaidi100.com/order/borderbestapi.do";
/**
* 商家寄件查询运力
*/
public static final String B_ORDER_QUERY_TRANSPORT_CAPACITY_METHOD = "querymkt";
/**
* 商家寄件下单
*/
public static final String B_ORDER_SEND_METHOD = "bOrderBest";
/**
* 商家寄件获取验证码
*/
public static final String B_ORDER_CODE_METHOD = "getCode";
/**
* 商家寄件取消
*/
public static final String B_ORDER_CANCEL_METHOD = "cancelBest";
/**
* 云平台通用请求url
*/
public static final String CLOUD_NORMAL_URL = "http://cloud.kuaidi100.com/api";
/**
* 第三方电商平台账号授权请求url
*/
public static final String THIRD_AUTH_URL = "https://poll.kuaidi100.com/printapi/authThird.do";
/**
* 商家寄件(官方寄件)请求url
*/
public static final String B_ORDER_OFFICIAL_URL = "https://poll.kuaidi100.com/order/borderapi.do";
/**
* 商家寄件(官方寄件)下单
*/
public static final String B_ORDER_OFFICIAL_ORDER_METHOD = "bOrder";
/**
* 商家寄件(官方寄件)取消
*/
public static final String B_ORDER_OFFICIAL_CANCEL_METHOD = "cancel";
/**
* 商家寄件(官方寄件)查询价格
*/
public static final String B_ORDER_OFFICIAL_PRICE_METHOD = "queryPrice";
/**
* 同城配送请求url
*/
public static final String SAME_CITY_ORDER_URL = "https://order.kuaidi100.com/sameCity/order";
/**
* 同城配送授权方法
*/
public static final String SAME_CITY_AUTH_METHOD = "auth";
/**
* 同城配送下单方法
*/
public static final String SAME_CITY_ORDER_METHOD = "order";
/**
* 同城配送查询订单方法
*/
public static final String SAME_CITY_QUERY_METHOD = "query";
/**
* 同城配送取消订单方法
*/
public static final String SAME_CITY_CANCEL_METHOD = "cancel";
}

40
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/contant/CloudApiCodeConstant.java

@ -0,0 +1,40 @@
package co.yixiang.tools.utils.kuaidi100.sdk.contant;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-11-27 9:27
*/
public class CloudApiCodeConstant {
/**
* 快递寄件查询运力
*/
public final static String ORDER_QUERY_EXPRESS = "7c5c49c5e51a4b75bd960f4997d2846a";
/**
* 快递寄件
*/
public final static String ORDER = "ddffadd3df4b4c0d8d6f9942c7a8c990";
/**
* 快递寄件取消寄件
*/
public final static String ORDER_CANCEL = "bcb0428c1dd84aca9d6e19ea4dcf683d";
/**
* 快递时效查询V1版
*/
public final static String AGING_V1 = "8ffb952184224877a561b300dc57b935";
/**
* 快递时效查询V2版
*/
public final static String AGING_V2 = "4cdfccdf64ea4088a94eb2ea1ef40c97";
/**
* 快递时效详情查询V1版
*/
public final static String AGING_DETAILS_V1 = "60d6fa8809134c40879e5f0a7228183e";
/**
* 快递时效详情查询V2版
*/
public final static String AGING_DETAILS_V2 = "81bb0620fbaf460db4e6dab84a05ec00";
/**
* 实时快递查询
*/
public final static String SYNC_QUERY = "c3e50f627ff6452ba44688ba8883f2dc";
}

23
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/contant/CompanyConstant.java

@ -0,0 +1,23 @@
package co.yixiang.tools.utils.kuaidi100.sdk.contant;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-15 17:24
*/
public class CompanyConstant {
public static final String SF = "shunfeng";
public static final String ZT = "zhongtong";
public static final String YT = "yuantong";
public static final String HT = "huitongkuaidi";
public static final String ST = "shentong";
public static final String YD = "yunda";
public static final String EMS = "ems";
public static final String JD = "jd";
public static final String ZJS = "zhaijisong";
public static final String DB = "debangkuaidi";
public static final String SS = "shansong";
public static final String KFW = "kfw";
}

42
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/core/BaseClient.java

@ -0,0 +1,42 @@
package co.yixiang.tools.utils.kuaidi100.sdk.core;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.response.BaseResponse;
import co.yixiang.tools.utils.kuaidi100.sdk.utils.HttpUtils;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-11-25 16:02
*/
public abstract class BaseClient implements IBaseClient{
private int connectTimeout = 3000;
private int socketTimeout = 3000;
public HttpResult execute(BaseRequest request) throws Exception{
return HttpUtils.doPost(getApiUrl(request),request,connectTimeout,socketTimeout);
}
public BaseResponse executeToObject(BaseRequest request) throws Exception{
return null;
}
public void setTimeOut(int connectTimeout, int socketTimeout) {
this.connectTimeout = connectTimeout;
this.socketTimeout = socketTimeout;
}
public abstract String getApiUrl(BaseRequest request);
public int getConnectTimeout() {
return connectTimeout;
}
public int getSocketTimeout() {
return socketTimeout;
}
}

18
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/core/IBaseClient.java

@ -0,0 +1,18 @@
package co.yixiang.tools.utils.kuaidi100.sdk.core;
import co.yixiang.tools.utils.kuaidi100.sdk.pojo.HttpResult;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.response.BaseResponse;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-11-25 16:09
*/
public interface IBaseClient {
HttpResult execute(BaseRequest request) throws Exception;
BaseResponse executeToObject(BaseRequest request) throws Exception;
void setTimeOut(int connectTimeout,int socketTimeout);
}

20
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/pojo/HttpResult.java

@ -0,0 +1,20 @@
package co.yixiang.tools.utils.kuaidi100.sdk.pojo;
import lombok.Data;
@Data
public class HttpResult {
private int status;
private String body;
private String error;
public HttpResult() {
}
public HttpResult(int status, String body, String error) {
this.status = status;
this.body = body;
this.error = error;
}
}

15
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/AutoNumReq.java

@ -0,0 +1,15 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-12-04 11:11
*/
@Data
public class AutoNumReq extends BaseRequest {
private String key;
private String num;
}

23
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BOrderCancelReq.java

@ -0,0 +1,23 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-09-17 14:37
*/
@Data
public class BOrderCancelReq {
/**
* 任务ID
*/
private String taskId;
/**
* 订单ID
*/
private String orderId;
/**
* 取消原因暂时不寄件了
*/
private String cancelMsg;
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BOrderGetCodeReq.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-09-17 14:37
*/
@Data
public class BOrderGetCodeReq {
/**
* 任务ID
*/
private String taskId;
/**
* 订单ID
*/
private String orderId;
}

21
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BOrderOfficialQueryPriceReq.java

@ -0,0 +1,21 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* 商家寄件(官方快递)
*
* @Author: api.kuaidi100.com
* @Date: 2021-03-22 15:29
*/
@Data
public class BOrderOfficialQueryPriceReq {
/**
* 快递公司编码
*/
private String kuaidiCom;
/**
* 出发地地址最小颗粒到市级例如广东省深圳市
*/
private String address;
}

13
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BOrderQueryReq.java

@ -0,0 +1,13 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-09-17 11:17
*/
@Data
public class BOrderQueryReq {
private String sendAddr;
}

64
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BOrderReq.java

@ -0,0 +1,64 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-09-17 14:33
*/
@Data
public class BOrderReq {
/**
* 快递公司的编码一律用小写字母快递公司编码
*/
private String kuaidicom;
/**
* 收件人姓名
*/
private String recManName;
/**
* 收件人的手机号手机号和电话号二者其一必填
*/
private String recManMobile;
/**
* 收件人所在完整地址如广东深圳市深圳市南山区科技南十二路2号金蝶软件园
*/
private String recManPrintAddr;
/**
* 寄件人姓名
*/
private String sendManName;
/**
* 寄件人的手机号手机号和电话号二者其一必填
*/
private String sendManMobile;
/**
* 寄件人所在的完整地址如广东深圳市深圳市南山区科技南十二路2号金蝶软件园B10
*/
private String sendManPrintAddr;
/**
* 物品名称,文件
*/
private String cargo;
/**
* 物品总重量KG1.5单位kg
*/
private String weight;
/**
* 备注
*/
private String remark;
/**
* 签名用随机字符串
*/
private String salt;
/**
* callBackUrl订单信息回调
*/
private String callBackUrl;
/**
* 快递业务服务类型标准快递默认为标准快递
*/
private String serviceType;
}

13
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/BaseRequest.java

@ -0,0 +1,13 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-11-25 16:12
*/
@Data
public class BaseRequest {
private String url;
}

14
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/CloudAttachmentReq.java

@ -0,0 +1,14 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
import java.io.File;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-20 9:36
*/
@Data
public class CloudAttachmentReq extends PrintReq {
private File file;
}

47
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/CloudPrintAttachmentParam.java

@ -0,0 +1,47 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-20 9:37
*/
@Data
public class CloudPrintAttachmentParam {
/**
* 贵司内部自定义的订单编号,需要保证唯一性非必填
*/
private String orderId;
/**
* 打印纸的高度以mm为单位
*/
private String height;
/**
* 打印纸的宽度以mm为单位
*/
private String width;
/**
* 需要打印的份数默认是一份
*/
private String copyNum;
/**
* 打印范围起始页仅对多页文件支持默认是打印整个文档
*/
private String startPage;
/**
* 打印范围结束页仅对多页文件支持默认是打印整个文档
*/
private String endPage;
/**
* 签名用随机字符串
*/
private String salt;
/**
* 打印设备通过打印机输出的设备码进行获取
*/
private String siid;
/**
* 打印状态回调地址
*/
private String callBackUrl;
}

39
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/CloudPrintCustomParam.java

@ -0,0 +1,39 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-20 9:38
*/
@Data
public class CloudPrintCustomParam {
/**
* 贵司内部自定义的订单编号,需要保证唯一性非必填
*/
private String orderId;
/**
* 通过管理后台的打印摸版配置信息获取
*/
private String tempid;
/**
* 打印设备通过打印机输出的设备码进行获取
*/
private String siid;
/**
* 打印纸的高度
*/
private String height;
/**
* 打印纸的宽度
*/
private String width;
/**
* 打印状态回调地址
*/
private String callBackUrl;
/**
* 签名用随机字符串
*/
private String salt;
}

8
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/CloudPrintCustomReq.java

@ -0,0 +1,8 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-20 9:37
*/
public class CloudPrintCustomReq {
}

13
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/CloudPrintOldParam.java

@ -0,0 +1,13 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-20 10:43
*/
@Data
public class CloudPrintOldParam {
private String taskId;
}

27
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/ManInfo.java

@ -0,0 +1,27 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 16:30
*/
@Data
public class ManInfo {
/**
* 收件人姓名 (必填)
*/
private String name;
/**
* 收件人的手机号手机号和电话号二者其一必填 (必填)
*/
private String mobile;
/**
* 收件人所在完整地址 (必填)
*/
private String printAddr;
/**
* 收件人所在公司名称(可选)
*/
private String company;
}

181
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintCloudParam.java

@ -0,0 +1,181 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 17:05
*/
@Data
public class PrintCloudParam {
/**
* 业务类型默认为10
*/
private String type;
/**
* 电子面单客户账户或月结账号需贵司向当地快递公司网点申请
*/
private String partnerId;
/**
* 电子面单密码需贵司向当地快递公司网点申请
*/
private String partnerKey;
/**
* 收件网点名称,由快递公司当地网点分配
* 若使用淘宝授权填入taobao使用菜鸟授权填入cainiao
*/
private String net;
/**
* 快递公司的编码一律用小写字母
*/
private String kuaidicom;
/**
* 收件人信息
*/
private ManInfo recMan;
/**
* 收件人信息
*/
private ManInfo sendMan;
/**
* 物品名称(部分快递公司必填)
*/
private String cargo;
/**
* 物品总数量
* 另外该属性与子单有关如果需要子单指同一个订单打印出多张电子面单即同一个订单返回多个面单号
* needChild = 1count 需要大于1如count = 2 则一个主单 一个子单
* count = 3则一个主单 二个子单返回的子单号码见返回结果的childNum字段
*/
private String count;
/**
* 物品总重量单位KG 例子0.5
*/
private String weight;
/**
* 支付方式
* SHIPPER:寄方付默认
* CONSIGNEE:到付
* MONTHLY:月结
* THIRDPARTY:第三方支付
*/
private String payType;
/**
* 快递类型
* 标准快递默认
* 顺丰特惠
* EMS经济
*/
private String expType;
/**
* 备注
*/
private String remark;
/**
* 电子面单模板编码
*/
private String tempid;
/**
* 打印设备编码通过打印机输出的设备码进行获取
*/
private String siid;
/**
* 保价额度
*/
private String valinsPay;
/**
* 代收货款额度
*/
private String collection;
/**
* 是否需要子单(支持子单的快递公司才可以用是否支持可以参考参数字典)
* 1:需要
* 0:不需要(默认)
* 如果需要子单指同一个订单打印出多张电子面单即同一个订单返回多个面单号
* needChild = 1count 需要大于1如count = 2 一个主单 一个子单
* count = 3 一个主单 二个子单返回的子单号码见返回结果的childNum字段
*/
private String needChild;
/**
* 是否需要回单(支持回单的快递公司才可以用是否支持可以参考参数字典)
* 1:需要
* 0:不需要(默认)
* 返回的回单号见返回结果的returnNum字段
*/
private String needBack;
/**
* 贵司内部自定义的订单编号,需要保证唯一性
*/
private String orderId;
/**
* 生成图片的高以mm为单位(默认100)
*/
private String height;
/**
* 生成图片的宽以mm为单位默认180
*/
private String width;
/**
* 打印状态回调地址
*/
private String callBackUrl;
/**
* 签名用随机字符串
*/
private String salt;
/**
* 是否开启订阅功能
* 0不开启(默认)
* 1开启
* 说明开启订阅功能时pollCallBackUrl必须填入
* 此功能只针对有快递单号的单
*/
private String op;
/**
* 如果op设置为1时pollCallBackUrl必须填入用于跟踪回调
*/
private String pollCallBackUrl;
/**
* 添加此字段表示开通行政区域解析功能0关闭默认1开通行政区域解析功能
*/
private String resultv2;
/**
* 扩展字段不同快递公司具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String code;
/**
* 扩展字段具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String partnerSecret;
/**
* 扩展字段具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String partnerName;
/**
* 扩展字段具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String checkMan;
/**
* 打印方向默认0 0-正方向 1-反方向
*/
private String direction;
/**
* 打印时间
*/
private String printTime;
/**
* 额外服务类似部分物流公司的需定义派送方式包装等
*/
private String addService;
/*
* 到付金额单位
*/
private String freight;
}

32
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintCloudReq.java

@ -0,0 +1,32 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 16:21
*/
@Data
public class PrintCloudReq extends PrintReq{
/**
* 业务类型默认getPrintImg
*/
private String method;
/**
* 快递100分配给贵司的的授权key
*/
private String key;
/**
* 加密签名信息MD5(param+t+key+secret)加密后字符串转大写
*/
private String sign;
/**
* 当前请求时间戳
*/
private String t;
/**
* 其他参数组合成的json对象
*/
private String param;
}

145
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintHtmlParam.java

@ -0,0 +1,145 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 16:55
*/
@Data
public class PrintHtmlParam {
/**
* 电子面单客户账户或月结账号需贵司向当地快递公司网点申请
*/
private String partnerId;
/**
* 电子面单密码需贵司向当地快递公司网点申请
*/
private String partnerKey;
/**
* 收件网点名称,由快递公司当地网点分配
* 若使用淘宝授权填入taobao使用菜鸟授权填入cainiao
*/
private String net;
/**
* 快递公司的编码一律用小写字母
*/
private String kuaidicom;
/**
* 收件人信息
*/
private ManInfo recMan;
/**
* 收件人信息
*/
private ManInfo sendMan;
/**
* 物品名称(部分快递公司必填)
*/
private String cargo;
/**
* 物品总数量
* 另外该属性与子单有关如果需要子单指同一个订单打印出多张电子面单即同一个订单返回多个面单号
* needChild = 1count 需要大于1如count = 2 则一个主单 一个子单
* count = 3则一个主单 二个子单返回的子单号码见返回结果的childNum字段
*/
private int count;
/**
* 物品总重量单位KG 例子0.5
*/
private String weight;
/**
* 支付方式
* SHIPPER:寄方付默认
* CONSIGNEE:到付
* MONTHLY:月结
* THIRDPARTY:第三方支付
*/
private String payType;
/**
* 快递类型
* 标准快递默认
* 顺丰特惠
* EMS经济
*/
private String expType;
/**
* 备注
*/
private String remark;
/**
* 保价额度
*/
private String valinsPay;
/**
* 代收货款额度
*/
private String collection;
/**
* 是否需要子单(支持子单的快递公司才可以用是否支持可以参考参数字典)
* 1:需要
* 0:不需要(默认)
* 如果需要子单指同一个订单打印出多张电子面单即同一个订单返回多个面单号
* needChild = 1count 需要大于1如count = 2 一个主单 一个子单
* count = 3 一个主单 二个子单返回的子单号码见返回结果的childNum字段
*/
private int needChild;
/**
* 是否需要回单(支持回单的快递公司才可以用是否支持可以参考参数字典)
* 1:需要
* 0:不需要(默认)
* 返回的回单号见返回结果的returnNum字段
*/
private String needBack;
/**
* 贵司内部自定义的订单编号,需要保证唯一性
*/
private String orderId;
/**
* 是否返回面单
* 0不需要(默认)
* 1需要
* 如果需要则返回要打印的模版的HTML代码贵司可以直接将之显示到IE等浏览器然后通过浏览器进行打印
*/
private String needTemplate;
/**
* 签名用随机字符串
*/
private String salt;
/**
* 是否开启订阅功能
* 0不开启(默认)
* 1开启
* 说明开启订阅功能时pollCallBackUrl必须填入
* 此功能只针对有快递单号的单
*/
private String op;
/**
* 如果op设置为1时pollCallBackUrl必须填入用于跟踪回调
*/
private String pollCallBackUrl;
/**
* 添加此字段表示开通行政区域解析功能0关闭默认1开通行政区域解析功能
*/
private String resultv2;
/**
* 扩展字段不同快递公司具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String code;
/**
* 扩展字段具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String partnerSecret;
/**
* 扩展字段具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String partnerName;
/**
* 扩展字段具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String checkMan;
}

32
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintHtmlReq.java

@ -0,0 +1,32 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 16:14
*/
@Data
public class PrintHtmlReq {
/**
* 业务类型默认getPrintImg
*/
private String method;
/**
* 快递100分配给贵司的的授权key
*/
private String key;
/**
* 加密签名信息MD5(param+t+key+secret)加密后字符串转大写
*/
private String sign;
/**
* 当前请求时间戳
*/
private String t;
/**
* 其他参数组合成的json对象
*/
private String param;
}

179
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintImgParam.java

@ -0,0 +1,179 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 15:49
*/
@Data
public class PrintImgParam {
/**
* 业务类型默认为10
*/
private String type;
/**
* 电子面单客户账户或月结账号需贵司向当地快递公司网点申请
*/
private String partnerId;
/**
* 电子面单密码需贵司向当地快递公司网点申请
*/
private String partnerKey;
/**
* 收件网点名称,由快递公司当地网点分配
* 若使用淘宝授权填入taobao使用菜鸟授权填入cainiao
*/
private String net;
/**
* 快递公司的编码一律用小写字母
*/
private String kuaidicom;
/**
* 收件人姓名
*/
private String recManName;
/**
* 收件人的手机号
*/
private String recManMobile;
/**
* 收件人的手机号
*/
private String recManTel;
/**
* 收件人所在完整地址
*/
private String recManPrintAddr;
/**
* 寄件人姓名
*/
private String sendManName;
/**
* 寄件人的手机号
*/
private String sendManMobile;
/**
* 寄件人所在的完整地址
*/
private String sendManPrintAddr;
/**
* 打印电子面单模板编码登录快递100管理后台查看
*/
private String tempid;
/**
* 物品名称(部分快递公司必填)
*/
private String cargo;
/**
* 物品总数量
* 另外该属性与子单有关如果需要子单指同一个订单打印出多张电子面单即同一个订单返回多个面单号
* needChild = 1count 需要大于1如count = 2 则一个主单 一个子单
* count = 3则一个主单 二个子单返回的子单号码见返回结果的childNum字段
*/
private String count;
/**
* 物品总重量单位KG 例子0.5
*/
private String weight;
/**
* 支付方式
* SHIPPER:寄方付默认
* CONSIGNEE:到付
* MONTHLY:月结
* THIRDPARTY:第三方支付
*/
private String payType;
/**
* 快递类型
* 标准快递默认
* 顺丰特惠
* EMS经济
*/
private String expType;
/**
* 备注
*/
private String remark;
/**
* 保价额度
*/
private String valinsPay;
/**
* 代收货款额度
*/
private String collection;
/**
* 是否需要子单(支持子单的快递公司才可以用是否支持可以参考参数字典)
* 1:需要
* 0:不需要(默认)
* 如果需要子单指同一个订单打印出多张电子面单即同一个订单返回多个面单号
* needChild = 1count 需要大于1如count = 2 一个主单 一个子单
* count = 3 一个主单 二个子单返回的子单号码见返回结果的childNum字段
*/
private String needChild;
/**
* 是否需要回单(支持回单的快递公司才可以用是否支持可以参考参数字典)
* 1:需要
* 0:不需要(默认)
* 返回的回单号见返回结果的returnNum字段
*/
private String needBack;
/**
* 贵司内部自定义的订单编号,需要保证唯一性
*/
private String orderId;
/**
* 生成图片的高以mm为单位(默认100)
*/
private String height;
/**
* 生成图片的宽以mm为单位默认180
*/
private String width;
/**
* 签名用随机字符串
*/
private String salt;
/**
* 是否开启订阅功能
* 0不开启(默认)
* 1开启
* 说明开启订阅功能时pollCallBackUrl必须填入
* 此功能只针对有快递单号的单
*/
private String op;
/**
* 如果op设置为1时pollCallBackUrl必须填入用于跟踪回调
*/
private String pollCallBackUrl;
/**
* 添加此字段表示开通行政区域解析功能0关闭默认1开通行政区域解析功能
*/
private String resultv2;
/**
* 打印时间
*/
private String printTime;
/**
* 扩展字段不同快递公司具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String code;
/**
* 扩展字段具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String partnerSecret;
/**
* 扩展字段具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String partnerName;
/**
* 扩展字段具体详情看参数字典
* https://api.kuaidi100.com/help/doc/?code=5f0ff6e82977d50a94e10237&openKey=%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95
*/
private String checkMan;
}

31
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintImgReq.java

@ -0,0 +1,31 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 15:49
*/
@Data
public class PrintImgReq extends PrintReq{
/**
* 业务类型默认getPrintImg
*/
private String method;
/**
* 快递100分配给贵司的的授权key
*/
private String key;
/**
* 加密签名信息MD5(param+t+key+secret)加密后字符串转大写
*/
private String sign;
/**
* 当前请求时间戳
*/
private String t;
/**
* 其他参数组合成的json对象
*/
private String param;
}

36
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/PrintReq.java

@ -0,0 +1,36 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-20 9:41
*/
@Data
public class PrintReq extends BaseRequest {
/**
* 业务类型默认getPrintImg
*/
private String method;
/**
* 快递100分配给贵司的的授权key
*/
private String key;
/**
* 加密签名信息MD5(param+t+key+secret)加密后字符串转大写
*/
private String sign;
/**
* 当前请求时间戳
*/
private String t;
/**
* 其他参数
*/
private String param;
/**
* 快递100分配给贵司的的授权key
*/
private String secret;
}

43
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/QueryTrackParam.java

@ -0,0 +1,43 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-14 15:58
*/
@Data
public class QueryTrackParam {
/**
* 查询的快递公司的编码一律用小写字母
*/
private String com;
/**
* 查询的快递单号 单号的最大长度是32个字符
*/
private String num;
/**
* 收件人或寄件人的手机号或固话
*/
private String phone;
/**
* 出发地城市--
*/
private String from;
/**
* 目的地城市--
*/
private String to;
/**
* 添加此字段表示开通行政区域解析功能0关闭默认1开通行政区域解析功能2开通行政解析功能并且返回出发目的及当前城市信息
*/
private String resultv2 = "0";
/**
* 返回数据格式0json默认1xml2html3text
*/
private String show = "0";
/**
* 返回结果排序方式desc降序默认asc升序
*/
private String order = "desc";
}

23
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/QueryTrackReq.java

@ -0,0 +1,23 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-14 15:56
*/
@Data
public class QueryTrackReq extends BaseRequest {
/**
* 我方分配给贵司的的公司编号, 点击查看账号信息
*/
private String customer;
/**
* 签名 用于验证身份 按param + key + customer 的顺序进行MD5加密注意加密后字符串要转大写 不需要+
*/
private String sign;
/**
* 其他参数组合成的json对象
*/
private String param;
}

44
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/SendSmsReq.java

@ -0,0 +1,44 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-21 9:14
*/
@Data
public class SendSmsReq extends BaseRequest {
/**
* 加密签名信息MD5(key + userid)加密后字符串转大写
*/
private String sign;
/**
* 我方分配给贵司的的短信接口用户ID点击查看账号信息
*/
private String userid;
/**
* 商户名称签名最好用简称该字段信息会在短信标签处显示不要超过5个字符
*/
private String seller;
/**
* 接收短信手机号
*/
private String phone;
/**
* 短信模板ID
*/
private String tid;
/**
* 短信模板替换内容
*/
private String content;
/**
* 外部订单号当该短信发送模板有回调地址时外部订单号会返回给调用者方便用户更新数据
*/
private String outorder;
/**
* 回调地址如果客户在发送短信时填写该参数将按照这个参数回调短信发送状态
* 如果为空将按照模板配置的地址回调短信发送状态如果两个参数都不填写将不会回调通知状态
*/
private String callback;
}

36
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/SubscribeParam.java

@ -0,0 +1,36 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-16 13:41
*/
@Data
public class SubscribeParam {
/**
* 订阅的快递公司的编码一律用小写字母
*/
private String company;
/**
* 订阅的快递单号单号的最大长度是32个字符
*/
private String number;
/**
* 出发地城市--非必填填了有助于提升签收状态的判断的准确率请尽量提供
*/
private String from;
/**
* 目的地城市--非必填填了有助于提升签收状态的判断的准确率且到达目的地后会加大监控频率请尽量提供
*/
private String to;
/**
* 我方分配给贵司的的授权key
*/
private String key;
/**
* 附加参数信息
*/
private SubscribeParameters parameters;
}

57
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/SubscribeParameters.java

@ -0,0 +1,57 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-16 13:42
*/
@Data
public class SubscribeParameters {
/**
* 回调接口的地址如果需要在推送信息回传自己业务参数可以在回调地址URL后面拼接上去如示例中的orderId
* http://www.xxxxx.com/callback?orderId=123
*/
private String callbackurl;
/**
* 签名用随机字符串32位自定义字符串添加该参数则推送的时候会增加sign给贵司校验消息的可靠性
*/
private String salt;
/**
* 添加此字段表示开通行政区域解析功能0关闭默认1开通行政区域解析功能
*/
private String resultv2;
/**
* 添加此字段且将此值设为1则表示开始智能判断单号所属公司的功能
* 开启后company字段可为空,即只传运单号number字段我方收到后会根据单号判断出其所属的快递公司即company字段
* 建议只有在无法知道单号对应的快递公司即company的值的情况下才开启此功能
*/
private String autoCom;
/**
* 添加此字段表示开启国际版
* 开启后若订阅的单号即number字段属于国际单号会返回出发国与目的国两个国家的跟踪信息;
* 本功能暂时只支持邮政体系国际类的邮政小包EMS内的快递公司;
* 若单号我方识别为非国际单即使添加本字段也不会返回destResult元素组.
*/
private String interCom;
/**
* 出发国家编码
*/
private String departureCountry;
/**
* 出发国家快递公司的编码
*/
private String departureCom;
/**
* 目的国家编码
*/
private String destinationCountry;
/**
* 目的国家快递公司的编码
*/
private String destinationCom;
/**
* 收件人或寄件人的手机号或固话顺丰单号必填也可以填写后四位如果是固话请不要上传分机号
*/
private String phone;
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/SubscribeReq.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-16 13:41
*/
@Data
public class SubscribeReq extends BaseRequest {
/**
* 返回数据格式(jsonxmltext)
*/
private String schema;
/**
* 其他参数
*/
private String param;
}

25
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/ThirdAuthReq.java

@ -0,0 +1,25 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request;
import lombok.Getter;
import lombok.Setter;
/**
* @Author: api.kuaidi100.com
* @Date: 2021-01-06 14:16
*/
@Getter
@Setter
public class ThirdAuthReq {
/**
* 请求的第三方平台淘宝taobao菜鸟cainiao京东jdalpha拼多多pinduoduoWx
*/
private String net;
/**
* 授权完后的信息回调地址
*/
private String callBackUrl;
/**
* 已经授权完需要重新获取授权信息
*/
private String partnerId;
}

23
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/cloud/COrderCancelReq.java

@ -0,0 +1,23 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request.cloud;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-11-25 15:47
*/
@Data
public class COrderCancelReq extends CloudBaseReq{
/**
* 任务ID
*/
private String taskId;
/**
* 订单ID
*/
private String orderId;
/**
* 取消原因暂时不寄件了
*/
private String cancelMsg;
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/cloud/COrderQueryReq.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request.cloud;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-11-20 11:09
*/
@Data
public class COrderQueryReq extends CloudBaseReq{
/**
*
*/
private String sendManPrintAddr;
private String recManPrintAddr;
private String address;
}

75
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/cloud/COrderReq.java

@ -0,0 +1,75 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request.cloud;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-10-27 15:47
*/
@Data
public class COrderReq extends CloudBaseReq{
/**
* 快递公司的编码一律用小写字母快递公司编码
*/
private String com;
/**
* 收件人姓名
*/
private String recManName;
/**
* 收件人的手机号手机号和电话号二者其一必填
*/
private String recManMobile;
/**
* 收件人所在完整地址如广东深圳市深圳市南山区科技南十二路2号金蝶软件园
*/
private String recManPrintAddr;
/**
* 寄件人姓名
*/
private String sendManName;
/**
* 寄件人的手机号手机号和电话号二者其一必填
*/
private String sendManMobile;
/**
* 寄件人所在的完整地址如广东深圳市深圳市南山区科技南十二路2号金蝶软件园B10
*/
private String sendManPrintAddr;
/**
* 物品名称,文件
*/
private String cargo;
/**
* 物品总重量KG1.5单位kg
*/
private String weight;
/**
* 备注
*/
private String remark;
/**
* 签名用随机字符串
*/
private String salt;
/**
* callBackUrl订单信息回调
*/
private String callBackUrl;
/**
* 预约日期例如今天/明天/后天
*/
private String dayType;
/**
* 预约起始时间HH:mm例如09:00
*/
private String pickupStartTime;
/**
* 预约截止时间HH:mm例如10:00
*/
private String pickupEndTime;
/**
* 支付方式SHIPPER: 寄付默认CONSIGNEE: 到付
*/
private String payment;
}

31
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/cloud/CloudBaseReq.java

@ -0,0 +1,31 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request.cloud;
import co.yixiang.tools.utils.kuaidi100.sdk.request.BaseRequest;
import co.yixiang.tools.utils.kuaidi100.sdk.utils.SignUtils;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-10-27 15:45
*/
@Data
public class CloudBaseReq extends BaseRequest {
/**
* 用户授权key
*/
private String secret_key;
/**
* 接口编号
*/
private String secret_code;
/**
* 加密签名md5(secret_key+secret_secret)转大写
*/
private String secret_sign;
private String secret_secret;
public String getSecret_sign() {
return SignUtils.sign(secret_key+secret_secret);
}
}

23
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/samecity/AuthReq.java

@ -0,0 +1,23 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request.samecity;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2021-03-22 16:57
*/
@Data
public class AuthReq {
/**
* 快递公司一律用小写字母见参数字典
*/
private String com;
/**
* 授权店铺id
*/
private String storeId;
/**
* 授权后信息的信息回调地址
*/
private String callbackUrl;
}

24
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/samecity/CancelReq.java

@ -0,0 +1,24 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request.samecity;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2021-03-22 17:24
*/
@Data
public class CancelReq {
/**
* 任务ID
*/
private String taskId;
/**
* 订单ID
*/
private String orderId;
/**
* 取消原因
*/
private String cancelMsg;
}

27
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/samecity/OrderGoods.java

@ -0,0 +1,27 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request.samecity;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2021-03-09 10:15
*/
@Data
public class OrderGoods {
/**
* 商品名称
*/
private String name;
/**
* 商品价格
*/
private Integer price;
/**
* 商品数量
*/
private Integer count;
/**
* 商品单位
*/
private String unit;
}

115
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/samecity/OrderReq.java

@ -0,0 +1,115 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request.samecity;
import lombok.Data;
import java.util.List;
/**
* @Author: api.kuaidi100.com
* @Date: 2021-03-22 17:25
*/
@Data
public class OrderReq {
/**
* 快递公司的编码一律用小写字母快递公司编码
*/
private String com;
/**
* 收件人姓名
*/
private String recManName;
/**
* 收件人的手机号手机号和电话号二者其一必填
*/
private String recManMobile;
/**
* 收件人所在完整地址如广东深圳市深圳市南山区科技南十二路2号金蝶软件园
*/
private String recManPrintAddr;
/**
* 寄件人姓名
*/
private String sendManName;
/**
* 寄件人的手机号手机号和电话号二者其一必填
*/
private String sendManMobile;
/**
* 寄件人所在的完整地址如广东深圳市深圳市南山区科技南十二路2号金蝶软件园B10
*/
private String sendManPrintAddr;
/**
* 服务类型
*/
private String serviceType;
/**
* 物品总重量KG1.5单位kg
*/
private Double weight;
/**
* 备注
*/
private String remark;
/**
* 签名用随机字符串
*/
private String salt;
/**
* callBackUrl订单信息回调
*/
private String callbackUrl;
/**
* 订单类型默认为0 0: 立即单 1: 预约单
*/
private Integer orderType;
/**
* 取货时间2020-02-02 22:00,指的是预约取件时间
*/
private String pickupTime;
/**
* 支付方式SHIPPER: 寄付默认CONSIGNEE: 到付
*/
private String payment;
/**
* 对应商家版物品来源流水号
*/
private String orderSourceNo;
/**
* 物品来源
*/
private String orderSourceType;
/**
* 店铺ID
*/
private String storeId;
/**
* 小费
*/
private Integer additionFee;
/**
* 保险费用(闪送支持)
*/
private Integer insurance;
/**
* 保险产品ID(闪送支持)
*/
private String insuranceProId;
/**
* 商品价格
*/
private Integer price;
/**
* 代收价格
*/
private Integer CollectionPrice;
private String partnerId;
private String partnerKey;
/**
* 商品详情强烈建议提供方便骑手在取货时确认货品信息 顺丰时必填
*/
private List<OrderGoods> goods;
}

20
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/request/samecity/QueryReq.java

@ -0,0 +1,20 @@
package co.yixiang.tools.utils.kuaidi100.sdk.request.samecity;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2021-03-22 17:24
*/
@Data
public class QueryReq {
/**
* 任务ID
*/
private String taskId;
/**
* 订单ID
*/
private String orderId;
}

27
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/AutoNumResp.java

@ -0,0 +1,27 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 10:04
*/
@Data
public class AutoNumResp {
/**
* 请忽略
*/
public String lengthPre;
/**
* 快递公司对应的编码
*/
private String comCode;
/**
* 请忽略
*/
private String noPre;
/**
* 请忽略
*/
private String noCount;
}

27
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/BOrderQueryData.java

@ -0,0 +1,27 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
import java.util.List;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-09-17 14:17
*/
@Data
public class BOrderQueryData {
private String province;
private String city;
private String district;
private String addr;
private String latitude;
private String longitude;
private List<BOrderQueryDataInfo> mktInfo;
}

22
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/BOrderQueryDataInfo.java

@ -0,0 +1,22 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
import java.util.List;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-09-17 14:24
*/
@Data
public class BOrderQueryDataInfo {
/**
* 业务服务类型
*/
private List<String> serviceType;
/**
* 支持的快递公司编码
*/
private String kuaidiCom;
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/BOrderResp.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-09-17 14:31
*/
@Data
public class BOrderResp {
/**
* 任务ID
*/
private String taskId;
/**
* 订单ID
*/
private String orderId;
}

8
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/BaseResponse.java

@ -0,0 +1,8 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-11-25 16:11
*/
public class BaseResponse<K> {
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/PrintBaseResp.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 18:48
*/
@Data
public class PrintBaseResp<T> {
private String returnCode;
private boolean result;
private String message;
private T data;
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/PrintCloudData.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 19:49
*/
@Data
public class PrintCloudData {
private String taskId;
private String eOrder;
private String kuaidinum;
private String kuaidicom;
}

33
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/PrintHtmlData.java

@ -0,0 +1,33 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
import java.util.List;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 19:31
*/
@Data
public class PrintHtmlData {
/**
* html代码
*/
private List<String> template;
/**
* 快递单号
*/
private String kuaidinum;
/**
* 大头笔
*/
private String bulkpen;
/**
* 电子面单链接
*/
private List<String> templateurl;
/**
* 子单号
*/
private String childNum;
}

23
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/PrintHtmlResp.java

@ -0,0 +1,23 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
import java.util.List;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 19:29
*/
@Data
public class PrintHtmlResp {
private String taskId;
private String message;
private String status;
private boolean result;
private List<PrintHtmlData> data;
}

21
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/PrintImgData.java

@ -0,0 +1,21 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-17 18:52
*/
@Data
public class PrintImgData {
private String taskId;
private String eOrder;
private String kuaidinum;
private String kuaidicom;
private String imgBase64;
}

35
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/QueryTrackData.java

@ -0,0 +1,35 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-14 16:13
*/
@Data
public class QueryTrackData {
/**
* 时间原始格式
*/
private String time;
/**
* 物流轨迹节点内容
*/
private String context;
/**
* 格式化后时间
*/
private String ftime;
/**
* 行政区域的编码
*/
private String areaCode;
/**
* 行政区域的名称
*/
private String areaName;
/**
* 签收状态 (0在途1揽收2疑难3签收4退签5派件6退回7转投)
*/
private String status;
}

30
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/QueryTrackMapResp.java

@ -0,0 +1,30 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
import lombok.ToString;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-12-24 17:34
*/
@Data
@ToString(callSuper = true)
public class QueryTrackMapResp extends QueryTrackResp {
/**
* 轨迹地图链接
*/
private String trailUrl;
/**
* 预计到达时间
*/
private String arrivalTime;
/**
* 平均耗时
*/
private String totalTime;
/**
* 到达还需多少时间
*/
private String remainTime;
}

20
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/QueryTrackPosition.java

@ -0,0 +1,20 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-14 16:16
*/
@Data
public class QueryTrackPosition {
/**
* 地址编码
*/
private String number;
/**
* 地址名称
*/
private String name;
}

55
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/QueryTrackResp.java

@ -0,0 +1,55 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
import java.util.List;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-14 16:07
*/
@Data
public class QueryTrackResp {
/**
* 消息体请忽略
*/
private String message;
/**
* 快递单号
*/
private String nu;
/**
* 是否签收标记
*/
private String ischeck;
/**
* 快递公司编码,一律用小写字母
*/
private String com;
/**
* 通讯状态
*/
private String status;
/**
* 轨迹详情数组
*/
private List<QueryTrackData> data;
/**
* 快递单当前状态包括0在途1揽收2疑难3签收4退签5派件6退回7转投10待清关11清关中12已清关13清关异常14拒签等13个状态
*/
private String state;
/**
* 快递单明细状态标记
*/
private String condition;
private QueryTrackRouteInfo routeInfo;
/**
* 查不到轨迹或者其他问题返回码
*/
private String returnCode;
/**
* 查不到轨迹或者其他问题返回结果
*/
private boolean result;
}

23
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/QueryTrackRouteInfo.java

@ -0,0 +1,23 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-14 16:14
*/
@Data
public class QueryTrackRouteInfo {
/**
* 出发位置
*/
private QueryTrackPosition from;
/**
* 当前位置
*/
private QueryTrackPosition cur;
/**
* 收货地
*/
private QueryTrackPosition to;
}

19
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SendSmsResp.java

@ -0,0 +1,19 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-21 9:19
*/
@Data
public class SendSmsResp {
private Integer status;
private String data;
private String msg;
private Integer code;
}

27
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SmsCallbackData.java

@ -0,0 +1,27 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-21 10:05
*/
@Data
public class SmsCallbackData {
/**
* 传入的外部订单号
*/
private String outorder;
/**
* 附加信息
*/
private String message;
/**
* 短信发送状态发送成功发送失败接收成功接收失败
*/
private String status;
/**
* 返回校验信息MD5(id + phone + outorder)校验方式是MD5加密的模板ID+手机号+外部订单号用户可根据加密签名判断是否进行处理请求
*/
private String sign;
}

34
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SmsCallbackResp.java

@ -0,0 +1,34 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* 短信回调结果
*
* @Author: api.kuaidi100.com
* @Date: 2020-07-21 10:02
*/
@Data
public class SmsCallbackResp {
/**
* 状态值0-表示失败1-表示成功
*/
private Integer status;
/**
* 返回数据信息短信发送状态
*/
private SmsCallbackData data;
/**
* 信息内容返回具体的信息体描述
*/
private String msg;
/**
* 附加信息
*/
private String extra;
/**
* 该值表示所数据的总条数
*/
private Integer total;
}

35
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribePushData.java

@ -0,0 +1,35 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-08-28 14:24
*/
@Data
public class SubscribePushData {
/**
* 物流轨迹节点内容
*/
private String context;
/**
* 时间原始格式
*/
private String time;
/**
* 格式化后时间
*/
private String ftime;
/**
* 本数据元对应的签收状态只有在开通签收状态服务见上面"status"后的说明且在订阅接口中提交resultv2标记后才会出现
*/
private String status;
/**
* 本数据元对应的行政区域的编码只有在开通签收状态服务见上面"status"后的说明且在订阅接口中提交resultv2标记后才会出现
*/
private String areaCode;
/**
* 本数据元对应的行政区域的名称开通签收状态服务见上面"status"后的说明且在订阅接口中提交resultv2标记后才会出现
*/
private String areaName;
}

50
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribePushParamResp.java

@ -0,0 +1,50 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-08-28 14:23
*/
@Data
public class SubscribePushParamResp {
/**
* 监控状态:polling:监控中shutdown:结束abort:中止updateall重新推送
* 其中当快递单为已签收时status=shutdown当message为3天查询无记录60天无变化时status= abort 对于stuatus=abort的状态
* 需要增加额外的处理逻辑若贵司校验快递公司编码和单号无误后仍需继续跟踪则隔半小时再发起该单的订阅即可
*/
private String status;
/**
* 包括gotsendingcheck三个状态由于意义不大已弃用请忽略
*/
private String billstatus;
/**
* 监控状态相关消息:3天查询无记录60天无变化
*/
private String message;
/**
* 快递公司编码是否出错0为本推送信息对应的是贵司提交的原始快递公司编码1为本推送信息对应的是我方纠正后的新的快递公司编码
* 一个单如果我们连续3天都查不到结果我方会
* 1判断一次贵司提交的快递公司编码是否正确如果正确给贵司的回调接口callbackurl推送带有如下字段的信息autoCheck=0comOld与comNew都为空
* 2如果贵司提交的快递公司编码出错我们会帮忙用正确的快递公司编码+原来的运单号重新提交订阅并开启监控后续如果监控到单号有更新就给贵司的回调接口callbackurl
* 推送带有如下字段的信息autoCheck=1comOld=原来的公司编码comNew=新的公司编码
* 并且给贵方的回调接口callbackurl推送一条含有如下字段的信息status=abortautoCheck=0comOld为空comNew=纠正后的快递公司编码
*/
private String autoCheck;
/**
* 贵司提交的原始的快递公司编码详细见autoCheck后说明若开启了国际版即在订阅请求中增加字段interCom=1则回调请求中暂无此字段
*/
private String comOld;
/**
* 我司纠正后的新的快递公司编码详细见autoCheck后说明若开启了国际版即在订阅请求中增加字段interCom=1则回调请求中暂无此字段
*/
private String comNew;
/**
* 最新查询结果若在订阅报文中通过interCom字段开通了国际版则此lastResult表示出发国的查询结果全量倒序即时间最新的在最前
*/
private SubscribePushResult lastResult;
/**
* 表示最新的目的国家的查询结果只有在订阅报文中通过interCom=1字段开通了国际版才会显示此数据元全量倒序即时间最新的在最前
*/
private SubscribePushResult destResult;
}

45
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribePushResult.java

@ -0,0 +1,45 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
import java.util.List;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-08-28 14:24
*/
@Data
public class SubscribePushResult {
/**
* 消息体请忽略
*/
private String message;
/**
* 快递单当前状态包括0在途1揽收2疑难3签收4退签5派件6退回7转投等8个状态
*/
private String state;
/**
* 通讯状态请忽略
*/
private String status;
/**
* 快递单明细状态标记暂未实现请忽略
*/
private String condition;
/**
* 是否签收标记
*/
private String ischeck;
/**
* 快递公司编码,一律用小写字母点击查看快递公司编码
*/
private String com;
/**
* 快递单号
*/
private String nu;
/**
* 数组包含多个对象每个对象字段如展开所示
*/
private List<SubscribePushData> data;
}

17
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribeResp.java

@ -0,0 +1,17 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-07-16 19:18
*/
@Data
public class SubscribeResp {
private boolean result;
private String returnCode;
private String message;
}

46
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribeWithMapPushParamResp.java

@ -0,0 +1,46 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-08-28 14:23
*/
@Data
public class SubscribeWithMapPushParamResp {
/**
* 监控状态:polling:监控中shutdown:结束abort:中止updateall重新推送
* 其中当快递单为已签收时status=shutdown当message为3天查询无记录60天无变化时status= abort 对于stuatus=abort的状态
* 需要增加额外的处理逻辑若贵司校验快递公司编码和单号无误后仍需继续跟踪则隔半小时再发起该单的订阅即可
*/
private String status;
/**
* 包括gotsendingcheck三个状态由于意义不大已弃用请忽略
*/
private String billstatus;
/**
* 监控状态相关消息:3天查询无记录60天无变化
*/
private String message;
/**
* 快递公司编码是否出错0为本推送信息对应的是贵司提交的原始快递公司编码1为本推送信息对应的是我方纠正后的新的快递公司编码
* 一个单如果我们连续3天都查不到结果我方会
* 1判断一次贵司提交的快递公司编码是否正确如果正确给贵司的回调接口callbackurl推送带有如下字段的信息autoCheck=0comOld与comNew都为空
* 2如果贵司提交的快递公司编码出错我们会帮忙用正确的快递公司编码+原来的运单号重新提交订阅并开启监控后续如果监控到单号有更新就给贵司的回调接口callbackurl
* 推送带有如下字段的信息autoCheck=1comOld=原来的公司编码comNew=新的公司编码
* 并且给贵方的回调接口callbackurl推送一条含有如下字段的信息status=abortautoCheck=0comOld为空comNew=纠正后的快递公司编码
*/
private String autoCheck;
/**
* 贵司提交的原始的快递公司编码详细见autoCheck后说明若开启了国际版即在订阅请求中增加字段interCom=1则回调请求中暂无此字段
*/
private String comOld;
/**
* 我司纠正后的新的快递公司编码详细见autoCheck后说明若开启了国际版即在订阅请求中增加字段interCom=1则回调请求中暂无此字段
*/
private String comNew;
/**
* 最新查询结果若在订阅报文中通过interCom字段开通了国际版则此lastResult表示出发国的查询结果全量倒序即时间最新的在最前
*/
private SubscribeWithMapPushResult lastResult;
}

65
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/SubscribeWithMapPushResult.java

@ -0,0 +1,65 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Data;
import java.util.List;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-08-28 14:24
*/
@Data
public class SubscribeWithMapPushResult {
/**
* 消息体请忽略
*/
private String message;
/**
* 快递单当前状态包括0在途1揽收2疑难3签收4退签5派件6退回7转投等8个状态
*/
private String state;
/**
* 通讯状态请忽略
*/
private String status;
/**
* 快递单明细状态标记暂未实现请忽略
*/
private String condition;
/**
* 是否签收标记
*/
private String ischeck;
/**
* 快递公司编码,一律用小写字母点击查看快递公司编码
*/
private String com;
/**
* 快递单号
*/
private String nu;
/**
* 数组包含多个对象每个对象字段如展开所示
*/
private List<SubscribePushData> data;
/**
* 轨迹地图链接
*/
private String trailUrl;
/**
* 预计到达时间
*/
private String arrivalTime;
/**
* 平均耗时
*/
private String totalTime;
/**
* 到达还需多少时间
*/
private String remainTime;
/**
* 路由信息
*/
private QueryTrackRouteInfo routeInfo;
}

21
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/ThirdAuthResp.java

@ -0,0 +1,21 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response;
import lombok.Getter;
import lombok.Setter;
/**
* @Author: api.kuaidi100.com
* @Date: 2021-01-06 14:24
*/
@Getter
@Setter
public class ThirdAuthResp {
// 授权链接
private String url;
// 面单需要的partnerKey
private String partnerKey;
// 面单需要的parterId
private String parterId;
// 面单需要的net
private String net;
}

20
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/cloud/COrderRespData.java

@ -0,0 +1,20 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response.cloud;
import lombok.Data;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-10-27 16:00
*/
@Data
public class COrderRespData {
/**
* 任务id
*/
private String taskId;
/**
* 快递100返回给您的平台订单id
*/
private String orderId;
}

20
zsw-bxg/src/main/java/co/yixiang/tools/utils/kuaidi100/sdk/response/cloud/CloudBaseResp.java

@ -0,0 +1,20 @@
package co.yixiang.tools.utils.kuaidi100.sdk.response.cloud;
/**
* @Author: api.kuaidi100.com
* @Date: 2020-10-27 15:58
*/
public class CloudBaseResp<T> {
/**
* 响应码
*/
private String code;
/**
* 响应结果描述
*/
private String message;
/**
* 响应数据
*/
private T data;
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save