wangzhe пре 1 година
комит
2298ccc7d0
100 измењених фајлова са 3001 додато и 0 уклоњено
  1. 6 0
      .idea/vcs.xml
  2. 23 0
      pom.xml
  3. 12 0
      s-cloud.iml
  4. 59 0
      sooka-auth/pom.xml
  5. 159 0
      sooka-auth/sooka-auth.iml
  6. 15 0
      sooka-auth/src/main/java/com/sooka/AuthApplication.java
  7. 13 0
      sooka-auth/src/main/java/com/sooka/ServletInitializer.java
  8. 34 0
      sooka-auth/src/main/java/com/sooka/api/ZsjApi.java
  9. 35 0
      sooka-auth/src/main/java/com/sooka/exception/ServiceExceptionHandler.java
  10. 30 0
      sooka-auth/src/main/java/com/sooka/mapper/AuthCNMDMapper.java
  11. 16 0
      sooka-auth/src/main/java/com/sooka/mapper/AuthMapper.java
  12. 65 0
      sooka-auth/src/main/java/com/sooka/model/db/IntDetailed.java
  13. 52 0
      sooka-auth/src/main/java/com/sooka/model/db/IntDetailed_SP.java
  14. 88 0
      sooka-auth/src/main/java/com/sooka/network/http/Http.java
  15. 12 0
      sooka-auth/src/main/java/com/sooka/network/http/HttpQueue.java
  16. 86 0
      sooka-auth/src/main/java/com/sooka/network/http/HttpRequest.java
  17. 10 0
      sooka-auth/src/main/java/com/sooka/service/AuthService.java
  18. 121 0
      sooka-auth/src/main/java/com/sooka/service/impl/AuthServiceImpl.java
  19. 118 0
      sooka-auth/src/main/java/com/sooka/utils/Const.java
  20. 47 0
      sooka-auth/src/main/java/com/sooka/utils/DateUtils.java
  21. 201 0
      sooka-auth/src/main/java/com/sooka/utils/HttpUtil.java
  22. 130 0
      sooka-auth/src/main/java/com/sooka/utils/SecretKeyUtil.java
  23. 73 0
      sooka-auth/src/main/resources/application-dev.yml
  24. 70 0
      sooka-auth/src/main/resources/application-prod.yml
  25. 14 0
      sooka-auth/src/main/resources/application.yml
  26. 8 0
      sooka-auth/src/main/resources/bootstrap.yml
  27. 36 0
      sooka-auth/src/main/resources/mapper/AuthCNMDMapper.xml
  28. 10 0
      sooka-auth/src/main/resources/mapper/JxmMapper.xml
  29. 16 0
      sooka-auth/src/test/java/com/sooka/AuthApplicationTests.java
  30. 73 0
      sooka-auth/target/classes/application-dev.yml
  31. 70 0
      sooka-auth/target/classes/application-prod.yml
  32. 14 0
      sooka-auth/target/classes/application.yml
  33. 8 0
      sooka-auth/target/classes/bootstrap.yml
  34. BIN
      sooka-auth/target/classes/com/sooka/AuthApplication.class
  35. BIN
      sooka-auth/target/classes/com/sooka/ServletInitializer.class
  36. BIN
      sooka-auth/target/classes/com/sooka/api/ZsjApi.class
  37. BIN
      sooka-auth/target/classes/com/sooka/exception/ServiceExceptionHandler.class
  38. BIN
      sooka-auth/target/classes/com/sooka/mapper/AuthCNMDMapper.class
  39. BIN
      sooka-auth/target/classes/com/sooka/mapper/AuthMapper.class
  40. BIN
      sooka-auth/target/classes/com/sooka/model/db/IntDetailed.class
  41. BIN
      sooka-auth/target/classes/com/sooka/model/db/IntDetailed_SP.class
  42. BIN
      sooka-auth/target/classes/com/sooka/network/http/Http.class
  43. BIN
      sooka-auth/target/classes/com/sooka/network/http/HttpQueue.class
  44. BIN
      sooka-auth/target/classes/com/sooka/network/http/HttpRequest.class
  45. BIN
      sooka-auth/target/classes/com/sooka/service/AuthService.class
  46. BIN
      sooka-auth/target/classes/com/sooka/service/impl/AuthServiceImpl.class
  47. BIN
      sooka-auth/target/classes/com/sooka/utils/Const.class
  48. BIN
      sooka-auth/target/classes/com/sooka/utils/DateUtils.class
  49. BIN
      sooka-auth/target/classes/com/sooka/utils/HttpUtil.class
  50. BIN
      sooka-auth/target/classes/com/sooka/utils/SecretKeyUtil.class
  51. 36 0
      sooka-auth/target/classes/mapper/AuthCNMDMapper.xml
  52. 10 0
      sooka-auth/target/classes/mapper/JxmMapper.xml
  53. 3 0
      sooka-auth/target/maven-archiver/pom.properties
  54. 18 0
      sooka-auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  55. 17 0
      sooka-auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  56. 1 0
      sooka-auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
  57. 1 0
      sooka-auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
  58. BIN
      sooka-auth/target/sooka-auth-0.0.1-SNAPSHOT.jar
  59. BIN
      sooka-auth/target/sooka-auth-0.0.1-SNAPSHOT.jar.original
  60. 3 0
      sooka-auth/target/surefire-reports/2023-06-26T23-32-46_487.dumpstream
  61. 3 0
      sooka-auth/target/surefire-reports/2023-06-27T09-35-00_083.dumpstream
  62. 3 0
      sooka-auth/target/surefire-reports/2023-06-27T09-53-11_632.dumpstream
  63. 3 0
      sooka-auth/target/surefire-reports/2023-06-27T11-00-07_945.dumpstream
  64. 3 0
      sooka-auth/target/surefire-reports/2023-06-27T13-50-49_397.dumpstream
  65. 3 0
      sooka-auth/target/surefire-reports/2023-07-07T10-57-05_331.dumpstream
  66. 3 0
      sooka-auth/target/surefire-reports/2023-07-07T11-19-59_728.dumpstream
  67. 65 0
      sooka-auth/target/surefire-reports/TEST-com.sooka.AuthApplicationTests.xml
  68. 4 0
      sooka-auth/target/surefire-reports/com.sooka.AuthApplicationTests.txt
  69. BIN
      sooka-auth/target/test-classes/com/sooka/AuthApplicationTests.class
  70. 132 0
      sooka-common/pom.xml
  71. 117 0
      sooka-common/sooka-common.iml
  72. 37 0
      sooka-common/src/main/java/com/sooka/enums/ResultEnum.java
  73. 60 0
      sooka-common/src/main/java/com/sooka/model/ResultModel.java
  74. 36 0
      sooka-common/src/main/java/com/sooka/utils/MyMapper.java
  75. BIN
      sooka-common/target/classes/com/sooka/enums/ResultEnum.class
  76. BIN
      sooka-common/target/classes/com/sooka/model/ResultModel.class
  77. BIN
      sooka-common/target/classes/com/sooka/utils/MyMapper.class
  78. 5 0
      sooka-common/target/maven-archiver/pom.properties
  79. 3 0
      sooka-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  80. 3 0
      sooka-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  81. BIN
      sooka-common/target/sooka-common-0.0.1-SNAPSHOT.jar
  82. 14 0
      sooka-gateway/HELP.md
  83. 88 0
      sooka-gateway/pom.xml
  84. 187 0
      sooka-gateway/sooka-gateway.iml
  85. 19 0
      sooka-gateway/src/main/java/com/sooka/gateway/GatewayApplication.java
  86. 49 0
      sooka-gateway/src/main/java/com/sooka/gateway/config/FeignConfig.java
  87. 37 0
      sooka-gateway/src/main/java/com/sooka/gateway/config/MyCorsConfiguration.java
  88. 23 0
      sooka-gateway/src/main/java/com/sooka/gateway/feign/DeptFeignService.java
  89. 124 0
      sooka-gateway/src/main/java/com/sooka/gateway/filter/AuthAndLogFilter.java
  90. 64 0
      sooka-gateway/src/main/java/com/sooka/gateway/utils/R.java
  91. 37 0
      sooka-gateway/src/main/resources/application.yml
  92. 8 0
      sooka-gateway/src/main/resources/bootstrap.yml
  93. 13 0
      sooka-gateway/src/test/java/com/sooka/gateway/GatewayApplicationTests.java
  94. 37 0
      sooka-gateway/target/classes/application.yml
  95. 8 0
      sooka-gateway/target/classes/bootstrap.yml
  96. BIN
      sooka-gateway/target/classes/com/sooka/gateway/GatewayApplication.class
  97. BIN
      sooka-gateway/target/classes/com/sooka/gateway/config/FeignConfig.class
  98. BIN
      sooka-gateway/target/classes/com/sooka/gateway/config/MyCorsConfiguration.class
  99. BIN
      sooka-gateway/target/classes/com/sooka/gateway/feign/DeptFeignService.class
  100. 0 0
      sooka-gateway/target/classes/com/sooka/gateway/filter/AuthAndLogFilter.class

+ 6 - 0
.idea/vcs.xml

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

+ 23 - 0
pom.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.sooka.s-cloud</groupId>
+    <artifactId>s-cloud</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>s-cloud</name>
+    <description>聚合服务</description>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>sooka-gateway</module>
+        <module>sooka-common</module>
+        <module>sooka-jersey</module>
+        <module>sooka-auth</module>
+        <!--<module>zsj-api</module>-->
+        <module>test-api</module>
+    </modules>
+
+
+
+</project>

+ 12 - 0
s-cloud.iml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 59 - 0
sooka-auth/pom.xml

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.1.7.RELEASE</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <groupId>com.sooka</groupId>
+    <artifactId>sooka-auth</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>jar</packaging>
+    <name>sooka-auth</name>
+    <description>sooka-auth</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>com.sooka</groupId>
+            <artifactId>sooka-common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 159 - 0
sooka-auth/sooka-auth.iml

@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+    <facet type="web" name="Web">
+      <configuration>
+        <webroots />
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/src/main/java" />
+          <root url="file://$MODULE_DIR$/src/main/resources" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="sooka-common" />
+    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.17" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.1" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-starter:2.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-core:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-base:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-weekend:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-spring:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-extra:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-autoconfigure:2.1.5" level="project" />
+    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.8" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:28.0-jre" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.checkerframework:checker-qual:2.8.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.28" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-nacos-discovery:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-client:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-common:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-api:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
+    <orderEntry type="library" name="Maven: io.prometheus:simpleclient:0.5.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.1.6.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.60" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.60" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-archaius:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-core:0.7.6" level="project" />
+    <orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.8" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.ribbon:ribbon-transport:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-contexts:0.4.9" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-servo:0.4.9" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.hystrix:hystrix-core:1.4.3" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: javax.inject:javax.inject:1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty:0.4.9" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-core:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-httpclient:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpclient:4.5.9" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-client:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-core:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey.contribs:jersey-apache-client4:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.servo:servo-core:0.10.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.servo:servo-internal:0.10.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-commons-util:0.1.1" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-loadbalancer:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-statistics:0.1.1" level="project" />
+    <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.3.8" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-nacos-config:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.11.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.11.2" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.26" level="project" />
+    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.23" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.9" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.9" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.22" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.22" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.22" level="project" />
+    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.17.Final" level="project" />
+    <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.1.7.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.11.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.23.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.9.16" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.9.16" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.1.9.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.6.3" level="project" />
+  </component>
+</module>

