chao 3 سال پیش
والد
کامیت
b50d14d5aa

+ 118 - 0
.mvn/wrapper/MavenWrapperDownloader.java

@@ -0,0 +1,118 @@
+/*
+ * Copyright 2007-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.net.*;
+import java.io.*;
+import java.nio.channels.*;
+import java.util.Properties;
+
+public class MavenWrapperDownloader {
+
+    private static final String WRAPPER_VERSION = "0.5.6";
+    /**
+     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
+     */
+    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
+            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
+
+    /**
+     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
+     * use instead of the default one.
+     */
+    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
+            ".mvn/wrapper/maven-wrapper.properties";
+
+    /**
+     * Path where the maven-wrapper.jar will be saved to.
+     */
+    private static final String MAVEN_WRAPPER_JAR_PATH =
+            ".mvn/wrapper/maven-wrapper.jar";
+
+    /**
+     * Name of the property which should be used to override the default download url for the wrapper.
+     */
+    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
+
+    public static void main(String args[]) {
+        System.out.println("- Downloader started");
+        File baseDirectory = new File(args[0]);
+        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
+
+        // If the maven-wrapper.properties exists, read it and check if it contains a custom
+        // wrapperUrl parameter.
+        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
+        String url = DEFAULT_DOWNLOAD_URL;
+        if (mavenWrapperPropertyFile.exists()) {
+            FileInputStream mavenWrapperPropertyFileInputStream = null;
+            try {
+                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
+                Properties mavenWrapperProperties = new Properties();
+                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
+                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
+            } catch (IOException e) {
+                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
+            } finally {
+                try {
+                    if (mavenWrapperPropertyFileInputStream != null) {
+                        mavenWrapperPropertyFileInputStream.close();
+                    }
+                } catch (IOException e) {
+                    // Ignore ...
+                }
+            }
+        }
+        System.out.println("- Downloading from: " + url);
+
+        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
+        if (!outputFile.getParentFile().exists()) {
+            if (!outputFile.getParentFile().mkdirs()) {
+                System.out.println(
+                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
+            }
+        }
+        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
+        try {
+            downloadFileFromURL(url, outputFile);
+            System.out.println("Done");
+            System.exit(0);
+        } catch (Throwable e) {
+            System.out.println("- Error downloading");
+            e.printStackTrace();
+            System.exit(1);
+        }
+    }
+
+    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
+        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
+            String username = System.getenv("MVNW_USERNAME");
+            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
+            Authenticator.setDefault(new Authenticator() {
+                @Override
+                protected PasswordAuthentication getPasswordAuthentication() {
+                    return new PasswordAuthentication(username, password);
+                }
+            });
+        }
+        URL website = new URL(urlString);
+        ReadableByteChannel rbc;
+        rbc = Channels.newChannel(website.openStream());
+        FileOutputStream fos = new FileOutputStream(destination);
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+        fos.close();
+        rbc.close();
+    }
+
+}

BIN
.mvn/wrapper/maven-wrapper.jar


+ 2 - 0
.mvn/wrapper/maven-wrapper.properties

@@ -0,0 +1,2 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

+ 322 - 0
mvnw

@@ -0,0 +1,322 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#    https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Maven Start Up Batch script
+#
+# Required ENV vars:
+# ------------------
+#   JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+#   M2_HOME - location of maven2's installed home dir
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
+#     e.g. to debug Maven itself, use
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ]; then
+
+  if [ -f /etc/mavenrc ]; then
+    . /etc/mavenrc
+  fi
+
+  if [ -f "$HOME/.mavenrc" ]; then
+    . "$HOME/.mavenrc"
+  fi
+
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false
+darwin=false
+mingw=false
+case "$(uname)" in
+CYGWIN*) cygwin=true ;;
+MINGW*) mingw=true ;;
+Darwin*)
+  darwin=true
+  # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+  # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+  if [ -z "$JAVA_HOME" ]; then
+    if [ -x "/usr/libexec/java_home" ]; then
+      export JAVA_HOME="$(/usr/libexec/java_home)"
+    else
+      export JAVA_HOME="/Library/Java/Home"
+    fi
+  fi
+  ;;
+esac
+
+if [ -z "$JAVA_HOME" ]; then
+  if [ -r /etc/gentoo-release ]; then
+    JAVA_HOME=$(java-config --jre-home)
+  fi
+fi
+
+if [ -z "$M2_HOME" ]; then
+  ## resolve links - $0 may be a link to maven's home
+  PRG="$0"
+
+  # need this for relative symlinks
+  while [ -h "$PRG" ]; do
+    ls=$(ls -ld "$PRG")
+    link=$(expr "$ls" : '.*-> \(.*\)$')
+    if expr "$link" : '/.*' >/dev/null; then
+      PRG="$link"
+    else
+      PRG="$(dirname "$PRG")/$link"
+    fi
+  done
+
+  saveddir=$(pwd)
+
+  M2_HOME=$(dirname "$PRG")/..
+
+  # make it fully qualified
+  M2_HOME=$(cd "$M2_HOME" && pwd)
+
+  cd "$saveddir"
+  # echo Using m2 at $M2_HOME
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=$(cygpath --unix "$M2_HOME")
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
+fi
+
+# For Mingw, ensure paths are in UNIX format before anything is touched
+if $mingw; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME="$( (
+      cd "$M2_HOME"
+      pwd
+    ))"
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME="$( (
+      cd "$JAVA_HOME"
+      pwd
+    ))"
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+  javaExecutable="$(which javac)"
+  if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then
+    # readlink(1) is not available as standard on Solaris 10.
+    readLink=$(which readlink)
+    if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then
+      if $darwin; then
+        javaHome="$(dirname \"$javaExecutable\")"
+        javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac"
+      else
+        javaExecutable="$(readlink -f \"$javaExecutable\")"
+      fi
+      javaHome="$(dirname \"$javaExecutable\")"
+      javaHome=$(expr "$javaHome" : '\(.*\)/bin')
+      JAVA_HOME="$javaHome"
+      export JAVA_HOME
+    fi
+  fi
+fi
+
+if [ -z "$JAVACMD" ]; then
+  if [ -n "$JAVA_HOME" ]; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ]; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD="$(which java)"
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ]; then
+  echo "Error: JAVA_HOME is not defined correctly." >&2
+  echo "  We cannot execute $JAVACMD" >&2
+  exit 1
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+  echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+
+  if [ -z "$1" ]; then
+    echo "Path not specified to find_maven_basedir"
+    return 1
+  fi
+
+  basedir="$1"
+  wdir="$1"
+  while [ "$wdir" != '/' ]; do
+    if [ -d "$wdir"/.mvn ]; then
+      basedir=$wdir
+      break
+    fi
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+    if [ -d "${wdir}" ]; then
+      wdir=$(
+        cd "$wdir/.."
+        pwd
+      )
+    fi
+    # end of workaround
+  done
+  echo "${basedir}"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+  if [ -f "$1" ]; then
+    echo "$(tr -s '\n' ' ' <"$1")"
+  fi
+}
+
+BASE_DIR=$(find_maven_basedir "$(pwd)")
+if [ -z "$BASE_DIR" ]; then
+  exit 1
+fi
+
+##########################################################################################
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
+##########################################################################################
+if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
+  if [ "$MVNW_VERBOSE" = true ]; then
+    echo "Found .mvn/wrapper/maven-wrapper.jar"
+  fi
+else
+  if [ "$MVNW_VERBOSE" = true ]; then
+    echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
+  fi
+  if [ -n "$MVNW_REPOURL" ]; then
+    jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+  else
+    jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+  fi
+  while IFS="=" read key value; do
+    case "$key" in wrapperUrl)
+      jarUrl="$value"
+      break
+      ;;
+    esac
+  done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
+  if [ "$MVNW_VERBOSE" = true ]; then
+    echo "Downloading from: $jarUrl"
+  fi
+  wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
+  if $cygwin; then
+    wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
+  fi
+
+  if command -v wget >/dev/null; then
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Found wget ... using wget"
+    fi
+    if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+      wget "$jarUrl" -O "$wrapperJarPath"
+    else
+      wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
+    fi
+  elif command -v curl >/dev/null; then
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Found curl ... using curl"
+    fi
+    if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+      curl -o "$wrapperJarPath" "$jarUrl" -f
+    else
+      curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
+    fi
+
+  else
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Falling back to using Java to download"
+    fi
+    javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
+    # For Cygwin, switch paths to Windows format before running javac
+    if $cygwin; then
+      javaClass=$(cygpath --path --windows "$javaClass")
+    fi
+    if [ -e "$javaClass" ]; then
+      if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo " - Compiling MavenWrapperDownloader.java ..."
+        fi
+        # Compiling the Java class
+        ("$JAVA_HOME/bin/javac" "$javaClass")
+      fi
+      if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+        # Running the downloader
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo " - Running MavenWrapperDownloader.java ..."
+        fi
+        ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
+      fi
+    fi
+  fi
+fi
+##########################################################################################
+# End of extension
+##########################################################################################
+
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+if [ "$MVNW_VERBOSE" = true ]; then
+  echo $MAVEN_PROJECTBASEDIR
+fi
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=$(cygpath --path --windows "$M2_HOME")
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+    MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
+fi
+
+# Provide a "standardized" way to retrieve the CLI args that will
+# work with both Windows and non-Windows executions.
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
+export MAVEN_CMD_LINE_ARGS
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+exec "$JAVACMD" \
+  $MAVEN_OPTS \
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 182 - 0
mvnw.cmd

