浏览代码

初始化

v-qinpengfei 5 年之前
父节点
当前提交
1cd538c49f

+ 31 - 0
.gitignore

@@ -0,0 +1,31 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**
+!**/src/test/**
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+
+### VS Code ###
+.vscode/

+ 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%

+ 277 - 0
pom.xml

@@ -0,0 +1,277 @@
+<?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>
+    <repositories>
+        <repository>
+            <id>aliyun</id>
+            <url>https://maven.aliyun.com/repository/central</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+    <pluginRepositories>
+        <pluginRepository>
+            <id>aliyun</id>
+            <url>https://maven.aliyun.com/repository/central</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+    <groupId>com.poteviohealth.cgp</groupId>
+    <artifactId>serve</artifactId>
+    <version>1.1.0-SNAPSHOT</version>
+    <name>cgp-serve</name>
+    <description>服务管理</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <spring-boot.version>2.2.7.RELEASE</spring-boot.version>
+        <spring.cloud.version>Hoxton.SR4</spring.cloud.version>
+        <jwt.version>0.9.1</jwt.version>
+        <mybatis.plus.version>3.3.2</mybatis.plus.version>
+        <org.mapstruct.version>1.3.0.Final</org.mapstruct.version>
+        <swagger.version>2.9.2</swagger.version>
+        <alibaba.fastjson>1.2.73</alibaba.fastjson>
+        <alibaba.druid>1.1.18</alibaba.druid>
+        <skipTests>true</skipTests>
+        <xxl-job-core.version>2.1.0</xxl-job-core.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.junit.vintage</groupId>
+                    <artifactId>junit-vintage-engine</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!--mysql驱动[必须],注意8.0.15版本驱动配置和之前版本不一致-->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <!--JSON处理框架[必需]-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>${alibaba.fastjson}</version>
+        </dependency>
+        <!--连接资源池框架[必需]-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>${alibaba.druid}</version>
+        </dependency>
+        <!--Swagger2[必需]-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>${swagger.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>${swagger.version}</version>
+        </dependency>
+        <!--JWT-->
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt</artifactId>
+            <version>${jwt.version}</version>
+        </dependency>
+        <!--服务发现客户端-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+        </dependency>
+        <!--服务熔断降级组件-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
+        </dependency>
+        <!--Mybatis Plus依赖-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>${mybatis.plus.version}</version>
+        </dependency>
+        <!--Feign依赖-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct</artifactId>
+            <version>${org.mapstruct.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct-processor</artifactId>
+            <version>${org.mapstruct.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>sharding-jdbc-core</artifactId>
+            <version>4.0.0-RC1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.poteviohealth.cgp</groupId>
+            <artifactId>common</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+        </dependency>
+        <!--Apache 通用文件处理框架[必需]-->
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.7</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.17</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.17</version>
+        </dependency>
+        <dependency>
+            <groupId>com.xuxueli</groupId>
+            <artifactId>xxl-job-core</artifactId>
+            <version>${xxl-job-core.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.javen205</groupId>
+            <artifactId>IJPay-WxPay</artifactId>
+            <version>2.6.4</version>
+        </dependency>
+
+    </dependencies>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>${spring.cloud.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <profiles>
+        <profile>
+            <id>develop</id>
+            <properties>
+                <package.environment>develop</package.environment>
+            </properties>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>uat</id>
+            <properties>
+                <package.environment>uat</package.environment>
+            </properties>
+        </profile>
+        <profile>
+            <id>production</id>
+            <properties>
+                <package.environment>production</package.environment>
+            </properties>
+        </profile>
+    </profiles>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/resources/${package.environment}</directory>
+                <filtering>true</filtering>
+            </resource>
+            <resource>
+                <directory>src/main/java</directory>
+                <filtering>false</filtering>
+                <includes>
+                    <include>**/xml/*.xml</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring.boot.version}</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>repackage</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${spring-boot.version}</version>
+                <configuration>
+                    <!--无此配置,devtools不会生效-->
+                    <fork>true</fork>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.5.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 24 - 0
src/main/java/com/poteviohealth/cgp/serve/CgpServeApplication.java

@@ -0,0 +1,24 @@
+package com.poteviohealth.cgp.serve;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * @PackageName:com.poteviohealth.cgp.serve
+ * @className:CgpServeApplication
+ * @Description:
+ * @author: QIN
+ * @date: 2020/9/1 10:15
+ */
+@EnableDiscoveryClient
+@SpringBootApplication
+@ComponentScan(value = {"com.poteviohealth.cgp"})
+public class CgpServeApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(CgpServeApplication.class, args);
+    }
+
+}

