Browse Source

first commit

lei.chen@allpayx.com 6 years ago
commit
881cba5c07
52 changed files with 2529 additions and 0 deletions
  1. 13 0
      ats-mp-service/.idea/compiler.xml
  2. 6 0
      ats-mp-service/.idea/encodings.xml
  3. 94 0
      ats-mp-service/.idea/inspectionProfiles/Project_Default.xml
  4. 14 0
      ats-mp-service/.idea/misc.xml
  5. 6 0
      ats-mp-service/.idea/smartfox_info.xml
  6. 626 0
      ats-mp-service/.idea/workspace.xml
  7. 0 0
      ats-mp-service/LOG_PATH_IS_UNDEFINED/clear_error-2019-02-26.log.0
  8. 0 0
      ats-mp-service/LOG_PATH_IS_UNDEFINED/clear_info-2019-02-26.log.0
  9. 2 0
      ats-mp-service/ats-mp-service.iml
  10. 110 0
      ats-mp-service/pom.xml
  11. 18 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/AtsMpServiceApplication.java
  12. 108 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/aop/RestExceptionHandler.java
  13. 71 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/common/CommonMethod.java
  14. 191 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/common/GetExcelInfoUtil.java
  15. 74 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/config/MasterDataSourceConfiguration.java
  16. 68 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/config/SlaverDataSourceConfiguration.java
  17. 78 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/controller/AtsController.java
  18. 26 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/exception/CheckException.java
  19. 27 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/exception/FormalException.java
  20. 14 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/mapper/master/UserMapper.java
  21. 55 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/mapper/slaver/AtsTxMapper.java
  22. 14 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/message/CommonMessage.java
  23. 66 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/model/vo/ResultVO.java
  24. 40 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/param/RequestParam/RecoredConfirmInfoRequest.java
  25. 37 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/param/ResponseParam/RecoredConfirmInfoResponse.java
  26. 26 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/service/UserService.java
  27. 127 0
      ats-mp-service/src/main/java/com/allpayx/atsmpservice/service/impl/UserServiceImpl.java
  28. 29 0
      ats-mp-service/src/main/resources/application-local.yml
  29. 3 0
      ats-mp-service/src/main/resources/application.yml
  30. 217 0
      ats-mp-service/src/main/resources/logback-spring-test.xml
  31. 60 0
      ats-mp-service/src/main/resources/logback-spring.xml
  32. 29 0
      ats-mp-service/target/classes/application-local.yml
  33. 3 0
      ats-mp-service/target/classes/application.yml
  34. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/AtsMpServiceApplication.class
  35. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/aop/RestExceptionHandler.class
  36. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/common/CommonMethod.class
  37. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/common/GetExcelInfoUtil.class
  38. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/config/MasterDataSourceConfiguration.class
  39. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/config/SlaverDataSourceConfiguration.class
  40. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/controller/AtsController.class
  41. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/exception/CheckException.class
  42. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/exception/FormalException.class
  43. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/mapper/master/UserMapper.class
  44. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/mapper/slaver/AtsTxMapper.class
  45. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/message/CommonMessage.class
  46. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/model/vo/ResultVO.class
  47. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/param/RequestParam/RecoredConfirmInfoRequest.class
  48. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/param/ResponseParam/RecoredConfirmInfoResponse.class
  49. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/service/UserService.class
  50. BIN
      ats-mp-service/target/classes/com/allpayx/atsmpservice/service/impl/UserServiceImpl.class
  51. 217 0
      ats-mp-service/target/classes/logback-spring-test.xml
  52. 60 0
      ats-mp-service/target/classes/logback-spring.xml

+ 13 - 0
ats-mp-service/.idea/compiler.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="ats-mp-service" />
+      </profile>
+    </annotationProcessing>
+  </component>
+</project>

+ 6 - 0
ats-mp-service/.idea/encodings.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$" charset="UTF-8" />
+  </component>
+</project>

+ 94 - 0
ats-mp-service/.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,94 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="AliAccessStaticViaInstance" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AliArrayNamingShouldHaveBracket" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AliControlFlowStatementWithoutBraces" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AliDeprecation" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AliEqualsAvoidNull" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AliLongLiteralsEndingWithLowercaseL" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AliMissingOverrideAnnotation" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AliWrapperTypeEquality" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAbstractClassShouldStartWithAbstractNaming" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAbstractMethodOrInterfaceMethodMustUseJavadoc" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidApacheBeanUtilsCopy" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidCallStaticSimpleDateFormat" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidCommentBehindStatement" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidComplexCondition" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidConcurrentCompetitionRandom" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidManuallyCreateThread" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidMissUseOfMathRandom" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidNegationOperator" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidNewDateGetTime" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidPatternCompileInMethod" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidReturnInFinally" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidStartWithDollarAndUnderLineNaming" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaAvoidUseTimer" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaBooleanPropertyShouldNotStartWithIs" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaClassCastExceptionWithSubListToArrayList" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaClassCastExceptionWithToArray" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaClassMustHaveAuthor" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaClassNamingShouldBeCamel" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaCollectionInitShouldAssignCapacity" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaCommentsMustBeJavadocFormat" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaConcurrentExceptionWithModifyOriginSubList" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaConstantFieldShouldBeUpperCase" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaCountDownShouldInFinally" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaDontModifyInForeachCircle" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaEnumConstantsMustHaveComment" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaExceptionClassShouldEndWithException" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaIbatisMethodQueryForList" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaLowerCamelCaseVariableNaming" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaMethodReturnWrapperType" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaMethodTooLong" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaPackageNaming" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaPojoMustOverrideToString" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaPojoMustUsePrimitiveField" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaPojoNoDefaultValue" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaRemoveCommentedCode" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaServiceOrDaoClassShouldEndWithImpl" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaStringConcat" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaSwitchStatement" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaTestClassShouldEndWithTestNaming" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaThreadLocalShouldRemove" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaThreadPoolCreation" enabled="false" level="BLOCKER" enabled_by_default="false" />
+    <inspection_tool class="AlibabaThreadShouldSetName" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaTransactionMustHaveRollback" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaUndefineMagicConstant" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaUnsupportedExceptionWithModifyAsList" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="AlibabaUseQuietReferenceNotation" enabled="false" level="MAJOR" enabled_by_default="false" />
+    <inspection_tool class="AlibabaUseRightCaseForDateFormat" enabled="false" level="CRITICAL" enabled_by_default="false" />
+    <inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
+      <option name="TOP_LEVEL_CLASS_OPTIONS">
+        <value>
+          <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
+          <option name="REQUIRED_TAGS" value="" />
+        </value>
+      </option>
+      <option name="INNER_CLASS_OPTIONS">
+        <value>
+          <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
+          <option name="REQUIRED_TAGS" value="" />
+        </value>
+      </option>
+      <option name="METHOD_OPTIONS">
+        <value>
+          <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
+          <option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
+        </value>
+      </option>
+      <option name="FIELD_OPTIONS">
+        <value>
+          <option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
+          <option name="REQUIRED_TAGS" value="" />
+        </value>
+      </option>
+      <option name="IGNORE_DEPRECATED" value="false" />
+      <option name="IGNORE_JAVADOC_PERIOD" value="true" />
+      <option name="IGNORE_DUPLICATED_THROWS" value="false" />
+      <option name="IGNORE_POINT_TO_ITSELF" value="false" />
+      <option name="myAdditionalJavadocTags" value="date" />
+    </inspection_tool>
+    <inspection_tool class="MapOrSetKeyShouldOverrideHashCodeEquals" enabled="false" level="CRITICAL" enabled_by_default="false" />
+  </profile>
+</component>

+ 14 - 0
ats-mp-service/.idea/misc.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 6 - 0
ats-mp-service/.idea/smartfox_info.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="SmartFoxProjectConfig">
+    <option name="projectInspectionClosed" value="true" />
+  </component>
+</project>

+ 626 - 0
ats-mp-service/.idea/workspace.xml