@@ -0,0 +1,182 @@
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements.  See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership.  The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License.  You may obtain a copy of the License at
+@REM
+@REM    https://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied.  See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Maven Start Up Batch script
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM M2_HOME - location of maven2's installed home dir
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM     e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+
+FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Found %WRAPPER_JAR%
+    )
+) else (
+    if not "%MVNW_REPOURL%" == "" (
+        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+    )
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Couldn't find %WRAPPER_JAR%, downloading it ...
+        echo Downloading from: %DOWNLOAD_URL%
+    )
+
+    powershell -Command "&{"^
+		"$webclient = new-object System.Net.WebClient;"^
+		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+		"}"^
+		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
+		"}"
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Finished downloading %WRAPPER_JAR%
+    )
+)
+@REM End of extension
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
+
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
+
+exit /B %ERROR_CODE%

+ 150 - 0
pom.xml

@@ -0,0 +1,150 @@
+<?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 https://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.4.3</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <groupId>com.caimei365.tools</groupId>
+    <artifactId>caimei365-cloud-tools</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>caimei365-cloud-tools</name>
+    <description>采美365微服务-工具服务</description>
+    <properties>
+        <java.version>1.8</java.version>
+        <spring-cloud.version>2020.0.2</spring-cloud.version>
+    </properties>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>${spring-cloud.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-webflux</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter</artifactId>
+		</dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+		<dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+        </dependency>
+        <!-- 快递100 SDK -->
+	    <dependency>
+            <groupId>com.github.kuaidi100-api</groupId>
+            <artifactId>sdk</artifactId>
+            <version>1.0.2</version>
+        </dependency>
+        <!-- redis依赖包 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.lettuce</groupId>
+                    <artifactId>lettuce-core</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+        </dependency>
+
+
+        <!-- knife4j:swagger增强-->
+        <!-- https://doc.xiaominfo.com/knife4j/documentation/get_start.html -->
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-spring-boot-starter</artifactId>
+            <version>3.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>3.0.0</version>
+        </dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>io.projectreactor</groupId>
+			<artifactId>reactor-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+    </dependencies>
+
+
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <activatedProperties>dev</activatedProperties>
+            </properties>
+            <activation>
+                <!-- 默认环境 -->
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>beta</id>
+            <properties>
+                <activatedProperties>beta</activatedProperties>
+            </properties>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <activatedProperties>prod</activatedProperties>
+            </properties>
+        </profile>
+    </profiles>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <!--可以在此配置过滤文件  -->
+                <includes>
+                    <include>**/*.yml</include>
+                    <include>**/*.xml</include>
+                </includes>
+                <!--开启filtering功能  -->
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 16 - 0
src/main/java/com/caimei365/tools/ToolsApplication.java

@@ -0,0 +1,16 @@
+package com.caimei365.tools;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * @author Charles
+ */
+@SpringBootApplication
+public class ToolsApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(ToolsApplication.class, args);
+    }
+
+}

+ 31 - 0
src/main/java/com/caimei365/tools/controller/BaseApi.java

@@ -0,0 +1,31 @@
+package com.caimei365.tools.controller;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/5/18
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/tools")
+public class BaseApi {
+
+    @Value(value = "${swagger.enabled}")
+    private Boolean swaggerEnabled;
+
+    @GetMapping("")
+    public String welcome(){
+        if (swaggerEnabled){
+            return "欢迎使用!<br><a href='http://47.119.112.46:18013/doc.html'>doc接口文档入口(beta)</a><br><a href='http://47.119.112.46:18013/swagger-ui/index.html'>swagger接口文档入口(beta)</a>";
+        }
+        return "欢迎使用!";
+    }
+}
+

+ 44 - 0
src/main/java/com/caimei365/tools/controller/LogisticsApi.java

@@ -0,0 +1,44 @@
+package com.caimei365.tools.controller;
+
+import com.caimei365.tools.model.ResponseJson;
+import com.caimei365.tools.service.LogisticsService;
+import com.kuaidi100.sdk.response.QueryTrackResp;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/5/18
+ */
+@Api(tags="物流API")
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/tools")
+public class LogisticsApi {
+
+    private final LogisticsService logisticsService;
+
+    /**
+     * 查询物流
+     */
+    @ApiOperation("获取物流信息")
+    @ApiImplicitParams({
+        @ApiImplicitParam(required = true, name = "number", value = "快递单号"),
+        @ApiImplicitParam(required = false, name = "companyCode", value = "快递公司的编码"),
+        @ApiImplicitParam(required = false, name = "mobile", value = "收/寄件人的电话号码(顺丰必填)"),
+    })
+    @GetMapping("/query/logistics")
+    public ResponseJson<QueryTrackResp> getLogisticsByNumber(String number, String companyCode, String mobile) {
+        return logisticsService.getLogisticsByNumber(number, companyCode, mobile);
+    }
+
+}

+ 85 - 0
src/main/java/com/caimei365/tools/model/ResponseJson.java