+ 36 - 0
src/main/java/com/poteviohealth/cgp/serve/config/MetaHandler.java

@@ -0,0 +1,36 @@
+package com.poteviohealth.cgp.serve.config;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * 处理新增和更新的基础数据填充,配合BaseEntity和MyBatisPlusConfig使用
+ * @author Qin
+ */
+@Component
+public class MetaHandler implements MetaObjectHandler {
+
+    /**
+     * 新增数据执行
+     * @param metaObject
+     */
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        this.setFieldValByName("createdDate", new Date(), metaObject);
+        this.setFieldValByName("modifiedDate", new Date(), metaObject);
+        this.setFieldValByName("yn", 0, metaObject);
+    }
+
+    /**
+     * 更新数据执行
+     * @param metaObject
+     */
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        this.setFieldValByName("modifiedDate", new Date(), metaObject);
+    }
+
+}

+ 72 - 0
src/main/java/com/poteviohealth/cgp/serve/config/MybatisPlusConfig.java

@@ -0,0 +1,72 @@
+package com.poteviohealth.cgp.serve.config;
+
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.core.parser.ISqlParser;
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler;
+import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
+import com.poteviohealth.cgp.common.filter.TokenContext;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.LongValue;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * MyBatisPlus配置
+ * @Author Qin
+ * @Date 2019/7/25 18:54
+ **/
+@Configuration
+@MapperScan("com.poteviohealth.cgp.serve.mapper")
+public class MybatisPlusConfig {
+
+    /**
+     * 自动填充功能
+     * @return
+     */
+    @Bean
+    public GlobalConfig globalConfig() {
+        GlobalConfig globalConfig = new GlobalConfig();
+        globalConfig.setMetaObjectHandler(new MetaHandler());
+        return globalConfig;
+    }
+
+
+    /**
+     * 多租户属于 SQL 解析部分,依赖 MP 分页插件
+     */
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        List<ISqlParser> sqlParserList = new ArrayList<>();
+        TenantSqlParser tenantSqlParser = new TenantSqlParser();
+        tenantSqlParser.setTenantHandler(new TenantHandler() {
+
+            @Override
+            public Expression getTenantId(boolean select) {
+                Integer operatorId = TokenContext.cureOperatorId();
+                return new LongValue(operatorId==null?1L:operatorId);
+            }
+
+            @Override
+            public String getTenantIdColumn() {
+                return "operator_id";
+            }
+
+            @Override
+            public boolean doTableFilter(String tableName) {
+                // 这里可以判断是否过滤表
+                return false;
+            }
+        });
+
+        sqlParserList.add(tenantSqlParser);
+        paginationInterceptor.setSqlParserList(sqlParserList);
+        return paginationInterceptor;
+    }
+
+}

+ 79 - 0
src/main/java/com/poteviohealth/cgp/serve/config/SecurityConfig.java