@@ -0,0 +1,626 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="2f5edda9-aafa-4c12-95a0-3e7f5cb27ecd" name="Default Changelist" comment="" />
+    <ignored path="$PROJECT_DIR$/out/" />
+    <ignored path="$PROJECT_DIR$/target/" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FUSProjectUsageTrigger">
+    <session id="-1298372940">
+      <usages-collector id="statistics.lifecycle.project">
+        <counts>
+          <entry key="project.closed" value="3" />
+          <entry key="project.open.time.1" value="3" />
+          <entry key="project.open.time.10" value="1" />
+          <entry key="project.open.time.14" value="1" />
+          <entry key="project.open.time.19" value="1" />
+          <entry key="project.open.time.2" value="1" />
+          <entry key="project.open.time.23" value="2" />
+          <entry key="project.open.time.5" value="1" />
+          <entry key="project.open.time.6" value="1" />
+          <entry key="project.opened" value="11" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.extensions.open">
+        <counts>
+          <entry key="java" value="42" />
+          <entry key="xml" value="3" />
+          <entry key="yml" value="4" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.types.open">
+        <counts>
+          <entry key="JAVA" value="42" />
+          <entry key="XML" value="3" />
+          <entry key="YAML" value="4" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.extensions.edit">
+        <counts>
+          <entry key="java" value="2311" />
+          <entry key="xml" value="3" />
+          <entry key="yml" value="2" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.types.edit">
+        <counts>
+          <entry key="JAVA" value="2311" />
+          <entry key="XML" value="3" />
+          <entry key="YAML" value="2" />
+        </counts>
+      </usages-collector>
+    </session>
+  </component>
+  <component name="FileEditorManager">
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/controller/AtsController.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="1296">
+              <caret line="59" column="29" selection-start-line="59" selection-start-column="20" selection-end-line="59" selection-end-column="45" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/RequestParam/RecoredConfirmInfoRequest.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="945">
+              <caret line="38" column="33" selection-start-line="38" selection-start-column="33" selection-end-line="38" selection-end-column="33" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/common/GetExcelInfoUtil.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="351">
+              <caret line="30" column="51" selection-start-line="30" selection-start-column="51" selection-end-line="30" selection-end-column="51" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/slaver/AtsTxMapper.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="648">
+              <caret line="32" column="32" selection-start-line="32" selection-start-column="32" selection-end-line="32" selection-end-column="32" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/pom.xml">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="999">
+              <caret line="37" column="41" selection-start-line="37" selection-start-column="41" selection-end-line="37" selection-end-column="41" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/ResponseParam/RecoredConfirmInfoResponse.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="135">
+              <caret line="5" column="13" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/service/UserService.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="459">
+              <caret line="22" column="9" selection-start-line="22" selection-start-column="9" selection-end-line="22" selection-end-column="9" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/service/impl/UserServiceImpl.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="387">
+              <caret line="115" column="49" lean-forward="true" selection-start-line="115" selection-start-column="49" selection-end-line="115" selection-end-column="49" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/master/UserMapper.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="189">
+              <caret line="12" selection-start-line="12" selection-end-line="12" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/message/CommonMessage.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="270">
+              <caret line="10" column="83" selection-start-line="10" selection-start-column="83" selection-end-line="10" selection-end-column="83" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Interface" />
+        <option value="Class" />
+      </list>
+    </option>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/src/main/resources/application-local.yml" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/model/vo/RequestIp.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/model/vo/ResultVO.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/service/impl/UserService.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/exception/CheckException.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/exception/FormalException.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/aop/RestExceptionHandler.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/slaver/ShopInfoMapper.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/RecoredConfirmInfo.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/ResponseParam/RecoredConfirmInfo.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/RequestParam/RecoredConfirmInfo.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/AtsMpServiceApplication.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/common/CommonMethod.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/master/UserMapper.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/config/SlaverDataSourceConfiguration.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/config/MasterDataSourceConfiguration.java" />
+        <option value="$PROJECT_DIR$/pom.xml" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/common/GetExcelInfoUtil.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/ResponseParam/RecoredConfirmInfoResponse.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/message/CommonMessage.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/service/UserService.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/controller/AtsController.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/RequestParam/RecoredConfirmInfoRequest.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/slaver/AtsTxMapper.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/service/impl/UserServiceImpl.java" />
+      </list>
+    </option>
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+    <sorting>DEFINITION_ORDER</sorting>
+  </component>
+  <component name="ProjectFrameBounds" extendedState="7">
+    <option name="x" value="-8" />
+    <option name="y" value="-8" />
+    <option name="width" value="1400" />
+    <option name="height" value="1000" />
+  </component>
+  <component name="ProjectInspectionProfilesVisibleTreeState">
+    <entry key="Project Default">
+      <profile-state>
+        <expanded-state>
+          <State />
+        </expanded-state>
+        <selected-state>
+          <State>
+            <id>Ali-Check</id>
+          </State>
+        </selected-state>
+      </profile-state>
+    </entry>
+  </component>
+  <component name="ProjectView">
+    <navigator proportions="" version="1">
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="Scope" />
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="ats-mp-service" type="b2602c69:ProjectViewProjectNode" />
+              <item name="ats-mp-service" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="ats-mp-service" type="b2602c69:ProjectViewProjectNode" />
+              <item name="ats-mp-service" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="ats-mp-service" type="b2602c69:ProjectViewProjectNode" />
+              <item name="ats-mp-service" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="ats-mp-service" type="b2602c69:ProjectViewProjectNode" />
+              <item name="ats-mp-service" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="ats-mp-service" type="b2602c69:ProjectViewProjectNode" />
+              <item name="ats-mp-service" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="atsmpservice" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="ats-mp-service" type="b2602c69:ProjectViewProjectNode" />
+              <item name="ats-mp-service" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="atsmpservice" type="462c0819:PsiDirectoryNode" />
+              <item name="mapper" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="ats-mp-service" type="b2602c69:ProjectViewProjectNode" />
+              <item name="ats-mp-service" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="atsmpservice" type="462c0819:PsiDirectoryNode" />
+              <item name="mapper" type="462c0819:PsiDirectoryNode" />
+              <item name="master" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+      <pane id="PackagesPane" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="RequestMappingsPanelOrder0" value="0" />
+    <property name="RequestMappingsPanelOrder1" value="1" />
+    <property name="RequestMappingsPanelOrder2" value="2" />
+    <property name="RequestMappingsPanelWidth0" value="75" />
+    <property name="RequestMappingsPanelWidth1" value="75" />
+    <property name="RequestMappingsPanelWidth2" value="75" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="aspect.path.notification.shown" value="true" />
+    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1551421933851" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../../test" />
+    <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
+    <property name="nodejs_npm_path_reset_for_default_project" value="true" />
+    <property name="settings.editor.selected.configurable" value="preferences.keymap" />
+  </component>
+  <component name="RecentsManager">
+    <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="com.allpayx.atsmpservice.param.ResponseParam" />
+      <recent name="com.allpayx.atsmpservice.param.RequestParam" />
+      <recent name="com.allpayx.atsmpservice.aop" />
+      <recent name="com.allpayx.atsmpservice" />
+    </key>
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="E:\workspace\work\ats-mp\ats-mp-service\src\main\java\com\allpayx\atsmpservice" />
+      <recent name="E:\workspace\work\ats-mp\ats-mp-service\src\main\java\com\allpayx\atsmpservice\exception" />
+      <recent name="E:\workspace\work\ats-mp\ats-mp-service\src\main\java\com\allpayx\atsmpservice\model" />
+      <recent name="E:\workspace\work\ats-mp\ats-mp-service\src\main\java\com\allpayx\atsmpservice\config" />
+      <recent name="E:\workspace\work\ats-mp\ats-mp-service\src\main\resources" />
+    </key>
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="RunManager">
+    <configuration name="AtsMpServiceApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
+      <module name="ats-mp-service" />
+      <extension name="coverage">
+        <pattern>
+          <option name="PATTERN" value="com.allpayx.atsmpservice.*" />
+          <option name="ENABLED" value="true" />
+        </pattern>
+      </extension>
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.allpayx.atsmpservice.AtsMpServiceApplication" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <recent_temporary>
+      <list>
+        <item itemvalue="Spring Boot.AtsMpServiceApplication" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="2f5edda9-aafa-4c12-95a0-3e7f5cb27ecd" name="Default Changelist" comment="" />
+      <created>1551165591897</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1551165591897</updated>
+      <workItem from="1551165594785" duration="9152000" />
+      <workItem from="1551228992304" duration="16462000" />
+      <workItem from="1551315294485" duration="4049000" />
+      <workItem from="1551336302625" duration="11347000" />
+      <workItem from="1551401346722" duration="1306000" />
+      <workItem from="1551430428380" duration="634000" />
+      <workItem from="1551660824398" duration="595000" />
+      <workItem from="1551679226497" duration="700000" />
+      <workItem from="1551689594779" duration="594000" />
+      <workItem from="1551755357503" duration="624000" />
+      <workItem from="1551833522459" duration="1800000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="47263000" />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-8" y="-8" width="1936" height="1056" extended-state="7" />
+    <editor active="true" />
+    <layout>
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.20469083" />
+      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+      <window_info id="Designer" order="2" />
+      <window_info id="Image Layers" order="3" />
+      <window_info id="UI Designer" order="4" />
+      <window_info id="Favorites" order="5" side_tool="true" />
+      <window_info id="Capture Tool" order="6" />
+      <window_info id="Web" order="7" side_tool="true" />
+      <window_info anchor="bottom" id="Message" order="0" />
+      <window_info anchor="bottom" id="Find" order="1" />
+      <window_info anchor="bottom" id="Run" order="2" weight="0.32936078" />
+      <window_info active="true" anchor="bottom" id="Debug" order="3" visible="true" weight="0.3997833" />
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
+      <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="bottom" id="Spring" order="7" />
+      <window_info anchor="bottom" id="Terminal" order="8" />
+      <window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
+      <window_info anchor="bottom" id="Messages" order="10" />
+      <window_info anchor="bottom" id="Java Enterprise" order="11" />
+      <window_info anchor="bottom" id="Database Changes" order="12" show_stripe_button="false" />
+      <window_info anchor="bottom" id="Version Control" order="13" show_stripe_button="false" />
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
+      <window_info anchor="right" id="Palette" order="3" />
+      <window_info anchor="right" id="Capture Analysis" order="4" />
+      <window_info anchor="right" id="Maven Projects" order="5" />
+      <window_info anchor="right" id="Database" order="6" />
+      <window_info anchor="right" id="Palette&#9;" order="7" />
+      <window_info anchor="right" id="Theme Preview" order="8" />
+      <window_info anchor="right" id="Bean Validation" order="9" weight="0.32995737" />
+    </layout>
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="1" />
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/src/main/resources/logback-spring.xml">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/model/vo/RequestIp.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/service/impl/UserService.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/exception/FormalException.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-214">
+          <caret line="4" column="26" selection-start-line="4" selection-start-column="17" selection-end-line="4" selection-end-column="26" />
+          <folding>
+            <element signature="e#229#230#0" expanded="true" />
+            <element signature="e#259#260#0" expanded="true" />
+            <element signature="e#305#306#0" expanded="true" />
+            <element signature="e#333#334#0" expanded="true" />
+            <element signature="e#396#397#0" expanded="true" />
+            <element signature="e#433#434#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/model/vo/ResultVO.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="351">
+          <caret line="42" column="31" selection-start-line="42" selection-start-column="31" selection-end-line="42" selection-end-column="31" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/master/UserInfoMapper.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/master/UserPersonRealMapper.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/slaver/VoucherLogMapper.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/master/UserAffixInfoMapper.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/slaver/ShopInfoMapper.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/RecoredConfirmInfo.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/ResponseParam/RecoredConfirmInfoRequest.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/common/CommonMethod.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-81">
+          <caret line="49" column="64" selection-start-line="49" selection-start-column="64" selection-end-line="49" selection-end-column="64" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/exception/CheckException.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="27">
+          <caret line="5" column="13" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/aop/RestExceptionHandler.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="918">
+          <caret line="63" column="23" selection-start-line="63" selection-start-column="23" selection-end-line="63" selection-end-column="23" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/config/SlaverDataSourceConfiguration.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="216">
+          <caret line="18" column="45" selection-start-line="18" selection-start-column="45" selection-end-line="18" selection-end-column="45" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/config/MasterDataSourceConfiguration.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="270">
+          <caret line="21" column="45" selection-start-line="21" selection-start-column="45" selection-end-line="21" selection-end-column="45" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application-local.yml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="486">
+          <caret line="18" column="10" selection-start-line="18" selection-start-column="10" selection-end-line="18" selection-end-column="10" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/AtsMpServiceApplication.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="270">
+          <caret line="12" column="13" selection-start-line="12" selection-start-column="13" selection-end-line="12" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/controller/AtsController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1296">
+          <caret line="59" column="29" selection-start-line="59" selection-start-column="20" selection-end-line="59" selection-end-column="45" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/RequestParam/RecoredConfirmInfoRequest.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="945">
+          <caret line="38" column="33" selection-start-line="38" selection-start-column="33" selection-end-line="38" selection-end-column="33" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/common/GetExcelInfoUtil.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="351">
+          <caret line="30" column="51" selection-start-line="30" selection-start-column="51" selection-end-line="30" selection-end-column="51" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/slaver/AtsTxMapper.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="648">
+          <caret line="32" column="32" selection-start-line="32" selection-start-column="32" selection-end-line="32" selection-end-column="32" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pom.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="999">
+          <caret line="37" column="41" selection-start-line="37" selection-start-column="41" selection-end-line="37" selection-end-column="41" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/param/ResponseParam/RecoredConfirmInfoResponse.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="135">
+          <caret line="5" column="13" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/service/UserService.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="459">
+          <caret line="22" column="9" selection-start-line="22" selection-start-column="9" selection-end-line="22" selection-end-column="9" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/message/CommonMessage.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="270">
+          <caret line="10" column="83" selection-start-line="10" selection-start-column="83" selection-end-line="10" selection-end-column="83" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/service/impl/UserServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="387">
+          <caret line="115" column="49" lean-forward="true" selection-start-line="115" selection-start-column="49" selection-end-line="115" selection-end-column="49" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/allpayx/atsmpservice/mapper/master/UserMapper.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="189">
+          <caret line="12" selection-start-line="12" selection-end-line="12" />
+        </state>
+      </provider>
+    </entry>
+  </component>
+  <component name="masterDetails">
+    <states>
+      <state key="ProjectJDKs.UI">
+        <settings>
+          <last-edited>1.8</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+    </states>
+  </component>
+</project>

