Browse Source

单点登录接口

master
CMM 7 months ago
parent
commit
bf7c6ef30a
100 changed files with 1627 additions and 1 deletions
  1. +8
    -0
      .idea/.gitignore
  2. +14
    -0
      .idea/checkstyle-idea.xml
  3. +15
    -0
      .idea/compiler.xml
  4. +12
    -0
      .idea/eclipseCodeFormatter.xml
  5. +12
    -0
      .idea/encodings.xml
  6. +25
    -0
      .idea/jarRepositories.xml
  7. +12
    -0
      .idea/misc.xml
  8. +124
    -0
      .idea/uiDesigner.xml
  9. +6
    -0
      .idea/vcs.xml
  10. +36
    -0
      kqapi/src/main/java/com/ningdatech/kqapi/sso/controller/SsoController.java
  11. +86
    -0
      kqapi/src/main/java/com/ningdatech/kqapi/sso/manage/SsoManage.java
  12. +25
    -0
      kqapi/src/main/java/com/ningdatech/kqapi/sso/model/dto/ReqSsoDTO.java
  13. +29
    -0
      kqapi/src/main/java/com/ningdatech/kqapi/sso/model/vo/SsoTokenVO.java
  14. +154
    -0
      kqapi/src/main/java/com/ningdatech/kqapi/sso/model/vo/SsoUserInfoVO.java
  15. +132
    -0
      kqapi/src/main/java/com/ningdatech/kqapi/sso/utils/HmacAuthUtil.java
  16. +11
    -1
      kqapi/src/main/resources/application-dev.yml
  17. +141
    -0
      kqapi/target/classes/BOOT-INF/classes/application-dev.yml
  18. +128
    -0
      kqapi/target/classes/BOOT-INF/classes/application-pre.yml
  19. +131
    -0
      kqapi/target/classes/BOOT-INF/classes/application-prod.yml
  20. +3
    -0
      kqapi/target/classes/BOOT-INF/classes/application.yml
  21. +68
    -0
      kqapi/target/classes/BOOT-INF/classes/logback-spring.xml
  22. +52
    -0
      kqapi/target/classes/META-INF/spring-configuration-metadata.json
  23. +141
    -0
      kqapi/target/classes/application-dev.yml
  24. +128
    -0
      kqapi/target/classes/application-pre.yml
  25. +131
    -0
      kqapi/target/classes/application-prod.yml
  26. +3
    -0
      kqapi/target/classes/application.yml
  27. BIN
      kqapi/target/classes/com/ningdatech/kqapi/App.class
  28. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/compare/Compare.class
  29. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/compare/CompareNode.class
  30. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/compare/CompareUtils.class
  31. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/config/BeanConfig.class
  32. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/config/ConfigurerAdapter.class
  33. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/config/DingOrganizationProperties.class
  34. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/config/ProvincialProperties.class
  35. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/BaseFieldConst.class
  36. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/BizConst.class
  37. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/CommonConst.class
  38. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/DefValConst.class
  39. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/DingConst.class
  40. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$AnnualPaymentPlan.class
  41. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$Appendix.class
  42. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$ApplicationInformation.class
  43. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$BasicInformation.class
  44. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$CoreBusiness.class
  45. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$FundDeclareInfo.class
  46. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$Number.class
  47. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$ProjectImageProgress.class
  48. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$Remark.class
  49. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$SafetyInput.class
  50. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$TotalInvestmentAllocations.class
  51. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst.class
  52. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/RegionConst.class
  53. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/constant/StateMachineConst.class
  54. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/converter/BaseDateConverter.class
  55. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/converter/NdLocalDateTimeDeserializer.class
  56. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/converter/String2DateConverter.class
  57. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/converter/String2LocalDateConverter.class
  58. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/converter/String2LocalDateTimeConverter.class
  59. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/converter/String2LocalTimeConverter.class
  60. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/enumeration/BoolDisplayEnum.class
  61. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/enumeration/CommonEnum.class
  62. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/enumeration/ExportOptionEnum.class
  63. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/enumeration/ProjectProcessStageEnum.class
  64. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/errorcode/AppErrorCode.class
  65. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/ArgumentException.class
  66. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/BaseCheckedException.class
  67. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/BaseException.class
  68. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/BaseUncheckedException.class
  69. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/BizException.class
  70. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/CommonException.class
  71. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/DownloadException.class
  72. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/ExportException.class
  73. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/ForbiddenException.class
  74. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/UnauthorizedException.class
  75. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/code/BaseExceptionCode.class
  76. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/exception/code/ExceptionCode.class
  77. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/handler/GlobalExceptionHandler.class
  78. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/handler/GlobalResponseHandler.class
  79. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/handler/MyBatisPlusConfig.class
  80. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/helper/MatterCacheHelper.class
  81. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/helper/basic/AbstractMatterCacheHelper.class
  82. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/helper/impl/MattersCacheHelperImpl.class
  83. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/model/ApiResponse.class
  84. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/model/ApiStatus.class
  85. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/model/PagePo.class
  86. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/model/PageVo.class
  87. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/model/Status.class
  88. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/model/entity/Item$ItemData.class
  89. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/model/entity/Item.class
  90. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/BizUtils.class
  91. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/CallBack.class
  92. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/CodeUtil.class
  93. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/CommonInputStreamResource.class
  94. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/CryptUtils.class
  95. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/HmacAuthUtil.class
  96. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/HttpUtil.class
  97. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/Md5Utils.class
  98. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/NdDateUtils.class
  99. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/NdJacksonModule.class
  100. BIN
      kqapi/target/classes/com/ningdatech/kqapi/common/util/RefreshKeyUtil.class

+ 8
- 0
.idea/.gitignore View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