@@ -0,0 +1,85 @@
+package com.caimei365.tools.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 全局API返回值
+ *
+ * @author : Charles
+ * @date : 2021/3/4
+ */
+@Data
+public class ResponseJson<T> implements Serializable {
+    /** 状态码 */
+    @ApiModelProperty("状态码")
+    private int code;
+    /** 提示信息 */
+    @ApiModelProperty("提示信息")
+    private String msg;
+    /** 返回的数据 */
+    @ApiModelProperty("响应数据")
+    private T data;
+
+    private ResponseJson() {}
+
+    private ResponseJson(int code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    private ResponseJson(int code, String msg, T data) {
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+    }
+
+    public static ResponseJson success() {
+        return new ResponseJson<>(0, "操作成功");
+    }
+
+    public static<T> ResponseJson<T> success(T data) {
+        return new ResponseJson<>(0, "操作成功", data);
+    }
+
+    public static<T> ResponseJson<T> success(String msg, T data) {
+        return new ResponseJson<>(0, msg, data);
+    }
+
+    public static<T> ResponseJson<T> success(int code, String msg, T data) {
+        return new ResponseJson<>(code, msg, data);
+    }
+
+    public static ResponseJson error() {
+        return new ResponseJson<>(-1, "操作失败");
+    }
+
+    public static ResponseJson error(String msg) {
+        return new ResponseJson<>(-1, msg);
+    }
+
+    public static ResponseJson error(int code, String msg) {
+        return new ResponseJson<>(code, msg);
+    }
+
+    public static<T> ResponseJson<T> error(T data) {
+        return new ResponseJson<>(-1, "操作失败", data);
+    }
+
+    public static<T> ResponseJson<T> error(String msg, T data) {
+        return new ResponseJson<>(-1, msg, data);
+    }
+
+    public static<T> ResponseJson<T> error(int code, String msg, T data) {
+        return new ResponseJson<>(code, msg, data);
+    }
+
+    @Override
+    public String toString() {
+        return "ResponseJson{" + "code=" + code + ", msg='" + msg + '\'' + ", data=" + data + '}';
+    }
+
+    private static final long serialVersionUID = 1L;
+}

+ 23 - 0
src/main/java/com/caimei365/tools/service/LogisticsService.java

@@ -0,0 +1,23 @@
+package com.caimei365.tools.service;
+
+import com.caimei365.tools.model.ResponseJson;
+import com.kuaidi100.sdk.response.QueryTrackResp;
+
+
+/**
+ *  查询物流
+ *
+ * @author : Charles
+ * @date : 2021/5/18
+ */
+public interface LogisticsService {
+    /**
+     * 智能获取物流信息
+     *
+     * @param number      快递单号
+     * @param companyCode 快递公司的编码
+     * @param mobile      收/寄件人的电话号码(顺丰必填)
+     */
+    ResponseJson<QueryTrackResp> getLogisticsByNumber(String number, String companyCode, String mobile);
+
+}

+ 108 - 0
src/main/java/com/caimei365/tools/service/impl/LogisticsServiceImpl.java

@@ -0,0 +1,108 @@
+package com.caimei365.tools.service.impl;
+
+import com.caimei365.tools.model.ResponseJson;
+import com.caimei365.tools.service.LogisticsService;
+import com.google.gson.Gson;
+import com.kuaidi100.sdk.api.AutoNum;
+import com.kuaidi100.sdk.api.QueryTrack;
+import com.kuaidi100.sdk.core.IBaseClient;
+import com.kuaidi100.sdk.pojo.HttpResult;
+import com.kuaidi100.sdk.request.AutoNumReq;
+import com.kuaidi100.sdk.request.QueryTrackParam;
+import com.kuaidi100.sdk.request.QueryTrackReq;
+import com.kuaidi100.sdk.response.QueryTrackResp;
+import com.kuaidi100.sdk.utils.SignUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 快递100API查询物流实现类
+ *
+ * @author : Charles
+ * @date : 2021/5/18
+ */
+@Slf4j
+@Service
+public class LogisticsServiceImpl implements LogisticsService {
+    /** 快递100授权KEY */
+    private static final String LOGISTICS_KEY = "bEZlgVkW1438";
+    /** 快递100企业版授权码 */
+    private static final String LOGISTICS_CUSTOMER = "1414E0E533E3311FBA5E633C10F78306";
+
+    /**
+     * 智能获取物流信息
+     *
+     * @param number      快递单号
+     * @param companyCode 快递公司的编码
+     * @param mobile      收/寄件人的电话号码(顺丰必填)
+     */
+    @Override
+    public ResponseJson<QueryTrackResp> getLogisticsByNumber(String number, String companyCode, String mobile) {
+        if (StringUtils.isEmpty(number)) {
+            return ResponseJson.error("参数错误:快递单号不能为空!", null);
+        }
+        if (StringUtils.isEmpty(companyCode)) {
+            // 智能获取物流公司代码
+            AutoNumReq autoNumReq = new AutoNumReq();
+            autoNumReq.setKey(LOGISTICS_KEY);
+            autoNumReq.setNum(number);
+            AutoNum baseClient = new AutoNum();
+            try {
+                String firstComByNum = baseClient.getFirstComByNum(autoNumReq);
+                if (StringUtils.isNotEmpty(firstComByNum)) {
+                    // 顺丰需要提供手机号
+                    if ("shunfeng".equals(firstComByNum) && StringUtils.isEmpty(mobile)){
+                        return ResponseJson.error(-2, "顺丰速运需要提供收/寄件人的电话号码查询,请提供后重试", null);
+                    }
+                    // 根据快递单号获取物流信息
+                    return queryLogistics(number, mobile, firstComByNum);
+                }
+                return ResponseJson.error("未能识别物流公司,请提供物流公司代码后重试!", null);
+            } catch (Exception e) {
+                log.error("智能获取物流公司代码,错误信息:", e);
+                return ResponseJson.error("智能获取物流公司出错,请提供物流公司代码后重试!", null);
+            }
+        } else {
+            return queryLogistics(number, mobile, companyCode);
+        }
+    }
+
+    /**
+     * 根据快递单号获取物流信息
+     *
+     * @param number      快递单号
+     * @param companyCode 快递公司的编码
+     * @param mobile      收/寄件人的电话号码(顺丰必填)
+     */
+    private ResponseJson<QueryTrackResp> queryLogistics(String number, String mobile, String companyCode) {
+        // 设置参数信息
+        QueryTrackParam queryTrackParam = new QueryTrackParam();
+        queryTrackParam.setCom(companyCode);
+        queryTrackParam.setNum(number);
+        if (StringUtils.isNotEmpty(mobile)) {
+            queryTrackParam.setPhone(mobile);
+        }
+        String param = new Gson().toJson(queryTrackParam);
+        // 设置请求信息
+        QueryTrackReq queryTrackReq = new QueryTrackReq();
+        queryTrackReq.setParam(param);
+        queryTrackReq.setCustomer(LOGISTICS_CUSTOMER);
+        queryTrackReq.setSign(SignUtils.querySign(param , LOGISTICS_KEY, LOGISTICS_CUSTOMER));
+
+        IBaseClient baseClient = new QueryTrack();
+        try {
+            HttpResult httpResult = baseClient.execute(queryTrackReq);
+            if (httpResult.getStatus() == 200 && StringUtils.isNotBlank(httpResult.getBody())) {
+                QueryTrackResp queryTrackResp = (new Gson()).fromJson(httpResult.getBody(), QueryTrackResp.class);
+                return ResponseJson.success(queryTrackResp);
+            }
+            return ResponseJson.error(httpResult.toString(), null);
+        } catch (Exception e) {
+            log.error("获取物流信息,错误信息:", e);
+            return ResponseJson.error("获取物流信息错误"+e.toString(), null);
+        }
+    }
+
+}

+ 1199 - 0
src/main/resources/backup.sql

@@ -0,0 +1,1199 @@
+use `caimei`;
+
+/*Table structure for table `cm_logistics_company` */
+
+drop table if exists `cm_logistics_company`;
+
+create table `cm_logistics_company` (
+  `id` bigint not null auto_increment,
+  `name` varchar(100) default null comment '快递公司名称',
+  `code` varchar(100) default null comment '快递公司编码',
+  primary key (`id`)
+) comment='快递100快递公司及其编码表';
+
+/*Data for the table `cm_logistics_company` */
+
+insert  into `cm_logistics_company`(`name`,`code`) values
+('圆通速递','yuantong'),
+('韵达快递','yunda'),
+('中通快递','zhongtong'),
+('百世快递','huitongkuaidi'),
+('申通快递','shentong'),
+('顺丰速运','shunfeng'),
+('邮政快递包裹','youzhengguonei'),
+('京东物流','jd'),
+('EMS','ems'),
+('极兔速递','jtexpress'),
+('邮政标准快递','youzhengbk'),
+('德邦','debangwuliu'),
+('德邦快递','debangkuaidi'),
+('宅急送','zhaijisong'),
+('优速快递','youshuwuliu'),
+('圆通快运','yuantongkuaiyun'),
+('百世快运','baishiwuliu'),
+('顺丰快运','shunfengkuaiyun'),
+('众邮快递','zhongyouex'),
+('中通快运','zhongtongkuaiyun'),
+('安能快运','annengwuliu'),
+('UPS','ups'),
+('韵达快运','yundakuaiyun'),
+('中通国际','zhongtongguoji'),
+('D速快递','dsukuaidi'),
+('丹鸟','danniao'),
+('特急送','lntjs'),
+('九曳供应链','jiuyescm'),
+('FedEx-国际件','fedex'),
+('UPS-全球件','upsen'),
+('DHL-中国件','dhl'),
+('递四方','disifang'),
+('跨越速运','kuayue'),
+('壹米滴答','yimidida'),
+('快捷速递','kuaijiesudi'),
+('USPS','usps'),
+('广东邮政','guangdongyouzhengwuliu'),
+('同城快寄','shpost'),
+('安得物流','annto'),
+('国际包裹','youzhengguoji'),
+('顺心捷达','sxjdfreight'),
+('加运美','jiayunmeiwuliu'),
+('丰网速运','fengwang'),
+('泰国中通ZTO','thaizto'),
+('京广速递','jinguangsudikuaijian'),
+('全峰快递','quanfengkuaidi'),
+('DHL-全球件','dhlen'),
+('EMS包裹','emsbg'),
+('EWE全球快递','ewe'),
+('苏宁物流','suning'),
+('美快国际物流','meiquick'),
+('速尔快递','suer'),
+('信丰物流','xinfengwuliu'),
+('联昊通','lianhaowuliu'),
+('速腾快递','suteng'),
+('YUN TRACK','yuntrack'),
+('芝麻开门','zhimakaimen'),
+('如风达','rufengda'),
+('速必达','subida'),
+('宇鑫物流','yuxinwuliu'),
+('GLS','gls'),
+('Fedex-国际件-中文','fedexcn'),
+('万家物流','wanjiawuliu'),
+('国通快递','guotongkuaidi'),
+('申通国际','stosolution'),
+('日日顺物流','rrs'),
+('EMS-国际件','emsguoji'),
+('联合快递','gslhkd'),
+('微特派','weitepai'),
+('天天快递','tiantian'),
+('汇森速运','huisenky'),
+('日本(Japan Post)','japanposten'),
+('邦泰快运','btexpress'),
+('Titan泰坦国际速递','timelytitan'),
+('鑫正一快递','zhengyikuaidi'),
+('优邦速运','ubonex'),
+('增益速递','zengyisudi'),
+('CJ物流','doortodoor'),
+('三态速递','santaisudi'),
+('燕文物流','yw56'),
+('威盛快递','wherexpess'),
+('转运四方','zhuanyunsifang'),
+('联邦快递','lianbangkuaidi'),
+('招金精炼','zhaojin'),
+('平安达腾飞','pingandatengfei'),
+('盛丰物流','sfwl'),
+('佳怡物流','jiayiwuliu'),
+('海信物流','savor'),
+('程光快递','flyway'),
+('天马迅达','tianma'),
+('中邮物流','zhongyouwuliu'),
+('Austa国际速递','austa'),
+('澳邮中国快运','auexpress'),
+('澳大利亚(Australia Post)','auspost'),
+('天地华宇','tiandihuayu'),
+('TNT-全球件','tnten'),
+('雪域易购','qhxyyg'),
+('卓志速运','chinaicip'),
+('无忧物流','aliexpress'),
+('新顺丰(NSF)','nsf'),
+('中铁快运','ztky'),
+('DPD Germany','dpdgermany'),
+('黄马甲','huangmajia'),
+('UBI Australia','gotoubi'),
+('澳洲飞跃物流','rlgaus'),
+('Xlobo贝海国际','xlobo'),
+('转运中国','uszcn'),
+('龙邦速递','longbanwuliu'),
+('TNT','tnt'),
+('中邮速递','wondersyd'),
+('京东快运','jingdongkuaiyun'),
+('联邦快递-英文','lianbangkuaidien'),
+('富腾达国际货运','ftd'),
+('安信达','anxindakuaixi'),
+('泛捷国际速递','epanex'),
+('OCS','ocs'),
+('大马鹿','idamalu'),
+('极地快递','polarexpress'),
+('Aramex','aramex'),
+('泰进物流','taijin'),
+('DPD','dpd'),
+('EMS-国际件-英文','emsinten'),
+('安能快递','ane66'),
+('联合速运','unitedex'),
+('方舟速递','arkexpress'),
+('斑马物流','banma'),
+('安迅物流','anxl'),
+('德坤物流','dekuncn'),
+('苏通快运','zjstky'),
+('Superb Express','superb'),
+('美国申通','stoexpress'),
+('金岸物流','jinan'),
+('龙邦物流','lbex'),
+('AAE-中国件','aae'),
+('鼎润物流','la911'),
+('优优速递','youyou'),
+('Highsince','highsince'),
+('源安达','yuananda'),
+('疯狂快递','crazyexpress'),
+('速通物流','sut56'),
+('盛辉物流','shenghuiwuliu'),
+('宅急便','zhaijibian'),
+('出口易','chukou1'),
+('速达通','sdto'),
+('景光物流','jgwl'),
+('澳天速运','aotsd'),
+('易客满','ecmscn'),
+('比利时(Bpost)','bpost'),
+('新杰物流','sunjex'),
+('叁虎物流','sanhuwuliu'),
+('鸿泰物流','hnht56'),
+('中途速递','ztcce'),
+('COE','coe'),
+('行云物流','xyb2b'),
+('达发物流','dfwl'),
+('邮邦国际','youban'),
+('EFS Post(平安快递)','efs'),
+('圆通国际','yuantongguoji'),
+('顺捷美中速递','passerbyaexpress'),
+('铁中快运','tzky'),
+('中铁飞豹','zhongtiewuliu'),
+('店通快递','diantongkuaidi'),
+('佐川急便','sagawa'),
+('新西兰(New Zealand Post)','newzealand'),
+('荷兰邮政(PostNL international registered mail)','postnl'),
+('成都立即送','lijisong'),
+('DPD UK','dpduk'),
+('TST速运通','tstexp'),
+('运通中港','yuntongkuaidi'),
+('全一快递','quanyikuaidi'),
+('百福东方','baifudongfang'),
+('全联速运','guexp'),
+('世华通物流','szshihuatong56'),
+('联合速递','lhexpressus'),
+('美通','valueway'),
+('中速快递','zhongsukuaidi'),
+('万象物流','wanxiangwuliu'),
+('宏递快运','hd'),
+('速派快递','fastgoexpress'),
+('安达速递','adapost'),
+('商桥物流','shangqiao56'),
+('泰国138国际物流','sd138'),
+('中国香港(HongKong Post)','hkpost'),
+('快捷快物流','gdkjk56'),
+('中外运速递','zhongwaiyun'),
+('合众速递(UCS)','ucs'),
+('百腾物流','baitengwuliu'),
+('大田物流','datianwuliu'),
+('SYNSHIP快递','synship'),
+('时达通','jssdt56'),
+('小飞侠速递','cyxfx'),
+('长江国际速递','changjiang'),
+('居家通','homexpress'),
+('LUCFLOW EXPRESS','longfx'),
+('一智通','1ziton'),
+('易达通快递','qexpress'),
+('DPEX','dpex'),
+('百事亨通','bsht'),
+('嘉里大通','jialidatong'),
+('集先锋快递','jxfex'),
+('恒路物流','hengluwuliu'),
+('明通国际快递','tnjex'),
+('亚洲顺物流','yzswuliu'),
+('乌克兰邮政包裹','ukrpostcn'),
+('飞豹快递','feibaokuaidi'),
+('亚风速递','yafengsudi'),
+('三真驿道','zlink'),
+('瀚朝物流','hac56'),
+('中环快递','zhonghuan'),
+('德国(Deutsche Post)','deutschepost'),
+('中远e环球','cosco'),
+('龙枫国际快递','lfexpress'),
+('迅达速递','xdexpress'),
+('CNE','cnexps'),
+('丰通快运','ftky365'),
+('西班牙(Correos de Espa?a)','correosdees'),
+('速递中国','sendtochina'),
+('airpak expresss','airpak'),
+('星云速递','nebuex'),
+('一正达速运','yizhengdasuyun'),
+('考拉速递','koalaexp'),
+('Asendia USA','asendiausa'),
+('南方传媒物流','ndwl'),
+('新元国际','xynyc'),
+('中集冷云','cccc58'),
+('YDH','ydhex'),
+('原飞航','yuanfeihangwuliu'),
+('运通中港快递','ytkd'),
+('安捷物流','anjie88'),
+('荷兰邮政-中国件','postnlchina'),
+('加拿大龙行速运','longcps'),
+('加拿大(Canada Post)','canpost'),
+('EMS物流','emswuliu'),
+('诚和通','cht361'),
+('直德邮','zdepost'),
+('Toll','dpexen'),
+('佳成快递 ','jiacheng'),
+('品骏快递','pjbest'),
+('能达速递','ganzhongnengda'),
+('Hermes','hermes'),
+('运通速运','yuntong'),
+('荷兰邮政-中文(PostNL international registered mail)','postnlcn'),
+('中翼国际物流','chnexp'),
+('突尼斯EMS(Rapid-Poste)','tunisia'),
+('汇通天下物流','httx56'),
+('签收快递','signedexpress'),
+('黑猫宅急便','tcat'),
+('锦程快递','hrex'),
+('TNT Australia','tntau'),
+('中外运','esinotrans'),
+('顺丰-繁体','shunfenghk'),
+('城晓国际快递','ckeex'),
+('德国优拜物流','ubuy'),
+('春风物流','spring56'),
+('安鲜达','exfresh'),
+('家家通快递','newsway'),
+('DHL-德国件(DHL Deutschland)','dhlde'),
+('智通物流','ztong'),
+('聚盟共建','jumstc'),
+('汇达物流','hdcexpress'),
+('佰麒快递','beckygo'),
+('51跨境通','wykjt'),
+('友家速递','youjia'),
+('华美快递','hmus'),
+('澳德物流','auod'),
+('E速达','exsuda'),
+('八达通','bdatong'),
+('DPD Poland','dpdpoland'),
+('佳吉快运','jiajiwuliu'),
+('迅速快递','xunsuexpress'),
+('递四方美国','disifangus'),
+('三志物流','sanzhi56'),
+('速舟物流','cnspeedster'),
+('7号速递','express7th'),
+('优速通达','yousutongda'),
+('商壹国际物流','com1express'),
+('Fastway Ireland','fastway'),
+('英国大包、EMS(Parcel Force)','parcelforce'),
+('帮帮发','bangbangpost'),
+('宇佳物流','yujiawl'),
+('日本郵便','japanpost'),
+('韩国(Korea Post)','koreapost'),
+('联运通物流','szuem'),
+('意大利(Poste Italiane)','italiane'),
+('全速物流','quansu'),
+('环球速运','huanqiu'),
+('中国澳门(Macau Post)','macao'),
+('洋包裹','yangbaoguo'),
+('飞远配送','feiyuanvipshop'),
+('卡塔尔(Qatar Post)','qpost'),
+('MoreLink','morelink56'),
+('诺尔国际物流','nuoer'),
+('飞洋快递','shipgce'),
+('EASY EXPRESS','easyexpress'),
+('中华邮政','postserv'),
+('顺捷达','shunjieda'),
+('LaserShip','lasership'),
+('6LS EXPRESS','lsexpress'),
+('喀麦隆(CAMPOST)','cameroon'),
+('英超物流','yingchao'),
+('上海缤纷物流','bflg'),
+('尚橙物流','shangcheng'),
+('御风速运','yufeng'),
+('DHL Benelux','dhlbenelux'),
+('顺达快递','sundarexpress'),
+('FedEx-美国件','fedexus'),
+('秦远物流','qinyuan'),
+('法国(La Poste)','csuivi'),
+('易达通','yidatong'),
+('泛远国际物流','farlogistis'),
+('久久物流','jiujiuwl'),
+('TRAKPAK','trakpak'),
+('欧亚专线','euasia'),
+('英国邮政大包EMS','parcelforcecn'),
+('上大物流','shangda'),
+('UEQ快递','ueq'),
+('CHS中环国际快递','chszhonghuanguoji'),
+('洋口岸','ykouan'),
+('武汉优进汇','yjhgo'),
+('银雁专送','cfss'),
+('瑞士(Swiss Post)','swisspost'),
+('海带宝','haidaibao'),
+('佳吉快递','jiajikuaidi'),
+('耀飞同城快递','yaofeikuaidi'),
+('广州安能聚创物流','gzanjcwl'),
+('安世通快递','astexpress'),
+('澳世速递','ausexpress'),
+('递五方云仓','di5pll'),
+('一速递','oneexpress'),
+('西翼物流','westwing'),
+('中邮电商','chinapostcb'),
+('飞快达','feikuaida'),
+('Gati-中文','gaticn'),
+('远成物流','yuanchengwuliu'),
+('传喜物流','chuanxiwuliu'),
+('海派国际速递','hpexpress'),
+('考拉国际速递','kaolaexpress'),
+('华欣物流','chinastarlogistics'),
+('全时速运','runhengfeng'),
+('西游寄','xiyoug'),
+('科捷物流','kejie'),
+('浩博物流','njhaobo'),
+('瑞典(Sweden Post)','ruidianyouzheng'),
+('TransRush','transrush'),
+('S2C','s2c'),
+('淘布斯国际物流','taoplus'),
+('明达国际速递','tmwexpress'),
+('wedepot物流','wedepot'),
+('永昌物流','yongchangwuliu'),
+('鹏远国际速递','pengyuanexpress'),
+('爱尔兰(An Post)','anposten'),
+('奔腾物流','benteng'),
+('宜送物流','yiex'),
+('永邦国际物流','yongbangwuliu'),
+('承诺达','ytchengnuoda'),
+('北京EMS','bjemstckj'),
+('JDIEX','jdiex'),
+('聚鼎物流','juding'),
+('晟邦物流','nanjingshengbang'),
+('泰国(Thailand Thai Post)','thailand'),
+('亚马逊中国订单','amazoncnorder'),
+('飞力士物流','flysman'),
+('黑猫速运','heimao56'),
+('天翼快递','tykd'),
+('GSM','gsm'),
+('GTS快递','gts'),
+('威时沛运货运','wtdchina'),
+('心怡物流','alog'),
+('货运皇','kingfreight'),
+('Toll Priority(Toll Online)','tollpriority'),
+('雅澳物流','yourscm'),
+('大洋物流','dayangwuliu'),
+('马来西亚小包(Malaysia Post(Registered))','malaysiapost'),
+('优海国际速递','uhi'),
+('飞康达','feikangda'),
+('全川物流','quanchuan56'),
+('邦送物流','bangsongwuliu'),
+('创一快递','chuangyi'),
+('加拿大联通快运','fastontime'),
+('韩国邮政','koreapostcn'),
+('民航快递','minghangkuaidi'),
+('秦邦快运','qbexpress'),
+('人人转运','renrenex'),
+('皮牙子快递','bazirim'),
+('全速快递','fsexp'),
+('如家国际快递','homecourier'),
+('陆本速递 LUBEN EXPRESS','luben'),
+('新速航','sunspeedy'),
+('成都东骏物流','dongjun'),
+('远成快运','ycgky'),
+('三三国际物流','zenzen'),
+('A2U速递','a2u'),
+('明大快递','adaexpress'),
+('加拿大民航快递','airgtc'),
+('好来运','hlyex'),
+('Newgistics','newgistics'),
+('OnTrac','ontrac'),
+('新加坡小包(Singapore Post)','singpost'),
+('宇捷通','yujtong'),
+('法国小包(colissimo)','colissimo'),
+('泰国中通CTO','ctoexp'),
+('凡宇快递','fanyukuaidi'),
+('飞邦快递','fbkd'),
+('富吉速运','fujisuyun'),
+('尼尔快递','nell'),
+('一起送','yiqisong'),
+('远为快递','ywexpress'),
+('ABF','abf'),
+('EMS-英文','emsen'),
+('海红网送','haihongwangsong'),
+('圣安物流','shenganwuliu'),
+('中粮鲜到家物流','zlxdjwl'),
+('BHT','bht'),
+('景顺物流','jingshun'),
+('荷兰包裹(PostNL International Parcels)','postnlpacle'),
+('天天欧洲物流','ttkeurope'),
+('中国香港(HongKong Post)英文','hkposten'),
+('捷安达','jieanda'),
+('丹麦(Post Denmark)','postdanmarken'),
+('Purolator','purolator'),
+('7E速递','qesd'),
+('维普恩物流','vps'),
+('远盾物流','yuandun'),
+('中联速递','auvanda'),
+('老司机国际快递','driverfastgo'),
+('皇家云仓','hotwms'),
+('荣庆物流','rokin'),
+('易境达国际物流','uscbexpress'),
+('志腾物流','zhitengwuliu'),
+('卓实快运','zhuoshikuaiyun'),
+('阿塞拜疆EMS(EMS AzerExpressPost)','azerbaijan'),
+('白俄罗斯(Belpochta)','belpost'),
+('CCES/国通快递','cces'),
+('匈牙利(Magyar Posta)','hungary'),
+('美西快递','meixi'),
+('MyHermes','myhermes'),
+('三象速递','sxexpress'),
+('中运全速','topspeedex'),
+('五六快运','wuliuky'),
+('德方物流','ahdf'),
+('比利时国际(Bpost international)','bpostinter'),
+('百通物流','buytong'),
+('昌宇国际','changwooair'),
+('河北橙配','chengpei'),
+('云南诚中物流','czwlyn'),
+('高捷快运','goldjet'),
+('飞鹰物流','hnfy'),
+('佳辰国际速递','jiachenexpress'),
+('急先达','jixianda'),
+('恒通快递','lqht'),
+('吉捷国际速递','luckyfastex'),
+('美国快递','meiguokuaidi'),
+('日日顺快线','rrskx'),
+('ADP国际快递','adp'),
+('邦通国际','comexpress'),
+('颿达国际快递','fardarww'),
+('中外运空运','sinoairinex'),
+('track-parcel','trackparcel'),
+('万家康物流','wjkwl'),
+('亚马逊中国','yamaxunwuliu'),
+('转瞬达集运','zsda56'),
+('泰捷达国际物流','ztjieda'),
+('青岛安捷快递','anjiekuaidi'),
+('贝业物流','boyol'),
+('新喀里多尼亚[法国](New Caledonia)','caledonia'),
+('中骅物流','chunghwa56'),
+('dhl小包','dhlecommerce'),
+('澳州顺风快递','emms'),
+('海外环球','haiwaihuanqiu'),
+('一号线','lineone'),
+('新西兰中通','nzzto'),
+('PCA Express','pcaexpress'),
+('配思货运','peisihuoyunkuaidi'),
+('中外运速递-中文','sinoex'),
+('豌豆物流','wandougongzhu'),
+('黑猫同城送','ynztsy'),
+('壹品速递','ypsd'),
+('玥玛速运','yue777'),
+('美国云达','yundaexus'),
+('创运物流','zjcy56'),
+('阿森迪亚','asendia'),
+('比利时(Belgium Post)','belgiumpost'),
+('Canpar','canpar'),
+('globaltracktrace','globaltracktrace'),
+('德尚国际速递','gslexpress'),
+('爱拜物流','ibuy8'),
+('捷邦物流','jieborne'),
+('快达物流','kuaidawuliu'),
+('民邦速递','minbangsudi'),
+('魔速达','mosuda'),
+('俄罗斯邮政(Russian Post)','pochta'),
+('全日通','quanritongkuaidi'),
+('速配欧翼','superoz'),
+('香港伟豪国际物流','whgjkd'),
+('越丰物流','yuefengwuliu'),
+('明辉物流','zsmhwl'),
+('百世云配','baishiyp'),
+('城通物流','chengtong'),
+('城市映急','city56'),
+('澳通华人物流','cllexpress'),
+('C&C国际速递','cncexp'),
+('安的快递','gda'),
+('合心速递','hexinexpress'),
+('海联快递','hltop'),
+('拉脱维亚(Latvijas Pasts)','latvia'),
+('日昱物流','riyuwuliu'),
+('赛澳递for买卖宝','saiaodimmb'),
+('深圳邮政','szyouzheng'),
+('伍圆速递','wuyuansudi'),
+('祥龙运通物流','xianglongyuntong'),
+('韵丰物流','yunfeng56'),
+('中天万运','zhongtianwanyun'),
+('准实快运','zsky123'),
+('ZTE中兴物流','zteexpress'),
+('全球快运','abcglobal'),
+('阿富汗(Afghan Post)','afghan'),
+('全程快递','agopost'),
+('卡邦配送','ahkbps'),
+('艾瑞斯远','ariesfar'),
+('同舟行物流','chinatzx'),
+('CE易欧通国际速递','cloudexpress'),
+('CNPEX中邮快递','cnpex'),
+('深圳德创物流','dechuangwuliu'),
+('艾菲尔国际速递','eiffel'),
+('日日顺智慧物联','gooday365'),
+('华瀚快递','hhair56'),
+('云邮跨境快递','hkems'),
+('红背心','hongbeixin'),
+('红远物流','hongywl'),
+('华企快运','huaqikuaiyun'),
+('大达物流','idada'),
+('嘉诚速达','jcsuda'),
+('急递','jdpplus'),
+('加州猫速递','jiazhoumao'),
+('金大物流','jindawuliu'),
+('柬埔寨中通','khzto'),
+('乐天速递','ltexp'),
+('腾达速递','nntengda'),
+('首达速运','sdsy888'),
+('上海快通','shanghaikuaitong'),
+('南非(South African Post Office)','southafrican'),
+('速豹','subaoex'),
+('速风快递','sufengkuaidi'),
+('穗佳物流','suijiawuliu'),
+('宇航通物流','yhtlogistics'),
+('一邦速递','yibangwuliu'),
+('元智捷诚','yuanzhijiecheng'),
+('粤中国际货运代理(上海)有限公司','yuezhongsh'),
+('中融泰隆','zrtl'),
+('增速跨境 ','zyzoom'),
+('amazon-国际订单','amusorder'),
+('锋鸟物流','beebird'),
+('飛斯特','bester'),
+('鑫宸物流','cdxinchen56'),
+('CEVA Logistic','cevalogistics'),
+('华中快递','cpsair'),
+('达方物流','dfpost'),
+('递达速运','didasuyun'),
+('阿联酋(Emirates Post)','emirates'),
+('E通速递','etong'),
+('GE2D跨境物流','ge2d'),
+('共速达','gongsuda'),
+('广通速递','gtongsudi'),
+('广东通路','guangdongtonglu'),
+('冠庭国际物流','guanting'),
+('翰丰快递','hanfengjl'),
+('上海航瑞货运','hangrui'),
+('飞豹速递','hkeex'),
+('华通快运','htongexpress'),
+('中国香港环球快运','huanqiuabc'),
+('汇强快递','huiqiangkuaidi'),
+('UPS i-parcel','iparcel'),
+('牙买加(Jamaica Post)','jamaicapost'),
+('极光转运','jiguang'),
+('骏绅物流','jsexpress'),
+('骏丰国际速递','junfengguoji'),
+('KCS','kcs'),
+('韩国邮政韩文','koreapostkr'),
+('快8速运','kuai8'),
+('吉尔吉斯斯坦(Kyrgyz Post)','kyrgyzpost'),
+('林道国际快递-英文','ldxpres'),
+('楽道物流','ledaowuliu'),
+('马来西亚大包、EMS(Malaysia Post(parcel,EMS))','malaysiaems'),
+('皇家物流','pfcexpress'),
+('急顺通','pzhjst'),
+('千顺快递','qskdyxgs'),
+('全速通','quansutong'),
+('rpx','rpx'),
+('赛澳递','saiaodi'),
+('丰程物流','sccod'),
+('乌克兰小包、大包(UkrPost)','ukrpost'),
+('臣邦同城','wto56kj'),
+('新宁物流','xinning'),
+('云达通','ydglobe'),
+('亿领速运','yilingsuyun'),
+('中远快运','zy100'),
+('安达信','advancing'),
+('捷记方舟','ajexpress'),
+('澳捷物流','ajlogistics'),
+('阿尔巴尼亚(Posta shqipatre)','albania'),
+('amazon-国内订单','amcnorder'),
+('AOL澳通速递','aolau'),
+('阿鲁巴[荷兰](Post Aruba)','aruba'),
+('彪记快递','biaojikuaidi'),
+('青云物流','bjqywl'),
+('能装能送','canhold'),
+('捷克(?eská po?ta)','ceskaposta'),
+('长宇物流','changyuwuliu'),
+('城际快递','chengji'),
+('SQK国际速递','chinasqk'),
+('Chronopost Portugal','chronopostport'),
+('大韩通运','cjkoreaexpress'),
+('长吉物流','cjqy'),
+('CNAIR','cnair'),
+('哥伦比亚(4-72 La Red Postal de Colombia)','colombia'),
+('大道物流','dadaoex'),
+('丹递56','dande56'),
+('Delhivery','delhivery'),
+('DTDC India','dtdcindia'),
+('龙象国际物流','edragon'),
+('东方汇','est365'),
+('ETEEN专线','eteenlog'),
+('易邮国际','euguoji'),
+('易优包裹','eupackage'),
+('优莎速运','eusacn'),
+('FedEx-英国件(FedEx UK)','fedexuk'),
+('飞狐快递','feihukuaidi'),
+('斐济(Fiji Post)','fiji'),
+('法翔速运','ftlexpress'),
+('飞云快递系统','fyex'),
+('广东诚通物流','gdct56'),
+('全网物流','gdqwwl'),
+('潍鸿','grivertek'),
+('万通快递','gswtkd'),
+('GT国际快运','gtgogo'),
+('GTT EXPRESS快递','gttexpress'),
+('海盟速递','haimengsudi'),
+('汉邦国际速递','handboy'),
+('航宇快递','hangyu'),
+('猴急送','hjs'),
+('宏品物流','hongpinwuliu'),
+('鸿远物流','hyeship'),
+('上海昊宏国际货物','hyk'),
+('恒宇运通','hyytes'),
+('印度(India Post)','india'),
+('印度尼西亚EMS(Pos Indonesia-EMS)','indonesia'),
+('Italy SDA','italysad'),
+('jcex','jcex'),
+('聚中大','juzhongda'),
+('哈萨克斯坦(Kazpost)','kazpost'),
+('Landmark Global','landmarkglobal'),
+('莱索托(Lesotho Post)','lesotho'),
+('领送送','lingsong'),
+('小熊物流','littlebearbear'),
+('華信物流WTO','logistics'),
+('长风物流','longvast'),
+('卢森堡(Luxembourg Post)','luxembourg'),
+('LWE','lwe'),
+('澳洲迈速快递','maxeedexpress'),
+('美达快递','meidaexpress'),
+('美泰物流','meitai'),
+('明亮物流','mingliangwuliu'),
+('猛犸速递','mmlogi'),
+('阿曼(Oman Post)','oman'),
+('一号仓','onehcang'),
+('鹏程快递','pengcheng'),
+('菲律宾(Philippine Postal)','phlpost'),
+('北极星快运','polarisexpress'),
+('坦桑尼亚(Tanzania Posts Corporation)','posta'),
+('巴布亚新几内亚(PNG Post)','postpng'),
+('雪域快递','qhxykd'),
+('全际通','quanjitong'),
+('Quantium','quantium'),
+('叙利亚(Syrian Post)','republic'),
+('睿和泰速运','rhtexpress'),
+('沙特阿拉伯(Saudi Post)','saudipost'),
+('速呈','sczpds'),
+('闪货极速达','shanhuodidi'),
+('世运快递','shiyunkuaidi'),
+('林道国际快递','shlindao'),
+('wish邮','shpostwish'),
+('顺捷丰达','shunjiefengda'),
+('SkyNet Malaysia','skynetmalaysia'),
+('申必达','speedoex'),
+('新加坡EMS、大包(Singapore Speedpost)','speedpost'),
+('顺通快递','stkd'),
+('苏丹(Sudapost)','sudapost'),
+('红马甲物流','sxhongmajia'),
+('天美快递','taimek'),
+('TNT Post','tntpostcn'),
+('TNT UK','tntuk'),
+('通和天下','tonghetianxia'),
+('天翼物流','tywl99'),
+('乌克兰小包、大包(UkrPoshta)','ukraine'),
+('优联吉运','uluckex'),
+('UTAO优到','utaoscm'),
+('瓦努阿图(Vanuatu Post)','vanuatu'),
+('万博快递','wanboex'),
+('文捷航空','wenjiesudi'),
+('新元快递','xingyuankuaidi'),
+('一辉物流','yatfai'),
+('易欧洲国际物流','yiouzhou'),
+('易邮速运','yiyou'),
+('YODEL','yodel'),
+('运通快运','ytky168'),
+('珠峰速运','zf365'),
+('众辉达物流','zhdwl'),
+('众川国际','zhongchuan'),
+('中环转运','zhonghuanus'),
+('中技物流','zhongjiwuliu'),
+('忠信达','zhongxinda'),
+('振捷国际货运','zjgj56'),
+('安达易国际速递','adiexpress'),
+('德国雄鹰速递','adlerlogi'),
+('AFL','afl'),
+('安家同城快运','anjiatongcheng'),
+('新干线快递','anlexpress'),
+('澳速物流','aosu'),
+('apgecommerce','apgecommerce'),
+('美国汉邦快递','aplus100'),
+('Aplus物流','aplusex'),
+('ARC','arc'),
+('澳达国际物流','auadexpress'),
+('澳货通','auex'),
+('澳邦国际物流','ausbondexpress'),
+('奥地利(Austrian Post)','austria'),
+('AUV国际快递','auvexpress'),
+('澳新物流','axexpress'),
+('巴林(Bahrain Post)','bahrain'),
+('孟加拉国(EMS)','bangladesh'),
+('宝通快递','baotongkd'),
+('报通快递','baoxianda'),
+('巴巴多斯(Barbados Post)','barbados'),
+('BCWELT','bcwelt'),
+('蜜蜂速递','bee001'),
+('beiou express','beiou'),
+('伯利兹(Belize Postal)','belize'),
+('笨鸟国际','benniao'),
+('鑫锐达','bjxsrd'),
+('远通盛源','bjytsywl'),
+('佰乐捷通','bljt56'),
+('BlueDart','bluedart'),
+('标杆物流','bmlchina'),
+('波黑(JP BH Posta)','bohei'),
+('玻利维亚','bolivia'),
+('BorderGuru','borderguru'),
+('堡昕德速递','bosind'),
+('博茨瓦纳','botspost'),
+('速方(Sufast)','bphchina'),
+('百千诚物流','bqcwl'),
+('巴西(Brazil Post/Correios)','brazilposten'),
+('宏桥国际物流','briems'),
+('文莱(Brunei Postal)','brunei'),
+('保加利亚(Bulgarian Posts)','bulgarian'),
+('展勤快递','byht'),
+('柬埔寨(Cambodia Post)','cambodia'),
+('到了港','camekong'),
+('Campbell’s Express','campbellsexpress'),
+('加拿大邮政','canpostfr'),
+('卢森堡航空','cargolux'),
+('钏博物流','cbo56'),
+('河南次晨达','ccd'),
+('CDEK','cdek'),
+('捷祥物流','cdjx56'),
+('城铁速递','cex'),
+('成达国际速递','chengda'),
+('智利(Correos Chile)','chile'),
+('嘉荣物流','chllog'),
+('法国大包、EMS-法文(Chronopost France)','chronopostfra'),
+('法国大包、EMS-英文(Chronopost France)','chronopostfren'),
+('中国香港骏辉物流','chunfai'),
+('City-Link','citylink'),
+('citysprint','citysprint'),
+('群航国际物流','cloudlogistics365'),
+('CL日中速运','clsp'),
+('中澳速递','cnausu'),
+('中欧物流','cneulogistics'),
+('CNUP 中联邮','cnup'),
+('中国翼','cnws'),
+('莫桑比克(Correios de Moçambique)','correios'),
+('乌拉圭(Correo Uruguayo)','correo'),
+('阿根廷(Correo Argentina)','correoargentino'),
+('哥斯达黎加(Correos de Costa Rica)','correos'),
+('重庆星程快递','cqxingcheng'),
+('环旅快运','crossbox'),
+('新时速物流','csxss'),
+('塞浦路斯(Cyprus Post)','cypruspost'),
+('达速物流','dasu'),
+('DCS','dcs'),
+('叮当同城','ddotbase'),
+('德中快递','decnlh'),
+('Deltec Courier','deltec'),
+('澳行快递','desworks'),
+('东风全球速递','dfglobalex'),
+('DHL HK','dhlhk'),
+('DHL-荷兰(DHL Netherlands)','dhlnetherlands'),
+('DHL-波兰(DHL Poland)','dhlpoland'),
+('dhluk','dhluk'),
+('云南滇驿物流','dianyi'),
+('叮咚澳洲转运','dindon'),
+('叮咚快递','dingdong'),
+('Direct Link','directlink'),
+('递四方澳洲','disifangau'),
+('天翔东捷运','djy56'),
+('东瀚物流','donghanwl'),
+('东红物流','donghong'),
+('Dotzot','dotzot'),
+('德淘邦','dt8ang'),
+('多道供应链','duodao56'),
+('东方航空物流','ealceair'),
+('E跨通','ecallturn'),
+('EC-Firstclass','ecfirstclass'),
+('ECMS Express','ecmsglobal'),
+('东西E全运','ecotransite'),
+('厄瓜多尔(Correos del Ecuador)','ecuador'),
+('易达快运','edaeuexpress'),
+('e直运','edtexpress'),
+('EFSPOST','efspost'),
+('埃及(Egypt Post)','egypt'),
+('Ekart','ekart'),
+('易联通达','el56'),
+('希腊包裹(ELTA Hellenic Post)','elta'),
+('希腊EMS(ELTA Courier)','eltahell'),
+('阿联酋(Emirates Post)','emiratesen'),
+('波兰小包(Poczta Polska)','emonitoring'),
+('波兰小包(Poczta Polska)','emonitoringen'),
+('南非EMS','emssouthafrica'),
+('乌克兰EMS(EMS Ukraine)','emsukraine'),
+('乌克兰EMS-中文(EMS Ukraine)','emsukrainecn'),
+('英国(大包,EMS)','england'),
+('联众国际','epspost'),
+('贰仟家物流','erqianjia56'),
+('俄顺达','eshunda'),
+('Estafeta','estafeta'),
+('Estes','estes'),
+('易达国际速递','eta100'),
+('埃塞俄比亚(Ethiopian postal)','ethiopia'),
+('中欧国际物流','eucnrail'),
+('德国 EUC POST','eucpost'),
+('EU-EXPRESS','euexpress'),
+('败欧洲','europe8'),
+('europeanecom','europeanecom'),
+('可可树美中速运','excocotree'),
+('E2G速递','express2global'),
+('澳洲新干线快递','expressplus'),
+('易转运','ezhuanyuan'),
+('颿达国际快递-英文','fandaguoji'),
+('正途供应链','fastzt'),
+('FedEx-英国件','fedexukcn'),
+('FedRoad 联邦转运','fedroad'),
+('凤凰快递','fenghuangkuaidi'),
+('丰羿','fengyee'),
+('芬兰(Itella Posti Oy)','finland'),
+('花瓣转运','flowerkd'),
+('四方格','fourpxus'),
+('FOX国际快递','fox'),
+('FQ狂派速递','freakyquick'),
+('高铁快运','gaotieex'),
+('Gati-英文','gatien'),
+('Gati-KWE','gatikwe'),
+('容智快运','gdrz58'),
+('新鹏快递','gdxp'),
+('格鲁吉亚(Georgian Pos)','georgianpost'),
+('环创物流','ghl'),
+('GHT物流','ghtexpress'),
+('直布罗陀[英国]( Royal Gibraltar Post)','gibraltar'),
+('冠捷物流 ','gjwl'),
+('全球特快','global99'),
+('英脉物流','gml'),
+('时安达速递','goex'),
+('格陵兰[丹麦](TELE Greenland A/S)','greenland'),
+('哥士传奇速递','gscq365'),
+('永邦快递','guangdongyongbang'),
+('天天快物流','guoeryue'),
+('国送快运','guosong'),
+('宏观国际快递','gvpexpress'),
+('光线速递','gxwl'),
+('贵州星程快递','gzxingcheng'),
+('海红for买卖宝','haihongmmb'),
+('海星桥快递','haixingqiao'),
+('海中转运','haizhongzhuanyun'),
+('好又快物流','haoyoukuai'),
+('开心快递','happylink'),
+('亚美尼亚(Haypost-Armenian Postal)','haypost'),
+('恒瑞物流','hengrui56'),
+('环国运物流','hgy56'),
+('Hi淘易快递','hitaoe'),
+('互联快运','hlkytj'),
+('共联配','hlpgyl'),
+('河南全速通','hnqst'),
+('顺时达物流','hnssd56'),
+('中强物流','hnzqwl'),
+('宏捷国际物流','hongjie'),
+('环球通达 ','hqtd'),
+('卓烨快递','hrbzykd'),
+('高铁速递','hre'),
+('克罗地亚(Hrvatska Posta)','hrvatska'),
+('海硕高铁速递','hsgtsd'),
+('海淘物流','ht22'),
+('华通务达物流','htwd'),
+('华达快运','huada'),
+('环东物流','huandonglg'),
+('华夏货运','huaxiahuoyun'),
+('汇霖大货网','huilin56'),
+('驼峰国际','humpline'),
+('兰州伙伴物流','huoban'),
+('户通物流','hutongwuliu'),
+('华航快递','hzpl'),
+('冰岛(Iceland Post)','iceland'),
+('泛太优达','iex'),
+('iExpress','iexpress'),
+('无限速递','igcaexpress'),
+('logen路坚','ilogen'),
+('ILYANG','ilyang'),
+('艾姆勒','imlb2c'),
+('INDOPAKET','indopaket'),
+('多米尼加(INPOSDOM – Instituto Postal Dominicano)','inposdom'),
+('捷运达快递','interjz'),
+('Interlink Express','interlink'),
+('伊朗(Iran Post)','iran'),
+('以色列(Israel Post)','israelpost'),
+('驿扬国际速运','iyoungspeed'),
+('janio','janio'),
+('骏达快递','jdexpressusa'),
+('泽西岛','jerseypost'),
+('澳速通国际速递','jetexpressgroup'),
+('佳家通货运','jiajiatong56'),
+('加佳物流','jiajiawl'),
+('锦程物流','jinchengwuliu'),
+('劲通快递','jintongkd'),
+('晋越快递','jinyuekuaidi'),
+('冀速物流','jisu'),
+('九宫物流','jiugong'),
+('久易快递','jiuyicn'),
+('吉祥邮(澳洲)','jixiangyouau'),
+('佳捷翔物流','jjx888'),
+('约旦(Jordan Post)','jordan'),
+('聚物物流','juwu'),
+('肯尼亚(POSTA KENYA)','kenya'),
+('嘉里大荣物流','kerrytj'),
+('启邦国际物流','keypon'),
+('快服务','kfwnet'),
+('跨境直邮通','kjde'),
+('番薯国际货运','koali'),
+('淘韩国际快递','krtao'),
+('快速递','ksudi'),
+('快淘快递','kuaitao'),
+('四川快优达速递','kuaiyouda'),
+('KURASI','kurasi'),
+('凯信达','kxda'),
+('跨跃国际','kyue'),
+('蓝镖快递','lanbiaokuaidi'),
+('蓝弧快递','lanhukuaidi'),
+('老挝(Lao Express) ','lao'),
+('塞内加尔','laposte'),
+('林安物流','lasy56'),
+('拉脱维亚(Latvijas Pasts)','latviaen'),
+('立白宝凯物流','lbbk'),
+('乐达全球速递','ledaexpress'),
+('乐递供应链','ledii'),
+('云豹国际货运','leopard'),
+('美联快递','letseml'),
+('lazada','lgs'),
+('联运快递','lianyun'),
+('黎巴嫩(Liban Post)','libanpost'),
+('Linex','linex'),
+('丽狮物流','lishi'),
+('立陶宛(Lietuvos pa?tas)','lithuania'),
+('良藤国际速递','lmfex'),
+('新易泰','lnet'),
+('隆浪快递','longlangkuaidi'),
+('联通快递','ltparcel'),
+('路邦物流','lubang56'),
+('论道国际物流','lundao'),
+('鲁通快运','lutong'),
+('卢森堡(Luxembourg Post)','luxembourgde'),
+('卢森堡(Luxembourg Post)','luxembourgfr'),
+('马其顿(Macedonian Post)','macedonia'),
+('麦力快递','mailikuaidi'),
+('迈隆递运','mailongdy'),
+('马尔代夫(Maldives Post)','maldives'),
+('马耳他(Malta Post)','malta'),
+('芒果速递','mangguo'),
+('今枫国际快运','mapleexpress'),
+('毛里求斯(Mauritius Post)','mauritius'),
+('木春货运','mchy'),
+('美邦国际快递','meibang'),
+('墨西哥(Correos de Mexico)','mexico'),
+('Mexico Senda Express','mexicodenda'),
+('银河物流','milkyway'),
+('美龙快递','mjexp'),
+('摩尔多瓦(Posta Moldovei)','moldova'),
+('蒙古国(Mongol Post) ','mongolpost'),
+('黑山(Posta Crne Gore)','montenegro'),
+('摩洛哥 ( Morocco Post )','morocco'),
+('MRW','mrw'),
+('Mexico Multipack','multipack'),
+('中俄速通(淼信)','mxe56'),
+('新亚物流','nalexpress'),
+('纳米比亚(NamPost)','namibia'),
+('NandanCourier','nandan'),
+('红马速递','nedahm'),
+('荷兰速递(Nederland Post)','nederlandpost'),
+('尼泊尔(Nepal Postal Services)','nepalpost'),
+('尼日利亚(Nigerian Postal)','nigerianpost'),
+('牛仔速运','niuzaiexpress'),
+('NLE','nle'),
+('亚欧专线','nlebv'),
+('华赫物流','nmhuahe'),
+('Nova Poshta','novaposhta'),
+('偌亚奥国际快递','nuoyaao'),
+('OCA Argentina','ocaargen'),
+('OC-Post','ocpost'),
+('无限配','omni2'),
+('爱沙尼亚(Eesti Post)','omniva'),
+('昂威物流','onway'),
+('OPEK','opek'),
+('波音速递','overseaex'),
+('巴基斯坦(Pakistan Post)','pakistan'),
+('Pandu Logistics','pandulogistics'),
+('巴拉圭(Correo Paraguayo)','paraguay'),
+('诚一物流','parcelchina'),
+('普畅物流','pcwl56'),
+('全球速递','pdstow'),
+('派尔快递','peex'),
+('陪行物流','peixingwuliu'),
+('秘鲁(SERPOST)','peru'),
+('品速心达快递','pinsuxinda'),
+('品信快递','pinxinkuaidi'),
+('先锋国际快递','pioneer'),
+('龙行天下','pmt0704be'),
+('葡萄牙(Portugal CTT)','portugalctt'),
+('葡萄牙(Portugal CTT)','portugalctten'),
+('Portugal Seur','portugalseur'),
+('PostElbe','postelbe'),
+('PostNord(Posten AB)','postenab'),
+('挪威(Posten Norge)','postennorge'),
+('PT Prima Multi Cipta','primamulticipta'),
+('土耳其','ptt'),
+('ANTS EXPRESS','qdants'),
+('千里速递','qianli'),
+('启辰国际速递','qichen'),
+('全通快运','quantwl'),
+('全信通快递','quanxintong'),
+('全之鑫物流','qzx56'),
+('Red Express','redexpress'),
+('罗马尼亚(Posta Romanian)','romanian'),
+('皇家国际速运','royal'),
+('日日通国际','rrthk'),
+('瑞典(Sweden Post)','ruidianyouzhengen'),
+('卢旺达(Rwanda i-posita)','rwanda'),
+('Safexpress','safexpress'),
+('萨摩亚(Samoa Post)','samoa'),
+('三盛快递','sanshengco'),
+('中加国际快递','scic'),
+('速佳达快运','scsujiada'),
+('四川星程快递','scxingcheng'),
+('Selektvracht','selektvracht'),
+('塞尔维亚(PE Post of Serbia)','serbia'),
+('International Seur','seur'),
+('澳丰速递','sfau'),
+('十方通物流','sfift'),
+('圣飞捷快递','sfjhd'),
+('曹操到','sfpost'),
+('Shadowfax','shadowfax'),
+('衫达快运','shanda56'),
+('上海无疆for买卖宝','shanghaiwujiangmmb'),
+('尚途国际货运','shangtuguoji'),
+('捎客物流','shaoke'),
+('杰响物流','shbwch'),
+('商海德物流','shd56'),
+('盛通快递','shengtongscm'),
+('神骏物流','shenjun'),
+('神马快递','shenma'),
+('阳光快递','shiningexpress'),
+('王牌快递','shipbyace'),
+('苏豪快递','shipsoho'),
+('SHL畅灵国际物流','shlexp'),
+('shreeanjanicourier','shreeanjanicourier'),
+('顺邦国际物流','shunbang'),
+('顺士达速运','shunshid'),
+('SiCepat Ekspres','sicepat'),
+('四海快递','sihaiet'),
+('四海捷运','sihiexpress'),
+('Siodemka','siodemka'),
+('易普递','sixroad'),
+('skynet','skynet'),
+('skynetworldwide','skynetworldwide'),
+('荷兰Sky Post','skypost'),
+('斯洛伐克(Slovenská Posta)','slovak'),
+('斯洛文尼亚(Slovenia Post)','slovenia'),
+('斯里兰卡(Sri Lanka Post)','slpost'),
+('嗖一下同城快递','sofast56'),
+('行必达','speeda'),
+('速速达','ssd'),
+('首通快运','staky'),
+('星速递','starex'),
+('星运快递','staryvr'),
+('申通新西兰','stonewzealand'),
+('智德物流','stzd56'),
+('速呈宅配','sucheng'),
+('特急便物流','sucmj'),
+('郑州速捷','sujievip'),
+('速品快递','supinexpress'),
+('瑞士邮政','swisspostcn'),
+('深圳DPEX','szdpex'),
+('坦桑尼亚(Tanzania Posts)','tanzania'),
+('TCI XPS','tcixps'),
+('TCXB国际物流','tcxbthai'),
+('TD Cargo','tdcargo'),
+('加拿大雷霆快递','thunderexpress'),
+('天翔快递','tianxiang'),
+('天纵物流','tianzong'),
+('万家通快递','timedg'),
+('Shree Tirupati','tirupati'),
+('泰实货运','tjkjwl'),
+('天联快运','tlky'),
+('株式会社T.M.G','tmg'),
+('TNT Italy','tntitaly'),
+('TNY物流','tny'),
+('通达兴物流','tongdaxing'),
+('顶世国际物流','topshey'),
+('The Professional Couriers','tpcindia'),
+('Trans Kargo','transkargologistics'),
+('海龟国际快递','turtle'),
+('UEX国际物流','uex'),
+('欧洲UEX','uexiex'),
+('乌干达(Posta Uganda)','uganda'),
+('邮鸽速运','ugoexpress'),
+('UPS Freight','upsfreight'),
+('UPS Mail Innovations','upsmailinno'),
+('华夏国际速递','uschuaxia'),
+('USPSCN','uspscn'),
+('乌兹别克斯坦(Post of Uzbekistan)','uzbekistan'),
+('万庚国际速递','vangenexpress'),
+('越中国际物流','vctrans'),
+('越南小包(Vietnam Posts)','vietnam'),
+('鹰运国际速递','vipexpress'),
+('越南EMS(VNPost Express)','vnpost'),
+('Wahana','wahana'),
+('宁夏万家通','wanjiatong'),
+('万达美','wdm'),
+('威速递','wexpress'),
+('万邑通','winit'),
+('凡仕特物流','wlfast'),
+('星空国际','wlwex'),
+('渥途国际速运','wotu'),
+('wowexpress','wowexpress'),
+('沃埃家','wowvip'),
+('WTD海外通','wtdex'),
+('万运国际快递','wygj168'),
+('微转运','wzhaunyun'),
+('国晶物流','xdshipping'),
+('蓝天物流','xflt56'),
+('鑫宏福物流','xhf56'),
+('西安城联速递','xianchengliansudi'),
+('湘达物流','xiangdawuliu'),
+('翔腾物流','xiangteng'),
+('小C海淘','xiaocex'),
+('西安喜来快递','xilaikd'),
+('西邮寄','xipost'),
+('鑫世锐达','xsrd'),
+('鑫通宝物流','xtb'),
+('鑫远东速运','xyd666'),
+('西游寄速递','xyjexpress'),
+('YCG物流','ycgglobal'),
+('易达丰国际速递','ydfexpress'),
+('也门(Yemen Post)','yemen'),
+('驿递汇速递','yidihui'),
+('艺凡快递','yifankd'),
+('易航物流','yihangmall'),
+('银捷速递','yinjiesudi'),
+('一柒国际物流','yiqiguojiwuliu'),
+('亿顺航','yishunhang'),
+('宜送','yisong'),
+('易通达','yitongda'),
+('邮来速递','youlai'),
+('远航国际快运','yuanhhk'),
+('西安运逸快递','yyexp'),
+('一运全成物流','yyqc56'),
+('中宏物流','zhonghongwl'),
+('众派速递','zhpex');
+

+ 16 - 0
src/main/resources/bootstrap.yml

@@ -0,0 +1,16 @@
+server:
+  port: 18013
+
+# 指定当前服务的名称,这个名称会注册到注册中心
+spring:
+  application:
+    name: @artifactId@
+  cloud:
+    config:                             # Config客户端配置
+      profile: @activatedProperties@    # 启用配置后缀名称
+      label: master                     # 分支名称
+      # uri: http://localhost:18001
+      uri: http://47.119.112.46:18001          # 配置中心地址
+      # uri: http://120.79.162.1:18001     # 配置中心地址(正式环境)
+      name: tools                        # 配置文件名称
+

+ 105 - 0
src/test/java/com/caimei365/tools/ToolsApplicationTests.java

@@ -0,0 +1,105 @@
+package com.caimei365.tools;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class ToolsApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+    /**
+     * kuaidi100.key = bEZlgVkW1438
+     * kuaidi100.customer = 1414E0E533E3311FBA5E633C10F78306
+     * kuaidi100.secret = e3bb51a0c8bd40c69342c7c88650c035
+     * kuaidi100.userid = 31872248ba914ac289db3ed3244d527c
+     */
+//    private String key = "bEZlgVkW1438";
+//    private String customer = "1414E0E533E3311FBA5E633C10F78306";
+//    /**
+//     * 查询物流轨迹
+//     */
+//    @Test
+//    public void testQueryTrack() throws Exception{
+//
+//        QueryTrackReq queryTrackReq = new QueryTrackReq();
+//        QueryTrackParam queryTrackParam = new QueryTrackParam();
+//        queryTrackParam.setCom(CompanyConstant.SF);
+//        queryTrackParam.setNum("SF1108462182157");
+//        queryTrackParam.setPhone("15828171629");
+//        String param = new Gson().toJson(queryTrackParam);
+//
+//        queryTrackReq.setParam(param);
+//        queryTrackReq.setCustomer(customer);
+//        queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));
+//
+//        IBaseClient baseClient = new QueryTrack();
+//        System.out.println(baseClient.execute(queryTrackReq));
+//    }
+//
+//     /**
+//     * 快递信息地图轨迹
+//     */
+//    @Test
+//    public void testQueryMapView() throws Exception{
+//
+//        QueryTrackReq queryTrackReq = new QueryTrackReq();
+//        QueryTrackParam queryTrackParam = new QueryTrackParam();
+//        queryTrackParam.setCom(CompanyConstant.YD);
+//        queryTrackParam.setNum("4311159956248");
+//        queryTrackParam.setPhone("17725390266");
+//        queryTrackParam.setFrom("河北保定市");
+//        queryTrackParam.setTo("湖南岳阳市");
+//        queryTrackParam.setResultv2("2");
+//        String param = new Gson().toJson(queryTrackParam);
+//
+//        queryTrackReq.setParam(param);
+//        queryTrackReq.setCustomer(customer);
+//        queryTrackReq.setSign(SignUtils.querySign(param ,key,customer));
+//
+//        IBaseClient baseClient = new QueryTrackMap();
+//        HttpResult result = baseClient.execute(queryTrackReq);
+//
+//        QueryTrackMapResp queryTrackMapResp = new Gson().fromJson(result.getBody(),QueryTrackMapResp.class);
+//        System.out.println(queryTrackMapResp);
+//    }
+//
+//    /**
+//     * 订阅
+//     */
+//    @Test
+//    public void testSubscribe() throws Exception{
+//        SubscribeParameters subscribeParameters = new SubscribeParameters();
+//        subscribeParameters.setCallbackurl("http://www.baidu.com");
+//        subscribeParameters.setPhone("17725390266");
+//
+//        SubscribeParam subscribeParam = new SubscribeParam();
+//        subscribeParam.setParameters(subscribeParameters);
+//        subscribeParam.setCompany(CompanyConstant.ST);
+//        subscribeParam.setNumber("773039762404825");
+//        subscribeParam.setKey(key);
+//
+//        SubscribeReq subscribeReq = new SubscribeReq();
+//        subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
+//        subscribeReq.setParam(new Gson().toJson(subscribeParam));
+//
+//        IBaseClient subscribe = new Subscribe();
+//        System.out.println(subscribe.execute(subscribeReq));
+//    }
+//
+//    /**
+//     * 智能识别接口(正式用户可以使用)
+//     */
+//    @Test
+//    public void testAutoNum() throws Exception{
+//        AutoNumReq autoNumReq = new AutoNumReq();
+//        autoNumReq.setKey(key);
+//        autoNumReq.setNum("17725390266");
+//
+//        IBaseClient baseClient = new AutoNum();
+//        System.out.println(baseClient.execute(autoNumReq));
+//    }
+
+}
+