+ 0 - 0
ats-mp-service/LOG_PATH_IS_UNDEFINED/clear_error-2019-02-26.log.0


+ 0 - 0
ats-mp-service/LOG_PATH_IS_UNDEFINED/clear_info-2019-02-26.log.0


+ 2 - 0
ats-mp-service/ats-mp-service.iml

@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4" />

+ 110 - 0
ats-mp-service/pom.xml

@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>1.5.18.RELEASE</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <groupId>ats-mp</groupId>
+    <artifactId>ats-mp</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+    <name>ats-mp-service</name>
+    <description>Demo project for Spring Boot</description>
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.0.6</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <!--<scope>runtime</scope>-->
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.nimbusds</groupId>
+            <artifactId>nimbus-jose-jwt</artifactId>
+            <version>4.23</version>
+        </dependency>
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+            <version>2.9.9</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>2.6</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.49</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>1.1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.1.1</version>
+        </dependency>
+<!--        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.6</version>
+        </dependency>-->
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.6</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.14</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 18 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/AtsMpServiceApplication.java

@@ -0,0 +1,18 @@
+package com.allpayx.atsmpservice;
+
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+//@EnableTransactionManagement
+@SpringBootApplication
+@MapperScan("com.allpayx.atsmpservice.mapper")
+//@EnableAsync
+//@EnableScheduling
+public class AtsMpServiceApplication {
+
+	public static void main(String[] args) {
+		SpringApplication.run(AtsMpServiceApplication.class, args);
+	}
+}

+ 108 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/aop/RestExceptionHandler.java

@@ -0,0 +1,108 @@
+package com.allpayx.atsmpservice.aop;
+
+import com.allpayx.atsmpservice.exception.CheckException;
+import com.allpayx.atsmpservice.exception.FormalException;
+
+
+import com.allpayx.atsmpservice.model.vo.ResultVO;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.BindException;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.ConstraintViolationException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+
+/**
+ * Created by zhang on 2018/12/21.
+ */
+@ControllerAdvice(annotations = {RestController.class, Controller.class} )
+@ResponseBody
+@Slf4j
+public class RestExceptionHandler {
+
+    private static final Logger logger = LoggerFactory.getLogger(RestExceptionHandler.class);
+
+    @ExceptionHandler(Exception.class)
+    @ResponseBody
+    public Object exceptionHandler(Exception e) {
+        if (e instanceof CheckException) {
+            // 异常信息
+            log.debug("e:" + e);
+            // 返回对象
+            ResultVO<Object> resultVO = new ResultVO<>();
+            resultVO.setStatus(ResultVO.FAIL);
+            resultVO.setMessage(e.getLocalizedMessage());
+            log.info("errorInfo:" + e.getLocalizedMessage());
+            resultVO.setMessage(e.getMessage());
+            return resultVO;
+        }
+        if (e instanceof FormalException) {
+            ResultVO<Object> ResultVO = new ResultVO<>();
+            ResultVO.setMessage(e.getMessage());
+            return ResultVO;
+        }
+        e.printStackTrace();
+        log.debug("其他未处理异常,统一处理");
+        ResultVO<Object> resultVO = new ResultVO<>();
+        resultVO.setStatus(ResultVO.FAIL);
+        resultVO.setMessage(e.getLocalizedMessage());
+        log.debug("errorInfo1:" + e.getLocalizedMessage());
+        return resultVO;
+    }
+
+    /**
+     * 异常信息
+     *
+     * @param result
+     * @return
+     */
+    private String extractErrorMsg(BindingResult result) {
+        List<FieldError> errors = result.getFieldErrors();
+
+        return errors.stream().map(e -> e.getField() + ":" + e.getDefaultMessage())
+                .reduce((s1, s2) -> s1 + " ; " + s2).orElseGet(() -> "参数非法");
+    }
+
+    @ExceptionHandler(ConstraintViolationException.class)
+    public Map handleConstraintViolationException(ConstraintViolationException cve) {
+        Set<ConstraintViolation<?>> cves = cve.getConstraintViolations();
+        String defaultMessage=null;
+        for (ConstraintViolation<?> constraintViolation : cves) {
+            defaultMessage=constraintViolation.getMessage();
+            logger.info(defaultMessage);
+        }
+        Map map = new HashMap();
+        map.put("errorCode", 500);
+        map.put("errorInfo",defaultMessage);
+        return map;
+
+    }
+
+    @ExceptionHandler(BindException.class)
+    public Map handleConstraintViolationExceptionBingding(BindException cve) {
+        List<ObjectError> allErrors = cve.getAllErrors();
+        String defaultMessage=null;
+        for (ObjectError constraintViolation : allErrors) {
+            defaultMessage = constraintViolation.getDefaultMessage();
+            logger.info(defaultMessage);
+        }
+        Map map = new HashMap();
+        map.put("errorCode", 500);
+        map.put("errorInfo",defaultMessage);
+        return map;
+    }
+}

+ 71 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/common/CommonMethod.java

@@ -0,0 +1,71 @@
+package com.allpayx.atsmpservice.common;
+
+
+import com.allpayx.atsmpservice.exception.CheckException;
+import com.allpayx.atsmpservice.param.RequestParam.RecoredConfirmInfoRequest;
+import org.apache.commons.lang.StringUtils;
+
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+public class CommonMethod {
+    public static void vertifyReceiveDate(RecoredConfirmInfoRequest voucherLog){
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        if(StringUtils.isNotBlank(voucherLog.getReceive_start_date())){
+            String TheDayBeforeStartDate = null;
+            try {
+                TheDayBeforeStartDate = dateFormat.format(addAndSubtractDaysByCalendar(dateFormat.parse(voucherLog.getReceive_start_date()),0));
+            } catch (ParseException e) {
+                e.printStackTrace();
+                throw  new CheckException("日期转换时发生异常");
+            }
+            voucherLog.setReceive_start_date(TheDayBeforeStartDate);
+        }
+        if(StringUtils.isNotBlank(voucherLog.getReceive_end_date() )){
+            String TheDayBeforeEndDate = null;
+            try {
+                TheDayBeforeEndDate = dateFormat.format(addAndSubtractDaysByCalendar(dateFormat.parse(voucherLog.getReceive_end_date()),1));
+            } catch (ParseException e) {
+                e.printStackTrace();
+                throw  new CheckException("日期转换时发生异常");
+            }
+            voucherLog.setReceive_end_date(TheDayBeforeEndDate);
+        }
+    }
+    public static void vertifyRecoredDate(RecoredConfirmInfoRequest voucherLog){
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        if(StringUtils.isNotBlank(voucherLog.getEntry_start_date())){
+            String TheDayBeforeStartDate = null;
+            try {
+                TheDayBeforeStartDate = dateFormat.format(addAndSubtractDaysByCalendar(dateFormat.parse(voucherLog.getEntry_start_date()),0));
+            } catch (ParseException e) {
+                e.printStackTrace();
+                throw  new CheckException("日期转换时发生异常");
+            }
+            voucherLog.setEntry_start_date(TheDayBeforeStartDate);
+        }
+        if(StringUtils.isNotBlank(voucherLog.getEntry_end_date())){
+            String TheDayBeforeEndDate = null;
+            try {
+                TheDayBeforeEndDate = dateFormat.format(addAndSubtractDaysByCalendar(dateFormat.parse(voucherLog.getEntry_end_date()),1));
+            } catch (ParseException e) {
+                e.printStackTrace();
+                throw  new CheckException("日期转换时发生异常");
+            }
+            voucherLog.setEntry_end_date(TheDayBeforeEndDate);
+        }
+    }
+    //对传入的日期进行加减
+    public static Date addAndSubtractDaysByCalendar(Date dateTime/*待处理的日期*/, int n/*加减天数*/){
+        //日期格式
+        SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat dd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Calendar calstart = Calendar.getInstance();
+        calstart.setTime(dateTime);
+        calstart.add(Calendar.DAY_OF_WEEK, n);
+        return calstart.getTime();
+    }
+}

+ 191 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/common/GetExcelInfoUtil.java

@@ -0,0 +1,191 @@
+package com.allpayx.atsmpservice.common;
+
+import com.allpayx.atsmpservice.param.ResponseParam.RecoredConfirmInfoResponse;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+public class GetExcelInfoUtil {
+
+
+
+    /** 读取Excel信息
+     * @Company : AllPay
+     * @author : lei.chen
+     * @CreateDate : 2019/2/28 14:11
+     */
+    public static List<RecoredConfirmInfoResponse> getExcelInfo( MultipartFile mFile) {
+        String fileName = mFile.getOriginalFilename();// 获取文件名
+        List<RecoredConfirmInfoResponse> list = new ArrayList<>();
+        List<String> error=null;
+        try {
+            if (!validateExcel(fileName)) {// 验证文件名是否合格
+                return null;
+            }
+            boolean isExcel2003 = true;// 根据文件名判断文件是2003版本还是2007版本
+            if (isExcel2007(fileName)) {
+                isExcel2003 = false;
+            }
+            list = createExcel(mFile.getInputStream(), isExcel2003,error);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return list;
+    }
+
+    /**
+     *
+     * @Title: validateExcel
+     * @Description: 验证EXCEL文件
+     * @return boolean
+     * @author lei
+     * @date 2019/2/28 14:11
+     */
+    public static boolean validateExcel(String filePath) {
+        if (filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath))) {
+            String errorMsg = "文件名不是excel格式";
+            return false;
+        }
+        return true;
+    }
+
+    // 是否是2003的excel,返回true是2003
+    public static boolean isExcel2003(String filePath) {
+        return filePath.matches("^.+\\.(?i)(xls)$");
+    }
+
+    // 是否是2007的excel,返回true是2007
+    public static boolean isExcel2007(String filePath) {
+        return filePath.matches("^.+\\.(?i)(xlsx)$");
+    }
+
+    /**
+     *
+     * @Title: createExcel
+     * @Description: 根据excel里面的内容读取信息
+     * @return List<T>
+     * @author lei
+     * @date 2019/2/28 14:11
+     */
+    public static List<RecoredConfirmInfoResponse> createExcel(InputStream is, boolean isExcel2003, List<String> error) {
+        List<RecoredConfirmInfoResponse> list = new ArrayList<>();
+        try {
+            Workbook wb = null;
+            if (isExcel2003) {// 当excel是2003时,创建excel2003
+                wb = new HSSFWorkbook(is);
+            } else {// 当excel是2007时,创建excel2007
+                wb = new XSSFWorkbook(is);
+            }
+            list = readExcelValue(wb, error);// 读取Excel里面客户的信息
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return list;
+    }
+
+    /**
+     *
+     * @Title: readExcelValue
+     * @Description: 读取Excel信息
+     * @return List<T>
+     * @author lei
+     * @date 2019/2/28 14:11
+     */
+    public static List<RecoredConfirmInfoResponse> readExcelValue(Workbook wb, List<String> error) {
+        int totalRows =0;
+        int totalCells =0;
+        // 得到第一个shell
+        Sheet sheet = wb.getSheetAt(0);
+        // 得到Excel的行数
+        totalRows = sheet.getPhysicalNumberOfRows();
+        // 得到Excel的列数(前提是有行数)
+        if (totalRows > 1 && sheet.getRow(0) != null) {
+            totalCells = sheet.getRow(1).getPhysicalNumberOfCells();
+        }
+
+        // 循环Excel行数
+        List<RecoredConfirmInfoResponse> list = new ArrayList<>();
+        for (int r = 1; r < totalRows; r++) {
+            Row row = sheet.getRow(r);
+            if (row == null) {
+                continue;
+            }
+            // T model = new T();
+            RecoredConfirmInfoResponse model = new RecoredConfirmInfoResponse();
+            // 循环Excel的列
+            for (int c = 0; c < totalCells; c++) {
+                Cell cell = row.getCell(c);
+                if (null != cell) {
+                    if (c == 0) {
+                        System.out.println(cell.getCellType());
+                        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
+                            model.setCreate_time(cell.getStringCellValue());
+                        }
+                    } else if (c == 1) {
+                        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
+                            model.setDone_time(cell.getStringCellValue());
+                        }
+                    } else if (c == 2) {
+                        if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
+                            model.setBatch_no(new DecimalFormat("0").format(cell.getNumericCellValue()));
+                        }
+                    } else if (c == 3) {
+                        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
+                            model.setUser_id(cell.getStringCellValue());
+                        }
+                    } else if (c == 4) {
+                        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
+                            model.setEcp_code(cell.getStringCellValue());
+                        }
+                    }
+                    else if (c == 5) {
+                        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
+                            model.setMID(cell.getStringCellValue());
+                        }
+                    }
+                    else if (c == 6) {
+                        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
+                            model.setMPID(cell.getStringCellValue());
+                        }
+                    }
+                    else if (c == 7) {
+                        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
+                            model.setVoucher_id(cell.getStringCellValue());
+                        }
+                    }
+                    else if (c == 8) {
+                        if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
+                            model.setAmount(new DecimalFormat("0").format(cell.getNumericCellValue()));
+                        }
+                    }
+                    else if (c == 9) {
+                        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
+                            model.setCurrency(cell.getStringCellValue());
+                        }
+                    }
+                    else if (c == 10) {
+                        if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
+                            model.setProcess_status(cell.getStringCellValue());
+                        }
+                    }
+                }
+            }
+            list.add(model);
+        }
+        return list;
+    }
+}

+ 74 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/config/MasterDataSourceConfiguration.java

@@ -0,0 +1,74 @@
+package com.allpayx.atsmpservice.config;
+
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.tomcat.jdbc.pool.DataSource;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+
+
+/**
+ * Created by lei on 2018/12/22.
+ */
+@Configuration
+@MapperScan(basePackages = "com.allpayx.atsmpservice.mapper.master", sqlSessionTemplateRef  = "masterSqlSessionTemplate")
+public class MasterDataSourceConfiguration {
+
+    @Value("${spring.datasource.master.driver-class-name}")
+    private String driverClassName;
+
+    @Value("${spring.datasource.master.url}")
+    private String url;
+
+    @Value("${spring.datasource.master.username}")
+    private String username;
+
+    @Value("${spring.datasource.master.password}")
+    private String password;
+
+    @Bean(name = "masterDataSource")
+    @Primary
+    public DataSource dataSource() {
+        //DruidDataSource dataSource = new DruidDataSource();
+        DataSource dataSource = new DataSource();
+        dataSource.setDriverClassName(this.driverClassName);
+        dataSource.setUrl(this.url);
+        dataSource.setUsername(this.username);
+        dataSource.setPassword(this.password);
+        return dataSource;
+    }
+
+    @Bean(name = "masterSqlSessionFactory")
+    @Primary
+    public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
+        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
+        bean.setDataSource(dataSource);
+        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/master/**/Mysql_*Mapper.xml"));
+        /*org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
+        configuration.setMapUnderscoreToCamelCase(true);
+        bean.setConfiguration(configuration);*/
+        return bean.getObject();
+    }
+
+    @Bean(name = "masterTransactionManager")
+    @Primary
+    public DataSourceTransactionManager transactionManager(@Qualifier("masterDataSource") DataSource dataSource) {
+        return new DataSourceTransactionManager(dataSource);
+    }
+
+    @Bean(name = "masterSqlSessionTemplate")
+    @Primary
+    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
+        return new SqlSessionTemplate(sqlSessionFactory);
+    }
+
+}
+

+ 68 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/config/SlaverDataSourceConfiguration.java

