liujs 3 lat temu
rodzic
commit
2f420ebf39
100 zmienionych plików z 5602 dodań i 1 usunięć
  1. 3 0
      .gitignore
  2. 38 0
      .gitlab-ci.yml
  3. 8 0
      Dockerfile
  4. 2 1
      README.md
  5. 167 0
      pom.xml
  6. 15 0
      src/main/java/com/bs/logisticslnfoapi/LogisticslnfoApiApplication.java
  7. 94 0
      src/main/java/com/bs/logisticslnfoapi/aspect/ControllerAspect.java
  8. 35 0
      src/main/java/com/bs/logisticslnfoapi/bean/ApiLog.java
  9. 36 0
      src/main/java/com/bs/logisticslnfoapi/bean/BestLogisticsBean.java
  10. 16 0
      src/main/java/com/bs/logisticslnfoapi/bean/BsPointParam.java
  11. 24 0
      src/main/java/com/bs/logisticslnfoapi/bean/HaiKangOutboundBean.java
  12. 24 0
      src/main/java/com/bs/logisticslnfoapi/bean/LogisticsBean.java
  13. 41 0
      src/main/java/com/bs/logisticslnfoapi/bean/LogisticsParam.java
  14. 15 0
      src/main/java/com/bs/logisticslnfoapi/bean/LogisticsResult.java
  15. 20 0
      src/main/java/com/bs/logisticslnfoapi/bean/ReqBestLogisticsBean.java
  16. 18 0
      src/main/java/com/bs/logisticslnfoapi/bean/ReqHaiKangOutboundBean.java
  17. 47 0
      src/main/java/com/bs/logisticslnfoapi/bean/ResultBean.java
  18. 10 0
      src/main/java/com/bs/logisticslnfoapi/bean/ResultInfoBean.java
  19. 13 0
      src/main/java/com/bs/logisticslnfoapi/bean/StGetPhoneParam.java
  20. 10 0
      src/main/java/com/bs/logisticslnfoapi/bean/StGetPhoneResParm.java
  21. 23 0
      src/main/java/com/bs/logisticslnfoapi/bean/StatusPushParam.java
  22. 27 0
      src/main/java/com/bs/logisticslnfoapi/bean/UpdateBestLogisticsBean.java
  23. 21 0
      src/main/java/com/bs/logisticslnfoapi/bean/YuantongBean.java
  24. 33 0
      src/main/java/com/bs/logisticslnfoapi/bean/YuantongInboundBean.java
  25. 34 0
      src/main/java/com/bs/logisticslnfoapi/bean/YuantongOutboundBean.java
  26. 76 0
      src/main/java/com/bs/logisticslnfoapi/bean/YuantongReturnBean.java
  27. 35 0
      src/main/java/com/bs/logisticslnfoapi/bean/YuantongShelvesBean.java
  28. 31 0
      src/main/java/com/bs/logisticslnfoapi/bean/YuantongSyAcPersonBean.java
  29. 43 0
      src/main/java/com/bs/logisticslnfoapi/bean/YuantongSyStoreBean.java
  30. 26 0
      src/main/java/com/bs/logisticslnfoapi/bean/YuantongSyUpStoreBean.java
  31. 40 0
      src/main/java/com/bs/logisticslnfoapi/bean/YunDaBean.java
  32. 75 0
      src/main/java/com/bs/logisticslnfoapi/bean/YunDaSyStoreBean.java
  33. 16 0
      src/main/java/com/bs/logisticslnfoapi/bean/ZtPointParam.java
  34. 60 0
      src/main/java/com/bs/logisticslnfoapi/bean/alibb/AliBaBaSmsStatusReportBean.java
  35. 26 0
      src/main/java/com/bs/logisticslnfoapi/bean/alibb/AlibbQuerySmsDetailsRequest.java
  36. 56 0
      src/main/java/com/bs/logisticslnfoapi/bean/alibb/AlibbSendSmsRequest.java
  37. 24 0
      src/main/java/com/bs/logisticslnfoapi/bean/cainiao/CaiNiaoReceiveRequest.java
  38. 20 0
      src/main/java/com/bs/logisticslnfoapi/bean/cainiao/CaiNiaoReceiveResponse.java
  39. 13 0
      src/main/java/com/bs/logisticslnfoapi/bean/cainiao/CaiNiaoRequest.java
  40. 40 0
      src/main/java/com/bs/logisticslnfoapi/bean/cainiao/CaiNiaoRequestUser.java
  41. 51 0
      src/main/java/com/bs/logisticslnfoapi/bean/cainiao/CaiNiaoWaybillQuery.java
  42. 20 0
      src/main/java/com/bs/logisticslnfoapi/bean/cainiao/ExtendField.java
  43. 99 0
      src/main/java/com/bs/logisticslnfoapi/bean/cainiao/Trace.java
  44. 29 0
      src/main/java/com/bs/logisticslnfoapi/bean/cainiao/TraceElement.java
  45. 79 0
      src/main/java/com/bs/logisticslnfoapi/bean/jhy/JhyPhone.java
  46. 130 0
      src/main/java/com/bs/logisticslnfoapi/bean/jhy/JhyPhonePushRequest.java
  47. 62 0
      src/main/java/com/bs/logisticslnfoapi/bean/jhy/JhyPhoneStateRequest.java
  48. 17 0
      src/main/java/com/bs/logisticslnfoapi/bean/jitu/JiTuBean.java
  49. 83 0
      src/main/java/com/bs/logisticslnfoapi/bean/jitu/JiTuDeliveryCabinetDTO.java
  50. 32 0
      src/main/java/com/bs/logisticslnfoapi/bean/jitu/JiTuRequestBean.java
  51. 22 0
      src/main/java/com/bs/logisticslnfoapi/bean/jitu/JiTuResponseBean.java
  52. 68 0
      src/main/java/com/bs/logisticslnfoapi/bean/pdd/CabinetInfoRequest.java
  53. 44 0
      src/main/java/com/bs/logisticslnfoapi/bean/pdd/InOutBound.java
  54. 44 0
      src/main/java/com/bs/logisticslnfoapi/bean/pdd/InOutBoundRequest.java
  55. 30 0
      src/main/java/com/bs/logisticslnfoapi/bean/pdd/OrderQueryInfo.java
  56. 18 0
      src/main/java/com/bs/logisticslnfoapi/bean/pdd/OrderQueryResponse.java
  57. 17 0
      src/main/java/com/bs/logisticslnfoapi/bean/pdd/PddRequest.java
  58. 18 0
      src/main/java/com/bs/logisticslnfoapi/bean/pdd/PddResponse.java
  59. 27 0
      src/main/java/com/bs/logisticslnfoapi/bean/pdd/PddSendSmsData.java
  60. 32 0
      src/main/java/com/bs/logisticslnfoapi/bean/pdd/PddSmsReceiptRequest.java
  61. 79 0
      src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongBean.java
  62. 34 0
      src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongDeliveryCallbackBean.java
  63. 92 0
      src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongEndpointInfoBean.java
  64. 47 0
      src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongOpreationEndpointListBean.java
  65. 38 0
      src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongPageListBean.java
  66. 53 0
      src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongRequestBean.java
  67. 33 0
      src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongResponseBean.java
  68. 18 0
      src/main/java/com/bs/logisticslnfoapi/bean/smsplatform/SendSmsRequest.java
  69. 68 0
      src/main/java/com/bs/logisticslnfoapi/bean/smsplatform/mengwang/MengWangSendSmsBean.java
  70. 45 0
      src/main/java/com/bs/logisticslnfoapi/bean/smsplatform/mengwang/MengWangSmsStatusReportBean.java
  71. 15 0
      src/main/java/com/bs/logisticslnfoapi/bean/youxiansheng/YouXianShengGetPhoneParam.java
  72. 23 0
      src/main/java/com/bs/logisticslnfoapi/bean/yunda/YunDaRegisterSysBean.java
  73. 127 0
      src/main/java/com/bs/logisticslnfoapi/bean/yunda/utils/ApiUtils.java
  74. 35 0
      src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/SmsReturnRequest.java
  75. 129 0
      src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZhongTongBackRequest.java
  76. 17 0
      src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZhongTongRequest.java
  77. 15 0
      src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZhongTongStateGroup.java
  78. 58 0
      src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZhongTongStoreSynRequest.java
  79. 28 0
      src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZhongTongStoreSynResponse.java
  80. 21 0
      src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZtoQueryMobileRequest.java
  81. 28 0
      src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZtoReceiveRequest.java
  82. 36 0
      src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZtoSendSmsRequest.java
  83. 120 0
      src/main/java/com/bs/logisticslnfoapi/controller/AlibbController.java
  84. 270 0
      src/main/java/com/bs/logisticslnfoapi/controller/CaiNiaoController.java
  85. 56 0
      src/main/java/com/bs/logisticslnfoapi/controller/JhyController.java
  86. 129 0
      src/main/java/com/bs/logisticslnfoapi/controller/JiTuController.java
  87. 754 0
      src/main/java/com/bs/logisticslnfoapi/controller/LogisticsController.java
  88. 193 0
      src/main/java/com/bs/logisticslnfoapi/controller/ShenTongController.java
  89. 58 0
      src/main/java/com/bs/logisticslnfoapi/controller/YouXianShengController.java
  90. 74 0
      src/main/java/com/bs/logisticslnfoapi/controller/YunDaController.java
  91. 59 0
      src/main/java/com/bs/logisticslnfoapi/controller/ZtoController.java
  92. 40 0
      src/main/java/com/bs/logisticslnfoapi/exceptions/APIBusinessException.java
  93. 59 0
      src/main/java/com/bs/logisticslnfoapi/exceptions/BaseException.java
  94. 39 0
      src/main/java/com/bs/logisticslnfoapi/exceptions/BusinessException.java
  95. 20 0
      src/main/java/com/bs/logisticslnfoapi/factory/smsPlatform/BaseSmsPlatform.java
  96. 28 0
      src/main/java/com/bs/logisticslnfoapi/factory/smsPlatform/SmsPlatformFactory.java
  97. 150 0
      src/main/java/com/bs/logisticslnfoapi/factory/smsPlatform/realize/AliBaBa.java
  98. 89 0
      src/main/java/com/bs/logisticslnfoapi/factory/smsPlatform/realize/MengWang.java
  99. 32 0
      src/main/java/com/bs/logisticslnfoapi/service/jhy/JhyService.java
  100. 116 0
      src/main/java/com/bs/logisticslnfoapi/service/jhy/impl/JhyServiceImpl.java

+ 3 - 0
.gitignore

@@ -0,0 +1,3 @@
+*.iml
+.idea/
+target/

+ 38 - 0
.gitlab-ci.yml

@@ -0,0 +1,38 @@
+# 定义流水线阶段,在这里我们分为打包、检查运行环境、部署三个阶段,分别为:package/check-env/deploy
+stages:
+  - package
+  - build_image
+  - push_image
+
+# 定义所需变量
+variables:
+  FILE_NAME: logisticslnfo-api-0.0.1-SNAPSHOT.jar
+  REGISTRY_URI: ybd2021-registry.cn-shanghai.cr.aliyuncs.com
+  REGISTRY_NAMESPACE: production
+  CI_REGISTRY_USER: why@1563149204495493
+  CI_REGISTRY_PASSWORD: youbaidi@2021
+
+# 打包项目公共阶段
+步骤1:打包项目:
+  stage: package
+  only:
+    - tags
+  tags:
+    - maven
+  script:
+    - mvn clean package -Dmaven.test.skip=true -P pro
+  artifacts:
+    paths:
+      - target/$FILE_NAME
+
+步骤2:制作镜像:
+  stage: build_image
+  only:
+    - tags
+  tags:
+    - docker-env
+  script:
+    - sudo docker build -t $CI_PROJECT_NAME:$CI_COMMIT_REF_NAME .
+    - sudo docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $REGISTRY_URI
+    - sudo docker tag $CI_PROJECT_NAME:$CI_COMMIT_REF_NAME $REGISTRY_URI/$REGISTRY_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME
+    - sudo docker push $REGISTRY_URI/$REGISTRY_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME

+ 8 - 0
Dockerfile

@@ -0,0 +1,8 @@
+FROM openjdk:8-jdk-alpine
+
+ENV TZ='Asia/Shanghai'
+
+ADD target/logisticslnfo-api-0.0.1-SNAPSHOT.jar app.jar
+
+CMD ["java", "-server", "-Djava.security.egd=file:/dev/./urandom", "-Xms256m", "-Xmx512m", "-jar", "app.jar"]
+# docker build --build-arg environment=production Dockerfile .

+ 2 - 1
README.md

@@ -1,2 +1,3 @@
-# logisticsInfo-api
+# logisticslnfo-api
 
+所有对外请求,包括合作快递公司/平台 短信平台等

+ 167 - 0
pom.xml

@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.0.6.RELEASE</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <groupId>com.bs</groupId>
+    <artifactId>logisticslnfo-api</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>logisticslnfo-api</name>
+    <description>Demo project for Spring Boot</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+
+        <repositories>
+        <repository>
+            <id>zto-maven</id>
+            <url>https://dl.bintray.com/chocotan/maven</url>
+        </repository>
+    <!--
+         <repository>
+             <id>nexus3-fengzhan100</id>
+             <name>maven-fhm-3rd</name>
+             <url>http://nexus3.fengzhan100.com/repository/maven-fhm-3rd/</url>
+         </repository>-->
+     </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.dom4j</groupId>
+            <artifactId>dom4j</artifactId>
+            <version>2.1.1</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.10</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.31</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>fluent-hc</artifactId>
+            <version>4.5.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.17</version>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-beanutils</groupId>
+            <artifactId>commons-beanutils</artifactId>
+            <version>1.9.1</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+            <version>3.11.0</version>
+        </dependency>
+        <!-- aop -->
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+            <version>1.8.3</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.5</version>
+        </dependency>
+        <!-- 中通sdk -->
+        <dependency>
+            <groupId>com.zto.zop</groupId>
+            <artifactId>zopsdk</artifactId>
+            <version>0.4</version>
+        </dependency>
+        <!-- 申通sdk -->
+        <dependency>
+            <groupId>com.link.sdk</groupId>
+            <artifactId>sto-link-sdk</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <!-- 拼多多 -->
+        <dependency>
+            <groupId>com.parksong.pdd</groupId>
+            <artifactId>pdd-sdk</artifactId>
+            <version>1.0.1</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/pop-sdk-1.1.4.jar</systemPath>
+        </dependency>
+        <!--阿里云Java SDK核心库(短信服务)-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>4.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+        </dependency>
+        <!-- 阿里云AMQP -->
+        <dependency>
+            <groupId>com.rabbitmq</groupId>
+            <artifactId>amqp-client</artifactId>
+            <version>5.5.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.mq-amqp</groupId>
+            <artifactId>mq-amqp-client</artifactId>
+            <version>1.0.5</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <!-- 作用:项目打成jar的同时将本地jar包也引入进去 -->
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 15 - 0
src/main/java/com/bs/logisticslnfoapi/LogisticslnfoApiApplication.java

@@ -0,0 +1,15 @@
+package com.bs.logisticslnfoapi;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+@SpringBootApplication
+@EnableAsync
+public class LogisticslnfoApiApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(LogisticslnfoApiApplication.class, args);
+    }
+
+}

+ 94 - 0
src/main/java/com/bs/logisticslnfoapi/aspect/ControllerAspect.java

@@ -0,0 +1,94 @@
+package com.bs.logisticslnfoapi.aspect;
+
+import com.bs.logisticslnfoapi.bean.ResultBean;
+import com.bs.logisticslnfoapi.exceptions.APIBusinessException;
+import com.bs.logisticslnfoapi.exceptions.BusinessException;
+import com.bs.logisticslnfoapi.util.Md5Util;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName ControllerAspect
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/5 0005 上午 11:31
+ * @Version 1.0
+ **/
+@Component
+@Aspect
+@Slf4j
+public class ControllerAspect {
+
+    @Value("${hdappKey}")
+    private String appkey;
+
+    @Value("${hdappScrect}")
+    private String appscrect;
+
+    @Value("${hdversion}")
+    private String version;
+
+    @Around("execution(* com.bs.logisticslnfoapi.controller.JhyController.addPhone(..))")
+    public Object around(ProceedingJoinPoint pjp){
+        long startTime = System.currentTimeMillis();
+        ResultBean<?> result;
+        try {
+            Object[] args = pjp.getArgs();
+            //参数验证
+            paramVerify(args);
+            result = (ResultBean<?>) pjp.proceed();
+            log.info(pjp.getSignature() + "use time:" + (System.currentTimeMillis() - startTime));
+        } catch (Throwable e) {
+            result = handlerException(pjp, e);
+        }
+        return result;
+    }
+
+    /**
+     * 参数验证
+     * @param args
+     * @throws Exception
+     */
+    private void paramVerify(Object[] args) throws Exception {
+        if(args[0] == null){
+            throw new APIBusinessException("appkey不能为空");
+        }else if(args[1] == null){
+            throw new APIBusinessException("version不能为空");
+        }else if(args[2] == null){
+            throw new APIBusinessException("data不能为空");
+        }else if(args[3] == null){
+            throw new APIBusinessException("sign不能为空");
+        }else if(!appkey.equals(args[0].toString())){
+            throw new APIBusinessException("appkey错误");
+        }else if(!version.equals(args[1].toString())){
+            throw new APIBusinessException("version错误");
+        }else if(!Md5Util.doSign(args[2].toString()+appscrect).equals(args[3])){
+            throw new APIBusinessException("sign错误");
+        }
+        log.info("paramVerify----------------->:参数验证成功");
+    }
+
+    private ResultBean<?> handlerException(ProceedingJoinPoint pjp, Throwable e) {
+        ResultBean<?> result = new ResultBean();
+
+        // 已知异常
+        if (e instanceof APIBusinessException){
+            log.error(pjp.getSignature() + " error ", e);
+            result.setMsg(e.getMessage());
+            result.setCode(ResultBean.FAIL);
+        } else if(e instanceof BusinessException){
+            log.error(pjp.getSignature() + " error ", e);
+            result.setMsg(e.toString());
+            result.setCode(ResultBean.FAIL);
+        } else if(e instanceof Exception){
+            log.error(pjp.getSignature() + " error ", e);
+            result.setMsg("系统错误");
+            result.setCode(ResultBean.SYSFAIL);
+        }
+        return result;
+    }
+}

+ 35 - 0
src/main/java/com/bs/logisticslnfoapi/bean/ApiLog.java

@@ -0,0 +1,35 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 〈功能概述〉<br>
+ *
+ * @className: ApiLog
+ * @package: com.bs.logisticslnfoapi.bean
+ * @author: kael
+ * @date: 2019/10/23 0023 上午 9:40
+ */
+@Data
+@Builder
+public class ApiLog {
+
+    private Integer id;
+    private String requestMsg;
+    private String responseMsg;
+    private Date createTime;
+    private String url;
+    private Integer storeId;
+    /**
+     * 请求类型,1:系统发起请求,2:第三方发起请求
+     */
+    private Integer requestType;
+    private String platform;
+    private Integer exTime;
+    private String spare1;
+    private String spare2;
+    private String spare3;
+}

+ 36 - 0
src/main/java/com/bs/logisticslnfoapi/bean/BestLogisticsBean.java

@@ -0,0 +1,36 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class BestLogisticsBean {
+    //服务点编码
+    private String cabinetCode;
+    //服务点名称
+    private String serviceSiteName;
+    //服务点电话
+    private String phone;
+    //服务点所在省
+    private String  province;
+    //服务点所在市
+    private String city;
+    //服务点所在区
+    private String county;
+    //服务点详细地址
+    private String address;
+    //服务提供商ID
+    private String cabinetSpId;
+    //服务提供商编码
+    private String cabinetSpCode;
+    //服务提供商名称
+    private String  cabinetSpName;
+    //经度
+    private String longitude;
+    //纬度
+    private String latitude;
+    //启用状态
+    private String state;
+    //备注
+    private String remark;
+
+}

+ 16 - 0
src/main/java/com/bs/logisticslnfoapi/bean/BsPointParam.java

@@ -0,0 +1,16 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class BsPointParam {
+
+    private String addressNo;
+    private String province;
+    private String city;
+    private String county;
+    private String street;
+    private String communityName;
+    private String phone;
+    private String officer;
+}

+ 24 - 0
src/main/java/com/bs/logisticslnfoapi/bean/HaiKangOutboundBean.java

@@ -0,0 +1,24 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class HaiKangOutboundBean {
+    //门店ID
+    private String storeId;
+    //运单号
+    private String expCode;
+    //状态推送时间
+    private String requestTime;
+    //货架ID
+    private String shelfId;
+    //快递公司ID
+    private String expId;
+    //电话
+    private String telPhone;
+    //取货码
+    private String shelfCode;
+    //是否入库(默认传“”/yes(入库)/no(不入库)
+    private String whiteIsInbound;
+
+}

+ 24 - 0
src/main/java/com/bs/logisticslnfoapi/bean/LogisticsBean.java

@@ -0,0 +1,24 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+/**
+ * @author taohaijun
+ * @Description:
+ * @date 2019/3/7 16:47
+ */
+@Data
+public class LogisticsBean {
+    private String mailNos;
+    private String cnOrderCode;
+    private String time;
+    private String desc;
+    private String action;
+    private String city;
+    private String stationName;
+    private String stationContact;
+    private String stationSource;
+    private String partnerName;
+    private String stationId;
+    private String authCode;
+}

+ 41 - 0
src/main/java/com/bs/logisticslnfoapi/bean/LogisticsParam.java

@@ -0,0 +1,41 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+/**
+ * @author taohaijun
+ * @Description:
+ * @date 2019/3/8 9:21
+ */
+@Data
+public class LogisticsParam {
+    private String msg_type;
+    private String msg_id;
+    private String from_code;
+    private String partner_code;
+    private String data_digest;
+    //private String logistics_interface;
+    private String mailNos;
+
+    private String cnOrderCode;
+
+    private String time;
+
+    private String desc;
+
+    private String action;
+
+    private String city;
+
+    private String stationName;
+
+    private String stationContact;
+
+    private String stationId;
+
+    private String stationSource;
+
+    private String partnerName;
+
+    private String authCode;
+}

+ 15 - 0
src/main/java/com/bs/logisticslnfoapi/bean/LogisticsResult.java