@@ -0,0 +1,79 @@
+package com.poteviohealth.cgp.serve.config;
+
+import com.alibaba.fastjson.JSON;
+import com.poteviohealth.cgp.common.filter.*;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.Arrays;
+
+/**
+ * 登陆过滤器
+ */
+@Configuration
+public class SecurityConfig {
+//    @Bean
+//    public FilterRegistrationBean registerCrosFilter() {
+//        FilterRegistrationBean registration = new FilterRegistrationBean();
+//        registration.setName("accessControlAllowOriginFilter");
+//        registration.setFilter(new AccessControlAllowOriginFilter());
+//        registration.setOrder(0);
+//        registration.setUrlPatterns(Arrays.asList("/*"));
+//        return registration;
+//    }
+    /**
+     * Web token过滤
+     * @return filter
+     */
+    @Bean
+    public FilterRegistrationBean registerWebFilter() {
+        FilterRegistrationBean registration = new FilterRegistrationBean();
+        registration.setName("webJwtAuthFilter");          // 过滤器名称
+        registration.setFilter(new WebJwtAuthFilter());        // 注入过滤器
+        registration.setOrder(1);                       //过滤器顺序
+        registration.setUrlPatterns(Arrays.asList("/serve/web/*"));  //拦截规则
+        return registration;
+    }
+
+    /**
+     * APP token过滤
+     * @return filter
+     */
+    @Bean
+    public FilterRegistrationBean registerAppFilter() {
+        FilterRegistrationBean registration = new FilterRegistrationBean();
+        registration.setName("appJwtAuthFilter");          // 过滤器名称
+        registration.setFilter(new AppJwtAuthFilter());        // 注入过滤器
+        registration.setOrder(2);                       //过滤器顺序
+        registration.setUrlPatterns(Arrays.asList("/serve/app/*"));  //拦截规则
+        return registration;
+    }
+
+    public static void main(String[] args) {
+        getToken();
+        getTokenWeb();
+    }
+
+    private static void getToken() {
+        MiniJwtVO miniJwtVO = new MiniJwtVO();
+        miniJwtVO.setAppId("wxac7ab174760dbd59");
+        miniJwtVO.setAreaId(4422);
+        miniJwtVO.setCustomerId(677596579610625L);
+        miniJwtVO.setOperatorId(1);
+        miniJwtVO.setCustomerName("客户1");
+        miniJwtVO.setGroupLeaderId(1L);
+        miniJwtVO.setOpenId("oaD-55XF77GFFYeywaAQFbKc7kbo");
+        System.out.println(JwtUtil.createJwt(1, JSON.toJSONString(miniJwtVO)));
+    }
+
+    private static void getTokenWeb() {
+        WebJwtVO miniJwtVO = new WebJwtVO();
+        miniJwtVO.setOperatorId(1);
+        miniJwtVO.setEmployeeId(1);
+        miniJwtVO.setUserId(1);
+        miniJwtVO.setEmployeeRole(true);
+        miniJwtVO.setOperatorRole(true);
+        System.out.println(JwtUtil.createJwt(1, JSON.toJSONString(miniJwtVO)));
+    }
+}

+ 17 - 0
src/main/java/com/poteviohealth/cgp/serve/config/SpringSecurityPassAllConfig.java

@@ -0,0 +1,17 @@
+package com.poteviohealth.cgp.serve.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+
+/**
+ * @author David
+ * @description 仅用于开发环境开发调试绕过安全控制使用
+ */
+@Configuration
+public class SpringSecurityPassAllConfig extends WebSecurityConfigurerAdapter {
+	@Override
+	protected void configure(HttpSecurity httpSecurity) throws Exception {
+		httpSecurity.authorizeRequests().anyRequest().permitAll().and().csrf().disable();
+	}
+}

+ 49 - 0
src/main/java/com/poteviohealth/cgp/serve/config/SwaggerConfig.java

@@ -0,0 +1,49 @@
+package com.poteviohealth.cgp.serve.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.service.Parameter;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Qin
+ */
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+    @Bean
+    public Docket productApi() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.poteviohealth.cgp.serve"))
+//                .paths(regex("/product.*"))
+                .build()
+                .globalOperationParameters(setHeaderToken())
+                .apiInfo(metaData());
+    }
+    private List<Parameter> setHeaderToken() {
+        ParameterBuilder tokenPar = new ParameterBuilder();
+        List<Parameter> pars = new ArrayList<>();
+        tokenPar.name("x-token").description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
+        pars.add(tokenPar.build());
+        return pars;
+    }
+    private ApiInfo metaData() {
+        return new ApiInfoBuilder()
+                .title("服务管理")
+                .version("1.1.0")
+                .contact(new Contact("Qin", "http://www.poteviohealth.com/", "nobody@poteviohealth.com"))
+                .build();
+    }
+}

+ 25 - 0
src/main/java/com/poteviohealth/cgp/serve/config/TableShardingAlgorithm.java

@@ -0,0 +1,25 @@
+package com.poteviohealth.cgp.serve.config;
+
+import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
+import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+
+/**
+ * @Author QIN
+ * @Date 2019/7/15 10:33
+ * @Param
+ * @return
+ **/
+@Component
+public class TableShardingAlgorithm implements PreciseShardingAlgorithm {
+    private final static String SIGN = "_";
+
+
+    @Override
+    public String doSharding(Collection collection, PreciseShardingValue preciseShardingValue) {
+
+        return preciseShardingValue.getLogicTableName()+SIGN + preciseShardingValue.getValue();
+    }
+}

+ 71 - 0
src/main/java/com/poteviohealth/cgp/serve/database/DataSourceConfig.java