+ 14
- 0
.idea/checkstyle-idea.xml View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CheckStyle-IDEA" serialisationVersion="2">
<checkstyleVersion>10.5.0</checkstyleVersion>
<scanScope>JavaOnly</scanScope>
<copyLibs>true</copyLibs>
<option name="locations">
<list>
<ConfigurationLocation id="bundled-sun-checks" type="BUNDLED" scope="All" description="Sun Checks">(bundled)</ConfigurationLocation>
<ConfigurationLocation id="bundled-google-checks" type="BUNDLED" scope="All" description="Google Checks">(bundled)</ConfigurationLocation>
</list>
</option>
</component>
</project>

+ 15
- 0
.idea/compiler.xml View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<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="ningda-generator" />
<module name="kqapi" />
</profile>
</annotationProcessing>
</component>
</project>

+ 12
- 0
.idea/eclipseCodeFormatter.xml View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EclipseCodeFormatterProjectSettings">
<option name="projectSpecificProfile">
<ProjectSpecificProfile>
<option name="formatter" value="ECLIPSE" />
<option name="pathToConfigFileJava" value="D:/soft/formatter/eclipse-codestyle.xml" />
<option name="selectedJavaProfile" value="P3C-CodeStyle" />
</ProjectSpecificProfile>
</option>
</component>
</project>

+ 12
- 0
.idea/encodings.xml View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/kqapi/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/kqapi/src/main/lib" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/kqapi/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ningda-generator/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ningda-generator/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

+ 25
- 0
.idea/jarRepositories.xml View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="aliyun" />
<option name="name" value="aliyun" />
<option name="url" value="https://maven.aliyun.com/repository/public" />
</remote-repository>
</component>
</project>

+ 12
- 0
.idea/misc.xml View File

@@ -0,0 +1,12 @@
<?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" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
</project>

+ 124
- 0
.idea/uiDesigner.xml View File

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

+ 6
- 0
.idea/vcs.xml View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

+ 36
- 0
kqapi/src/main/java/com/ningdatech/kqapi/sso/controller/SsoController.java View File

@@ -0,0 +1,36 @@
package com.ningdatech.kqapi.sso.controller;

import com.ningdatech.kqapi.sso.manage.SsoManage;
import com.ningdatech.kqapi.sso.model.dto.ReqSsoDTO;
import com.ningdatech.kqapi.sso.model.vo.SsoTokenVO;
import com.ningdatech.kqapi.sso.model.vo.SsoUserInfoVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
* @author CMM
* @since 2024/04/07 11:15
*/
@Slf4j
@Validated
@RestController
@RequestMapping("/api/v1/sso/")
@RequiredArgsConstructor
public class SsoController {

private final SsoManage ssoManage;

@PostMapping ("/token")
public SsoTokenVO getToken(@Valid @RequestBody ReqSsoDTO reqSsoDTO) {
return ssoManage.getToken(reqSsoDTO);
}

@PostMapping ("/getUserInfo")
public SsoUserInfoVO getUserInfo(@Valid @RequestBody ReqSsoDTO reqSsoDTO) {
return ssoManage.getUserInfo(reqSsoDTO);
}
}

+ 86
- 0
kqapi/src/main/java/com/ningdatech/kqapi/sso/manage/SsoManage.java View File

@@ -0,0 +1,86 @@
package com.ningdatech.kqapi.sso.manage;

import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import com.ningdatech.kqapi.common.exception.BizException;
import com.ningdatech.kqapi.sso.model.dto.ReqSsoDTO;
import com.ningdatech.kqapi.sso.model.vo.SsoTokenVO;
import com.ningdatech.kqapi.sso.model.vo.SsoUserInfoVO;
import com.ningdatech.kqapi.sso.utils.HmacAuthUtil;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;


/**
* @author CMM
* @since 2024/04/07 11:17
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class SsoManage {

@Value("${sso.token.internet-url}")
private String tokenUrl;

@Value("${sso.user-info.internet-url}")
private String userInfoUrl;

@Value("${sso.access-key}")
private String accessKey;

@Value("${sso.secret-key}")
private String secretKey;

@Value("${sso.app-id}")
private String appId;

private final RestTemplate restTemplate;

/**
* 基于单点登录票据换取请求 token
*
* @param reqSsoDTO \
* @return SsoTokenVO
*/
public SsoTokenVO getToken(ReqSsoDTO reqSsoDTO) {
String ticketId = reqSsoDTO.getTicketId();
if (StringUtils.isBlank(ticketId)){
throw new BizException("登录票据不能为空!");
}
Map<String, String> header = HmacAuthUtil.generateHeader(tokenUrl, "POST", accessKey, secretKey);
MultiValueMap<String, String> multiValueMap = HmacAuthUtil.convertToMultiValueMap(header);
reqSsoDTO.setAppId(appId);
HttpEntity<Object> httpEntity = new HttpEntity<>(reqSsoDTO, multiValueMap);
SsoTokenVO res = restTemplate.postForObject(tokenUrl, httpEntity, SsoTokenVO.class);
log.info("[RestTemplateTest-基于单点登录票据换取请求token] http request :{}", res);
return res;
}

/**
* 基于 token 获取用户信息
*
* @param reqSsoDTO \
* @return SsoUserInfoVO
*/
public SsoUserInfoVO getUserInfo(ReqSsoDTO reqSsoDTO) {
String token = reqSsoDTO.getToken();
if (StringUtils.isBlank(token)){
throw new BizException("token不能为空!");
}
Map<String, String> header = HmacAuthUtil.generateHeader(userInfoUrl, "POST", accessKey, secretKey);
MultiValueMap<String, String> multiValueMap = HmacAuthUtil.convertToMultiValueMap(header);
HttpEntity<Object> httpEntity = new HttpEntity<>(reqSsoDTO,multiValueMap);
SsoUserInfoVO res = restTemplate.postForObject(userInfoUrl, httpEntity, SsoUserInfoVO.class);
log.info("[RestTemplateTest-基于token获取用户信息] http request :{}", res);
return res;
}
}

+ 25
- 0
kqapi/src/main/java/com/ningdatech/kqapi/sso/model/dto/ReqSsoDTO.java View File

@@ -0,0 +1,25 @@
package com.ningdatech.kqapi.sso.model.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;