@@ -0,0 +1,15 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+/**
+ * @author taohaijun
+ * @Description:
+ * @date 2019/3/7 16:58
+ */
+@Data
+public class LogisticsResult {
+    private boolean success;
+    private String errorCode;
+    private String errorMsg;
+}

+ 20 - 0
src/main/java/com/bs/logisticslnfoapi/bean/ReqBestLogisticsBean.java

@@ -0,0 +1,20 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class ReqBestLogisticsBean {
+    //请求快递单数据
+    private Map<String ,List<BestLogisticsBean>> bizData;
+    //业务接口类型UpdateStatusByMailNo
+    private String serviceType;
+    //合作伙伴ID
+    private String partnerID;
+    //签名
+    private String digest;
+    //根据合作伙伴ID得到的partnerKey
+    private String partnerKey;
+}

+ 18 - 0
src/main/java/com/bs/logisticslnfoapi/bean/ReqHaiKangOutboundBean.java

@@ -0,0 +1,18 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class ReqHaiKangOutboundBean {
+    //请求快递单数据
+    private HaiKangOutboundBean bizData;
+    //业务接口类型UpdateStatusByMailNo
+    private String serviceType;
+    //合作伙伴ID
+    private String partnerID;
+    //签名
+    private String digest;
+}

+ 47 - 0
src/main/java/com/bs/logisticslnfoapi/bean/ResultBean.java

@@ -0,0 +1,47 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName ResultBean
+ * @Description 统一管理bean,controller专用
+ * @Author kael
+ * @Date 2019/6/27 0027 上午 11:22
+ * @Version 1.0
+ **/
+@Data
+public class ResultBean<T> implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    public static final int SYSFAIL = -1;
+
+    public static final int SUCCESS = 0;
+
+    public static final int FAIL = 1;
+
+    public static final int NO_PERMISSION = 2;
+
+    private String msg = "请求成功";
+
+    private int code = SUCCESS;
+
+    private T data;
+
+    public ResultBean() {
+        super();
+    }
+
+    public ResultBean(T data) {
+        super();
+        this.data = data;
+    }
+
+    public ResultBean(Throwable e) {
+        super();
+        this.msg = e.toString();
+        this.code = FAIL;
+    }
+}

+ 10 - 0
src/main/java/com/bs/logisticslnfoapi/bean/ResultInfoBean.java

@@ -0,0 +1,10 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class ResultInfoBean {
+
+    private String resultCode;
+    private String resultMessage;
+}

+ 13 - 0
src/main/java/com/bs/logisticslnfoapi/bean/StGetPhoneParam.java

@@ -0,0 +1,13 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class StGetPhoneParam {
+    private String waybillNo;
+    private String appid;
+    private String timestamp;
+    private String key;
+    private String nonce;
+
+}

+ 10 - 0
src/main/java/com/bs/logisticslnfoapi/bean/StGetPhoneResParm.java

@@ -0,0 +1,10 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class StGetPhoneResParm {
+    private String status;
+    private String code;
+    private String data;
+}

+ 23 - 0
src/main/java/com/bs/logisticslnfoapi/bean/StatusPushParam.java

@@ -0,0 +1,23 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class StatusPushParam {
+
+    private String billNo;
+    private String orderId;
+    private String province;
+    private String city;
+    private String county;
+    private String carriers;
+    private String zkCode;
+    private String communityNo;
+    private String phone;
+    private String recContactway;
+    private String salemanName;
+    private String contactway;
+    private String communityName;
+    private String methodName;
+    private String Canceltype;
+}

+ 27 - 0
src/main/java/com/bs/logisticslnfoapi/bean/UpdateBestLogisticsBean.java

@@ -0,0 +1,27 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class UpdateBestLogisticsBean {
+
+    //快递公司代码
+    private String operator;
+    //交易号,标记各状态消息所属的投递流程,全局唯一,建议使用UUID或(服务商编码+本地唯一串)
+    private String transactionCode;
+    //服务提供商代码
+    private String serviceProviderCode;
+    //运单号
+    private String  billCode;
+    //服务点编号
+    private String serviceSiteCode;
+    //状态 S01,快递员已投递包裹至快递柜 S02,收件人已取货 S03,包裹无人收取快递员退回包裹 S04,用户拒收快递员退回包裹
+    private String status;
+    //备注
+    private String remark;
+    //状态推送时间(YYYY-MM-DD HH24:MI:SS)
+    private String requestTime;
+    //取件码
+    private String password;
+
+}

+ 21 - 0
src/main/java/com/bs/logisticslnfoapi/bean/YuantongBean.java

@@ -0,0 +1,21 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class YuantongBean {
+    //驿站操作平台报文[XML]
+    private String logistics_interface;
+    //数字签名
+    private String data_digest;
+    //客户编码
+    private String customer_code;
+    //操作编码
+    private String op_code;
+    //驿站类型
+    private String station_type;
+    //所属网点编号
+    private String org_code;
+    //秘钥
+    private String key;
+}

+ 33 - 0
src/main/java/com/bs/logisticslnfoapi/bean/YuantongInboundBean.java

@@ -0,0 +1,33 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class YuantongInboundBean {
+    //运单号
+    private String waybillNo;
+    //操作码
+    private String opCode;
+    //操作时间
+    private String opTime;
+    //操作人账户
+    private String  opUserId;
+    //上一网点:通常指所属网点
+    private String previousOrgCode;
+    //业务员工号
+    private String empCode;
+    //取货码
+    private String takeCode;
+    //频次(否)
+    private String frequencyNo;
+    //所属网点编号(否)
+    private String orgCode;
+    //快递公司编号:BLC00001
+    private String logisticsCode;
+    //驿站编号
+    private String stationCode;
+    //客户渠道编码
+    private String  customerCode;
+
+
+}

+ 34 - 0
src/main/java/com/bs/logisticslnfoapi/bean/YuantongOutboundBean.java

@@ -0,0 +1,34 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class YuantongOutboundBean {
+
+    //运单号
+    private String waybillNo;
+    //操作码
+    private String opCode;
+    //操作时间
+    private String opTime;
+    //操作人账户
+    private String  opUserId;
+    //所属网点编号(否)
+    private String orgCode;
+    //签收人姓名(否)
+    private String recieverSigNoff;
+    //签收失败原因编号:签收失败必填(否)
+    private String deliveryFallReasonCode;
+    //签收失败原因:签收失败必填(否)
+    private String deliveryFallReason;
+    //快递公司编号:BLC00001
+    private String logisticsCode;
+    //驿站编号
+    private String stationCode;
+    //客户渠道编码
+    private String  customerCode;
+    //签收人手机号码
+    private String  recieverPhone;
+
+
+}

+ 76 - 0
src/main/java/com/bs/logisticslnfoapi/bean/YuantongReturnBean.java

@@ -0,0 +1,76 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+/**
+ * @ClassName YuantongReturnBean
+ * @Description 通知回执接口
+ * @Author kael
+ * @Date 2019/7/5 0005 下午 17:04
+ * @Version 1.0
+ **/
+@Data
+public class YuantongReturnBean {
+
+    /**
+     *  运单号
+     */
+    private String waybillNo;
+    /**
+     * 驿站编号
+     */
+    private String stationCode;
+    /**
+     * 客户渠道编码
+     */
+    private String customerCode;
+    /**
+     * 上一网点编号
+     */
+    private String previousOrgCode = "999999";
+
+    /**
+     * 所属网点编号
+     */
+    private String orgCode = "999999";
+    /**
+     * 快递公司编号:BLC00001
+     */
+    private String logisticsCode = "BLC00001";
+    /**
+     * 回执方式:DX(短信)/YY(语音)/(WX)微信,通知
+     * 方式只能是三种中的一种
+     */
+    private String receiptType = "DX";
+
+    /**
+     * 回执结果:1:失败,0:成功
+     */
+    private String receiptResult = "0";
+
+    /**
+     * 当回执结果为1(失败)时,失败原因必填
+     */
+    private String receiptFailReason;
+    /**
+     * 操作时间
+     */
+    private String opTime;
+    /**
+     * 回执时间
+     */
+    private String receiptTime;
+    /**
+     * 备用字段
+     */
+    private String reserve1;
+    /**
+     * 备用字段
+     */
+    private String reserve2;
+    /**
+     * 备用字段
+     */
+    private String Reserve3;
+
+}

+ 35 - 0
src/main/java/com/bs/logisticslnfoapi/bean/YuantongShelvesBean.java

@@ -0,0 +1,35 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class YuantongShelvesBean {
+    //运单号
+    private String waybillNo;
+    //操作码
+    private String opCode;
+    //操作时间
+    private String opTime;
+    //操作人账户
+    private String  opUserId;
+    //货架号
+    private String rackNo;
+    //取货码
+    private String takeCode;
+    //所属网点编号(否)
+    private String orgCode;
+    //快递公司编号:BLC00001
+    private String logisticsCode;
+    //驿站编号
+    private String stationCode;
+    //客户渠道编码
+    private String  customerCode;
+    //通知方式:DX(短信)/YY (语音)/(WX)微信,通知 方式只能是三种中的一种
+    private String  noticeType;
+    //通知内容
+    private String  noticeContent;
+    //收件人手机
+    private String  destPhone;
+
+
+}

+ 31 - 0
src/main/java/com/bs/logisticslnfoapi/bean/YuantongSyAcPersonBean.java

@@ -0,0 +1,31 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class YuantongSyAcPersonBean {
+    //操作人账户
+    private String opUserId;
+    //操作人姓名
+    private String opUserName;
+    //操作人电话号码
+    private String opUserMobile;
+    // 操作人密码
+    private String opUserPwd;
+    // 状态
+    private String status;
+    // 人员类型
+    private String empType;
+    // 是否使用终端
+    private String usdTml;
+    //驿站编号
+    private String stationCode;
+    //所属网点编号
+    private String orgCode;
+    //快递公司编号:BLC00001
+    private String  logisticsCode;
+    // 客户渠道编码
+    private String  customerCode;
+
+
+}

+ 43 - 0
src/main/java/com/bs/logisticslnfoapi/bean/YuantongSyStoreBean.java

@@ -0,0 +1,43 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class YuantongSyStoreBean {
+    //所属荣誉编号[营业执照](否)
+    private String gloryNo;
+    //驿站名称
+    private String stationName;
+    //驿站所属省份
+    private String stationBelongProv;
+    // 驿站所属城市
+    private String  stationBelongCity;
+    // 驿站所属区县
+    private String stationBelongCounty;
+    // 驿站详细地址
+    private String stationAddress;
+    // 所属业务员
+    private String empCode;
+    //负责人编号(对应账户人员)
+    private String empMngCode;
+    //所属网点编号
+    private String orgCode;
+    //位置属性
+    private String positionCode;
+    // 经营类型
+    private String  operateCode;
+    //营业时间(否)
+    private String  businessTime;
+    // 驿站电话
+    private String  stationMobile;
+    // 面单类型(否)
+    private String  expType;
+    //驿站类型
+    private String  stationType;
+    //快递公司编号:BLC00001
+    private String  logisticsCode;
+    // 客户渠道编码
+    private String  customerCode;
+
+
+}

+ 26 - 0
src/main/java/com/bs/logisticslnfoapi/bean/YuantongSyUpStoreBean.java

@@ -0,0 +1,26 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class YuantongSyUpStoreBean {
+    //驿站编码
+    private String stationCode;
+    //驿站所属省份(否)
+    private String stationBelongProv;
+    // 驿站所属城市(否)
+    private String  stationBelongCity;
+    // 驿站所属区县(否)
+    private String stationBelongCounty;
+    // 驿站详细地址(否)
+    private String stationAddress;
+    //  驿站联系电话(否)
+    private String smsMobile;
+    // 操作码
+    private String opCode;
+    //所属网点编号
+    private String orgCode;
+    //所属网点编号
+    private String  customerCode;
+
+}

+ 40 - 0
src/main/java/com/bs/logisticslnfoapi/bean/YunDaBean.java

@@ -0,0 +1,40 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+/**
+ * @ClassName YunDaBean
+ * @Description 韵达bean
+ * @Author kael
+ * @Date 2019/7/9 0009 下午 15:18
+ * @Version 1.0
+ **/
+@Data
+public class YunDaBean {
+
+    /**
+     * 账号,韵达提供
+     */
+    private String partnerid;
+    /**
+     *
+     */
+    private String request = "order_trace";
+    /**
+     * 传入参数
+     */
+    private String xmldata;
+    /**
+     * 效验码
+     */
+    private String validation;
+    /**
+     * 版本号
+     */
+    private String version = "1.0";
+    /**
+     * 密码
+     */
+    private String password;
+
+}

+ 75 - 0
src/main/java/com/bs/logisticslnfoapi/bean/YunDaSyStoreBean.java

@@ -0,0 +1,75 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @ClassName YunDaSyStoreBean
+ * @Description 韵达bean
+ * @Author kael
+ * @Date 2019/7/9 0009 下午 15:18
+ * @Version 1.0
+ **/
+@Data
+public class YunDaSyStoreBean {
+    /**
+     * 运单号	必填
+     */
+    private String mailno;
+    /**
+     * 操作类型	必填,STA_INBOUND(入库),STA_SIGN(出库)
+     */
+    private String action;
+    /**
+     * 操作时间 必填,快件操作时间
+     */
+    private String time;
+    /**
+     * 取件地址	必填,详细取件地址
+     */
+    private String desc;
+    /**
+     * 	快件操作城市编码	必填,快件所在城市编码
+     */
+    private String city;
+    /**
+     * 	驿站/自提柜名称	必填(需要透传给消费者,务必是能让消费者清楚的取到件的信息)
+     */
+    private String stationName;
+    /**
+     * 	驿站/自提柜联系方式	必填
+     */
+    private String stationContact;
+    /**
+     * 	小件员姓名	张农
+     */
+    private String  contacter;
+    /**
+     * 	小件员联系方式
+     */
+    private String contactPhone;
+    /**
+     * 	物业类型,代收点类型	1001	必填,类型 :快递柜(KDG),代收点( DSD)
+     *              1000其它,
+     *             1001快递柜,
+     *             1002合作驿站、代收点,
+     *             1003物业,
+     *             1004门卫,
+     *             1005前台
+     */
+    private String properType;
+    /**
+     * 	物业编码  必填 (联系韵达业务提供)
+     */
+    private String properCode;
+    /**
+     * 取件码
+     */
+    private String pickCode;
+
+    /**
+     * 站点/柜机编码
+     */
+    private String stationCode;
+}

+ 16 - 0
src/main/java/com/bs/logisticslnfoapi/bean/ZtPointParam.java

@@ -0,0 +1,16 @@
+package com.bs.logisticslnfoapi.bean;
+
+import lombok.Data;
+
+@Data
+public class ZtPointParam {
+    private String addressNo;
+    private String province;
+    private String city;
+    private String county;
+    private String street;
+    private String communityName;
+    private String phone;
+    private String officer;
+    private String createOrUpdate;
+}

+ 60 - 0
src/main/java/com/bs/logisticslnfoapi/bean/alibb/AliBaBaSmsStatusReportBean.java

@@ -0,0 +1,60 @@
+package com.bs.logisticslnfoapi.bean.alibb;
+
+import lombok.Data;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.bean.alibb
+ * @ClassName: AliBaBaSmsStatusReportBean
+ * @Description: TODO
+ * @Author: liujs
+ * @Date: 2020/05/22 下午 15:47
+ * @Version: 1.0
+ */
+@Data
+public class AliBaBaSmsStatusReportBean {
+    /**
+     * 手机号码
+     * 示例:13900000001
+     */
+    private String phone_number;
+    /**
+     * 发送时间
+     * 示例:2017-01-01 00:00:00
+     */
+    private String send_time;
+    /**
+     * 状态报告时间
+     * 示例:2017-01-01 00:00:00
+     */
+    private String report_time;
+    /**
+     * 是否接收成功
+     * 示例:true\false
+     */
+    private Boolean success;
+    /**
+     * 状态报告编码
+     * 示例:DELIVERED
+     */
+    private String err_code;
+    /**
+     * 状态报告说明
+     * 示例:用户接收成功
+     */
+    private String err_msg;
+    /**
+     * 短信长度
+     * 示例:1
+     */
+    private String sms_size;
+    /**
+     * 发送序列号
+     * 示例:12345
+     */
+    private String biz_id;
+    /**
+     * 用户序列号
+     * 示例:67890
+     */
+    private String out_id;
+}

+ 26 - 0
src/main/java/com/bs/logisticslnfoapi/bean/alibb/AlibbQuerySmsDetailsRequest.java

@@ -0,0 +1,26 @@
+package com.bs.logisticslnfoapi.bean.alibb;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * 查询短信详细信息<br>
+ *
+ * @className: AlibbQuerySmsDetailsRequest
+ * @package: cn.haliaeetus.sendmessage.utils.ALBB
+ * @author: kael
+ * @date: 2019/10/21 0021 上午 11:16
+ */
+@Data
+@Builder
+public class AlibbQuerySmsDetailsRequest {
+    private Long currentPage;
+    private Long pageSize;
+    private String phoneNumber;
+    private String sendDate;
+    private String accessKeyId;
+    private String action;
+    private String bizId;
+    private String appSecret;
+    private String url;
+}

+ 56 - 0
src/main/java/com/bs/logisticslnfoapi/bean/alibb/AlibbSendSmsRequest.java

@@ -0,0 +1,56 @@
+package com.bs.logisticslnfoapi.bean.alibb;
+
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName
+ * @Description
+ * @Author liujs
+ * @Date 2019/10/22 上午 10:54
+ * @Modefy
+ * @Version 1.0
+ */
+@Data
+@Builder
+public class AlibbSendSmsRequest {
+    /**
+     * alibb发送短信请求地址
+     */
+    private String url;
+    /**
+     * 访问密钥 ID
+     */
+    private String accessKeyId;
+    /**
+     * API 的名称
+     */
+    private String action;
+    /**
+     * 访问密钥
+     */
+    private String appSecret;
+    /**
+     * API 的版本号(格式为 YYYY-MM-DD  取值范围:2017-05-25)
+     */
+    private String version;
+    /**
+     * 发送短信的电话号码
+     */
+    private String phoneNumbers;
+    /**
+     * 短信签名
+     */
+    private String signName;
+    /**
+     * 短信模板码
+     */
+    private String templateCode;
+    /**
+     * 短信模板内容参数
+     */
+    private Map<String,String> templateParam;
+}

+ 24 - 0
src/main/java/com/bs/logisticslnfoapi/bean/cainiao/CaiNiaoReceiveRequest.java

@@ -0,0 +1,24 @@
+package com.bs.logisticslnfoapi.bean.cainiao;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * 〈功能概述〉<br>
+ *
+ * @className: CaiNiaoReceiveRequest
+ * @package: com.bs.logisticslnfoapi.bean.cainiao
+ * @author: kael
+ * @date: 2019/11/29 0029 下午 17:03
+ */
+@Data
+@Builder
+public class CaiNiaoReceiveRequest {
+
+    private String logisticsInterface;
+    private String dataGigest;
+    private String msgType;
+    private String msgId;
+    private String partnerCode;
+    private String fromCode;
+}

+ 20 - 0
src/main/java/com/bs/logisticslnfoapi/bean/cainiao/CaiNiaoReceiveResponse.java

@@ -0,0 +1,20 @@
+package com.bs.logisticslnfoapi.bean.cainiao;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.bean.cainiao
+ * @ClassName: CaiNiaoReceiveResponse
+ * @Description: TODO
+ * @Author: liujs
+ * @Date: 2020/02/27 上午 9:43
+ * @Version: 1.0
+ */
+@Data
+@Builder
+public class CaiNiaoReceiveResponse {
+    private Boolean success;
+    private String errorCode;
+    private String errorMsg;
+}

+ 13 - 0
src/main/java/com/bs/logisticslnfoapi/bean/cainiao/CaiNiaoRequest.java

@@ -0,0 +1,13 @@
+package com.bs.logisticslnfoapi.bean.cainiao;
+
+import lombok.Data;
+
+@Data
+public class CaiNiaoRequest {
+    private String msg_type;//消息类型(必填)
+    private String logistic_provider_id;//来源CP编号(资源code)(必填)
+    private String data_digest;//请求签名(必填)
+    private String to_code;//目的方编码(可选,如不填使用该msg_type默认目的方)(非必填)
+    private String logistics_interface;//请求报文内容(必填)
+    private String url;
+}

+ 40 - 0
src/main/java/com/bs/logisticslnfoapi/bean/cainiao/CaiNiaoRequestUser.java

@@ -0,0 +1,40 @@
+package com.bs.logisticslnfoapi.bean.cainiao;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.bean.cainiao
+ * @ClassName: CaiNiaoRequestUser
+ * @Description: TODO
+ * @Author: liujs
+ * @Date: 2020/02/26 下午 15:28
+ * @Version: 1.0
+ */
+@Data
+@Builder
+public class CaiNiaoRequestUser {
+    /**
+     * <mailNo>必传,运单号</mailNo>
+     *     <receiverTailTel>必传,手机号后4位(菜鸟有就提供)</ receiverTailTel>
+     *     <siteBrandCode>必传,代收点品牌(回传物流信息时填入的siteBrandCode)</siteBrandCode>
+     *     <siteId>必传,该品牌下代收点内部id(回传物流信息时填入的siteId)</siteId>
+     *     <inboundTime>必传,包裹入代收点时间</inboundTime>
+     *     <errorCode>必传,错误码</errorCode>
+     *     <errorMessage>非必传,错误信息</errorMessage>
+     *     <reptTime>必传,触达时间</reptTime>
+     *     <bizId>必传,业务主键,可用于定位消息的投递过程</bizId>
+     *     <extendFields>非必传,便于今后业务拓展需要</extendFields>
+     */
+    private String mailNo;
+    private String receiverTailTel;
+    private String siteBrandCode;
+    private String siteId;
+    private String inboundTime;
+    private String errorCode;
+    private String errorMessage;
+    private String reptTime;
+    private String bizId;
+    private String extendFields;
+
+}

+ 51 - 0
src/main/java/com/bs/logisticslnfoapi/bean/cainiao/CaiNiaoWaybillQuery.java