@@ -0,0 +1,71 @@
+package com.poteviohealth.cgp.serve.database;
+
+
+import com.poteviohealth.cgp.serve.config.TableShardingAlgorithm;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration;
+import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
+import org.apache.shardingsphere.api.config.sharding.strategy.NoneShardingStrategyConfiguration;
+import org.apache.shardingsphere.api.config.sharding.strategy.StandardShardingStrategyConfiguration;
+import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import java.sql.SQLException;
+import java.util.*;
+
+/**
+ * @Author QIN
+ * @Date 2019/7/11 10:26
+ * @Param 数据库工具类
+ * @return
+**/
+@Configuration
+@Qualifier("shardingComplexDataSource")
+@Slf4j
+public class DataSourceConfig {
+
+    private static final String SHARDING_COLUMN_NAME = "operator_id";
+
+    @Resource
+    private DatabaseConfig databaseConfig;
+
+    @Resource
+    private TableShardingAlgorithm tableShardingAlgorithm;
+
+    @Bean
+    public DataSource getDataSource() {
+        return buildDataSource();
+    }
+
+    private DataSource buildDataSource(){
+        //分库设置
+        Map<String, DataSource> dataSourceMap = new HashMap<>(1);
+        //添加数据库
+        dataSourceMap.put(DatabaseConfig.DATABASE_NAME, databaseConfig.createDataSource());
+
+        Collection<TableRuleConfiguration> tableRuleConfigs = new LinkedList();
+        tableRuleConfigs.add(new TableRuleConfiguration("i_integral_detail"));
+
+        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
+        shardingRuleConfig.setTableRuleConfigs(tableRuleConfigs);
+        //配置默认库
+        shardingRuleConfig.setDefaultDataSourceName(DatabaseConfig.DATABASE_NAME);
+        shardingRuleConfig.setDefaultDatabaseShardingStrategyConfig(new NoneShardingStrategyConfiguration());
+        shardingRuleConfig.setDefaultTableShardingStrategyConfig(new StandardShardingStrategyConfiguration(SHARDING_COLUMN_NAME,
+                tableShardingAlgorithm));
+
+        // 获取数据源对象
+        DataSource dataSource = null;
+        try {
+            dataSource = ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, new Properties());
+        } catch (SQLException e) {
+            log.error("buildDataSource error", e);
+        }
+        return dataSource;
+    }
+
+}

+ 27 - 0
src/main/java/com/poteviohealth/cgp/serve/database/DataSourceDocument.java

@@ -0,0 +1,27 @@
+package com.poteviohealth.cgp.serve.database;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * @PackageName:com.jdd.cgp.order.database
+ * @className:DataSourceDocument
+ * @Description:
+ * @author: QIN
+ * @date: 2019/8/8 19:40
+ */
+@Component
+public class DataSourceDocument {
+
+    @Autowired
+    private DatabaseConfig databaseConfig;
+
+
+    public Connection getDataSource() throws SQLException {
+        //获取连接
+        return databaseConfig.getConnection();
+    }
+}

+ 53 - 0
src/main/java/com/poteviohealth/cgp/serve/database/DatabaseConfig.java

@@ -0,0 +1,53 @@
+package com.poteviohealth.cgp.serve.database;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * 获取数据库连接
+ * @author QIN
+ * @date 2019/7/22
+ */
+@Data
+@ConfigurationProperties(prefix = "spring.datasource.druid.database")
+@Component
+public class DatabaseConfig {
+    private String jdbcUrl;
+    private String username;
+    private String password;
+    private String driverClassName;
+    public static final String DATABASE_NAME="datasource";
+
+    /**
+     * 获取数据源
+     * @Author QIN
+     * @Date 2019/7/22 15:02
+     * @Param
+     * @return DataSource
+    **/
+    public DataSource createDataSource() {
+        DruidDataSource result = new DruidDataSource();
+        result.setDriverClassName(getDriverClassName());
+        result.setUrl(getJdbcUrl());
+        result.setUsername(getUsername());
+        result.setPassword(getPassword());
+        return result;
+    }
+
+    /**
+     * 获取连接
+     * @Author QIN
+     * @Date 2019/7/22 15:02
+     * @Param
+     * @return Connection
+     **/
+    public Connection getConnection() throws SQLException {
+        return this.createDataSource().getConnection();
+    }
+}

+ 76 - 0
src/main/resources/develop/application.yml

@@ -0,0 +1,76 @@
+# server basic config
+server:
+  port: 12012
+  servlet:
+    context-path: /
+# eureka server connect config
+eureka:
+  client:
+    service-url:
+      defaultZone: http://127.0.0.1:8760/eureka/
+    register-with-eureka: true
+    #fetch-registry: false
+spring:
+  # 安全配置,请以实际方式代替
+  security:
+    user:
+      name: admin
+      password: admin
+  application:
+    # 请保持和POM GAV一致
+    name: cgp-serve
+  #database operation config
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      database:
+        jdbc-url: jdbc:mysql://101.201.117.73:3306/cgp_serve?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
+        username: cgp
+        password: jd0709
+        filter: stat
+        max-active: 100
+        initial-size: 5
+        max-wait: 60000
+        min-idle: 1
+        validation-query: SELECT 1
+        test-while-idle: true
+        driver-class-name: com.mysql.cj.jdbc.Driver
+  data:
+    elasticsearch:
+      cluster-name: my-application
+      cluster-nodes: 101.201.117.73:9300
+      repositories:
+        enabled: true
+      local: false
+  elasticsearch:
+    rest:
+      uris: ["http://101.201.117.73:9200"]
+  # redis配置
+  redis:
+    ################### redis 单机版  ##########################
+    host: ${REDIS_IP:101.201.117.73}
+    port: ${REDIS_PORT:16379}
+    database: ${REDIS_DB:1}
+    password: ${REDIS_PASSWORD:}
+    # 使用jedis连接池
+    jedis:
+      pool:
+        max-active: 8
+        max-wait: -1
+        max-idle: 8
+        min-idle: 0
+    timeout: 5000
+# mybatis config
+mybatis-plus:
+  config-location: classpath:mybatis-config.xml
+  mapper-locations: classpath:mapper/serve/*.xml
+# Logger
+logging:
+  config: classpath:logback-spring.xml
+common:
+  localImage:
+    dir: e:/temp/image/
+    uri: http://localhost:8080/image/
+#wechat:
+#  api:
+#    auth: https://api.weixin.qq.com/sns/jscode2session?appid={appid}&secret={secret}&js_code={js_code}&grant_type={grant_type}

+ 161 - 0
src/main/resources/develop/logback-spring.xml

@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="300000">
+    <jmxConfigurator/>
+
+    <contextName>Serve</contextName>
+
+    <!-- For Run -->
+    <property name="root.logger.level" value="INFO"/>
+    <property name="root.logger.error.level" value="ERROR"/>
+    <property name="root.logger.all.level" value="DEBUG"/>
+
+    <property name="log.path" value="./logs"/>
+    <!--<property name="log.path" value="/Users/pasenger/var/log"/>-->
+    <property name="app.name" value="serve"/>
+    <property name="app.version" value="SNAPSHOT"/>
+
+    <property name="log.file" value="${log.path}/${app.name}-${app.version}/info/${app.name}.%d{yyyyMMdd}.info.%i.log.gz"/>
+
+    <property name="log.file.error" value="${log.path}/${app.name}-${app.version}/error/${app.name}.%d{yyyyMMdd}.error.%i.log.gz"/>
+
+    <property name="log.file.operate" value="${log.path}/${app.name}-${app.version}/operate/${app.name}.%d{yyyyMMdd}.operate.%i.log.gz"/>
+
+    <property name="log.file.all" value="${log.path}/${app.name}-${app.version}/debug/${app.name}.%d{yyyyMMdd}.debug.%i.log.gz"/>
+
+	<!-- 控制台输出的日志级别 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <!--时间戳|应用标识|版本标识|类名方法名行号|日志级别|[请求/响应标识]|来源IP/日志详细内容-->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%logger{10}-%line|%5p|%msg%n</pattern>
+        </encoder>
+    </appender>
+
+	<!-- 程序日志输出Info的信息 -->
+    <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <ImmediateFlush>true</ImmediateFlush>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%logger{10}-%line|%5p|%msg%n</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>DENY</onMatch>  <!-- 如果命中就禁止这条日志 -->
+            <onMismatch>ACCEPT</onMismatch>  <!-- 如果没有命中就使用这条规则 -->
+        </filter>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <FileNamePattern>${log.file}</FileNamePattern>
+            <MaxHistory>30</MaxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+    </appender>
+
+    <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <discardingThreshold>0</discardingThreshold>
+        <includeCallerData>false</includeCallerData>
+        <appender-ref ref="fileAppender"/>
+    </appender>
+
+    <!-- 程序error输出的信息 -->
+    <appender name="errorFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <ImmediateFlush>true</ImmediateFlush>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%logger{10}-%line|%5p|%msg%n</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <!--设置日志级别,过滤掉info日志,只输入error日志-->
+            <level>ERROR</level>
+        </filter>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <FileNamePattern>${log.file.error}</FileNamePattern>
+            <MaxHistory>60</MaxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+    </appender>
+
+    <appender name="errorAsyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <discardingThreshold>0</discardingThreshold>
+        <includeCallerData>false</includeCallerData>
+        <appender-ref ref="errorFileAppender"/>
+    </appender>
+
+    <!-- 操作拦截器记录日志 -->
+    <appender name="file.other.operate" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <ImmediateFlush>true</ImmediateFlush>
+            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method:%L -%msg%n</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <!--设置日志级别,过滤掉info日志,只输入error日志-->
+            <level>info</level>
+        </filter>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <FileNamePattern>${log.file.operate}</FileNamePattern>
+            <MaxHistory>60</MaxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+    </appender>
+
+     <!-- 程序输出的所有信息 -->
+  <!--   <appender name="allFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <ImmediateFlush>true</ImmediateFlush>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%logger{10}-%line|%5p|%msg%n</pattern>
+        </encoder>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <FileNamePattern>${log.file.all}</FileNamePattern>
+            <MaxHistory>20</MaxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+    </appender>
+
+    <appender name="allAsyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <discardingThreshold>0</discardingThreshold>
+        <includeCallerData>false</includeCallerData>
+        <appender-ref ref="allFileAppender"/>
+    </appender> -->
+
+    <!-- 如果要输出业务日志, 请修改为TRACE -->
+    <logger name="org.springframework" level="ERROR"></logger>
+    <logger name="ch.qos.logback" level="OFF"></logger>
+    <logger name="org.hibernate" level="ERROR"></logger>
+    <logger name="org.springframework" level="ERROR"></logger>
+    <logger name="org.apache.catalina" level="ERROR"></logger>
+    <logger name="org.thymeleaf" level="ERROR"></logger>
+    <logger name="org.apache.ibatis" level="ERROR"/>
+	<logger name="java.sql.Connection" level="ERROR"/>
+	<logger name="java.sql.Statement" level="ERROR"/>
+	<logger name="java.sql.PreparedStatement" level="ERROR"/>
+	<logger name="com.tahoecn.planManagement.interceptors.OperateLogInterceptor">
+		<level value="${root.logger.level}" />
+		<appender-ref ref="file.other.operate" />
+	</logger>
+
+    <root level="INFO">
+        <appender-ref ref="asyncFileAppender"/>
+        <appender-ref ref="errorAsyncFileAppender"/>
+        <appender-ref ref="console"/>
+    </root>
+
+
+   <!--  <root level="DEBUG">
+        <appender-ref ref="allAsyncFileAppender"/>
+    </root> -->
+</configuration>

+ 14 - 0
src/main/resources/develop/mybatis-config.xml

@@ -0,0 +1,14 @@
+<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+    <settings>
+        <setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>
+    </settings>
+    <typeAliases>
+        <typeAlias alias="Integer" type="java.lang.Integer"/>
+        <typeAlias alias="Long" type="java.lang.Long"/>
+        <typeAlias alias="HashMap" type="java.util.HashMap"/>
+        <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>
+        <typeAlias alias="ArrayList" type="java.util.ArrayList"/>
+        <typeAlias alias="LinkedList" type="java.util.LinkedList"/>
+    </typeAliases>
+</configuration>

+ 18 - 0
src/main/resources/integration-sql.yml

@@ -0,0 +1,18 @@
+i_integral_detail_1 : "CREATE TABLE `i_integral_detail_$` (
+                         `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
+                         `created_date` datetime NOT NULL COMMENT '创建时间',
+                         `modified_date` datetime NOT NULL COMMENT '修改时间',
+                         `yn` int(1) NOT NULL COMMENT '标记删除 0:未删除1:已删除',
+                         `integral_detail_id` bigint(20) NOT NULL COMMENT '逻辑主键',
+                         `operator_id` int(11) NOT NULL COMMENT '运营商id',
+                         `customer_id` bigint(20) DEFAULT NULL COMMENT '客户id',
+                         `group_leader_id` int(11) DEFAULT NULL COMMENT '团长id',
+                         `order_id` bigint(20) DEFAULT NULL COMMENT '订单id',
+                         `supplier_id` int(11) DEFAULT NULL COMMENT '供应商id',
+                         `event` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '操作事件',
+                         `integral` bigint(20) NOT NULL COMMENT '积分',
+                         `sn` varchar(31) COLLATE utf8_bin DEFAULT NULL COMMENT '订单号',
+                         PRIMARY KEY (`id`),
+                         KEY `idx_integral_detail_id` (`integral_detail_id`) USING BTREE,
+                         KEY `idx_operator_id` (`operator_id`) USING BTREE
+                       ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin"

+ 77 - 0
src/main/resources/uat/application.yml

@@ -0,0 +1,77 @@
+# server basic config
+server:
+  port: 12012
+  servlet:
+    context-path: /
+# eureka server connect config
+eureka:
+  client:
+    service-url:
+      defaultZone: http://127.0.0.1:8760/eureka/
+    register-with-eureka: true
+    #fetch-registry: false
+spring:
+  # 安全配置,请以实际方式代替
+  security:
+    user:
+      name: admin
+      password: admin
+  application:
+    # 请保持和POM GAV一致
+    name: cgp-serve
+  #database operation config
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      database:
+        jdbc-url: jdbc:mysql://123.56.196.46:3306/cgp_serve?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
+        username: cgp
+        password: jd0709
+        filter: stat
+        max-active: 100
+        initial-size: 5
+        max-wait: 60000
+        min-idle: 1
+        validation-query: SELECT 1
+        test-while-idle: true
+        driver-class-name: com.mysql.cj.jdbc.Driver
+  data:
+    elasticsearch:
+      cluster-name: my-application
+      cluster-nodes: 123.56.196.46:9300
+      repositories:
+        enabled: true
+      local: false
+  elasticsearch:
+    rest:
+      uris: ["http://123.56.196.46:9200"]
+  # redis配置
+  redis:
+    ################### redis 单机版  ##########################
+    host: ${REDIS_IP:123.56.196.46}
+    port: ${REDIS_PORT:6379}
+    database: ${REDIS_DB:1}
+    password: ${REDIS_PASSWORD:^n!&zJyvJj}
+    # 使用jedis连接池
+    jedis:
+      pool:
+        max-active: 8
+        max-wait: -1
+        max-idle: 8
+        min-idle: 0
+    timeout: 5000
+# mybatis config
+mybatis-plus:
+  config-location: classpath:mybatis-config.xml
+  mapper-locations: classpath:mapper/serve/*.xml
+# Logger
+logging:
+  config: classpath:logback-spring.xml
+  com.poteviohealth.cgp.serve.mapper: DEBUG
+common:
+  localImage:
+    dir: /opt/soft/panjin/product/image/
+    uri: https://test.poteviohealth.com/cgpimage/
+#wechat:
+#  api:
+#    auth: https://api.weixin.qq.com/sns/jscode2session?appid={appid}&secret={secret}&js_code={js_code}&grant_type={grant_type}

+ 161 - 0
src/main/resources/uat/logback-spring.xml

@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="300000">
+    <jmxConfigurator/>
+
+    <contextName>Serve</contextName>
+
+    <!-- For Run -->
+    <property name="root.logger.level" value="INFO"/>
+    <property name="root.logger.error.level" value="ERROR"/>
+    <property name="root.logger.all.level" value="DEBUG"/>
+
+    <property name="log.path" value="./logs"/>
+    <!--<property name="log.path" value="/Users/pasenger/var/log"/>-->
+    <property name="app.name" value="serve"/>
+    <property name="app.version" value="SNAPSHOT"/>
+
+    <property name="log.file" value="${log.path}/${app.name}-${app.version}/info/${app.name}.%d{yyyyMMdd}.info.%i.log.gz"/>
+
+    <property name="log.file.error" value="${log.path}/${app.name}-${app.version}/error/${app.name}.%d{yyyyMMdd}.error.%i.log.gz"/>
+
+    <property name="log.file.operate" value="${log.path}/${app.name}-${app.version}/operate/${app.name}.%d{yyyyMMdd}.operate.%i.log.gz"/>
+
+    <property name="log.file.all" value="${log.path}/${app.name}-${app.version}/debug/${app.name}.%d{yyyyMMdd}.debug.%i.log.gz"/>
+
+	<!-- 控制台输出的日志级别 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <!--时间戳|应用标识|版本标识|类名方法名行号|日志级别|[请求/响应标识]|来源IP/日志详细内容-->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%logger{10}-%line|%5p|%msg%n</pattern>
+        </encoder>
+    </appender>
+
+	<!-- 程序日志输出Info的信息 -->
+    <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <ImmediateFlush>true</ImmediateFlush>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%logger{10}-%line|%5p|%msg%n</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>DENY</onMatch>  <!-- 如果命中就禁止这条日志 -->
+            <onMismatch>ACCEPT</onMismatch>  <!-- 如果没有命中就使用这条规则 -->
+        </filter>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <FileNamePattern>${log.file}</FileNamePattern>
+            <MaxHistory>30</MaxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+    </appender>
+
+    <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <discardingThreshold>0</discardingThreshold>
+        <includeCallerData>false</includeCallerData>
+        <appender-ref ref="fileAppender"/>
+    </appender>
+
+    <!-- 程序error输出的信息 -->
+    <appender name="errorFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <ImmediateFlush>true</ImmediateFlush>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%logger{10}-%line|%5p|%msg%n</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <!--设置日志级别,过滤掉info日志,只输入error日志-->
+            <level>ERROR</level>
+        </filter>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <FileNamePattern>${log.file.error}</FileNamePattern>
+            <MaxHistory>60</MaxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+    </appender>
+
+    <appender name="errorAsyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <discardingThreshold>0</discardingThreshold>
+        <includeCallerData>false</includeCallerData>
+        <appender-ref ref="errorFileAppender"/>
+    </appender>
+
+    <!-- 操作拦截器记录日志 -->
+    <appender name="file.other.operate" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <ImmediateFlush>true</ImmediateFlush>
+            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method:%L -%msg%n</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <!--设置日志级别,过滤掉info日志,只输入error日志-->
+            <level>info</level>
+        </filter>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <FileNamePattern>${log.file.operate}</FileNamePattern>
+            <MaxHistory>60</MaxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+    </appender>
+
+     <!-- 程序输出的所有信息 -->
+  <!--   <appender name="allFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <ImmediateFlush>true</ImmediateFlush>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%logger{10}-%line|%5p|%msg%n</pattern>
+        </encoder>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <FileNamePattern>${log.file.all}</FileNamePattern>
+            <MaxHistory>20</MaxHistory>
+
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+    </appender>
+
+    <appender name="allAsyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>1000</queueSize>
+        <discardingThreshold>0</discardingThreshold>
+        <includeCallerData>false</includeCallerData>
+        <appender-ref ref="allFileAppender"/>
+    </appender> -->
+
+    <!-- 如果要输出业务日志, 请修改为TRACE -->
+    <logger name="org.springframework" level="ERROR"></logger>
+    <logger name="ch.qos.logback" level="OFF"></logger>
+    <logger name="org.hibernate" level="ERROR"></logger>
+    <logger name="org.springframework" level="ERROR"></logger>
+    <logger name="org.apache.catalina" level="ERROR"></logger>
+    <logger name="org.thymeleaf" level="ERROR"></logger>
+    <logger name="org.apache.ibatis" level="ERROR"/>
+	<logger name="java.sql.Connection" level="ERROR"/>
+	<logger name="java.sql.Statement" level="ERROR"/>
+	<logger name="java.sql.PreparedStatement" level="ERROR"/>
+	<logger name="com.tahoecn.planManagement.interceptors.OperateLogInterceptor">
+		<level value="${root.logger.level}" />
+		<appender-ref ref="file.other.operate" />
+	</logger>
+
+    <root level="INFO">
+        <appender-ref ref="asyncFileAppender"/>
+        <appender-ref ref="errorAsyncFileAppender"/>
+        <appender-ref ref="console"/>
+    </root>
+
+
+   <!--  <root level="DEBUG">
+        <appender-ref ref="allAsyncFileAppender"/>
+    </root> -->
+</configuration>

+ 14 - 0
src/main/resources/uat/mybatis-config.xml

@@ -0,0 +1,14 @@
+<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+    <settings>
+        <setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>
+    </settings>
+    <typeAliases>
+        <typeAlias alias="Integer" type="java.lang.Integer"/>
+        <typeAlias alias="Long" type="java.lang.Long"/>
+        <typeAlias alias="HashMap" type="java.util.HashMap"/>
+        <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>
+        <typeAlias alias="ArrayList" type="java.util.ArrayList"/>
+        <typeAlias alias="LinkedList" type="java.util.LinkedList"/>
+    </typeAliases>
+</configuration>