+ 15 - 0
sooka-auth/src/main/java/com/sooka/AuthApplication.java

@@ -0,0 +1,15 @@
+package com.sooka;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@EnableDiscoveryClient
+@SpringBootApplication
+public class AuthApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(AuthApplication.class, args);
+    }
+
+}

+ 13 - 0
sooka-auth/src/main/java/com/sooka/ServletInitializer.java

@@ -0,0 +1,13 @@
+package com.sooka;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+public class ServletInitializer extends SpringBootServletInitializer {
+
+    @Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+        return application.sources(AuthApplication.class);
+    }
+
+}

+ 34 - 0
sooka-auth/src/main/java/com/sooka/api/ZsjApi.java

@@ -0,0 +1,34 @@
+package com.sooka.api;
+
+import com.sooka.enums.ResultEnum;
+import com.sooka.model.ResultModel;
+import com.sooka.service.AuthService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/")
+public class ZsjApi {
+
+    @Autowired
+    private AuthService authService;
+
+    // POST 增加 提交表单
+    // GET 查询 获取列表信息
+    // DELETE 删除
+    // PUT 修改
+
+    @GetMapping("/test")
+    public ResultModel auth(String secretKey, String intCode) {
+
+        if (StringUtils.isEmpty(secretKey) || StringUtils.isEmpty(intCode)) {
+            return ResultModel.error(ResultEnum.PARAM_EMPTY);
+        }
+
+        return authService.auth(secretKey, intCode);
+    }
+
+}

+ 35 - 0
sooka-auth/src/main/java/com/sooka/exception/ServiceExceptionHandler.java

@@ -0,0 +1,35 @@
+package com.sooka.exception;
+
+import com.sooka.model.ResultModel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import javax.servlet.http.HttpServletRequest;
+import java.net.ConnectException;
+
+@RestControllerAdvice
+@Slf4j
+public class ServiceExceptionHandler {
+
+    @ExceptionHandler(value = Exception.class)
+    public ResultModel defaultErrorHandler(HttpServletRequest req, Exception e) {
+        log.error("======" + req.getContextPath() + ":" + e.getMessage());
+        return ResultModel.error(e.getMessage());
+
+    }
+
+    @ExceptionHandler(value = ConnectException.class)
+    public ResultModel defaultErrorHandler(HttpServletRequest req, ConnectException e) {
+        log.error("======" + req.getContextPath() + ":" + e.getMessage());
+        return ResultModel.error(e.getMessage());
+
+    }
+
+    @ExceptionHandler(value = NullPointerException.class)
+    public ResultModel defaultErrorHandler(HttpServletRequest req, NullPointerException e) {
+        log.error("======" + req.getContextPath() + ":" + e.getMessage());
+        return ResultModel.error(e.getMessage());
+
+    }
+}

+ 30 - 0
sooka-auth/src/main/java/com/sooka/mapper/AuthCNMDMapper.java

@@ -0,0 +1,30 @@
+package com.sooka.mapper;
+
+
+import com.sooka.model.db.IntDetailed;
+import com.sooka.model.db.IntDetailed_SP;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * TODO
+ *
+ * 中央必备映射器目录
+ * CentralNecessaryMappersDirectory
+ *
+ * @author wangzhe
+ * @date 2023-06-17 09:56:17
+ */
+
+@Mapper
+public interface AuthCNMDMapper {
+
+    /**
+     * 查询申请记录明细
+     *
+     * @param intDetailed 查询条件
+     * @return 申请明细集合
+     */
+    public List<IntDetailed_SP> selectIntDetailedList(IntDetailed_SP intDetailed);
+}

+ 16 - 0
sooka-auth/src/main/java/com/sooka/mapper/AuthMapper.java

@@ -0,0 +1,16 @@
+package com.sooka.mapper;
+
+import com.sooka.model.db.IntDetailed;
+import com.sooka.utils.MyMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/******************************
+ * TODO
+ * @author yanhongliang
+ * @date 2020-06-23 15:59
+ ******************************/
+
+@Mapper
+public interface AuthMapper extends MyMapper<IntDetailed> {
+
+}

+ 65 - 0
sooka-auth/src/main/java/com/sooka/model/db/IntDetailed.java

@@ -0,0 +1,65 @@
+package com.sooka.model.db;
+
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+/******************************
+ * 吉祥码
+ * @author yanhongliang
+ * @date 2020-07-09 10:04
+ ******************************/
+
+@Table(name = "int_detailed")
+@Getter
+@Setter
+public class IntDetailed {
+
+    @Id
+    private String id;
+
+    /** 接口编码 */
+    @Column
+    private String intCode;
+
+    /** 记录表id */
+    @Column
+    private String recordId;
+
+    /** 接口表id */
+    @Column
+    private String intId;
+
+    /** 开始时间 */
+//    @Column
+//    private String strAt;
+
+    /** 结束时间 */
+//    @Column
+//    private String endAt;
+
+    /** secret_key */
+    @Column
+    private String secretKey;
+
+    /** 状态 */
+//    @Column
+//    private String status;
+
+    @Override
+    public String toString() {
+        return "IntDetailed{" +
+                "id='" + id + '\'' +
+                ", recordId='" + recordId + '\'' +
+                ", intId='" + intId + '\'' +
+//                ", strAt='" + strAt + '\'' +
+//                ", endAt='" + endAt + '\'' +
+                ", secretKey='" + secretKey + '\'' +
+//                ", status='" + status + '\'' +
+                '}';
+    }
+}

+ 52 - 0
sooka-auth/src/main/java/com/sooka/model/db/IntDetailed_SP.java

@@ -0,0 +1,52 @@
+package com.sooka.model.db;
+
+//import com.sooka.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 申请明细对象 int_detailed
+ *
+ * @author yhliang
+ * @date 2021-07-06
+ */
+@Data
+public class IntDetailed_SP // extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private String id;
+
+    private String subId;
+
+    /** 记录表id */
+    private String recordId;
+
+    /** 接口表id */
+    private String intId;
+
+    /** 接口名称 */
+    private String interfaceName;
+
+    /** 接口地址 */
+    private String interfaceAddress;
+
+    /** 接口编码 */
+    private String code;
+
+    /** 接口编码 二期 */
+    private String codeSp;
+
+    /** secret_key */
+    private String secretKey;
+
+    /** secret_content */
+    private String secretContent;
+
+    /** 用途 */
+    private String purpose;
+
+    /** 附件 */
+    private String file;
+
+}

+ 88 - 0
sooka-auth/src/main/java/com/sooka/network/http/Http.java

@@ -0,0 +1,88 @@
+package com.sooka.network.http;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * Created by yanhongliang on 16/6/14.
+ */
+public class Http {
+
+    public interface SignParams {
+        String signParams(String params);
+    }
+
+    static public void setOnSignParams(SignParams signParams) {
+        onSignParams = signParams;
+    }
+    static private SignParams onSignParams;
+
+    static public String stringFromParams(Map<String, Object> post) {
+
+        StringBuilder buffer = new StringBuilder();
+
+        if (post == null) return null;
+
+        ArrayList<String> keys = new ArrayList<>(post.size());
+        keys.addAll(post.keySet());
+        Collections.sort(keys);
+
+        for (String key : keys) {
+            Object value = post.get(key);
+            if (buffer.length() > 0) buffer.append("&");
+            buffer.append(key);
+            buffer.append("=");
+            try {
+                buffer.append(URLEncoder.encode(String.valueOf(value), "UTF-8"));
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        }
+
+        String paramsString = new String(buffer);
+
+        if (onSignParams != null) {
+            paramsString = onSignParams.signParams(paramsString);
+        }
+
+        return paramsString;
+    }
+
+    public static String getMd5(String string) {
+
+        byte[] hash;
+
+        try {
+
+            hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));
+
+        } catch (NoSuchAlgorithmException e) {
+
+            throw new RuntimeException("Huh, MD5 should be supported?", e);
+
+        } catch (UnsupportedEncodingException e) {
+
+            throw new RuntimeException("Huh, UTF-8 should be supported?", e);
+
+        }
+
+
+        StringBuilder hex = new StringBuilder(hash.length * 2);
+
+        for (byte b : hash) {
+
+            if ((b & 0xFF) < 0x10) hex.append("0");
+
+            hex.append(Integer.toHexString(b & 0xFF));
+
+        }
+
+        return hex.toString();
+
+    }
+}

+ 12 - 0
sooka-auth/src/main/java/com/sooka/network/http/HttpQueue.java

@@ -0,0 +1,12 @@
+package com.sooka.network.http;
+
+/******************************
+ * TODO
+ * @author yanhongliang
+ * @date 2020-09-28 15:32
+ ******************************/
+
+public class HttpQueue {
+
+
+}

+ 86 - 0
sooka-auth/src/main/java/com/sooka/network/http/HttpRequest.java

@@ -0,0 +1,86 @@
+package com.sooka.network.http;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.http.*;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Map;
+
+/******************************
+ * TODO
+ * @author yanhongliang
+ ******************************/
+
+@Component
+public class HttpRequest {
+
+    private static RestTemplate restTemplate;
+
+    private static HttpHeaders headers;
+
+    static {
+        restTemplate= new RestTemplate();
+        headers = new HttpHeaders();
+    }
+
+    public JSONObject get (String url, Map<String, Object> parameter) throws Exception {
+        return sendRequest(url, HttpMethod.GET, null, parameter);
+    }
+
+    public JSONObject get (String url, Map<String, Object> header, Map<String, Object> parameter) throws Exception {
+        return sendRequest(url, HttpMethod.GET, header, parameter);
+    }
+
+    public JSONObject post (String url, Map<String, Object> parameter) throws Exception {
+        return sendRequest(url, HttpMethod.POST, null, parameter);
+    }
+
+    public JSONObject post (String url, Map<String, Object> header, Map<String, Object> parameter) throws Exception {
+        return sendRequest(url, HttpMethod.POST, header, parameter);
+    }
+
+    private JSONObject sendRequest (String url, HttpMethod method, Map<String, Object> header, Map<String, Object> parameter) throws Exception {
+
+        if (StringUtils.isEmpty(url)) {
+            return null;
+        }
+
+        try {
+
+            headers.setContentType(MediaType.APPLICATION_JSON);
+            if (header != null) {
+                for (Map.Entry<String, Object> entry : header.entrySet()) {
+                    headers.set(entry.getKey(), entry.getValue().toString());
+                }
+            }
+
+            HttpEntity<Map<String, Object>> httpEntity = null;
+            if (method == HttpMethod.GET) {
+                url = url + "?" + Http.stringFromParams(parameter);
+                httpEntity = new HttpEntity<>(headers);
+            } else if (method == HttpMethod.POST) {
+                httpEntity = new HttpEntity<>(parameter, headers);
+            }
+
+            System.out.println("------------"+url);
+
+            ResponseEntity<String> o = restTemplate.exchange(url, method, httpEntity, String.class);
+
+            int code = o.getStatusCode().value();
+
+            if (200 != code) {
+                return null;
+            }
+
+            return JSONObject.parseObject(o.getBody());
+
+        }catch (Exception e) {
+            e.printStackTrace();
+            throw new Exception(e.getMessage());
+        }
+
+    }
+
+}