@@ -0,0 +1,51 @@
+package com.bs.logisticslnfoapi.bean.cainiao;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.xml.bind.annotation.*;
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CaiNiaoWaybillQuery {
+    /**
+     * 电子面单扩展信息查询接口请求参数
+     * 电子面单号(必填)
+     */
+    private String waybillNo;
+    /**
+     * 电子面单扩展信息查询接口请求参数
+     * 站点编码,但是不填写则返回结果没有isSensitiveConsumer字段的值(非必填)
+     */
+    private String stationCode;
+    /**
+     * 猜面单接口请求参数
+     * 调用来源名称
+     */
+    private String appName;
+    /**
+     * 猜面单接口请求参数
+     * 运单号
+     */
+    private String mailNo;
+    /**
+     * 跟踪信息回传接口请求参数
+     * 物流公司编号
+     */
+    private String logisticProviderID;
+    /**
+     * 跟踪信息
+     */
+    private List<Trace> traces;
+    /**
+     *
+     */
+    private List<TraceElement> tracesList;
+}
+
+

+ 20 - 0
src/main/java/com/bs/logisticslnfoapi/bean/cainiao/ExtendField.java

@@ -0,0 +1,20 @@
+package com.bs.logisticslnfoapi.bean.cainiao;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.bean.cainiao
+ * @ClassName: extendField
+ * @Description: TODO
+ * @Author: liujs
+ * @Date: 2020/02/25 下午 22:02
+ * @Version: 1.0
+ */
+@Data
+@AllArgsConstructor
+public class ExtendField {
+    private String key;
+    private String value;
+    private String desc;
+}

+ 99 - 0
src/main/java/com/bs/logisticslnfoapi/bean/cainiao/Trace.java

@@ -0,0 +1,99 @@
+package com.bs.logisticslnfoapi.bean.cainiao;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @PackageName: cn.haliaeetus.sendmessage.bean.cainiao
+ * @ClassName: Trace
+ * @Description: TODO
+ * @Author: liujs
+ * @Date: 2020/02/24 下午 14:18
+ * @Version: 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class Trace {
+    /**
+     * 国家(默认中国)  英文回传(默认请回传China)
+     */
+    private String country;
+    /**
+     * 省份
+     */
+    private String province;
+    /**
+     * 二级地址。举例:杭州市
+     */
+    private String city;
+    /**
+     * 站点类型(3:代收点,9:自提柜)
+     */
+    private String facilityType;
+    /**
+     * 网点名称
+     * 举例:金宝商务大厦代收点
+     */
+    private String facilityName;
+    /**
+     * 代收点编号
+     */
+    private String facilityNo;
+    /**
+     * 操作时间
+     * 格式yyyy-mm-dd hh:mm:ss。
+     * 举例:2019-11-11 11:11:11
+     */
+    private String time;
+    /**
+     * 跟踪信息描述
+     * 物流详情展示的原始信息。
+     * 举例:[代收点]您的快件已由金宝商务大厦代收点代收,代收点地址:广东省深圳市宝安区顺丰路18号,联系电话:18566059116
+     */
+    private String desc;
+    /**
+     * 事件/操作
+     * 三方代收点能合法回传的action如下:
+     * SH_INBOUND 代收点已代收
+     * SH_FAILED 代收点拒收(指的是消费者拒收)
+     * SH_SIGNED 代收点签收(指的是消费取出包裹)
+     * SH_MAILMAN_PICKUP 小件员从代收点将包裹取出
+     * SH_MOVE_PACK 代收点包裹移库单行代码
+     */
+    private String action;
+    /**
+     * 代收点电话 (条件必选)
+     * SH_INBOUND 必选。举例:18566059116; SH_MAILMAN_PICKUP 必选。该节点下回传小件员手机号
+     */
+    private String contactPhone;
+    /**
+     * 代收点地址 (条件必选)
+     * SH_INBOUND、SH_MOVE_PACK 必选。
+     * 举例:广东省深圳市宝安区顺丰路18号
+     */
+    private String address;
+    /**
+     * 时区,默认值:+8
+     */
+    private String tz;
+    /**
+     * 备注信息(SH_FAILED节点使用)
+     * 格式样例:
+     * <remark>SEC_CODE^^^140,150~~~REASON_DESC^^^联系不上用户</remark>
+     */
+    private String remark;
+    /**
+     * 拓展字段
+     */
+    private List<ExtendField> extendFields;
+    /**
+     * 小件取件员  action("SH_MAILMAN_PICKUP")才需要该字段
+     */
+    private String contacter;
+}

+ 29 - 0
src/main/java/com/bs/logisticslnfoapi/bean/cainiao/TraceElement.java

@@ -0,0 +1,29 @@
+package com.bs.logisticslnfoapi.bean.cainiao;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import java.util.List;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.bean.cainiao
+ * @ClassName: TraceElement
+ * @Description: TODO
+ * @Author: liujs
+ * @Date: 2020/02/25 下午 15:53
+ * @Version: 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TraceElement {
+    private String mailNos;
+    private String logisticProviderID;
+    private List<Trace> traces;
+}

+ 79 - 0
src/main/java/com/bs/logisticslnfoapi/bean/jhy/JhyPhone.java

@@ -0,0 +1,79 @@
+package com.bs.logisticslnfoapi.bean.jhy;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 居欢颜电话号码
+ * @author kael
+ */
+@Data
+public class JhyPhone{
+
+    private Integer storeId;
+
+    private String phone;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    private Integer isEnable;
+
+    public JhyPhone(Builder builder) {
+        this.phone = builder.phone;
+        this.storeId = builder.storeId;
+        this.isEnable = builder.isEnable;
+        this.createTime = builder.createTime;
+        this.updateTime = builder.updateTime;
+    }
+
+    public static class Builder{
+        private Integer storeId;
+
+        private String phone;
+
+        private Date createTime;
+
+        private Date updateTime;
+
+        private Integer isEnable;
+
+        public Builder() {
+        }
+
+        public Builder setStoreId(Integer storeId) {
+            this.storeId = storeId;
+            return this;
+        }
+
+        public Builder setPhone(String phone) {
+            this.phone = phone;
+            return this;
+        }
+
+        public Builder setCreateTime(Date createTime) {
+            this.createTime = createTime;
+            return this;
+        }
+
+        public Builder setUpdateTime(Date updateTime) {
+            this.updateTime = updateTime;
+            return this;
+        }
+
+        public Builder setIsEnable(Integer isEnable) {
+            this.isEnable = isEnable;
+            return this;
+        }
+
+        /**
+         * 最终构建方法,返回一个 PersonTree 对象,参数是当前 Builder 对象
+         * @return
+         */
+        public JhyPhone build(){
+            return new JhyPhone(this);
+        }
+    }
+}

+ 130 - 0
src/main/java/com/bs/logisticslnfoapi/bean/jhy/JhyPhonePushRequest.java

@@ -0,0 +1,130 @@
+package com.bs.logisticslnfoapi.bean.jhy;
+
+import lombok.Data;
+
+/**
+ * @ClassName JhyPhonePushRequest
+ * @Description TODO
+ * @Author kael
+ * @Date 2019/8/6 0006 上午 10:18
+ * @Version 1.0
+ **/
+@Data
+public class JhyPhonePushRequest {
+
+    /**
+     * 取件码
+     */
+    private String pickup_code;
+    /**
+     * 快递公司id
+     */
+    private String express_id;
+    /**
+     * 快递公司名称
+     */
+    private String express_name;
+    /**
+     * 运单号码
+     */
+    private String waybill_num;
+    /**
+     * 快递员手机号码
+     */
+    private String delivery_phone;
+    /**
+     * 蜂站站点Id
+     */
+    private String fz_site_id;
+    /**
+     * 蜂站站点名称
+     */
+    private String fz_site_name;
+    /**
+     * 取件地址
+     */
+    private String pickup_address;
+    /**
+     * 取件人手机号码
+     */
+    private String pickup_phone;
+
+
+    public static final class Builder {
+        private String pickup_code;
+        private String express_id;
+        private String express_name;
+        private String waybill_num;
+        private String delivery_phone;
+        private String fz_site_id;
+        private String fz_site_name;
+        private String pickup_address;
+        private String pickup_phone;
+
+        public Builder() {
+        }
+
+        public static Builder aJhyPhonePushRequest() {
+            return new Builder();
+        }
+
+        public Builder withPickup_code(String pickup_code) {
+            this.pickup_code = pickup_code;
+            return this;
+        }
+
+        public Builder withExpress_id(String express_id) {
+            this.express_id = express_id;
+            return this;
+        }
+
+        public Builder withExpress_name(String express_name) {
+            this.express_name = express_name;
+            return this;
+        }
+
+        public Builder withWaybill_num(String waybill_num) {
+            this.waybill_num = waybill_num;
+            return this;
+        }
+
+        public Builder withDelivery_phone(String delivery_phone) {
+            this.delivery_phone = delivery_phone;
+            return this;
+        }
+
+        public Builder withFz_site_id(String fz_site_id) {
+            this.fz_site_id = fz_site_id;
+            return this;
+        }
+
+        public Builder withFz_site_name(String fz_site_name) {
+            this.fz_site_name = fz_site_name;
+            return this;
+        }
+
+        public Builder withPickup_address(String pickup_address) {
+            this.pickup_address = pickup_address;
+            return this;
+        }
+
+        public Builder withPickup_phone(String pickup_phone) {
+            this.pickup_phone = pickup_phone;
+            return this;
+        }
+
+        public JhyPhonePushRequest build() {
+            JhyPhonePushRequest jhyPhonePushRequest = new JhyPhonePushRequest();
+            jhyPhonePushRequest.setPickup_code(pickup_code);
+            jhyPhonePushRequest.setExpress_id(express_id);
+            jhyPhonePushRequest.setExpress_name(express_name);
+            jhyPhonePushRequest.setWaybill_num(waybill_num);
+            jhyPhonePushRequest.setDelivery_phone(delivery_phone);
+            jhyPhonePushRequest.setFz_site_id(fz_site_id);
+            jhyPhonePushRequest.setFz_site_name(fz_site_name);
+            jhyPhonePushRequest.setPickup_address(pickup_address);
+            jhyPhonePushRequest.setPickup_phone(pickup_phone);
+            return jhyPhonePushRequest;
+        }
+    }
+}

+ 62 - 0
src/main/java/com/bs/logisticslnfoapi/bean/jhy/JhyPhoneStateRequest.java

@@ -0,0 +1,62 @@
+package com.bs.logisticslnfoapi.bean.jhy;
+
+import lombok.Data;
+
+/**
+ * @ClassName JhyPhoneStateRequest
+ * @Description TODO
+ * @Author kael
+ * @Date 2019/8/6 0006 下午 15:45
+ * @Version 1.0
+ **/
+@Data
+public class JhyPhoneStateRequest {
+    private String waybill_num;
+    private String pickup_phone;
+    private String pickup_state = "1";
+    private String express_id;
+
+    public static final class Builder {
+        private String waybill_num;
+        private String pickup_phone;
+        private String pickup_state = "1";
+        private String express_id;
+
+        public Builder() {
+        }
+
+        public static Builder aJhyPhoneStateRequest() {
+            return new Builder();
+        }
+
+        public Builder setWaybill_num(String waybill_num) {
+            this.waybill_num = waybill_num;
+            return this;
+        }
+
+        public Builder setPickup_phone(String pickup_phone) {
+            this.pickup_phone = pickup_phone;
+            return this;
+        }
+
+        public Builder setPickup_state(String pickup_state) {
+            this.pickup_state = pickup_state;
+            return this;
+        }
+
+        public Builder setExpress_id(String express_id) {
+            this.express_id = express_id;
+            return this;
+        }
+
+
+        public JhyPhoneStateRequest build() {
+            JhyPhoneStateRequest jhyPhoneStateRequest = new JhyPhoneStateRequest();
+            jhyPhoneStateRequest.pickup_state = this.pickup_state;
+            jhyPhoneStateRequest.waybill_num = this.waybill_num;
+            jhyPhoneStateRequest.pickup_phone = this.pickup_phone;
+            jhyPhoneStateRequest.express_id = this.express_id;
+            return jhyPhoneStateRequest;
+        }
+    }
+}

+ 17 - 0
src/main/java/com/bs/logisticslnfoapi/bean/jitu/JiTuBean.java

@@ -0,0 +1,17 @@
+package com.bs.logisticslnfoapi.bean.jitu;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author liujs
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class JiTuBean {
+    private String receiverMobilePhone;
+}

+ 83 - 0
src/main/java/com/bs/logisticslnfoapi/bean/jitu/JiTuDeliveryCabinetDTO.java

@@ -0,0 +1,83 @@
+package com.bs.logisticslnfoapi.bean.jitu;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author liujs
+ * @desc 极兔快递扫描实体类
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class JiTuDeliveryCabinetDTO {
+    /**
+     * 运单编号
+     */
+    private String waybillId;
+    /**
+     * 扫描时间
+     * 格式(yyyy-MM-dd HH:mm:ss)
+     */
+    private String scanTime;
+    /**
+     * 扫描PDA编号(15位,测试联调时用:CS0000000001001,正式待联调发放)
+     */
+    private String scanPda;
+    /**
+     * 签收人(非必填)
+     */
+    private String signer;
+    /**
+     * 签收图片url(非必填)
+     */
+    private String sigPicUrl;
+    /**
+     * 扫描类型编码:  5:驿站/6:柜机
+     */
+    private String scanSourceCode;
+    /**
+     * 扫描类型名称, 驿站/柜机
+     */
+    private String scanSourceName;
+    /**
+     * 收派员id (非必填)
+     */
+    private Integer deliveryBy;
+    /**
+     * 收派员编码(非必填)
+     */
+    private String deliveryCode;
+    /**
+     * 收派员姓名(柜机时必填)(非必填)
+     */
+    private String deliveryName;
+    /**
+     * 收派员电话(手机号/固话),柜机时必填(非必填)
+     */
+    private String deliveryPhone;
+    /**
+     * 驿站联系方式(手机号/固话),驿站是必填(非必填)
+     */
+    private String stationContact;
+    /**
+     * 自提柜合作公司品牌名,如“丰巢”(合作伙伴名称)
+     */
+    private String partnerName;
+    /**
+     * 当前城市(二级地址,如:杭州市)
+     */
+    private String city;
+    /**
+     * 快递柜站点:【地址】+【XXX驿站/柜】
+     * 如:顶琇国际城A区1栋2单元架空层丰巢快递柜
+     */
+    private String expressCabinet;
+    /**
+     * 操作来源
+     */
+    private Integer operationSource;
+}

+ 32 - 0
src/main/java/com/bs/logisticslnfoapi/bean/jitu/JiTuRequestBean.java

@@ -0,0 +1,32 @@
+package com.bs.logisticslnfoapi.bean.jitu;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author liujs
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JiTuRequestBean {
+    /**
+     * 调用第三方接口的完整地址
+     */
+    private String url;
+    /**
+     * 根据运单号查询收件人手机号接口参数
+     * 面单号
+     */
+    private String waybillId;
+    /**
+     * 入库扫描接口参数、出库扫描接口参数、快递取出扫描接口参数
+     * 快递数据类集合
+     */
+    private List<JiTuDeliveryCabinetDTO> jiTuDeliveryCabinetDTOList;
+}

+ 22 - 0
src/main/java/com/bs/logisticslnfoapi/bean/jitu/JiTuResponseBean.java

@@ -0,0 +1,22 @@
+package com.bs.logisticslnfoapi.bean.jitu;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author liujs
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JiTuResponseBean {
+    private String code;
+    private String msg;
+    private JiTuBean data;
+    //============下面两个参数部分接口使用(查询手机号码接口使用)==============
+    private Boolean succ;
+    private Boolean fail;
+}

+ 68 - 0
src/main/java/com/bs/logisticslnfoapi/bean/pdd/CabinetInfoRequest.java

@@ -0,0 +1,68 @@
+package com.bs.logisticslnfoapi.bean.pdd;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @ClassName CabinetInfoRequest
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/29 0029 上午 9:18
+ * @Version 1.0
+ **/
+
+@Data
+@Builder
+public class CabinetInfoRequest extends PddRequest{
+
+    /**
+     * companyCode : FCOBX
+     * cabCode :  FC098183434
+     * cabName : 丰巢e栈柜
+     * cabType : 01
+     * province : 上海
+     * city : 上海市
+     * district : 长宁区
+     * town : 仙霞街道
+     * buildingName : 金虹桥大厦
+     * address : 娄山关路523号
+     * deliverAddress : 南楼一楼自提柜
+     * longitude : 31.21491
+     * latitude : 121.409196
+     * coordType : baidu
+     * totalCell : 25
+     * hugeCell : 2
+     * largeCell : 5
+     * midCell : 5
+     * smallCell : 10
+     * microCell : 3
+     * refrigCell : 0
+     * status : 0
+     * type : 1
+     */
+
+    private String companyCode;
+    private String cabCode;
+    private String cabName;
+    private String cabType;
+    private String province;
+    private String city;
+    private String district;
+    private String town;
+    private String buildingName;
+    private String address;
+    private String deliverAddress;
+    private String longitude;
+    private String latitude;
+    private String coordType;
+    private Integer totalCell;
+    private Integer hugeCell;
+    private Integer largeCell;
+    private Integer midCell;
+    private Integer smallCell;
+    private Integer microCell;
+    private Integer refrigCell;
+    private Integer status;
+    private Integer type;
+
+}

+ 44 - 0
src/main/java/com/bs/logisticslnfoapi/bean/pdd/InOutBound.java

@@ -0,0 +1,44 @@
+package com.bs.logisticslnfoapi.bean.pdd;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @ClassName InOutBound
+ * @Description TODO
+ * @Author kael
+ * @Date 2019/8/28 0028 上午 9:46
+ * @Version 1.0
+ **/
+@Data
+@Builder
+public class InOutBound  extends PddRequest{
+
+    /**
+     * companyCode :  FCBOX
+     * cabCode : fc123132
+     * type : 0
+     * mailNo : 123123123113
+     * expressCode : YTO
+     * deliverName : 拼多多
+     * deliverPhone : 13900000000
+     * receiverPhone : 18600000000
+     * time : 2018-06-16 09:20:00
+     * deliverAddress : 南楼一楼自提柜
+     * remark :
+     * verifyCode : 4123
+     */
+
+    private String companyCode;
+    private String cabCode;
+    private Integer type;
+    private String mailNo;
+    private String expressCode;
+    private String deliverName;
+    private String deliverPhone;
+    private String receiverPhone;
+    private String time;
+    private String deliverAddress;
+    private String remark;
+    private String verifyCode;
+}

+ 44 - 0
src/main/java/com/bs/logisticslnfoapi/bean/pdd/InOutBoundRequest.java

@@ -0,0 +1,44 @@
+package com.bs.logisticslnfoapi.bean.pdd;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @ClassName InOutBoundRequest
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/29 0029 上午 10:15
+ * @Version 1.0
+ **/
+@Data
+@Builder
+public class InOutBoundRequest  extends PddRequest{
+
+    /**
+     * companyCode :  FCBOX
+     * cabCode : fc123132
+     * type : 0
+     * mailNo : 123123123113
+     * expressCode : YTO
+     * deliverName : 拼多多
+     * deliverPhone : 13900000000
+     * receiverPhone : 18600000000
+     * time : 2018-06-16 09:20:00
+     * deliverAddress : 南楼一楼自提柜
+     * remark :
+     * verifyCode : 4123
+     */
+
+    private String companyCode;
+    private String cabCode;
+    private Integer type;
+    private String mailNo;
+    private String expressCode;
+    private String deliverName;
+    private String deliverPhone;
+    private String receiverPhone;
+    private String time;
+    private String deliverAddress;
+    private String remark;
+    private String verifyCode;
+}

+ 30 - 0
src/main/java/com/bs/logisticslnfoapi/bean/pdd/OrderQueryInfo.java

@@ -0,0 +1,30 @@
+package com.bs.logisticslnfoapi.bean.pdd;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @ClassName OrderQueryInfo
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/28 0028 上午 10:00
+ * @Version 1.0
+ **/
+@Data
+@Builder
+public class OrderQueryInfo  extends PddRequest{
+
+    /**
+     * companyCode :  FCBOX
+     * expressCode : YTO
+     * mailNo : 123123123123
+     * cabCode : fc123132
+     */
+
+    private String companyCode;
+    private String expressCode;
+    private String mailNo;
+    private String cabCode;
+    private Integer siteType;
+
+}

+ 18 - 0
src/main/java/com/bs/logisticslnfoapi/bean/pdd/OrderQueryResponse.java

@@ -0,0 +1,18 @@
+package com.bs.logisticslnfoapi.bean.pdd;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @ClassName OrderQueryResponse
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/28 0028 上午 10:57
+ * @Version 1.0
+ **/
+@Data
+@Builder
+public class OrderQueryResponse extends PddResponse{
+    private Integer result;
+    private String phoneNum;
+}

+ 17 - 0
src/main/java/com/bs/logisticslnfoapi/bean/pdd/PddRequest.java

@@ -0,0 +1,17 @@
+package com.bs.logisticslnfoapi.bean.pdd;
+
+import lombok.Data;
+
+/**
+ * @ClassName PddRequest
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/29 0029 上午 11:29
+ * @Version 1.0
+ **/
+@Data
+public class PddRequest {
+    private String apiName;
+    private String partner_id;
+    private String secret;
+}

+ 18 - 0
src/main/java/com/bs/logisticslnfoapi/bean/pdd/PddResponse.java

@@ -0,0 +1,18 @@
+package com.bs.logisticslnfoapi.bean.pdd;
+
+import lombok.Data;
+
+/**
+ * @ClassName PddResponse
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/28 0028 上午 10:54
+ * @Version 1.0
+ **/
+@Data
+public class PddResponse {
+
+    private boolean success;
+    private String error_code;
+    private String error_msg;
+}

+ 27 - 0
src/main/java/com/bs/logisticslnfoapi/bean/pdd/PddSendSmsData.java

@@ -0,0 +1,27 @@
+package com.bs.logisticslnfoapi.bean.pdd;
+
+import com.pdd.pop.sdk.http.api.request.PddOpenMsgServiceSendExpressMsgRequest;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName PddSendSmsData
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/9/29 0029 上午 11:30
+ * @Version 1.0
+ **/
+@Data
+@Builder
+public class PddSendSmsData {
+    private String clientId;
+    private String clientSecret;
+    private List<String> waybillCodes;
+    private List<Map<String, String>> templateParamJson;
+    private String wpCode;
+    private String signName;
+    private Integer templateCode;
+}