/**
* @author CMM
* @since 2024/04/07 11:22
*/
@Data
@ApiModel(value = "ReqTokenDTO", description = "获取Token请求实体")
public class ReqSsoDTO {

@ApiModelProperty("单点登录票据")
private String ticketId;

@ApiModelProperty("应用发布 ID")
private String appId;

@ApiModelProperty("单点登录Token")
private String token;
}

+ 29
- 0
kqapi/src/main/java/com/ningdatech/kqapi/sso/model/vo/SsoTokenVO.java View File

@@ -0,0 +1,29 @@
package com.ningdatech.kqapi.sso.model.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
* @author CMM
* @since 2024/04/07 11:19
*/
@Data
@ApiModel(value = "SsoTokenVO", description = "单点登录TokenVO")
public class SsoTokenVO {

@ApiModelProperty("错误码")
private String errorCode;

@ApiModelProperty("错误信息")
private String errorMsg;

@ApiModelProperty("是否成功")
private Boolean success;

@ApiModelProperty("响应体")
private Object data;

@ApiModelProperty("token")
private String token;
}

+ 154
- 0
kqapi/src/main/java/com/ningdatech/kqapi/sso/model/vo/SsoUserInfoVO.java View File

@@ -0,0 +1,154 @@
package com.ningdatech.kqapi.sso.model.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
* @author CMM
* @since 2024/04/07 11:19
*/
@Data
@ApiModel(value = "SsoUserInfoVO", description = "单点登录UserInfoVO")
public class SsoUserInfoVO {

@ApiModelProperty("错误码")
private String errorCode;

@ApiModelProperty("错误信息")
private String errorMsg;

@ApiModelProperty("是否成功")
private Boolean success;

@ApiModelProperty("响应体")
private Object data;

@ApiModelProperty("用户类型 PERSON 个人、LEGAL_PERSON 法人")
private String userType;

@ApiModelProperty("个人用户信息 当前登录自然人的信息")
private Object personInfo;

@ApiModelProperty("主键")
private String userId;

@ApiModelProperty("个人姓名")
private String userName;

@ApiModelProperty("个人姓名 ID_CARD:身份证,PASSPORT:护\n" +
"照,OFFICER_CARD:军官\n" +
"证,MAINLAND_TRAVEL_PERMIT_FOR\n" +
"_HONGKONG_AND_MACAO_RESIDENTS\n" +
":港澳居民来往内地通行\n" +
"证,MAINLAND_TRAVEL_PERMIT_FOR\n" +
"_TAIWAN_RESIDENTS:台湾居民来\n" +
"往大陆通行\n" +
"证,FOREIGN_PERMANENT_RESIDENT\n" +
"_ID_CARD:外国人永久居留身份\n" +
"证,FOREIGN_PASSPORT:外籍人士\n" +
"护照,DIPLOMACY_PASSPORT:外交\n" +
"护照,OFFICIAL_PASSPORT:公务护\n" +
"照,SOLDIER_CARD:士兵\n" +
"证,OFFICER_RETIRE_CARD:军官离\n" +
"退休\n" +
"证,GANG_AO_TAI_RESIDENCE_CART\n" +
":港澳台居民居住\n" +
"证,GANG_AO_ID_CART:港澳居民身\n" +
"份证,UNIFIED_SOCIAL_ID:统一社\n" +
"会信用代码,OTHER:其他")
private String idType;

@ApiModelProperty("外部证件类型")
private String outerIdType;

@ApiModelProperty("证件编号")
private String idNo;

@ApiModelProperty("法人经办人时用户类型,评级")
private String attnUserType;

@ApiModelProperty("手机号")
private String phone;

@ApiModelProperty("邮箱")
private String email;

@ApiModelProperty("民族")
private String nation;

@ApiModelProperty("性别")
private String gender;

@ApiModelProperty("生日")
private String birthday;

@ApiModelProperty("身份散列值")
private String certKey;

@ApiModelProperty("额外属性")
private Object attributes;

@ApiModelProperty("法人用户信息,比如公司相关的信\n" +
"息")
private Object legalPersonInfo;

@ApiModelProperty("法人名称")
private String name;

@ApiModelProperty("社会统一信用代码")
private String unifiedSocialId;

@ApiModelProperty("法人类型")
private String orgType;

@ApiModelProperty("经办人姓名")
private String attnName;

@ApiModelProperty("经办人手机号")
private String attnPhone;

@ApiModelProperty("经办人证件类型")
private String attnIdType;

@ApiModelProperty("经办人证件号码")
private String attnIdNo;

@ApiModelProperty("法人代表人姓名")
private String principal;

@ApiModelProperty("法人代表唯一键")
private String principalUserId;

@ApiModelProperty("法人唯一键")
private String corpId;

@ApiModelProperty("所属组织信息")
private List<Object> organizationInfoList;

@ApiModelProperty("组织主键")
private String orgId;

@ApiModelProperty("Alias for orgId")
private String oid;

@ApiModelProperty("父组织主键")
private String parentId;

@ApiModelProperty("Alias for parentId")
private String pid;

@ApiModelProperty("组织机构全称")
private String fullName;

@ApiModelProperty("组织后缀")
private String devCoding;

@ApiModelProperty("是否叶子标志")
private Boolean leafFlag;

@ApiModelProperty("排序号,从小到大")
private Integer orderBy;
}

+ 132
- 0
kqapi/src/main/java/com/ningdatech/kqapi/sso/utils/HmacAuthUtil.java View File

@@ -0,0 +1,132 @@
package com.ningdatech.kqapi.sso.utils;

import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URL;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;

import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

import javafx.util.Pair;
import lombok.extern.slf4j.Slf4j;

/**
* @author CMM
* @since 2024/04/07 11:28
*/

@Slf4j
public class HmacAuthUtil {

/**
* 构造请求 header
*
* @param urlStr 请求url,全路径格式,比如:https://bcdsg.zj.gov.cn/api/p/v1/user.get
* @param requestMethod 请求方法,大写格式,如:GET, POST
* @param accessKey 应用的 AK
* @param secretKey 应用的 SK
* @return
*/
public static Map<String, String> generateHeader(String urlStr, String requestMethod, String accessKey, String secretKey) {
log.info("params,urlStr={},requestMethod={},accessKey={},secretKey={}",urlStr,requestMethod,accessKey,secretKey);
Map<String, String> header = new HashMap<>();
try {
DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String date = dateFormat.format(new Date());
URL url = new URL(urlStr);
URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), null);

String canonicalQueryString = getCanonicalQueryString(uri.getQuery());

String message = requestMethod.toUpperCase() + "\n" + uri.getPath() + "\n" + canonicalQueryString + "\n" + accessKey + "\n" + date + "\n";

Mac hasher = Mac.getInstance("HmacSHA256");
hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));

byte[] hash = hasher.doFinal(message.getBytes());

// to lowercase hexits
DatatypeConverter.printHexBinary(hash);

// to base64
String sign = DatatypeConverter.printBase64Binary(hash);
header.put("X-BG-HMAC-SIGNATURE", sign);
header.put("X-BG-HMAC-ALGORITHM", "hmac-sha256");
header.put("X-BG-HMAC-ACCESS-KEY", accessKey);
header.put("X-BG-DATE-TIME", date);
} catch (Exception e) {
log.error("generate error",e);
throw new RuntimeException("generate header error");
}
log.info("header info,{}",header);
return header;
}

private static String getCanonicalQueryString(String query) {
if (query == null || query.trim().length() == 0) {
return "";
}
List<javafx.util.Pair<String, String>> queryParamList = new ArrayList<>();
String[] params = query.split("&");
for (String param : params) {
int eqIndex = param.indexOf("=");
String key = param;
String value = "";
if(eqIndex!=-1){
key = param.substring(0, eqIndex);
value = param.substring(eqIndex+1);
}
javafx.util.Pair<String, String> pair = new javafx.util.Pair<String, String>(key,value);
queryParamList.add(pair);
}

List<javafx.util.Pair<String, String>> sortedParamList = queryParamList.stream().sorted(Comparator.comparing(param -> param.getKey() + "=" + Optional.ofNullable(param.getValue()).orElse(""))).collect(Collectors.toList());
List<javafx.util.Pair<String, String>> encodeParamList = new ArrayList<>();
sortedParamList.stream().forEach(param -> {
try {
String key = URLEncoder.encode(param.getKey(), "utf-8");
String value = URLEncoder.encode(Optional.ofNullable(param.getValue()).orElse(""), "utf-8")
.replaceAll("\\%2B","%20")
.replaceAll("\\+","%20")
.replaceAll("\\%21","!")
.replaceAll("\\%27","'")
.replaceAll("\\%28","(")
.replaceAll("\\%29",")")
.replaceAll("\\%7E","~")
.replaceAll("\\%25","%")
;
encodeParamList.add(new javafx.util.Pair<>(key, value));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("encoding error");
}
});
StringBuilder queryParamString = new StringBuilder(64);
for (Pair<String, String> encodeParam : encodeParamList) {
queryParamString.append(encodeParam.getKey()).append("=").append(Optional.ofNullable(encodeParam.getValue()).orElse(""));
queryParamString.append("&");
}

return queryParamString.substring(0, queryParamString.length() - 1);
}


public static MultiValueMap<String, String> convertToMultiValueMap(Map<String, String> sourceMap) {
LinkedMultiValueMap<String, String> multiValueMap = new LinkedMultiValueMap<>();

for (Map.Entry<String, String> entry : sourceMap.entrySet()) {
multiValueMap.add(entry.getKey(), entry.getValue());
}

return multiValueMap;
}
}

+ 11
- 1
kqapi/src/main/resources/application-dev.yml View File

@@ -1,5 +1,5 @@
server:
port: 33060
port: 33061
servlet:
context-path: /kq

@@ -127,5 +127,15 @@ jasypt:
algorithm: PBEWithMD5AndDES
# 指定initialization vector类型
iv-generator-classname: org.jasypt.iv.NoIvGenerator
sso:
access-key: BCDSGA_c2494577610c90bdc33b95514601da2c
secret-key: BCDSGS_80bf0a606c0d2fd3201bd06a4f008250
app-id: 2002399646
token:
internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000007/uc/sso/access_token
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000007/uc/sso/access_token
user-info:
internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo



+ 141
- 0
kqapi/target/classes/BOOT-INF/classes/application-dev.yml View File

@@ -0,0 +1,141 @@
server:
port: 33061
servlet:
context-path: /kq

spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
session:
store-type: redis
redis:
namespace: "spring:session"
timeout: 864000
redis:
timeout: 5000
host: 47.98.125.47
port: 26379
database: 7
password: Ndkj1234
jedis:
pool:
max-active: 200
max-idle: 500
min-idle: 8
max-wait: 10000
application:
name: kq
jackson:
default-property-inclusion: non_null
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
jpa:
properties:
hibernate:
default_schema: PUBLIC
hbm2ddl:
auto: update
show_sql: true
show-sql: true
hibernate:
ddl-auto: update
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: ENC(aMGW3+FFqxyutRz9liYjAg+A72b6IQ7/ygtxO0DmQJ/LLFZkx8r4MhN8quv9L62nQ4sH55qFg+LnQoor/t8IqBACrbfNg462YNKnRyMsBmdHHxJm7i57flIQfePLDW93Omz4LZ2PbRZTvPcLLYtnQyxXSDPwDnjexHNVXTdxwuTJPBqthsVpvyA2mnn5Szef)
username: root
password: ENC(NHFdgnNk7opRJpNnZOJs51OTXb72zU//)
# 数据源
hikari:
# 是客户端等待连接池连接的最大毫秒数
connection-timeout: 30000
# 是允许连接在连接池中空闲的最长时间
minimum-idle: 5
# 配置最大池大小
maximum-pool-size: 300
# 是允许连接在连接池中空闲的最长时间(以毫秒为单位)
idle-timeout: 60000
# 池中连接关闭后的最长生命周期(以毫秒为单位)
max-lifetime: 600000
# 配置从池返回的连接的默认自动提交行为。默认值为true。
auto-commit: true
# 开启连接监测泄露
leak-detection-threshold: 500000
# 测试连接数据库
connection-test-query: SELECT 1
#设置上传 单个文件的大小
servlet:
multipart:
max-file-size: 100MB
max-request-size: 150MB
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-value: true
logic-not-delete-value: false
logging:
config: classpath:logback-spring.xml
#日志配置
level:
root: info
file:
path: logs
nd:
cache:
type: REDIS
serializerType: ProtoStuff
cacheNullVal: true
def:
keyPrefix: kq
log:
enabled: true
type: DB
# 文件存储
file:
storage-type: ALI_OSS
ali:
protocol: https://
bucket: devplat
urlPrefix: oss-cn-hangzhou.aliyuncs.com
endpoint: oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4GL7uypycnBjiRn55rMG
accessKeySecret: qwYC7bW9bkStsko7qkLVnToAzj0Y98
# 日志文件配置
log:
path: ./logs
info:
file-size: 50MB
max-size: 5
total-size: 200MB
error:
file-size: 10MB
max-size: 5
total-size: 50MB

swagger:
enabled: true

hostname: iZbp13nwyvib53j4j1p2xoZ

jasypt:
encryptor:
password: CodeSheep
# 指定解密算法,需要和加密时使用的算法一致
algorithm: PBEWithMD5AndDES
# 指定initialization vector类型
iv-generator-classname: org.jasypt.iv.NoIvGenerator
sso:
access-key: BCDSGA_c2494577610c90bdc33b95514601da2c
secret-key: BCDSGS_80bf0a606c0d2fd3201bd06a4f008250
app-id: 2002399646
token:
internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000007/uc/sso/access_token
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000007/uc/sso/access_token
user-info:
internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo



+ 128
- 0
kqapi/target/classes/BOOT-INF/classes/application-pre.yml View File

@@ -0,0 +1,128 @@
server:
port: 33060
servlet:
context-path: /kq

spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
session:
store-type: redis
redis:
namespace: "spring:session"
timeout: 864000
redis:
timeout: 5000
host: 47.98.125.47
port: 26379
database: 7
password: Ndkj1234
jedis:
pool:
max-active: 200
max-idle: 500
min-idle: 8
max-wait: 10000
application:
name: kq
jackson:
default-property-inclusion: non_null
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
jpa:
properties:
hibernate:
default_schema: PUBLIC
hbm2ddl:
auto: update
show_sql: true
show-sql: true
hibernate:
ddl-auto: update
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: ENC(aMGW3+FFqxyutRz9liYjAg+A72b6IQ7/ygtxO0DmQJ/LLFZkx8r4MhN8quv9L62nQ4sH55qFg+LnQoor/t8IqBACrbfNg462YNKnRyMsBmdHHxJm7i57flIQfePLDW93Omz4LZ2PbRZTvPcLLYtnQyxXSDPwDnjexHNVXTdxwuTJPBqthsVpvyA2mnn5Szef)
username: root
password: NingdaKeji123!
# 数据源
hikari:
# 是客户端等待连接池连接的最大毫秒数
connection-timeout: 30000
# 是允许连接在连接池中空闲的最长时间
minimum-idle: 5
# 配置最大池大小
maximum-pool-size: 300
# 是允许连接在连接池中空闲的最长时间(以毫秒为单位)
idle-timeout: 60000
# 池中连接关闭后的最长生命周期(以毫秒为单位)
max-lifetime: 600000
# 配置从池返回的连接的默认自动提交行为。默认值为true。
auto-commit: true
# 开启连接监测泄露
leak-detection-threshold: 500000
# 测试连接数据库
connection-test-query: SELECT 1
#设置上传 单个文件的大小
servlet:
multipart:
max-file-size: 100MB
max-request-size: 150MB
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-value: true
logic-not-delete-value: false
logging:
config: classpath:logback-spring.xml
#日志配置
level:
root: info
file:
path: logs
nd:
cache:
type: REDIS
serializerType: ProtoStuff
cacheNullVal: true
def:
keyPrefix: kq
log:
enabled: true
type: DB
# 文件存储
file:
storage-type: ALI_OSS
ali:
protocol: https://
bucket: devplat
urlPrefix: oss-cn-hangzhou.aliyuncs.com
endpoint: oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4GL7uypycnBjiRn55rMG
accessKeySecret: qwYC7bW9bkStsko7qkLVnToAzj0Y98
# 日志文件配置
log:
path: ./logs
info:
file-size: 50MB
max-size: 5
total-size: 200MB
error:
file-size: 10MB
max-size: 5
total-size: 50MB

swagger:
enabled: true

hostname: iZbp13nwyvib53j4j1p2xoZ

jasypt:
encryptor:
password: CodeSheep
algorithm: PBEWithMD5AndDES
# 指定initialization vector类型
iv-generator-classname: org.jasypt.iv.NoIvGenerator

+ 131
- 0
kqapi/target/classes/BOOT-INF/classes/application-prod.yml View File

@@ -0,0 +1,131 @@
server:
port: 33061
servlet:
context-path: /kq

spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
session:
store-type: redis
redis:
namespace: "spring:session"
timeout: 864000
redis:
timeout: 5000
host: 47.98.125.47
port: 26379
database: 7
password: Ndkj1234
jedis:
pool:
max-active: 200
max-idle: 500
min-idle: 8
max-wait: 10000
application:
name: kq
jackson:
default-property-inclusion: non_null
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
jpa:
properties:
hibernate:
default_schema: PUBLIC
hbm2ddl:
auto: update
show_sql: true
show-sql: true
hibernate:
ddl-auto: update
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: ENC(gtE4OUrpgtFsh6B3aLiSp2sVSX1BYDET9Uii/wRP2RboRK0NDaYu1S7Vx30cHXFE7vecQzY1UbrSFW/BaWJvQ3XJxfDiaUxdrIDND5e+DMTjx1pUkfS8/RbXHQDE+QoOVZV1UKEtdq+khr32tlQXqkTnzmZGuZjctVmjdQxUnmI2YNpoeNlIAkDXiaCvcVYc)
username: root
password: Nd@20231116

# 数据源
hikari:
# 是客户端等待连接池连接的最大毫秒数
connection-timeout: 30000
# 是允许连接在连接池中空闲的最长时间
minimum-idle: 5
# 配置最大池大小
maximum-pool-size: 300
# 是允许连接在连接池中空闲的最长时间(以毫秒为单位)
idle-timeout: 60000
# 池中连接关闭后的最长生命周期(以毫秒为单位)
max-lifetime: 600000
# 配置从池返回的连接的默认自动提交行为。默认值为true。
auto-commit: true
# 开启连接监测泄露
leak-detection-threshold: 500000
# 测试连接数据库
connection-test-query: SELECT 1
#设置上传 单个文件的大小
servlet:
multipart:
max-file-size: 100MB
max-request-size: 150MB
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-value: true
logic-not-delete-value: false
logging:
config: classpath:logback-spring.xml
#日志配置
level:
root: info
file:
path: logs
nd:
cache:
type: REDIS
serializerType: ProtoStuff
cacheNullVal: true
def:
keyPrefix: kq
log:
enabled: true
type: DB
# 文件存储
file:
storage-type: ALI_OSS
ali:
protocol: https://
bucket: devplat
urlPrefix: oss-cn-hangzhou.aliyuncs.com
endpoint: oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4GL7uypycnBjiRn55rMG
accessKeySecret: qwYC7bW9bkStsko7qkLVnToAzj0Y98
# 日志文件配置
log:
path: ./logs
info:
file-size: 50MB
max-size: 5
total-size: 200MB
error:
file-size: 10MB
max-size: 5
total-size: 50MB

swagger:
enabled: true

hostname: iZut201mqskxt0mwme4tjfZ

jasypt:
encryptor:
password: CodeSheep
algorithm: PBEWithMD5AndDES
# 指定initialization vector类型
iv-generator-classname: org.jasypt.iv.NoIvGenerator



+ 3
- 0
kqapi/target/classes/BOOT-INF/classes/application.yml View File

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

+ 68
- 0
kqapi/target/classes/BOOT-INF/classes/logback-spring.xml View File

@@ -0,0 +1,68 @@
<configuration scan="true" scanPeriod="10 seconds">
<springProperty name="logPath" scope="context" source="log.path" defaultValue="./logs"/>
<springProperty name="infoFileSize" scope="context" source="log.info.file-size"/>
<springProperty name="infoMaxSize" scope="context" source="log.info.max-size"/>
<springProperty name="infoTotalSize" scope="context" source="log.info.total-size"/>
<springProperty name="errorFileSize" scope="context" source="log.error.file-size"/>
<springProperty name="errorMaxSize" scope="context" source="log.error.max-size"/>
<springProperty name="errorTotalSize" scope="context" source="log.error.total-size"/>

<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${logPath}/info.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logPath}/info-%d{yyyyMMdd}-%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${infoFileSize}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${infoMaxSize}</maxHistory>
<totalSizeCap>${infoTotalSize}</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
</Pattern>
</layout>
<charset>UTF-8</charset>
</encoder>
</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>${logPath}/error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logPath}/error-%d{yyyyMMdd}-%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${errorFileSize}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${errorMaxSize}</maxHistory>
<totalSizeCap>${errorTotalSize}</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
</Pattern>
</layout>
<charset>UTF-8</charset>
</encoder>
</appender>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>