+ 10 - 0
sooka-auth/src/main/java/com/sooka/service/AuthService.java

@@ -0,0 +1,10 @@
+package com.sooka.service;
+
+
+import com.sooka.model.ResultModel;
+
+public interface AuthService {
+
+    ResultModel auth(String secretKey, String intCode);
+
+}

+ 121 - 0
sooka-auth/src/main/java/com/sooka/service/impl/AuthServiceImpl.java

@@ -0,0 +1,121 @@
+package com.sooka.service.impl;
+
+import com.sooka.enums.ResultEnum;
+import com.sooka.mapper.AuthCNMDMapper;
+import com.sooka.model.ResultModel;
+import com.sooka.model.db.IntDetailed;
+import com.sooka.model.db.IntDetailed_SP;
+import com.sooka.service.AuthService;
+import com.sooka.mapper.AuthMapper;
+import com.sooka.utils.SecretKeyUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import tk.mybatis.mapper.entity.Example;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+public class AuthServiceImpl implements AuthService {
+
+    @Resource
+    private AuthCNMDMapper authCNMDMapper;
+//    @Autowired
+//    private AuthMapper authMapper;
+
+    @Override
+    public ResultModel auth(String secretKey, String intCode) {
+        System.out.println("进入 com.sooka.service.impl");
+//        Example userExample = new Example(IntDetailed.class);
+//        Example.Criteria criteria = userExample.createCriteria();
+
+        // 小于等于
+        // 原授权码到期验证
+        // criteria.andLessThanOrEqualTo("strAt", DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
+
+        // 大于等于
+        // 原授权码到期验证
+        // criteria.andGreaterThanOrEqualTo("endAt", DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
+
+        // 等于
+//        criteria.andEqualTo("secretKey", secretKey);
+
+//        List<IntDetailed> list = authMapper.selectByExample(userExample);
+
+        IntDetailed_SP intDetailedParam = new IntDetailed_SP();
+        intDetailedParam.setSecretKey(secretKey);
+        System.out.println("start querying...");
+        List<IntDetailed_SP> list = authCNMDMapper.selectIntDetailedList(intDetailedParam);
+        System.out.println("query finished. list.size=" + list.size());
+
+
+        // 原授权码到期验证
+        // if (list == null || list.size() != 1) {
+        //     return ResultModel.error(ResultEnum.ERROR_AUTH_EXPIRES);
+        // }
+        // IntDetailed intDetailed = list.get(0);
+
+        // 新授权码到期验证
+        boolean isAuthExpires;
+        IntDetailed_SP intDetailed;
+        if(list == null){
+            System.out.println("无此密钥" + secretKey);
+        }else if(list.size() == 0){
+            System.out.println("存在0个密钥" + secretKey);
+        }else if(list.size() > 1){
+            System.out.println("存在多个异常密钥" + secretKey);
+        }else if(list.size() == 1){
+            System.out.println("存在1个密钥 secretKey=" + list.get(0).getSecretKey());
+        }
+        if (list != null && list.size() == 1) {
+            intDetailed = list.get(0);
+            if(intDetailed.getRecordId() != null){ // 新接口解析密钥判断授权时效
+                // 解密后的明文是:123/政数局/2022-10-20 - 2022-10-29/b29c94d72ee74c6d94b573d90020ea59
+//                String duration = SecretKeyUtil.AESDncode("3fc674da58", intDetailed.getSecretKey().split("/")[2]);
+                String secret_key = intDetailed.getSecretKey();
+                System.out.println("secret_key=" + secret_key);
+                String secret_content = SecretKeyUtil.AESDncode("3fc674da58", secret_key);
+                System.out.println("secret_content=" + secret_content);
+                String duration = secret_content.split("/")[2];
+//                String duration = intDetailed.getSecretContent().split("/")[2];
+                System.out.println("duration=" + duration);
+                // 2022-10-20 - 2022-10-29
+                String startTime = duration.split(" - ")[0];
+                String endTime = duration.split(" - ")[1];
+                String nowTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+                if(nowTime.compareTo(startTime) != -1 && endTime.compareTo(nowTime) != -1){
+                    isAuthExpires = false; // 授权有效
+                    System.out.println("授权有效");
+                }else {
+                    isAuthExpires = true; // 授权已到期
+                    System.out.println("授权已到期");
+                }
+            }else { // legacy
+                isAuthExpires = false; // 旧接口按照原密钥接收数据,授权长期有效
+                System.out.println("旧接口按照原密钥接收数据,授权长期有效");
+            }
+        }else { // 授权失效或无此密钥及存在多个异常密钥,提示授权码到期请重新申请
+            String a ="1HjlUwOjkNCuvi+E8+r+4oYWPV1lDMF6l8E7GovGe9h4GtK4nDBXQKirD57TTku+08MHkHsS04X8xpKGQTrNOxG5LfweCxtHbmoUczwF9Y8=";
+            intDetailed = null;
+            isAuthExpires = true;
+            System.out.println("授权失效或无此密钥及存在多个异常密钥,提示授权码到期请重新申请");
+        }
+         if (isAuthExpires) {
+             return ResultModel.error(ResultEnum.ERROR_AUTH_EXPIRES);
+         }
+
+        if (!Objects.equals(intCode, intDetailed.getCode()) && !Objects.equals(intCode, intDetailed.getCodeSp())) {// 旧秘钥验证 && 新秘钥验证
+            return ResultModel.error(ResultEnum.ERROR_INT_SECRET_KEY_MISMATCH);
+        }
+
+        // // 原申请接口状态验证
+        // if (!"1".equalsIgnoreCase(intDetailed.getStatus())) {
+        //     return ResultModel.error(ResultEnum.ERROR_INTERFACE_DISABLED);
+        // }
+
+        return ResultModel.ok(list);
+    }
+}

+ 118 - 0
sooka-auth/src/main/java/com/sooka/utils/Const.java

@@ -0,0 +1,118 @@
+package com.sooka.utils;
+
+public interface Const {
+
+    String base_url = "http://192.168.1.139:5521/FH_DC";
+
+    //登录
+    String login_url = base_url + "/app/login";
+    //token标识
+    String check_token_url = base_url + "/app/checkToken";
+    //修改密码
+    String update_password_url = base_url+"/app/updatePassword";
+    //部门排名列表
+    String deptlist_url =base_url+"/app/deptlist";
+    //部门扣分详情
+    String detailslist_url=base_url+"/app/detailslist";
+    //部门排名搜索
+    String deptlistSearch_url=base_url+"/app/deptlistSearch";
+    //考核规则
+    String ruleslist_url=base_url+"/app/ruleslist";
+    //查询数据字典列表
+    String dictionaries_url=base_url+"/app/dictionaries";
+    //单项任务新增接口
+    String addTask_url=base_url+"/app/addTask";
+    //统计分析接口
+    String statisticallist_url=base_url+"/app/statisticallist";
+    //任务来源统计详情列表
+    String rwlylist_url=base_url+"/app/rwlylist";
+    //任务类型统计详情列表
+    String rwlxlist_url=base_url+"/app/rwlxlist";
+    //分管领导统计详情列表
+    String fgldlist_url=base_url+"/app/fgldlist";
+    //部门台账统计详情列表
+    String bmtzlist_url=base_url+"/app/bmtzlist";
+    //关注度统计详情列表
+    String gzdlist_url=base_url+"/app/gzdlist";
+    //领导、督查首页数量统计接口
+    String ldCount_url=base_url+"/app/ldCount";
+    //承办首页数量统计接口
+    String cbCount_url=base_url+"/app/cbCount";
+    //进行中任务列表接口
+    String conductlist_url=base_url+"/app/conductlist";
+    //新任务列表接口
+    String newTasklist_url=base_url+"/app/newTasklist";
+    //预警任务列表接口
+    String earlyWarninglist_url=base_url+"/app/earlyWarninglist";
+    //逾期任务列表接口
+    String beOverduelist_url=base_url+"/app/beOverduelist";
+    //办结任务列表接口
+    String getThroughlist_url=base_url+"/app/getThroughlist";
+    //延期任务列表接口
+    String delaylist_url=base_url+"/app/delaylist";
+    //待下发任务列表接口
+    String stayDownlist_url=base_url+"/app/stayDownlist";
+    //全部任务列表接口
+    String tasklist_url=base_url+"/app/tasklist";
+    //任务基础信息接口
+    String taskShow_url=base_url+"/app/taskShow";
+    //任务部门流程详情页面
+    String taskShowbm_url=base_url+"/app/taskShowbm";
+    //我关注的、我相关的、我分管的、领导相关、领导关注列表接口
+    String personalCenterList_url=base_url+"/app/personalCenterList";
+    //延期数量统计列表
+    String selectDelay_url=base_url+"/app/selectDelay";
+    //关注数量统计列表
+    String selectFollow_url=base_url+"/app/selectFollow";
+    //签收
+    String qs_url=base_url+"/app/qs";
+    //钮部署
+    String goBs_url=base_url+"/app/goBs";
+    //申请退回
+    String sqth_url=base_url+"/app/sqth";
+    //流钮驳回申请退回
+    String thqs_url=base_url+"/app/thqs";
+    //同意申请退回
+    String tyqsth_url=base_url+"/app/tyqsth";
+    //去反馈页面
+    String gofk_url=base_url+"/app/gofk";
+    //反馈
+    String fk_url=base_url+"/app/fk";
+    //去申请延期页面
+    String goSqyq_url=base_url+"/app/goSqyq";
+    //申请延期
+    String sqyq_url=base_url+"/app/sqyq";
+    //去审批延期页面
+    String goSpyq_url=base_url+"/app/goSpyq";
+    //审批延期操作接口
+    String spyq_url=base_url+"/app/spyq";
+    //申请办结接口
+    String sqbj_url=base_url+"/app/sqbj";
+    //退回申请办结接口
+    String tybj_url=base_url+"/app/tybj";
+    //同意申请办结存接口
+    String thbj_url=base_url+"/app/thbj";
+    //任务时间节点-节点数据详情接口
+    String taskShowjd_url=base_url+"/app/taskShowjd";
+    //任务时间节点-部门数据
+    String taskShowjdDept_url=base_url+"/app/taskShowjdDept";
+    //消息对话接口
+    String saveNews_url=base_url+"/app/saveNews";
+    //消息对话记录查询接口
+    String selectNews_url=base_url+"/app/selectNews";
+    //系统通知(消息)接口
+    String noticelist_url=base_url+"/app/noticelist";
+    //修改任务状态
+    String updateNoticeStatus_url=base_url+"/app/updateNoticeStatus";
+    //查询最新版本号
+    String versionList_url=base_url+"/app/versionList";
+    //查询最新版本号
+    String goSqbj_url=base_url+"/app/goSqbj";
+
+
+
+
+
+
+
+}