+ 32 - 0
src/main/java/com/bs/logisticslnfoapi/bean/pdd/PddSmsReceiptRequest.java

@@ -0,0 +1,32 @@
+package com.bs.logisticslnfoapi.bean.pdd;
+
+import lombok.Data;
+
+/**
+ * @ClassName PddSmsReceiptRequest
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/9/29 0029 下午 16:07
+ * @Version 1.0
+ **/
+@Data
+public class PddSmsReceiptRequest {
+
+    //公共参数
+    private String client_id;
+    private String from_client_id;
+    private String request_id;
+    private Long timestamp;
+    private String sign;
+    private String type;
+    //业务参数
+    private String biz_id;
+    private String mobile;
+    private String waybill_code;
+    private Boolean success;
+    private Integer sms_size;
+    private String send_time;
+    private String receipt_time;
+    private String error_code;
+    private String error_msg;
+}

+ 79 - 0
src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongBean.java

@@ -0,0 +1,79 @@
+package com.bs.logisticslnfoapi.bean.shentong;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author liujs
+ * @desc 申通注册和修改门店信息接口
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ShenTongBean {
+    /**
+     * 网点编号
+     * 100--驿站;200--快递柜
+     */
+    private int type;
+    /**
+     * 驿站/快递柜编号
+     */
+    private String code;
+    /**
+     * 驿站/快递柜名称
+     */
+    private String name;
+    /**
+     * 国家标准省编号
+     */
+    private String provinceCode;
+    /**
+     * 国家标准市编号
+     */
+    private String cityCode;
+    /**
+     * 国家标准区/县编号
+     */
+    private String areaCode;
+    /**
+     * 详细地址
+     */
+    private String address;
+    /**
+     * 高德坐标经度
+     */
+    private String longitude;
+    /**
+     * 高德坐标纬度
+     */
+    private String latitude;
+    /**
+     * 联系人
+     */
+    private String contactName;
+    /**
+     * 联系方式
+     */
+    private String contactPhone;
+    /**
+     * 办公电话
+     */
+    private String officePhone;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 状态
+     * 100--启用,200--停用
+     */
+    private int status;
+    /**
+     * 菜鸟品牌编号
+     */
+    private String brandCode;
+}

+ 34 - 0
src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongDeliveryCallbackBean.java

@@ -0,0 +1,34 @@
+package com.bs.logisticslnfoapi.bean.shentong;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @author liujs
+ * @desc 申通物流信息回传接口实体类
+ */
+@Data
+@Builder
+public class ShenTongDeliveryCallbackBean {
+    /**
+     * 快递网点编号
+     */
+    private String siteCode;
+    /**
+     * 投递的快递员编号
+     */
+    private String userCode;
+    /**
+     * 快递单号
+     */
+    private String ticketNo;
+    /**
+     * 完成时间戳(毫秒)
+     */
+    private long completeTimestamp;
+    /**
+     * 状态码
+     * STA_INBOUND:入库  STA_SIGN:签收  STA_MAILMAN_PICKUP:快递员取出  STA_BUYER_REJECT:客户拒收
+     */
+    private String status;
+}

+ 92 - 0
src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongEndpointInfoBean.java

@@ -0,0 +1,92 @@
+package com.bs.logisticslnfoapi.bean.shentong;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author liujs
+ * @desc 申通末端信息实体类
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ShenTongEndpointInfoBean {
+    /**
+     * 网点编号:100-驿站,200-快递柜(必填)
+     * 示例:100
+     */
+    private Integer type;
+    /**
+     * 驿站/快递柜编号(必填)
+     * 示例:10001
+     */
+    private String code;
+    /**
+     * 驿站/快递柜名称(必填)
+     * 示例:xx小区xx驿站
+     */
+    private String name;
+    /**
+     * 国家标准省编号(必填)
+     * 示例:110000
+     */
+    private String provinceCode;
+    /**
+     * 国家标准市编号(必填)
+     * 示例:110100
+     */
+    private String cityCode;
+    /**
+     * 国家标准区/县编号(必填)
+     * 示例:110101
+     */
+    private String areaCode;
+    /**
+     * 详细地址(必填)
+     * 示例:xx镇xx路xx小区
+     */
+    private String address;
+    /**
+     * 高德坐标经度(必填)
+     * 示例:121.292743
+     */
+    private String longitude;
+    /**
+     * 高德坐标纬度(必填)
+     * 示例:31.436394
+     */
+    private String latitude;
+    /**
+     * 联系人(非必填)
+     * 示例:张xx
+     */
+    private String contactName;
+    /**
+     * 联系方式(非必填)
+     * 示例:18111111111
+     */
+    private String contactPhone;
+    /**
+     * 办公电话(非必填)
+     * 示例:18111111111
+     */
+    private String officePhone;
+    /**
+     * 备注(非必填)
+     * 示例:xx备注
+     */
+    private String remark;
+    /**
+     * 状态:100-启用,2-停用(必填)
+     * 示例:100
+     */
+    private Integer status;
+    /**
+     * 菜鸟品牌编号(必填)
+     * 示例:TONGDIYIYOU
+     */
+    private String brandCode;
+}

+ 47 - 0
src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongOpreationEndpointListBean.java

@@ -0,0 +1,47 @@
+package com.bs.logisticslnfoapi.bean.shentong;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author liujs
+ * @desc 申通末端驿站列表实体类
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ShenTongOpreationEndpointListBean {
+    /**
+     * 页码,大于等于1(必填)
+     * 示例:1
+     */
+    private Integer pageNum;
+    /**
+     * 每页记录数,大于等于1小于100(必填)
+     * 示例:20
+     */
+    private Integer pageSize;
+    /**
+     * 国家标准省编号(非必填)
+     * 示例:110000
+     */
+    private String provinceCode;
+    /**
+     * 国家标准市编号(非必填)
+     * 示例:110100
+     */
+    private String cityCode;
+    /**
+     * 国家标准区/县编号(非必填)
+     * 示例:110101
+     */
+    private String areaCode;
+    /**
+     * 状态:100-启用,200-停用(非必填)
+     * 示例:100
+     */
+    private Integer status;
+}

+ 38 - 0
src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongPageListBean.java

@@ -0,0 +1,38 @@
+package com.bs.logisticslnfoapi.bean.shentong;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author liujs
+ * @desc 申通结果实体类
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ShenTongPageListBean {
+    /**
+     * 页码
+     * 示例:1
+     */
+    private Integer pageNum;
+    /**
+     * 每页记录数
+     * 示例:20
+     */
+    private Integer pageSize;
+    /**
+     * 总记录数
+     * 示例:200
+     */
+    private long total;
+    /**
+     * 末端列表
+     */
+    private List<ShenTongEndpointInfoBean> list;
+}

+ 53 - 0
src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongRequestBean.java

@@ -0,0 +1,53 @@
+package com.bs.logisticslnfoapi.bean.shentong;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author liujs
+ * @desc 申通请求实体类
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ShenTongRequestBean {
+    /**
+     * 订阅方/请求发起方的应用key
+     */
+    private String from_appkey;
+    /**
+     * 订阅方/请求发起方的应用资源code
+     */
+    private String from_code;
+    /**
+     * 注册方应用key
+     */
+    private String to_appkey;
+    /**
+     * 注册方应用key
+     */
+    private String to_code;
+    /**
+     * 报文加密密钥
+     */
+    private String secretKey;
+    /**
+     * 报文签名
+     */
+    private String data_digest;
+    /**
+     * API名称
+     */
+    private String api_name;
+    /**
+     * 业务报文内容
+     */
+    private String content;
+    /**
+     * 调用第三方API地址
+     */
+    private String url;
+}

+ 33 - 0
src/main/java/com/bs/logisticslnfoapi/bean/shentong/ShenTongResponseBean.java

@@ -0,0 +1,33 @@
+package com.bs.logisticslnfoapi.bean.shentong;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author liujs
+ * @desc 申通响应实体类
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ShenTongResponseBean<T> {
+    /**
+     * 是否成功
+     */
+    private boolean success;
+    /**
+     * 错误编码
+     */
+    private String errorCode;
+    /**
+     * 错误信息
+     */
+    private String errorMsg;
+    /**
+     * 返回数据结果
+     */
+    private T data;
+}

+ 18 - 0
src/main/java/com/bs/logisticslnfoapi/bean/smsplatform/SendSmsRequest.java

@@ -0,0 +1,18 @@
+package com.bs.logisticslnfoapi.bean.smsplatform;
+
+import lombok.Data;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.bean.smsplatform
+ * @ClassName: SendSmsRequest
+ * @Description:
+ * @Author: liujs
+ * @Date: 2020/05/18 下午 13:56
+ * @Version: 1.0
+ */
+@Data
+public class SendSmsRequest {
+    private String token;
+    private String platform;
+    private String params;
+}

+ 68 - 0
src/main/java/com/bs/logisticslnfoapi/bean/smsplatform/mengwang/MengWangSendSmsBean.java

@@ -0,0 +1,68 @@
+package com.bs.logisticslnfoapi.bean.smsplatform.mengwang;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.bean.smsplatform.mengwang
+ * @ClassName: MengWangSendSmsBean
+ * @Description: 梦网发送短信实体类
+ * @Author: liujs
+ * @Date: 2020/05/20 下午 14:53
+ * @Version: 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MengWangSendSmsBean {
+    /**
+     * 用户账号:长度最大6个字符
+     * 示例:J10003
+     */
+    private String userid;
+    /**
+     * 用户密码:定长小写32位字符
+     * 示例:密码明文模式:111111   密码加密模式:26dad7f364507df18f3841cc9c4ff94d
+     */
+    private String pwd;
+    /**
+     * 短信接收的手机号:只能填一个手机号
+     * 示例:138xxxxxxxx
+     */
+    private String mobile;
+    /**
+     * 时间戳:24小时制格式:MMDDHHMMSS,即月日时分秒,定长10位,月、日、时、分、秒每段不足2位时左补0,密码选择MD5加密方式时必填该参数
+     * 示例:0803192020
+     */
+    private String timestamp;
+    /**
+     * 短信内容:最大支持1000个字(含签名),发送时请预留至少10个字符的签名长度,一个字母或一个汉字都视为一个字符
+     * 编码方式:urlencode(GBK明文)
+     * 示例:短信内容:“验证码:6666,打死都不要告诉别人哦!”
+     * 短信内容进行urlencode编码后:%d1%e9%d6%a4%c2%eb%a3%ba6666%a3%ac%b4%f2%cb%c0%b6%bc%b2%bb%d2%aa%b8%e6%cb%df%b1%f0%c8%cb%c5%b6%a3%a1
+     */
+    private String content;
+    /**
+     * 业务类型:最大可支持10个长度的英文字母、数字组合的字符串
+     * 示例:SMS001
+     */
+    private String svrtype;
+    /**
+     * 扩展号:长度不能超过6位,注意通道号+扩展号的总长度不能超过20位,若超出则exno无效
+     * 示例:0006
+     */
+    private String exno;
+    /**
+     * 用户自定义流水号:该条短信在您业务系统内的ID,比如订单号或者短信发送记录的流水号。填写后发送状态返回值内将包含用户自定义流水号。
+     * 最大可支持64位的ASCII字符串:字母、数字、下划线、减号
+     * 示例:b3d0a2783d31b21b8573
+     */
+    private String custid;
+    /**
+     * 自定义扩展数据:额外提供的最大64个长度的ASCII字符串:字母、数字、下划线、减号,作为自定义扩展数据,填写后,状态报告返回时将会包含这部分数据
+     */
+    private String exdata;
+}

+ 45 - 0
src/main/java/com/bs/logisticslnfoapi/bean/smsplatform/mengwang/MengWangSmsStatusReportBean.java

@@ -0,0 +1,45 @@
+package com.bs.logisticslnfoapi.bean.smsplatform.mengwang;
+
+import lombok.Data;
+import org.springframework.web.bind.annotation.ModelAttribute;
+
+import java.util.List;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.bean.smsplatform.mengwang
+ * @ClassName: MengWangSmsStatusReportBean
+ * @Description: TODO
+ * @Author: liujs
+ * @Date: 2020/05/20 下午 14:57
+ * @Version: 1.0
+ */
+@Data
+public class MengWangSmsStatusReportBean {
+    /**
+     * 用户账号:长度最大6个字符
+     * 示例:J10003
+     */
+    private String userid;
+    /**
+     * 用户密码:定长小写32位字符(已加密)
+     * 示例:26dad7f364507df18f3841cc9c4ff94d
+     */
+    private String pwd;
+    /**
+     * 时间戳:24小时制格式:MMDDHHMMSS,即月日时分秒,定长10位,月、日、时、分、秒每段不足2位时左补0,密码选择MD5加密方式时必填该参数
+     * 示例:0803192020
+     */
+    private String timestamp;
+    /**
+     * 推送状态报告请求命令:必须填RPT_REQ
+     */
+    private String cmd;
+    /**
+     * 请求消息流水号:匹配回应请求的短信包,每次网络请求加1
+     */
+    private int seqid;
+    /**
+     * 状态报告
+     */
+    private String rpts;
+}

+ 15 - 0
src/main/java/com/bs/logisticslnfoapi/bean/youxiansheng/YouXianShengGetPhoneParam.java

@@ -0,0 +1,15 @@
+package com.bs.logisticslnfoapi.bean.youxiansheng;
+
+import lombok.Data;
+
+/**
+ * @author LiuJS
+ * @Time 2021/4/28 10:37
+ * @Desc
+ * @Version 1.0
+ */
+@Data
+public class YouXianShengGetPhoneParam {
+    private String orderId;
+    private String sign;
+}

+ 23 - 0
src/main/java/com/bs/logisticslnfoapi/bean/yunda/YunDaRegisterSysBean.java

@@ -0,0 +1,23 @@
+package com.bs.logisticslnfoapi.bean.yunda;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * 韵达系统级参数<br>
+ *
+ * @className: YunDaRegisterSysBean
+ * @package: cn.haliaeetus.sendmessage.bean.express
+ * @author: kael
+ * @date: 2019/11/27 0027 上午 9:47
+ */
+@Data
+public class YunDaRegisterSysBean {
+    private String appkey;
+    private String method;
+    private String v = "1.0";
+    private String format;
+    private String sign;
+    private String url;
+    private String requestParam;
+}

+ 127 - 0
src/main/java/com/bs/logisticslnfoapi/bean/yunda/utils/ApiUtils.java