@@ -0,0 +1,68 @@
+package com.allpayx.atsmpservice.config;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.tomcat.jdbc.pool.DataSource;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+
+/**
+ * Created by lei on 2018/12/22.
+ */
+@Configuration
+@MapperScan(basePackages = "com.allpayx.atsmpservice.mapper.slaver", sqlSessionTemplateRef  = "slaverSqlSessionTemplate")
+public class SlaverDataSourceConfiguration {
+
+    @Value("${spring.datasource.slaver.driver-class-name}")
+    private String driverClassName;
+
+    @Value("${spring.datasource.slaver.url}")
+    private String url;
+
+    @Value("${spring.datasource.slaver.username}")
+    private String username;
+
+    @Value("${spring.datasource.slaver.password}")
+    private String password;
+
+
+    @Bean(name = "slaverDataSource")
+    public DataSource dataSource() {
+        DataSource dataSource = new DataSource();
+        //DruidDataSource dataSource = new DruidDataSource();
+        dataSource.setDriverClassName(this.driverClassName);
+        dataSource.setUrl(this.url);
+        dataSource.setUsername(this.username);
+        dataSource.setPassword(this.password);
+        return dataSource;
+    }
+
+    @Bean(name = "slaverSqlSessionFactory")
+    public SqlSessionFactory sqlSessionFactory(@Qualifier("slaverDataSource") DataSource dataSource) throws Exception {
+        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
+        bean.setDataSource(dataSource);
+        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/slaver/**/Mysql_*Mapper.xml"));
+     /*   org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
+        configuration.setMapUnderscoreToCamelCase(true);
+        bean.setConfiguration(configuration);*/
+        return bean.getObject();
+    }
+
+    @Bean(name = "slaverTransactionManager")
+    public DataSourceTransactionManager transactionManager(@Qualifier("slaverDataSource") DataSource dataSource) {
+        return new DataSourceTransactionManager(dataSource);
+    }
+
+    @Bean(name = "slaverSqlSessionTemplate")
+    public SqlSessionTemplate sqlSessionTemplate(@Qualifier("slaverSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
+        return new SqlSessionTemplate(sqlSessionFactory);
+    }
+
+}
+

+ 78 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/controller/AtsController.java

@@ -0,0 +1,78 @@
+package com.allpayx.atsmpservice.controller;
+
+import com.allpayx.atsmpservice.model.vo.ResultVO;
+import com.allpayx.atsmpservice.param.RequestParam.RecoredConfirmInfoRequest;
+import com.allpayx.atsmpservice.param.ResponseParam.RecoredConfirmInfoResponse;
+import com.allpayx.atsmpservice.service.UserService;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+@Slf4j
+@RestController
+@RequestMapping("ats")
+@CrossOrigin
+@Validated
+public class AtsController {
+    @Autowired
+    private UserService userService;
+
+    /**
+     *  入账信息查询
+     * @param recoredConfirmInfo
+     * @return
+     */
+    @RequestMapping("select_recored_confirm_info")
+    public ResultVO selectRecordConfirmInfo(@Validated RecoredConfirmInfoRequest recoredConfirmInfo) {
+        PageInfo<RecoredConfirmInfoResponse> recoredConfirmInfoResponse = userService.selectRecordConfirmInfo(recoredConfirmInfo);
+        ResultVO resultVO = new ResultVO();
+        resultVO.setMessage("入账信息查询成功");
+        resultVO.setData(recoredConfirmInfoResponse);
+        return resultVO;
+    }
+
+    /**
+     * 导出入账信息报表
+     * @param recoredConfirmInfo
+     * @return
+     */
+    @RequestMapping("get_recored_export_report")
+    public ResultVO getRecoredExportReport(RecoredConfirmInfoRequest recoredConfirmInfo) {
+        List<RecoredConfirmInfoResponse> recoredConfirmInfoResponse=userService.getRecoredExportReport(recoredConfirmInfo);
+        ResultVO resultVO = new ResultVO();
+        resultVO.setMessage("导出入账信息报表成功");
+        resultVO.setData(recoredConfirmInfoResponse);
+        return resultVO;
+    }
+
+    /**
+     * 导入入账信息Excel表格文件
+     * @param file
+     * @return
+     */
+    @RequestMapping(value = "insert_recored_import_report" ,method = RequestMethod.POST)
+    public ResultVO insertRecoredImportReport(@RequestParam(value = "file") MultipartFile file) {
+        userService.insertRecoredImportReport(file);
+        ResultVO resultVO = new ResultVO();
+        resultVO.setMessage("导入入账信息报表成功");
+        return resultVO;
+    }
+
+    /**
+     * 入账确认
+     * @param recoredConfirmInfo
+     * @return
+     */
+    @RequestMapping(value = "update_recored_confirm_status" )
+    public ResultVO updateRecoredConfirmStatus(RecoredConfirmInfoRequest recoredConfirmInfo) {
+        userService.updateRecoredConfirmStatus(recoredConfirmInfo);
+        ResultVO resultVO = new ResultVO();
+        resultVO.setMessage("入账确认操作成功");
+        return resultVO;
+    }
+}

+ 26 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/exception/CheckException.java

@@ -0,0 +1,26 @@
+package com.allpayx.atsmpservice.exception;
+
+/**
+ * Created by zhang on 2018/12/21.
+ */
+public class CheckException extends RuntimeException {
+    private static final long serialVersionUID = 1L;
+    public CheckException(){}
+
+    public CheckException(String message){
+        super(message);
+    }
+    public CheckException(Throwable cause) {
+        super(cause);
+    }
+
+    public CheckException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public CheckException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+
+}
+

+ 27 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/exception/FormalException.java

@@ -0,0 +1,27 @@
+package com.allpayx.atsmpservice.exception;
+/**
+ * @Company : AllPay
+ * @author : lei.chen
+ * @CreateDate : 2019/2/26 17:51
+ */
+public class FormalException  extends RuntimeException {
+    private static final long serialVersionUID = 1L;
+    public FormalException(){}
+
+    public FormalException(String message){
+        super(message);
+    }
+    public FormalException(Throwable cause) {
+        super(cause);
+    }
+
+    public FormalException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public FormalException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+
+
+}

+ 14 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/mapper/master/UserMapper.java

@@ -0,0 +1,14 @@
+package com.allpayx.atsmpservice.mapper.master;
+
+
+import com.allpayx.atsmpservice.param.RequestParam.RecoredConfirmInfoRequest;
+import com.allpayx.atsmpservice.param.ResponseParam.RecoredConfirmInfoResponse;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public interface UserMapper {
+
+}

+ 55 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/mapper/slaver/AtsTxMapper.java

@@ -0,0 +1,55 @@
+package com.allpayx.atsmpservice.mapper.slaver;
+
+import com.allpayx.atsmpservice.param.RequestParam.RecoredConfirmInfoRequest;
+import com.allpayx.atsmpservice.param.ResponseParam.RecoredConfirmInfoResponse;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+import org.apache.ibatis.annotations.UpdateProvider;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public interface AtsTxMapper {
+
+    @Update("update VOUCHER_LOG set process_status =#{process_status},voucher_status=#{voucher_status} where create_time>=#{receive_start_date} and " +
+            "create_time <  #{receive_end_date} and ecp_code=#{ecp_code} and currency =#{currency}")
+    void updateRecoredConfirmStatus(RecoredConfirmInfoRequest recoredConfirmInfo);
+
+    @Select({"<script>",
+            "select * from VOUCHER_LOG",
+            "WHERE 1=1" ,
+            "<if test='receive_start_date!=null  &amp;&amp; receive_start_date.length()>0'>",
+            "AND create_time >= #{receive_start_date}",
+            "</if>",
+            "<if test='receive_end_date!=null  &amp;&amp; receive_end_date.length()>0'>",
+            "AND create_time &lt;=  #{receive_end_date}",
+            "</if>",
+            "<if test='entry_start_date!=null  &amp;&amp; entry_start_date.length()>0'>",
+            "AND DONE_TIME >= #{entry_start_date}",
+            "</if>",
+            "<if test='entry_end_date!=null   &amp;&amp; entry_end_date.length()>0'>",
+            "AND DONE_TIME &lt;=  #{entry_end_date}",
+            "</if>",
+            "<if test='ecp_code!=null &amp;&amp; ecp_code.length()>0'>",
+            "AND ECP_CODE = #{ecp_code}",
+            "</if>",
+            "<if test='currency!=null &amp;&amp; currency.length()>0'>",
+            "AND CURRENCY = #{currency}",
+            "</if>",
+            "<if test='process_status!=null &amp;&amp; process_status.length()>0'>",
+            "AND PROCESS_STATUS = #{process_status}",
+            "</if>",
+            "<if test='voucher_id!=null &amp;&amp; voucher_id.length()>0'>",
+            "AND voucher_id = #{voucher_id}",
+            "</if>",
+            "<if test='user_id!=null &amp;&amp; user_id.length()>0'>",
+            "AND user_id = #{user_id}",
+            "</if> order by create_time desc",
+            "</script>"})
+    List<RecoredConfirmInfoResponse> selectRecordConfirmInfo(RecoredConfirmInfoRequest recoredConfirmInfo);
+    @Insert("Insert into VOUCHER_LOG(voucher_id,voucher_type,process_status,voucher_status,currency,amount,done_time,user_id,ecp_code,create_time) " +
+            "VALUES(#{voucher_id},#{voucher_type},#{process_status},#{voucher_status},#{currency},#{amount},#{done_time},#{user_id},#{ecp_code},#{create_time})")
+    void insertRecoredImportReport(RecoredConfirmInfoResponse recoredConfirmInfoResponse);
+}

+ 14 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/message/CommonMessage.java

@@ -0,0 +1,14 @@
+package com.allpayx.atsmpservice.message;
+
+public class CommonMessage {
+    //voucher_type 类型
+    public static  final  String voucher_type_recored="2" ;//voucher_type 类型表示入账
+    //process_status 类型
+    public static  final String process_status_sucess="1";//process_status 类型表示成功
+    public static  final String process_status_pending="2";//process_status 类型表示待处理
+    public static  final String process_status_failed="3";//process_status 类型表示失败
+    //voucher_status 类型
+    public static  final String voucher_status_pending="0";//voucher_status 类型表示待处理
+    public static  final String voucher_status_sucess="1";//voucher_status 类型表示成功
+    public static  final String voucher_status_failed="3";//voucher_status 类型表示失败
+}

+ 66 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/model/vo/ResultVO.java

@@ -0,0 +1,66 @@
+package com.allpayx.atsmpservice.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Company : AllPay
+ * @author : lei.chen
+ * @CreateDate : 2019/2/26 17:17
+ */
+@Data
+public class ResultVO<T> implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	public T getData() {
+		return data;
+	}
+
+	public void setData(T data) {
+		this.data = data;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public static final String SUCCESS = "success";
+
+	public static final String FAIL = "fail";
+
+	private String status = SUCCESS;
+
+	private String message = "OK";
+
+	private T data;
+
+	public ResultVO() {
+		super();
+	}
+
+	public ResultVO(T data) {
+		super();
+		this.data = data;
+	}
+
+	public ResultVO(Throwable e) {
+		super();
+		this.message = e.toString();
+		this.status = FAIL;
+	}
+
+}

+ 40 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/param/RequestParam/RecoredConfirmInfoRequest.java

@@ -0,0 +1,40 @@
+package com.allpayx.atsmpservice.param.RequestParam;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Company : AllPay
+ * @author : lei.chen
+ * @CreateDate : 2019/2/26 16:47 
+ */
+@Data
+@JsonIgnoreProperties(value = {"voucher_type"})
+public class RecoredConfirmInfoRequest {
+
+    private String receive_start_date;
+
+    private String receive_end_date;
+
+    private String entry_start_date;
+
+    private String entry_end_date;
+
+    private String ecp_code;
+
+    private String currency;
+
+    private String process_status;
+
+    private String voucher_id;
+
+    private String user_id;
+    @NotNull(message = "当前页数不可为空")
+    private Integer page_num;
+    @NotNull(message = "每页显示数据条数不可为空")
+    private Integer page_size;
+
+    private String voucher_status;
+}

+ 37 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/param/ResponseParam/RecoredConfirmInfoResponse.java

@@ -0,0 +1,37 @@
+package com.allpayx.atsmpservice.param.ResponseParam;
+
+import lombok.Data;
+
+@Data
+public class RecoredConfirmInfoResponse {
+
+    private String create_time;
+
+    private String done_time;
+
+    private String batch_no;
+
+    private String user_id;
+
+    private String ecp_code;
+
+    private String MID;
+
+    private String MPID;
+
+    private String voucher_id;
+
+    private String amount;
+
+    private String currency;
+
+    private String process_status;
+
+    //------------------
+
+    private String voucher_type;
+
+    private String voucher_status;
+
+
+}

+ 26 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/service/UserService.java

@@ -0,0 +1,26 @@
+package com.allpayx.atsmpservice.service;
+
+
+import com.allpayx.atsmpservice.param.RequestParam.RecoredConfirmInfoRequest;
+import com.allpayx.atsmpservice.param.ResponseParam.RecoredConfirmInfoResponse;
+import com.github.pagehelper.PageInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * @Company : AllPay
+ * @author : lei.chen
+ * @CreateDate : 2019/2/26 17:26
+ */
+public interface UserService {
+  
+
+    PageInfo<RecoredConfirmInfoResponse> selectRecordConfirmInfo(RecoredConfirmInfoRequest recoredConfirmInfo);
+
+    List<RecoredConfirmInfoResponse> getRecoredExportReport(RecoredConfirmInfoRequest recoredConfirmInfo);
+
+    void insertRecoredImportReport(MultipartFile file);
+
+    void updateRecoredConfirmStatus(RecoredConfirmInfoRequest recoredConfirmInfo);
+}

+ 127 - 0
ats-mp-service/src/main/java/com/allpayx/atsmpservice/service/impl/UserServiceImpl.java

@@ -0,0 +1,127 @@
+package com.allpayx.atsmpservice.service.impl;
+
+import com.allpayx.atsmpservice.common.CommonMethod;
+import com.allpayx.atsmpservice.common.GetExcelInfoUtil;
+import com.allpayx.atsmpservice.exception.CheckException;
+import com.allpayx.atsmpservice.exception.FormalException;
+import com.allpayx.atsmpservice.mapper.master.UserMapper;
+import com.allpayx.atsmpservice.mapper.slaver.AtsTxMapper;
+import com.allpayx.atsmpservice.message.CommonMessage;
+import com.allpayx.atsmpservice.param.RequestParam.RecoredConfirmInfoRequest;
+import com.allpayx.atsmpservice.param.ResponseParam.RecoredConfirmInfoResponse;
+import com.allpayx.atsmpservice.service.UserService;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import java.util.List;
+
+
+/**
+ * @Company : AllPay
+ * @author : lei.chen
+ * @CreateDate : 2019/2/26 16:58
+ */
+@Service
+public class UserServiceImpl implements UserService {
+   @Autowired
+   private UserMapper userMapper;
+   @Autowired
+   private AtsTxMapper atsTxMapper;
+
+    /**
+     *入账信息查询
+     */
+    @Override
+    public PageInfo<RecoredConfirmInfoResponse> selectRecordConfirmInfo(RecoredConfirmInfoRequest recoredConfirmInfo) {
+        PageHelper.startPage(recoredConfirmInfo.getPage_num(),recoredConfirmInfo.getPage_size());
+        List<RecoredConfirmInfoResponse> recoredConfirmInfoResponse = null;
+        try {
+            recoredConfirmInfoResponse = atsTxMapper.selectRecordConfirmInfo(recoredConfirmInfo);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new CheckException("查询入账信息时发生异常\r errorInfo:"+e.getLocalizedMessage());
+        }
+        if(recoredConfirmInfoResponse.size()==0){
+            throw new FormalException("入账信息为空");
+        }
+        for(int i =0;i< recoredConfirmInfoResponse.size();i++){
+            if(recoredConfirmInfoResponse.get(i).getDone_time()!=null){
+            String done_time = recoredConfirmInfoResponse.get(i).getDone_time().substring(0,recoredConfirmInfoResponse.get(i).getDone_time().indexOf("."));
+            recoredConfirmInfoResponse.get(i).setDone_time(done_time);}
+            String create_time = recoredConfirmInfoResponse.get(i).getCreate_time().substring(0,recoredConfirmInfoResponse.get(i).getCreate_time().indexOf("."));
+            recoredConfirmInfoResponse.get(i).setCreate_time(create_time);
+        }
+        PageInfo<RecoredConfirmInfoResponse> PageInfo = new PageInfo<>(recoredConfirmInfoResponse);
+        return PageInfo;
+    }
+
+    @Override
+    public List<RecoredConfirmInfoResponse> getRecoredExportReport(RecoredConfirmInfoRequest recoredConfirmInfo) {
+        List<RecoredConfirmInfoResponse> recoredConfirmInfoResponse = null;
+        try {
+            recoredConfirmInfoResponse = atsTxMapper.selectRecordConfirmInfo(recoredConfirmInfo);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new CheckException("查询入账信息时发生异常\r errorInfo:"+e.getLocalizedMessage());
+        }
+        if(recoredConfirmInfoResponse.size()==0){
+            throw new FormalException("入账信息为空");
+        }
+        for(int i =0;i< recoredConfirmInfoResponse.size();i++){
+            String create_time = recoredConfirmInfoResponse.get(i).getCreate_time().substring(0,recoredConfirmInfoResponse.get(i).getCreate_time().indexOf("."));
+            recoredConfirmInfoResponse.get(i).setCreate_time(create_time);
+            if(recoredConfirmInfoResponse.get(i).getDone_time()!=null){
+                String done_time = recoredConfirmInfoResponse.get(i).getDone_time().substring(0,recoredConfirmInfoResponse.get(i).getDone_time().indexOf("."));
+                recoredConfirmInfoResponse.get(i).setDone_time(done_time);}
+        }
+        return recoredConfirmInfoResponse;
+    }
+
+    @Override
+    public void insertRecoredImportReport(MultipartFile file) {
+        //根据传入的入账信息Excel表格文件,解析出需要插入的集合数据
+        List<RecoredConfirmInfoResponse> excelInfo = GetExcelInfoUtil.getExcelInfo(file);
+        if(excelInfo.size()==0){
+            throw new FormalException("Excel表格文件信息为空");
+        }
+        for(int i=0;i<excelInfo.size();i++){
+            try {
+                RecoredConfirmInfoResponse recoredConfirmInfoResponse = excelInfo.get(i);
+                if(recoredConfirmInfoResponse.getProcess_status().equals("入账成功")){
+                    recoredConfirmInfoResponse.setProcess_status(CommonMessage.process_status_sucess);
+                    recoredConfirmInfoResponse.setVoucher_status(CommonMessage.voucher_status_sucess);
+                }
+                if(recoredConfirmInfoResponse.getProcess_status().equals("入账失败")){
+                    recoredConfirmInfoResponse.setProcess_status(CommonMessage.process_status_failed);
+                    recoredConfirmInfoResponse.setVoucher_status(CommonMessage.voucher_status_failed);
+                }
+                if(recoredConfirmInfoResponse.getProcess_status().equals("待处理")){
+                    recoredConfirmInfoResponse.setProcess_status(CommonMessage.process_status_pending);
+                    recoredConfirmInfoResponse.setVoucher_status(CommonMessage.voucher_status_pending);
+                }
+                recoredConfirmInfoResponse.setVoucher_type(CommonMessage.voucher_type_recored);
+                atsTxMapper.insertRecoredImportReport(recoredConfirmInfoResponse);
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new CheckException("插入Excel表格文件信息时发生异常\r errorInfo:"+e.getLocalizedMessage());
+            }
+        }
+    }
+
+    @Override
+    public void updateRecoredConfirmStatus(RecoredConfirmInfoRequest recoredConfirmInfo) {
+        if(recoredConfirmInfo==null){
+            throw new CheckException("入账确认条件为空");
+        }
+        recoredConfirmInfo.setProcess_status(CommonMessage.process_status_sucess);
+        recoredConfirmInfo.setVoucher_status(CommonMessage.voucher_status_sucess);
+        try {
+            atsTxMapper.updateRecoredConfirmStatus(recoredConfirmInfo);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new CheckException("更新入账状态时发生异常\r errorInfo:"+e.getLocalizedMessage());
+        }
+    }
+}

+ 29 - 0
ats-mp-service/src/main/resources/application-local.yml

@@ -0,0 +1,29 @@
+spring:
+  datasource:
+    test-while-idle: true
+    test-on-borrow: true
+    validation-query: SELECT 1 FROM DUAL
+    time-between-eviction-runs-millis: 300000
+    min-evictable-idle-time-millis: 1800000
+    master:
+      driver-class-name: com.mysql.jdbc.Driver
+      url: jdbc:mysql://192.168.50.209:3306/USERDB?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&autoReconnect=true
+      username: root
+      password: root
+    slaver:
+      driver-class-name: com.mysql.jdbc.Driver
+      url: jdbc:mysql://192.168.50.209:3306/ATSTXDB?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&autoReconnect=true
+      username: root
+      password: root
+server:
+  port: 80
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/webapp/logs/ecagw/log
+  level:
+    root: info
+pagehelper:
+  helperDialect: mysql
+  reasonable: true
+  supportMethodsArguments: true
+  params: count=countSql

+ 3 - 0
ats-mp-service/src/main/resources/application.yml

@@ -0,0 +1,3 @@
+spring:
+  profiles:
+    active: local

+ 217 - 0
ats-mp-service/src/main/resources/logback-spring-test.xml

@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true">
+    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
+    <property name="LOG_NAME" value="/home"></property>
+    <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <!--<pattern>%d %p (%file:%line\)- %m%n</pattern>-->
+            <!--格式化输出:%d:表示日期    %thread:表示线程名     %-5level:级别从左显示5个字符宽度  %msg:日志消息    %n:是换行符-->
+            <pattern>1-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n</pattern>
+            <charset>GBK</charset>
+        </encoder>
+    </appender>
+    <!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
+    <contextName>RestAPI</contextName>
+    <property name="LOG_PATH" value=".logs"/>
+    <!--设置系统日志目录-->
+    <property name="APPDIR" value="app"/>
+    <!--
+          说明:
+          1、日志级别及文件
+              日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中
+              例如:error级别记录到log_error_xxx.log或log_error.log(该文件为当前记录的日志文件),而log_error_xxx.log为归档日志,
+              日志文件按日期记录,同一天内,若日志文件大小等于或大于2M,则按0、1、2...顺序分别命名
+              例如log-level-2013-12-21.0.log
+              其它级别的日志也是如此。
+          2、文件路径
+              若开发、测试用,在Eclipse中运行项目,则到Eclipse的安装路径查找logs文件夹,以相对路径../logs。
+              若部署到Tomcat下,则在Tomcat下的logs文件中
+          3、Appender
+              FILEERROR对应error级别,文件名以log-error-xxx.log形式命名
+              FILEWARN对应warn级别,文件名以log-warn-xxx.log形式命名
+              FILEINFO对应info级别,文件名以log-info-xxx.log形式命名
+              FILEDEBUG对应debug级别,文件名以log-debug-xxx.log形式命名
+              CONSOLE将日志信息输出到控制上,为方便开发测试使用
+       -->
+    <!-- 日志记录器,日期滚动记录 -->
+    <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${LOG_PATH}/${APPDIR}/log_error.log</file>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
+            而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
+            <fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
+            命名日志文件,例如log-error-2013-12-21.0.log -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>15MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <!-- 追加方式记录日志 -->
+        <append>true</append>
+        <!-- 日志文件的格式 -->
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>error</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 日志记录器,日期滚动记录 -->
+    <appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
+            而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
+            <fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
+            命名日志文件,例如log-error-2013-12-21.0.log -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>15MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <!-- 追加方式记录日志 -->
+        <append>true</append>
+        <!-- 日志文件的格式 -->
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 日志记录器,日期滚动记录 -->
+    <appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${LOG_PATH}/${APPDIR}/log_info.log</file>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
+            而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
+            <fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
+            命名日志文件,例如log-error-2013-12-21.0.log -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>15MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <!-- 追加方式记录日志 -->
+        <append>true</append>
+        <!-- 日志文件的格式 -->
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--日志异步到数据库  -->
+    <!--<appender name="DBAPPENDER" class="ch.qos.logback.classic.db.DBAppender">-->
+    <!--<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">-->
+    <!--<dataSource class="com.zaxxer.hikari.HikariDataSource">-->
+    <!--<driverClassName>com.mysql.jdbc.Driver</driverClassName>-->
+    <!--<jdbcUrl>jdbc:mysql://localhost:3306/albedo-new?useUnicode=true&characterEncoding=utf8&useSSL=false</jdbcUrl>-->
+    <!--<username>root</username>-->
+    <!--<password>123456</password>-->
+    <!--<poolName>HikariPool-logback</poolName>-->
+    <!--</dataSource>-->
+    <!--</connectionSource>-->
+    <!--<!– 此日志文件只记录info级别的 –>-->
+    <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
+    <!--<level>warn</level>-->
+    <!--<onMatch>ACCEPT</onMatch>-->
+    <!--<onMismatch>DENY</onMismatch>-->
+    <!--</filter>-->
+    <!--<!– 此日志文件只记录info级别的 –>-->
+    <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
+    <!--<level>error</level>-->
+    <!--<onMatch>ACCEPT</onMatch>-->
+    <!--<onMismatch>DENY</onMismatch>-->
+    <!--</filter>-->
+    <!--</appender>-->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <!--<charset>GBK</charset>-->
+        </encoder>
+    </appender>
+    <logger name="com.minlia" level="DEBUG"/>
+    <logger name="org.springframework.data.mybatis" level="DEBUG"/>
+    <logger name="org.springframework.aop.aspectj" level="ERROR"/>
+    <logger name="javax.activation" level="WARN"/>
+    <logger name="javax.mail" level="WARN"/>
+    <logger name="javax.xml.bind" level="WARN"/>
+    <logger name="ch.qos.logback" level="INFO"/>
+    <logger name="com.codahale.metrics" level="WARN"/>
+    <logger name="com.ryantenney" level="WARN"/>
+    <logger name="com.sun" level="WARN"/>
+    <logger name="com.zaxxer" level="WARN"/>
+    <logger name="io.undertow" level="WARN"/>
+    <logger name="net.sf.ehcache" level="WARN"/>
+    <logger name="org.apache" level="WARN"/>
+    <logger name="org.apache.catalina.startup.DigesterFactory" level="OFF"/>
+    <logger name="org.bson" level="WARN"/>
+    <logger name="org.hibernate.validator" level="WARN"/>
+    <logger name="org.hibernate" level="WARN"/>
+    <logger name="org.hibernate.ejb.HibernatePersistence" level="OFF"/>
+    <logger name="org.springframework.web" level="INFO"/>
+    <logger name="org.springframework.security" level="WARN"/>
+    <logger name="org.springframework.cache" level="WARN"/>
+    <logger name="org.thymeleaf" level="WARN"/>
+    <logger name="org.xnio" level="WARN"/>
+    <logger name="springfox" level="WARN"/>
+    <logger name="sun.rmi" level="WARN"/>
+    <logger name="liquibase" level="WARN"/>
+    <logger name="sun.rmi.transport" level="WARN"/>
+
+    <logger name="jdbc.connection" level="ERROR"/>
+    <logger name="jdbc.resultset" level="ERROR"/>
+    <logger name="jdbc.resultsettable" level="INFO"/>
+    <logger name="jdbc.audit" level="ERROR"/>
+    <logger name="jdbc.sqltiming" level="ERROR"/>
+    <logger name="jdbc.sqlonly" level="INFO"/>
+
+    <!--<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">-->
+    <!--<resetJUL>true</resetJUL>-->
+    <!--</contextListener>-->
+
+    <springProfile name="production">
+        <root level="DEBUG">
+            <!--<appender-ref ref="FILEERROR"/>-->
+            <!--<appender-ref ref="FILEWARN"/>-->
+            <!--<appender-ref ref="FILEINFO"/>-->
+            <!--<appender-ref ref="DBAPPENDER"/>-->
+            <appender-ref ref="STDOUT"/>
+        </root>
+    </springProfile>
+
+
+    <springProfile name="dev">
+        <root level="DEBUG">
+            <!--<appender-ref ref="FILEERROR"/>-->
+            <!--<appender-ref ref="FILEWARN"/>-->
+            <!--<appender-ref ref="FILEINFO"/>-->
+            <!--<appender-ref ref="DBAPPENDER"/>-->
+            <appender-ref ref="CONSOLE"/>
+        </root>
+    </springProfile>
+
+</configuration>

+ 60 - 0
ats-mp-service/src/main/resources/logback-spring.xml

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
+    <logger name="org.springframework.web" level="info"/>
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_PATH}/clear_info-%d{yyyy-MM-dd}.log.%i</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>15MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>150</maxHistory>
+        </rollingPolicy>
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
+            </Pattern>
+        </layout>
+    </appender>
+
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>ERROR</level>
+        </filter>
+        <!--默认名-->
+        <!--<File>${LOG_PATH}/error.log</File>-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_PATH}/clear_error-%d{yyyy-MM-dd}.log.%i
+            </fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>500MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>2</maxHistory>
+        </rollingPolicy>
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
+            </Pattern>
+        </layout>
+    </appender>
+
+    <!--开发环境:打印控制台-->
+    <springProfile name="local">
+        <root level="info">
+        </root>
+    </springProfile>
+
+    <!--生产环境:输出文件-->
+    <springProfile name="dev,pro,test">
+        <root level="info">
+            <appender-ref ref="INFO_FILE" />
+            <appender-ref ref="ERROR_FILE" />
+        </root>
+    </springProfile>
+
+
+</configuration>

