Browse Source

first commit

15810770710@163.com 4 years ago
parent
commit
c4aab0ce0a
47 changed files with 6510 additions and 0 deletions
  1. 118 0
      .mvn/wrapper/MavenWrapperDownloader.java
  2. 2 0
      .mvn/wrapper/maven-wrapper.properties
  3. 9 0
      HELP.md
  4. 310 0
      mvnw
  5. 182 0
      mvnw.cmd
  6. 234 0
      pom.xml
  7. BIN
      src.zip
  8. 48 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/App.java
  9. 32 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/SwaggerConfig.java
  10. 639 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/action/ChannelAction.java
  11. 115 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/constant/SjjhConstant.java
  12. 24 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/constant/SupplierProperties.java
  13. 38 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/DecodeThreeElementRequestObject.java
  14. 40 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/ErrorResponseObject.java
  15. 92 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/NciicCheck.java
  16. 92 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/NciicCompare.java
  17. 87 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/NciicServices.java
  18. 45 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/NciicServicesPortType.java
  19. 18 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/NotifySms.java
  20. 60 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/ObjectFactory.java
  21. 8 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/Person.java
  22. 61 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/PhotoIdentityErrorResponseObject.java
  23. 19 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/PhotoIdentityRequestObject.java
  24. 67 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/PhotoIdentityResponseObject.java
  25. 67 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/TwoElementResponseObject.java
  26. 21 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/TwoElementsRequestObject.java
  27. 89 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/service/ChannelService.java
  28. 1392 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/service/ChannelServiceImpl.java
  29. 78 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/AesUtil.java
  30. 228 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/Base64.java
  31. 17 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/CommonUtil.java
  32. 112 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/DESedeUtil.java
  33. 118 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/DesUtil.java
  34. 64 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/NotifyThread.java
  35. 35 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/SHA1.java
  36. 42 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/SHA256.java
  37. 347 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/SM2.java
  38. 213 0
      src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/SM3.java
  39. 833 0
      src/main/resources/config/a.wsdl
  40. 95 0
      src/main/resources/config/application-test.yml
  41. 3 0
      src/main/resources/config/banner.txt
  42. 30 0
      src/main/resources/config/bootstrap.yml
  43. 89 0
      src/main/resources/config/iov-sjjh-servicenode-supplier-10000034-hwtest.yml
  44. 97 0
      src/main/resources/config/iov-sjjh-servicenode-supplier-10000043-hwtest.yml
  45. 54 0
      src/main/resources/config/iov-sjjh-servicenode-supplier-10000043-new.yaml
  46. 37 0
      src/main/resources/config/logback-spring.xml
  47. 109 0
      src/main/resources/config/supplier-test.yaml

+ 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();
+    }
+
+}

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

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

+ 9 - 0
HELP.md

@@ -0,0 +1,9 @@
+# Getting Started
+
+### Reference Documentation
+For further reference, please consider the following sections:
+
+* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
+* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/maven-plugin/reference/html/)
+* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/maven-plugin/reference/html/#build-image)
+

+ 310 - 0
mvnw

@@ -0,0 +1,310 @@
+#!/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%

+ 234 - 0
pom.xml

@@ -0,0 +1,234 @@
+<?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.0.6.RELEASE</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <groupId>info.aspirecn.iov.sjjh</groupId>
+    <artifactId>iov-sjjh-servicenode-supplier-10000043</artifactId>
+
+    <version>1.2.1</version>
+    <name>iov-sjjh-servicenode-supplier-10000043</name>
+    <description>Demo project for Spring Boot</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <!-- 服务注册 -->
+        <dependency>
+
+        <groupId>org.springframework.boot</groupId>
+
+        <artifactId>spring-boot-starter-data-redis</artifactId>
+
+    </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+        </dependency>
+         <dependency>
+             <groupId>org.apache.cxf</groupId>
+             <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
+             <version>3.2.4</version>
+         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-config-client</artifactId>
+        </dependency>
+
+        <!-- aspire maven私服 -->
+        <dependency>
+            <groupId>info.aspirecn.rdc</groupId>
+            <artifactId>aspirecloud-commons-sleuthlog-starter</artifactId>
+            <version>5.0.1</version>
+        </dependency>
+
+        <!--错误日志-->
+        <dependency>
+            <groupId>info.aspirecn.rdc</groupId>
+            <artifactId>aspirecloud-commons-errorlog-starter</artifactId>
+            <version>5.0.2</version>
+        </dependency>
+         <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.70</version>
+        </dependency>
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>info.aspirecn.iov.sjjh</groupId>
+            <artifactId>iov-sjjh-commons-lang</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>axis</groupId>
+            <artifactId>axis</artifactId>
+            <version>1.4</version>
+        </dependency>
+        <dependency>
+            <groupId>info.aspirecn.iov.sjjh</groupId>
+            <artifactId>iov-sjjh-servicenode-sms-interface</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>info.aspirecn.iov.sjjh</groupId>
+            <artifactId>iov-sjjh-servicenode-channel-interface</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+    </dependencies>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>Finchley.SR2</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <plugins>
+        <plugin>
+                           <groupId>org.springframework.boot</groupId>
+                           <artifactId>spring-boot-maven-plugin</artifactId>
+                           <configuration>
+                               <includes>
+
+                                   <include>
+                                       <groupId>info.aspirecn.iov.sjjh</groupId>
+                                       <artifactId>iov-sjjh-commons-lang</artifactId>
+                                   </include>
+                                   <include>
+                                       <groupId>info.aspirecn.iov.sjjh</groupId>
+                                       <artifactId>iov-sjjh-servicenode-sms-interface</artifactId>
+                                   </include>
+                                   <include>
+                                       <groupId>info.aspirecn.iov.sjjh</groupId>
+                                       <artifactId>iov-sjjh-servicenode-channel-interface</artifactId>
+                                   </include>
+                               </includes>
+                           </configuration>
+                       </plugin>
+
+                       <plugin>
+                           <groupId>org.apache.maven.plugins</groupId>
+                           <artifactId>maven-jar-plugin</artifactId>
+                           <configuration>
+                               <archive>
+                                   <manifest>
+                                       <addClasspath>true</addClasspath>
+                                       <classpathPrefix>lib/</classpathPrefix>
+                                   </manifest>
+                               </archive>
+                           </configuration>
+                       </plugin>
+
+                       <plugin>
+                           <groupId>org.apache.maven.plugins</groupId>
+                           <artifactId>maven-dependency-plugin</artifactId>
+                           <executions>
+                               <execution>
+                                   <id>copy-dependencies</id>
+                                   <phase>prepare-package</phase>
+                                   <goals>
+                                       <goal>copy-dependencies</goal>
+                                   </goals>
+                                   <configuration>
+                                       <outputDirectory>${project.build.directory}/lib</outputDirectory>
+                                       <excludeGroupIds>
+                                           info.aspirecn.iov.sjjh
+                                       </excludeGroupIds>
+                                   </configuration>
+                               </execution>
+                               <execution>
+                                   <id>copy</id>
+                                   <phase>install</phase>
+                                   <goals>
+                                       <goal>copy-dependencies</goal>
+                                   </goals>
+                                   <configuration>
+                                       <outputDirectory>
+                                           ${project.build.directory}/lib
+                                       </outputDirectory>
+                                       <excludeGroupIds>
+                                           info.aspirecn.iov.sjjh
+                                       </excludeGroupIds>
+                                   </configuration>
+                               </execution>
+                           </executions>
+                       </plugin> 
+
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>default-resources</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>target/classes</outputDirectory>
+                            <useDefaultDelimiters>false</useDefaultDelimiters>
+                            <delimiters>
+                                <delimiter>@</delimiter>
+                            </delimiters>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/resources/config</directory>
+                                    <targetPath>config</targetPath>
+                                    <filtering>true</filtering>
+                                    <includes>
+                                        <include>**</include>
+                                    </includes>
+                                </resource>
+
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+          
+
+        </plugins>
+    </build>
+
+</project>

BIN
src.zip


+ 48 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/App.java

@@ -0,0 +1,48 @@
+package info.aspirecn.iov.sjjh.supplier10000043;
+
+import info.aspirecn.iov.sjjh.commons.lang.Constant;
+import info.aspirecn.iov.sjjh.supplier10000043.constant.SjjhConstant;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.core.env.Environment;
+import org.springframework.data.redis.core.BoundHashOperations;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.util.StopWatch;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+@SpringBootApplication
+@EnableConfigurationProperties
+@EnableScheduling
+@Slf4j
+@ComponentScan("info.aspirecn.rdc.aspirecloud.node.except")
+@ComponentScan("info.aspirecn.rdc.aspirecloud.node.brave")
+@ComponentScan("info.aspirecn.iov.sjjh.supplier10000043")
+@EnableFeignClients(basePackages = {"info.aspirecn.iov.sjjh"})
+public class App  {
+
+    public static void main(String[] args) {
+        StopWatch watch = new StopWatch();
+        watch.start();
+
+        ApplicationContext context = SpringApplication.run(App.class, args);
+        Environment environment = context.getBean(Environment.class);
+        String applicationName = environment.getProperty("spring.application.name");
+
+
+
+        watch.stop();
+        log.info("{} 启动完毕,times={}s", applicationName, watch.getTotalTimeSeconds());
+    }
+
+}

+ 32 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/SwaggerConfig.java

@@ -0,0 +1,32 @@
+package info.aspirecn.iov.sjjh.supplier10000043;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * @author minmin
+ */
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+    private boolean swaggerShow = true;
+
+    @Bean
+    public Docket createRestApi() {
+
+        return new Docket(DocumentationType.SWAGGER_2).enable(swaggerShow).apiInfo(apiInfo()).select()
+                .apis(RequestHandlerSelectors.basePackage("info.aspirecn.iov.sjjh.supplier10000043.action"))
+                .paths(PathSelectors.any()).build();
+    }
+
+    private ApiInfo apiInfo() {
+        return new ApiInfoBuilder().title("10000043通道接口").description("").termsOfServiceUrl("").version("1.0.0").build();
+    }
+}

File diff suppressed because it is too large
+ 639 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/action/ChannelAction.java


+ 115 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/constant/SjjhConstant.java