@@ -0,0 +1,127 @@
+package com.bs.logisticslnfoapi.bean.yunda.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.util.*;
+import java.util.logging.Logger;
+
+/**
+ * 〈功能概述〉<br>
+ *
+ * @className: ApiUtils
+ * @package: com.bs.logisticslnfoapi.bean.yunda.utils
+ * @author: kael
+ * @date: 2019/11/27 0027 上午 10:25
+ */
+@Slf4j
+public class ApiUtils {
+
+    private static final String utf8 = "UTF-8";
+
+    /**
+     * 使用<code>secret</code>对paramValues按以下算法进行签名: <br/>
+     * uppercase(hex(sha1(secretkey1value1key2value2...secret))
+     *
+     * @param paramNames  需要签名的参数名
+     * @param paramValues 参数列表
+     * @param secret
+     * @return
+     */
+    public static String sign(Map<String, String> paramValues, String secret) {
+        return sign(paramValues,null,secret);
+    }
+
+    /**
+     * 对paramValues进行签名,其中ignoreParamNames这些参数不参与签名
+     * @param paramValues
+     * @param ignoreParamNames
+     * @param secret
+     * @return
+     */
+    public static String sign(Map<String, String> paramValues, List<String> ignoreParamNames, String secret) {
+        try {
+            StringBuilder sb = new StringBuilder();
+            List<String> paramNames = new ArrayList<String>(paramValues.size());
+            paramNames.addAll(paramValues.keySet());
+            if(ignoreParamNames != null && ignoreParamNames.size() > 0){
+                for (String ignoreParamName : ignoreParamNames) {
+                    paramNames.remove(ignoreParamName);
+                }
+            }
+            Collections.sort(paramNames);
+
+            sb.append(secret);
+            for (String paramName : paramNames) {
+                sb.append(paramName).append(paramValues.get(paramName));
+            }
+            sb.append(secret);
+            //byte[] sha1Digest = getSHA1Digest(sb.toString());
+            //return byte2hex(sha1Digest)
+            byte[] md5Digest = getMD5Digest(sb.toString());
+            return byte2hex(md5Digest);
+        } catch (IOException e) {
+            log.error(e.getMessage());
+        }
+        return null;
+    }
+
+    public static String utf8Encoding(String value, String sourceCharsetName) {
+        try {
+            return new String(value.getBytes(sourceCharsetName), utf8);
+        } catch (UnsupportedEncodingException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
+    @SuppressWarnings("unused")
+    private static byte[] getSHA1Digest(String data) throws IOException {
+        byte[] bytes = null;
+        try {
+            MessageDigest md = MessageDigest.getInstance("SHA-1");
+            bytes = md.digest(data.getBytes(utf8));
+        } catch (GeneralSecurityException gse) {
+            throw new IOException(gse);
+        }
+        return bytes;
+    }
+
+    private static byte[] getMD5Digest(String data) throws IOException {
+        byte[] bytes = null;
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            bytes = md.digest(data.getBytes(utf8));
+        } catch (GeneralSecurityException gse) {
+            throw new IOException(gse);
+        }
+        return bytes;
+    }
+
+    /**
+     * 二进制转十六进制字符串
+     *
+     * @param bytes
+     * @return
+     */
+    private static String byte2hex(byte[] bytes) {
+        StringBuilder sign = new StringBuilder();
+        for (int i = 0; i < bytes.length; i++) {
+            String hex = Integer.toHexString(bytes[i] & 0xFF);
+            if (hex.length() == 1) {
+                sign.append("0");
+            }
+            sign.append(hex.toUpperCase());
+        }
+        return sign.toString();
+    }
+
+    public static String getUUID() {
+        UUID uuid = UUID.randomUUID();
+        return uuid.toString().toUpperCase();
+    }
+
+}

+ 35 - 0
src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/SmsReturnRequest.java

@@ -0,0 +1,35 @@
+package com.bs.logisticslnfoapi.bean.zhongtong;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @ClassName SmsReturnRequest
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/29 0029 下午 16:26
+ * @Version 1.0
+ **/
+@Data
+@Builder
+public class SmsReturnRequest extends ZhongTongRequest {
+
+    /**
+     * companyCode : 1000
+     * hallCode : test
+     * billCode : 680000000006
+     * mobile : 13333333333
+     * name : 王先生
+     * content : 您好,您的快递已到XXXX
+     * sendTime :  2019-04-19 15:23:34
+     */
+
+    private String companyCode;
+    private String hallCode;
+    private String billCode;
+    private String receiveMobile;
+    private String receiveName;
+    private String content;
+    private String sendTime;
+
+}

+ 129 - 0
src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZhongTongBackRequest.java

@@ -0,0 +1,129 @@
+package com.bs.logisticslnfoapi.bean.zhongtong;
+
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @ClassName ZhongTongBackRequest
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/27 0027 下午 15:59
+ * @Version 1.0
+ **/
+@Data
+@Builder
+public class ZhongTongBackRequest extends ZhongTongRequest{
+    /**
+     * 运单号
+     */
+    private String billCode;
+    /**
+     * 状态:寄件:PRIORA-寄件进站; PRIORD-寄件出站; PRIOR_EXC-寄件异常出站
+     *     派件:ARRIVAL-派件进站; SIGNED-派件出站; DEPARTURE-派件异常出站
+     */
+    private String status;
+    /**
+     * 状态发生时间
+     */
+    private Date staDate;
+    /**
+     * 品牌编号
+     */
+    private String comCode;
+    /**
+     * 品牌名称
+     */
+    private String comName;
+    /**
+     * 代理点名称
+     */
+    private String hallName;
+    /**
+     * 代理点编号
+     */
+    private String hallCode;
+    /**
+     * 代理点负责人电话
+     */
+    private String manOph;
+    /**
+     * 代理点省
+     */
+    private String hallProv;
+    /**
+     * 代理点市
+     */
+    private String hallCity;
+    /**
+     * 代理点区
+     */
+    private String hallCounty;
+    /**
+     * 代理点详细地址
+     */
+    private String hallAddress;
+    /**
+     * 业务员
+     */
+    private String deliverName;
+    /**
+     * 业务员编号
+     */
+    private String deliverCode;
+    /**
+     * 业务员电话
+     */
+    private String deliverPhone;
+    /**
+     * 收件人
+     */
+    private String signMan;
+    /**
+     * 收件人手机号码
+     */
+    private String resMobile;
+    /**
+     * 取件码
+     */
+    private String pickCode;
+    /**
+     * 收件人省
+     */
+    private String signManProv;
+    /**
+     * 收件人市
+     */
+    private String signManCity;
+    /**
+     * 收件人区
+     */
+    private String signCounty;
+    /**
+     * 收件人详细地址
+     */
+    private String signManAddress;
+    /**
+     * 支付类型:NOPAY-未支付 ;ONLINE-在线支付 ;CASH-现金支付; POS-POS刷卡支付
+     */
+    private String payType;
+    /**
+     * 金额(单位:元)
+     */
+    private String payMoney;
+    /**
+     * 异常类型(传值为对应的编号 例:“1”)
+     *     寄件异常出站:0-客户取消寄件 ; 1-代理点管理员出站 (转单);2-换单取消; 3-不符合中通寄件标准
+     *     派件异常出站:0-业务员取出;1-代理点管理员取;2-客户拒收
+     */
+    private String excType;
+    /**
+     * 合作商订单号
+     */
+    private String partnerCode;
+    /**
+     * 寄件取消原因
+     */
+    private String remark;
+}

+ 17 - 0
src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZhongTongRequest.java

@@ -0,0 +1,17 @@
+package com.bs.logisticslnfoapi.bean.zhongtong;
+
+import lombok.Data;
+
+/**
+ * @ClassName ZhongTongRequest
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/27 0027 下午 16:32
+ * @Version 1.0
+ **/
+@Data
+public class ZhongTongRequest {
+    private String companyId;
+    private String key;
+    private String apiName;
+}

+ 15 - 0
src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZhongTongStateGroup.java

@@ -0,0 +1,15 @@
+package com.bs.logisticslnfoapi.bean.zhongtong;
+
+import lombok.Data;
+
+/**
+ * @ClassName ZhongTongStateGroup
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/27 0027 下午 18:31
+ * @Version 1.0
+ **/
+@Data
+public class ZhongTongStateGroup {
+    private ZhongTongBackRequest stateGroup;
+}

+ 58 - 0
src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZhongTongStoreSynRequest.java

@@ -0,0 +1,58 @@
+package com.bs.logisticslnfoapi.bean.zhongtong;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @ClassName ZhongTongStoreSynRequest
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/27 0027 下午 13:59
+ * @Version 1.0
+ **/
+@Data
+@Builder
+public class ZhongTongStoreSynRequest extends ZhongTongRequest{
+
+    /**
+     * companyCode : 1000
+     * companyName : 中通
+     * hallAddress : 隆安路205号临潮一村
+     * hallCity : 上海市
+     * hallCityId : 310100
+     * hallCode : FC0211509
+     * hallDistrict : 金山区
+     * hallDistrictId : 310116
+     * hallManager : 丰巢客服
+     * hallName : 临潮一村(丰巢智能快递柜)
+     * hallProvince : 上海
+     * hallProvinceId : 310000
+     * manOph : 4000633333
+     * manPhone : 4000633333
+     * siteCode : 02100
+     * electFlag : true
+     * longitude :
+     * latitude :
+     */
+
+    private String companyCode;
+    private String companyName;
+    private String hallAddress;
+    private String hallCity;
+    private Integer hallCityId;
+    private String hallCode;
+    private String hallDistrict;
+    private Integer hallDistrictId;
+    private String hallManager;
+    private String hallName;
+    private String hallProvince;
+    private Integer hallProvinceId;
+    private String manOph;
+    private String manPhone;
+    private String siteCode;
+    private boolean electFlag;
+    private String longitude;
+    private String latitude;
+    private Integer hallType = 0;
+
+}

+ 28 - 0
src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZhongTongStoreSynResponse.java

@@ -0,0 +1,28 @@
+package com.bs.logisticslnfoapi.bean.zhongtong;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @ClassName ZhongTongStoreSynResponse
+ * @Description TODO
+ * @Author Administrator
+ * @Date 2019/8/27 0027 下午 14:45
+ * @Version 1.0
+ **/
+@Data
+@Builder
+public class ZhongTongStoreSynResponse {
+
+    /**
+     * result : null
+     * message : 操作成功
+     * status : true
+     * statusCode : 123
+     */
+
+    private String result;
+    private String message;
+    private boolean status;
+    private String statusCode;
+}

+ 21 - 0
src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZtoQueryMobileRequest.java

@@ -0,0 +1,21 @@
+package com.bs.logisticslnfoapi.bean.zhongtong;
+
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 〈功能概述〉<br>
+ *
+ * @className: ZtoQueryMobileRequest
+ * @package: com.parksong.beans.expparam
+ * @author: kael
+ * @date: 2020/1/7 3:14 下午
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Builder
+public class ZtoQueryMobileRequest extends ZhongTongRequest{
+    private String companyCode;
+    private String billCode;
+}

+ 28 - 0
src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZtoReceiveRequest.java

@@ -0,0 +1,28 @@
+package com.bs.logisticslnfoapi.bean.zhongtong;
+
+import lombok.Data;
+
+/**
+ * 中通短信回传<br>
+ *
+ * @className: ZtoReceiveRequest
+ * @package: cn.haliaeetus.sendmessage.utils.Zhongtong
+ * @author: kael
+ * @date: 2020/1/8 10:14 上午
+ */
+@Data
+public class ZtoReceiveRequest {
+
+    /**
+     * companyCode : ”1000”
+     *  billCode  :  73108525782365
+     * status : 1
+     *  message  : 发送成功
+     */
+
+    private String companyCode;
+    private String billCode;
+    private Integer status;
+    private String msgId;
+    private String message;
+}

+ 36 - 0
src/main/java/com/bs/logisticslnfoapi/bean/zhongtong/ZtoSendSmsRequest.java

@@ -0,0 +1,36 @@
+package com.bs.logisticslnfoapi.bean.zhongtong;
+
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 发送短信<br>
+ *
+ * @className: ZtoSendSmsRequest
+ * @package: cn.haliaeetus.sendmessage.utils.Zhongtong
+ * @author: kael
+ * @date: 2020/1/8 9:23 上午
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Builder
+public class ZtoSendSmsRequest extends ZhongTongRequest{
+
+    /**
+     * billCode : 890900133300
+     * companyCode : 88888888
+     * hallCode :  6666
+     * mobile : 13266666666
+     * name : 王先生
+     * sendCode : 098890
+     */
+
+    private String billCode;
+    private String companyCode;
+    private String hallCode;
+    private String mobile;
+    private String name;
+    private String sendCode;
+
+}

+ 120 - 0
src/main/java/com/bs/logisticslnfoapi/controller/AlibbController.java

@@ -0,0 +1,120 @@
+package com.bs.logisticslnfoapi.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.aliyuncs.CommonRequest;
+import com.aliyuncs.CommonResponse;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.http.MethodType;
+import com.aliyuncs.profile.DefaultProfile;
+import com.bs.logisticslnfoapi.bean.ApiLog;
+import com.bs.logisticslnfoapi.bean.alibb.AlibbQuerySmsDetailsRequest;
+import com.bs.logisticslnfoapi.bean.alibb.AlibbSendSmsRequest;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.Enum.PlatformEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+
+/**
+ * 阿里巴巴相关接口<br>
+ *
+ * @className: Alibb
+ * @package: com.bs.logisticslnfoapi.controller
+ * @author: kael
+ * @date: 2019/10/21 0021 上午 11:10
+ */
+@RestController
+@Slf4j
+@CrossOrigin("*")
+@RequestMapping(value ="/logistics/alibb")
+public class AlibbController {
+
+    @Autowired
+    private LogService logService;
+
+    /**
+     * 阿里巴巴短信发送接口
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/sendSms")
+    public Object alibbSendSms(@RequestBody AlibbSendSmsRequest request) throws Exception{
+        long startTime = System.currentTimeMillis();
+        log.info("【Alibb短信发送接口传入参数】:{}",JSON.toJSONString(request));
+        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", request.getAccessKeyId(), request.getAppSecret());
+        IAcsClient client = new DefaultAcsClient(profile);
+        CommonRequest commonRequest = new CommonRequest();
+        //系统参数
+        commonRequest.setDomain(request.getUrl());
+        commonRequest.setVersion("2017-05-25");
+        commonRequest.setAction("SendSms");
+        //业务参数
+        commonRequest.putQueryParameter("RegionId", "cn-hangzhou");
+        commonRequest.putQueryParameter("PhoneNumbers",request.getPhoneNumbers());
+        commonRequest.putQueryParameter("SignName",request.getSignName());
+        commonRequest.putQueryParameter("TemplateCode",request.getTemplateCode());
+        commonRequest.putQueryParameter("TemplateParam",JSON.toJSONString(request.getTemplateParam()));
+        CommonResponse response = client.getCommonResponse(commonRequest);
+        log.info("【Alibb短信发送接口返回参数】:{}",response.getData());
+        addLog(startTime, JSON.toJSONString(request), response,request.getUrl());
+        return response.getData();
+    }
+    /**
+     * 阿里巴巴短信结果查询
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/querySendDetails")
+    public Object alibbSmsQueryDetails(@RequestBody AlibbQuerySmsDetailsRequest request) throws Exception{
+        long startTime = System.currentTimeMillis();
+        log.info("【Alibb短信查询接口传入参数】:{}",JSON.toJSONString(request));
+
+        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", request.getAccessKeyId(), request.getAppSecret());
+        IAcsClient client = new DefaultAcsClient(profile);
+        CommonRequest commonRequest = new CommonRequest();
+        //系统参数
+        commonRequest.setMethod(MethodType.POST);
+        commonRequest.setDomain(request.getUrl());
+        commonRequest.setVersion("2017-05-25");
+        commonRequest.setAction("QuerySendDetails");
+        commonRequest.putQueryParameter("RegionId", "cn-hangzhou");
+        commonRequest.putQueryParameter("CurrentPage",request.getCurrentPage().toString());
+        commonRequest.putQueryParameter("PageSize",request.getPageSize().toString());
+        commonRequest.putQueryParameter("PhoneNumber",request.getPhoneNumber());
+        commonRequest.putQueryParameter("SendDate",request.getSendDate());
+        commonRequest.putQueryParameter("AccessKeyId",request.getAccessKeyId());
+        commonRequest.putQueryParameter("Action","QuerySendDetails");
+        commonRequest.putQueryParameter("BizId",request.getBizId());
+
+        CommonResponse response = client.getCommonResponse(commonRequest);
+        log.info("【Alibb短信回执接口返回参数】:{}",response.getData());
+        addLog(startTime, JSON.toJSONString(request), response,request.getUrl());
+        return response.getData();
+    }
+
+    /**
+     * 阿里调用接口新增日志
+     * @param startTime
+     * @param commonRequest
+     * @param response
+     */
+    private void addLog(long startTime, String request, CommonResponse response,String url) {
+        logService.install(ApiLog.builder()
+                .requestMsg(request)
+                .responseMsg(response == null ? "null" : response.getData())
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.ALBB.getEnValue())
+                .build());
+    }
+}

+ 270 - 0
src/main/java/com/bs/logisticslnfoapi/controller/CaiNiaoController.java

@@ -0,0 +1,270 @@
+package com.bs.logisticslnfoapi.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.bs.logisticslnfoapi.bean.ApiLog;
+import com.bs.logisticslnfoapi.bean.cainiao.CaiNiaoReceiveRequest;
+import com.bs.logisticslnfoapi.bean.cainiao.CaiNiaoRequest;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.Enum.PlatformEnum;
+import com.bs.logisticslnfoapi.util.HttpUtils;
+import com.bs.logisticslnfoapi.util.Md5Util;
+import com.bs.logisticslnfoapi.util.OkHttpUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.NameValuePair;
+import org.apache.http.message.BasicNameValuePair;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 〈功能概述〉<br>
+ *
+ * @className: CaiNiaoController
+ * @package: com.bs.logisticslnfoapi.controller
+ * @author: kael
+ * @date: 2019/11/28 0028 下午 17:03
+ */
+@RestController
+@Slf4j
+@CrossOrigin("*")
+@RequestMapping(value = "/logistics/cainiao")
+public class CaiNiaoController {
+
+    @Autowired
+    private LogService logService;
+
+    @Value("${sendmessageurl}")
+    private String sendmessageurl;
+
+    /**
+     * 菜鸟电子面单扩展信息查询
+     *
+     * @param request
+     * @param response
+     * @param caiNiaoRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/waybillExtendInfoQuery")
+    public Object caiNiaoWaybillExtendInfoQuery(HttpServletRequest request, HttpServletResponse response, @RequestBody CaiNiaoRequest caiNiaoRequest) throws Exception {
+        long startTime = System.currentTimeMillis();
+        log.info("菜鸟电子面单查询传入参数:" + JSON.toJSONString(caiNiaoRequest));
+        List<NameValuePair> list = new ArrayList<>();
+        list.add(new BasicNameValuePair("logistics_interface", caiNiaoRequest.getLogistics_interface()));
+        list.add(new BasicNameValuePair("logistic_provider_id", caiNiaoRequest.getLogistic_provider_id()));
+        list.add(new BasicNameValuePair("msg_type", caiNiaoRequest.getMsg_type()));
+        list.add(new BasicNameValuePair("data_digest", caiNiaoRequest.getData_digest()));
+        log.info("【菜鸟发送短信传入参数】:{}", JSON.toJSONString(list));
+        //http请求
+        String res = HttpUtils.getPostResult(caiNiaoRequest.getUrl().trim(), list, "utf-8", "utf-8");
+
+        log.info("【菜鸟电子面单查询返回参数:】{}", res);
+
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(caiNiaoRequest))
+                .responseMsg(res)
+                .url(caiNiaoRequest.getUrl())
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.CaiNiao.getEnValue())
+                .build());
+        return res;
+    }
+
+    /**
+     * 发送短信
+     *
+     * @param caiNiaoRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/smsSend")
+    public Object smsSend(@RequestBody CaiNiaoRequest caiNiaoRequest) throws Exception {
+        long startTime = System.currentTimeMillis();
+
+        List<NameValuePair> list = new ArrayList<>();
+        list.add(new BasicNameValuePair("logistics_interface", caiNiaoRequest.getLogistics_interface()));
+        list.add(new BasicNameValuePair("logistic_provider_id", caiNiaoRequest.getLogistic_provider_id()));
+        list.add(new BasicNameValuePair("msg_type", caiNiaoRequest.getMsg_type()));
+        list.add(new BasicNameValuePair("data_digest", Md5Util.caiNiaoDoSign(caiNiaoRequest.getLogistics_interface(), "UTF-8", caiNiaoRequest.getData_digest())));
+        log.info("【菜鸟发送短信传入参数】:{}", JSON.toJSONString(list));
+        //http请求
+        String result = HttpUtils.getPostResult(caiNiaoRequest.getUrl().trim(), list, "utf-8", "utf-8");
+        log.info("【菜鸟发送短信返回参数:】{}", result);
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(caiNiaoRequest))
+                .responseMsg(result)
+                .url(caiNiaoRequest.getMsg_type())
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform("CaiNiao")
+                .build());
+        return result;
+    }
+
+    @PostMapping(value = "/callback/receive")
+    public @ResponseBody
+    String CallBackReceive(@RequestParam("logistics_interface") String logisticsInterface,
+                           @RequestParam("data_digest") String dataGigest,
+                           @RequestParam("msg_type") String msgType,
+                           @RequestParam("msg_id") String msgId,
+                           @RequestParam("partner_code") String partnerCode,
+                           @RequestParam("from_code") String fromCode) {
+        long startTime = System.currentTimeMillis();
+        CaiNiaoReceiveRequest caiNiaoReceiveRequest = CaiNiaoReceiveRequest.builder()
+                .logisticsInterface(logisticsInterface)
+                .dataGigest(dataGigest)
+                .msgType(msgType)
+                .msgId(msgId)
+                .partnerCode(partnerCode)
+                .fromCode(fromCode)
+                .build();
+        String res = "";
+        try {
+            res = OkHttpUtil.postJson(sendmessageurl + "/sms/cainiao/receive", caiNiaoReceiveRequest);
+            logService.install(ApiLog.builder()
+                    .requestMsg(JSON.toJSONString(caiNiaoReceiveRequest))
+                    .responseMsg(res)
+                    .url("/logistics/cainiao/callback/receive")
+                    .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                    .createTime(new Date())
+                    .requestType(2)
+                    .platform("CaiNiao")
+                    .build());
+            log.info("【菜鸟短信回执】:{}", res);
+        } catch (Exception e) {
+            log.error("receive callback error :" + logisticsInterface, e);
+            return "{\"success\":\"false\",\"errorCode\":\"100\",\"errorMsg\":\"系统错误\"}";
+        }
+        // 返回对象response ,JSON或者XML 取决于您服务注册的格式
+        return res;
+    }
+
+    /**
+     * 菜鸟猜面单接口
+     *
+     * @param request
+     * @param response
+     * @param caiNiaoRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/getExpressCompanyByExpCode")
+    public Object getExpressCompanyByExpCode(HttpServletRequest request, HttpServletResponse response, @RequestBody CaiNiaoRequest caiNiaoRequest) throws Exception {
+        long startTime = System.currentTimeMillis();
+        log.info("菜鸟猜面单查询传入参数:" + JSON.toJSONString(caiNiaoRequest));
+        List<NameValuePair> list = new ArrayList<>();
+        list.add(new BasicNameValuePair("logistics_interface", caiNiaoRequest.getLogistics_interface()));
+        list.add(new BasicNameValuePair("logistic_provider_id", caiNiaoRequest.getLogistic_provider_id()));
+        list.add(new BasicNameValuePair("msg_type", caiNiaoRequest.getMsg_type()));
+        list.add(new BasicNameValuePair("to_code", caiNiaoRequest.getTo_code()));
+        list.add(new BasicNameValuePair("data_digest", caiNiaoRequest.getData_digest()));
+        log.info("【菜鸟猜面单接口传入参数】:{}", JSON.toJSONString(list));
+        //http请求
+        String res = HttpUtils.getPostResult(caiNiaoRequest.getUrl().trim(), list, "utf-8", "utf-8");
+        log.info("【菜鸟猜面单接口返回参数:】{}", res);
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(caiNiaoRequest))
+                .responseMsg(res)
+                .url(caiNiaoRequest.getUrl())
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.CaiNiao.getEnValue())
+                .build());
+        return res;
+    }
+
+    /**
+     * 快递入库,签收回传接口
+     *
+     * @param request
+     * @param response
+     * @param caiNiaoRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/caiNiaoSignBack")
+    public Object caiNiaoSignBack(HttpServletRequest request, HttpServletResponse response, @RequestBody CaiNiaoRequest caiNiaoRequest) throws Exception {
+        long startTime = System.currentTimeMillis();
+        log.info("菜鸟回传快递信息接口传入参数:" + JSON.toJSONString(caiNiaoRequest));
+        List<NameValuePair> list = new ArrayList<>();
+        list.add(new BasicNameValuePair("logistics_interface", caiNiaoRequest.getLogistics_interface()));
+        list.add(new BasicNameValuePair("logistic_provider_id", caiNiaoRequest.getLogistic_provider_id()));
+        list.add(new BasicNameValuePair("msg_type", caiNiaoRequest.getMsg_type()));
+        list.add(new BasicNameValuePair("to_code", caiNiaoRequest.getTo_code()));
+        list.add(new BasicNameValuePair("data_digest", caiNiaoRequest.getData_digest()));
+        log.info("【菜鸟回传快递信息接口传入参数】:{}", JSON.toJSONString(list));
+        //http请求
+        String res = HttpUtils.getPostResult(caiNiaoRequest.getUrl().trim(), list, "utf-8", "utf-8");
+        log.info("【菜鸟回传快递信息接口返回参数:】{}", res);
+
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(caiNiaoRequest))
+                .responseMsg(res)
+                .url(caiNiaoRequest.getUrl())
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.CaiNiao.getEnValue())
+                .build());
+        return res;
+    }
+
+    /**
+     * 用户触达数据反馈接口(菜鸟签收回传回执)
+     * @param logisticsInterface
+     * @param dataGigest
+     * @param msgType
+     * @param msgId
+     * @param partnerCode
+     * @param fromCode
+     * @return
+     */
+    @PostMapping(value = "/callback/receiveExpSignBack")
+    public @ResponseBody
+    String signBackReceive(@RequestParam("logistics_interface") String logisticsInterface,
+                           @RequestParam("data_digest") String dataGigest,
+                           @RequestParam("msg_type") String msgType,
+                           @RequestParam("msg_id") String msgId,
+                           @RequestParam("partner_code") String partnerCode,
+                           @RequestParam("from_code") String fromCode) {
+        long startTime = System.currentTimeMillis();
+        CaiNiaoReceiveRequest caiNiaoReceiveRequest = CaiNiaoReceiveRequest.builder()
+                .logisticsInterface(logisticsInterface)
+                .dataGigest(dataGigest)
+                .msgType(msgType)
+                .msgId(msgId)
+                .partnerCode(partnerCode)
+                .fromCode(fromCode)
+                .build();
+        String res = "";
+        log.info("参数:{}",caiNiaoReceiveRequest);
+        try {
+            res = OkHttpUtil.postJson(sendmessageurl + "/signBack/cainiao/receive", caiNiaoReceiveRequest);
+            logService.install(ApiLog.builder()
+                    .requestMsg(JSON.toJSONString(caiNiaoReceiveRequest))
+                    .responseMsg(res)
+                    .url("/logistics/cainiao/callback/receiveExpSignBack")
+                    .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                    .createTime(new Date())
+                    .requestType(2)
+                    .platform("CaiNiao")
+                    .build());
+            log.info("【菜鸟用户触达数据反馈回执】:{}", res);
+        } catch (Exception e) {
+            log.error("receive callback error :" + caiNiaoReceiveRequest, e);
+            return "{\"success\":\"false\",\"errorCode\":\"100\",\"errorMsg\":\"系统错误\"}";
+        }
+        // 返回对象response ,JSON或者XML 取决于您服务注册的格式
+        return res;
+    }
+}

+ 56 - 0
src/main/java/com/bs/logisticslnfoapi/controller/JhyController.java