<root level="INFO">
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="ERROR_FILE"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>

+ 52
- 0
kqapi/target/classes/META-INF/spring-configuration-metadata.json View File

@@ -0,0 +1,52 @@
{
"groups": [
{
"name": "organization",
"type": "com.ningdatech.kqapi.common.config.DingOrganizationProperties",
"sourceType": "com.ningdatech.kqapi.common.config.DingOrganizationProperties"
},
{
"name": "provincial",
"type": "com.ningdatech.kqapi.common.config.ProvincialProperties",
"sourceType": "com.ningdatech.kqapi.common.config.ProvincialProperties"
}
],
"properties": [
{
"name": "organization.dept-visible-scopes",
"type": "java.util.List<java.lang.String>",
"sourceType": "com.ningdatech.kqapi.common.config.DingOrganizationProperties"
},
{
"name": "provincial.detail-url",
"type": "java.lang.String",
"sourceType": "com.ningdatech.kqapi.common.config.ProvincialProperties"
},
{
"name": "provincial.domain-url",
"type": "java.lang.String",
"sourceType": "com.ningdatech.kqapi.common.config.ProvincialProperties"
},
{
"name": "provincial.host",
"type": "java.lang.String",
"sourceType": "com.ningdatech.kqapi.common.config.ProvincialProperties"
},
{
"name": "provincial.key",
"type": "java.lang.String",
"sourceType": "com.ningdatech.kqapi.common.config.ProvincialProperties"
},
{
"name": "provincial.push-url",
"type": "java.lang.String",
"sourceType": "com.ningdatech.kqapi.common.config.ProvincialProperties"
},
{
"name": "provincial.secret",
"type": "java.lang.String",
"sourceType": "com.ningdatech.kqapi.common.config.ProvincialProperties"
}
],
"hints": []
}

+ 141
- 0
kqapi/target/classes/application-dev.yml View File

@@ -0,0 +1,141 @@
server:
port: 33061
servlet:
context-path: /kq

spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
session:
store-type: redis
redis:
namespace: "spring:session"
timeout: 864000
redis:
timeout: 5000
host: 47.98.125.47
port: 26379
database: 7
password: Ndkj1234
jedis:
pool:
max-active: 200
max-idle: 500
min-idle: 8
max-wait: 10000
application:
name: kq
jackson:
default-property-inclusion: non_null
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
jpa:
properties:
hibernate:
default_schema: PUBLIC
hbm2ddl:
auto: update
show_sql: true
show-sql: true
hibernate:
ddl-auto: update
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: ENC(aMGW3+FFqxyutRz9liYjAg+A72b6IQ7/ygtxO0DmQJ/LLFZkx8r4MhN8quv9L62nQ4sH55qFg+LnQoor/t8IqBACrbfNg462YNKnRyMsBmdHHxJm7i57flIQfePLDW93Omz4LZ2PbRZTvPcLLYtnQyxXSDPwDnjexHNVXTdxwuTJPBqthsVpvyA2mnn5Szef)
username: root
password: ENC(NHFdgnNk7opRJpNnZOJs51OTXb72zU//)
# 数据源
hikari:
# 是客户端等待连接池连接的最大毫秒数
connection-timeout: 30000
# 是允许连接在连接池中空闲的最长时间
minimum-idle: 5
# 配置最大池大小
maximum-pool-size: 300
# 是允许连接在连接池中空闲的最长时间(以毫秒为单位)
idle-timeout: 60000
# 池中连接关闭后的最长生命周期(以毫秒为单位)
max-lifetime: 600000
# 配置从池返回的连接的默认自动提交行为。默认值为true。
auto-commit: true
# 开启连接监测泄露
leak-detection-threshold: 500000
# 测试连接数据库
connection-test-query: SELECT 1
#设置上传 单个文件的大小
servlet:
multipart:
max-file-size: 100MB
max-request-size: 150MB
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-value: true
logic-not-delete-value: false
logging:
config: classpath:logback-spring.xml
#日志配置
level:
root: info
file:
path: logs
nd:
cache:
type: REDIS
serializerType: ProtoStuff
cacheNullVal: true
def:
keyPrefix: kq
log:
enabled: true
type: DB
# 文件存储
file:
storage-type: ALI_OSS
ali:
protocol: https://
bucket: devplat
urlPrefix: oss-cn-hangzhou.aliyuncs.com
endpoint: oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4GL7uypycnBjiRn55rMG
accessKeySecret: qwYC7bW9bkStsko7qkLVnToAzj0Y98
# 日志文件配置
log:
path: ./logs
info:
file-size: 50MB
max-size: 5
total-size: 200MB
error:
file-size: 10MB
max-size: 5
total-size: 50MB

swagger:
enabled: true

hostname: iZbp13nwyvib53j4j1p2xoZ

jasypt:
encryptor:
password: CodeSheep
# 指定解密算法,需要和加密时使用的算法一致
algorithm: PBEWithMD5AndDES
# 指定initialization vector类型
iv-generator-classname: org.jasypt.iv.NoIvGenerator
sso:
access-key: BCDSGA_c2494577610c90bdc33b95514601da2c
secret-key: BCDSGS_80bf0a606c0d2fd3201bd06a4f008250
app-id: 2002399646
token:
internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000007/uc/sso/access_token
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000007/uc/sso/access_token
user-info:
internet-url: https://ibcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo
zww-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220329000008/uc/sso/getUserInfo



+ 128
- 0
kqapi/target/classes/application-pre.yml View File

@@ -0,0 +1,128 @@
server:
port: 33060
servlet:
context-path: /kq

spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
session:
store-type: redis
redis:
namespace: "spring:session"
timeout: 864000
redis:
timeout: 5000
host: 47.98.125.47
port: 26379
database: 7
password: Ndkj1234
jedis:
pool:
max-active: 200
max-idle: 500
min-idle: 8
max-wait: 10000
application:
name: kq
jackson:
default-property-inclusion: non_null
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
jpa:
properties:
hibernate:
default_schema: PUBLIC
hbm2ddl:
auto: update
show_sql: true
show-sql: true
hibernate:
ddl-auto: update
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: ENC(aMGW3+FFqxyutRz9liYjAg+A72b6IQ7/ygtxO0DmQJ/LLFZkx8r4MhN8quv9L62nQ4sH55qFg+LnQoor/t8IqBACrbfNg462YNKnRyMsBmdHHxJm7i57flIQfePLDW93Omz4LZ2PbRZTvPcLLYtnQyxXSDPwDnjexHNVXTdxwuTJPBqthsVpvyA2mnn5Szef)
username: root
password: NingdaKeji123!
# 数据源
hikari:
# 是客户端等待连接池连接的最大毫秒数
connection-timeout: 30000
# 是允许连接在连接池中空闲的最长时间
minimum-idle: 5
# 配置最大池大小
maximum-pool-size: 300
# 是允许连接在连接池中空闲的最长时间(以毫秒为单位)
idle-timeout: 60000
# 池中连接关闭后的最长生命周期(以毫秒为单位)
max-lifetime: 600000
# 配置从池返回的连接的默认自动提交行为。默认值为true。
auto-commit: true
# 开启连接监测泄露
leak-detection-threshold: 500000
# 测试连接数据库
connection-test-query: SELECT 1
#设置上传 单个文件的大小
servlet:
multipart:
max-file-size: 100MB
max-request-size: 150MB
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-value: true
logic-not-delete-value: false
logging:
config: classpath:logback-spring.xml
#日志配置
level:
root: info
file:
path: logs
nd:
cache:
type: REDIS
serializerType: ProtoStuff
cacheNullVal: true
def:
keyPrefix: kq
log:
enabled: true
type: DB
# 文件存储
file:
storage-type: ALI_OSS
ali:
protocol: https://
bucket: devplat
urlPrefix: oss-cn-hangzhou.aliyuncs.com
endpoint: oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4GL7uypycnBjiRn55rMG
accessKeySecret: qwYC7bW9bkStsko7qkLVnToAzj0Y98
# 日志文件配置
log:
path: ./logs
info:
file-size: 50MB
max-size: 5
total-size: 200MB
error:
file-size: 10MB
max-size: 5
total-size: 50MB

swagger:
enabled: true

hostname: iZbp13nwyvib53j4j1p2xoZ

jasypt:
encryptor:
password: CodeSheep
algorithm: PBEWithMD5AndDES
# 指定initialization vector类型
iv-generator-classname: org.jasypt.iv.NoIvGenerator

+ 131
- 0
kqapi/target/classes/application-prod.yml View File

@@ -0,0 +1,131 @@
server:
port: 33061
servlet:
context-path: /kq

spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
session:
store-type: redis
redis:
namespace: "spring:session"
timeout: 864000
redis:
timeout: 5000
host: 47.98.125.47
port: 26379
database: 7
password: Ndkj1234
jedis:
pool:
max-active: 200
max-idle: 500
min-idle: 8
max-wait: 10000
application:
name: kq
jackson:
default-property-inclusion: non_null
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
jpa:
properties:
hibernate:
default_schema: PUBLIC
hbm2ddl:
auto: update
show_sql: true
show-sql: true
hibernate:
ddl-auto: update
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: ENC(gtE4OUrpgtFsh6B3aLiSp2sVSX1BYDET9Uii/wRP2RboRK0NDaYu1S7Vx30cHXFE7vecQzY1UbrSFW/BaWJvQ3XJxfDiaUxdrIDND5e+DMTjx1pUkfS8/RbXHQDE+QoOVZV1UKEtdq+khr32tlQXqkTnzmZGuZjctVmjdQxUnmI2YNpoeNlIAkDXiaCvcVYc)
username: root
password: Nd@20231116

# 数据源
hikari:
# 是客户端等待连接池连接的最大毫秒数
connection-timeout: 30000
# 是允许连接在连接池中空闲的最长时间
minimum-idle: 5
# 配置最大池大小
maximum-pool-size: 300
# 是允许连接在连接池中空闲的最长时间(以毫秒为单位)
idle-timeout: 60000
# 池中连接关闭后的最长生命周期(以毫秒为单位)
max-lifetime: 600000
# 配置从池返回的连接的默认自动提交行为。默认值为true。
auto-commit: true
# 开启连接监测泄露
leak-detection-threshold: 500000
# 测试连接数据库
connection-test-query: SELECT 1
#设置上传 单个文件的大小
servlet:
multipart:
max-file-size: 100MB
max-request-size: 150MB
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-value: true
logic-not-delete-value: false
logging:
config: classpath:logback-spring.xml
#日志配置
level:
root: info
file:
path: logs
nd:
cache:
type: REDIS
serializerType: ProtoStuff
cacheNullVal: true
def:
keyPrefix: kq
log:
enabled: true
type: DB
# 文件存储
file:
storage-type: ALI_OSS
ali:
protocol: https://
bucket: devplat
urlPrefix: oss-cn-hangzhou.aliyuncs.com
endpoint: oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4GL7uypycnBjiRn55rMG
accessKeySecret: qwYC7bW9bkStsko7qkLVnToAzj0Y98
# 日志文件配置
log:
path: ./logs
info:
file-size: 50MB
max-size: 5
total-size: 200MB
error:
file-size: 10MB
max-size: 5
total-size: 50MB

swagger:
enabled: true

hostname: iZut201mqskxt0mwme4tjfZ

jasypt:
encryptor:
password: CodeSheep
algorithm: PBEWithMD5AndDES
# 指定initialization vector类型
iv-generator-classname: org.jasypt.iv.NoIvGenerator



+ 3
- 0
kqapi/target/classes/application.yml View File

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

BIN
kqapi/target/classes/com/ningdatech/kqapi/App.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/compare/Compare.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/compare/CompareNode.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/compare/CompareUtils.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/config/BeanConfig.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/config/ConfigurerAdapter.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/config/DingOrganizationProperties.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/config/ProvincialProperties.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/BaseFieldConst.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/BizConst.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/CommonConst.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/DefValConst.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/DingConst.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$AnnualPaymentPlan.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$Appendix.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$ApplicationInformation.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$BasicInformation.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$CoreBusiness.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$FundDeclareInfo.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$Number.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$ProjectImageProgress.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$Remark.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$SafetyInput.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst$TotalInvestmentAllocations.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/ProjectDeclareConst.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/RegionConst.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/constant/StateMachineConst.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/converter/BaseDateConverter.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/converter/NdLocalDateTimeDeserializer.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/converter/String2DateConverter.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/converter/String2LocalDateConverter.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/converter/String2LocalDateTimeConverter.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/converter/String2LocalTimeConverter.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/enumeration/BoolDisplayEnum.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/enumeration/CommonEnum.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/enumeration/ExportOptionEnum.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/enumeration/ProjectProcessStageEnum.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/errorcode/AppErrorCode.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/ArgumentException.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/BaseCheckedException.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/BaseException.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/BaseUncheckedException.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/BizException.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/CommonException.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/DownloadException.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/ExportException.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/ForbiddenException.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/UnauthorizedException.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/code/BaseExceptionCode.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/exception/code/ExceptionCode.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/handler/GlobalExceptionHandler.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/handler/GlobalResponseHandler.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/handler/MyBatisPlusConfig.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/helper/MatterCacheHelper.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/helper/basic/AbstractMatterCacheHelper.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/helper/impl/MattersCacheHelperImpl.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/model/ApiResponse.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/model/ApiStatus.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/model/PagePo.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/model/PageVo.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/model/Status.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/model/entity/Item$ItemData.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/model/entity/Item.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/BizUtils.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/CallBack.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/CodeUtil.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/CommonInputStreamResource.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/CryptUtils.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/HmacAuthUtil.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/HttpUtil.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/Md5Utils.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/NdDateUtils.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/NdJacksonModule.class View File


BIN
kqapi/target/classes/com/ningdatech/kqapi/common/util/RefreshKeyUtil.class View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save