@@ -0,0 +1,115 @@
+package info.aspirecn.iov.sjjh.supplier10000043.constant;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/6/15 17:04
+ * @version: V1.0
+ **/
+public class SjjhConstant {
+    /**
+     * 参数值为0
+     */
+    public static ConcurrentHashMap<String, Map<String,Boolean>> hashMap=new ConcurrentHashMap<String,Map<String,Boolean>>();
+    public static final  String redisKey ="urlnciicCheck-sign,urlnciicCompare-sign,url2nciicCompare-sign";
+    public static final  String secondKey="urlnciicCheck-sign";
+    public static final  String photoKey="urlnciicCompare-sign";
+    public static final  String photoKey2="url2nciicCompare-sign";
+
+    public static final String  key_subStr="-sign";
+    public static final int PARA_ZERO = 0;
+    public static final String PARAMETER_INLICENSE = "inLicense";
+
+    public static final String PARAMETER_INCONDITIONS = "inConditions";
+
+    public static final String PARAMETER_YWLX = "国家物流平台";
+
+    public static final String PARAMETER_JZSC = "家政人员资质审查";
+    public static final String TWO_ELEMENTS_SECRET_KEY = ">c0h`rF0E82lL:2^1AU50$ag)R?c?o?g?k?h?o1kF24#_K7%5+C9.FK-" +
+            "?c.dc3c\\a98y?z?xIA?va=Z;YyJhKnRxSw(w?vZhXs`4NiPtJbLaF/%u?vC.b9KcJg?x-i?h2ba$&q5z?v*nDh]qBsIf?x?va>LbOm@b?" +
+            "x?g?h?//e5m:d?v?j`?CsGgb5?x?vTgb9Pt_u?xTHJ\\7}5OS??(G=7}?./y6g=n?m5/?jUhMnMbQq?x*wJyDn[.XsXhVt@lSe?xEs?g1z?" +
+            "g?g?g?v>kFwEbRxRxYgRoOoSe?x?vCaNp?j-;?v?jcMd<^uYs@/``BbRo?x%tOiCmSxNrb0AcSwQrRiJdb=>z?vXpLuEdYo?xb))r?g4m<z`}" +
+            "U;ZfGgEx>z?v?jXs]rOoCqUiIaFvd=VrFzVt?x?v?jBgMbFna3OxJtSw?x";
+
+    public static final String PHOTO_IDENTITY_SECRET_KEY = "?v?z8F+EYN?[]07_ck9UQ>`hC=&u?o$q?k?h`S?[+{J3J8G7>#J2Y<C35.*" +
+            ".RqOfNn*.?z3fS$?v_;Wpc]YiOx@;Yi$y?vXf@;M.M[V[SoU;Si%u?vJxIxRuSe?x:s&w?/4d?d?a7s?jFfd-WpSe?x9ndJTiPt_u?x." +
+            "[?h?/;v7b%l?v?jOwMnXkNa?x1fAuFgIzXi?x${b/6{JV@9L6OJ/^?.?a3s?ma+-k?j\\mRyUiTj?x-kGeOgRx" +
+            "[.^/Ag[/W;1hKn?g/p?g?gc_?v?jEq^[Oi`V^/` RzRw=v?v\\qO[%a?x?v+b@q[.Gc@lRuOxQeAg$y?v[.Z[Vb[f@/]pL/@/Tyd1\\;" +
+            ">z%t]uaMV[c66.:g?.?.?.?v?jY[^/@/_u?x?v2oQcZ[BjE;WpYy_y_w\\lO/Mc?x?v?jE/LnRkV;NzUmUj=v";
+
+    public static final String PHOTO_IDENTITY_SECRET_KEY_V2 = "?v?z7}A-O27eT1_::TV4>^L2SJ4/?o?g2i?h7q?[dx=)G3G7L7ZVG8UC" +
+            "8nbFKdGnX;*.?z?x3??v`-PtNfM._k`VXo?x=xF;[.@naVYjPp^rNx?x7s[jMnGgFc?x(t?h$l9x1/>d2g?j[ja8Cac6d#3hbLJcJvEx=v?" +
+            "g?h?/<b2a.o3h<;Q.JcA._u?x?vGoYk\\qIf?x(_(}M6DZbj/^B]XK)p&;?m+y?g?v?jR.d-^e`3?x8bNpMdbXKrbNWrGq@b%uOx?g?g*u1" +
+            "z?g6a?jaXMdEwMpbN_j]ha4?x1fFh^g?j?x?v?jdXcZXoGqSy[q^rSi?x?vOic5`CPmPtZtAbToG/Evc-?x?v_tOrBsQq0g?s?.<s)p?v=l" +
+            "^rRnEdL.?x?vbPcZd\\@lKoYjSjHfc9@g[oXe>z?v?jD.OmTeUjJbEwNs?x";
+
+    public static String TWO_ELEMENTS_XML_TEMPLATE = "<ROWS><INFO><SBM>交科信用管理有限公司</SBM></INFO>" +
+            "<ROW><GMSFHM>公民身份号码</GMSFHM><XM>姓名</XM></ROW>" +
+            "<ROW FSD=\"{fsd}\" YWLX=\"{ywlx}\"><GMSFHM>{idCode}</GMSFHM><XM>{name}</XM></ROW></ROWS>";
+    public static String PHOTO_IDENTITY_XML_TEMPLATE = "<ROWS><INFO><SBM>交科信用管理有限公司</SBM></INFO>" +
+            "<ROW><GMSFHM>公民身份号码</GMSFHM><XM>姓名</XM><XP>相片</XP></ROW>" +
+            "<ROW FSD=\"{fsd}\" YWLX=\"{ywlx}\"><GMSFHM>{idCode}</GMSFHM><XM>{name}</XM><XP>{photo}</XP></ROW></ROWS>";
+    public static String PHOTO_IDENTITY_XML_TEMPLATE_V2 = "<ROWS><INFO><SBM>中国家庭服务业协会</SBM></INFO>" +
+            "<ROW><GMSFHM>公民身份号码</GMSFHM><XM>姓名</XM><XP>相片</XP></ROW>" +
+            "<ROW FSD=\"{fsd}\" YWLX=\"{ywlx}\"><GMSFHM>{idCode}</GMSFHM><XM>{name}</XM><XP>{photo}</XP></ROW></ROWS>";
+    public static final String REQUEST_SUCCESS = "100";
+
+    public static final String REQUEST_ERROR = "101";
+
+    public static final String REQUEST_NOT_FIND = "102";
+
+    public static final String PARSE_FAILURE = "103";
+
+    public static final String ERROR_CODE = "errorcode";
+
+    public static final String ERROR_MESSAGE = "errormesage";
+
+    public static final String RESULT_MATCH = "一致";
+
+    public static final String RESULT_UN_MATCH = "不一致";
+
+    public static final String RESULT_NOT_FIND = "库中无此号";
+
+    public static String Charge_Log_Key = "isCharge";
+
+    public static String Charge_Log_ResponseCode = "respnoseCode";
+
+    public static final String PARA_ENCODE = "UTF-8";
+
+    public static final String RESPONSE_PHOTO_MATCH = "系统判断为同一人";
+
+    public static final String RESPONSE_PHOTO_UN_MATCH = "系统判断为不同人";
+
+    public static final String RESPONSE_PHOTO_UNCERTAINTY = "不能确定是否为同一人";
+
+    public static final String RESPONSE_ERROR_PHOTO_QUALITY = "服务结果:上传相片质量校验不合格,请重新拍摄上传";
+
+    public static final String RESPONSE_ERROR_PHOTO_SIZE = "相片文件不能大于32K";
+
+    public static final String RESPONSE_NO_PHOTO = "库中无照片";
+
+    public static final String DECODE_TYPE_WEIZHONG = "WEIZHONG";
+
+    public static final String DECODE_TYPE_COMMON = "COMMON";
+
+    public static final String DECODE_TYPE_MD5 = "MD5";
+
+    public static final String DECODE_TYPE_SHA256 = "SHA256";
+
+    public static final String DECODE_TYPE_AES = "AES";
+
+    public static String PHOTO_IDENTITY_XML_TEMPLATE_V3 = "<ROWS><INFO><SBM>北轻科技</SBM></INFO>" +
+            "<ROW><GMSFHM>公民身份号码</GMSFHM><XM>姓名</XM><XP>相片</XP></ROW>" +
+            "<ROW FSD=\"{fsd}\" YWLX=\"{ywlx}\"><GMSFHM>{idCode}</GMSFHM><XM>{name}</XM><XP>{photo}</XP></ROW></ROWS>";
+    public static final String PARAMETER_YWLX_BQ = "查询";
+
+    public static final String PHOTO_IDENTITY_SECRET_KEY_V3 = "?v?zB:4$9**a%)J E<LG0$O]L1?c?o?g*b?h2j?[2^+W;%N\\>#+SPH" +
+            "am>v?oWjPlGd$m?z.jY)7sJmIz_iZ[JbZ/Z[(w<zcM[.M.Ck@/_kZi]l?xd%YlLbBs@b?x:s?h?/&[?./o+e?jMmc0GgGv?x=xdJCsJv^y?" +
+            "x?g?h&j.e?.8s?v1pUdUoWpd]+q:m@y^wA.\\r8m@1T4\\<9)O=?{O3=^?.7c1.?s?a?v%a^bNm_wQqd#?vHrGm\\hOi_.b=Z.Xi" +
+            "&r_k?g+y?g?g?g?v?jBlH/L[AlFkMcZ.Gv?x9nc9\\d.x?x4.?jUzWb^uCkCaWt]uNx?x?v^f^u^dZd`8_i[p`8OxBbYw?x?vb3]aHxc" +
+            "6?x?s?.?.>/>c?jEvRn`8Kh?x?v?jSzDxRza<Xkc]^uRuYeLa@h4a<z)mNca7HsUjMvMpZ[:b";
+
+}

+ 24 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/constant/SupplierProperties.java

@@ -0,0 +1,24 @@
+package info.aspirecn.iov.sjjh.supplier10000043.constant;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Data
+@ConfigurationProperties(prefix="supplier")
+@Component
+public class SupplierProperties {
+    private  int flag;
+    private long urlPhotoUp;
+    private long url2PhotoUp;
+    private long urlSecondUp;
+    private int secondFlag;
+    private int urlPhotoFlag;
+    private int url2PhotoFlag;
+    private String targetSms;
+    private long  notityLimit;
+    private int hour;
+    private long url3PhotoUp;
+}

+ 38 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/DecodeThreeElementRequestObject.java

@@ -0,0 +1,38 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2019/9/29 15:04
+ * @version: V1.0
+ **/
+@Data
+@ToString
+public class DecodeThreeElementRequestObject {
+    /**接口名*/
+    private String api;
+    /**appkey*/
+    private String appKey;
+    /**密钥*/
+    private String appSecret;
+    /**被查询人对象*/
+    private DecodeThreeElementRequestData data;
+
+    @Data
+    @ToString(callSuper = true, includeFieldNames = true)
+    public static class DecodeThreeElementRequestData {
+        /**姓名*/
+        private String name;
+        /**身份证号*/
+        private String id_number;
+        /**手机号*/
+        private String mobile;
+        /**加密方式*/
+        private String encrypt;
+        /**sign*/
+        private String sign;
+    }
+}

+ 40 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/ErrorResponseObject.java

@@ -0,0 +1,40 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import lombok.Data;
+import lombok.Getter;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/6/16 10:11
+ * @version: V1.0
+ **/
+@Data
+@XmlRootElement(name = "RESPONSE")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class ErrorResponseObject {
+    @XmlElement(name = "ROWS")
+    private ErrorResponseRow row;
+
+    @Getter
+    public static class ErrorResponseRow {
+        @Getter
+        @XmlElement(name = "ROW")
+        private ErrorResponseRowObject rowObject;
+    }
+
+    @Getter
+    public static class ErrorResponseRowObject {
+        @Getter
+        @XmlElement(name = "ErrorCode")
+        private String errorCode;
+        @Getter
+        @XmlElement(name = "ErrorMsg")
+        private String errorMsg;
+    }
+}

+ 92 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/NciicCheck.java

@@ -0,0 +1,92 @@
+
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * &lt;p&gt;anonymous complex type的 Java 类。
+ * 
+ * &lt;p&gt;以下模式片段指定包含在此类中的预期内容。
+ * 
+ * &lt;pre&gt;
+ * &amp;lt;complexType&amp;gt;
+ *   &amp;lt;complexContent&amp;gt;
+ *     &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
+ *       &amp;lt;sequence&amp;gt;
+ *         &amp;lt;element name="inLicense" type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt;
+ *         &amp;lt;element name="inConditions" type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt;
+ *       &amp;lt;/sequence&amp;gt;
+ *     &amp;lt;/restriction&amp;gt;
+ *   &amp;lt;/complexContent&amp;gt;
+ * &amp;lt;/complexType&amp;gt;
+ * &lt;/pre&gt;
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "inLicense",
+    "inConditions"
+})
+@XmlRootElement(name = "nciicCheck")
+public class NciicCheck {
+
+    @XmlElement(required = true, nillable = true)
+    protected String inLicense;
+    @XmlElement(required = true, nillable = true)
+    protected String inConditions;
+
+    /**
+     * 获取inLicense属性的值。
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getInLicense() {
+        return inLicense;
+    }
+
+    /**
+     * 设置inLicense属性的值。
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setInLicense(String value) {
+        this.inLicense = value;
+    }
+
+    /**
+     * 获取inConditions属性的值。
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getInConditions() {
+        return inConditions;
+    }
+
+    /**
+     * 设置inConditions属性的值。
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setInConditions(String value) {
+        this.inConditions = value;
+    }
+
+}

+ 92 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/NciicCompare.java

@@ -0,0 +1,92 @@
+
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * &lt;p&gt;anonymous complex type的 Java 类。
+ * 
+ * &lt;p&gt;以下模式片段指定包含在此类中的预期内容。
+ * 
+ * &lt;pre&gt;
+ * &amp;lt;complexType&amp;gt;
+ *   &amp;lt;complexContent&amp;gt;
+ *     &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
+ *       &amp;lt;sequence&amp;gt;
+ *         &amp;lt;element name="inLicense" type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt;
+ *         &amp;lt;element name="inConditions" type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt;
+ *       &amp;lt;/sequence&amp;gt;
+ *     &amp;lt;/restriction&amp;gt;
+ *   &amp;lt;/complexContent&amp;gt;
+ * &amp;lt;/complexType&amp;gt;
+ * &lt;/pre&gt;
+ * 
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+    "inLicense",
+    "inConditions"
+})
+@XmlRootElement(name = "nciicCompare")
+public class NciicCompare {
+
+    @XmlElement(required = true, nillable = true)
+    protected String inLicense;
+    @XmlElement(required = true, nillable = true)
+    protected String inConditions;
+
+    /**
+     * 获取inLicense属性的值。
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getInLicense() {
+        return inLicense;
+    }
+
+    /**
+     * 设置inLicense属性的值。
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setInLicense(String value) {
+        this.inLicense = value;
+    }
+
+    /**
+     * 获取inConditions属性的值。
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getInConditions() {
+        return inConditions;
+    }
+
+    /**
+     * 设置inConditions属性的值。
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setInConditions(String value) {
+        this.inConditions = value;
+    }
+
+}

+ 87 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/NciicServices.java

@@ -0,0 +1,87 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import javax.xml.namespace.QName;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.Service;
+
+/**
+ * This class was generated by Apache CXF 3.4.1
+ * 2020-12-02T20:11:57.350+08:00
+ * Generated source version: 3.4.1
+ *
+ */
+@WebServiceClient(name = "NciicServices",
+                  wsdlLocation = "classpath:config/a.wsdl",
+                  targetNamespace = "https://api.nciic.org.cn/NciicServices")
+public class NciicServices extends Service {
+
+    public final static URL WSDL_LOCATION;
+
+    public final static QName SERVICE = new QName("https://api.nciic.org.cn/NciicServices", "NciicServices");
+    public final static QName NciicServicesHttpPort = new QName("https://api.nciic.org.cn/NciicServices", "NciicServicesHttpPort");
+    static {
+        URL url = null;
+        try {
+            url = new URL("classpath:config/a.wsdl");
+        } catch (MalformedURLException e) {
+            java.util.logging.Logger.getLogger(NciicServices.class.getName())
+                .log(java.util.logging.Level.INFO,
+                     "Can not initialize the default wsdl from {0}", "file:a.wsdl");
+        }
+        WSDL_LOCATION = url;
+    }
+
+    public NciicServices(URL wsdlLocation) {
+        super(wsdlLocation, SERVICE);
+    }
+
+    public NciicServices(URL wsdlLocation, QName serviceName) {
+        super(wsdlLocation, serviceName);
+    }
+
+    public NciicServices() {
+        super(WSDL_LOCATION, SERVICE);
+    }
+
+    public NciicServices(WebServiceFeature ... features) {
+        super(WSDL_LOCATION, SERVICE, features);
+    }
+
+    public NciicServices(URL wsdlLocation, WebServiceFeature ... features) {
+        super(wsdlLocation, SERVICE, features);
+    }
+
+    public NciicServices(URL wsdlLocation, QName serviceName, WebServiceFeature ... features) {
+        super(wsdlLocation, serviceName, features);
+    }
+
+
+
+
+    /**
+     *
+     * @return
+     *     returns NciicServicesPortType
+     */
+    @WebEndpoint(name = "NciicServicesHttpPort")
+    public NciicServicesPortType getNciicServicesHttpPort() {
+        return super.getPort(NciicServicesHttpPort, NciicServicesPortType.class);
+    }
+
+    /**
+     *
+     * @param features
+     *     A list of {@link WebServiceFeature} to configure on the proxy.  Supported features not in the <code>features</code> parameter will have their default values.
+     * @return
+     *     returns NciicServicesPortType
+     */
+    @WebEndpoint(name = "NciicServicesHttpPort")
+    public NciicServicesPortType getNciicServicesHttpPort(WebServiceFeature... features) {
+        return super.getPort(NciicServicesHttpPort, NciicServicesPortType.class, features);
+    }
+
+}

+ 45 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/NciicServicesPortType.java

@@ -0,0 +1,45 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
+
+/**
+ * This class was generated by Apache CXF 3.4.1
+ * 2020-12-02T20:11:57.319+08:00
+ * Generated source version: 3.4.1
+ *
+ */
+@WebService(targetNamespace = "https://api.nciic.org.cn/NciicServices", name = "NciicServicesPortType")
+@XmlSeeAlso({ObjectFactory.class})
+public interface NciicServicesPortType {
+
+
+
+    @WebMethod
+    @RequestWrapper(localName = "nciicCompare", targetNamespace = "https://api.nciic.org.cn/NciicServices", className = "com.hx.kp.NciicCompare")
+    @ResponseWrapper(localName = "nciicCompareResponse", targetNamespace = "https://api.nciic.org.cn/NciicServices", className = "com.hx.kp.NciicCompareResponse")
+    @WebResult(name = "out", targetNamespace = "https://api.nciic.org.cn/NciicServices")
+    public String nciicCompare(
+
+            @WebParam(name = "inLicense", targetNamespace = "https://api.nciic.org.cn/NciicServices")
+                    String inLicense,
+            @WebParam(name = "inConditions", targetNamespace = "https://api.nciic.org.cn/NciicServices")
+                    String inConditions
+    );
+    @WebMethod
+    @RequestWrapper(localName = "nciicCheck", targetNamespace = "https://api.nciic.org.cn/NciicServices", className = "com.hx.kp.NciicCheck")
+    @ResponseWrapper(localName = "nciicCheckResponse", targetNamespace = "https://api.nciic.org.cn/NciicServices", className = "com.hx.kp.NciicCheckResponse")
+    @WebResult(name = "out", targetNamespace = "https://api.nciic.org.cn/NciicServices")
+    public String nciicCheck(
+
+            @WebParam(name = "inLicense", targetNamespace = "https://api.nciic.org.cn/NciicServices")
+                    String inLicense,
+            @WebParam(name = "inConditions", targetNamespace = "https://api.nciic.org.cn/NciicServices")
+                    String inConditions
+    );
+}

+ 18 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/NotifySms.java

@@ -0,0 +1,18 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import info.aspirecn.iov.sjjh.channel.inter.platform.ChannelActionInterface;
+import info.aspirecn.iov.sjjh.service.sms.action.SmsActionInterface;
+import info.aspirecn.iov.sjjh.supplier10000043.constant.SupplierProperties;
+import lombok.Data;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+@Data
+public class NotifySms {
+    private int type;
+    private String channId;
+    private SmsActionInterface smsActionInterface;
+    private ChannelActionInterface channelActionInterface;
+    private SupplierProperties supplierProperties;
+    private int count;
+    private String traceId;
+}

+ 60 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/ObjectFactory.java

@@ -0,0 +1,60 @@
+
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the com.hx.kp package. 
+ * &lt;p&gt;An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
+ * 
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+    private final static QName _FileObjectErr_QNAME = new QName("http://domain.webservices.serv.nciic.com", "err");
+    private final static QName _FileObjectFile_QNAME = new QName("http://domain.webservices.serv.nciic.com", "file");
+    private final static QName _FileObjectLicense_QNAME = new QName("http://domain.webservices.serv.nciic.com", "license");
+    private final static QName _FileObjectReturnType_QNAME = new QName("http://domain.webservices.serv.nciic.com", "returnType");
+    private final static QName _FileObjectType_QNAME = new QName("http://domain.webservices.serv.nciic.com", "type");
+    private final static QName _FileObjectSetPhoneInfo_QNAME = new QName("http://domain.webservices.serv.nciic.com", "info");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.hx.kp
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+
+
+    /**
+     * Create an instance of {@link NciicCompare }
+     * 
+     */
+    public NciicCompare createNciicCompare() {
+        return new NciicCompare();
+    }
+
+
+    /**
+     * Create an instance of {@link NciicCheck }
+     *
+     */
+    public NciicCheck createNciicCheck() {
+        return new NciicCheck();
+    }
+
+}

+ 8 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/Person.java

@@ -0,0 +1,8 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+public class Person {
+    private int i;
+    public Person(int i){
+        this.i=i;
+    }
+}

+ 61 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/PhotoIdentityErrorResponseObject.java

@@ -0,0 +1,61 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import lombok.Data;
+import lombok.Getter;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/6/16 15:23
+ * @version: V1.0
+ **/
+@Data
+@XmlRootElement(name = "ROWS")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class PhotoIdentityErrorResponseObject {
+    @XmlElement(name = "ROW")
+    private List<PhotoIdentityErrorResponseRow> row;
+
+    @Getter
+    public static class PhotoIdentityErrorResponseRow {
+        @Getter
+        @XmlElement(name = "INPUT")
+        private PhotoIdentityErrorResponseInput input;
+        @Getter
+        @XmlElement(name = "OUTPUT")
+        private PhotoIdentityErrorResponseOutput output;
+    }
+
+    @Getter
+    public static class PhotoIdentityErrorResponseInput {
+        @Getter
+        @XmlElement(name = "gmsfhm")
+        private String idCode;
+        @Getter
+        @XmlElement(name = "xm")
+        private String name;
+    }
+
+    @Getter
+    public static class PhotoIdentityErrorResponseOutput {
+        @Getter
+        @XmlElement(name = "ITEM")
+        private List<PhotoIdentityErrorResponseItem> item;
+    }
+
+    @Getter
+    public static class PhotoIdentityErrorResponseItem {
+        @Getter
+        @XmlElement(name = "errormesage")
+        private String errorMesage;
+        @Getter
+        @XmlElement(name = "errormesage")
+        private String errorMesageCol;
+    }
+}

+ 19 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/PhotoIdentityRequestObject.java

@@ -0,0 +1,19 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/6/16 13:46
+ * @version: V1.0
+ **/
+@Data
+@ToString
+public class PhotoIdentityRequestObject extends TwoElementsRequestObject {
+    @NotNull(message = "参数名错误")
+    private String photo;
+}

+ 67 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/PhotoIdentityResponseObject.java

@@ -0,0 +1,67 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import lombok.Data;
+import lombok.Getter;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/6/16 13:33
+ * @version: V1.0
+ **/
+@Data
+@XmlRootElement(name = "ROWS")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class PhotoIdentityResponseObject {
+    @XmlElement(name = "ROW")
+    private List<PhotoIdentityResponseRow> row;
+
+    @Getter
+    public static class PhotoIdentityResponseRow {
+        @Getter
+        @XmlElement(name = "INPUT")
+        private PhotoIdentityResponseInput input;
+        @Getter
+        @XmlElement(name = "OUTPUT")
+        private PhotoIdentityResponseOutput output;
+    }
+
+    @Getter
+    public static class PhotoIdentityResponseInput {
+        @Getter
+        @XmlElement(name = "gmsfhm")
+        private String idCode;
+        @Getter
+        @XmlElement(name = "xm")
+        private String name;
+    }
+
+    @Getter
+    public static class PhotoIdentityResponseOutput {
+        @Getter
+        @XmlElement(name = "ITEM")
+        private List<PhotoIdentityResponseItem> items;
+    }
+
+    @Getter
+    public static class PhotoIdentityResponseItem {
+        @Getter
+        @XmlElement(name = "result_gmsfhm")
+        private String idCodeResult;
+        @Getter
+        @XmlElement(name = "result_xm")
+        private String nameResult;
+        @Getter
+        @XmlElement(name = "result_fx")
+        private String photoResult;
+        @Getter
+        @XmlElement(name = "result_fs")
+        private String photoResultScore;
+    }
+}

+ 67 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/TwoElementResponseObject.java

@@ -0,0 +1,67 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import lombok.Data;
+import lombok.Getter;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.List;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/6/16 9:21
+ * @version: V1.0
+ **/
+@Data
+@XmlRootElement(name = "ROWS")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class TwoElementResponseObject {
+    @XmlElement(name = "ROW")
+    private List<NciicCheckResponseRow> row;
+
+    @Getter
+    public static class NciicCheckResponseRow {
+        @Getter
+        @XmlElement(name = "INPUT")
+        private NciicCheckResponseInput input;
+        @Getter
+        @XmlElement(name = "OUTPUT")
+        private NciicCheckResponseOutput output;
+    }
+
+    @Getter
+    public static class NciicCheckResponseInput {
+        @Getter
+        @XmlElement(name = "gmsfhm")
+        private String idCode;
+        @Getter
+        @XmlElement(name = "xm")
+        private String name;
+    }
+
+    @Getter
+    public static class NciicCheckResponseOutput {
+        @Getter
+        @XmlElement(name = "ITEM")
+        private List<NciicCheckResponseItem> items;
+    }
+
+    @Getter
+    public static class NciicCheckResponseItem {
+        @Getter
+        @XmlElement(name = "gmsfhm")
+        private String idCode;
+        @Getter
+        @XmlElement(name = "result_gmsfhm")
+        private String idCodeResult;
+        @Getter
+        @XmlElement(name = "xm")
+        private String name;
+        @Getter
+        @XmlElement(name = "result_xm")
+        private String nameResult;
+    }
+}

+ 21 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/model/TwoElementsRequestObject.java

@@ -0,0 +1,21 @@
+package info.aspirecn.iov.sjjh.supplier10000043.model;
+
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/6/15 16:09
+ * @version: V1.0
+ **/
+@Data
+@ToString
+public class TwoElementsRequestObject {
+    @NotNull(message = "参数名错误")
+    private String name;
+    @NotNull(message = "参数名错误")
+    private String idCode;
+}

+ 89 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/service/ChannelService.java

@@ -0,0 +1,89 @@
+package info.aspirecn.iov.sjjh.supplier10000043.service;
+
+import info.aspirecn.iov.sjjh.commons.lang.ChannelTypeHandleResponseObject;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/6/15 15:59
+ * @version: V1.0
+ **/
+public interface ChannelService {
+    /**
+     * 二要素
+     *
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    ChannelTypeHandleResponseObject twoElementsCheck(HttpServletRequest request, String customBody, int outTime, String decodeType);
+    /**
+     * 二要素cxf调用方式
+     *
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    ChannelTypeHandleResponseObject twoElementsCheckNew(HttpServletRequest request, String customBody, int outTime, String decodeType);
+
+    /**
+     * 人像
+     *
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    ChannelTypeHandleResponseObject photoIdentityCheck(HttpServletRequest request, String customBody, int outTime, String decodeType);
+
+
+
+    /**
+     * 人像-中心
+     *
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    ChannelTypeHandleResponseObject photoIdentityCheckNew(HttpServletRequest request, String customBody, int outTime, String decodeType);
+
+    /**
+     * 人像
+     *
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    ChannelTypeHandleResponseObject photoIdentityCheckV2(HttpServletRequest request, String customBody, int outTime, String decodeType);
+
+
+    /**
+     * 人像-家政
+     *
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    public ChannelTypeHandleResponseObject photoIdentityCheckV2New(HttpServletRequest request, String customBody, int outTime, String decodeType);
+
+
+    public void testNotify(String channelId, int type);
+
+    /**
+     * 人像-北轻
+     *
+     * @param request
+     * @param customBody
+     * @param outTime
+     * @return
+     */
+    public ChannelTypeHandleResponseObject photoIdentityCheckV3New(HttpServletRequest request, String customBody, int outTime, String decodeType);
+}

File diff suppressed because it is too large
+ 1392 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/service/ChannelServiceImpl.java


File diff suppressed because it is too large
+ 78 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/AesUtil.java


+ 228 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/Base64.java

@@ -0,0 +1,228 @@
+package info.aspirecn.iov.sjjh.supplier10000043.util;
+
+public final class Base64 {
+    static private final int BASELENGTH = 128;
+    static private final int LOOKUPLENGTH = 64;
+    static private final int TWENTYFOURBITGROUP = 24;
+    static private final int EIGHTBIT = 8;
+    static private final int SIXTEENBIT = 16;
+    static private final int FOURBYTE = 4;
+    static private final int SIGN = -128;
+    static private final char PAD = '=';
+    static private final boolean fDebug = false;
+    static final private byte[] base64Alphabet = new byte[BASELENGTH];
+    static final private char[] lookUpBase64Alphabet = new char[LOOKUPLENGTH];
+
+    static {
+        for (int i = 0; i < BASELENGTH; ++i) {
+            base64Alphabet[i] = -1;
+        }
+        for (int i = 'Z'; i >= 'A'; i--) {
+            base64Alphabet[i] = (byte) (i - 'A');
+        }
+        for (int i = 'z'; i >= 'a'; i--) {
+            base64Alphabet[i] = (byte) (i - 'a' + 26);
+        }
+
+        for (int i = '9'; i >= '0'; i--) {
+            base64Alphabet[i] = (byte) (i - '0' + 52);
+        }
+        base64Alphabet['+'] = 62;
+        base64Alphabet['/'] = 63;
+        for (int i = 0; i <= 25; i++) {
+            lookUpBase64Alphabet[i] = (char) ('A' + i);
+        }
+        for (int i = 26, j = 0; i <= 51; i++, j++) {
+            lookUpBase64Alphabet[i] = (char) ('a' + j);
+        }
+        for (int i = 52, j = 0; i <= 61; i++, j++) {
+            lookUpBase64Alphabet[i] = (char) ('0' + j);
+        }
+        lookUpBase64Alphabet[62] = (char) '+';
+        lookUpBase64Alphabet[63] = (char) '/';
+    }
+
+    private static boolean isWhiteSpace(char octect) {
+        return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9);
+    }
+
+    private static boolean isPad(char octect) {
+        return (octect == PAD);
+    }
+
+    private static boolean isData(char octect) {
+        return (octect < BASELENGTH && base64Alphabet[octect] != -1);
+    }
+
+    /**
+     * Encodes hex octects into Base64
+     *
+     * @param binaryData Array containing binaryData
+     * @return Encoded Base64 array
+     */
+    public static String encode(byte[] binaryData) {
+        if (binaryData == null) {
+            return null;
+        }
+        int lengthDataBits = binaryData.length * EIGHTBIT;
+        if (lengthDataBits == 0) {
+            return "";
+        }
+        int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP;
+        int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP;
+        int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets;
+        char encodedData[] = null;
+        encodedData = new char[numberQuartet * 4];
+        byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0;
+        int encodedIndex = 0;
+        int dataIndex = 0;
+        if (fDebug) {
+        }
+        for (int i = 0; i < numberTriplets; i++) {
+            b1 = binaryData[dataIndex++];
+            b2 = binaryData[dataIndex++];
+            b3 = binaryData[dataIndex++];
+            if (fDebug) {
+            }
+            l = (byte) (b2 & 0x0f);
+            k = (byte) (b1 & 0x03);
+            byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
+            byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
+            byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc);
+            if (fDebug) {
+            }
+            encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
+            encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)];
+            encodedData[encodedIndex++] = lookUpBase64Alphabet[(l << 2) | val3];
+            encodedData[encodedIndex++] = lookUpBase64Alphabet[b3 & 0x3f];
+        }
+
+        // form integral number of 6-bit groups
+        if (fewerThan24bits == EIGHTBIT) {
+            b1 = binaryData[dataIndex];
+            k = (byte) (b1 & 0x03);
+            if (fDebug) {
+            }
+            byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
+            encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
+            encodedData[encodedIndex++] = lookUpBase64Alphabet[k << 4];
+            encodedData[encodedIndex++] = PAD;
+            encodedData[encodedIndex++] = PAD;
+        } else if (fewerThan24bits == SIXTEENBIT) {
+            b1 = binaryData[dataIndex];
+            b2 = binaryData[dataIndex + 1];
+            l = (byte) (b2 & 0x0f);
+            k = (byte) (b1 & 0x03);
+            byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
+            byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
+            encodedData[encodedIndex++] = lookUpBase64Alphabet[val1];
+            encodedData[encodedIndex++] = lookUpBase64Alphabet[val2 | (k << 4)];
+            encodedData[encodedIndex++] = lookUpBase64Alphabet[l << 2];
+            encodedData[encodedIndex++] = PAD;
+        }
+        return new String(encodedData);
+    }
+
+    /**
+     * Decodes Base64 data into octects
+     *
+     * @param encoded string containing Base64 data
+     * @return Array containind decoded data.
+     */
+    public static byte[] decode(String encoded) {
+        if (encoded == null) {
+            return null;
+        }
+        char[] base64Data = encoded.toCharArray();
+        // remove white spaces
+        int len = removeWhiteSpace(base64Data);
+        if (len % FOURBYTE != 0) {
+            return null;//should be divisible by four
+        }
+        int numberQuadruple = (len / FOURBYTE);
+        if (numberQuadruple == 0) {
+            return new byte[0];
+        }
+        byte decodedData[] = null;
+        byte b1 = 0, b2 = 0, b3 = 0, b4 = 0;
+        char d1 = 0, d2 = 0, d3 = 0, d4 = 0;
+        int i = 0;
+        int encodedIndex = 0;
+        int dataIndex = 0;
+        decodedData = new byte[(numberQuadruple) * 3];
+        for (; i < numberQuadruple - 1; i++) {
+            if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))
+                    || !isData((d3 = base64Data[dataIndex++]))
+                    || !isData((d4 = base64Data[dataIndex++]))) {
+                return null;
+            }//if found "no data" just return null
+            b1 = base64Alphabet[d1];
+            b2 = base64Alphabet[d2];
+            b3 = base64Alphabet[d3];
+            b4 = base64Alphabet[d4];
+            decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
+            decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
+            decodedData[encodedIndex++] = (byte) (b3 << 6 | b4);
+        }
+        if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))) {
+            return null;//if found "no data" just return null
+        }
+        b1 = base64Alphabet[d1];
+        b2 = base64Alphabet[d2];
+        d3 = base64Data[dataIndex++];
+        d4 = base64Data[dataIndex++];
+        if (!isData((d3)) || !isData((d4))) {//Check if they are PAD characters
+            if (isPad(d3) && isPad(d4)) {
+                if ((b2 & 0xf) != 0)//last 4 bits should be zero
+                {
+                    return null;
+                }
+                byte[] tmp = new byte[i * 3 + 1];
+                System.arraycopy(decodedData, 0, tmp, 0, i * 3);
+                tmp[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
+                return tmp;
+            } else if (!isPad(d3) && isPad(d4)) {
+                b3 = base64Alphabet[d3];
+                if ((b3 & 0x3) != 0)//last 2 bits should be zero
+                {
+                    return null;
+                }
+                byte[] tmp = new byte[i * 3 + 2];
+                System.arraycopy(decodedData, 0, tmp, 0, i * 3);
+                tmp[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
+                tmp[encodedIndex] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
+                return tmp;
+            } else {
+                return null;
+            }
+        } else { //No PAD e.g 3cQl
+            b3 = base64Alphabet[d3];
+            b4 = base64Alphabet[d4];
+            decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4);
+            decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
+            decodedData[encodedIndex++] = (byte) (b3 << 6 | b4);
+        }
+        return decodedData;
+    }
+
+    /**
+     * remove WhiteSpace from MIME containing encoded Base64 data.
+     *
+     * @param data the byte array of base64 data (with WS)
+     * @return the new length
+     */
+    private static int removeWhiteSpace(char[] data) {
+        if (data == null) {
+            return 0;
+        }
+        // count characters that's not whitespace
+        int newSize = 0;
+        int len = data.length;
+        for (int i = 0; i < len; i++) {
+            if (!isWhiteSpace(data[i])) {
+                data[newSize++] = data[i];
+            }
+        }
+        return newSize;
+    }
+}

+ 17 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/CommonUtil.java

@@ -0,0 +1,17 @@
+package info.aspirecn.iov.sjjh.supplier10000043.util;
+
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+@Component
+public class CommonUtil {
+    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+    public String getKey(){
+        LocalDateTime now = LocalDateTime.now();
+        String ymd = dateTimeFormatter.format(now);
+        String hashKey = "043-"+ymd;
+        return hashKey;
+    }
+}

File diff suppressed because it is too large
+ 112 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/DESedeUtil.java


File diff suppressed because it is too large
+ 118 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/DesUtil.java


+ 64 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/NotifyThread.java

@@ -0,0 +1,64 @@
+package info.aspirecn.iov.sjjh.supplier10000043.util;
+
+import info.aspirecn.iov.sjjh.channel.inter.vo.platform.channel.po.Channels;
+import info.aspirecn.iov.sjjh.service.sms.vo.RequestSmsNoTemplate;
+import info.aspirecn.iov.sjjh.supplier10000043.model.NotifySms;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.*;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+
+@Slf4j
+public class NotifyThread extends TimerTask{
+    private NotifySms notifySms;
+    public NotifyThread(NotifySms notifySms){
+        this.notifySms=notifySms;
+    }
+    @Override
+    public void run() {
+        log.info("start,traceId:{}",notifySms);
+        //根据channelId查询channel信息
+        //根据类型下发指定内容的短信
+        //如果存在问题,按1,2,4,8,16,32 来指定多少分钟后再次执行线程,如果达到量都之后
+        try {
+            List<Integer> ChannelIds = new ArrayList<>();
+            ChannelIds.add(Integer.valueOf(notifySms.getChannId()));
+            List<Channels> lists = notifySms.getChannelActionInterface().getChannelsById(ChannelIds);
+            if(lists==null || lists.size()==0){
+                return;
+            }
+            String channelName = lists.get(0).getChannelName();
+            log.info("traceId:{},channelName:{}",notifySms.getTraceId(),channelName);
+            String message = "";
+            if (notifySms.getType() == 1) {//少于10000
+                message = channelName + ",今日可用调用量已不足"+notifySms.getSupplierProperties().getNotityLimit()+"条,请关注";
+            } else if (notifySms.getType() == 2) {//达到量
+                message = channelName + ",今日可用调用量已用完,请关注";
+            } else if (notifySms.getType() == 3) {//返回-53或者210
+                message = channelName + ",因返回-53/210,今日不再请求该通道,请关注";
+            }
+            RequestSmsNoTemplate requestSmsNoTemplate = new RequestSmsNoTemplate();
+            requestSmsNoTemplate.setTargetMobile(notifySms.getSupplierProperties().getTargetSms());
+            requestSmsNoTemplate.setContent(message);
+            log.info("traceId:{},smsTemplate:{}",notifySms.getTraceId(),requestSmsNoTemplate);
+            notifySms.getSmsActionInterface().smsSendNoTemplate(requestSmsNoTemplate);
+            log.info("end,notity:{}",notifySms);
+        }catch (Exception ex){
+            int count = notifySms.getCount();
+            count++;
+            Calendar calendar =Calendar.getInstance();
+            int minute = calendar.get(Calendar.MINUTE);
+            if(count>=5){
+                return;
+            }
+            minute = 1<<count;
+            notifySms.setCount(count);
+            calendar.setTimeInMillis(calendar.getTimeInMillis()+(minute*60*1000));
+            log.error("error message:{},{}",ex,notifySms.getTraceId());
+            log.info("date:{},{}",calendar.getTime(),notifySms.getTraceId());
+            Timer timer =new Timer();
+            timer.schedule(new NotifyThread(notifySms),calendar.getTime());
+        }
+    }
+}

+ 35 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/SHA1.java

@@ -0,0 +1,35 @@
+package info.aspirecn.iov.sjjh.supplier10000043.util;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/11/19 16:58
+ * @version: V1.0
+ **/
+public class SHA1 {
+    public static String SHA1(String decript) {
+        try {
+            MessageDigest digest = MessageDigest.getInstance("SHA-1");
+            digest.update(decript.getBytes());
+            byte messageDigest[] = digest.digest();
+            // Create Hex String
+            StringBuffer hexString = new StringBuffer();
+            // 字节数组转换为 十六进制 数
+            for (int i = 0; i < messageDigest.length; i++) {
+                String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
+                if (shaHex.length() < 2) {
+                    hexString.append(0);
+                }
+                hexString.append(shaHex);
+            }
+            return hexString.toString();
+
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+            return "ERROR";
+        }
+    }
+}

+ 42 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/SHA256.java

@@ -0,0 +1,42 @@
+package info.aspirecn.iov.sjjh.supplier10000043.util;
+
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * @author jianggang
+ * @date 2019/8/26 16:59:03
+ * @description
+ */
+public class SHA256 {
+    public static String getSHA256Str(String str) {
+
+        MessageDigest messageDigest;
+        String encodeStr = "";
+        try {
+            messageDigest = MessageDigest.getInstance("SHA-256");
+            messageDigest.update(str.getBytes("UTF-8"));
+            encodeStr = byte2Hex(messageDigest.digest());
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return encodeStr;
+    }
+
+    private static String byte2Hex(byte[] bytes) {
+        StringBuffer stringBuffer = new StringBuffer();
+        String temp = null;
+        for (int i = 0; i < bytes.length; i++) {
+            temp = Integer.toHexString(bytes[i] & 0xFF);
+            if (temp.length() == 1) {
+                //1得到一位的进行补0操作
+                stringBuffer.append("0");
+            }
+            stringBuffer.append(temp);
+        }
+        return stringBuffer.toString();
+    }
+}

+ 347 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/SM2.java

@@ -0,0 +1,347 @@
+package info.aspirecn.iov.sjjh.supplier10000043.util;
+
+import org.bouncycastle.crypto.params.ECDomainParameters;
+import org.bouncycastle.math.ec.ECCurve;
+import org.bouncycastle.math.ec.ECPoint;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.math.BigInteger;
+import java.security.SecureRandom;
+import java.util.Arrays;
+
+public class SM2 {
+
+    public static String sm2Encrypt(String plainText, String pubKey) {
+        byte[] data = SM2.encrypt(plainText, pubKey);
+        String enData = Base64.encode(data);
+        return enData;
+    }
+
+    public static String sm2Decrypt(String plainText, String priKey) {
+        byte[] encryptData = Base64.decode(plainText);
+        String rawData = SM2.decrypt(encryptData, priKey);
+        return rawData;
+    }
+
+    //国密办文件中推荐的椭圆曲线相关参数
+
+    private static BigInteger n = new BigInteger(
+            "FFFFFFFE" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "7203DF6B" + "21C6052B" + "53BBF409" + "39D54123", 16);
+    private static BigInteger p = new BigInteger(
+            "FFFFFFFE" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "00000000" + "FFFFFFFF" + "FFFFFFFF", 16);
+    private static BigInteger a = new BigInteger(
+            "FFFFFFFE" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "FFFFFFFF" + "00000000" + "FFFFFFFF" + "FFFFFFFC", 16);
+    private static BigInteger b = new BigInteger(
+            "28E9FA9E" + "9D9F5E34" + "4D5A9E4B" + "CF6509A7" + "F39789F5" + "15AB8F92" + "DDBCBD41" + "4D940E93", 16);
+    private static BigInteger gx = new BigInteger(
+            "32C4AE2C" + "1F198119" + "5F990446" + "6A39C994" + "8FE30BBF" + "F2660BE1" + "715A4589" + "334C74C7", 16);
+    private static BigInteger gy = new BigInteger(
+            "BC3736A2" + "F4F6779C" + "59BDCEE3" + "6B692153" + "D0A9877C" + "C62A4740" + "02DF32E5" + "2139F0A0", 16);
+    private static final int DIGEST_LENGTH = 32;
+    private static SecureRandom random = new SecureRandom();
+    private static ECCurve.Fp curve = new ECCurve.Fp(p, a, b);
+    private static ECPoint G = curve.createPoint(gx, gy);
+    private static ECDomainParameters ecc_bc_spec = new ECDomainParameters(curve, G, n);
+
+    /**
+     * 以16进制打印字节数组
+     *
+     * @param b
+     */
+    public static void printHexString(byte[] b) {
+        for (int i = 0; i < b.length; i++) {
+            String hex = Integer.toHexString(b[i] & 0xFF);
+            if (hex.length() == 1) {
+                hex = '0' + hex;
+            }
+            System.out.print(hex.toUpperCase());
+        }
+        System.out.println();
+    }
+
+    /**
+     * 随机数生成器
+     *
+     * @param max
+     * @return
+     */
+    private static BigInteger random(BigInteger max) {
+
+        BigInteger r = new BigInteger(256, random);
+        while (r.compareTo(max) >= 0) {
+            r = new BigInteger(128, random);
+
+        }
+        return r;
+    }
+
+    /**
+     * 判断字节数组是否全0
+     *
+     * @param buffer
+     * @return
+     */
+    private static boolean allZero(byte[] buffer) {
+        for (int i = 0; i < buffer.length; i++) {
+            if (buffer[i] != 0) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * 公钥加密
+     *
+     * @param input     加密原文
+     * @param pubKeyStr 公钥
+     * @return
+     */
+    public static byte[] encrypt(String input, String pubKeyStr) {
+        ECPoint publicKey = curve.decodePoint(hexStr2Bytes(pubKeyStr));
+        byte[] inputBuffer = new byte[0];
+        try {
+            inputBuffer = input.getBytes("UTF8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        byte[] C1Buffer;
+        ECPoint kpb;
+        byte[] t;
+        do {
+            /* 1 产生随机数k,k属于[1, n-1] */
+            BigInteger k = random(n);
+            /* 2 计算椭圆曲线点C1 = [k]G = (x1, y1) */
+            ECPoint C1 = G.multiply(k);
+            C1Buffer = C1.getEncoded(false);
+            /*
+             * 3 计算椭圆曲线点 S = [h]Pb
+             */
+            BigInteger h = ecc_bc_spec.getH();
+            if (h != null) {
+                ECPoint S = publicKey.multiply(h);
+                if (S.isInfinity()) {
+                    throw new IllegalStateException();
+                }
+            }
+            /* 4 计算 [k]PB = (x2, y2) */
+            kpb = publicKey.multiply(k).normalize();
+            /* 5 计算 t = KDF(x2||y2, klen) */
+            byte[] kpbBytes = kpb.getEncoded(false);
+            t = KDF(kpbBytes, inputBuffer.length);
+        } while (allZero(t));
+        /* 6 计算C2=M^t */
+        byte[] C2 = new byte[inputBuffer.length];
+        for (int i = 0; i < inputBuffer.length; i++) {
+            C2[i] = (byte) (inputBuffer[i] ^ t[i]);
+        }
+        /* 7 计算C3 = Hash(x2 || M || y2) */
+        byte[] C3 = sm3hash(kpb.getXCoord().toBigInteger().toByteArray(), inputBuffer,
+                kpb.getYCoord().toBigInteger().toByteArray());
+        /* 8 输出密文 C=C1 || C2 || C3 */
+        byte[] encryptResult = new byte[C1Buffer.length + C2.length + C3.length];
+        System.arraycopy(C1Buffer, 0, encryptResult, 0, C1Buffer.length);
+        System.arraycopy(C2, 0, encryptResult, C1Buffer.length, C2.length);
+        System.arraycopy(C3, 0, encryptResult, C1Buffer.length + C2.length, C3.length);
+        return encryptResult;
+    }
+
+    /**
+     * 私钥解密
+     *
+     * @param encryptData 密文数据字节数组
+     * @param priKeyStr   解密私钥
+     * @return
+     */
+    public static String decrypt(byte[] encryptData, String priKeyStr) {
+
+
+        BigInteger privateKey = new BigInteger(priKeyStr, 16);
+
+        byte[] C1Byte = new byte[65];
+        System.arraycopy(encryptData, 0, C1Byte, 0, C1Byte.length);
+
+        ECPoint C1 = curve.decodePoint(C1Byte).normalize();
+
+        /*
+         * 计算椭圆曲线点 S = [h]C1 是否为无穷点
+         */
+        BigInteger h = ecc_bc_spec.getH();
+        if (h != null) {
+            ECPoint S = C1.multiply(h);
+            if (S.isInfinity()) {
+                throw new IllegalStateException();
+            }
+        }
+        /* 计算[dB]C1 = (x2, y2) */
+        ECPoint dBC1 = C1.multiply(privateKey).normalize();
+
+        /* 计算t = KDF(x2 || y2, klen) */
+        byte[] dBC1Bytes = dBC1.getEncoded(false);
+        int klen = encryptData.length - 65 - DIGEST_LENGTH;
+        byte[] t = KDF(dBC1Bytes, klen);
+
+        if (allZero(t)) {
+            System.err.println("all zero");
+            throw new IllegalStateException();
+        }
+
+        /* 计算M'=C2^t */
+        byte[] M = new byte[klen];
+        for (int i = 0; i < M.length; i++) {
+            M[i] = (byte) (encryptData[C1Byte.length + i] ^ t[i]);
+        }
+
+        /*  计算 u = Hash(x2 || M' || y2) 判断 u == C3是否成立 */
+        byte[] C3 = new byte[DIGEST_LENGTH];
+
+
+        System.arraycopy(encryptData, encryptData.length - DIGEST_LENGTH, C3, 0, DIGEST_LENGTH);
+        byte[] u = sm3hash(dBC1.getXCoord().toBigInteger().toByteArray(), M,
+                dBC1.getYCoord().toBigInteger().toByteArray());
+
+        if (Arrays.equals(u, C3)) {
+            try {
+                return new String(M, "UTF8");
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+            return null;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * 判断是否在范围内
+     *
+     * @param param
+     * @param min
+     * @param max
+     * @return
+     */
+    private static boolean between(BigInteger param, BigInteger min, BigInteger max) {
+        if (param.compareTo(min) >= 0 && param.compareTo(max) < 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * 判断生成的公钥是否合法
+     *
+     * @param publicKey
+     * @return
+     */
+    private static boolean checkPublicKey(ECPoint publicKey) {
+        if (!publicKey.isInfinity()) {
+            BigInteger x = publicKey.getXCoord().toBigInteger();
+            BigInteger y = publicKey.getYCoord().toBigInteger();
+            if (between(x, new BigInteger("0"), p) && between(y, new BigInteger("0"), p)) {
+                BigInteger xResult = x.pow(3).add(a.multiply(x)).add(b).mod(p);
+                BigInteger yResult = y.pow(2).mod(p);
+                if (yResult.equals(xResult) && publicKey.multiply(n).isInfinity()) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 字节数组拼接
+     *
+     * @param params
+     * @return
+     */
+    private static byte[] join(byte[]... params) {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        byte[] res = null;
+        try {
+            for (int i = 0; i < params.length; i++) {
+                baos.write(params[i]);
+            }
+            res = baos.toByteArray();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return res;
+    }
+
+    /**
+     * sm3摘要
+     *
+     * @param params
+     * @return
+     */
+    private static byte[] sm3hash(byte[]... params) {
+        byte[] res = null;
+        try {
+            res = SM3.hash(join(params));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return res;
+    }
+
+    /**
+     * 密钥派生函数
+     *
+     * @param Z
+     * @param klen 生成klen字节数长度的密钥
+     * @return
+     */
+    private static byte[] KDF(byte[] Z, int klen) {
+        int ct = 1;
+        int end = (int) Math.ceil(klen * 1.0 / 32);
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        try {
+            for (int i = 1; i < end; i++) {
+                baos.write(sm3hash(Z, SM3.toByteArray(ct)));
+                ct++;
+            }
+            byte[] last = sm3hash(Z, SM3.toByteArray(ct));
+            if (klen % 32 == 0) {
+                baos.write(last);
+            } else {
+                baos.write(last, 0, klen % 32);
+            }
+            return baos.toByteArray();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static byte[] hexStr2Bytes(String src) {
+        int l = src.length() / 2;
+        byte[] ret = new byte[l];
+        for (int i = 0; i < l; ++i) {
+            int m = i * 2 + 1;
+            int n = m + 1;
+            ret[i] = uniteBytes(src.substring(i * 2, m), src.substring(m, n));
+        }
+        return ret;
+    }
+
+    private static byte uniteBytes(String src0, String src1) {
+        byte b0 = Byte.decode("0x" + src0);
+        b0 = (byte) (b0 << 4);
+        byte b1 = Byte.decode("0x" + src1);
+        byte ret = (byte) (b0 | b1);
+        return ret;
+    }
+
+    public static void main(String[] args) throws UnsupportedEncodingException {
+        String pubKeyStr = "04a7fa237c2b7b0fd08d26a7adb12363c8556a8b7d99fa134ee55d3e77d3b5317426f3423ef9463dc5d6e65ca7164070a69f9ff29de9799a38c18003048d552364";
+        String priKeyStr = "00a0fcf9f83882db3f5279daafc6347dc126ca8586c996cf65dca6351d0fa465e7";
+        String body = SM2.sm2Encrypt("womenyiqi", pubKeyStr);
+        System.out.println("密文:" + body);
+        //String st = "BEBj+2M/IBZS8z8uxDXP5clOxfTQWs8voktESHbRVkaz3Iy3g+Dtl1hY4dJg9Ldyz/ePAsZzQDKV\\r\\naKdf2lDBmq3gzJusfN3sYlw5Qsbh7K0qWhUh/DiwFhag/X1rrQeSJ7go6IK1+GZe8NZPWMFwFW12\\r\\nQS+Awd+FJYtEwy14Vlmy4kw8qtLIfxlOYH++N3RAgXFHpZWDtGkaN4wPq0WiC1Wm92kWMQD4M1N4\\r\\nD72i8cs21Q==";
+        String rawData = SM2.sm2Decrypt(body, priKeyStr);
+        System.out.println("解密后明文:" + rawData);
+    }
+}

+ 213 - 0
src/main/java/info/aspirecn/iov/sjjh/supplier10000043/util/SM3.java

@@ -0,0 +1,213 @@
+package info.aspirecn.iov.sjjh.supplier10000043.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.Arrays;
+
+/**
+ * SM3杂凑算法实现
+ */
+public class SM3 {
+
+    private static char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
+            '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+    private static final String ivHexStr = "7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e";
+    private static final BigInteger IV = new BigInteger(ivHexStr.replaceAll(" ",
+            ""), 16);
+    private static final Integer Tj15 = Integer.valueOf("79cc4519", 16);
+    private static final Integer Tj63 = Integer.valueOf("7a879d8a", 16);
+    private static final byte[] FirstPadding = {(byte) 0x80};
+    private static final byte[] ZeroPadding = {(byte) 0x00};
+
+    private static int T(int j) {
+        if (j >= 0 && j <= 15) {
+            return Tj15.intValue();
+        } else if (j >= 16 && j <= 63) {
+            return Tj63.intValue();
+        } else {
+            throw new RuntimeException("data invalid");
+        }
+    }
+
+    private static Integer FF(Integer x, Integer y, Integer z, int j) {
+        if (j >= 0 && j <= 15) {
+            return Integer.valueOf(x.intValue() ^ y.intValue() ^ z.intValue());
+        } else if (j >= 16 && j <= 63) {
+            return Integer.valueOf((x.intValue() & y.intValue())
+                    | (x.intValue() & z.intValue())
+                    | (y.intValue() & z.intValue()));
+        } else {
+            throw new RuntimeException("data invalid");
+        }
+    }
+
+    private static Integer GG(Integer x, Integer y, Integer z, int j) {
+        if (j >= 0 && j <= 15) {
+            return Integer.valueOf(x.intValue() ^ y.intValue() ^ z.intValue());
+        } else if (j >= 16 && j <= 63) {
+            return Integer.valueOf((x.intValue() & y.intValue())
+                    | (~x.intValue() & z.intValue()));
+        } else {
+            throw new RuntimeException("data invalid");
+        }
+    }
+
+    private static Integer P0(Integer x) {
+        return Integer.valueOf(x.intValue()
+                ^ Integer.rotateLeft(x.intValue(), 9)
+                ^ Integer.rotateLeft(x.intValue(), 17));
+    }
+
+    private static Integer P1(Integer x) {
+        return Integer.valueOf(x.intValue()
+                ^ Integer.rotateLeft(x.intValue(), 15)
+                ^ Integer.rotateLeft(x.intValue(), 23));
+    }
+
+    private static byte[] padding(byte[] source) throws IOException {
+        if (source.length >= 0x2000000000000000l) {
+            throw new RuntimeException("src data invalid.");
+        }
+        long l = source.length * 8;
+        long k = 448 - (l + 1) % 512;
+        if (k < 0) {
+            k = k + 512;
+        }
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        baos.write(source);
+        baos.write(FirstPadding);
+        long i = k - 7;
+        while (i > 0) {
+            baos.write(ZeroPadding);
+            i -= 8;
+        }
+        baos.write(long2bytes(l));
+        return baos.toByteArray();
+    }
+
+    private static byte[] long2bytes(long l) {
+        byte[] bytes = new byte[8];
+        for (int i = 0; i < 8; i++) {
+            bytes[i] = (byte) (l >>> ((7 - i) * 8));
+        }
+        return bytes;
+    }
+
+    public static byte[] hash(byte[] source) throws IOException {
+        byte[] m1 = padding(source);
+        int n = m1.length / (512 / 8);
+        byte[] b;
+        byte[] vi = IV.toByteArray();
+        byte[] vi1 = null;
+        for (int i = 0; i < n; i++) {
+            b = Arrays.copyOfRange(m1, i * 64, (i + 1) * 64);
+            vi1 = CF(vi, b);
+            vi = vi1;
+        }
+        return vi1;
+    }
+
+    private static byte[] CF(byte[] vi, byte[] bi) throws IOException {
+        int a, b, c, d, e, f, g, h;
+        a = toInteger(vi, 0);
+        b = toInteger(vi, 1);
+        c = toInteger(vi, 2);
+        d = toInteger(vi, 3);
+        e = toInteger(vi, 4);
+        f = toInteger(vi, 5);
+        g = toInteger(vi, 6);
+        h = toInteger(vi, 7);
+
+        int[] w = new int[68];
+        int[] w1 = new int[64];
+        for (int i = 0; i < 16; i++) {
+            w[i] = toInteger(bi, i);
+        }
+        for (int j = 16; j < 68; j++) {
+            w[j] = P1(w[j - 16] ^ w[j - 9] ^ Integer.rotateLeft(w[j - 3], 15))
+                    ^ Integer.rotateLeft(w[j - 13], 7) ^ w[j - 6];
+        }
+        for (int j = 0; j < 64; j++) {
+            w1[j] = w[j] ^ w[j + 4];
+        }
+        int ss1, ss2, tt1, tt2;
+        for (int j = 0; j < 64; j++) {
+            ss1 = Integer
+                    .rotateLeft(
+                            Integer.rotateLeft(a, 12) + e
+                                    + Integer.rotateLeft(T(j), j), 7);
+            ss2 = ss1 ^ Integer.rotateLeft(a, 12);
+            tt1 = FF(a, b, c, j) + d + ss2 + w1[j];
+            tt2 = GG(e, f, g, j) + h + ss1 + w[j];
+            d = c;
+            c = Integer.rotateLeft(b, 9);
+            b = a;
+            a = tt1;
+            h = g;
+            g = Integer.rotateLeft(f, 19);
+            f = e;
+            e = P0(tt2);
+        }
+        byte[] v = toByteArray(a, b, c, d, e, f, g, h);
+        for (int i = 0; i < v.length; i++) {
+            v[i] = (byte) (v[i] ^ vi[i]);
+        }
+        return v;
+    }
+
+    private static int toInteger(byte[] source, int index) {
+        StringBuilder valueStr = new StringBuilder("");
+        for (int i = 0; i < 4; i++) {
+            valueStr.append(hexDigits[(byte) ((source[index * 4 + i] & 0xF0) >> 4)]);
+            valueStr.append(hexDigits[(byte) (source[index * 4 + i] & 0x0F)]);
+        }
+        return Long.valueOf(valueStr.toString(), 16).intValue();
+
+    }
+
+    private static byte[] toByteArray(int a, int b, int c, int d, int e, int f,
+                                      int g, int h) throws IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream(32);
+        baos.write(toByteArray(a));
+        baos.write(toByteArray(b));
+        baos.write(toByteArray(c));
+        baos.write(toByteArray(d));
+        baos.write(toByteArray(e));
+        baos.write(toByteArray(f));
+        baos.write(toByteArray(g));
+        baos.write(toByteArray(h));
+        return baos.toByteArray();
+    }
+
+    public static byte[] toByteArray(int i) {
+        byte[] byteArray = new byte[4];
+        byteArray[0] = (byte) (i >>> 24);
+        byteArray[1] = (byte) ((i & 0xFFFFFF) >>> 16);
+        byteArray[2] = (byte) ((i & 0xFFFF) >>> 8);
+        byteArray[3] = (byte) (i & 0xFF);
+        return byteArray;
+    }
+
+    private static String byteToHexString(byte b) {
+        int n = b;
+        if (n < 0) {
+            n = 256 + n;
+        }
+        int d1 = n / 16;
+        int d2 = n % 16;
+        return "" + hexDigits[d1] + hexDigits[d2];
+    }
+
+    public static String byteArrayToHexString(byte[] b) {
+        StringBuffer resultSb = new StringBuffer();
+        for (int i = 0; i < b.length; i++) {
+            resultSb.append(byteToHexString(b[i]));
+        }
+        return resultSb.toString();
+    }
+
+    public static void main(String[] args) throws IOException {
+        System.out.println(SM3.byteArrayToHexString(SM3.hash("sm3算法测试".getBytes())));
+    }
+}

File diff suppressed because it is too large
+ 833 - 0
src/main/resources/config/a.wsdl


+ 95 - 0
src/main/resources/config/application-test.yml

@@ -0,0 +1,95 @@
+server:
+  tomcat:
+    accesslog:
+      buffered: false
+      enabled: true
+      pattern: '{"DateTime":"%{yyyy-MM-dd''T''HH:mm:ss.SSSZZ}t","ClientIP":"%a","Method":"%m","URI":"%U","RequestProtocol":"%H","ResponseCode":%s,
+                "ResponseTime":%D,"UserAgent":"%{user-agent}i","X-Forwarded-For":"%{x-forwarded-for}r","X-User-IP":"%{X-User-IP}i","traceId":"%{x-b3-traceid}i","id":"%{x-b3-spanid}r",
+                "parentId":"%{x-b3-parentspanid}i","ApplicationName":"${spring.application.name}","MG-IsCharge":%{isCharge}r,
+                "MG-ChannelId":%{channelId}i,"MG-CustomBody":"%{x-requestQuery}r","MG-ResultBody":"%{resultBody}o",
+                "MG-ResponseCode":%{respnoseCode}r,"MG-Upstream-ResponseCode":"%{upResponseCode}r","MG-SellingPrice":%{price}i,"req_type":"%{req_type}r","MG-ProductId":%{productId}i,"MG-UserId":%{userid}i}'
+      prefix: access_${HOSTNAME}_${spring.application.name}_${server.port}
+      directory: ${logging.path}
+  servlet:
+    context-path: /
+
+spring:
+  sleuth:
+    sampler:
+      probability: 1
+    web:
+      additional-skip-pattern: /api/v2/spans
+  zipkin:
+    base-url: http://127.0.0.1:${server.port}
+
+  mvc:
+    favicon:
+      enabled: false
+
+#management
+management:
+  endpoints:
+    enabled-by-default: true
+    web:
+      exposure:
+        include: '*'
+  endpoint:
+    health:
+      show-details: always
+    shutdown:
+      enabled: true
+
+#logging
+logging:
+  path: /Users/jkxy/root-logs/apps/var/jakarta/logs
+  level:
+    root: INFO
+    red:
+      microcloud: DEBUG
+  config: classpath:config/logback-spring.xml
+  file: ${logging.path}/catalina_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.out
+
+#error logging
+#sleuth logging
+rdc:
+  logging:
+    error-file: ${logging.path}/error_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.log
+    sleuth-file: ${logging.path}/sleuth_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.log
+
+#eureka
+eureka:
+  instance:
+    prefer-ip-address: true
+    instance-id: ${spring.cloud.client.ipaddress}:${server.port}
+    metadata-map:
+      management:
+        port: ${management.server.port}
+    health-check-url: http://${spring.cloud.client.ipaddress}:${management.server.port}${eureka.instance.health-check-url-path}
+    health-check-url-path: /actuator/health
+  client:
+    serviceUrl:
+      defaultZone: http://localhost:8888/eureka
+
+#custom
+supplier:
+  url: http://47.94.238.107:8085/nciic/nciic_ws/services/NciicServices
+  twoElementsMethod: nciicCheck
+  photoIdentityMethod: nciicCompare
+  decryptKey: JK568FG2823
+  urlV2: http://47.95.12.213/nciic/nciic_ws/services/NciicServices
+  decodeApi: CMCC_3RD_DECRYPT
+  decodeUrl: http://jkxy.h11.site/gateway?api=credit.sec.data
+  decodeAppKey: JIAO_KE
+  decodeAppSecret: D78C393359BF128715C65D91C67051478A4DFC13
+  flag: 1
+  urlPhotoUp: 1000
+  url2PhotoUp: 1000
+  urlSecondUp: 1000
+  secondFlag: 1
+  urlPhotoFlag: 1000
+  url2PhotoFlag: 1000
+  aesDecryptKey: C1AA8eh0116128nn
+  urlV3: http://39.100.68.41:8888/nciic/nciic_ws/services/NciicServices
+  url3PhotoUp: 100000
+swagger:
+  show: true

+ 3 - 0
src/main/resources/config/banner.txt

@@ -0,0 +1,3 @@
+*******************************************************************************
+	 @project.artifactId@  (version:@project.version@)
+*******************************************************************************

+ 30 - 0
src/main/resources/config/bootstrap.yml

@@ -0,0 +1,30 @@
+spring:
+  application:
+    name: '@project.artifactId@'
+  banner:
+    location: classpath:config/banner.txt
+  profiles:
+    active: hwtest
+  cloud:
+    config:
+      discovery:
+        enabled: false
+      uri: http://10.8.18.157:32533
+      label: trunk
+      name: ${spring.application.name}
+      profile: ${spring.profiles.active}
+
+
+server:
+  port: 25106
+management:
+  server:
+    port: 35106
+
+
+
+info:
+  name: '@project.description@'
+  version: '@project.version@'
+
+

+ 89 - 0
src/main/resources/config/iov-sjjh-servicenode-supplier-10000034-hwtest.yml

@@ -0,0 +1,89 @@
+spring:
+  sleuth:
+    sampler:
+      probability: 1
+    web:
+      additional-skip-pattern: /api/v2/spans
+  zipkin:
+    base-url: http://127.0.0.1:${server.port}
+
+  mvc:
+    favicon:
+      enabled: false
+server:
+  tomcat:
+    accesslog:
+      buffered: false
+      enabled: true
+      pattern: '{"DateTime":"%{yyyy-MM-dd''T''HH:mm:ss.SSSZZ}t","ClientIP":"%a","Method":"%m","URI":"%U","RequestProtocol":"%H","ResponseCode":%s,
+                "ResponseTime":%D,"UserAgent":"%{user-agent}i","X-Forwarded-For":"%{x-forwarded-for}r","X-User-IP":"%{X-User-IP}i","traceId":"%{x-b3-traceid}i","id":"%{x-b3-spanid}r",
+                "parentId":"%{x-b3-parentspanid}i","ApplicationName":"${spring.application.name}","MG-IsCharge":%{isCharge}r,
+                "MG-ChannelId":%{channelId}i,"MG-CustomBody":"%{x-requestQuery}r","MG-ResultBody":"%{resultBody}o",
+                "MG-ResponseCode":%{respnoseCode}r,"MG-Upstream-ResponseCode":"%{upResponseCode}r","MG-SellingPrice":%{price}i,"req_type":"%{req_type}r","MG-ProductId":%{productId}i,"MG-UserId":%{userid}i}'
+      prefix: access_${HOSTNAME}_${spring.application.name}_${server.port}
+      directory: ${logging.path}
+  servlet:
+    context-path: /
+
+#management
+management:
+  endpoints:
+    enabled-by-default: true
+    web:
+      exposure:
+        include: '*'
+  endpoint:
+    health:
+      show-details: always
+    shutdown:
+      enabled: true
+
+#logging
+logging:
+  path: /apps/var/jakarta/logs
+  level:
+    root: INFO
+    red:
+      microcloud: DEBUG
+  config: classpath:config/logback-spring.xml
+  file: ${logging.path}/catalina_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.out
+
+#error logging
+#sleuth logging
+rdc:
+  logging:
+    error-file: ${logging.path}/error_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.log
+    sleuth-file: ${logging.path}/sleuth_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.log
+
+#eureka
+eureka:
+  instance:
+    prefer-ip-address: true
+    instance-id: ${spring.cloud.client.ipaddress}:${server.port}
+    metadata-map:
+      management:
+        port: ${management.server.port}
+    health-check-url: http://${spring.cloud.client.ipaddress}:${management.server.port}${eureka.instance.health-check-url-path}
+    health-check-url-path: /actuator/health
+  client:
+    serviceUrl:
+      defaultZone: http://10.8.18.156:31102/eureka,http://10.8.18.172:31102/eureka
+
+
+custom:
+  appKey: 3AA555152F3299F6A37C66C074DEF14D
+  appSecret: A84A975F4C324E20659CB340735DA894
+  #enterpriseUrl: https://gateway.logink.cn/credit/enterpriseQuery/logink
+  enterpriseUrl: https://gateway.logink.cn/credit/enterpriseQuery/noLimit
+  #personUrl: https://gateway.logink.cn/credit/personQuery/logink
+  personUrl: https://gateway.logink.cn/credit/personQuery/noLimit
+  #urlVehiclePermit: https://gateway.logink.cn/credit/vehicleQuery/logink
+  urlVehiclePermit: https://gateway.logink.cn/credit/vehicleQuery/noLimit
+  urlCheckVehicleExist: https://gateway.logink.cn/credit/vehicleQuery/checkVehicleExist
+  enterpriseV2Url: https://gateway.logink.cn/credit/enterpriseQuery/V2/logink
+  personV2Url: https://gateway.logink.cn/credit/personQuery/V2/logink
+  checkVehicleRoadTransportUrl: https://gateway.logink.cn/credit/vehicleQuery/V2/logink
+  sleepTime: 5000
+  code: {1: 1000,2: 1001,3: 9901,4: 1099,8: 9909}
+swagger:
+  show: true

+ 97 - 0
src/main/resources/config/iov-sjjh-servicenode-supplier-10000043-hwtest.yml

@@ -0,0 +1,97 @@
+
+server:
+  tomcat:
+    accesslog:
+      buffered: false
+      enabled: true
+      pattern: '{"DateTime":"%{yyyy-MM-dd''T''HH:mm:ss.SSSZZ}t","ClientIP":"%a","Method":"%m","URI":"%U","RequestProtocol":"%H","ResponseCode":%s,"ResponseTime":%D,"UserAgent":"%{user-agent}i","X-Forwarded-For":"%{x-forwarded-for}r","X-User-IP":"%{X-User-IP}i","traceId":"%{x-b3-traceid}i","id":"%{x-b3-spanid}r",
+                "parentId":"%{x-b3-parentspanid}i","ApplicationName":"${spring.application.name}","MG-IsCharge":%{isCharge}r,"MG-ChannelId":%{channelId}i,"MG-CustomBody":"%{x-requestQuery}r","MG-ResponseCode":%{respnoseCode}r,"MG-Upstream-ResponseCode":"%{upResponseCode}r","MG-SellingPrice":%{price}i,"req_type":"%{req_type}r","MG-ResultBody":"%{resultBody}r","MG-ProductId":%{productId}i,"MG-UserId":%{userid}i}'
+      prefix: access_${HOSTNAME}_${spring.application.name}_${server.port}
+      directory: ${logging.path}
+  servlet:
+    context-path: /
+
+spring:
+  sleuth:
+    sampler:
+      probability: 1
+    web:
+      additional-skip-pattern: /api/v2/spans
+  zipkin:
+    base-url: http://127.0.0.1:${server.port}
+  redis:
+    host: 10.8.18.171
+    port: 6380
+    password: Sjjh@2019
+    jedis:
+      pool:
+        max-active: 8
+        max-wait: -1
+        max-idle: 8
+        min-idle: 0
+  mvc:
+    favicon:
+      enabled: false
+
+#management
+management:
+  endpoints:
+    enabled-by-default: true
+    web:
+      exposure:
+        include: '*'
+  endpoint:
+    health:
+      show-details: always
+    shutdown:
+      enabled: true
+
+#logging
+logging:
+  path: /apps/var/jakarta/logs
+  level:
+    root: INFO
+    red:
+      microcloud: DEBUG
+  config: classpath:config/logback-spring.xml
+  file: ${logging.path}/catalina_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.out
+
+#error logging
+#sleuth logging
+rdc:
+  logging:
+    error-file: ${logging.path}/error_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.log
+    sleuth-file: ${logging.path}/sleuth_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.log
+
+#eureka
+eureka:
+  instance:
+    prefer-ip-address: true
+    instance-id: ${spring.cloud.client.ipaddress}:${server.port}
+    metadata-map:
+      management:
+        port: ${management.server.port}
+    health-check-url: http://${spring.cloud.client.ipaddress}:${management.server.port}${eureka.instance.health-check-url-path}
+    health-check-url-path: /actuator/health
+  client:
+    serviceUrl:
+      defaultZone: http://10.8.18.156:31102/eureka,http://10.8.18.172:31102/eureka
+
+#custom
+supplier:
+  url: http://10.8.18.171:34591/ws/weather
+  urlV2: http://10.8.18.171:34591/ws/weather 
+  twoElementsMethod: nciicCheck
+  photoIdentityMethod: nciicCompare
+  decryptKey: JK568FG2823
+  urlPhotoUp: 5
+  url2PhotoUp: 5
+  urlSecondUp: 3
+  decodeApi: CMCC_3RD_DECRYPT
+  decodeUrl: http://jkxy.h11.site/gateway?api=credit.sec.data
+  decodeAppKey: JIAO_KE
+  decodeAppSecret: D78C393359BF128715C65D91C67051478A4DFC13
+  targetSms: 18210953442
+  notityLimit: 10
+swagger:
+  show: true

+ 54 - 0
src/main/resources/config/iov-sjjh-servicenode-supplier-10000043-new.yaml

@@ -0,0 +1,54 @@
+apiVersion: apps/v1beta1
+kind: Deployment
+metadata:
+  name: iov-sjjh-servicenode-supplier-10000043-new
+  namespace: iov-sjjh
+spec:
+  replicas: 1
+  revisionHistoryLimit: 2
+  progressDeadlineSeconds: 600
+  strategy:  
+    type: RollingUpdate
+    rollingUpdate:
+      maxSurge: 25%  
+      maxUnavailable: 25%
+  template:
+    metadata:
+      labels:
+        name: iov-sjjh-servicenode-supplier-10000043-new
+    spec:
+      containers:    
+      - name: iov-sjjh-servicenode-supplier-10000043-new
+        image: hub.i139.cn/iov-sjjh/iov-sjjh-servicenode-supplier-10000043:1.0.2
+        imagePullPolicy: IfNotPresent
+        ports:
+        - containerPort: 8080
+        - containerPort: 8081        
+        resources:
+          limits:
+            memory: 1Gi
+            cpu: 2
+          requests:
+            memory: 256Mi
+            cpu: 200m
+        env:
+        - name: JAVA_OPTS
+          value: "-Xmx1G -Xms256M -Xss1024k -Duser.timezone=Asia/Shanghai"
+        - name: APP_OPTS
+          value: "--server.port=8080 --management.server.port=8081 
+                  --spring.profiles.active=jkonline
+                  --spring.cloud.config.uri=http://iov-sjjh-config-node.iov-sjjh:8080"
+        volumeMounts:
+        - mountPath: /data/var/jakarta/logs
+          name: logs-dir
+        - name: timezone
+          mountPath: /etc/localtime
+          readOnly: true
+
+      volumes:
+      - name: logs-dir
+        hostPath:
+          path: /var/jakarta/logs
+      - name: timezone
+        hostPath:
+          path: /etc/localtime

+ 37 - 0
src/main/resources/config/logback-spring.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+	<include resource="org/springframework/boot/logging/logback/defaults.xml" />
+	<include
+		resource="org/springframework/boot/logging/logback/console-appender.xml" />
+
+	<property name="LOG_FILE"
+		value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}" />		
+	<springProperty scope="context" name="LOG_PATH" source="logging.path" defaultValue="/apps/var/jakarta/logs" />
+	<springProperty scope="context" name="application_name" source="spring.application.name" defaultValue="test-servicenode-supplier-2" />
+	<springProperty scope="context" name="sleuth_file" source="rdc.logging.sleuth-file" defaultValue="${LOG_PATH}/sleuth/sleuth.log" />
+	<springProperty scope="context" name="error_file" source="rdc.logging.error-file" defaultValue="${LOG_PATH}/error/error.log" />
+
+	<include resource="info/aspirecn/rdc/aspirecloud/node/except/xml/defaults.xml" />
+	<include resource="info/aspirecn/rdc/aspirecloud/node/brave/xml/defaults.xml" />
+
+	<appender name="TIME_FILE"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<encoder>
+			<pattern>${FILE_LOG_PATTERN}</pattern>
+		</encoder>
+		<file>${LOG_FILE}</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
+			<maxHistory>8</maxHistory>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<maxFileSize>100MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+		</rollingPolicy>
+	</appender>
+	
+	<root level="INFO">
+		<appender-ref ref="CONSOLE" />
+		<appender-ref ref="TIME_FILE" />
+	</root>
+</configuration>

+ 109 - 0
src/main/resources/config/supplier-test.yaml

@@ -0,0 +1,109 @@
+kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: iov-sjjh-servicenode-supplier-10000043
+  namespace: iov-sjjh
+data:
+
+  iov-sjjh-servicenode-supplier-10000043.yml: |-
+    server:
+      tomcat:
+        accesslog:
+          buffered: false
+          enabled: true
+          pattern: '{"DateTime":"%{yyyy-MM-dd''T''HH:mm:ss.SSSZZ}t","ClientIP":"%a","Method":"%m","URI":"%U","RequestProtocol":"%H","ResponseCode":%s,"ResponseTime":%D,"UserAgent":"%{user-agent}i","X-Forwarded-For":"%{x-forwarded-for}r","X-User-IP":"%{X-User-IP}i","traceId":"%{x-b3-traceid}i","id":"%{x-b3-spanid}r",
+            "parentId":"%{x-b3-parentspanid}i","ApplicationName":"${spring.application.name}","MG-IsCharge":%{isCharge}r,"MG-ChannelId":%{channelId}i,"MG-CustomBody":"%{x-requestQuery}r","MG-ResponseCode":%{respnoseCode}r,"MG-Upstream-ResponseCode":"%{upResponseCode}r","MG-SellingPrice":%{price}i,"req_type":"%{req_type}r","MG-ResultBody":"%{resultBody}r","MG-ProductId":%{productId}i,"MG-UserId":%{userid}i}'
+          prefix: access_${HOSTNAME}_${spring.application.name}_${server.port}
+          directory: ${logging.path}
+      servlet:
+        context-path: /
+
+    spring:
+      redis:
+         host: iov-sjjh-redis.iov-sjjh
+         port: 6379
+         jedis:
+           pool:
+             max-active: 8
+             max-wait: -1
+             max-idle: 8
+             min-idle: 0
+      sleuth:
+        sampler:
+          probability: 1
+        web:
+          additional-skip-pattern: /api/v2/spans
+      zipkin:
+        base-url: http://127.0.0.1:${server.port}
+
+      mvc:
+        favicon:
+          enabled: false
+
+    #management
+    management:
+      endpoints:
+        enabled-by-default: true
+        web:
+          exposure:
+            include: '*'
+      endpoint:
+        health:
+          show-details: always
+        shutdown:
+          enabled: true
+
+    #logging
+    logging:
+      path: /data/var/jakarta/logs
+      level:
+        root: INFO
+        red:
+          microcloud: DEBUG
+      config: classpath:config/logback-spring.xml
+      file: ${logging.path}/catalina_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.out
+
+    #error logging
+    #sleuth logging
+    rdc:
+      logging:
+        error-file: ${logging.path}/error_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.log
+        sleuth-file: ${logging.path}/sleuth_${spring.cloud.client.hostname}_${spring.application.name}_${server.port}.log
+
+    #eureka
+    eureka:
+      instance:
+        metadata-map:
+          management:
+            port: ${management.server.port}
+        health-check-url: http://${spring.cloud.client.ipaddress}:${management.server.port}${eureka.instance.health-check-url-path}
+        health-check-url-path: /actuator/health
+      client:
+        serviceUrl:
+          defaultZone: http://iov-sjjh-registcenter.iov-sjjh:8080/eureka
+
+    supplier:
+      urlV2: http://47.95.12.213/nciic/nciic_ws/services/NciicServices
+      url: http://47.94.238.107:8085/nciic/nciic_ws/services/NciicServices
+      urlV3: http://39.100.68.41:8888/nciic/nciic_ws/services/NciicServices
+      twoElementsMethod: nciicCheck
+      photoIdentityMethod: nciicCompare
+      decryptKey: JK568FG2823
+      urlPhotoUp: 135000
+      url3PhotoUp: 48000
+      url2PhotoUp: 145000
+      urlSecondUp: 140000
+      decodeApi: CMCC_3RD_DECRYPT
+      decodeAppKey: JIAO_KE
+      decodeAppSecret: D78C393359BF128715C65D91C67051478A4DFC13
+      decodeUrl: http://jkxy.h11.site/gateway?api=credit.sec.data
+      targetSms: 13911939833,18611184241,18210953442
+      notityLimit: 10000
+      hour: 3
+      aesDecryptKey: C1AA8eh0116128nn
+
+    swagger:
+      show: true
+    iov-sjjh-servicenode-sms:
+      ribbon:
+        ReadTimeout: 4000