@@ -0,0 +1,56 @@
+package com.bs.logisticslnfoapi.controller;
+
+import com.bs.logisticslnfoapi.bean.ResultBean;
+import com.bs.logisticslnfoapi.bean.YunDaBean;
+import com.bs.logisticslnfoapi.bean.jhy.JhyPhone;
+import com.bs.logisticslnfoapi.bean.jhy.JhyPhonePushRequest;
+import com.bs.logisticslnfoapi.bean.jhy.JhyPhoneStateRequest;
+import com.bs.logisticslnfoapi.service.jhy.JhyService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @ClassName JhyPhoneController
+ * @Description 居欢颜
+ * @Author kael
+ * @Date 2019/8/5 0005 上午 11:29
+ * @Version 1.0
+ **/
+@RestController
+@Slf4j
+@CrossOrigin("*")
+@RequestMapping(value ="/logistics/jhy/phone")
+public class JhyController {
+
+    @Autowired
+    private JhyService jhyService;
+
+    /**
+     * 新增电话号码
+     * @param appkey
+     * @param version
+     * @param data
+     * @param sign
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "/add", method = {RequestMethod.POST})
+    @ResponseBody
+    public ResultBean<Boolean> addPhone(String appkey,String version,String data,String sign) throws Exception{
+        return jhyService.addPhone(data);
+    }
+
+    @RequestMapping("/pushPhone")
+    public ResultBean<String> pushPhone(@RequestBody JhyPhonePushRequest jhyPhonePushRequest) throws Exception{
+        return new ResultBean<String>(jhyService.pushPhone(jhyPhonePushRequest));
+    }
+
+    @RequestMapping("/pushSign")
+    public ResultBean<String> pushPhone(@RequestBody JhyPhoneStateRequest jhyPhoneStateRequest) throws Exception{
+        return new ResultBean<String>(jhyService.pushSign(jhyPhoneStateRequest));
+    }
+}

+ 129 - 0
src/main/java/com/bs/logisticslnfoapi/controller/JiTuController.java

@@ -0,0 +1,129 @@
+package com.bs.logisticslnfoapi.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.bs.logisticslnfoapi.bean.ApiLog;
+import com.bs.logisticslnfoapi.bean.jitu.JiTuRequestBean;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.OkHttpUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * @author liujs
+ * @desc 极兔接口
+ */
+@RestController
+@Slf4j
+@CrossOrigin("*")
+@RequestMapping(value ="/logistics/jitu")
+public class JiTuController {
+
+    @Resource
+    private LogService logService;
+
+    /**
+     * 根据运单号查询收件人手机号
+     * @param jiTuRequestBean
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/query/mobile")
+    public String queryMobile(@RequestBody JiTuRequestBean jiTuRequestBean) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String requestParams = JSON.toJSONString(jiTuRequestBean);
+        log.info("极兔根据快递单号查询手机号接口传入参数:{}",requestParams);
+        String res = OkHttpUtil.get(jiTuRequestBean.getUrl());
+        log.info("极兔根据快递单号查询手机号接口返回结果:{}",res);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParams)
+                .responseMsg(res)
+                .url("/ecs/query/mobile")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform("JT")
+                .build());
+         return res;
+    }
+
+    /**
+     * 入库扫描
+     * @param jiTuRequestBean
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/enteringCabinetList/uploadData")
+    public String inboundScanning(@RequestBody JiTuRequestBean jiTuRequestBean) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String requestParams = JSON.toJSONString(jiTuRequestBean);
+        log.info("极兔入库扫描接口传入参数:{}",requestParams);
+        String res = OkHttpUtil.postJson(jiTuRequestBean.getUrl(),jiTuRequestBean.getJiTuDeliveryCabinetDTOList());
+        log.info("极兔入库扫描接口返回结果:{}",res);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParams)
+                .responseMsg(res)
+                .url("/ecs/enteringCabinetList/uploadData")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform("JT")
+                .build());
+        return res;
+    }
+
+    /**
+     * 出库扫描
+     * @param jiTuRequestBean
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/cabinet/sign")
+    public String outboundScanning(@RequestBody JiTuRequestBean jiTuRequestBean) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String requestParams = JSON.toJSONString(jiTuRequestBean);
+        log.info("极兔出库扫描接口传入参数:{}",requestParams);
+        String res = OkHttpUtil.postJson(jiTuRequestBean.getUrl(),jiTuRequestBean.getJiTuDeliveryCabinetDTOList());
+        log.info("极兔出库扫描接口返回结果:{}",res);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParams)
+                .responseMsg(res)
+                .url("/ecs/cabinet/sign")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform("JT")
+                .build());
+        return res;
+    }
+
+    /**
+     * 快件取出扫描(快递员/管理员取出重派件) --只是对接了这个接口 但是APP上没有实际应用
+     * @param jiTuRequestBean
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/cabinet/deliveryout")
+    public String deliveryOutScanning(@RequestBody JiTuRequestBean jiTuRequestBean) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String requestParams = JSON.toJSONString(jiTuRequestBean);
+        log.info("极兔快件取出扫描接口传入参数:{}",requestParams);
+        String res = OkHttpUtil.postJson(jiTuRequestBean.getUrl(),jiTuRequestBean.getJiTuDeliveryCabinetDTOList());
+        log.info("极兔快件取出扫描接口返回结果:{}",res);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParams)
+                .responseMsg(res)
+                .url("/ecs/cabinet/deliveryout")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform("JT")
+                .build());
+        return res;
+    }
+}

+ 754 - 0
src/main/java/com/bs/logisticslnfoapi/controller/LogisticsController.java

@@ -0,0 +1,754 @@
+package com.bs.logisticslnfoapi.controller;
+
+
+import com.alibaba.fastjson.JSON;
+import com.bs.logisticslnfoapi.bean.*;
+import com.bs.logisticslnfoapi.bean.pdd.*;
+import com.bs.logisticslnfoapi.bean.smsplatform.SendSmsRequest;
+import com.bs.logisticslnfoapi.bean.zhongtong.*;
+import com.bs.logisticslnfoapi.factory.smsPlatform.SmsPlatformFactory;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.*;
+import com.bs.logisticslnfoapi.util.Enum.PlatformEnum;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.pdd.pop.sdk.common.util.JsonUtil;
+import com.pdd.pop.sdk.http.PopClient;
+import com.pdd.pop.sdk.http.PopHttpClient;
+import com.pdd.pop.sdk.http.api.request.PddOpenMsgServiceSendExpressMsgRequest;
+import com.pdd.pop.sdk.http.api.response.PddOpenMsgServiceSendExpressMsgResponse;
+import com.zto.zop.ZopClient;
+import com.zto.zop.ZopPublicRequest;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.NameValuePair;
+import org.apache.http.message.BasicNameValuePair;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+import sun.misc.BASE64Encoder;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.*;
+
+@RestController
+@Slf4j
+@CrossOrigin("*")
+@RequestMapping(value = "/logistics")
+public class LogisticsController {
+
+
+    @Value("${sendmessageurl}")
+    private String sendmessageurl;
+
+    @Autowired
+    private LogService logService;
+
+    @Resource
+    private SmsPlatformFactory smsPlatformFactory;
+
+    @RequestMapping("hello")
+    public String test(){
+        return "Hello World";
+    }
+
+
+    @RequestMapping("/sign")
+    public Object signed(HttpServletRequest request, HttpServletResponse response, @RequestBody LogisticsParam logisticsParam) throws Exception {
+        //申通测试环境地址
+        /*String url = "http://3thpartyconsign-test.sto-express.cn:8111/stoPlatform/track/tmsTrace!getTraceNotify.action";*/
+        long startTime = System.currentTimeMillis();
+        //申通正式环境地址
+        String url = "http://yizhanAPI.stointl.com:22221/stoPlatform/track/tmsTrace!getTraceNotify.action";
+        LogisticsBean logisticsBean = new LogisticsBean();
+        logisticsBean.setMailNos(logisticsParam.getMailNos());
+        logisticsBean.setCnOrderCode(logisticsParam.getCnOrderCode());
+        logisticsBean.setTime(logisticsParam.getTime());
+        logisticsBean.setDesc(logisticsParam.getDesc());
+        logisticsBean.setAction(logisticsParam.getAction());
+        logisticsBean.setCity(logisticsParam.getCity());
+        logisticsBean.setStationName(logisticsParam.getStationName());
+        logisticsBean.setStationContact(logisticsParam.getStationContact());
+        logisticsBean.setStationId(logisticsParam.getStationId());
+        logisticsBean.setStationSource(logisticsParam.getStationSource());
+        logisticsBean.setPartnerName(logisticsParam.getPartnerName());
+        logisticsBean.setAuthCode(logisticsParam.getAuthCode());
+
+        String logistics_interface = RequestBuilder.buildPayRequestXml(logisticsBean);
+        System.out.println("logisticsBean:::::::::::" + JSONUtils.object2Json(logistics_interface));
+        Map map = new HashMap();
+        map.put("logistics_interface", logistics_interface);
+        map.put("msg_type", logisticsParam.getMsg_type());
+        // StoExpress89生产key   j9Ao12345TQy 测试key
+        /*String data_digest = (new BASE64Encoder()).encodeBuffer(Md5Util.md5(logistics_interface + "j9Ao12345TQy"));*/
+        String data_digest = (new BASE64Encoder()).encodeBuffer(Md5Util.md5(logistics_interface + "StoExpress89"));
+
+        map.put("data_digest", data_digest);
+        map.put("msg_id", logisticsParam.getMsg_id());
+        map.put("partner_code", logisticsParam.getPartner_code());
+        map.put("from_code", logisticsParam.getFrom_code());
+
+        System.out.println("data_digest:::::::" + data_digest + "MailNos:::::::" + logisticsParam.getMailNos() + "Action:::::::" + logisticsParam.getAction());
+        log.info("申通快递签收回传传入参数:{}",map);
+        String result = HttpUtil.doPost(url, map);
+        log.info("申通快递签收回传返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(map))
+                .responseMsg(result)
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.STO.getEnValue())
+                .build());
+        return result;
+    }
+
+    /**
+     * 韵达接口调用
+     *
+     * @param request
+     * @param response
+     * @param yunDaBean
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/yundaSign")
+    public Object yundaSign(HttpServletRequest request, HttpServletResponse response, @RequestBody YunDaBean yunDaBean) throws Exception {
+        long startTime = System.currentTimeMillis();
+        //韵达测试地址
+        /*String host = "http://dev.yundasys.com:15146/par_api/interface.php";*/
+        //韵达正式地址
+        // String host = "http://par.api.yundasys.com:10566/interface.php";
+        String host = "http://three.yundasys.com:32452/interface.php";
+        String xml = yunDaBean.getXmldata();
+        String partnerid = yunDaBean.getPartnerid();
+        String password = yunDaBean.getPassword();
+        YunDaSyStoreBean yunDaSyStoreBean = JSON.parseObject(xml, YunDaSyStoreBean.class);
+        xml = RequestBuilder.beanToXml(yunDaSyStoreBean, "<orders><order>", "</order></orders>");
+        BASE64Encoder encoder = new BASE64Encoder();
+        xml = encoder.encode(xml.getBytes());
+        String md5 = Md5Util.doSign(xml + partnerid + password);
+        List<NameValuePair> list = new ArrayList<>();
+        list.add(new BasicNameValuePair("partnerid", partnerid));//partnerid
+        list.add(new BasicNameValuePair("request", yunDaBean.getRequest()));
+        list.add(new BasicNameValuePair("version", yunDaBean.getVersion()));
+        list.add(new BasicNameValuePair("xmldata", xml));
+        list.add(new BasicNameValuePair("validation", md5));
+        //http请求
+        log.info("韵达快递签收回传入参:{}",list);
+        String result = HttpUtils.getPostResult(host.trim(), list, "utf-8", "utf-8");
+        log.info("韵达快递签收返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(yunDaBean.getXmldata())
+                .responseMsg(result)
+                .url(host.trim())
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.YD.getEnValue())
+                .build());
+        return result;
+    }
+
+    @RequestMapping("/yuantongSign")
+    public Object yuantongSign(HttpServletRequest request, HttpServletResponse response, @RequestBody YuantongBean yuantongBean) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String host = "http://interface.mamayz.com/stationin/post";
+       /* String host = "http://jingangtest.yto56.com.cn/stationin/post";*///圆通测试环境地址
+        String logistics_interface = "";
+        if ("1730".equals(yuantongBean.getOp_code())) {//驿站收入扫描:派件操作后业务员将快件给驿站时做的采集动作
+            YuantongInboundBean yuantongInboundBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongInboundBean.class);
+            logistics_interface = RequestBuilder.beanToXml(yuantongInboundBean);
+        } else if ("1735".equals(yuantongBean.getOp_code())) {//上架操作
+            YuantongShelvesBean yuantongShelvesBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongShelvesBean.class);
+            logistics_interface = RequestBuilder.beanToXml(yuantongShelvesBean);
+        } else if ("1745".equals(yuantongBean.getOp_code())) {//签收成功扫描:客户成功签收时做的采集动作
+            YuantongOutboundBean yuantongOutboundBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongOutboundBean.class);
+            logistics_interface = RequestBuilder.beanToXml(yuantongOutboundBean);
+        } else if ("0000".equals(yuantongBean.getOp_code())) {//驿站信息注册:注册驿站提供方驿站基本信息,获取驿站编码
+            YuantongSyStoreBean yuantongSyStoreBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongSyStoreBean.class);
+            logistics_interface = RequestBuilder.beanToXml(yuantongSyStoreBean);
+        } else if ("0001".equals(yuantongBean.getOp_code())) {//账户人员信息:账户名,姓名等
+            YuantongSyAcPersonBean yuantongSyAcPersonBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongSyAcPersonBean.class);
+            logistics_interface = RequestBuilder.beanToXml(yuantongSyAcPersonBean);
+        } else if ("0002".equals(yuantongBean.getOp_code())) {//修改账户信息(地址,联系电话)
+            YuantongSyUpStoreBean yuantongSyUpStoreBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongSyUpStoreBean.class);
+            logistics_interface = RequestBuilder.beanToXml(yuantongSyUpStoreBean);
+        } else if ("2000".equals(yuantongBean.getOp_code())) {//通知回传
+            host = "http://interface.mamayz.com/stationin/receipt";
+            YuantongReturnBean yuantongReturnBean = JSON.parseObject(yuantongBean.getLogistics_interface(), YuantongReturnBean.class);
+            logistics_interface = RequestBuilder.beanToXml(yuantongReturnBean);
+        }
+        String dataDigest = Md5Util.doSign(logistics_interface, "utf-8", yuantongBean.getKey());
+        Map map = new HashMap();
+        map.put("logistics_interface", URLEncoder.encode(logistics_interface, "UTF-8"));
+        map.put("data_digest", URLEncoder.encode(dataDigest, "UTF-8"));
+        map.put("customer_code", yuantongBean.getCustomer_code());
+        map.put("op_code", yuantongBean.getOp_code());
+        map.put("station_type", yuantongBean.getStation_type());
+        map.put("org_code", yuantongBean.getOrg_code());
+        log.info("圆通接口操作码:{};入参{}",yuantongBean.getOrg_code(),map);
+        String result = HttpUtils.sendPostReq(host.trim(), map, "utf-8", "utf-8");
+        log.info("圆通接口操作码:{};返回结果{}",yuantongBean.getOrg_code(),result);
+        logService.install(ApiLog.builder()
+                .requestMsg(logistics_interface)
+                .responseMsg(result)
+                .url(host)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.YT.getEnValue())
+                .build());
+        return result;
+    }
+
+    @RequestMapping("/creatBestExpStore")
+    public Object creatBestExpStore(HttpServletRequest request, HttpServletResponse response, @RequestBody List<BestLogisticsBean> bestLogisticsBeanList) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String url = "http://edi-q9.ns.800best.com/wuye/api/process";//百世接口
+        ReqBestLogisticsBean reqBestLogisticsBean = new ReqBestLogisticsBean();
+        Map<String, List<BestLogisticsBean>> bsetMap = new HashMap();
+        bsetMap.put("cabinetinfolist", bestLogisticsBeanList);
+        reqBestLogisticsBean.setBizData(bsetMap);
+        reqBestLogisticsBean.setPartnerID("fengzhan");
+        reqBestLogisticsBean.setPartnerKey("fe1902ng0510zhan");
+        reqBestLogisticsBean.setServiceType("CabinetSyncNotifyRequest");//UpdateStatusByMailNo CabinetSyncNotifyRequest
+        reqBestLogisticsBean.setDigest(JSON.toJSONString(reqBestLogisticsBean.getBizData()) + reqBestLogisticsBean.getPartnerKey());
+
+        Map map = new HashMap();
+        map.put("bizData", JSON.toJSONString(reqBestLogisticsBean.getBizData()));
+        map.put("serviceType", reqBestLogisticsBean.getServiceType());
+        map.put("partnerID", reqBestLogisticsBean.getPartnerID());
+        // imxiaomai产生   123456 测试key
+        String digest = Md5Util.makeSign(reqBestLogisticsBean.getDigest(), "UTF-8");
+        map.put("digest", digest);
+
+        System.out.println("digest:::::::" + digest + "bizData::::" + JSON.toJSONString(reqBestLogisticsBean.getBizData()));
+
+        String result = HttpUtil.doPost(url, map);
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(map))
+                .responseMsg(result)
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.HT.getEnValue())
+                .build());
+        return result;
+    }
+
+    @RequestMapping("/bestExpSign")
+    public Object bestExpSigned(HttpServletRequest request, HttpServletResponse response, @RequestBody UpdateBestLogisticsBean updateBestLogisticsBean) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String url = "http://edi-q9.ns.800best.com/wuye/api/process";//百世测试接口
+        ReqBestLogisticsBean reqBestLogisticsBean = new ReqBestLogisticsBean();
+        reqBestLogisticsBean.setPartnerID("fengzhan");
+        reqBestLogisticsBean.setPartnerKey("fe1902ng0510zhan");
+        reqBestLogisticsBean.setServiceType("UpdateStatusByMailNo");//UpdateStatusByMailNo CabinetSyncNotifyRequest
+        reqBestLogisticsBean.setDigest(JSON.toJSONString(updateBestLogisticsBean) + reqBestLogisticsBean.getPartnerKey());
+
+        Map map = new HashMap();
+        map.put("bizData", JSON.toJSONString(updateBestLogisticsBean));
+        map.put("serviceType", reqBestLogisticsBean.getServiceType());
+        map.put("partnerID", reqBestLogisticsBean.getPartnerID());
+        // imxiaomai产生   123456 测试key
+        String digest = Md5Util.makeSign(reqBestLogisticsBean.getDigest(), "UTF-8");
+        map.put("digest", digest);
+
+        System.out.println("digest:::::::" + digest + "bizData::::" + JSON.toJSONString(updateBestLogisticsBean));
+        log.info("百世快递签收回传入参:{}",map);
+        String result = HttpUtil.doPost(url, map);
+        log.info("百世快递签收回传返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(map))
+                .responseMsg(result)
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.HT.getEnValue())
+                .build());
+        return result;
+    }
+
+    /**
+     * 百世服务点抽检数据提交接口
+     * @param parameter
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/bestInspection")
+    public Object inspectionSubmit(@RequestBody Map<String,String> parameter) throws Exception {
+        log.info("传入参数:{}",parameter);
+        long startTime = System.currentTimeMillis();
+        String url = "http://edi-q9.ns.800best.com/wuye/api/process";//百世测试接口
+        ReqBestLogisticsBean reqBestLogisticsBean = new ReqBestLogisticsBean();
+        reqBestLogisticsBean.setPartnerID("fengzhan");
+        reqBestLogisticsBean.setPartnerKey("fe1902ng0510zhan");
+        reqBestLogisticsBean.setServiceType("inspectionSubmit");//UpdateStatusByMailNo CabinetSyncNotifyRequest
+        reqBestLogisticsBean.setDigest(JSON.toJSONString(parameter) + reqBestLogisticsBean.getPartnerKey());
+
+        Map map = new HashMap();
+        map.put("bizData", JSON.toJSONString(parameter));
+        map.put("serviceType", reqBestLogisticsBean.getServiceType());
+        map.put("partnerID", reqBestLogisticsBean.getPartnerID());
+        // imxiaomai产生   123456 测试key
+        String digest = Md5Util.makeSign(reqBestLogisticsBean.getDigest(), "UTF-8");
+        map.put("digest", digest);
+
+        System.out.println("digest:::::::" + digest + "bizData::::" + JSON.toJSONString(parameter));
+        log.info("百世服务点抽检数据提交接口传入参数:{}",map);
+        String result = HttpUtil.doPost(url, map);
+        log.info("百世服务点抽检数据提交接口返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(map))
+                .responseMsg(result)
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.HT.getEnValue())
+                .build());
+        return result;
+    }
+
+    @RequestMapping("/statusPush")
+    public Object statusPush(HttpServletRequest request, HttpServletResponse response, @RequestBody StatusPushParam statusPushParam) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String requestBody = JSONUtils.object2Json(statusPushParam);
+
+/*        String url = "http://test.sijiabox.com/sync/statusPush";
+        String key = "223063ee66a6";
+        String partnerId = "NX";*/
+        String url = "http://push.sijiabox.com/sync/statusPush";
+        String key = "2ba25f5c42164";
+        String partnerId = "BSO";
+
+        Map<String, String> headers = new HashMap<String, String>();
+        headers.put("Content-type", "application/json;charset=UTF-8");
+        headers.put("partnerID", partnerId);
+        headers.put("digest", EncryptionUtil.makeSign(requestBody, key));
+
+
+        String returnContent = HttpUtil.post(url, requestBody, headers);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestBody)
+                .responseMsg(returnContent)
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.YT.getEnValue())
+                .build());
+        return returnContent;
+    }
+
+
+    @RequestMapping("/bsPoint")
+    public Object bsPoint(HttpServletRequest request, HttpServletResponse response, @RequestBody BsPointParam bsPointParam) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String requestBody = JSONUtils.object2Json(bsPointParam);
+
+     /*   String url = "http://test.sijiabox.com/sync/bsPoint";
+        String key = "223063ee66a6";
+        String partnerId = "NX";*/
+        String url = "http://push.sijiabox.com/sync/statusPush";
+        String key = "2ba25f5c42164";
+        String partnerId = "BSO";
+
+        Map<String, String> headers = new HashMap<String, String>();
+        headers.put("Content-type", "application/json;charset=UTF-8");
+        headers.put("partnerID", partnerId);
+        headers.put("digest", EncryptionUtil.makeSign(requestBody, key));
+
+        String returnContent = HttpUtil.post(url, requestBody, headers);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestBody)
+                .responseMsg(returnContent)
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.HT.getEnValue())
+                .build());
+        return returnContent;
+    }
+
+
+    @RequestMapping("/ztPoint")
+    public Object ztPoint(HttpServletRequest request, HttpServletResponse response, @RequestBody ZtPointParam ztPointParam) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String requestBody = JSONUtils.object2Json(ztPointParam);
+
+/*        String url = "http://test.sijiabox.com/sync/ztPoint";
+        String key = "223063ee66a6";
+        String partnerId = "NX";*/
+        String url = "http://push.sijiabox.com/sync/statusPush";
+        String key = "2ba25f5c42164";
+        String partnerId = "BSO";
+
+        Map<String, String> headers = new HashMap<String, String>();
+        headers.put("Content-type", "application/json;charset=UTF-8");
+        headers.put("partnerID", partnerId);
+        headers.put("digest", EncryptionUtil.makeSign(requestBody, key));
+
+        String returnContent = HttpUtil.post(url, requestBody, headers);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestBody)
+                .responseMsg(returnContent)
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.ZT.getEnValue())
+                .build());
+        return returnContent;
+    }
+
+    @RequestMapping("/storeOutboundForHaikangweishi")
+    public Object storeOutboundForHaikangweishi(HttpServletRequest request, HttpServletResponse response, @RequestBody ReqHaiKangOutboundBean reqHaiKangOutboundBean) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String digest = Md5Util.makeSign(JSON.toJSONString(reqHaiKangOutboundBean.getBizData()) + "haikangin", "UTF-8");
+        ResultInfoBean resultInfoBean = new ResultInfoBean();
+        if (!digest.equals(reqHaiKangOutboundBean.getDigest())) {
+            resultInfoBean.setResultCode("01");
+            resultInfoBean.setResultMessage("验签失败");
+            return JSON.toJSONString(resultInfoBean);
+        }
+        String result = "不存在该业务类型";
+        if (reqHaiKangOutboundBean.getBizData().getExpCode() == null || "".equals(reqHaiKangOutboundBean.getBizData().getExpCode())) {
+            resultInfoBean.setResultCode("01");
+            resultInfoBean.setResultMessage("非法参数(expCode)");
+            return JSON.toJSONString(resultInfoBean);
+        }
+
+        if (reqHaiKangOutboundBean.getBizData().getStoreId() == null || "".equals(reqHaiKangOutboundBean.getBizData().getStoreId())) {
+            resultInfoBean.setResultCode("01");
+            resultInfoBean.setResultMessage("非法参数(storeId)");
+            return JSON.toJSONString(resultInfoBean);
+        }
+        String url = "";
+        if ("OutboundByExpCode".equals(reqHaiKangOutboundBean.getServiceType())) {
+            url = "http://app.fengzhan100.com/app/device/signflagByHaiKang";//供配接口
+            result = HttpUtil.doPostJson(url, JSON.toJSONString(reqHaiKangOutboundBean.getBizData()));
+            System.out.println(result);
+        } else if ("InboundByExpCode".equals(reqHaiKangOutboundBean.getServiceType())) {
+            url = "http://app.fengzhan100.com/app/device/onShelfScanByHaiKang";//供配接口
+            result = HttpUtil.doPostJson(url, JSON.toJSONString(reqHaiKangOutboundBean.getBizData()));
+        }
+        logService.install(ApiLog.builder()
+                .requestMsg(reqHaiKangOutboundBean != null ? JSON.toJSONString(reqHaiKangOutboundBean) : "null")
+                .responseMsg(result)
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(2)
+                .platform(PlatformEnum.HKWS.getEnValue())
+                .build());
+        return result;
+    }
+
+    @RequestMapping("/shentongGetPhone")
+    public Object shentongGetPhone(HttpServletRequest request, HttpServletResponse response, @RequestBody StGetPhoneParam stGetPhoneParam) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String url = "http://wutonggateway.sto.cn/trace-other/trace/queryReceiverInfo";//正式
+//        String url = "http://gateway-test.sto-express.cn:8088/trace-other/trace/queryReceiverInfo";
+        Map<String, String> headers = new HashMap<String, String>();
+        headers.put("appid", stGetPhoneParam.getAppid());
+        headers.put("timestamp", stGetPhoneParam.getTimestamp());
+        headers.put("nonce", stGetPhoneParam.getNonce());
+        headers.put("signature", EncryptionUtil.MD5forShenTong("waybillNo=" + stGetPhoneParam.getWaybillNo() + stGetPhoneParam.getTimestamp() + stGetPhoneParam.getNonce() + stGetPhoneParam.getKey()));
+        Map map = new HashMap();
+        map.put("waybillNo", stGetPhoneParam.getWaybillNo());
+        String returnContent = HttpUtil.doGetAddHeader(url, map, headers);
+        StGetPhoneResParm stGetPhoneResParm = JSON.parseObject(returnContent, StGetPhoneResParm.class);
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(map))
+                .responseMsg(returnContent)
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.STO.getEnValue())
+                .build());
+        return stGetPhoneResParm.getData();
+    }
+
+    /**
+     * 中通认证接口(包含新增和修改)
+     *
+     * @param request
+     * @param response
+     * @param zhongTongStoreSynRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/ztStoreAuth")
+    public Object ztStoreAuth(HttpServletRequest request, HttpServletResponse response, @RequestBody ZhongTongStoreSynRequest zhongTongStoreSynRequest) throws Exception {
+        Map<String, String> param = new Gson().fromJson(new Gson().toJson(zhongTongStoreSynRequest), new TypeToken<Map<String, String>>() {
+        }.getType());
+        param.remove("companyId");
+        param.remove("key");
+        param.remove("apiName");
+        log.info("中通认证接口传入参数" + new Gson().toJson(param));
+        return zhongTongHttp(param, zhongTongStoreSynRequest.getCompanyId(), zhongTongStoreSynRequest.getKey(), zhongTongStoreSynRequest.getApiName());
+    }
+
+    /**
+     * 中通入库和签收
+     *
+     * @param request
+     * @param response
+     * @param
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/ztSignback")
+    public Object ztSignback(HttpServletRequest request, HttpServletResponse response, @RequestBody ZhongTongBackRequest zhongTongBackRequest) throws Exception {
+        String companyId = zhongTongBackRequest.getCompanyId();
+        String key = zhongTongBackRequest.getKey();
+        String apiName = zhongTongBackRequest.getApiName();
+        zhongTongBackRequest.setCompanyId(null);
+        zhongTongBackRequest.setKey(null);
+        zhongTongBackRequest.setApiName(null);
+
+        Map<String, String> param = new HashMap<>();
+        param.put("stateGroup", JSON.toJSONString(zhongTongBackRequest));
+        log.info("中通入库签收接口传入参数" + JSON.toJSONString(param));
+        return zhongTongHttp(param, companyId, key, apiName);
+    }
+
+    /**
+     * 中通短信回传
+     *
+     * @param request
+     * @param response
+     * @param smsReturnRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/smsReturn")
+    public Object smsReturn(HttpServletRequest request, HttpServletResponse response, @RequestBody SmsReturnRequest smsReturnRequest) throws Exception {
+        Map<String, String> param = new Gson().fromJson(new Gson().toJson(smsReturnRequest), new TypeToken<Map<String, String>>() {
+        }.getType());
+        param.remove("companyId");
+        param.remove("key");
+        param.remove("apiName");
+        log.info("中通短信回传接口传入参数" + new Gson().toJson(param));
+        return zhongTongHttp(param, smsReturnRequest.getCompanyId(), smsReturnRequest.getKey(), smsReturnRequest.getApiName());
+    }
+
+    /**
+     * 中通获取电话号码
+     *
+     * @param request
+     * @param response
+     * @param ztoQueryMobileRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/ztoGetMobile")
+    public Object ztoGetMobile(HttpServletRequest request, HttpServletResponse response, @RequestBody ZtoQueryMobileRequest ztoQueryMobileRequest) throws Exception {
+        Map<String, String> param = new Gson().fromJson(new Gson().toJson(ztoQueryMobileRequest), new TypeToken<Map<String, String>>() {
+        }.getType());
+        param.remove("companyId");
+        param.remove("key");
+        param.remove("apiName");
+        log.info("中通获取电话号码接口传入参数" + new Gson().toJson(param));
+        return zhongTongHttp(param, ztoQueryMobileRequest.getCompanyId(), ztoQueryMobileRequest.getKey(), ztoQueryMobileRequest.getApiName());
+    }
+
+    @RequestMapping("/ztoBillAnalysis")
+    public Object ztoBillAnalysis(@RequestBody ZtoQueryMobileRequest ztoRequest) throws IOException {
+        Map<String, String> param = new HashMap<>();
+        param.put("billCode", ztoRequest.getBillCode());
+        return zhongTongHttp(param, ztoRequest.getCompanyId(), ztoRequest.getKey(), ztoRequest.getApiName());
+    }
+
+    /**
+     * 中通发送短信
+     *
+     * @param request
+     * @param response
+     * @param
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/ztoSendSms")
+    public Object ztoSendSms(HttpServletRequest request, HttpServletResponse response, @RequestBody ZtoSendSmsRequest ztoSendSmsRequest) throws Exception {
+        Map<String, String> param = new Gson().fromJson(new Gson().toJson(ztoSendSmsRequest), new TypeToken<Map<String, String>>() {
+        }.getType());
+        param.remove("companyId");
+        param.remove("key");
+        param.remove("apiName");
+        log.info("中通发送短信接口传入参数" + new Gson().toJson(param));
+        return zhongTongHttp(param, ztoSendSmsRequest.getCompanyId(), ztoSendSmsRequest.getKey(), ztoSendSmsRequest.getApiName());
+    }
+
+    private String zhongTongHttp(Map<String, String> map, String companyId, String key, String url) throws IOException {
+        long startTime = System.currentTimeMillis();
+        ZopClient client = new ZopClient(companyId, key);
+        ZopPublicRequest zopPublicRequest = new ZopPublicRequest();
+        zopPublicRequest.addParam(map);
+        zopPublicRequest.setUrl(url);
+        String refunt = client.execute(zopPublicRequest);
+//        logService.install(ApiLog.builder()
+//                .requestMsg(JSON.toJSONString(map))
+//                .responseMsg(refunt)
+//                .url(url)
+//                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+//                .createTime(new Date())
+//                .requestType(1)
+//                .platform(PlatformEnum.ZT.getEnValue())
+//                .build());
+        return refunt;
+    }
+
+    /**
+     * 订单查询接口
+     *
+     * @param request
+     * @param response
+     * @param orderQueryInfo
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/pddPhoneQuery")
+    public Object pddPhoneQuery(HttpServletRequest request, HttpServletResponse response, @RequestBody OrderQueryInfo orderQueryInfo) throws Exception {
+        log.info("拼多多订单查询接口传入参数:" + JSON.toJSONString(orderQueryInfo));
+        return invoke(orderQueryInfo);
+    }
+
+    /**
+     * 基础信息同步接口
+     *
+     * @param request
+     * @param response
+     * @param cabinetInfoRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/pddAuth")
+    public Object pddAuth(HttpServletRequest request, HttpServletResponse response, @RequestBody CabinetInfoRequest cabinetInfoRequest) throws Exception {
+        log.info("拼多多基础信息同步接口传入参数:" + JSON.toJSONString(cabinetInfoRequest));
+        return invoke(cabinetInfoRequest);
+    }
+
+    /**
+     * 消息通知接口
+     *
+     * @param request
+     * @param response
+     * @param inOutBoundRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/pddSignBack")
+    public Object pddSignBack(HttpServletRequest request, HttpServletResponse response, @RequestBody InOutBoundRequest inOutBoundRequest) throws Exception {
+        log.info("拼多多消息通知接口传入参数:" + JSON.toJSONString(inOutBoundRequest));
+        return invoke(inOutBoundRequest);
+    }
+
+    public <T extends PddRequest> Object invoke(T t) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String partner_id = t.getPartner_id();
+        String secret = t.getSecret();
+        String url = t.getApiName();
+        String json = JSON.toJSONString(PddUtil.paramHandle(t));
+        log.info("真实参数:" + json);
+        Object refunt = PddUtil.pddPush(json, partner_id, secret, url);
+        logService.install(ApiLog.builder()
+                .requestMsg(json)
+                .responseMsg(refunt != null ? JSON.toJSONString(refunt) : "null")
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.PDD.getEnValue())
+                .build());
+        return refunt;
+    }
+
+
+    /**
+     * 拼多多发送短信接口
+     *
+     * @param request
+     * @param response
+     * @param
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/pddSendSms")
+    public Object pddSendSms(HttpServletRequest request, HttpServletResponse response, @RequestBody PddSendSmsData pddRequest) throws Exception {
+        long startTime = System.currentTimeMillis();
+        log.info("【拼多多发送短信接口传入参数】:{}", JSON.toJSONString(pddRequest));
+        PopClient client = new PopHttpClient(pddRequest.getClientId(), pddRequest.getClientSecret());
+        PddOpenMsgServiceSendExpressMsgRequest sendRequest = new PddOpenMsgServiceSendExpressMsgRequest();
+        // 签名名称 在pdd开放平台配置
+        sendRequest.setSignName("蜂站");
+        // 短信模板id,在pdd开放平台配置
+        sendRequest.setTemplateCode(1L);
+        sendRequest.setTemplateParamJson(pddRequest.getTemplateParamJson());
+        sendRequest.setWaybillCodes(pddRequest.getWaybillCodes());
+        sendRequest.setWpCode(pddRequest.getWpCode());
+        PddOpenMsgServiceSendExpressMsgResponse pddResponse = client.syncInvoke(sendRequest);
+        String resp = JsonUtil.transferToJson(pddResponse);
+        log.info("【拼多多发送短信接口返回参数:】{}", resp);
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(sendRequest))
+                .responseMsg(resp)
+                .url("拼多多发送短信接口")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.PDD.getEnValue())
+                .build());
+        return resp;
+    }
+
+    /**
+     * 拼多多短信回调接口
+     *
+     * @param request
+     * @param response
+     * @param pddRequest
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/pddSmsReceipt")
+    public Object pddSmsReceipt(HttpServletRequest request, HttpServletResponse response, @RequestBody PddSmsReceiptRequest pddRequest) throws Exception {
+        long startTime = System.currentTimeMillis();
+        log.info("拼多多短信回执接口传入参数:" + JSON.toJSONString(pddRequest));
+        String res = OkHttpUtil.postJson(sendmessageurl + "/sms/updateSmsRecord", pddRequest);
+        log.info("【拼多多短信回执接口返回参数:】{}", res);
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(pddRequest))
+                .responseMsg(res)
+                .url(sendmessageurl + "/sms/updateSmsRecord")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(2)
+                .platform(PlatformEnum.PDD.getEnValue())
+                .build());
+        return res;
+    }
+
+
+    /**
+     * 统一发送短信接口
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/baseSendSms")
+    public String baseSendSms(@RequestBody SendSmsRequest request) throws Exception {
+        log.info("短信的发送平台为:{}",request.getPlatform());
+        return smsPlatformFactory.getSmsPlatform(request.getPlatform()).sendSms(request.getParams());
+    }
+}

+ 193 - 0
src/main/java/com/bs/logisticslnfoapi/controller/ShenTongController.java

@@ -0,0 +1,193 @@
+package com.bs.logisticslnfoapi.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.bs.logisticslnfoapi.bean.ApiLog;
+import com.bs.logisticslnfoapi.bean.shentong.ShenTongRequestBean;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.Enum.PlatformEnum;
+import com.sto.link.request.LinkRequest;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+import static com.sto.link.util.LinkUtils.request;
+
+/**
+ * @author liujs
+ * @desc 申通接口
+ */
+@RestController
+@Slf4j
+@CrossOrigin("*")
+@RequestMapping(value ="/logistics/shentong")
+public class ShenTongController {
+
+    @Resource
+    private LogService logService;
+
+    /**
+     * 末端驿站列表
+     * @param shentongRequestBean
+     * @return
+     */
+    @RequestMapping("/site/getStationsList")
+    public String getStationsList(@RequestBody ShenTongRequestBean shentongRequestBean){
+        long startTime = System.currentTimeMillis();
+        String requestParam = JSON.toJSONString(shentongRequestBean);
+        LinkRequest data = getData(shentongRequestBean);
+        log.info("申通末端驿站列表接口传入参数:{}",requestParam);
+        String result = request(data,shentongRequestBean.getUrl(),shentongRequestBean.getSecretKey());
+        log.info("申通末端驿站列表接口返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParam)
+                .responseMsg(result)
+                .url("SITE_OPERATION_ENDPOINT_LIST")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.STO.getEnValue())
+                .build());
+        return result;
+    }
+
+    /**
+     * 末端品牌信息查询
+     * @param shentongRequestBean
+     * @return
+     */
+    @RequestMapping("/site/getStationInfo")
+    public String getStationInfo(@RequestBody ShenTongRequestBean shentongRequestBean){
+        long startTime = System.currentTimeMillis();
+        String requestParam = JSON.toJSONString(shentongRequestBean);
+        LinkRequest data = getData(shentongRequestBean);
+        log.info("申通末端品牌信息查询接口传入参数:{}",requestParam);
+        String result = request(data,shentongRequestBean.getUrl(),shentongRequestBean.getSecretKey());
+        log.info("申通末端品牌信息查询接口返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParam)
+                .responseMsg(result)
+                .url("SITE_OPERATION_ENDPOINT_GET_INFO")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.STO.getEnValue())
+                .build());
+        return result;
+    }
+
+    /**
+     * 末端品牌驿站注册
+     * @param shentongRequestBean
+     * @return
+     */
+    @RequestMapping("/site/registerStore")
+    public String registerStore(@RequestBody ShenTongRequestBean shentongRequestBean){
+        long startTime = System.currentTimeMillis();
+        String requestParam = JSON.toJSONString(shentongRequestBean);
+        LinkRequest data = getData(shentongRequestBean);
+        log.info("申通末端品牌驿站注册接口传入参数:{}",requestParam);
+        String result = request(data,shentongRequestBean.getUrl(),shentongRequestBean.getSecretKey());
+        log.info("申通末端品牌驿站注册接口返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParam)
+                .responseMsg(result)
+                .url("SITE_OPERATION_ENDPOINT_REGISTER")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.STO.getEnValue())
+                .build());
+        return result;
+    }
+
+    /**
+     * 末端品牌驿站信息修改
+     * @param shentongRequestBean
+     * @return
+     */
+    @RequestMapping("/site/updateStoreInfo")
+    public String updateStoreInfo(@RequestBody ShenTongRequestBean shentongRequestBean){
+        long startTime = System.currentTimeMillis();
+        String requestParam = JSON.toJSONString(shentongRequestBean);
+        LinkRequest data = getData(shentongRequestBean);
+        log.info("申通末端品牌驿站信息修改接口传入参数:{}",requestParam);
+        String result = request(data,shentongRequestBean.getUrl(),shentongRequestBean.getSecretKey());
+        log.info("申通末端品牌驿站信息修改接口返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParam)
+                .responseMsg(result)
+                .url("SITE_OPERATION_ENDPOINT_MODIFY")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.STO.getEnValue())
+                .build());
+        return result;
+    }
+
+    /**
+     * 末端品牌状态修改
+     * @param shentongRequestBean
+     * @return
+     */
+    @RequestMapping("/site/changeStatus")
+    public String changeStatus(@RequestBody ShenTongRequestBean shentongRequestBean){
+        long startTime = System.currentTimeMillis();
+        String requestParam = JSON.toJSONString(shentongRequestBean);
+        LinkRequest data = getData(shentongRequestBean);
+        log.info("申通末端品牌状态修改接口传入参数:{}",requestParam);
+        String result = request(data,shentongRequestBean.getUrl(),shentongRequestBean.getSecretKey());
+        log.info("申通末端品牌状态修改接口返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParam)
+                .responseMsg(result)
+                .url("SITE_OPERATION_ENDPOINT_CHANGE_STATUS")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.STO.getEnValue())
+                .build());
+        return result;
+    }
+
+    /**
+     * 驿站类扫描数据上传接口
+     * @param shentongRequestBean
+     * @return
+     */
+    @RequestMapping("/scanAndUplodaMsgByStation")
+    public String scanAndUplodaMsgByStation(@RequestBody ShenTongRequestBean shentongRequestBean){
+        long startTime = System.currentTimeMillis();
+        String requestParam = JSON.toJSONString(shentongRequestBean);
+        LinkRequest data = getData(shentongRequestBean);
+        log.info("申通驿站类扫描数据上传接口接口传入参数:{}",requestParam);
+        String result = request(data,shentongRequestBean.getUrl(),shentongRequestBean.getSecretKey());
+        log.info("申通驿站类扫描数据上传接口接口返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParam)
+                .responseMsg(result)
+                .url("GALAXY_RECEIVE_SCAN_MESSAGE_STATION")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.STO.getEnValue())
+                .build());
+        return result;
+    }
+
+    private LinkRequest getData(ShenTongRequestBean shentongRequestBean) {
+        LinkRequest linkRequest = new LinkRequest();
+        linkRequest.setFromAppkey(shentongRequestBean.getFrom_appkey());
+        linkRequest.setFromCode(shentongRequestBean.getFrom_code());
+        linkRequest.setToAppkey(shentongRequestBean.getTo_appkey());
+        linkRequest.setToCode(shentongRequestBean.getTo_code());
+        linkRequest.setApiName(shentongRequestBean.getApi_name());
+        linkRequest.setContent(shentongRequestBean.getContent());
+        return linkRequest;
+    }
+}