+ 29 - 0
ats-mp-service/target/classes/application-local.yml

@@ -0,0 +1,29 @@
+spring:
+  datasource:
+    test-while-idle: true
+    test-on-borrow: true
+    validation-query: SELECT 1 FROM DUAL
+    time-between-eviction-runs-millis: 300000
+    min-evictable-idle-time-millis: 1800000
+    master:
+      driver-class-name: com.mysql.jdbc.Driver
+      url: jdbc:mysql://192.168.50.209:3306/USERDB?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&autoReconnect=true
+      username: root
+      password: root
+    slaver:
+      driver-class-name: com.mysql.jdbc.Driver
+      url: jdbc:mysql://192.168.50.209:3306/ATSTXDB?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&autoReconnect=true
+      username: root
+      password: root
+server:
+  port: 80
+logging:
+  config: classpath:logback-spring.xml
+  path: /home/webapp/logs/ecagw/log
+  level:
+    root: info
+pagehelper:
+  helperDialect: mysql
+  reasonable: true
+  supportMethodsArguments: true
+  params: count=countSql

+ 3 - 0
ats-mp-service/target/classes/application.yml

@@ -0,0 +1,3 @@
+spring:
+  profiles:
+    active: local

BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/AtsMpServiceApplication.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/aop/RestExceptionHandler.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/common/CommonMethod.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/common/GetExcelInfoUtil.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/config/MasterDataSourceConfiguration.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/config/SlaverDataSourceConfiguration.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/controller/AtsController.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/exception/CheckException.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/exception/FormalException.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/mapper/master/UserMapper.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/mapper/slaver/AtsTxMapper.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/message/CommonMessage.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/model/vo/ResultVO.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/param/RequestParam/RecoredConfirmInfoRequest.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/param/ResponseParam/RecoredConfirmInfoResponse.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/service/UserService.class


BIN
ats-mp-service/target/classes/com/allpayx/atsmpservice/service/impl/UserServiceImpl.class


+ 217 - 0
ats-mp-service/target/classes/logback-spring-test.xml

@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true">
+    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
+    <property name="LOG_NAME" value="/home"></property>
+    <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <!--<pattern>%d %p (%file:%line\)- %m%n</pattern>-->
+            <!--格式化输出:%d:表示日期    %thread:表示线程名     %-5level:级别从左显示5个字符宽度  %msg:日志消息    %n:是换行符-->
+            <pattern>1-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n</pattern>
+            <charset>GBK</charset>
+        </encoder>
+    </appender>
+    <!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
+    <contextName>RestAPI</contextName>
+    <property name="LOG_PATH" value=".logs"/>
+    <!--设置系统日志目录-->
+    <property name="APPDIR" value="app"/>
+    <!--
+          说明:
+          1、日志级别及文件
+              日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中
+              例如:error级别记录到log_error_xxx.log或log_error.log(该文件为当前记录的日志文件),而log_error_xxx.log为归档日志,
+              日志文件按日期记录,同一天内,若日志文件大小等于或大于2M,则按0、1、2...顺序分别命名
+              例如log-level-2013-12-21.0.log
+              其它级别的日志也是如此。
+          2、文件路径
+              若开发、测试用,在Eclipse中运行项目,则到Eclipse的安装路径查找logs文件夹,以相对路径../logs。
+              若部署到Tomcat下,则在Tomcat下的logs文件中
+          3、Appender
+              FILEERROR对应error级别,文件名以log-error-xxx.log形式命名
+              FILEWARN对应warn级别,文件名以log-warn-xxx.log形式命名
+              FILEINFO对应info级别,文件名以log-info-xxx.log形式命名
+              FILEDEBUG对应debug级别,文件名以log-debug-xxx.log形式命名
+              CONSOLE将日志信息输出到控制上,为方便开发测试使用
+       -->
+    <!-- 日志记录器,日期滚动记录 -->
+    <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${LOG_PATH}/${APPDIR}/log_error.log</file>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
+            而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
+            <fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
+            命名日志文件,例如log-error-2013-12-21.0.log -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>15MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <!-- 追加方式记录日志 -->
+        <append>true</append>
+        <!-- 日志文件的格式 -->
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>error</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 日志记录器,日期滚动记录 -->
+    <appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
+            而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
+            <fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
+            命名日志文件,例如log-error-2013-12-21.0.log -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>15MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <!-- 追加方式记录日志 -->
+        <append>true</append>
+        <!-- 日志文件的格式 -->
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 日志记录器,日期滚动记录 -->
+    <appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${LOG_PATH}/${APPDIR}/log_info.log</file>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
+            而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
+            <fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,
+            命名日志文件,例如log-error-2013-12-21.0.log -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>15MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <!-- 追加方式记录日志 -->
+        <append>true</append>
+        <!-- 日志文件的格式 -->
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <charset>utf-8</charset>
+        </encoder>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--日志异步到数据库  -->
+    <!--<appender name="DBAPPENDER" class="ch.qos.logback.classic.db.DBAppender">-->
+    <!--<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">-->
+    <!--<dataSource class="com.zaxxer.hikari.HikariDataSource">-->
+    <!--<driverClassName>com.mysql.jdbc.Driver</driverClassName>-->
+    <!--<jdbcUrl>jdbc:mysql://localhost:3306/albedo-new?useUnicode=true&characterEncoding=utf8&useSSL=false</jdbcUrl>-->
+    <!--<username>root</username>-->
+    <!--<password>123456</password>-->
+    <!--<poolName>HikariPool-logback</poolName>-->
+    <!--</dataSource>-->
+    <!--</connectionSource>-->
+    <!--<!– 此日志文件只记录info级别的 –>-->
+    <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
+    <!--<level>warn</level>-->
+    <!--<onMatch>ACCEPT</onMatch>-->
+    <!--<onMismatch>DENY</onMismatch>-->
+    <!--</filter>-->
+    <!--<!– 此日志文件只记录info级别的 –>-->
+    <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
+    <!--<level>error</level>-->
+    <!--<onMatch>ACCEPT</onMatch>-->
+    <!--<onMismatch>DENY</onMismatch>-->
+    <!--</filter>-->
+    <!--</appender>-->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
+            <!--<charset>GBK</charset>-->
+        </encoder>
+    </appender>
+    <logger name="com.minlia" level="DEBUG"/>
+    <logger name="org.springframework.data.mybatis" level="DEBUG"/>
+    <logger name="org.springframework.aop.aspectj" level="ERROR"/>
+    <logger name="javax.activation" level="WARN"/>
+    <logger name="javax.mail" level="WARN"/>
+    <logger name="javax.xml.bind" level="WARN"/>
+    <logger name="ch.qos.logback" level="INFO"/>
+    <logger name="com.codahale.metrics" level="WARN"/>
+    <logger name="com.ryantenney" level="WARN"/>
+    <logger name="com.sun" level="WARN"/>
+    <logger name="com.zaxxer" level="WARN"/>
+    <logger name="io.undertow" level="WARN"/>
+    <logger name="net.sf.ehcache" level="WARN"/>
+    <logger name="org.apache" level="WARN"/>
+    <logger name="org.apache.catalina.startup.DigesterFactory" level="OFF"/>
+    <logger name="org.bson" level="WARN"/>
+    <logger name="org.hibernate.validator" level="WARN"/>
+    <logger name="org.hibernate" level="WARN"/>
+    <logger name="org.hibernate.ejb.HibernatePersistence" level="OFF"/>
+    <logger name="org.springframework.web" level="INFO"/>
+    <logger name="org.springframework.security" level="WARN"/>
+    <logger name="org.springframework.cache" level="WARN"/>
+    <logger name="org.thymeleaf" level="WARN"/>
+    <logger name="org.xnio" level="WARN"/>
+    <logger name="springfox" level="WARN"/>
+    <logger name="sun.rmi" level="WARN"/>
+    <logger name="liquibase" level="WARN"/>
+    <logger name="sun.rmi.transport" level="WARN"/>
+
+    <logger name="jdbc.connection" level="ERROR"/>
+    <logger name="jdbc.resultset" level="ERROR"/>
+    <logger name="jdbc.resultsettable" level="INFO"/>
+    <logger name="jdbc.audit" level="ERROR"/>
+    <logger name="jdbc.sqltiming" level="ERROR"/>
+    <logger name="jdbc.sqlonly" level="INFO"/>
+
+    <!--<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">-->
+    <!--<resetJUL>true</resetJUL>-->
+    <!--</contextListener>-->
+
+    <springProfile name="production">
+        <root level="DEBUG">
+            <!--<appender-ref ref="FILEERROR"/>-->
+            <!--<appender-ref ref="FILEWARN"/>-->
+            <!--<appender-ref ref="FILEINFO"/>-->
+            <!--<appender-ref ref="DBAPPENDER"/>-->
+            <appender-ref ref="STDOUT"/>
+        </root>
+    </springProfile>
+
+
+    <springProfile name="dev">
+        <root level="DEBUG">
+            <!--<appender-ref ref="FILEERROR"/>-->
+            <!--<appender-ref ref="FILEWARN"/>-->
+            <!--<appender-ref ref="FILEINFO"/>-->
+            <!--<appender-ref ref="DBAPPENDER"/>-->
+            <appender-ref ref="CONSOLE"/>
+        </root>
+    </springProfile>
+
+</configuration>

+ 60 - 0
ats-mp-service/target/classes/logback-spring.xml

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <include resource="org/springframework/boot/logging/logback/base.xml" />
+    <logger name="org.springframework.web" level="info"/>
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_PATH}/clear_info-%d{yyyy-MM-dd}.log.%i</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>15MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>150</maxHistory>
+        </rollingPolicy>
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
+            </Pattern>
+        </layout>
+    </appender>
+
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>ERROR</level>
+        </filter>
+        <!--默认名-->
+        <!--<File>${LOG_PATH}/error.log</File>-->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_PATH}/clear_error-%d{yyyy-MM-dd}.log.%i
+            </fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>500MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>2</maxHistory>
+        </rollingPolicy>
+        <layout class="ch.qos.logback.classic.PatternLayout">
+            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
+            </Pattern>
+        </layout>
+    </appender>
+
+    <!--开发环境:打印控制台-->
+    <springProfile name="local">
+        <root level="info">
+        </root>
+    </springProfile>
+
+    <!--生产环境:输出文件-->
+    <springProfile name="dev,pro,test">
+        <root level="info">
+            <appender-ref ref="INFO_FILE" />
+            <appender-ref ref="ERROR_FILE" />
+        </root>
+    </springProfile>
+
+
+</configuration>