+ 47 - 0
sooka-auth/src/main/java/com/sooka/utils/DateUtils.java

@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2016-2019 人人开源 All rights reserved.
+ *
+ * https://www.renren.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.sooka.utils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 日期处理
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public class DateUtils {
+	/** 时间格式(yyyy-MM-dd) */
+	public final static String DATE_PATTERN = "yyyy-MM-dd";
+	/** 时间格式(yyyy-MM-dd HH:mm:ss) */
+	public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
+
+    /**
+     * 日期格式化 日期格式为:yyyy-MM-dd
+     * @param date  日期
+     * @return  返回yyyy-MM-dd格式日期
+     */
+	public static String format(Date date) {
+        return format(date, DATE_PATTERN);
+    }
+
+    /**
+     * 日期格式化 日期格式为:yyyy-MM-dd
+     * @param date  日期
+     * @param pattern  格式,如:DateUtils.DATE_TIME_PATTERN
+     * @return  返回yyyy-MM-dd格式日期
+     */
+    public static String format(Date date, String pattern) {
+        if(date != null){
+            SimpleDateFormat df = new SimpleDateFormat(pattern);
+            return df.format(date);
+        }
+        return null;
+    }
+}

+ 201 - 0
sooka-auth/src/main/java/com/sooka/utils/HttpUtil.java

@@ -0,0 +1,201 @@
+package com.sooka.utils;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLEncoder;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+public class HttpUtil {
+
+	public static String doGet(String geturl, String params) {
+		String realUrl = geturl + "?" + params;
+		System.out.println(realUrl);
+
+		try {
+			// 1.通过�? URL 上调�? openConnection 方法创建连接对象
+			URL url = new URL(realUrl);
+			URLConnection conn = url.openConnection();
+
+			// 2.处理设置参数和一般请求属�?
+			// 2.1设置参数
+			// 可以根据请求的需要设置参�?
+			conn.setUseCaches(false);
+			conn.setConnectTimeout(5000); // 请求超时时间
+
+			// 2.2请求属�??
+			// 设置通用的请求属�? 更多的头字段信息可以查阅HTTP协议
+			conn.setRequestProperty("accept", "*/*");
+			conn.setRequestProperty("connection", "Keep-Alive");
+
+			conn.setRequestProperty("contentType", "UTF-8");
+			// 3.使用 connect 方法建立到远程对象的实际连接�?
+			conn.connect();
+
+			// 4.远程对象变为可用。远程对象的头字段和内容变为可访问�??
+			// 4.1获取响应的头字段
+			Map<String, List<String>> headers = conn.getHeaderFields();
+			System.out.println(headers); // 输出头字�?
+
+			// 4.2获取响应正文
+			BufferedReader reader = null;
+			StringBuffer resultBuffer = new StringBuffer();
+			String tempLine = null;
+
+			reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
+			while ((tempLine = reader.readLine()) != null) {
+				resultBuffer.append(tempLine);
+			}
+			// System.out.println(resultBuffer);
+			reader.close();
+			return resultBuffer.toString();
+		} catch (MalformedURLException e) {
+			// TODO 自动生成�? catch �?
+			e.printStackTrace();
+		} catch (IOException e) {
+			// TODO 自动生成�? catch �?
+			e.printStackTrace();
+		} finally {
+
+		}
+		return null;
+
+	}
+
+	public static String doPost(String url, String param) {
+		PrintWriter out = null;
+		BufferedReader in = null;
+		String result = "";
+		try {
+			URL realUrl = new URL(url);
+			// 打开和URL之间的连�?
+			URLConnection conn = realUrl.openConnection();
+			// 设置通用的请求属�?
+			conn.setRequestProperty("accept", "*/*");
+			conn.setRequestProperty("connection", "Keep-Alive");
+			conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
+			conn.setRequestProperty("contentType", "UTF-8");
+			// 发�?�POST请求必须设置如下两行
+			conn.setDoOutput(true);
+			conn.setDoInput(true);
+			// 获取URLConnection对象对应的输出流
+			out = new PrintWriter(conn.getOutputStream());
+			// 发�?�请求参�?
+			out.print(param);
+			System.out.println(param + "#####auth#######################");
+			// flush输出流的缓冲
+			out.flush();
+			// 定义BufferedReader输入流来读取URL的响�?
+			in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
+			String line;
+			while ((line = in.readLine()) != null) {
+				result += "/n" + line;
+			}
+		} catch (Exception e) {
+			System.out.println("发�?�POST请求出现异常�?" + e);
+			e.printStackTrace();
+		}
+		// 使用finally块来关闭输出流�?�输入流
+		finally {
+			try {
+				if (out != null) {
+					out.close();
+				}
+				if (in != null) {
+					in.close();
+				}
+			} catch (IOException ex) {
+				ex.printStackTrace();
+			}
+		}
+		return result;
+	}
+
+	public static String getOsAndBrowserInfo(HttpServletRequest request) {
+		String browserDetails = request.getHeader("User-Agent");
+		String userAgent = browserDetails;
+		String user = userAgent.toLowerCase();
+
+		String os = "";
+		String browser = "";
+
+		// =================OS Info=======================
+		if (userAgent.toLowerCase().indexOf("windows") >= 0) {
+			os += "Windows";
+		}
+		if (userAgent.toLowerCase().indexOf("micromessenger") >= 0) {
+			os += "weixin";
+		}
+		if (userAgent.toLowerCase().indexOf("mac") >= 0) {
+			os += "Mac";
+		}
+		if (userAgent.toLowerCase().indexOf("x11") >= 0) {
+			os += "Unix";
+		}
+		if (userAgent.toLowerCase().indexOf("android") >= 0) {
+			os += "Android";
+		}
+		if (userAgent.toLowerCase().indexOf("iphone") >= 0) {
+			os += "IPhone";
+		}
+		{
+			os += "UnKnown, More-Info: " + userAgent;
+		}
+		// ===============Browser===========================
+		if (user.contains("edge")) {
+			browser = (userAgent.substring(userAgent.indexOf("Edge")).split(" ")[0]).replace("/", "-");
+		} else if (user.contains("msie")) {
+			String substring = userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0];
+			browser = substring.split(" ")[0].replace("MSIE", "IE") + "-" + substring.split(" ")[1];
+		} else if (user.contains("safari") && user.contains("version")) {
+			browser = (userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0] + "-"
+					+ (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
+		} else if (user.contains("opr") || user.contains("opera")) {
+			if (user.contains("opera")) {
+				browser = (userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0] + "-"
+						+ (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
+			} else if (user.contains("opr")) {
+				browser = ((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-"))
+						.replace("OPR", "Opera");
+			}
+
+		} else if (user.contains("chrome")) {
+			browser = (userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0]).replace("/", "-");
+		} else if ((user.indexOf("mozilla/7.0") > -1) || (user.indexOf("netscape6") != -1)
+				|| (user.indexOf("mozilla/4.7") != -1) || (user.indexOf("mozilla/4.78") != -1)
+				|| (user.indexOf("mozilla/4.08") != -1) || (user.indexOf("mozilla/3") != -1)) {
+			browser = "Netscape-?";
+
+		} else if (user.contains("firefox")) {
+			browser = (userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
+		} else if (user.contains("rv")) {
+			String IEVersion = (userAgent.substring(userAgent.indexOf("rv")).split(" ")[0]).replace("rv:", "-");
+			browser = "IE" + IEVersion.substring(0, IEVersion.length() - 1);
+		} else {
+			browser = "UnKnown, More-Info: " + userAgent;
+		}
+
+		return os + " --- " + browser;
+	}
+
+	public static void main(String[] args) {
+		String s = "云南";
+		s = URLEncoder.encode(s);
+
+		String str = "http://localhost:8080/tw_system/PushController_4S/sendMessage_Sign.action";
+		String parm = "ticker=" + s
+				+ "&title=bbbbb&text=bbbbb&extrafield_key=bbbbb&extrafield_value=bbbb&app_type=2&alias=77f15c6704974bd1a8dd3dd9e71c10da";
+
+		HttpUtil httpUtil = new HttpUtil();
+		// String str ="http://www.sohu.com";
+		httpUtil.doGet(str, parm);
+	}
+
+}

+ 130 - 0
sooka-auth/src/main/java/com/sooka/utils/SecretKeyUtil.java

@@ -0,0 +1,130 @@
+package com.sooka.utils;
+
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.security.SecureRandom;
+
+/**
+ * 秘钥生成器工具类
+ *
+ * @author lei_wang
+ */
+public class SecretKeyUtil {
+
+
+    /**
+     * 加密
+     * 1.构造**生成器
+     * 2.根据ecnodeRules规则初始化**生成器
+     * 3.产生**
+     * 4.创建和初始化密码器
+     * 5.内容加密
+     * 6.返回字符串
+     */
+    public static String AESEncode(String encodeRules, String content) {
+        try {
+            //1.构造**生成器,指定为AES算法,不区分大小写
+            KeyGenerator aes = KeyGenerator.getInstance("AES");
+            //2.根据ecnodeRules规则初始化**生成器
+            //生成一个128位的随机源,根据传入的字节数组
+//            aes.init(128, new SecureRandom(encodeRules.getBytes()));
+            SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
+            secureRandom.setSeed(encodeRules.getBytes());
+            aes.init(128, secureRandom);
+            //3.产生原始对称**
+            SecretKey original_key = aes.generateKey();
+            //4.获得原始对称**的字节数组
+            byte[] raw = original_key.getEncoded();
+            //5.根据字节数组生成AES**
+            SecretKey key = new SecretKeySpec(raw, "AES");
+            //6.根据指定算法AES自成密码器
+            Cipher cipher = Cipher.getInstance("AES");
+            //7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY
+            cipher.init(Cipher.ENCRYPT_MODE, key);
+            //8.获取加密内容的字节数组(这里要设置为utf-8)不然内容中如果有中文和英文混合中文就会解密为乱码
+            byte[] byte_encode = content.getBytes("utf-8");
+            //9.根据密码器的初始化方式--加密:将数据加密
+            byte[] byte_AES = cipher.doFinal(byte_encode);
+            //10.将加密后的数据转换为字符串
+            //这里用Base64Encoder中会找不到包
+            //解决办法:
+            //在项目的Build path中先移除JRE System Library,再添加库JRE System Library,重新编译后就一切正常了。
+            String AES_encode = new String(new BASE64Encoder().encode(byte_AES));
+            //11.将字符串返回
+            return AES_encode;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        //如果有错就返加nulll
+        return null;
+    }
+
+    /**
+     * 解密
+     * 解密过程:
+     * 1.同加密1-4步
+     * 2.将加密后的字符串反纺成byte[]数组
+     * 3.将加密内容解密
+     */
+    public static String AESDncode(String encodeRules, String content) {
+        try {
+            //1.构造**生成器,指定为AES算法,不区分大小写
+            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
+            //2.根据ecnodeRules规则初始化**生成器
+            //生成一个128位的随机源,根据传入的字节数组
+//            keyGenerator.init(128, new SecureRandom(encodeRules.getBytes()));
+            SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
+            secureRandom.setSeed(encodeRules.getBytes());
+            keyGenerator.init(128, secureRandom);
+            //3.产生原始对称**
+            SecretKey original_key = keyGenerator.generateKey();
+            //4.获得原始对称**的字节数组
+            byte[] raw = original_key.getEncoded();
+            //5.根据字节数组生成AES**
+            SecretKey key = new SecretKeySpec(raw, "AES");
+            //6.根据指定算法AES自成密码器
+            Cipher cipher = Cipher.getInstance("AES");
+            //7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密(Decrypt_mode)操作,第二个参数为使用的KEY
+            cipher.init(Cipher.DECRYPT_MODE, key);
+            //8.将加密并编码后的内容解码成字节数组
+            byte[] byte_content = new BASE64Decoder().decodeBuffer(content);
+            /*
+             * 解密
+             */
+            byte[] byte_decode = cipher.doFinal(byte_content);
+            String AES_decode = new String(byte_decode, "utf-8");
+            return AES_decode;
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+            e.printStackTrace();
+        }
+        //如果有错就返加nulll
+        return null;
+    }
+
+    public static void main(String[] args) {
+        /*
+         * 加密
+         */
+//        String str = SecretKeyUtil.AESEncode("3fc674da58", "123/政数局/2022-10-20 - 2022-10-29/b29c94d72ee74c6d94b573d90020ea59");
+        String str = "1HjlUwOjkNCuvi+E8+r+4oYWPV1lDMF6l8E7GovGe9h4GtK4nDBXQKirD57TTku+08MHkHsS04X8xpKGQTrNOxG5LfweCxtHbmoUczwF9Y8=";
+        System.out.println("加密后的密文是:" + str);
+
+        /*
+         * 解密
+         */
+        System.out.println("解密后的明文是:" + SecretKeyUtil.AESDncode("3fc674da58", str));
+
+        /*
+         * 解密
+         */
+        System.out.println("解密后的明文是:" + SecretKeyUtil.AESDncode("3fc674da58", "fu0uwO5T2p9Dn3j9TvhpKbC2nCDoDli1TUONB6uZH7rzXgn6vAQK+h/yjYy5iWLY/l/67wygmv825wvKmpjoxTtc3ANl4VhVxhkosEsv5Lc="));
+        System.out.println("解密后的明文是:" + SecretKeyUtil.AESDncode("3fc674da58", "1HjlUwOjkNCuvi+E8+r+4oYWPV1lDMF6l8E7GovGe9h4GtK4nDBXQKirD57TTku+08MHkHsS04X8\n" +
+                "xpKGQTrNOxG5LfweCxtHbmoUczwF9Y8="));
+    }
+}

+ 73 - 0
sooka-auth/src/main/resources/application-dev.yml

@@ -0,0 +1,73 @@
+
+spring:
+  ############################################################
+  #
+  # 配置数据源相关 使用 HikariCP 数据源
+  #
+  ############################################################
+  # jdbc_config   datasource
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+#    url: jdbc:mysql://36.97.65.105:53306/thsjzt?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+  # 互联网
+#    url: jdbc:mysql://10.0.51.4:8888/thsjzt?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+  # 政务网 Vpn
+#    url: jdbc:mysql://172.17.5.7:3306/thsjzt?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+  # 政务网 dzzw
+    url: jdbc:mysql://172.18.128.8:3306/thsjzt?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+    username: thsjzt
+    password: thsjzt
+    # Hikari will use the above plus the following to setup connection pooling
+    type: com.zaxxer.hikari.HikariDataSource
+    hikari:
+      # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没有的连接则发生SQLException,默认:30秒
+      connection-timeout: 30000
+      # 最小连接数
+      minimum-idle: 5
+      # 最大连接数
+      maximum-pool-size: 15
+      # 自动提交
+      auto-commit: true
+      # 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟
+      idle-timeout: 600000
+      # 连接池的名字
+      pool-name: DatebookHikariCP
+      # 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟1800000ms
+      max-lifetime: 28740000
+      connection-test-query: SELECT 1
+
+############################################################
+#
+# mybatis 配置
+#
+############################################################
+# mybatis \配置
+mybatis:
+  type-aliases-package: com.sooka.pojo
+  mapper-locations: classpath:mapper/*.xml
+# 通用mapper配置
+mapper:
+  mappers: com.sooka.utils.MyMapper
+  not-empty: false
+  identity: MYSQL
+
+############################################################
+#
+# Server 服务器相关配置
+#
+############################################################
+server:
+  # 配置api端口号
+  port: 5533
+  tomcat:
+    # tomcat的URI编码
+    uri-encoding: UTF-8
+
+############################################################
+#
+# 新点接口地址配置
+#
+############################################################
+xd:
+  # 基础地址
+  base_url: http://syggzy.jlsy.gov.cn/EpointWebService/rest/projectinformation

+ 70 - 0
sooka-auth/src/main/resources/application-prod.yml

@@ -0,0 +1,70 @@
+
+spring:
+  ############################################################
+  #
+  # 配置数据源相关 使用 HikariCP 数据源
+  #
+  ############################################################
+  # jdbc_config   datasource
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    #    url: jdbc:mysql://59.198.246.77:32368/jl503034?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+    #    username: jl503034
+    #    password: Cs56DIi9
+    url: jdbc:mysql://59.198.246.77:32368/jl503034?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+    username: jl503034
+    password: Cs56DIi9
+    # Hikari will use the above plus the following to setup connection pooling
+    type: com.zaxxer.hikari.HikariDataSource
+    hikari:
+      # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没有的连接则发生SQLException,默认:30秒
+      connection-timeout: 30000
+      # 最小连接数
+      minimum-idle: 5
+      # 最大连接数
+      maximum-pool-size: 15
+      # 自动提交
+      auto-commit: true
+      # 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟
+      idle-timeout: 600000
+      # 连接池的名字
+      pool-name: DatebookHikariCP
+      # 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟1800000ms
+      max-lifetime: 28740000
+      connection-test-query: SELECT 1
+  application:
+    name: zsj-api1
+  jersey:
+    application-path: api
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 192.168.1.100:8848
+
+############################################################
+#
+# mybatis 配置
+#
+############################################################
+# mybatis \配置
+mybatis:
+  type-aliases-package: com.sooka.pojo
+  mapper-locations: classpath:mapper/*.xml
+# 通用mapper配置
+mapper:
+  mappers: com.sooka.utils.MyMapper
+  not-empty: false
+  identity: MYSQL
+
+############################################################
+#
+# Server 服务器相关配置
+#
+############################################################
+server:
+  # 配置api端口号
+  port: 5522
+  tomcat:
+    # tomcat的URI编码
+    uri-encoding: UTF-8
+

+ 14 - 0
sooka-auth/src/main/resources/application.yml

@@ -0,0 +1,14 @@
+spring:
+  profiles:
+    active: dev
+  application:
+    name: sooka-auth
+  cloud:
+    nacos:
+      discovery:
+        # 政务网 Vpn
+#        server-addr: 172.17.5.4:8848
+        # 政务网 dzzw
+        server-addr: 172.18.128.78:8848
+        # 互联网
+#        server-addr: 10.0.51.4:8848

+ 8 - 0
sooka-auth/src/main/resources/bootstrap.yml

@@ -0,0 +1,8 @@
+spring:
+  application:
+    name: sooka-auth
+  cloud:
+    nacos:
+      config:
+        server-addr: 10.0.51.4:8848
+        file-extension: yaml

+ 36 - 0
sooka-auth/src/main/resources/mapper/AuthCNMDMapper.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.sooka.mapper.AuthCNMDMapper" >
+
+
+    <resultMap type="com.sooka.model.db.IntDetailed_SP" id="IntDetailedResult">
+        <result property="subId"    column="sub_id"    />
+        <result property="recordId"    column="record_id"    />
+        <result property="intId"    column="int_id"    />
+        <result property="secretKey"    column="secret_key"    />
+        <result property="secretContent"    column="secret_content"    />
+        <result property="purpose"    column="purpose"    />
+        <result property="file"    column="file"    />
+        <result property="interfaceName"    column="interface_name"    />
+        <result property="interfaceAddress"    column="interface_address"    />
+        <result property="code"    column="int_code"    />
+        <result property="codeSp"    column="code_sp"    />
+    </resultMap>
+    <select id="selectIntDetailedList" parameterType="com.sooka.model.db.IntDetailed_SP" resultMap="IntDetailedResult">
+        SELECT
+            id,
+            record_id,
+            int_id,
+            secret_key,
+            secret_content,
+            purpose,
+            file,
+            int_code,
+            (select code from t_u_interfaceinfo where id = int_id) as code_sp
+        FROM
+            int_detailed
+        WHERE
+            replace(replace(secret_key, CHAR(10), ''), CHAR(13), '') = #{secretKey}
+    </select>
+
+</mapper>

+ 10 - 0
sooka-auth/src/main/resources/mapper/JxmMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.sooka.mapper.AuthMapper" >
+
+
+    <select id="query" resultType="com.sooka.model.db.IntDetailed">
+        select * from thdqjxmsmqk
+    </select>
+
+</mapper>

+ 16 - 0
sooka-auth/src/test/java/com/sooka/AuthApplicationTests.java

@@ -0,0 +1,16 @@
+package com.sooka;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class AuthApplicationTests {
+
+    @Test
+    public void contextLoads() {
+    }
+
+}

+ 73 - 0
sooka-auth/target/classes/application-dev.yml

@@ -0,0 +1,73 @@
+
+spring:
+  ############################################################
+  #
+  # 配置数据源相关 使用 HikariCP 数据源
+  #
+  ############################################################
+  # jdbc_config   datasource
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+#    url: jdbc:mysql://36.97.65.105:53306/thsjzt?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+  # 互联网
+#    url: jdbc:mysql://10.0.51.4:8888/thsjzt?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+  # 政务网 Vpn
+#    url: jdbc:mysql://172.17.5.7:3306/thsjzt?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+  # 政务网 dzzw
+    url: jdbc:mysql://172.18.128.8:3306/thsjzt?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+    username: thsjzt
+    password: thsjzt
+    # Hikari will use the above plus the following to setup connection pooling
+    type: com.zaxxer.hikari.HikariDataSource
+    hikari:
+      # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没有的连接则发生SQLException,默认:30秒
+      connection-timeout: 30000
+      # 最小连接数
+      minimum-idle: 5
+      # 最大连接数
+      maximum-pool-size: 15
+      # 自动提交
+      auto-commit: true
+      # 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟
+      idle-timeout: 600000
+      # 连接池的名字
+      pool-name: DatebookHikariCP
+      # 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟1800000ms
+      max-lifetime: 28740000
+      connection-test-query: SELECT 1
+
+############################################################
+#
+# mybatis 配置
+#
+############################################################
+# mybatis \配置
+mybatis:
+  type-aliases-package: com.sooka.pojo
+  mapper-locations: classpath:mapper/*.xml
+# 通用mapper配置
+mapper:
+  mappers: com.sooka.utils.MyMapper
+  not-empty: false
+  identity: MYSQL
+
+############################################################
+#
+# Server 服务器相关配置
+#
+############################################################
+server:
+  # 配置api端口号
+  port: 5533
+  tomcat:
+    # tomcat的URI编码
+    uri-encoding: UTF-8
+
+############################################################
+#
+# 新点接口地址配置
+#
+############################################################
+xd:
+  # 基础地址
+  base_url: http://syggzy.jlsy.gov.cn/EpointWebService/rest/projectinformation

+ 70 - 0
sooka-auth/target/classes/application-prod.yml

@@ -0,0 +1,70 @@
+
+spring:
+  ############################################################
+  #
+  # 配置数据源相关 使用 HikariCP 数据源
+  #
+  ############################################################
+  # jdbc_config   datasource
+  datasource:
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    #    url: jdbc:mysql://59.198.246.77:32368/jl503034?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+    #    username: jl503034
+    #    password: Cs56DIi9
+    url: jdbc:mysql://59.198.246.77:32368/jl503034?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+    username: jl503034
+    password: Cs56DIi9
+    # Hikari will use the above plus the following to setup connection pooling
+    type: com.zaxxer.hikari.HikariDataSource
+    hikari:
+      # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没有的连接则发生SQLException,默认:30秒
+      connection-timeout: 30000
+      # 最小连接数
+      minimum-idle: 5
+      # 最大连接数
+      maximum-pool-size: 15
+      # 自动提交
+      auto-commit: true
+      # 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟
+      idle-timeout: 600000
+      # 连接池的名字
+      pool-name: DatebookHikariCP
+      # 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟1800000ms
+      max-lifetime: 28740000
+      connection-test-query: SELECT 1
+  application:
+    name: zsj-api1
+  jersey:
+    application-path: api
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 192.168.1.100:8848
+
+############################################################
+#
+# mybatis 配置
+#
+############################################################
+# mybatis \配置
+mybatis:
+  type-aliases-package: com.sooka.pojo
+  mapper-locations: classpath:mapper/*.xml
+# 通用mapper配置
+mapper:
+  mappers: com.sooka.utils.MyMapper
+  not-empty: false
+  identity: MYSQL
+
+############################################################
+#
+# Server 服务器相关配置
+#
+############################################################
+server:
+  # 配置api端口号
+  port: 5522
+  tomcat:
+    # tomcat的URI编码
+    uri-encoding: UTF-8
+

+ 14 - 0
sooka-auth/target/classes/application.yml

@@ -0,0 +1,14 @@
+spring:
+  profiles:
+    active: dev
+  application:
+    name: sooka-auth
+  cloud:
+    nacos:
+      discovery:
+        # 政务网 Vpn
+#        server-addr: 172.17.5.4:8848
+        # 政务网 dzzw
+        server-addr: 172.18.128.78:8848
+        # 互联网
+#        server-addr: 10.0.51.4:8848

+ 8 - 0
sooka-auth/target/classes/bootstrap.yml

@@ -0,0 +1,8 @@
+spring:
+  application:
+    name: sooka-auth
+  cloud:
+    nacos:
+      config:
+        server-addr: 10.0.51.4:8848
+        file-extension: yaml

BIN
sooka-auth/target/classes/com/sooka/AuthApplication.class


BIN
sooka-auth/target/classes/com/sooka/ServletInitializer.class


BIN
sooka-auth/target/classes/com/sooka/api/ZsjApi.class


BIN
sooka-auth/target/classes/com/sooka/exception/ServiceExceptionHandler.class


BIN
sooka-auth/target/classes/com/sooka/mapper/AuthCNMDMapper.class


BIN
sooka-auth/target/classes/com/sooka/mapper/AuthMapper.class


BIN
sooka-auth/target/classes/com/sooka/model/db/IntDetailed.class


BIN
sooka-auth/target/classes/com/sooka/model/db/IntDetailed_SP.class


BIN
sooka-auth/target/classes/com/sooka/network/http/Http.class


BIN
sooka-auth/target/classes/com/sooka/network/http/HttpQueue.class


BIN
sooka-auth/target/classes/com/sooka/network/http/HttpRequest.class


BIN
sooka-auth/target/classes/com/sooka/service/AuthService.class


BIN
sooka-auth/target/classes/com/sooka/service/impl/AuthServiceImpl.class


BIN
sooka-auth/target/classes/com/sooka/utils/Const.class


BIN
sooka-auth/target/classes/com/sooka/utils/DateUtils.class


BIN
sooka-auth/target/classes/com/sooka/utils/HttpUtil.class


BIN
sooka-auth/target/classes/com/sooka/utils/SecretKeyUtil.class


+ 36 - 0
sooka-auth/target/classes/mapper/AuthCNMDMapper.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.sooka.mapper.AuthCNMDMapper" >
+
+
+    <resultMap type="com.sooka.model.db.IntDetailed_SP" id="IntDetailedResult">
+        <result property="subId"    column="sub_id"    />
+        <result property="recordId"    column="record_id"    />
+        <result property="intId"    column="int_id"    />
+        <result property="secretKey"    column="secret_key"    />
+        <result property="secretContent"    column="secret_content"    />
+        <result property="purpose"    column="purpose"    />
+        <result property="file"    column="file"    />
+        <result property="interfaceName"    column="interface_name"    />
+        <result property="interfaceAddress"    column="interface_address"    />
+        <result property="code"    column="int_code"    />
+        <result property="codeSp"    column="code_sp"    />
+    </resultMap>
+    <select id="selectIntDetailedList" parameterType="com.sooka.model.db.IntDetailed_SP" resultMap="IntDetailedResult">
+        SELECT
+            id,
+            record_id,
+            int_id,
+            secret_key,
+            secret_content,
+            purpose,
+            file,
+            int_code,
+            (select code from t_u_interfaceinfo where id = int_id) as code_sp
+        FROM
+            int_detailed
+        WHERE
+            replace(replace(secret_key, CHAR(10), ''), CHAR(13), '') = #{secretKey}
+    </select>
+
+</mapper>

+ 10 - 0
sooka-auth/target/classes/mapper/JxmMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.sooka.mapper.AuthMapper" >
+
+
+    <select id="query" resultType="com.sooka.model.db.IntDetailed">
+        select * from thdqjxmsmqk
+    </select>
+
+</mapper>

+ 3 - 0
sooka-auth/target/maven-archiver/pom.properties

@@ -0,0 +1,3 @@
+version=0.0.1-SNAPSHOT
+groupId=com.sooka
+artifactId=sooka-auth

+ 18 - 0
sooka-auth/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -0,0 +1,18 @@
+com\sooka\model\db\IntDetailed.class
+com\sooka\mapper\AuthCNMDMapper.class
+com\sooka\ServletInitializer.class
+com\sooka\utils\HttpUtil.class
+com\sooka\service\AuthService.class
+com\sooka\network\http\HttpQueue.class
+com\sooka\service\impl\AuthServiceImpl.class
+com\sooka\AuthApplication.class
+com\sooka\network\http\Http$SignParams.class
+com\sooka\utils\SecretKeyUtil.class
+com\sooka\model\db\IntDetailed_SP.class
+com\sooka\api\ZsjApi.class
+com\sooka\mapper\AuthMapper.class
+com\sooka\network\http\Http.class
+com\sooka\utils\Const.class
+com\sooka\utils\DateUtils.class
+com\sooka\exception\ServiceExceptionHandler.class
+com\sooka\network\http\HttpRequest.class

+ 17 - 0
sooka-auth/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -0,0 +1,17 @@
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\model\db\IntDetailed_SP.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\utils\SecretKeyUtil.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\AuthApplication.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\utils\DateUtils.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\utils\HttpUtil.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\utils\Const.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\network\http\HttpRequest.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\mapper\AuthMapper.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\service\impl\AuthServiceImpl.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\mapper\AuthCNMDMapper.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\network\http\Http.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\network\http\HttpQueue.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\api\ZsjApi.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\exception\ServiceExceptionHandler.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\service\AuthService.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\model\db\IntDetailed.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\main\java\com\sooka\ServletInitializer.java

+ 1 - 0
sooka-auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst

@@ -0,0 +1 @@
+com\sooka\AuthApplicationTests.class

+ 1 - 0
sooka-auth/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst

@@ -0,0 +1 @@
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-auth\src\test\java\com\sooka\AuthApplicationTests.java

BIN
sooka-auth/target/sooka-auth-0.0.1-SNAPSHOT.jar


BIN
sooka-auth/target/sooka-auth-0.0.1-SNAPSHOT.jar.original


+ 3 - 0
sooka-auth/target/surefire-reports/2023-06-26T23-32-46_487.dumpstream

@@ -0,0 +1,3 @@
+# Created at 2023-06-26T23:33:04.101
+Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
+

+ 3 - 0
sooka-auth/target/surefire-reports/2023-06-27T09-35-00_083.dumpstream

@@ -0,0 +1,3 @@
+# Created at 2023-06-27T09:35:16.527
+Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
+

+ 3 - 0
sooka-auth/target/surefire-reports/2023-06-27T09-53-11_632.dumpstream

@@ -0,0 +1,3 @@
+# Created at 2023-06-27T09:53:25.876
+Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
+

+ 3 - 0
sooka-auth/target/surefire-reports/2023-06-27T11-00-07_945.dumpstream

@@ -0,0 +1,3 @@
+# Created at 2023-06-27T11:00:22.439
+Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
+

+ 3 - 0
sooka-auth/target/surefire-reports/2023-06-27T13-50-49_397.dumpstream

@@ -0,0 +1,3 @@
+# Created at 2023-06-27T13:51:05.601
+Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
+

+ 3 - 0
sooka-auth/target/surefire-reports/2023-07-07T10-57-05_331.dumpstream

@@ -0,0 +1,3 @@
+# Created at 2023-07-07T10:57:26.351
+Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
+

+ 3 - 0
sooka-auth/target/surefire-reports/2023-07-07T11-19-59_728.dumpstream

@@ -0,0 +1,3 @@
+# Created at 2023-07-07T11:20:18.678
+Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
+

Разлика између датотеке није приказан због своје велике величине
+ 65 - 0
sooka-auth/target/surefire-reports/TEST-com.sooka.AuthApplicationTests.xml


+ 4 - 0
sooka-auth/target/surefire-reports/com.sooka.AuthApplicationTests.txt

@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: com.sooka.AuthApplicationTests
+-------------------------------------------------------------------------------
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.562 s - in com.sooka.AuthApplicationTests

BIN
sooka-auth/target/test-classes/com/sooka/AuthApplicationTests.class


+ 132 - 0
sooka-common/pom.xml

@@ -0,0 +1,132 @@
+<?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">
+    <parent>
+        <artifactId>s-cloud</artifactId>
+        <groupId>com.sooka.s-cloud</groupId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sooka</groupId>
+    <artifactId>sooka-common</artifactId>
+
+    <description>每一个微服务公共的依赖</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <!-- 编译时的编码 -->
+        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
+    </properties>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.13</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>2.0.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>tk.mybatis</groupId>
+            <artifactId>mapper-spring-boot-starter</artifactId>
+            <version>2.1.5</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.12</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.6</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>28.0-jre</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.28</version>
+        </dependency>
+
+        <!-- 服务注册/发现 -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jsr311-api</artifactId>
+                    <groupId>javax.ws.rs</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!--        配置中心来做配置管理-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>com.alibaba.cloud</groupId>
+                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
+                <version>2.1.0.RELEASE</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+    </build>
+
+
+
+</project>

+ 117 - 0
sooka-common/sooka-common.iml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.13" level="project" />
+    <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.0.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.0.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.13.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.13.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.13.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.26" level="project" />
+    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.13.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.13.RELEASE" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:2.7.9" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.0.13.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.13.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.0.13.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.1" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-starter:2.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-core:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-base:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-weekend:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-spring:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-extra:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-autoconfigure:2.1.5" level="project" />
+    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.12" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:28.0-jre" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.checkerframework:checker-qual:2.8.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.17" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.28" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-nacos-discovery:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-client:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-common:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.4" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-api:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.9" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.9" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
+    <orderEntry type="library" name="Maven: io.prometheus:simpleclient:0.5.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.1.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.60" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.60" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-archaius:2.1.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-core:0.7.6" level="project" />
+    <orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.8" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.ribbon:ribbon-transport:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-contexts:0.4.9" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-servo:0.4.9" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.hystrix:hystrix-core:1.4.3" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: javax.inject:javax.inject:1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty:0.4.9" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-core:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-httpclient:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpclient:4.2.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpcore:4.2.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-client:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-core:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey.contribs:jersey-apache-client4:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.servo:servo-core:0.10.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.servo:servo-internal:0.10.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-commons-util:0.1.1" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-loadbalancer:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-statistics:0.1.1" level="project" />
+    <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-nacos-config:2.1.0.RELEASE" level="project" />
+  </component>
+</module>

+ 37 - 0
sooka-common/src/main/java/com/sooka/enums/ResultEnum.java

@@ -0,0 +1,37 @@
+package com.sooka.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum ResultEnum {
+
+
+    OK(1000, "成功"),
+
+    ERROR(2000, "系统错误"),
+    PARAM_EMPTY(2001, "参数为空"),
+
+    ERROR_INVALID_SECRET_KEY(2002,"授权码无效,请填写正确的授权码"),
+    ERROR_AUTH_EXPIRES(2003,"授权码到期,请重新申请"),
+    ERROR_INTERFACE_DISABLED(2004,"该接口暂时停止使用,请稍后再试"),
+    ERROR_INT_CODE(2005,"请填写正确的接口编码"),
+    ERROR_INT_SECRET_KEY_MISMATCH(2006,"授权码与接口不匹配,请核实")
+
+    ;
+
+    /**
+     * 错误代码
+     */
+    private Integer code;
+
+    /**
+     * 提示信息
+     */
+    private String message;
+
+    ResultEnum(int code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+}

+ 60 - 0
sooka-common/src/main/java/com/sooka/model/ResultModel.java

@@ -0,0 +1,60 @@
+package com.sooka.model;
+
+import com.google.gson.annotations.Expose;
+import com.sooka.enums.ResultEnum;
+import lombok.Data;
+
+@Data
+public class ResultModel<T> {
+
+
+    //错误码
+    @Expose
+    private Integer code;
+    //提示信息
+    @Expose
+    private String message;
+    //返回数据
+    @Expose
+    private T data;
+
+
+    public static <T> ResultModel<T> ok() {
+        return new ResultModel<T>(ResultEnum.OK);
+    }
+
+    public static <T> ResultModel<T> ok(T data) {
+        return new ResultModel<T>(ResultEnum.OK, data);
+    }
+
+    public static <T> ResultModel<T> error(String message) {
+        return new ResultModel<T>(ResultEnum.ERROR.getCode(), message);
+    }
+
+    public static <T> ResultModel<T> error(ResultEnum code) {
+        return new ResultModel<T>(code);
+    }
+
+    private ResultModel(ResultEnum code) {
+        this.code = code.getCode();
+        this.message = code.getMessage();
+        this.data = null;
+    }
+
+    private ResultModel(ResultEnum code, T data) {
+        this.code = code.getCode();
+        this.message = code.getMessage();
+        this.data = data;
+    }
+
+    private ResultModel(Integer code, String message) {
+        this.code = code;
+        this.message = message;
+        this.data = null;
+    }
+
+    public ResultModel() {
+
+    }
+
+}

+ 36 - 0
sooka-common/src/main/java/com/sooka/utils/MyMapper.java

@@ -0,0 +1,36 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2014-2016 abel533@gmail.com
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+package com.sooka.utils;
+
+import tk.mybatis.mapper.common.Mapper;
+import tk.mybatis.mapper.common.MySqlMapper;
+
+/**
+ * 继承自己的MyMapper
+ */
+public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
+    //TODO
+    //FIXME 特别注意,该接口不能被扫描到,否则会出错
+}

BIN
sooka-common/target/classes/com/sooka/enums/ResultEnum.class


BIN
sooka-common/target/classes/com/sooka/model/ResultModel.class


BIN
sooka-common/target/classes/com/sooka/utils/MyMapper.class


+ 5 - 0
sooka-common/target/maven-archiver/pom.properties

@@ -0,0 +1,5 @@
+#Generated by Maven
+#Mon Jun 26 23:32:43 CST 2023
+version=0.0.1-SNAPSHOT
+groupId=com.sooka
+artifactId=sooka-common

+ 3 - 0
sooka-common/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -0,0 +1,3 @@
+com\sooka\enums\ResultEnum.class
+com\sooka\model\ResultModel.class
+com\sooka\utils\MyMapper.class

+ 3 - 0
sooka-common/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -0,0 +1,3 @@
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-common\src\main\java\com\sooka\enums\ResultEnum.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-common\src\main\java\com\sooka\utils\MyMapper.java
+D:\D\Workspaces\idea\zhongtai_100\zhongtai_100_local\thsjzt_cloud_intranet\sooka-common\src\main\java\com\sooka\model\ResultModel.java

BIN
sooka-common/target/sooka-common-0.0.1-SNAPSHOT.jar


+ 14 - 0
sooka-gateway/HELP.md

@@ -0,0 +1,14 @@
+# Getting Started
+
+### Reference Documentation
+For further reference, please consider the following sections:
+
+* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
+* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/maven-plugin/reference/html/)
+* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/maven-plugin/reference/html/#build-image)
+
+### Guides
+The following guides illustrate how to use some features concretely:
+
+* [Using Spring Cloud Gateway](https://github.com/spring-cloud-samples/spring-cloud-gateway-sample)
+

+ 88 - 0
sooka-gateway/pom.xml

@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>2.3.1.RELEASE</version>
+		<relativePath/> <!-- lookup parent from repository -->
+	</parent>
+	<groupId>com.sooka</groupId>
+	<packaging>jar</packaging>
+	<artifactId>sooka-gateway</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>sooka-gateway</name>
+	<description>API网关</description>
+
+	<properties>
+		<java.version>1.8</java.version>
+		<spring-cloud.version>Hoxton.SR6</spring-cloud.version>
+	</properties>
+
+	<dependencies>
+
+		<dependency>
+			<groupId>com.sooka</groupId>
+			<artifactId>sooka-common</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-gateway</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-openfeign</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpcore</artifactId>
+			<version>4.4.12</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+			<exclusions>
+				<exclusion>
+					<groupId>org.junit.vintage</groupId>
+					<artifactId>junit-vintage-engine</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-context</artifactId>
+			<version>2.2.3.RELEASE</version>
+		</dependency>
+
+    </dependencies>
+
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.springframework.cloud</groupId>
+				<artifactId>spring-cloud-dependencies</artifactId>
+				<version>${spring-cloud.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>

+ 187 - 0
sooka-gateway/sooka-gateway.iml

@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="sooka-common" />
+    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.20" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.1" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-starter:2.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-core:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-base:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-weekend:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-spring:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-extra:1.1.5" level="project" />
+    <orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-autoconfigure:2.1.5" level="project" />
+    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.12" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:29.0-android" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
+    <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
+    <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.28" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-nacos-discovery:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-client:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-common:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.10" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-api:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.14" level="project" />
+    <orderEntry type="library" name="Maven: io.prometheus:simpleclient:0.5.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-archaius:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.ribbon:ribbon-transport:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-contexts:0.4.9" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-servo:0.4.9" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: javax.inject:javax.inject:1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty:0.4.9" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-core:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-httpclient:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpclient:4.5.12" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-client:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey:jersey-core:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.jersey.contribs:jersey-apache-client4:1.19.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.servo:servo-core:0.12.21" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-commons-util:0.3.0" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-loadbalancer:2.3.0" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-statistics:0.1.1" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-nacos-config:2.1.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-gateway:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.9.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.64" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.64" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-gateway-core:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.1.5.Final" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
+    <orderEntry type="library" name="Maven: io.projectreactor.addons:reactor-extra:3.3.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.3.6.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-webflux:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-reactor-netty:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.projectreactor.netty:reactor-netty:0.9.8.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.50.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webflux:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.synchronoss.cloud:nio-multipart-parser:1.1.0" level="project" />
+    <orderEntry type="library" name="Maven: org.synchronoss.cloud:nio-stream-storage:1.1.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-openfeign:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-openfeign-core:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.5" level="project" />
+    <orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form-spring:3.8.0" level="project" />
+    <orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form:3.8.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.4" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.github.openfeign:feign-core:10.10.1" level="project" />
+    <orderEntry type="library" name="Maven: io.github.openfeign:feign-slf4j:10.10.1" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
+    <orderEntry type="library" name="Maven: io.github.openfeign:feign-hystrix:10.10.1" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.archaius:archaius-core:0.7.6" level="project" />
+    <orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.8" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.0" level="project" />
+    <orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.5.18" level="project" />
+    <orderEntry type="library" name="Maven: io.reactivex:rxjava:1.3.8" level="project" />
+    <orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.12" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.26" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.16.1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.6.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.3.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.10.11" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.11" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:3.3.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.2.7.RELEASE" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.2.3.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.3.3.RELEASE" level="project" />
+  </component>
+</module>

+ 19 - 0
sooka-gateway/src/main/java/com/sooka/gateway/GatewayApplication.java

@@ -0,0 +1,19 @@
+package com.sooka.gateway;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+
+@EnableFeignClients(basePackages = "com.sooka.gateway.feign")
+@EnableDiscoveryClient
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+public class GatewayApplication {
+
+	public static void main(String[] args) {
+		SpringApplication.run(GatewayApplication.class, args);
+	}
+
+}

+ 49 - 0
sooka-gateway/src/main/java/com/sooka/gateway/config/FeignConfig.java

@@ -0,0 +1,49 @@
+package com.sooka.gateway.config;
+
+import feign.Logger;
+import feign.codec.Decoder;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.ObjectFactory;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.cloud.openfeign.support.ResponseEntityDecoder;
+import org.springframework.cloud.openfeign.support.SpringDecoder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 在HTTP协议不是很规范的情况下,需要配置Decoder
+ */
+@Configuration
+public class FeignConfig {
+
+    @Bean
+    Logger.Level feignLoggerLevel() {
+        return Logger.Level.FULL;
+    }
+
+
+    @Bean
+    public Decoder feignDecoder() {
+        return new ResponseEntityDecoder(new SpringDecoder(feignHttpMessageConverter()));
+    }
+
+    private ObjectFactory<HttpMessageConverters> feignHttpMessageConverter() {
+        final HttpMessageConverters httpMessageConverters = new HttpMessageConverters(new RMappingJackson2HttpMessageConverter());
+        return () -> httpMessageConverters;
+    }
+
+    public class RMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
+        RMappingJackson2HttpMessageConverter(){
+            List<MediaType> mediaTypes = new ArrayList<>();
+            mediaTypes.add(MediaType.valueOf(MediaType.TEXT_HTML_VALUE + ";charset=UTF-8")); //关键utf-8编码
+            mediaTypes.add(MediaType.ALL);//加入所有类型数据
+            setSupportedMediaTypes(mediaTypes);
+        }
+    }
+
+}

+ 37 - 0
sooka-gateway/src/main/java/com/sooka/gateway/config/MyCorsConfiguration.java

@@ -0,0 +1,37 @@
+package com.sooka.gateway.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.reactive.CorsWebFilter;
+import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
+
+/******************************
+ * TODO
+ * @author yanhongliang
+ * @date 2020-07-02 15:56
+ ******************************/
+
+@Configuration
+public class MyCorsConfiguration {
+
+    @Bean
+    public CorsWebFilter corsWebFilter() {
+
+
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+
+        CorsConfiguration corsConfiguration = new CorsConfiguration();
+        corsConfiguration.addAllowedHeader("*");
+        corsConfiguration.addAllowedMethod("*");
+        corsConfiguration.addAllowedOrigin("*");
+        corsConfiguration.setAllowCredentials(true);
+
+
+        source.registerCorsConfiguration("/**", corsConfiguration);
+
+        return new CorsWebFilter(source);
+
+    }
+
+}

+ 23 - 0
sooka-gateway/src/main/java/com/sooka/gateway/feign/DeptFeignService.java

@@ -0,0 +1,23 @@
+package com.sooka.gateway.feign;
+
+import com.sooka.gateway.utils.R;
+import com.sooka.model.ResultModel;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+import java.util.Map;
+
+/******************************
+ * TODO
+ * @author yanhongliang
+ * @date 2020-07-21 08:39
+ ******************************/
+
+@FeignClient(value = "sooka-auth")
+public interface DeptFeignService {
+
+    @GetMapping("/test")
+    public ResultModel test(@RequestParam("secretKey") String secretKey, @RequestParam("intCode") String intCode);
+
+}

+ 124 - 0
sooka-gateway/src/main/java/com/sooka/gateway/filter/AuthAndLogFilter.java

@@ -0,0 +1,124 @@
+package com.sooka.gateway.filter;
+
+import com.alibaba.fastjson.JSONObject;
+import com.sooka.enums.ResultEnum;
+import com.sooka.gateway.feign.DeptFeignService;
+import com.sooka.model.ResultModel;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
+import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+import javax.validation.constraints.NotNull;
+import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+/******************************
+ * TODO
+ * @author yanhongliang
+ * @date 2020-07-20 16:07
+ ******************************/
+
+@RefreshScope
+@Component
+public class AuthAndLogFilter implements GlobalFilter {
+
+    @Value("${gate.ignore.startWith}")
+    private String startWith;
+
+    @Autowired
+    private DeptFeignService deptFeignService;
+
+
+    @Override
+    public Mono<Void> filter(ServerWebExchange serverWebExchange, GatewayFilterChain gatewayFilterChain) {
+
+        LinkedHashSet requiredAttribute = serverWebExchange.getRequiredAttribute(ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR);
+        ServerHttpRequest request = serverWebExchange.getRequest();
+        String requestUri = request.getPath().pathWithinApplication().value();
+
+        if (requiredAttribute != null) {
+            for (Object o : requiredAttribute) {
+                URI next = (URI) o;
+                requestUri = next.getPath();
+            }
+        }
+
+        //请求方式
+        final String method = Objects.requireNonNull(request.getMethod()).toString();
+        ServerHttpRequest.Builder mutate = request.mutate();
+        ServerHttpRequest build = mutate.build();
+
+        // 不进行拦截的地址
+        if (isStartWith(requestUri)) {
+            return gatewayFilterChain.filter(serverWebExchange.mutate().request(build).build());
+        }
+
+        List<String> secretKeys = request.getHeaders().get("secretKey");
+        String secretKey = null;
+        if (secretKeys != null) {
+            secretKey = secretKeys.get(0);
+        }
+
+        if (secretKey == null) {
+            return getVoidMono(serverWebExchange, ResultModel.error(ResultEnum.ERROR_INVALID_SECRET_KEY));
+        }
+
+        List<String> intCodes = request.getHeaders().get("intCode");
+        String intCode = null;
+        if (intCodes != null) {
+            intCode = intCodes.get(0);
+        }
+
+        if (intCode == null) {
+            return getVoidMono(serverWebExchange, ResultModel.error(ResultEnum.ERROR_INT_CODE));
+        }
+
+        // 用accessId查询接口ID、secretKey、使用时限
+        // 判断accessId是否在有效期内
+        ResultModel model = deptFeignService.test(secretKey, intCode);
+
+        if (!ResultEnum.OK.getCode().equals(model.getCode())) {
+            return getVoidMono(serverWebExchange, model);
+        }
+
+        return gatewayFilterChain.filter(serverWebExchange.mutate().request(build).build());
+    }
+
+    /**
+     * 网关抛异常
+     */
+    @NotNull
+    private Mono<Void> getVoidMono(ServerWebExchange serverWebExchange, ResultModel model) {
+        serverWebExchange.getResponse().setStatusCode(HttpStatus.OK);
+        byte[] bytes = JSONObject.toJSONString(model).getBytes(StandardCharsets.UTF_8);
+
+        DataBuffer buffer = serverWebExchange.getResponse().bufferFactory().wrap(bytes);
+        return serverWebExchange.getResponse().writeWith(Flux.just(buffer));
+    }
+
+    /**
+     * URI是否以什么打头
+     */
+    private boolean isStartWith(String requestUri) {
+        boolean flag = false;
+        for (String s : startWith.split(",")) {
+            if (requestUri.startsWith(s)) {
+                flag = true;
+            }
+        }
+        return flag;
+    }
+
+
+}

+ 64 - 0
sooka-gateway/src/main/java/com/sooka/gateway/utils/R.java

@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2016-2019 人人开源 All rights reserved.
+ *
+ * https://www.renren.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.sooka.gateway.utils;
+
+import org.apache.http.HttpStatus;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 返回数据
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public class R extends HashMap<String, Object> {
+	private static final long serialVersionUID = 1L;
+	
+	public R() {
+		put("code", 0);
+		put("msg", "success");
+	}
+	
+	public static R error() {
+		return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
+	}
+	
+	public static R error(String msg) {
+		return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
+	}
+	
+	public static R error(int code, String msg) {
+		R r = new R();
+		r.put("code", code);
+		r.put("msg", msg);
+		return r;
+	}
+
+	public static R ok(String msg) {
+		R r = new R();
+		r.put("msg", msg);
+		return r;
+	}
+	
+	public static R ok(Map<String, Object> map) {
+		R r = new R();
+		r.putAll(map);
+		return r;
+	}
+	
+	public static R ok() {
+		return new R();
+	}
+
+	public R put(String key, Object value) {
+		super.put(key, value);
+		return this;
+	}
+}

+ 37 - 0
sooka-gateway/src/main/resources/application.yml

@@ -0,0 +1,37 @@
+server:
+  port: 5509
+
+spring:
+  application:
+    name: sooka-gateway
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 172.17.5.4:8848
+#        server-addr: 10.0.51.4:8848
+    gateway:
+      discovery:
+        locator:
+          enabled: true
+          lower-case-service-id: true #发现服务命名是否要转换为小写
+      routes:
+
+        - id: auth_route
+          uri: lb://sooka-auth
+          predicates:
+            - Path=/api/auth/**
+          filters:
+            - RewritePath=/auth/(?<segment>.*),/$\{segment}
+
+
+        - id: admin_route
+          uri: lb://test-api
+          predicates:
+            - Path=/api/test/**
+          filters:
+            - RewritePath=/test/(?<segment>.*),/$\{segment}
+
+gate:
+  ignore:
+#    startWith: /auth/jwt,/app/loan/regist,/app/loan/sendSms,/admin/asyn,/app/loan/common
+    startWith: /renren-fast

+ 8 - 0
sooka-gateway/src/main/resources/bootstrap.yml

@@ -0,0 +1,8 @@
+spring:
+  application:
+    name: sooka-gateway
+  cloud:
+    nacos:
+      config:
+        server-addr: 10.0.51.4:8848
+        file-extension: yaml

+ 13 - 0
sooka-gateway/src/test/java/com/sooka/gateway/GatewayApplicationTests.java

@@ -0,0 +1,13 @@
+package com.sooka.gateway;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class GatewayApplicationTests {
+
+	@Test
+	void contextLoads() {
+	}
+
+}

+ 37 - 0
sooka-gateway/target/classes/application.yml

@@ -0,0 +1,37 @@
+server:
+  port: 5509
+
+spring:
+  application:
+    name: sooka-gateway
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 172.17.5.4:8848
+#        server-addr: 10.0.51.4:8848
+    gateway:
+      discovery:
+        locator:
+          enabled: true
+          lower-case-service-id: true #发现服务命名是否要转换为小写
+      routes:
+
+        - id: auth_route
+          uri: lb://sooka-auth
+          predicates:
+            - Path=/api/auth/**
+          filters:
+            - RewritePath=/auth/(?<segment>.*),/$\{segment}
+
+
+        - id: admin_route
+          uri: lb://test-api
+          predicates:
+            - Path=/api/test/**
+          filters:
+            - RewritePath=/test/(?<segment>.*),/$\{segment}
+
+gate:
+  ignore:
+#    startWith: /auth/jwt,/app/loan/regist,/app/loan/sendSms,/admin/asyn,/app/loan/common
+    startWith: /renren-fast

+ 8 - 0
sooka-gateway/target/classes/bootstrap.yml

@@ -0,0 +1,8 @@
+spring:
+  application:
+    name: sooka-gateway
+  cloud:
+    nacos:
+      config:
+        server-addr: 10.0.51.4:8848
+        file-extension: yaml

BIN
sooka-gateway/target/classes/com/sooka/gateway/GatewayApplication.class


BIN
sooka-gateway/target/classes/com/sooka/gateway/config/FeignConfig.class


BIN
sooka-gateway/target/classes/com/sooka/gateway/config/MyCorsConfiguration.class


BIN
sooka-gateway/target/classes/com/sooka/gateway/feign/DeptFeignService.class


+ 0 - 0
sooka-gateway/target/classes/com/sooka/gateway/filter/AuthAndLogFilter.class


Неке датотеке нису приказане због велике количине промена