+ 58 - 0
src/main/java/com/bs/logisticslnfoapi/controller/YouXianShengController.java

@@ -0,0 +1,58 @@
+package com.bs.logisticslnfoapi.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.bs.logisticslnfoapi.bean.ApiLog;
+import com.bs.logisticslnfoapi.bean.youxiansheng.YouXianShengGetPhoneParam;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.OkHttpUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author LiuJS
+ * @Time 2021/4/28 10:44
+ * @Desc 优鲜生接口
+ * @Version 1.0
+ */
+@RestController
+@Slf4j
+@CrossOrigin("*")
+@RequestMapping(value ="logistics/youxiansheng")
+public class YouXianShengController {
+
+    @Resource
+    private LogService logService;
+
+    /**
+     * 获取订单信息接口
+     * @param youXianShengGetPhoneParam
+     * @return
+     */
+    @PostMapping("static/getAddress")
+    public String getAddress(@RequestBody YouXianShengGetPhoneParam youXianShengGetPhoneParam) throws Exception {
+        long startTime = System.currentTimeMillis();
+        String requestParam = JSON.toJSONString(youXianShengGetPhoneParam);
+        log.info("优鲜生获取订单信息接口传入参数:{}",requestParam);
+        Map<String, String> queryMap = new HashMap<>(2);
+        queryMap.put("orderId",youXianShengGetPhoneParam.getOrderId());
+        queryMap.put("sign",youXianShengGetPhoneParam.getSign());
+        //测试地址http://139.196.74.165:8074/static/getAddress
+        String result = OkHttpUtil.get("https://applet.uxskj.com/static/getAddress", queryMap);
+        log.info("优鲜生获取订单信息接口返回结果:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(requestParam)
+                .responseMsg(result)
+                .url("static/getAddress")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform("YXS")
+                .build());
+        return result;
+    }
+}

+ 74 - 0
src/main/java/com/bs/logisticslnfoapi/controller/YunDaController.java

@@ -0,0 +1,74 @@
+package com.bs.logisticslnfoapi.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.bs.logisticslnfoapi.bean.ApiLog;
+import com.bs.logisticslnfoapi.bean.yunda.YunDaRegisterSysBean;
+import com.bs.logisticslnfoapi.bean.yunda.utils.ApiUtils;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.Enum.PlatformEnum;
+import com.bs.logisticslnfoapi.util.HttpUtils;
+import com.bs.logisticslnfoapi.util.OkHttpUtil;
+import com.google.gson.Gson;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.NameValuePair;
+import org.apache.http.message.BasicNameValuePair;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.*;
+
+/**
+ * 韵达接口<br>
+ *
+ * @className: YunDaController
+ * @package: com.bs.logisticslnfoapi.controller
+ * @author: kael
+ * @date: 2019/11/27 0027 上午 10:07
+ */
+@RestController
+@Slf4j
+@CrossOrigin("*")
+@RequestMapping(value ="/logistics/yunda")
+public class YunDaController {
+
+    @Autowired
+    private LogService logService;
+
+    /**
+     * 韵达接口调用
+     * @param yunDaBean
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/yundaRegister")
+    public Object yundaSign(@RequestBody YunDaRegisterSysBean yunDaRegisterSysBean) throws Exception{
+        long startTime = System.currentTimeMillis();
+        String host = yunDaRegisterSysBean.getUrl().trim();
+        yunDaRegisterSysBean.setUrl("");
+        Map<String,String> param = new HashMap<>();
+        param = new Gson().fromJson(yunDaRegisterSysBean.getRequestParam(),param.getClass());
+        param.put("appkey",yunDaRegisterSysBean.getAppkey());
+        param.put("method",yunDaRegisterSysBean.getMethod());
+        param.put("v",yunDaRegisterSysBean.getV());
+        param.put("format",yunDaRegisterSysBean.getFormat());
+        param.put("sign", ApiUtils.sign(param,yunDaRegisterSysBean.getSign()));
+        log.info("韵达请求:{}",new Gson().toJson(param));
+        //http请求
+        String result = OkHttpUtil.get(host,param);
+        log.info("韵达响应:{}",result);
+        logService.install(ApiLog.builder()
+                .requestMsg(yunDaRegisterSysBean.getFormat())
+                .responseMsg(result)
+                .url(host)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.YD.getEnValue())
+                .build());
+        return result;
+    }
+}

+ 59 - 0
src/main/java/com/bs/logisticslnfoapi/controller/ZtoController.java

@@ -0,0 +1,59 @@
+package com.bs.logisticslnfoapi.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.bs.logisticslnfoapi.bean.ApiLog;
+import com.bs.logisticslnfoapi.bean.zhongtong.ZtoReceiveRequest;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.OkHttpUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+/**
+ * 〈功能概述〉<br>
+ *
+ * @className: ZtoController
+ * @package: com.bs.logisticslnfoapi.controller
+ * @author: kael
+ * @date: 2020/1/9 2:15 下午
+ */
+@RestController
+@Slf4j
+@CrossOrigin("*")
+@RequestMapping(value = "/logistics/zto")
+public class ZtoController {
+
+    @Autowired
+    private LogService logService;
+
+    @Value("${sendmessageurl}")
+    private String sendmessageurl;
+
+    @PostMapping(value = "/callback/receive")
+    public @ResponseBody String callBackReceive(@RequestBody ZtoReceiveRequest request) {
+        long startTime = System.currentTimeMillis();
+        String res = "";
+        try {
+            log.info("【中通短信回执传入参数】:{}",JSON.toJSONString(request));
+            res = OkHttpUtil.postJson(sendmessageurl + "/sms/zto/receive", request);
+            logService.install(ApiLog.builder()
+                    .requestMsg(JSON.toJSONString(request))
+                    .responseMsg(res)
+                    .url("/logistics/zto/callback/receive")
+                    .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                    .createTime(new Date())
+                    .requestType(2)
+                    .platform("ZTO")
+                    .build());
+            log.info("【中通短信回执】:{}",res);
+        } catch (Exception e) {
+            log.error("receive callback error :", e);
+            return "{\"success\":\"false\",\"errorCode\":\"100\",\"errorMsg\":\"系统错误\"}";
+        }
+        // 返回对象response ,JSON或者XML 取决于您服务注册的格式
+        return res;
+    }
+}

+ 40 - 0
src/main/java/com/bs/logisticslnfoapi/exceptions/APIBusinessException.java

@@ -0,0 +1,40 @@
+package com.bs.logisticslnfoapi.exceptions;
+
+public class APIBusinessException extends BusinessException {
+	private static final long serialVersionUID = 4985121904357929534L;
+	
+	private int code;
+	
+	public APIBusinessException() {
+	}
+
+	public APIBusinessException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public APIBusinessException(String message) {
+		super(message);
+	}
+
+	public APIBusinessException(Throwable cause) {
+		super(cause);
+	}
+	
+	public APIBusinessException(int code, String message, Throwable cause) {
+		super(message, cause);
+		this.code = code;
+	}
+	
+	public APIBusinessException(int code, String message) {
+		super(message);
+		this.code = code;
+	}
+
+	public int getCode() {
+		return code;
+	}
+
+	public void setCode(int code) {
+		this.code = code;
+	}
+}

+ 59 - 0
src/main/java/com/bs/logisticslnfoapi/exceptions/BaseException.java

@@ -0,0 +1,59 @@
+/**
+ * @FileName: BaseException.java
+ * @Package cn.haliaeetus.framework.base.exception
+ * 
+ * @author warship
+ * @created 2013年11月22日 下午3:56:00
+ * 
+ * Copyright 2013-2050 佰颂物联 版权所有
+ */
+package com.bs.logisticslnfoapi.exceptions;
+
+/**
+ * <p>异常基类</p>
+ * 
+ * @author warship
+ * @since 1.0
+ * @version 1.0
+ */
+public abstract class BaseException extends RuntimeException {
+	
+	private static final long serialVersionUID = 4061837650459227967L;
+
+	/**
+	 * 构造器
+	 * 
+	 */
+	public BaseException() {
+		super();
+	}
+
+	/**
+	 * 构造器
+	 * 
+	 * @param message	异常详细信息
+	 * @param cause	异常原因
+	 */
+	public BaseException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	/**
+	 * 构造器
+	 * 
+	 * @param message	异常详细信息
+	 */
+	public BaseException(String message) {
+		super(message);
+	}
+
+	/**
+	 * 构造器
+	 * 
+	 * @param cause	异常原因
+	 */
+	public BaseException(Throwable cause) {
+		super(cause);
+	}
+
+}

+ 39 - 0
src/main/java/com/bs/logisticslnfoapi/exceptions/BusinessException.java

@@ -0,0 +1,39 @@
+/**
+ * @FileName: BusinessException.java
+ * @Package cn.haliaeetus.framework.base.exception
+ * 
+ * @author warship
+ * @created 2013年11月22日 下午3:58:48
+ * 
+ * Copyright 2013-2050 佰颂物联 版权所有
+ */
+package com.bs.logisticslnfoapi.exceptions;
+
+/**
+ * <p>业务异常</p>
+ * 
+ * @author warship
+ * @since 1.0
+ * @version 1.0
+ */
+public class BusinessException extends BaseException {
+
+	private static final long serialVersionUID = -4902153677077364421L;
+
+	public BusinessException() {
+		super();
+	}
+
+	public BusinessException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public BusinessException(String message) {
+		super(message);
+	}
+
+	public BusinessException(Throwable cause) {
+		super(cause);
+	}
+	
+}

+ 20 - 0
src/main/java/com/bs/logisticslnfoapi/factory/smsPlatform/BaseSmsPlatform.java

@@ -0,0 +1,20 @@
+package com.bs.logisticslnfoapi.factory.smsPlatform;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.factory.smsPlatform
+ * @ClassName: BaseSmsPlatform
+ * @Description: 简单工厂_短信平台基类
+ * @Author: liujs
+ * @Date: 2020/05/18 上午 10:31
+ * @Version: 1.0
+ */
+public interface BaseSmsPlatform {
+
+    /**
+     * 发送短信
+     * @param params 发送短信参数
+     * @return 返回结果
+     * @throws Exception 异常
+     */
+    String sendSms(String params) throws Exception;
+}

+ 28 - 0
src/main/java/com/bs/logisticslnfoapi/factory/smsPlatform/SmsPlatformFactory.java

@@ -0,0 +1,28 @@
+package com.bs.logisticslnfoapi.factory.smsPlatform;
+
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.factory.smsPlatform
+ * @ClassName: SmsPlatformFactory
+ * @Description: 简单工厂_短信平台工厂类
+ * @Author: liujs
+ * @Date: 2020/05/18 上午 10:30
+ * @Version: 1.0
+ */
+@Component
+public class SmsPlatformFactory {
+    @Resource
+    private Map<String,BaseSmsPlatform> map = new ConcurrentHashMap<>();
+
+    public BaseSmsPlatform getSmsPlatform(String smsPlatform){
+        if (null == smsPlatform){
+            return null;
+        }
+        return map.get(smsPlatform);
+    }
+}

+ 150 - 0
src/main/java/com/bs/logisticslnfoapi/factory/smsPlatform/realize/AliBaBa.java

@@ -0,0 +1,150 @@
+package com.bs.logisticslnfoapi.factory.smsPlatform.realize;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyuncs.CommonRequest;
+import com.aliyuncs.CommonResponse;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.http.MethodType;
+import com.aliyuncs.profile.DefaultProfile;
+import com.bs.logisticslnfoapi.bean.ApiLog;
+import com.bs.logisticslnfoapi.bean.alibb.AliBaBaSmsStatusReportBean;
+import com.bs.logisticslnfoapi.bean.alibb.AlibbQuerySmsDetailsRequest;
+import com.bs.logisticslnfoapi.bean.alibb.AlibbSendSmsRequest;
+import com.bs.logisticslnfoapi.factory.smsPlatform.BaseSmsPlatform;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.OkHttpUtil;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.factory.smsPlatform.realize
+ * @ClassName: ALiBaBa
+ * @Description: TODO
+ * @Author: liujs
+ * @Date: 2020/05/20 下午 16:45
+ * @Version: 1.0
+ */
+@Slf4j
+@Component("ALBB")
+@RestController
+public class AliBaBa implements BaseSmsPlatform {
+
+    @Resource
+    private LogService logService;
+
+    @Value("${sendmessageurl}")
+    private String sendMessageUrl;
+
+    @Override
+    public String sendSms(String params) throws Exception {
+        long startTime = System.currentTimeMillis();
+        CommonRequest commonRequest = new CommonRequest();
+        AlibbSendSmsRequest request = JSONObject.parseObject(params,AlibbSendSmsRequest.class);
+        IAcsClient client = getIAcsClient(request.getAccessKeyId(), request.getAppSecret());
+        //系统参数
+        commonRequest.setDomain(request.getUrl());
+        commonRequest.setVersion("2017-05-25");
+        commonRequest.setAction("SendSms");
+        //业务参数
+        commonRequest.putQueryParameter("RegionId", "cn-hangzhou");
+        commonRequest.putQueryParameter("PhoneNumbers",request.getPhoneNumbers());
+        commonRequest.putQueryParameter("SignName",request.getSignName());
+        commonRequest.putQueryParameter("TemplateCode",request.getTemplateCode());
+        commonRequest.putQueryParameter("TemplateParam",JSON.toJSONString(request.getTemplateParam()));
+        CommonResponse response = client.getCommonResponse(commonRequest);
+        log.info("【阿里云发送短信接口返回参数】:{}",response.getData());
+        logService.install(ApiLog.builder()
+                .requestMsg(params)
+                .responseMsg(response.getData())
+                .url(request.getUrl())
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform("ALBB")
+                .build());
+        return response.getData();
+    }
+
+    /**
+     * 阿里云短信回执接口
+     * @param params
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/smsStatusReportByAliBaBa")
+    public String smsStatusReport(@RequestBody List<AliBaBaSmsStatusReportBean> params) {
+        long startTime = System.currentTimeMillis();
+        //TODO
+        String url = sendMessageUrl + "/smsStatusReportByALBB";
+        log.info("阿里云短信回执传入参数为:{}",JSON.toJSONString(params));
+        String result;
+        try {
+            result = OkHttpUtil.postJson(url, params);
+            log.info("【阿里云短信回执返回参数】:{}", result);
+            logService.install(ApiLog.builder()
+                    .requestMsg(JSON.toJSONString(params))
+                    .responseMsg(result)
+                    .url(url)
+                    .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                    .createTime(new Date())
+                    .requestType(2)
+                    .platform("ALBB")
+                    .build());
+        }catch (Exception e){
+            return "{\"code\":-1,\"msg\":\"系统异常\"}";
+        }
+        return result;
+    }
+
+    /**
+     * 阿里巴巴短信结果查询
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/querySendDetails")
+    public Object alibbSmsQueryDetails(@RequestBody AlibbQuerySmsDetailsRequest request) throws Exception{
+        long startTime = System.currentTimeMillis();
+        CommonRequest commonRequest = new CommonRequest();
+        IAcsClient client = getIAcsClient(request.getAccessKeyId(), request.getAppSecret());
+        //系统参数
+        commonRequest.setMethod(MethodType.POST);
+        commonRequest.setDomain(request.getUrl());
+        commonRequest.setVersion("2017-05-25");
+        commonRequest.setAction("QuerySendDetails");
+        commonRequest.putQueryParameter("RegionId", "cn-hangzhou");
+        commonRequest.putQueryParameter("CurrentPage",request.getCurrentPage().toString());
+        commonRequest.putQueryParameter("PageSize",request.getPageSize().toString());
+        commonRequest.putQueryParameter("PhoneNumber",request.getPhoneNumber());
+        commonRequest.putQueryParameter("SendDate",request.getSendDate());
+        commonRequest.putQueryParameter("AccessKeyId",request.getAccessKeyId());
+        commonRequest.putQueryParameter("Action","QuerySendDetails");
+        commonRequest.putQueryParameter("BizId",request.getBizId());
+        CommonResponse response = client.getCommonResponse(commonRequest);
+        log.info("【ALiBaBa平台短信回执接口返回参数】:{}",response.getData());
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(request))
+                .responseMsg(response.getData())
+                .url(request.getUrl())
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform("ALBB")
+                .build());
+        return response.getData();
+    }
+
+    private IAcsClient getIAcsClient(String accessKeyId, String appSecret) {
+        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, appSecret);
+        return new DefaultAcsClient(profile);
+    }
+}

+ 89 - 0
src/main/java/com/bs/logisticslnfoapi/factory/smsPlatform/realize/MengWang.java

@@ -0,0 +1,89 @@
+package com.bs.logisticslnfoapi.factory.smsPlatform.realize;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.bs.logisticslnfoapi.bean.ApiLog;
+import com.bs.logisticslnfoapi.bean.smsplatform.mengwang.MengWangSendSmsBean;
+import com.bs.logisticslnfoapi.bean.smsplatform.mengwang.MengWangSmsStatusReportBean;
+import com.bs.logisticslnfoapi.factory.smsPlatform.BaseSmsPlatform;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.OkHttpUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * @PackageName: com.bs.logisticslnfoapi.factory.smsPlatform.realize
+ * @ClassName: MengWang
+ * @Description: TODO
+ * @Author: liujs
+ * @Date: 2020/05/18 上午 11:19
+ * @Version: 1.0
+ */
+@Slf4j
+@Component("MengWang")
+@RestController
+public class MengWang implements BaseSmsPlatform {
+
+    @Resource
+    private LogService logService;
+
+    @Value("${sendmessageurl}")
+    private String sendMessageUrl;
+
+    @Override
+    public String sendSms(String params) {
+        long startTime = System.currentTimeMillis();
+        String url = "http://TSN19.800CT.COM:8901/sms/v2/std/single_send";
+        MengWangSendSmsBean request = JSONObject.parseObject(params, MengWangSendSmsBean.class);
+        String result;
+        try {
+            log.info("梦网发短信接口传入参数:{}",params);
+            result = OkHttpUtil.postJson(url, request);
+            log.info("梦网发短信接口返回参数:{}", result);
+            logService.install(ApiLog.builder()
+                    .requestMsg(JSON.toJSONString(request))
+                    .responseMsg(result)
+                    .url(url)
+                    .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                    .createTime(new Date())
+                    .requestType(1)
+                    .platform("MengWang")
+                    .build());
+        }catch (Exception e) {
+            return "{\"result\":-10009,\"msgid\":0,\"custid\":\"\"}";
+        }
+        return result;
+    }
+
+    /**
+     * 梦网平台短信回执接口
+     * @param params 参数
+     * @return 返回结果
+     */
+    @RequestMapping("/smsStatusReportByMengWang")
+    public String smsStatusReport(@ModelAttribute MengWangSmsStatusReportBean params) throws Exception {
+        long startTime = System.currentTimeMillis();
+        //TODO
+        String url = sendMessageUrl + "/smsStatusReportByMengWang";
+        log.info("梦网短信回执传入参数为:{}",JSON.toJSONString(params));
+        String result = OkHttpUtil.postJson(url, params);
+        logService.install(ApiLog.builder()
+                .requestMsg(JSON.toJSONString(params))
+                .responseMsg(result)
+                .url(url)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(2)
+                .platform("MengWang")
+                .build());
+        log.info("【梦网短信回执】:{}", result);
+        return result;
+    }
+}

+ 32 - 0
src/main/java/com/bs/logisticslnfoapi/service/jhy/JhyService.java

@@ -0,0 +1,32 @@
+package com.bs.logisticslnfoapi.service.jhy;
+
+import com.bs.logisticslnfoapi.bean.ResultBean;
+import com.bs.logisticslnfoapi.bean.jhy.JhyPhone;
+import com.bs.logisticslnfoapi.bean.jhy.JhyPhonePushRequest;
+import com.bs.logisticslnfoapi.bean.jhy.JhyPhoneStateRequest;
+
+public interface JhyService {
+    /**
+     * 新增手机号码
+     * @param data
+     * @return
+     * @throws Exception
+     */
+    ResultBean<Boolean> addPhone(String data) throws Exception;
+
+    /**
+     * 推送电话号码给居欢颜
+     * @param jhyPhonePushRequest
+     * @return
+     * @throws Exception
+     */
+    String pushPhone(JhyPhonePushRequest jhyPhonePushRequest) throws Exception;
+
+    /**
+     * 推送签收状态给居欢颜
+     * @param jhyPhoneStateRequest
+     * @return
+     * @throws Exception
+     */
+    String pushSign(JhyPhoneStateRequest jhyPhoneStateRequest) throws Exception;
+}

+ 116 - 0
src/main/java/com/bs/logisticslnfoapi/service/jhy/impl/JhyServiceImpl.java

@@ -0,0 +1,116 @@
+package com.bs.logisticslnfoapi.service.jhy.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.bs.logisticslnfoapi.bean.ApiLog;
+import com.bs.logisticslnfoapi.bean.ResultBean;
+import com.bs.logisticslnfoapi.bean.jhy.JhyPhone;
+import com.bs.logisticslnfoapi.bean.jhy.JhyPhonePushRequest;
+import com.bs.logisticslnfoapi.bean.jhy.JhyPhoneStateRequest;
+import com.bs.logisticslnfoapi.exceptions.APIBusinessException;
+import com.bs.logisticslnfoapi.service.jhy.JhyService;
+import com.bs.logisticslnfoapi.service.log.LogService;
+import com.bs.logisticslnfoapi.util.AESUtil;
+import com.bs.logisticslnfoapi.util.Enum.PlatformEnum;
+import com.bs.logisticslnfoapi.util.HttpUtils;
+import com.bs.logisticslnfoapi.util.OkHttpUtil;
+import com.google.gson.Gson;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.NameValuePair;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+import java.util.*;
+
+/**
+ * @ClassName JhyServiceImpl
+ * @Description 居欢颜
+ * @Author Administrator
+ * @Date 2019/8/5 0005 下午 14:31
+ * @Version 1.0
+ **/
+@Service
+@Slf4j
+public class JhyServiceImpl implements JhyService {
+
+    @Value("${hdurl}")
+    private String url;
+
+    @Value("${jhyscrect}")
+    private String jhyscrect;
+
+    @Value("${jhurl}")
+    private String jhurl;
+
+    @Autowired
+    private LogService logService;
+
+
+    @Override
+    public ResultBean<Boolean> addPhone(String data) throws Exception {
+        long startTime = System.currentTimeMillis();
+        BASE64Decoder decoder = new BASE64Decoder();
+        data = new String(decoder.decodeBuffer(data));
+        if(Strings.isBlank(data)){
+            throw new APIBusinessException("data参数错误");
+        }
+        JhyPhone jhyPhone = new Gson().fromJson(data,JhyPhone.class);
+        if(jhyPhone == null){
+            throw new APIBusinessException("传入参数不能为空");
+        }
+        if(Strings.isBlank(jhyPhone.getPhone())){
+            throw new APIBusinessException("传入电话号码不能为空");
+        }
+        List<NameValuePair> list = new ArrayList<>();
+        list.add(new BasicNameValuePair("json", data));
+        //http请求
+        String result = HttpUtils.getPostResult(url.trim(), list,"utf-8","utf-8");
+        logService.install(ApiLog.builder()
+                .requestMsg(data)
+                .responseMsg(result)
+                .url("/logistics/jhy/phone/add")
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(2)
+                .platform(PlatformEnum.JHY.getEnValue())
+                .build());
+        if(Strings.isBlank(result)){
+            throw new Exception("系统错误");
+        }
+        return new Gson().fromJson(result,ResultBean.class);
+    }
+
+    @Override
+    public String pushPhone(JhyPhonePushRequest jhyPhonePushRequest) throws Exception {
+        String data = new String(AESUtil.encrypt(new Gson().toJson(jhyPhonePushRequest), jhyscrect));
+        return jhyPostResult(data,"/express/info",new Gson().toJson(jhyPhonePushRequest));
+    }
+
+    @Override
+    public String pushSign(JhyPhoneStateRequest jhyPhoneStateRequest) throws Exception {
+        String data = new String(AESUtil.encrypt(new Gson().toJson(jhyPhoneStateRequest), jhyscrect));
+        return jhyPostResult(data,"/express/state",new Gson().toJson(jhyPhoneStateRequest));
+    }
+
+    private String jhyPostResult(String data,String burl,String request) throws Exception {
+        long startTime = System.currentTimeMillis();
+        Map map = new HashMap();
+        map.put("data",data);
+        String result = OkHttpUtil.postJson(jhurl.trim()+burl, map);
+        log.info("调用居欢颜接口:"+jhurl.trim()+burl+",返回参数:"+result);
+        logService.install(ApiLog.builder()
+                .requestMsg(request)
+                .responseMsg(result)
+                .url(burl)
+                .exTime(new Long((System.currentTimeMillis() - startTime)).intValue())
+                .createTime(new Date())
+                .requestType(1)
+                .platform(PlatformEnum.JHY.getEnValue())
+                .build());
+        return result;
+    }
+}

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików