small před 2 roky
rodič
revize
2793ddb43e
100 změnil soubory, kde provedl 2671 přidání a 2035 odebrání
  1. 0 1
      README.md
  2. 199 123
      pom.xml
  3. 0 27
      sckw-api/pom.xml
  4. 0 14
      sckw-api/sckw-app-api/src/main/java/com/sckw/app/AppApiApplication.java
  5. 0 21
      sckw-api/sckw-app-api/src/main/java/com/sckw/app/controller/IndexController.java
  6. 0 37
      sckw-api/sckw-app-api/src/main/resources/bootstrap-dev.yml
  7. 0 14
      sckw-api/sckw-web-api/src/main/java/com/sckw/web/WebApiApplication.java
  8. 0 21
      sckw-api/sckw-web-api/src/main/java/com/sckw/web/controller/IndexController.java
  9. 0 37
      sckw-api/sckw-web-api/src/main/resources/bootstrap-dev.yml
  10. 32 8
      sckw-auth/pom.xml
  11. 4 8
      sckw-auth/src/main/java/com/sckw/auth/AuthApplication.java
  12. 51 54
      sckw-auth/src/main/resources/bootstrap-dev.yml
  13. 129 0
      sckw-auth/src/main/resources/bootstrap-local.yml
  14. 1 1
      sckw-auth/src/main/resources/bootstrap.yml
  15. 199 0
      sckw-auth/src/main/resources/logback-spring.xml
  16. 11 14
      sckw-common/pom.xml
  17. 77 0
      sckw-common/sckw-common-bom/pom.xml
  18. 37 24
      sckw-common/sckw-common-core/pom.xml
  19. 0 28
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/config/GlobalTransactionalConfig.java
  20. 4 16
      sckw-common/sckw-common-datasource/pom.xml
  21. 0 40
      sckw-common/sckw-common-elasticsearch/pom.xml
  22. 0 495
      sckw-common/sckw-common-elasticsearch/src/main/java/com/sckw/elasticsearch/service/es/EsUtils.java
  23. 0 114
      sckw-common/sckw-common-elasticsearch/src/main/java/com/sckw/elasticsearch/service/es/autoconfigure/EsAutoConfiguration.java
  24. 0 11
      sckw-common/sckw-common-elasticsearch/src/main/java/com/sckw/elasticsearch/service/es/constants/EsConstant.java
  25. 0 39
      sckw-common/sckw-common-elasticsearch/src/main/java/com/sckw/elasticsearch/service/es/properties/EsProperties.java
  26. 0 2
      sckw-common/sckw-common-elasticsearch/src/main/resources/META-INF/spring.factories
  27. 0 1
      sckw-common/sckw-common-elasticsearch/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  28. 9 19
      sckw-common/sckw-common-excel/pom.xml
  29. 31 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/CustomCellWriteHandler.java
  30. 46 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/ExcelImportListener.java
  31. 64 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/ExcelListener.java
  32. 46 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/ExcelSelectedResolve.java
  33. 30 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/LocalDateTimeConverter.java
  34. 21 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/RequestHolder.java
  35. 36 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/RowWriteHandlerImpl.java
  36. 60 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/SelectedSheetWriteHandler.java
  37. 24 0
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/SheetExcelData.java
  38. 2 9
      sckw-common/sckw-common-mongo/pom.xml
  39. 10 20
      sckw-common/sckw-common-redis/pom.xml
  40. 5 7
      sckw-common/sckw-common-remote/pom.xml
  41. 43 0
      sckw-common/sckw-common-seata/pom.xml
  42. 28 0
      sckw-common/sckw-common-seata/src/main/java/com/sckw/seata/config/GlobalTransactionalConfig.java
  43. 39 0
      sckw-common/sckw-common-sentinel/pom.xml
  44. 6 2
      sckw-common/sckw-common-sentinel/src/main/java/com/sckw/sentinel/CustomBlockExceptionHandler.java
  45. 3 12
      sckw-common/sckw-common-stream/pom.xml
  46. 10 1
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwMessage.java
  47. 7 5
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwSms.java
  48. 0 4
      sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/utils/SmsUtil.java
  49. 15 8
      sckw-common/sckw-common-xxljob/pom.xml
  50. 0 0
      sckw-common/sckw-common-xxljob/src/main/java/com/sckw/xxljob/config/XxlJobAutoConfiguration.java
  51. 0 0
      sckw-common/sckw-common-xxljob/src/main/resources/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  52. 26 22
      sckw-gateway/pom.xml
  53. 7 3
      sckw-gateway/src/main/resources/bootstrap.yml
  54. 199 0
      sckw-gateway/src/main/resources/logback-spring.xml
  55. 3 14
      sckw-modules-api/pom.xml
  56. 8 12
      sckw-modules-api/sckw-file-api/pom.xml
  57. 3 0
      sckw-modules-api/sckw-file-api/src/main/java/com/sckw/file/api/dubbo/FileApiDubboService.java
  58. 8 7
      sckw-modules-api/sckw-message-api/pom.xml
  59. 39 0
      sckw-modules-api/sckw-modules-bom/pom.xml
  60. 12 8
      sckw-modules-api/sckw-system-api/pom.xml
  61. 6 60
      sckw-modules/pom.xml
  62. 44 51
      sckw-modules/sckw-example/pom.xml
  63. 1 6
      sckw-modules/sckw-example/src/main/java/com/sckw/example/ExampleApplication.java
  64. 0 86
      sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/EsController.java
  65. 34 7
      sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/ExcelExportController.java
  66. 9 0
      sckw-modules/sckw-example/src/main/java/com/sckw/example/dao/KwsDeptDao.java
  67. 33 31
      sckw-modules/sckw-example/src/main/java/com/sckw/example/dao/SysUserDao.java
  68. 30 0
      sckw-modules/sckw-example/src/main/java/com/sckw/example/dubbo/FileApiServiceImpl.java
  69. 18 0
      sckw-modules/sckw-example/src/main/java/com/sckw/example/model/KwsDept.java
  70. 3 4
      sckw-modules/sckw-example/src/main/java/com/sckw/example/service/ExcelExportService.java
  71. 29 74
      sckw-modules/sckw-example/src/main/resources/bootstrap-dev.yml
  72. 4 0
      sckw-modules/sckw-example/src/main/resources/bootstrap-local.yml
  73. 184 30
      sckw-modules/sckw-example/src/main/resources/logback-spring.xml
  74. 35 0
      sckw-modules/sckw-example/src/main/resources/mapper/KwsDeptDao.xml
  75. 40 41
      sckw-modules/sckw-file/pom.xml
  76. 1 7
      sckw-modules/sckw-file/src/main/java/com/sckw/file/FileApplication.java
  77. 6 0
      sckw-modules/sckw-file/src/main/java/com/sckw/file/controller/FileApiController.java
  78. 7 0
      sckw-modules/sckw-file/src/main/java/com/sckw/file/service/FileService.java
  79. 0 48
      sckw-modules/sckw-file/src/main/resouces/bootstrap-dev.yml
  80. 1 1
      sckw-modules/sckw-file/src/main/resources/banner.txt
  81. 17 38
      sckw-modules/sckw-file/src/main/resources/bootstrap-dev.yml
  82. 6 2
      sckw-modules/sckw-file/src/main/resources/bootstrap-local.yml
  83. 184 30
      sckw-modules/sckw-file/src/main/resources/logback-spring.xml
  84. 34 39
      sckw-modules/sckw-message/pom.xml
  85. 2 27
      sckw-modules/sckw-message/src/main/java/com/sckw/message/MessageApplication.java
  86. 17 2
      sckw-modules/sckw-message/src/main/java/com/sckw/message/constant/RedisConstant.java
  87. 12 4
      sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/TestMqController.java
  88. 1 1
      sckw-modules/sckw-message/src/main/java/com/sckw/message/dubbo/SmsInfoServiceImpl.java
  89. 2 2
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageUserService.java
  90. 25 22
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/MessageService.java
  91. 18 8
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java
  92. 9 6
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwSmsHandlerService.java
  93. 1 1
      sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SmsService.java
  94. 22 57
      sckw-modules/sckw-message/src/main/resources/bootstrap-dev.yml
  95. 1 15
      sckw-modules/sckw-message/src/main/resources/bootstrap.yml
  96. 1 1
      sckw-modules/sckw-message/src/main/resources/log4j2.xml
  97. 199 0
      sckw-modules/sckw-message/src/main/resources/logback-spring.xml
  98. 1 4
      sckw-modules/sckw-message/src/main/resources/mapper/KwmMessageMapper.xml
  99. 24 27
      sckw-modules/sckw-order/pom.xml
  100. 26 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/OrderApplication.java

+ 0 - 1
README.md

@@ -91,7 +91,6 @@ sckw-service-platform
 ├── sckw-ops          				    // 运维中心
 ├── sckw-common          				// 通用模块
 │       └── sckw-common-core                    // 核心模块
-│       └── sckw-common-datascope               // 权限范围
 │       └── sckw-common-datasource              // 多数据源
 │       └── sckw-common-log                     // 日志记录
 │       └── sckw-common-redis                   // 缓存服务

+ 199 - 123
pom.xml

@@ -4,44 +4,59 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>sckw-service-platform</artifactId>
     <groupId>com.sckw</groupId>
+    <artifactId>sckw-service-platform</artifactId>
     <version>1.0.0</version>
 
-    <description>微服务</description>
-    <packaging>pom</packaging>
+    <name>sckw-service-platform</name>
+    <url>http://git.sckaiwu.cn/17358629955/sckw-service-platform.git</url>
+    <description>sckw-service-platform微服务系统</description>
 
     <modules>
-        <module>sckw-auth</module>
-        <module>sckw-common</module>
-        <module>sckw-gateway</module>
         <module>sckw-modules</module>
+        <module>sckw-common</module>
         <module>sckw-modules-api</module>
-        <module>sckw-api</module>
+        <module>sckw-auth</module>
+        <module>sckw-gateway</module>
     </modules>
+    <packaging>pom</packaging>
+
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
         <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
         <spring-boot.version>3.0.5</spring-boot.version>
         <spring-cloud.version>2022.0.0</spring-cloud.version>
         <spring-cloud-alibaba.version>2022.0.0.0-RC1</spring-cloud-alibaba.version>
+
         <!--不能使用3.2.0版本,会导致redisson里面的kryo版本降低值4.2.0-->
         <dubbo.version>3.2.2</dubbo.version>
-        <nacos-client.version>2.2.1</nacos-client.version>
         <snakeyaml.version>2.0</snakeyaml.version>
-        <slf4j-log4j12.version>2.0.7</slf4j-log4j12.version>
         <springdoc.version>2.1.0</springdoc.version>
         <redisson.version>3.21.3</redisson.version>
         <fastjson.version>2.0.32</fastjson.version>
+        <easyexcel.version>3.0.5</easyexcel.version>
+        <cglib.version>3.3.0</cglib.version>
+        <commons-io.version>2.11.0</commons-io.version>
+        <alicloud-sms.version>2.2.0.RELEASE</alicloud-sms.version>
+        <oss.version>2.2.0.RELEASE</oss.version>
+        <sentinel-csp.version>1.8.6</sentinel-csp.version>
+        <nacos-client.version>2.2.1</nacos-client.version>
         <hutool.version>5.8.18</hutool.version>
+        <mybatis-plus.version>3.5.3.1</mybatis-plus.version>
+        <dynamic-datasource.version>3.6.1</dynamic-datasource.version>
+        <latest.release.version>5.2.0</latest.release.version>
         <pagehelper.version>5.3.2</pagehelper.version>
         <pagehelper-spring-boot-starter.version>1.4.7</pagehelper-spring-boot-starter.version>
         <junit.version>4.13.2</junit.version>
+        <xxljob.version>2.4.0</xxljob.version>
     </properties>
+
     <dependencyManagement>
         <dependencies>
+
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-dependencies</artifactId>
@@ -74,6 +89,26 @@
                 </exclusions>
             </dependency>
 
+            <!-- common 的依赖配置-->
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-bom</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- modules 的依赖配置-->
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-modules-bom</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+
+
             <!-- apache dubbo -->
             <dependency>
                 <groupId>org.apache.dubbo</groupId>
@@ -88,32 +123,138 @@
                     </exclusion>
                 </exclusions>
             </dependency>
-<!--&lt;!&ndash;            处理序列化问题&ndash;&gt;-->
-<!--            <dependency>-->
-<!--                <groupId>com.caucho</groupId>-->
-<!--                <artifactId>hessian</artifactId>-->
-<!--            </dependency>-->
-            <!--redisson-->
+
+            <!-- yaml/yml配置文件 -->
+            <dependency>
+                <groupId>org.yaml</groupId>
+                <artifactId>snakeyaml</artifactId>
+                <version>${snakeyaml.version}</version>
+                <!--<scope>compile</scope>-->
+            </dependency>
+
+            <!--处理序列化问题-->
+            <dependency>
+                <groupId>com.caucho</groupId>
+                <artifactId>hessian</artifactId>
+            </dependency>
+
+            <!--reids操作-->
             <dependency>
                 <groupId>org.redisson</groupId>
                 <artifactId>redisson-spring-boot-starter</artifactId>
                 <version>${redisson.version}</version>
             </dependency>
+
+            <!--alibaba fastjson-->
             <dependency>
                 <groupId>com.alibaba</groupId>
                 <artifactId>fastjson</artifactId>
                 <version>${fastjson.version}</version>
             </dependency>
 
+            <!--alibaba EasyExcel导入导出-->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>easyexcel</artifactId>
+                <version>${easyexcel.version}</version>
+            </dependency>
+
+            <!--cglib-->
+            <dependency>
+                <groupId>cglib</groupId>
+                <artifactId>cglib</artifactId>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.ow2.asm</groupId>
+                        <artifactId>asm</artifactId>
+                    </exclusion>
+                </exclusions>
+                <version>${cglib.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>commons-io</groupId>
+                <artifactId>commons-io</artifactId>
+                <version>${commons-io.version}</version>
+            </dependency>
+
+            <!--alibaba 短信-->
+            <dependency>
+                <groupId>com.alibaba.cloud</groupId>
+                <artifactId>spring-cloud-alicloud-sms</artifactId>
+                <version>${alicloud-sms.version}</version>
+            </dependency>
+
+            <!--alibaba oss-->
+            <dependency>
+                <groupId>com.alibaba.cloud</groupId>
+                <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
+                <version>${oss.version}</version>
+            </dependency>
+
+            <!-- Sentinel Datasource Nacos 持久化存储-->
+            <dependency>
+                <groupId>com.alibaba.csp</groupId>
+                <artifactId>sentinel-datasource-nacos</artifactId>
+                <version>${sentinel-csp.version}</version>
+            </dependency>
+
+            <!--nacos-->
+            <dependency>
+                <groupId>com.alibaba.nacos</groupId>
+                <artifactId>nacos-client</artifactId>
+                <version>${nacos-client.version}</version>
+            </dependency>
+
+
+            <!-- 上面排除掉了springcloud默认seata版本,此处引入和seata-server版本对应的seata包-->
+            <dependency>
+                <groupId>io.seata</groupId>
+                <artifactId>seata-spring-boot-starter</artifactId>
+                <version>1.6.1</version>
+            </dependency>
+
+            <!--jdk9+ 以上需要手动添加 JAXB能够使用Jackson对JAXB注解-->
+            <dependency>
+                <groupId>javax.xml.bind</groupId>
+                <artifactId>jaxb-api</artifactId>
+                <version>2.3.1</version>
+            </dependency>
+
             <!--hutool-->
             <dependency>
                 <groupId>cn.hutool</groupId>
-                <artifactId>hutool-bom</artifactId>
+                <artifactId>hutool-http</artifactId>
                 <version>${hutool.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-extra</artifactId>
+                <version>${hutool.version}</version>
+            </dependency>
+
+
+            <!--mybatis-plus 依赖-->
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-boot-starter</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
+            <!--多数据源-->
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+                <version>${dynamic-datasource.version}</version>
             </dependency>
 
+            <!--ShardingSphere-JDBC-->
+            <dependency>
+                <groupId>org.apache.shardingsphere</groupId>
+                <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
+                <version>${latest.release.version}</version>
+            </dependency>
+
+            <!--分页-->
             <dependency>
                 <groupId>com.github.pagehelper</groupId>
                 <artifactId>pagehelper</artifactId>
@@ -130,116 +271,51 @@
                 <version>${pagehelper-spring-boot-starter.version}</version>
             </dependency>
 
-	    <dependency>
+            <!--junit-->
+            <dependency>
                 <groupId>junit</groupId>
                 <artifactId>junit</artifactId>
                 <version>${junit.version}</version>
                 <scope>test</scope>
             </dependency>
-        </dependencies>
-    </dependencyManagement>
 
-    <dependencies>
-
-        <!--alibaba oss-->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
-            <version>2.2.0.RELEASE</version>
-        </dependency>
-        <!--jdk9+ 以上需要手动添加-->
-        <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.3.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-loadbalancer</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-configuration-processor</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-autoconfigure</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <!--SpringCloud-sentinel集成-->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
-        </dependency>
-        <!-- Sentinel Datasource Nacos 持久化存储-->
-        <dependency>
-            <groupId>com.alibaba.csp</groupId>
-            <artifactId>sentinel-datasource-nacos</artifactId>
-<!--            <version>1.8.0</version>-->
-        </dependency>
-        <!-- 注意一定要引入对版本,要引入spring-cloud版本seata,而不是springboot版本的seata-->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
-            <!-- 排除掉springcloud默认的seata版本,以免版本不一致出现问题-->
-            <exclusions>
-                <exclusion>
-                    <groupId>io.seata</groupId>
-                    <artifactId>seata-spring-boot-starter</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>io.seata</groupId>
-                    <artifactId>seata-all</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <!-- 上面排除掉了springcloud默认seata版本,此处引入和seata-server版本对应的seata包-->
-        <dependency>
-            <groupId>io.seata</groupId>
-            <artifactId>seata-spring-boot-starter</artifactId>
-            <version>1.6.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.tomcat.embed</groupId>
-            <artifactId>tomcat-embed-core</artifactId>
-            <version>10.1.7</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-webmvc</artifactId>
-        </dependency>
-
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-<!--                <version>3.5.2</version>-->
-                <configuration>
-                    <source>17</source>
-                    <target>17</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+            <!--Lombok-->
+            <dependency>
+                <groupId>org.projectlombok</groupId>
+                <artifactId>lombok</artifactId>
+                <version>1.18.26</version>
+                <!--<scope>provided</scope>-->
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.tomcat.embed</groupId>
+                <artifactId>tomcat-embed-core</artifactId>
+                <version>10.1.7</version>
+            </dependency>
 
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-webmvc</artifactId>
+            </dependency>
+
+            <!--xxx-job-->
+            <dependency>
+                <groupId>com.xuxueli</groupId>
+                <artifactId>xxl-job-core</artifactId>
+                <version>${xxljob.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.aspectj</groupId>
+                <artifactId>aspectjweaver</artifactId>
+                <version>1.9.19</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.bouncycastle</groupId>
+                <artifactId>bcprov-jdk18on</artifactId>
+                <version>1.74</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
 </project>

+ 0 - 27
sckw-api/pom.xml

@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>com.sckw</groupId>
-        <artifactId>sckw-service-platform</artifactId>
-        <version>1.0.0</version>
-    </parent>
-
-    <packaging>pom</packaging>
-    <artifactId>sckw-api</artifactId>
-    <description>api接口模块</description>
-
-    <modules>
-        <module>sckw-web-api</module>
-        <module>sckw-app-api</module>
-    </modules>
-    <properties>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-
-
-</project>

+ 0 - 14
sckw-api/sckw-app-api/src/main/java/com/sckw/app/AppApiApplication.java

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

+ 0 - 21
sckw-api/sckw-app-api/src/main/java/com/sckw/app/controller/IndexController.java

@@ -1,21 +0,0 @@
-package com.sckw.app.controller;
-
-import com.sckw.core.utils.R;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.time.LocalDateTime;
-
-/**
- * @Author xucaiqin
- * @date 2023-06-05 15:02:23
- */
-@RestController
-@RequestMapping("/index")
-public class IndexController {
-    @GetMapping
-    public R<String> get() {
-        return R.ok(LocalDateTime.now().toString());
-    }
-}

+ 0 - 37
sckw-api/sckw-app-api/src/main/resources/bootstrap-dev.yml

@@ -1,37 +0,0 @@
-spring:
-  cloud:
-    nacos:
-      discovery:
-        # 服务注册地址
-        server-addr: 127.0.0.1:8848
-        # 命名空间
-        namespace: sckw-service-platform-dev
-        # 共享配置
-        group: sckw-service-platform
-      config:
-        # 配置中心地址
-        server-addr: 127.0.0.1:8848
-        # 配置文件格式
-        file-extension: yaml
-        # 命名空间
-        namespace: sckw-service-platform-dev
-        # 共享配置
-        group: sckw-service-platform
-
-# dubbo
-dubbo:
-  application:
-    # 此处没有延用spring.application.name是因为当前项目本身也会注册到nacos中,如果dubbo也延用相同的名称,在nacos服务里会看到注册的producer-server服务数为2
-    name: system-appapi-server
-    qos-port: 8811
-  protocol:
-    name: dubbo
-    port: -1
-  registry:
-    # 配置dubbo的注册中心为nacos
-    address: nacos://${spring.cloud.nacos.discovery.server-addr}
-    group: ${spring.cloud.nacos.config.group}
-    protocol: nacos
-    #use-as-config-center: false
-    #use-as-metadata-center: false
-

+ 0 - 14
sckw-api/sckw-web-api/src/main/java/com/sckw/web/WebApiApplication.java

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

+ 0 - 21
sckw-api/sckw-web-api/src/main/java/com/sckw/web/controller/IndexController.java

@@ -1,21 +0,0 @@
-package com.sckw.web.controller;
-
-import com.sckw.core.utils.R;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.time.LocalDateTime;
-
-/**
- * @Author xucaiqin
- * @date 2023-06-05 15:02:23
- */
-@RestController
-@RequestMapping("/index")
-public class IndexController {
-    @GetMapping
-    public R<String> get() {
-        return R.ok(LocalDateTime.now().toString());
-    }
-}

+ 0 - 37
sckw-api/sckw-web-api/src/main/resources/bootstrap-dev.yml

@@ -1,37 +0,0 @@
-spring:
-  cloud:
-    nacos:
-      discovery:
-        # 服务注册地址
-        server-addr: 127.0.0.1:8848
-        # 命名空间
-        namespace: sckw-service-platform-dev
-        # 共享配置
-        group: sckw-service-platform
-      config:
-        # 配置中心地址
-        server-addr: 127.0.0.1:8848
-        # 配置文件格式
-        file-extension: yaml
-        # 命名空间
-        namespace: sckw-service-platform-dev
-        # 共享配置
-        group: sckw-service-platform
-
-# dubbo
-dubbo:
-  application:
-    # 此处没有延用spring.application.name是因为当前项目本身也会注册到nacos中,如果dubbo也延用相同的名称,在nacos服务里会看到注册的producer-server服务数为2
-    name: system-webapi-server
-    qos-port: 8821
-  protocol:
-    name: dubbo
-    port: -1
-  registry:
-    # 配置dubbo的注册中心为nacos
-    address: nacos://${spring.cloud.nacos.discovery.server-addr}
-    group: ${spring.cloud.nacos.config.group}
-    protocol: nacos
-    #use-as-config-center: false
-    #use-as-metadata-center: false
-

+ 32 - 8
sckw-auth/pom.xml

@@ -22,41 +22,65 @@
 
 
     <dependencies>
+        <!-- 核心模块 -->
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-remote</artifactId>
-            <version>1.0.0</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-redis</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-system-api</artifactId>
-            <version>1.0.0</version>
-            <scope>compile</scope>
         </dependency>
+
         <!--web-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-loadbalancer</artifactId>
+        </dependency>
+
         <!--注册中心客户端-->
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>
+
         <!--配置中心客户端-->
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-bootstrap</artifactId>
-        </dependency>
 
     </dependencies>
 

+ 4 - 8
sckw-auth/src/main/java/com/sckw/auth/AuthApplication.java

@@ -3,6 +3,7 @@ package com.sckw.auth;
 import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.web.servlet.ServletComponentScan;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
@@ -14,17 +15,12 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
 @EnableDubbo
 @EnableFeignClients({"com.sckw.*.api.feign"})
 @EnableDiscoveryClient
-@SpringBootApplication(scanBasePackages = {"com.sckw.core.*", "com.sckw.redis","com.sckw.auth.*"})
-@ServletComponentScan("com.sckw.core.filter")
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
 public class AuthApplication {
     public static void main(String[] args) {
         // 关闭nacos日志
-        System.setProperty("nacos.logging.default.config.enabled", "false");
-        try {
-            SpringApplication.run(AuthApplication.class, args);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+        //System.setProperty("nacos.logging.default.config.enabled", "false");
+        SpringApplication.run(AuthApplication.class, args);
     }
 }
 

+ 51 - 54
sckw-auth/src/main/resources/bootstrap-dev.yml

@@ -5,7 +5,7 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
       config:
@@ -14,74 +14,71 @@ spring:
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
+
+  #redis
+  redis:
+    #redis机器ip
+    host: 10.10.10.230
+    #redis端口
+    port: 6379
+    #redis密码
+    password: test
+    #数据库
+    database: 1
+    #redis超时时间(毫秒),如果不设置,取默认值2000
+    timeout: 10000
+    #最大空闲数
+    maxIdle: 300
+    #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
+    #maxActive=600
+    #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
+    maxTotal: 1000
+    #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
+    maxWaitMillis: 1000
+    #连接的最小空闲时间 默认1800000毫秒(30分钟)
+    minEvictableIdleTimeMillis: 300000
+    #每次释放连接的最大数目,默认3
+    numTestsPerEvictionRun: 1024
+    #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
+    timeBetweenEvictionRunsMillis: 30000
+    #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
+    testOnBorrow: true
+    #在空闲时检查有效性, 默认false
+    testWhileIdle: true
+    #连接池最大连接数(如果配置<=0,则没有限制)
+    jedis:
+      pool:
+        max-active: -1
+
   data:
     redis:
-      #redis机器ip
-      host: 127.0.0.1
-      #redis端口
+      host: 10.10.10.230
+      password: test
       port: 6379
-      #redis密码
-      password:
-      #数据库
-      database: 1
-      #redis超时时间(毫秒),如果不设置,取默认值2000
+      database: 13
       timeout: 10000
-      #最大空闲数
-      maxIdle: 300
-        #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
-        #maxActive=600
-        #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
-      maxTotal: 1000
-        #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
-      maxWaitMillis: 1000
-        #连接的最小空闲时间 默认1800000毫秒(30分钟)
-      minEvictableIdleTimeMillis: 300000
-        #每次释放连接的最大数目,默认3
-      numTestsPerEvictionRun: 1024
-        #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
-      timeBetweenEvictionRunsMillis: 30000
-        #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
-      testOnBorrow: true
-        #在空闲时检查有效性, 默认false
-      testWhileIdle: true
-        #连接池最大连接数(如果配置<=0,则没有限制)
-      jedis:
-        pool:
-          max-active: -1
-  datasource:
-    dynamic:
-      primary: master #设置默认的数据源或者数据源组,默认值即为master
-      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
-      datasource:
-        master:
-          url: jdbc:mysql://47.108.162.14:3306/sckw_system?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
-          username: root
-          password: Yy123...
-          driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
-        slave_1:
-          url: jdbc:mysql://47.108.162.14:3306/wph_system?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
-          username: root
-          password: Yy123...
-          driver-class-name: com.mysql.jdbc.Driver
 
+# dubbo
 dubbo:
   application:
+    # 此处没有延用spring.application.name是因为当前项目本身也会注册到nacos中,如果dubbo也延用相同的名称,在nacos服务里会看到注册的producer-server服务数为2
     name: auth-dubbo-server
-    # 该配置在producer-server中是没有的,但是在consumer这里要配置一下
-    # 如果不配置这个QOS的端口,它会延用dubbo自动生成的端口,在启动的时候,QOS注册就会提示该端口已经被使用的错误
-    # 虽然启动时有打印端口已经被使用的错误,但是依旧可以正常启动服务,并且dubbo也可以正常调用,但是为了解决启动报错还是加上这个端口
-    # 这个也是apache官方给出的解决方案,这个端口不能给-1,它不会自动找到一个可用的端口,给-1会报错,端口1-65535自己选择一个
-    qos-port: 3334
+    parameters:
+      group: ${spring.cloud.nacos.discovery.group}
+      namespace: ${spring.cloud.nacos.discovery.namespace}
   protocol:
     name: dubbo
-    # port为-1表示自动找一个可用的端口
     port: -1
   registry:
+    # 配置dubbo的注册中心为nacos
     address: nacos://${spring.cloud.nacos.discovery.server-addr}
-    group: ${spring.cloud.nacos.config.group}
+    group: ${spring.cloud.nacos.discovery.group}
+    namespace: ${spring.cloud.nacos.discovery.namespace}
     protocol: nacos
+    #use-as-config-center: false
+    #use-as-metadata-center: false
 
 links: /auth/login,/kwsUser/resetPassword,/kwsUser/updatePassword,/kwsUser/forgetPassword

+ 129 - 0
sckw-auth/src/main/resources/bootstrap-local.yml

@@ -0,0 +1,129 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 127.0.0.1:8848
+        # 命名空间
+        namespace: sckw-service-platform-dev
+        # 共享配置
+        group: sckw-service-platform
+      config:
+        # 配置中心地址
+        server-addr: 127.0.0.1:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw-service-platform-dev
+        # 共享配置
+        group: sckw-service-platform
+#
+#    sentinel:
+#      transport:
+#        client-ip: ${spring.cloud.client.ip-address} # 获取本机IP地址
+#        port: 8719  #默认8719端口,如果被占用会向上扫描。
+#        #控制台地址
+#        dashboard: 127.0.0.1:19527
+#      log:
+#        #日志路径
+#        dir: logs/sentinel
+#        # 默认将调用链路收敛,导致链路流控效果无效
+#        web-context-unify: false
+#        #持久化nacos配置中
+#      datasource:
+#        #sentinel-rule: # 唯一名称可自定义
+#        #限流
+#        flow:
+#          nacos:
+#            # 设置Nacos的连接地址、命名空间和Group ID
+#            namespace: sckw-service-platform-dev
+#            server-addr: ${spring.cloud.nacos.discovery.server-addr}
+#            # username: ${spring.cloud.nacos.discovery.username}
+#            # password: ${spring.cloud.nacos.discovery.password}
+#            # 设置Nacos中配置文件的命名规则
+#            #            data-id:  ${spring.application.name}-sentinel-flow-rules
+#            data-id: sckw-auth-sentinel-flow-rules
+#            group-id: SENTINEL_GROUP
+#            data-type: json
+#            # 必填的重要字段,指定当前规则类型是"限流"
+#            rule-type: flow
+#        #熔断
+#        degrade:
+#          nacos:
+#            namespace: sckw-service-platform-dev
+#            server-addr: ${spring.cloud.nacos.discovery.server-addr}
+#            #data-id: ${spring.application.name}-sentinel-degrade-rules
+#            data-id: sckw-auth-sentinel-degrade-rules
+#            group-id: SENTINEL_GROUP
+#            #熔断
+#            rule-type: degrade
+#      #取消慢加载
+#      eager: true
+#  data:
+#    redis:
+#      #redis机器ip
+#      host: 127.0.0.1
+#      #redis端口
+#      port: 6379
+#      #redis密码
+#      password:
+#      #数据库
+#      database: 1
+#      #redis超时时间(毫秒),如果不设置,取默认值2000
+#      timeout: 10000
+#      #最大空闲数
+#      maxIdle: 300
+#        #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
+#        #maxActive=600
+#        #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
+#      maxTotal: 1000
+#        #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
+#      maxWaitMillis: 1000
+#        #连接的最小空闲时间 默认1800000毫秒(30分钟)
+#      minEvictableIdleTimeMillis: 300000
+#        #每次释放连接的最大数目,默认3
+#      numTestsPerEvictionRun: 1024
+#        #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
+#      timeBetweenEvictionRunsMillis: 30000
+#        #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
+#      testOnBorrow: true
+#        #在空闲时检查有效性, 默认false
+#      testWhileIdle: true
+#        #连接池最大连接数(如果配置<=0,则没有限制)
+#      jedis:
+#        pool:
+#          max-active: -1
+#  datasource:
+#    dynamic:
+#      primary: master #设置默认的数据源或者数据源组,默认值即为master
+#      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+#      datasource:
+#        master:
+#          url: jdbc:mysql://10.10.10.230:3306/sckw_system?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+#          username: sckw_dev
+#          password: Yy123...
+#          driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
+#        slave_1:
+#          url: jdbc:mysql://10.10.10.230:3306/sckw_system?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+#          username: sckw_dev
+#          password: Yy123...
+#          driver-class-name: com.mysql.jdbc.Driver
+#
+#dubbo:
+#  application:
+#    name: auth-dubbo-server
+#    # 该配置在producer-server中是没有的,但是在consumer这里要配置一下
+#    # 如果不配置这个QOS的端口,它会延用dubbo自动生成的端口,在启动的时候,QOS注册就会提示该端口已经被使用的错误
+#    # 虽然启动时有打印端口已经被使用的错误,但是依旧可以正常启动服务,并且dubbo也可以正常调用,但是为了解决启动报错还是加上这个端口
+#    # 这个也是apache官方给出的解决方案,这个端口不能给-1,它不会自动找到一个可用的端口,给-1会报错,端口1-65535自己选择一个
+#    qos-port: 3334
+#  protocol:
+#    name: dubbo
+#    # port为-1表示自动找一个可用的端口
+#    port: -1
+#  registry:
+#    address: nacos://${spring.cloud.nacos.discovery.server-addr}
+#    group: ${spring.cloud.nacos.config.group}
+#    protocol: nacos
+#
+#links: /auth/login,/kwsUser/resetPassword,/kwsUser/updatePassword,/kwsUser/forgetPassword

+ 1 - 1
sckw-auth/src/main/resources/bootstrap.yml

@@ -3,7 +3,7 @@ server:
 
 spring:
   application:
-    name: sckw-auth-czh
+    name: sckw-auth
   profiles:
     active: ${DEPLOY_MODE:dev}
   main:

+ 199 - 0
sckw-auth/src/main/resources/logback-spring.xml

@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
+<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
+<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
+                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
+<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
+<configuration  scan="true" scanPeriod="10 seconds">
+    <contextName>logback</contextName>
+    <springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue="service"/>
+
+    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
+    <property name="log.path" value="/logs/${applicationName}" />
+
+    <!--0. 日志格式和颜色渲染 -->
+    <!-- 彩色日志依赖的渲染类 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+    <!-- 彩色日志格式 -->
+    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 输出到控制台-->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 设置字符集 -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!--2. 输出到文档-->
+    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_debug.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志归档 -->
+            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录debug级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_info.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 每天日志归档路径以及格式 -->
+            <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_warn.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录warn级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_error.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录ERROR级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--
+        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
+        以及指定<appender>。<logger>仅有一个name属性,
+        一个可选的level和一个可选的addtivity属性。
+        name:用来指定受此logger约束的某一个包或者具体的某一个类。
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
+              如果未设置此属性,那么当前logger将会继承上级的级别。
+        addtivity:是否向上级logger传递打印信息。默认是true。
+        <logger name="org.springframework.web" level="info"/>
+        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
+    -->
+    <!-- hibernate logger -->
+    <logger name="com.atguigu" level="debug" />
+    <!-- Spring framework logger -->
+    <logger name="org.springframework" level="debug" additivity="false"></logger>
+
+
+    <!--
+        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
+        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
+        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
+        【logging.level.org.mybatis=debug logging.level.dao=debug】
+     -->
+
+    <!--
+        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+        不能设置为INHERITED或者同义词NULL。默认是DEBUG
+        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
+    -->
+
+    <!-- 4. 最终的策略 -->
+    <!-- 4.1 开发环境:打印控制台-->
+    <springProfile name="dev">
+        <logger name="com.sdcm.pmp" level="debug"/>
+    </springProfile>
+
+    <root level="info">
+        <appender-ref ref="CONSOLE" />
+        <appender-ref ref="DEBUG_FILE" />
+        <appender-ref ref="INFO_FILE" />
+        <appender-ref ref="WARN_FILE" />
+        <appender-ref ref="ERROR_FILE" />
+    </root>
+
+    <!-- 4.2 生产环境:输出到文档 -->
+    <springProfile name="pro">
+        <root level="info">
+            <appender-ref ref="CONSOLE" />
+            <appender-ref ref="DEBUG_FILE" />
+            <appender-ref ref="INFO_FILE" />
+            <appender-ref ref="ERROR_FILE" />
+            <appender-ref ref="WARN_FILE" />
+        </root>
+    </springProfile>
+
+</configuration>

+ 11 - 14
sckw-common/pom.xml

@@ -2,35 +2,32 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-service-platform</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
-    <packaging>pom</packaging>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-common</artifactId>
-    <version>1.0.0</version>
-    <description>通用模块</description>
+    <packaging>pom</packaging>
     <modules>
+        <module>sckw-common-bom</module>
         <module>sckw-common-core</module>
-        <module>sckw-common-datasource</module>
-        <module>sckw-common-redis</module>
+        <module>sckw-common-mongo</module>
+        <module>sckw-common-xxljob</module>
         <module>sckw-common-stream</module>
-        <module>sckw-common-elasticsearch</module>
-        <module>sckw-common-excel</module>
         <module>sckw-common-remote</module>
-        <module>sckw-common-xxl-job</module>
-        <module>sckw-common-mongo</module>
+        <module>sckw-common-redis</module>
+        <module>sckw-common-excel</module>
+        <module>sckw-common-datasource</module>
+        <module>sckw-common-sentinel</module>
+        <module>sckw-common-seata</module>
     </modules>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
-
 </project>

+ 77 - 0
sckw-common/sckw-common-bom/pom.xml

@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sckw</groupId>
+    <artifactId>sckw-common-bom</artifactId>
+    <version>1.0.0</version>
+    <packaging>pom</packaging>
+    <description>common依赖项</description>
+
+    <dependencyManagement>
+        <dependencies>
+            <!-- 核心模块 -->
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-core</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-mongo</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-xxljob</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-stream</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-remote</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-redis</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-excel</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-datasource</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-sentinel</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-common-seata</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+</project>

+ 37 - 24
sckw-common/sckw-common-core/pom.xml

@@ -2,34 +2,32 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-common-core</artifactId>
-    <version>1.0.0</version>
-    <description>核心模块</description>
+    <description>核心基础</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
-
     <dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-autoconfigure</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-commons</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter</artifactId>
@@ -40,6 +38,7 @@
                 </exclusion>
             </exclusions>
         </dependency>
+
         <!--log4j2日志-->
         <!--全局日志排除-->
         <dependency>
@@ -52,11 +51,13 @@
                 </exclusion>
             </exclusions>
         </dependency>
+
         <!--采用log4j2 日志输出方式-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-log4j2</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
@@ -66,22 +67,27 @@
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-annotations</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.github.pagehelper</groupId>
             <artifactId>pagehelper-spring-boot-starter</artifactId>
         </dependency>
+
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-http</artifactId>
@@ -96,38 +102,45 @@
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.apache.tomcat.embed</groupId>
             <artifactId>tomcat-embed-core</artifactId>
         </dependency>
+
         <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-redis</artifactId>
-            <version>1.0.0</version>
+            <groupId>org.apache.tomcat.embed</groupId>
+            <artifactId>tomcat-embed-core</artifactId>
         </dependency>
+
         <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-datasource</artifactId>
-            <version>1.0.0</version>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
         </dependency>
+
         <dependency>
-            <groupId>org.apache.tomcat.embed</groupId>
-            <artifactId>tomcat-embed-core</artifactId>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
         </dependency>
+
         <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-redis</artifactId>
-            <version>1.0.0</version>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
         </dependency>
+
         <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-datasource</artifactId>
-            <version>1.0.0</version>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
         </dependency>
+
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-validation</artifactId>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcprov-jdk18on</artifactId>
         </dependency>
-    </dependencies>
 
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-redis</artifactId>
+        </dependency>
+    </dependencies>
 </project>

+ 0 - 28
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/config/GlobalTransactionalConfig.java

@@ -1,28 +0,0 @@
-package com.sckw.core.web.config;
-
-import io.seata.spring.annotation.AspectTransactionalInterceptor;
-import org.springframework.aop.Advisor;
-import org.springframework.aop.aspectj.AspectJExpressionPointcut;
-import org.springframework.aop.support.DefaultPointcutAdvisor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.stereotype.Component;
-
-/**
- * @author lfdc
- * @description 全局事务bean
- * @date 2023/6/15 0015
- */
-//@Component
-public class GlobalTransactionalConfig {
-    @Bean
-    public AspectTransactionalInterceptor aspectTransactionalInterceptor () {
-        return new AspectTransactionalInterceptor();
-    }
-
-    @Bean
-    public Advisor txAdviceAdvisor(AspectTransactionalInterceptor aspectTransactionalInterceptor ) {
-        AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
-        pointcut.setExpression("配置切点表达式使全局事务拦截器生效");
-        return new DefaultPointcutAdvisor(pointcut, aspectTransactionalInterceptor);
-    }
-}

+ 4 - 16
sckw-common/sckw-common-datasource/pom.xml

@@ -2,30 +2,21 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-common-datasource</artifactId>
-    <version>1.0.0</version>
-
-    <description>多数据源</description>
+    <description>数据库连接</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <mysql.version>8.0.30</mysql.version>
-        <mybatis-plus.version>3.5.3.1</mybatis-plus.version>
-        <dynamic-datasource.version>3.6.1</dynamic-datasource.version>
-        <latest.release.version>5.2.0</latest.release.version>
     </properties>
 
-
     <dependencies>
         <!--mysql-->
         <dependency>
@@ -37,21 +28,18 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>${mybatis-plus.version}</version>
         </dependency>
+
         <!--多数据源-->
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
-            <version>${dynamic-datasource.version}</version>
         </dependency>
 
         <!--ShardingSphere-JDBC-->
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
-            <version>${latest.release.version}</version>
         </dependency>
     </dependencies>
-
 </project>

+ 0 - 40
sckw-common/sckw-common-elasticsearch/pom.xml

@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>com.sckw</groupId>
-        <artifactId>sckw-common</artifactId>
-        <version>1.0.0</version>
-    </parent>
-
-    <artifactId>sckw-common-elasticsearch</artifactId>
-    <version>1.0.0</version>
-    <description>核心模块</description>
-
-    <properties>
-        <maven.compiler.source>17</maven.compiler.source>
-        <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <elasticsearch.version>8.5.3</elasticsearch.version>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>co.elastic.clients</groupId>
-            <artifactId>elasticsearch-java</artifactId>
-            <version>${elasticsearch.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.elasticsearch.client</groupId>
-            <artifactId>elasticsearch-rest-client</artifactId>
-            <version>${elasticsearch.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-        </dependency>
-    </dependencies>
-
-</project>

+ 0 - 495
sckw-common/sckw-common-elasticsearch/src/main/java/com/sckw/elasticsearch/service/es/EsUtils.java

@@ -1,495 +0,0 @@
-package com.sckw.elasticsearch.service.es;
-
-import co.elastic.clients.elasticsearch.ElasticsearchClient;
-import co.elastic.clients.elasticsearch._types.ElasticsearchException;
-import co.elastic.clients.elasticsearch._types.FieldValue;
-import co.elastic.clients.elasticsearch._types.SortOrder;
-import co.elastic.clients.elasticsearch._types.aggregations.Aggregate;
-import co.elastic.clients.elasticsearch._types.aggregations.TermsAggregation;
-import co.elastic.clients.elasticsearch._types.mapping.TypeMapping;
-import co.elastic.clients.elasticsearch._types.query_dsl.Query;
-import co.elastic.clients.elasticsearch.core.*;
-import co.elastic.clients.elasticsearch.core.bulk.BulkOperation;
-import co.elastic.clients.elasticsearch.core.search.Hit;
-import co.elastic.clients.elasticsearch.indices.IndexSettings;
-import co.elastic.clients.json.JsonData;
-import co.elastic.clients.util.ObjectBuilder;
-import com.alibaba.fastjson.JSON;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.util.CollectionUtils;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-import java.util.function.Function;
-
-/**
- * @author yuzhongchuan
- * @description COMMENT='ES相关工具类'
- * @create 2023 -06 -06 10:01
- */
-@Slf4j
-public class EsUtils {
-
-    private ElasticsearchClient client;
-
-    private static EsUtils esUtils;
-
-    public EsUtils(ElasticsearchClient client) {
-        esUtils = this;
-        this.client = client;
-    }
-
-    /**
-     * @param name
-     * @return void
-     * @desc: 创建索引
-     * @author: yzc
-     * @date: 2023-06-12 11:46
-     */
-    public static void addIndex(String name) {
-        try {
-            if (indexExists(name)) {
-                log.error(" idxName={} 已经存在", name);
-                return;
-            }
-            esUtils.client.indices().create(c -> c.index(name));
-        } catch (IOException e) {
-            log.error("ES addIndex异常", e);
-        }
-    }
-
-    /**
-     * @param name
-     * @return boolean
-     * @desc: 索引是否存在
-     * @author: yzc
-     * @date: 2023-06-12 11:46
-     */
-    public static boolean indexExists(String name) throws IOException {
-        return esUtils.client.indices().exists(b -> b.index(name)).value();
-    }
-
-    /**
-     * @param name
-     * @return void
-     * @desc: 删除索引
-     * @author: yzc
-     * @date: 2023-06-12 11:47
-     */
-    public static void delIndex(String name) {
-        try {
-            if (!indexExists(name)) {
-                log.error(" idxName={} 不存在", name);
-                return;
-            }
-            esUtils.client.indices().delete(c -> c.index(name));
-        } catch (IOException e) {
-            log.error("ES delIndex异常", e);
-        }
-    }
-
-    /**
-     * @param idxName, settingFn, mappingFn
-     * @return void
-     * @desc: 带mapping、setting创建索引
-     * @author: yzc
-     * @date: 2023-06-12 11:47
-     */
-    public static void createIndex(String idxName,
-                                   Function<IndexSettings.Builder, ObjectBuilder<IndexSettings>> settingFn,
-                                   Function<TypeMapping.Builder, ObjectBuilder<TypeMapping>> mappingFn) {
-        try {
-            if (indexExists(idxName)) {
-                log.error(" idxName={} 已经存在", idxName);
-                return;
-            }
-            esUtils.client.indices().create(c -> c
-                    .index(idxName)
-                    .settings(settingFn)
-                    .mappings(mappingFn));
-        } catch (IOException e) {
-            log.error("ES createIndex异常", e);
-        }
-    }
-
-    /**
-     * 添加文档信息
-     *
-     * @param idxName
-     * @param t
-     * @param <T>
-     */
-    public static <T> void add(String idxName, T t) {
-        if (Objects.isNull(idxName) || t == null) {
-            return;
-        }
-        try {
-            esUtils.client.index(s ->
-                    s.index(idxName).document(t));
-        } catch (IOException e) {
-            log.error("es插入单条新数据异常:", e);
-        }
-    }
-
-    /**
-     * 添加文档信息 指定id
-     *
-     * @param idxName
-     * @param id
-     */
-    public static <T> void addSpecifyId(String idxName, String id, T t) {
-        if (Objects.isNull(idxName) || t == null) {
-            return;
-        }
-        try {
-            esUtils.client.index(s ->
-                    s.index(idxName).id(id).document(t));
-        } catch (IOException e) {
-            log.error("es插入指定id单条新数据异常:", e);
-        }
-    }
-
-    /**
-     * 修改文档自定义属性
-     *
-     * @param idxName
-     * @param id
-     * @param t
-     */
-    public static <T> void update(String idxName, String id, T t) {
-        if (Objects.isNull(idxName) || t == null) {
-            return;
-        }
-        try {
-            esUtils.client.update(x -> x.index(idxName).id(id).doc(t), Object.class);
-        } catch (IOException e) {
-            log.error("es修改文档数据异常:", e);
-        }
-    }
-
-    /**
-     * 批量新增
-     *
-     * @param indexName
-     * @param list
-     * @return
-     */
-    public static <T> void bulkSave(String indexName, List<T> list) {
-        if (Objects.isNull(indexName) || CollectionUtils.isEmpty(list)) {
-            return;
-        }
-        BulkRequest.Builder br = new BulkRequest.Builder();
-        //可不指定id es会自动生成id
-        list.forEach(e -> br.operations(op -> op
-                .index(idx -> idx.index(indexName).document(e))));
-        try {
-            esUtils.client.bulk(br.build());
-        } catch (IOException e) {
-            log.error("es批量新增数据异常:", e);
-        }
-    }
-
-    /**
-     * 批量新增 指定id
-     *
-     * @param indexName
-     * @param list
-     * @return
-     */
-    public static <T> void bulkSaveSpecifyId(String indexName, List<T> list) {
-        if (Objects.isNull(indexName) || CollectionUtils.isEmpty(list)) {
-            return;
-        }
-        BulkRequest.Builder br = new BulkRequest.Builder();
-        //对象id为es id
-        list.forEach(e -> br.operations(op -> op
-                .index(idx -> idx.index(indexName).id(JSON.parseObject((String) e).get("id").toString()).document(e))));
-        try {
-            esUtils.client.bulk(br.build());
-        } catch (IOException e) {
-            log.error("es批量新增指定id数据异常:", e);
-        }
-    }
-
-    /**
-     * ids批量删除
-     *
-     * @param indexName
-     * @param list
-     * @return
-     */
-    public static <T> void bulkDel(String indexName, List<T> list) {
-        if (CollectionUtils.isEmpty(list)) {
-            return;
-        }
-        List<BulkOperation> bulkOperations = new ArrayList<>();
-        list.forEach(a ->
-                bulkOperations.add(BulkOperation.of(b ->
-                        b.delete(c -> c.id(JSON.parseObject((String) a).get("id").toString()))
-                )));
-        try {
-            esUtils.client.bulk(a -> a.index(indexName).operations(bulkOperations));
-        } catch (IOException e) {
-            log.error("es批量ids删除数据异常:", e);
-        }
-    }
-
-    /**
-     * term匹配 多次匹配
-     *
-     * @param index
-     * @param field
-     * @param fieldValues
-     * @return Object
-     */
-    public static List<Hit<Object>> advancedQueryByTerm(String index, String field, List<FieldValue> fieldValues) {
-        try {
-            SearchResponse<Object> response = esUtils.client.search(e -> e
-                    .index(index)
-                    .query(q -> q.terms(t -> t.field(field).terms(terms -> terms.value(fieldValues))))
-                    .query(q -> q.matchAll(m -> m)), Object.class);
-            return response.hits().hits();
-        } catch (IOException e) {
-            log.error("es term匹配多次匹配查询异常:", e);
-            return null;
-        }
-    }
-
-    /**
-     * term匹配 单次匹配
-     *
-     * @param index
-     * @param field
-     * @param value
-     * @return Object
-     */
-    public static List<Hit<Object>> advancedQueryByTerm(String index, String field, long value) {
-        try {
-            SearchResponse<Object> response = esUtils.client.search(e -> e
-                    .index(index)
-                    .query(q -> q.term(t -> t.field(field).value(value)))
-                    .query(q -> q.matchAll(m -> m)), Object.class);
-            return response.hits().hits();
-        } catch (IOException e) {
-            log.error("es term匹配单次匹配查询异常:", e);
-            return null;
-        }
-    }
-
-    /**
-     * 分页查询
-     *
-     * @param index
-     * @param from
-     * @param size
-     * @return
-     */
-    public static List<Hit<Object>> advancedQueryByPage(String index, Integer from, Integer size) {
-        try {
-            SearchResponse<Object> response = esUtils.client.search(e -> e
-                    .index(index)
-                    .query(q -> q.matchAll(m -> m))
-                    .from(from).size(size), Object.class);
-            return response.hits().hits();
-        } catch (IOException e) {
-            log.error("es 分页查询异常:", e);
-            return null;
-        }
-    }
-
-    /**
-     * multiMatch多field匹配
-     *
-     * @param indexName
-     * @param fields
-     * @param query
-     * @param sortField
-     * @param order
-     * @param from
-     * @param size
-     * @return
-     * @throws Exception
-     */
-    public static List<Hit<Object>> queryMultiMatch(String indexName, List<String> fields, String query, String sortField, SortOrder order, Integer from, Integer size) {
-        try {
-            SearchResponse<Object> searchResponse = esUtils.client.search(e -> e
-                    .index(indexName)
-                    .query(q -> q.multiMatch(m -> m.fields(fields).query(query)))
-                    .sort(sort -> sort.field(f -> f.field(sortField).order(order)))
-                    .from(from).size(size), Object.class);
-            return searchResponse.hits().hits();
-        } catch (IOException e) {
-            log.error("ES queryMultiMatch查询异常", e);
-            return null;
-        }
-    }
-
-
-    /**
-     * Range范围匹配
-     *
-     * @param indexName
-     * @param field
-     * @param gte       大于等于
-     * @param lte       小于等于
-     * @param sortField
-     * @param order
-     * @param from
-     * @param size
-     * @return
-     */
-    public static List<Hit<Object>> queryBoolRange(String indexName, String field, Object gte, Object lte, String sortField, SortOrder order, Integer from, Integer size) {
-        try {
-            SearchResponse<Object> searchResponse = esUtils.client.search(e -> e
-                    .index(indexName)
-                    .query(q -> q.bool(b -> b.filter(f -> f.range(r -> r.field(field)
-                            .gte((Objects.isNull(gte) ? null : JsonData.of(gte)))
-                            .lte((Objects.isNull(lte) ? null : JsonData.of(lte)))))))
-                    .sort(sort -> sort.field(f -> f.field(sortField).order(order)))
-                    .from(from).size(size), Object.class);
-            return searchResponse.hits().hits();
-        } catch (IOException | ElasticsearchException e) {
-            log.error("ES queryBoolRange查询异常", e);
-            return null;
-        }
-    }
-
-    /**
-     * filter过滤
-     *
-     * @param indexName
-     * @param excludes
-     * @param includes
-     * @param sortField
-     * @param order
-     * @param from
-     * @param size
-     * @return
-     */
-    public static List<Hit<Object>> queryFilter(String indexName, List<String> excludes, List<String> includes, String sortField, SortOrder order, Integer from, Integer size) {
-        try {
-            SearchResponse<Object> searchResponse = esUtils.client.search(e -> e
-                    .index(indexName)
-                    .query(q -> q.matchAll(m -> m))
-                    .source(s -> s.filter(f -> f.excludes(excludes).includes(includes)))
-                    .sort(sort -> sort.field(f -> f.field(sortField).order(order)))
-                    .from(from).size(size), Object.class);
-            return searchResponse.hits().hits();
-        } catch (IOException e) {
-            log.error("ES queryFilter查询异常", e);
-            return null;
-        }
-    }
-
-    /**
-     * fuzzy模糊匹配
-     *
-     * @param indexName
-     * @param field
-     * @param value
-     * @param fuzziness
-     * @param sortField
-     * @param order
-     * @param from
-     * @param size
-     * @return
-     */
-    public static List<Hit<Object>> queryFuzzy(String indexName, String field, String value, String fuzziness, String sortField, SortOrder order, Integer from, Integer size) {
-        try {
-            SearchResponse<Object> searchResponse = esUtils.client.search(e -> e
-                    .index(indexName)
-                    .query(q -> q.fuzzy(f -> f.field(field).value(value).fuzziness(fuzziness)))
-                    .sort(sort -> sort.field(f -> f.field(sortField).order(order)))
-                    .from(from).size(size), Object.class);
-            return searchResponse.hits().hits();
-        } catch (IOException e) {
-            log.error("ES queryFuzzy查询异常", e);
-            return null;
-        }
-    }
-
-    /**
-     * @param indexName, field
-     * @return co.elastic.clients.elasticsearch._types.aggregations.Aggregate
-     * @desc: 分组聚合查询
-     * @author: yzc
-     * @date: 2023-06-12 17:36
-     */
-    public static Aggregate queryGroupAggregation(String indexName, String field) {
-        try {
-            SearchResponse<Void> searchResponse = esUtils.client.search(
-                    b -> b.index(indexName).size(0)
-                            .aggregations(field, a -> a.terms(TermsAggregation.of(s -> s.field(field)))),
-                    Void.class);
-            return searchResponse.aggregations().get(field);
-        } catch (IOException e) {
-            log.error("ES queryGroupAggregation查询异常", e);
-            return null;
-        }
-    }
-
-    /**
-     * 简单聚合查询
-     *
-     * @param countRequest
-     * @return
-     */
-    public static long count(CountRequest countRequest) {
-        try {
-            log.info("开始ES查询indexName:{}的count", Arrays.toString(countRequest.index().toArray()));
-            CountResponse count = esUtils.client.count(countRequest);
-            return count.count();
-        } catch (IOException e) {
-            log.error("ES count异常", e);
-            return 0;
-        }
-    }
-
-    /**
-     * SearchRequest原生查询
-     *
-     * @param searchRequest
-     * @return
-     */
-    public static List<Hit<Object>> queryOriginal(SearchRequest searchRequest) {
-        //Query of = Query.of(q -> q.bool(b -> b.must(m -> m.match(match -> match.field("").query("")))));
-        try {
-            SearchResponse<Object> searchResponse = esUtils.client.search(searchRequest, Object.class);
-            return searchResponse.hits().hits();
-        } catch (IOException e) {
-            log.error("ES queryOriginal查询异常", e);
-            return null;
-        }
-    }
-
-    /**
-     * Query原生查询
-     *
-     * @param indexName
-     * @param field
-     * @param query
-     * @param order
-     * @param from
-     * @param size
-     * @return
-     * @throws Exception
-     */
-    public static List<Hit<Object>> queryOriginal(String indexName, String field, Query query, SortOrder order, Integer from, Integer size) {
-        //Query of = Query.of(q -> q.bool(b -> b.must(m -> m.match(match -> match.field("").query("")))));
-        try {
-            SearchResponse<Object> searchResponse = esUtils.client.search(e -> e
-                    .index(indexName)
-                    .query(query)
-                    .sort(sort -> sort.field(f -> f.field(field).order(order)))
-                    .from(from).size(size), Object.class);
-            return searchResponse.hits().hits();
-        } catch (IOException e) {
-            log.error("ES queryOriginal查询异常", e);
-            return null;
-        }
-    }
-
-}

+ 0 - 114
sckw-common/sckw-common-elasticsearch/src/main/java/com/sckw/elasticsearch/service/es/autoconfigure/EsAutoConfiguration.java

@@ -1,114 +0,0 @@
-package com.sckw.elasticsearch.service.es.autoconfigure;
-
-import co.elastic.clients.elasticsearch.ElasticsearchClient;
-import co.elastic.clients.json.jackson.JacksonJsonpMapper;
-import co.elastic.clients.transport.rest_client.RestClientTransport;
-import com.sckw.elasticsearch.service.es.EsUtils;
-import com.sckw.elasticsearch.service.es.constants.EsConstant;
-import com.sckw.elasticsearch.service.es.properties.EsProperties;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.http.Header;
-import org.apache.http.HttpHost;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.impl.nio.reactor.IOReactorConfig;
-import org.apache.http.message.BasicHeader;
-import org.elasticsearch.client.Node;
-import org.elasticsearch.client.NodeSelector;
-import org.elasticsearch.client.RestClient;
-import org.elasticsearch.client.RestClientBuilder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * @Author yzc
- * @Description es自动装配
- * @createTime 2022年03月03日 09:36:00
- */
-@EnableConfigurationProperties(EsProperties.class)
-@Slf4j
-public class EsAutoConfiguration {
-
-    @Autowired
-    private EsProperties esProperties;
-
-
-    @Bean
-    @ConditionalOnClass(ElasticsearchClient.class)
-    @ConditionalOnMissingBean(EsUtils.class)
-    public EsUtils esUtils(ElasticsearchClient elasticsearchClient) {
-        log.info("---------------EsUtils 正在初始化");
-        return new EsUtils(elasticsearchClient);
-    }
-
-    @Bean
-    @ConditionalOnMissingBean(ElasticsearchClient.class)
-    public ElasticsearchClient restHighLevelClient() {
-        log.info("---------------es配置正在加载,当前配置为:{}", esProperties);
-        if (EsConstant.DEFAULT_HOST.equals(esProperties.getHostList())) {
-            throw new RuntimeException("es配置错误,无法加载");
-        }
-        //解析hostList配置信息
-        String[] split = esProperties.getHostList().split(",");
-        //创建HttpHost数组,其中存放es主机和端口的配置信息
-        HttpHost[] httpHostArray = new HttpHost[split.length];
-        for (int i = 0; i < split.length; i++) {
-            String item = split[i];
-            httpHostArray[i] = new HttpHost(item.split(":")[0], Integer.parseInt(item.split(":")[1]), esProperties.getScheme());
-        }
-        RestClientBuilder clientBuilder = RestClient.builder(httpHostArray);
-        // 1.设置请求头
-        Header[] defaultHeaders = {new BasicHeader("header", "value")};
-        clientBuilder.setDefaultHeaders(defaultHeaders);
-        // 2.设置失败监听器,每次节点失败都可以监听到,可以作额外处理
-        clientBuilder.setFailureListener(new RestClient.FailureListener() {
-            @Override
-            public void onFailure(Node node) {
-                super.onFailure(node);
-                log.error(node.getName() + "==节点失败了");
-            }
-        });
-        /** 3.配置节点选择器,客户端以循环方式将每个请求发送到每一个配置的节点上,
-         *发送请求的节点,用于过滤客户端,将请求发送到这些客户端节点,默认向每个配置节点发送,
-         *这个配置通常是用户在启用嗅探时向专用主节点发送请求(即只有专用的主节点应该被HTTP请求命中)
-         */
-        clientBuilder.setNodeSelector(NodeSelector.SKIP_DEDICATED_MASTERS);
-        /**
-         *4. 配置异步请求的线程数量,Apache Http Async Client默认启动一个调度程序线程,以及由连接管理器使用的许多工作线程
-         *(与本地检测到的处理器数量一样多,取决于Runtime.getRuntime().availableProcessors()返回的数量)。线程数可以修改如下,
-         *这里是修改为10个线程,默认1
-         */
-        clientBuilder.setHttpClientConfigCallback(httpAsyncClientBuilder -> httpAsyncClientBuilder.setDefaultIOReactorConfig(
-                IOReactorConfig.custom().setIoThreadCount(10).build()
-        ));
-        /**
-         *5. 配置连接超时和套接字超时
-         *配置请求超时,将连接超时(默认为1秒)和套接字超时(默认为30秒)增加,
-         *这里配置完应该相应地调整最大重试超时(默认为30秒),即上面的setMaxRetryTimeoutMillis,一般于最大的那个值一致即60000
-         */
-        clientBuilder.setRequestConfigCallback(requestConfigBuilder -> {
-            // 连接5秒超时,套接字连接60s超时
-            return requestConfigBuilder
-                    .setConnectTimeout(esProperties.getConnectTimeout())
-                    .setSocketTimeout(60000);
-        });
-
-        //6.设置ES需要基本身份验证的默认凭据提供程序及设置KeepAliveStrategy为3分钟
-        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
-        credentialsProvider.setCredentials(AuthScope.ANY,
-                new UsernamePasswordCredentials(esProperties.getUsername(), esProperties.getPassword()));
-        clientBuilder.setHttpClientConfigCallback(callback -> callback.setDefaultCredentialsProvider(credentialsProvider)
-                .setKeepAliveStrategy((response, context) -> TimeUnit.MINUTES.toMillis(3)));
-        //使用JSON映射器传输数据
-        RestClientTransport restClientTransport = new RestClientTransport(clientBuilder.build(), new JacksonJsonpMapper());
-        //创建API客户端
-        return new ElasticsearchClient(restClientTransport);
-    }
-}

+ 0 - 11
sckw-common/sckw-common-elasticsearch/src/main/java/com/sckw/elasticsearch/service/es/constants/EsConstant.java

@@ -1,11 +0,0 @@
-package com.sckw.elasticsearch.service.es.constants;
-
-/**
- * @Author yzc
- * @Description es常量
- * @createTime 2023 -06 -06 10:01
- */
-public class EsConstant {
-
-    public static final String DEFAULT_HOST = "default:9200";
-}

+ 0 - 39
sckw-common/sckw-common-elasticsearch/src/main/java/com/sckw/elasticsearch/service/es/properties/EsProperties.java

@@ -1,39 +0,0 @@
-package com.sckw.elasticsearch.service.es.properties;
-
-import com.sckw.elasticsearch.service.es.constants.EsConstant;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-/**
- * @Author yzc
- * @Description es配置
- * @createTime 2023 -06 -06 10:01
- */
-@Getter
-@Setter
-@ToString
-@ConfigurationProperties(prefix = "elasticsearch")
-public class EsProperties {
-    /**
-     * host地址
-     */
-    private String hostList = EsConstant.DEFAULT_HOST;
-    /**
-     * scheme
-     */
-    private String scheme = "http";
-    /**
-     * 用户名
-     */
-    private String username = "";
-    /**
-     * 密码
-     */
-    private String password = "";
-    /**
-     * 超时时间
-     */
-    private Integer connectTimeout = 10000;
-}

+ 0 - 2
sckw-common/sckw-common-elasticsearch/src/main/resources/META-INF/spring.factories

@@ -1,2 +0,0 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-com.sckw.elasticsearch.service.es.autoconfigure.EsAutoConfiguration

+ 0 - 1
sckw-common/sckw-common-elasticsearch/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1 +0,0 @@
-com.sckw.elasticsearch.service.es.autoconfigure.EsAutoConfiguration

+ 9 - 19
sckw-common/sckw-common-excel/pom.xml

@@ -2,39 +2,33 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-common-excel</artifactId>
-    <version>1.0.0</version>
-    <description>核心模块</description>
+    <description>excel导入导出</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <easyexcel.version>3.0.5</easyexcel.version>
-        <commons-io.version>2.11.0</commons-io.version>
     </properties>
 
-
     <dependencies>
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
         </dependency>
+
         <!--alibaba EasyExcel导入导出-->
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>easyexcel</artifactId>
-            <version>${easyexcel.version}</version>
         </dependency>
+
         <!--cglib-->
         <dependency>
             <groupId>cglib</groupId>
@@ -45,31 +39,27 @@
                     <artifactId>asm</artifactId>
                 </exclusion>
             </exclusions>
-            <version>3.3.0</version>
         </dependency>
+
         <!-- validation -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
-<!--        <dependency>-->
-<!--            <groupId>org.springframework</groupId>-->
-<!--            <artifactId>spring-core</artifactId>-->
-<!--            <version>6.0.9</version>-->
-<!--        </dependency>-->
+
         <dependency>
             <groupId>jakarta.validation</groupId>
             <artifactId>jakarta.validation-api</artifactId>
-<!--            <version>2.0.1</version>-->
         </dependency>
+
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-web</artifactId>
         </dependency>
+
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
-            <version>${commons-io.version}</version>
         </dependency>
     </dependencies>
 </project>

+ 31 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/CustomCellWriteHandler.java

@@ -0,0 +1,31 @@
+package com.sckw.excel.easyexcel;
+
+
+
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.write.handler.CellWriteHandler;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+
+/**
+ * 自定义拦截器。对第一行第一列的头超链接
+ */
+@Slf4j
+public class CustomCellWriteHandler implements CellWriteHandler {
+
+
+    @Override
+    public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
+
+    }
+
+    @Override
+    public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+
+    }
+
+
+}

+ 46 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/ExcelImportListener.java

@@ -0,0 +1,46 @@
+package com.sckw.excel.easyexcel;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.sckw.excel.utils.ValidDataUtil;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author LengFaQiang
+ * @create 2021-11-02
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ExcelImportListener extends AnalysisEventListener<Object> {
+    /**
+     * 成功的数据
+     */
+    private List<Object> dataList = new ArrayList<>();
+
+    /**
+     * 错误信息列表
+     */
+    private List<String> errorList = new ArrayList<>();
+
+    @Override
+    public void invoke(Object data, AnalysisContext context) {
+        String validMsg = ValidDataUtil.valid(data);
+        if (validMsg != null) {
+            //+1行(实际中excel中第几行的数据)
+            int rowIndex = context.readRowHolder().getRowIndex() + 1;
+            String errorMsg = "第" + rowIndex + "行数据有误," + validMsg;
+            errorList.add(errorMsg);
+        } else {
+            dataList.add(data);
+        }
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+
+    }
+}

+ 64 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/ExcelListener.java

@@ -0,0 +1,64 @@
+package com.sckw.excel.easyexcel;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 监听类,可以自定义
+ *
+ * @author LengFaQiang
+ * @Created 2019-7-18 18:01:53
+ **/
+public class ExcelListener extends AnalysisEventListener {
+
+    /**
+     * 自定义用于暂时存储data。
+     * 可以通过实例获取该值
+     */
+    private List<Object> datas = new ArrayList<>();
+
+    /**
+     * 通过 AnalysisContext 对象还可以获取当前 sheet,当前行等数据
+     */
+    @Override
+    public void invoke(Object object, AnalysisContext context) {
+        //数据存储到list,供批量处理,或后续自己业务逻辑处理。
+        datas.add(object);
+        //根据业务自行 do something
+        doSomething();
+        /*
+        如数据过大,可以进行定量分批处理
+        if(datas.size()<=100){
+            datas.add(object);
+        }else {
+            doSomething();
+            datas = new ArrayList<Object>();
+        }
+         */
+    }
+
+    /**
+     * 根据业务自行实现该方法
+     */
+    private void doSomething() {
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext context) {
+        /*
+            datas.clear();
+            解析结束销毁不用的资源
+         */
+    }
+
+    public List<Object> getDatas() {
+        return datas;
+    }
+
+    public void setDatas(List<Object> datas) {
+        this.datas = datas;
+    }
+}

+ 46 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/ExcelSelectedResolve.java

@@ -0,0 +1,46 @@
+package com.sckw.excel.easyexcel;
+
+import com.sckw.excel.annotation.ExcelSelected;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author LengFaQiang
+ * @version 1.0.0
+ * @ClassName ExcelSelectedResolve.java
+ * @Description easy导出设置下拉框
+ * @createTime 2022/4/27 10:27
+ */
+@Data
+@Slf4j
+public class ExcelSelectedResolve {
+
+    /**
+     * 下拉内容
+     */
+    private String[] source;
+
+    /**
+     * 设置下拉框的起始行,默认为第二行
+     */
+    private int firstRow;
+
+    /**
+     * 设置下拉框的结束行,默认为最后一行
+     */
+    private int lastRow;
+
+    public String[] resolveSelectedSource(ExcelSelected excelSelected) {
+        if (excelSelected == null) {
+            return null;
+        }
+
+        // 获取固定下拉框的内容
+        String[] source = excelSelected.source();
+        if (source.length > 0) {
+            return source;
+        }
+        return null;
+    }
+
+}

+ 30 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/LocalDateTimeConverter.java

@@ -0,0 +1,30 @@
+package com.sckw.excel.easyexcel;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 导出时的字段类型转换
+ * LocalDateTime to「yyyy-MM-dd HH:mm:ss」
+ *
+ * @author LengFaQiang
+ * @version v1
+ * @create 2020-09-24 11:07:29
+ * @copyright
+ */
+public class LocalDateTimeConverter implements Converter<LocalDateTime> {
+
+    @Override
+    public Class<LocalDateTime> supportJavaTypeKey() {
+        return LocalDateTime.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+}

+ 21 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/RequestHolder.java

@@ -0,0 +1,21 @@
+package com.sckw.excel.easyexcel;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+/**
+ * 获取requestHolder
+ */
+public class RequestHolder {
+    public static HttpServletRequest getRequest(){
+        HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        return req;
+    }
+
+    public static HttpServletResponse getResponse(){
+        HttpServletResponse resp = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
+        return resp;
+    }
+}

+ 36 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/RowWriteHandlerImpl.java

@@ -0,0 +1,36 @@
+package com.sckw.excel.easyexcel;
+
+//import com.alibaba.excel.metadata.CellData;
+
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.write.handler.CellWriteHandler;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
+import org.apache.poi.ss.usermodel.*;
+
+/**
+ * @author LengFaQiang
+ * @version 1.0.0
+ * @ClassName RowWriteHandlerImpl.java
+ * @Description 设置导出excel的单元格格式为文本
+ * @createTime 2022年012月021日 10:15:00
+ */
+public class RowWriteHandlerImpl implements CellWriteHandler {
+
+    CellStyle cellStyle;
+    @Override
+    public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
+
+    }
+
+    @Override
+    public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+        Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
+        if (cellStyle == null){
+            cellStyle = workbook.createCellStyle();
+        }
+        DataFormat dataFormat = workbook.createDataFormat();
+        cellStyle.setDataFormat(dataFormat.getFormat("@"));
+        cell.setCellStyle(cellStyle);
+    }
+}

+ 60 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/SelectedSheetWriteHandler.java

@@ -0,0 +1,60 @@
+package com.sckw.excel.easyexcel;
+
+import com.alibaba.excel.write.handler.SheetWriteHandler;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.apache.poi.ss.usermodel.DataValidation;
+import org.apache.poi.ss.usermodel.DataValidationConstraint;
+import org.apache.poi.ss.usermodel.DataValidationHelper;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.util.CellRangeAddressList;
+
+import java.util.Map;
+
+/**
+ * @author LengFaQiang
+ * @version 1.0.0
+ * @ClassName SelectedSheetWriteHandler.java
+ * @Description 导出设置下拉框handler
+ * @createTime 2022/4/27 10:29
+ */
+@Data
+@AllArgsConstructor
+public class SelectedSheetWriteHandler implements SheetWriteHandler {
+
+    private final Map<Integer, ExcelSelectedResolve> selectedMap;
+
+    /**
+     * Called before create the sheet
+     */
+    @Override
+    public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
+
+    }
+
+    /**
+     * Called after the sheet is created
+     */
+    @Override
+    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
+        // 这里可以对cell进行任何操作
+        Sheet sheet = writeSheetHolder.getSheet();
+        DataValidationHelper helper = sheet.getDataValidationHelper();
+        selectedMap.forEach((k, v) -> {
+            // 设置下拉列表的行: 首行,末行,首列,末列
+            CellRangeAddressList rangeList = new CellRangeAddressList(v.getFirstRow(), v.getLastRow(), k, k);
+            // 设置下拉列表的值
+            DataValidationConstraint constraint = helper.createExplicitListConstraint(v.getSource());
+            // 设置约束
+            DataValidation validation = helper.createValidation(constraint, rangeList);
+            // 阻止输入非下拉选项的值
+            validation.setErrorStyle(DataValidation.ErrorStyle.STOP);
+            validation.setShowErrorBox(true);
+            validation.setSuppressDropDownArrow(true);
+            validation.createErrorBox("提示", "请输入下拉选项中的内容");
+            sheet.addValidationData(validation);
+        });
+    }
+}

+ 24 - 0
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/easyexcel/SheetExcelData.java

@@ -0,0 +1,24 @@
+package com.sckw.excel.easyexcel;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SheetExcelData<T> {
+
+    /**
+     * 数据
+     */
+    private List<T> dataList;
+
+    /**
+     * sheet名
+     */
+    private String sheetName;
+
+    /**
+     * 对象类型
+     */
+    private Class<T> tClass ;
+}

+ 2 - 9
sckw-common/sckw-common-mongo/pom.xml

@@ -2,24 +2,18 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-common-mongo</artifactId>
-    <version>1.0.0</version>
-
-    <description>mongodb</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <spring-boot.version>3.0.5</spring-boot.version>
     </properties>
 
     <dependencies>
@@ -28,5 +22,4 @@
             <artifactId>spring-boot-starter-data-mongodb</artifactId>
         </dependency>
     </dependencies>
-
 </project>

+ 10 - 20
sckw-common/sckw-common-redis/pom.xml

@@ -2,50 +2,40 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-common-redis</artifactId>
-    <version>1.0.0</version>
-
-    <description>缓存服务</description>
+    <description>Redis缓存服务</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <redisson.version>3.20.1</redisson.version>
     </properties>
 
-
     <dependencies>
-<!--        <dependency>-->
-<!--            <groupId>org.redisson</groupId>-->
-<!--            <artifactId>redisson-spring-boot-starter</artifactId>-->
-<!--            <version>${redisson.version}</version>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>com.sckw</groupId>-->
-<!--            <artifactId>sckw-common-core</artifactId>-->
-<!--            <version>1.0.0</version>-->
-<!--        </dependency>-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.redisson</groupId>
             <artifactId>redisson-spring-boot-starter</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-json</artifactId>
         </dependency>
     </dependencies>
-
 </project>

+ 5 - 7
sckw-common/sckw-common-remote/pom.xml

@@ -2,23 +2,19 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-common-remote</artifactId>
-    <version>1.0.0</version>
     <description>远程调用模块</description>
 
-
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
     <dependencies>
@@ -26,6 +22,7 @@
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-spring-boot-starter</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo</artifactId>
@@ -36,6 +33,7 @@
                 </exclusion>
             </exclusions>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-openfeign</artifactId>
@@ -45,10 +43,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-autoconfigure</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-commons</artifactId>
         </dependency>
     </dependencies>
-
 </project>

+ 43 - 0
sckw-common/sckw-common-seata/pom.xml

@@ -0,0 +1,43 @@
+<?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>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
+        <version>1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>sckw-common-seata</artifactId>
+    <description>分布式事务</description>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
+            <!-- 排除掉springcloud默认的seata版本,以免版本不一致出现问题-->
+            <exclusions>
+                <exclusion>
+                    <groupId>io.seata</groupId>
+                    <artifactId>seata-spring-boot-starter</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.seata</groupId>
+                    <artifactId>seata-all</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- 上面排除掉了springcloud默认seata版本,此处引入和seata-server版本对应的seata包-->
+        <dependency>
+            <groupId>io.seata</groupId>
+            <artifactId>seata-spring-boot-starter</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 28 - 0
sckw-common/sckw-common-seata/src/main/java/com/sckw/seata/config/GlobalTransactionalConfig.java

@@ -0,0 +1,28 @@
+package com.sckw.seata.config;
+
+import io.seata.spring.annotation.AspectTransactionalInterceptor;
+import org.springframework.aop.Advisor;
+import org.springframework.aop.aspectj.AspectJExpressionPointcut;
+import org.springframework.aop.support.DefaultPointcutAdvisor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author lfdc
+ * @description 全局分布式事务{seata}bean
+ * @date 2023/6/15 0015
+ */
+//@Component
+public class GlobalTransactionalConfig {
+    @Bean
+    public AspectTransactionalInterceptor aspectTransactionalInterceptor () {
+        return new AspectTransactionalInterceptor();
+    }
+
+    @Bean
+    public Advisor txAdviceAdvisor(AspectTransactionalInterceptor aspectTransactionalInterceptor ) {
+        AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
+        pointcut.setExpression("配置切点表达式使全局事务拦截器生效");
+        return new DefaultPointcutAdvisor(pointcut, aspectTransactionalInterceptor);
+    }
+}

+ 39 - 0
sckw-common/sckw-common-sentinel/pom.xml

@@ -0,0 +1,39 @@
+<?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>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
+        <version>1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>sckw-common-sentinel</artifactId>
+    <description>分布式限流熔断</description>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-core</artifactId>
+        </dependency>
+
+        <!--SpringCloud-sentinel集成-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+
+        <!-- Sentinel Datasource Nacos 持久化存储-->
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-datasource-nacos</artifactId>
+        </dependency>
+
+    </dependencies>
+</project>

+ 6 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/exceptionHandler/CustomBlockExceptionHandler.java → sckw-common/sckw-common-sentinel/src/main/java/com/sckw/sentinel/CustomBlockExceptionHandler.java

@@ -1,5 +1,6 @@
-package com.sckw.core.web.exceptionHandler;
+package com.sckw.sentinel;
 
+/*
 import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
 import com.alibaba.csp.sentinel.slots.block.BlockException;
 import com.alibaba.csp.sentinel.slots.block.authority.AuthorityException;
@@ -15,6 +16,7 @@ import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Configuration;
 
+*/
 /**
  * @author lfdc
  * @version 1.0
@@ -22,7 +24,8 @@ import org.springframework.context.annotation.Configuration;
  * @description 自定义sentinel异常Handler
  * @company sckw
  * @date 2023-06-08 09:06:59
- */
+ *//*
+
 @Slf4j
 @Configuration
 public class CustomBlockExceptionHandler implements BlockExceptionHandler {
@@ -99,3 +102,4 @@ public class CustomBlockExceptionHandler implements BlockExceptionHandler {
         new CustomBlockExceptionHandler();
     }
 }
+*/

+ 3 - 12
sckw-common/sckw-common-stream/pom.xml

@@ -2,33 +2,27 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-common-stream</artifactId>
-    <version>1.0.0</version>
     <description>消息驱动服务</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <alicloud-sms.version>2.2.0.RELEASE</alicloud-sms.version>
-        <lombok.version>1.18.26</lombok.version>
     </properties>
 
-
     <dependencies>
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-stream</artifactId>
@@ -39,13 +33,10 @@
             <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
         </dependency>
 
-
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-alicloud-sms</artifactId>
-            <version>${alicloud-sms.version}</version>
         </dependency>
 
     </dependencies>
-
 </project>

+ 10 - 1
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwMessage.java

@@ -7,12 +7,21 @@ import lombok.NoArgsConstructor;
 
 import java.util.Date;
 import java.util.Map;
-
+/**
+ * @desc: message消费对象
+ * @author: yzc
+ * @date: 2023-06-19 13:52
+ */
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
 public class SckwMessage {
 
+    /**
+     * 请求id
+     */
+    private String requestId;
+
     /**
      * 短信模板code
      */

+ 7 - 5
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwSms.java

@@ -1,20 +1,22 @@
 package com.sckw.stream.model;
 
 import com.sckw.stream.enums.SmsCodeEnum;
-import lombok.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
-
 import java.util.Map;
+
 /**
  * @desc: 发送短信对象
  * @author: yzc
  * @date: 2023-06-16 14:04
  */
-@Getter
-@Setter
-@ToString
+@Data
+@AllArgsConstructor
 @Accessors(chain = true)
 public class SckwSms {
+
     public SckwSms(){
         this.signName = "矿拉拉";
     }

+ 0 - 4
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/utils/SmsUtil.java

@@ -9,10 +9,6 @@ import com.aliyuncs.profile.DefaultProfile;
 import com.aliyuncs.profile.IClientProfile;
 import com.sckw.stream.enums.SmsCodeEnum;
 import com.sckw.stream.model.SckwSms;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
 import java.util.HashMap;
 
 public class SmsUtil {

+ 15 - 8
sckw-common/sckw-common-xxl-job/pom.xml → sckw-common/sckw-common-xxljob/pom.xml

@@ -2,28 +2,35 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-common</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>sckw-common-xxl-job</artifactId>
-    <version>1.0.0</version>
-    <description>核心模块</description>
+    <artifactId>sckw-common-xxljob</artifactId>
+    <description>任务调度</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <xxljob.version>2.4.0</xxljob.version>
     </properties>
+
     <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.xuxueli</groupId>
             <artifactId>xxl-job-core</artifactId>
-            <version>${xxljob.version}</version>
         </dependency>
     </dependencies>
 </project>

+ 0 - 0
sckw-common/sckw-common-xxl-job/src/main/java/com/sckw/xxljob/config/XxlJobAutoConfiguration.java → sckw-common/sckw-common-xxljob/src/main/java/com/sckw/xxljob/config/XxlJobAutoConfiguration.java


+ 0 - 0
sckw-common/sckw-common-xxl-job/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports → sckw-common/sckw-common-xxljob/src/main/resources/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports


+ 26 - 22
sckw-gateway/pom.xml

@@ -2,56 +2,60 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-service-platform</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-gateway</artifactId>
-    <version>1.0.0</version>
-    <description>网关服务</description>
+    <description> 网关模块 </description>
+
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <spring-cloud-gateway.version>4.0.1</spring-cloud-gateway.version>
     </properties>
 
-
     <dependencies>
+        <!--web-->
         <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
         </dependency>
-        <!--注册中心客户端-->
+
         <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+            <optional>true</optional>
         </dependency>
-        <!--配置中心客户端-->
+
         <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+            <artifactId>spring-cloud-loadbalancer</artifactId>
         </dependency>
+
         <!--GateWay ⽹关-->
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-gateway</artifactId>
         </dependency>
-        <!--负载均衡-->
+
+        <!--注册中心客户端-->
         <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>
 
+        <!--配置中心客户端-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
     </dependencies>
-
 </project>

+ 7 - 3
sckw-gateway/src/main/resources/bootstrap.yml

@@ -16,7 +16,7 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
       config:
@@ -25,7 +25,7 @@ spring:
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
         # 共享配置
@@ -36,6 +36,9 @@ spring:
 dubbo:
   application:
     name: gateway-dubbo-server
+    parameters:
+      group: ${spring.cloud.nacos.discovery.group}
+      namespace: ${spring.cloud.nacos.discovery.namespace}
     # 该配置在producer-server中是没有的,但是在consumer这里要配置一下
     # 如果不配置这个QOS的端口,它会延用dubbo自动生成的端口,在启动的时候,QOS注册就会提示该端口已经被使用的错误
     # 虽然启动时有打印端口已经被使用的错误,但是依旧可以正常启动服务,并且dubbo也可以正常调用,但是为了解决启动报错还是加上这个端口
@@ -47,5 +50,6 @@ dubbo:
     port: -1
   registry:
     address: nacos://${spring.cloud.nacos.discovery.server-addr}
-    group: ${spring.cloud.nacos.config.group}
+    group: ${spring.cloud.nacos.discovery.group}
+    namespace: ${spring.cloud.nacos.discovery.namespace}
     protocol: nacos

+ 199 - 0
sckw-gateway/src/main/resources/logback-spring.xml

@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
+<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
+<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
+                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
+<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
+<configuration  scan="true" scanPeriod="10 seconds">
+    <contextName>logback</contextName>
+    <springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue="service"/>
+
+    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
+    <property name="log.path" value="/logs/${applicationName}" />
+
+    <!--0. 日志格式和颜色渲染 -->
+    <!-- 彩色日志依赖的渲染类 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+    <!-- 彩色日志格式 -->
+    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 输出到控制台-->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 设置字符集 -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!--2. 输出到文档-->
+    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_debug.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志归档 -->
+            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录debug级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_info.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 每天日志归档路径以及格式 -->
+            <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_warn.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录warn级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_error.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录ERROR级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--
+        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
+        以及指定<appender>。<logger>仅有一个name属性,
+        一个可选的level和一个可选的addtivity属性。
+        name:用来指定受此logger约束的某一个包或者具体的某一个类。
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
+              如果未设置此属性,那么当前logger将会继承上级的级别。
+        addtivity:是否向上级logger传递打印信息。默认是true。
+        <logger name="org.springframework.web" level="info"/>
+        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
+    -->
+    <!-- hibernate logger -->
+    <logger name="com.atguigu" level="debug" />
+    <!-- Spring framework logger -->
+    <logger name="org.springframework" level="debug" additivity="false"></logger>
+
+
+    <!--
+        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
+        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
+        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
+        【logging.level.org.mybatis=debug logging.level.dao=debug】
+     -->
+
+    <!--
+        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+        不能设置为INHERITED或者同义词NULL。默认是DEBUG
+        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
+    -->
+
+    <!-- 4. 最终的策略 -->
+    <!-- 4.1 开发环境:打印控制台-->
+    <springProfile name="dev">
+        <logger name="com.sdcm.pmp" level="debug"/>
+    </springProfile>
+
+    <root level="info">
+        <appender-ref ref="CONSOLE" />
+        <appender-ref ref="DEBUG_FILE" />
+        <appender-ref ref="INFO_FILE" />
+        <appender-ref ref="WARN_FILE" />
+        <appender-ref ref="ERROR_FILE" />
+    </root>
+
+    <!-- 4.2 生产环境:输出到文档 -->
+    <springProfile name="pro">
+        <root level="info">
+            <appender-ref ref="CONSOLE" />
+            <appender-ref ref="DEBUG_FILE" />
+            <appender-ref ref="INFO_FILE" />
+            <appender-ref ref="ERROR_FILE" />
+            <appender-ref ref="WARN_FILE" />
+        </root>
+    </springProfile>
+
+</configuration>

+ 3 - 14
sckw-modules-api/pom.xml

@@ -2,30 +2,20 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-service-platform</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-modules-api</artifactId>
-    <version>1.0.0</version>
-
     <packaging>pom</packaging>
-    <description>接口模块</description>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-    </dependencies>
     <modules>
         <module>sckw-system-api</module>
         <module>sckw-file-api</module>
         <module>sckw-message-api</module>
+        <module>sckw-modules-bom</module>
     </modules>
 
     <properties>
@@ -33,5 +23,4 @@
         <maven.compiler.target>17</maven.compiler.target>
     </properties>
 
-
 </project>

+ 8 - 12
sckw-modules-api/sckw-file-api/pom.xml

@@ -2,37 +2,33 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-modules-api</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
-
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-file-api</artifactId>
-    <version>1.0.0</version>
-    <description>系统基础服务接口</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
-
-
     <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-openfeign-core</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
         </dependency>
-
     </dependencies>
-
 </project>

+ 3 - 0
sckw-modules-api/sckw-file-api/src/main/java/com/sckw/file/api/dubbo/FileApiDubboService.java

@@ -16,4 +16,7 @@ public interface FileApiDubboService {
     HttpResult fileUpload(String str, byte[] fileByte);
 
     HttpResult fileUploadTodubbo(MultipartFile file);
+
+    HttpResult selectAll();
+
 }

+ 8 - 7
sckw-modules-api/sckw-message-api/pom.xml

@@ -2,32 +2,33 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-modules-api</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-message-api</artifactId>
-    <version>1.0.0</version>
-    <description>系统基础服务接口</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
-
     <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-openfeign-core</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
         </dependency>
     </dependencies>
 </project>

+ 39 - 0
sckw-modules-api/sckw-modules-bom/pom.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.sckw</groupId>
+    <artifactId>sckw-modules-bom</artifactId>
+    <version>1.0.0</version>
+    <packaging>pom</packaging>
+    <description>modules依赖项</description>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+    </properties>
+    <dependencyManagement>
+        <dependencies>
+            <!-- 核心模块 -->
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-system-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-file-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.sckw</groupId>
+                <artifactId>sckw-message-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+</project>

+ 12 - 8
sckw-modules-api/sckw-system-api/pom.xml

@@ -2,30 +2,34 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-modules-api</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-system-api</artifactId>
-    <version>1.0.0</version>
-    <description>系统基础服务接口</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
-
     <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-openfeign-core</artifactId>
         </dependency>
-    </dependencies>
 
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-core</artifactId>
+        </dependency>
+    </dependencies>
 </project>

+ 6 - 60
sckw-modules/pom.xml

@@ -2,21 +2,23 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>com.sckw</groupId>
         <artifactId>sckw-service-platform</artifactId>
+        <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
+
     <artifactId>sckw-modules</artifactId>
     <packaging>pom</packaging>
-    <version>1.0.0</version>
-    <description>业务模块</description>
+
     <modules>
         <module>sckw-system</module>
         <module>sckw-message</module>
         <module>sckw-example</module>
         <module>sckw-file</module>
+        <module>sckw-product</module>
+        <module>sckw-order</module>
     </modules>
 
     <properties>
@@ -24,60 +26,4 @@
         <maven.compiler.target>17</maven.compiler.target>
     </properties>
 
-    <dependencies>
-        <!--web-->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-remote</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-datasource</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-redis</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-stream</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-            <dependency>
-                <groupId>com.sckw</groupId>
-                <artifactId>sckw-system-api</artifactId>
-                <version>1.0.0</version>
-            </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <!--注册中心客户端-->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-        </dependency>
-        <!--配置中心客户端-->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-bootstrap</artifactId>
-        </dependency>
-    </dependencies>
-
 </project>

+ 44 - 51
sckw-modules/sckw-example/pom.xml

@@ -2,134 +2,127 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>sckw-modules</artifactId>
         <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
     <artifactId>sckw-example</artifactId>
-    <version>1.0.0</version>
-    <description>示例</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
     <dependencies>
-
+        <!-- 核心模块 -->
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-file</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-common-core</artifactId>
         </dependency>
 
-
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-common-mongo</artifactId>
         </dependency>
 
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-datasource</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-common-xxljob</artifactId>
         </dependency>
 
-        <!--<dependency>
+        <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-elasticsearch</artifactId>
-            <version>1.0.0</version>
-        </dependency>-->
+            <artifactId>sckw-common-stream</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-elasticsearch</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-common-remote</artifactId>
         </dependency>
 
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-xxl-job</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-common-redis</artifactId>
         </dependency>
 
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-excel</artifactId>
-            <version>1.0.0</version>
         </dependency>
 
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-redis</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-common-datasource</artifactId>
         </dependency>
 
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-system-api</artifactId>
-            <version>1.0.0</version>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-file-api</artifactId>
-            <version>1.0.0</version>
         </dependency>
 
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-stream</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-message-api</artifactId>
         </dependency>
 
+        <!--web-->
         <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-mongo</artifactId>
-            <version>1.0.0</version>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-loadbalancer</artifactId>
         </dependency>
+
         <!--注册中心客户端-->
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>
+
         <!--配置中心客户端-->
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
+
+        <!--junit-->
         <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
         </dependency>
+
         <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-message-api</artifactId>
-            <version>1.0.0</version>
-            <scope>compile</scope>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
         </dependency>
-
-
     </dependencies>
-    <build>
-        <resources>
-            <resource>
-                <directory>src/main/java</directory>
-                <includes>
-                    <include>**/*.xml</include>
-                </includes>
-                <filtering>true</filtering>
-            </resource>
-        </resources>
-    </build>
 </project>

+ 1 - 6
sckw-modules/sckw-example/src/main/java/com/sckw/example/ExampleApplication.java

@@ -1,6 +1,5 @@
 package com.sckw.example;
 
-
 import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -17,10 +16,6 @@ public class ExampleApplication {
     public static void main(String[] args) {
         // 关闭nacos日志
         System.setProperty("nacos.logging.default.config.enabled", "false");
-        try {
-            SpringApplication.run(ExampleApplication.class, args);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+        SpringApplication.run(ExampleApplication.class, args);
     }
 }

+ 0 - 86
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/EsController.java

@@ -1,86 +0,0 @@
-package com.sckw.example.controller;
-
-import co.elastic.clients.elasticsearch._types.mapping.Property;
-import co.elastic.clients.elasticsearch._types.mapping.TypeMapping;
-import co.elastic.clients.elasticsearch.core.search.Hit;
-import co.elastic.clients.elasticsearch.indices.IndexSettings;
-import co.elastic.clients.util.ObjectBuilder;
-import com.sckw.elasticsearch.service.es.EsUtils;
-import com.sckw.example.model.Product;
-import lombok.RequiredArgsConstructor;
-import org.apache.commons.compress.utils.Lists;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.List;
-import java.util.function.Function;
-
-/**
- * @author: yzc
- * @date: 2023-06-06 14:40
- * @description:easy-es测试
- */
-@RestController
-@RequestMapping("/testEs")
-@RequiredArgsConstructor
-public class EsController {
-
-
-    @GetMapping(value = "/createIndex")
-    public void createIndex() {
-        // 索引名
-        String indexName = "product002";
-
-        // 构建setting时,builder用到的lambda
-        Function<IndexSettings.Builder, ObjectBuilder<IndexSettings>> settingFn = sBuilder -> sBuilder
-                .index(iBuilder -> iBuilder
-                        // 三个分片
-                        .numberOfShards("3")
-                        // 一个副本
-                        .numberOfReplicas("1")
-                );
-
-        // 新的索引有三个字段,每个字段都有自己的property,这里依次创建
-        Property keywordProperty = Property.of(pBuilder -> pBuilder.keyword(kBuilder -> kBuilder.ignoreAbove(256)));
-        Property textProperty = Property.of(pBuilder -> pBuilder.text(tBuilder -> tBuilder));
-        Property integerProperty = Property.of(pBuilder -> pBuilder.integer(iBuilder -> iBuilder));
-
-        // // 构建mapping时,builder用到的lambda
-        Function<TypeMapping.Builder, ObjectBuilder<TypeMapping>> mappingFn = mBuilder -> mBuilder
-                .properties("name", keywordProperty)
-                .properties("description", textProperty)
-                .properties("price", integerProperty);
-
-        // 创建索引,并且指定了setting和mapping
-        EsUtils.createIndex(indexName, settingFn, mappingFn);
-
-    }
-
-
-    @GetMapping(value = "/deleteIndex")
-    public void deleteIndex() {
-        EsUtils.delIndex("product002");
-    }
-
-    @GetMapping(value = "/bulkSave")
-    public void bulkSave() {
-        List<Product> list = Lists.newArrayList();
-        Product nancy = Product.builder().name("Nancy").description("试试").price(1000).build();
-        Product jason = Product.builder().name("Jason").description("玩玩").price(2000).build();
-        Product xason = Product.builder().name("xason").description("试试2").price(3000).build();
-        Product qason = Product.builder().name("qason").description("玩玩2").price(3000).build();
-        list.add(nancy);
-        list.add(jason);
-        list.add(xason);
-        list.add(qason);
-        EsUtils.bulkSave("product002", list);
-
-    }
-
-    @GetMapping(value = "/search")
-    public void search() {
-        List<Hit<Object>> list = EsUtils.advancedQueryByPage("product002", 3, 2);
-        System.out.println(list);
-    }
-}

+ 34 - 7
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/ExcelExportController.java

@@ -1,26 +1,29 @@
 package com.sckw.example.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.example.dao.KwsDeptDao;
+import com.sckw.example.model.KwsDept;
 import com.sckw.example.model.vo.SysUserVo;
 import com.sckw.example.service.ExcelExportService;
-import com.sckw.excel.config.easyexcel.ExcelImportListener;
-import com.sckw.excel.config.easyexcel.RequestHolder;
+import com.sckw.excel.easyexcel.ExcelImportListener;
+import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.DateUtil;
 import com.sckw.excel.utils.ExcelUtil;
+import com.sckw.file.api.dubbo.FileApiDubboService;
+//import io.seata.spring.annotation.GlobalTransactional;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FileUtils;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.hibernate.validator.constraints.Range;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
@@ -34,7 +37,13 @@ import java.util.List;
 public class ExcelExportController {
 
     @Autowired
-    public ExcelExportService excelExportService;
+    ExcelExportService excelExportService;
+
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    FileApiDubboService fileApiDubboService;
+
+    @Autowired
+    KwsDeptDao kwsDeptDao;
 
     /**
      * 模板下载
@@ -112,4 +121,22 @@ public class ExcelExportController {
         ExcelImportListener importListener = new ExcelImportListener();
         return excelExportService.importExcel(file, importListener);
     }
+
+    /**
+     * 分布式事务验证
+     * @return
+     */
+    //@GlobalTransactional
+    @RequestMapping(value = "globalTransactionalDemo",method = RequestMethod.GET)
+    public HttpResult globalTransactionalDemo() {
+        //auth 服务 调用example实现的dubbo接口
+        KwsDept kwsDept = new KwsDept();
+        kwsDept.setName("张三");
+        kwsDept.setAccount("张三");
+        kwsDept.setParentIds("2");
+        int i= kwsDeptDao.insert(kwsDept);
+        HttpResult result= fileApiDubboService.selectAll();
+        log.info(JSONObject.toJSONString(result));
+        return result;
+    }
 }

+ 9 - 0
sckw-modules/sckw-example/src/main/java/com/sckw/example/dao/KwsDeptDao.java

@@ -0,0 +1,9 @@
+package com.sckw.example.dao;
+
+import com.sckw.example.model.KwsDept;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface KwsDeptDao {
+    int insert(KwsDept kwsDept);
+}

+ 33 - 31
sckw-modules/sckw-example/src/main/java/com/sckw/example/dao/SysUserDao.java

@@ -1,31 +1,33 @@
-//package com.sckw.example.dao;
-//
-//import com.baomidou.dynamic.datasource.annotation.DS;
-//import com.sckw.example.model.SysUser;
-//import org.apache.ibatis.annotations.Mapper;
-//import org.apache.ibatis.annotations.Select;
-//import java.util.List;
-//import java.util.Map;
-//
-//@Mapper
-//public interface SysUserDao {
-//
-//    /**
-//     * 账号查询用户信息
-//     * @param params {account:账号, systemType:系统类别}
-//     * @return
-//     */
-//    @DS("slave_1")
-//    SysUser findByAccount(Map params);
-//
-//    @DS("master")
-//    @Select("SELECT * FROM user limit 1")
-//    List<SysUser> findUserByAccount(String account);
-//
-//    @DS("slave_1")
-//    @Select("SELECT * FROM sys_user limit 10")
-//    List<Map> findUserByAccount1(String account);
-//
-//    @DS("slave_1")
-//    List<Map<String, Object>> findPage(Map<String, Object> params);
-//}
+package com.sckw.example.dao;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.sckw.example.model.SysUser;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface SysUserDao {
+
+    /**
+     * 账号查询用户信息
+     * @param params {account:账号, systemType:系统类别}
+     * @return
+     */
+    @DS("slave_1")
+    SysUser findByAccount(Map params);
+
+    @DS("master")
+    @Select("SELECT * FROM user limit 1")
+    List<SysUser> findUserByAccount(String account);
+
+    @DS("slave_1")
+    @Select("SELECT * FROM sys_user limit 10")
+    List<Map> findUserByAccount1(String account);
+
+    @DS("slave_1")
+    List<Map<String, Object>> findPage(Map<String, Object> params);
+
+    int insert(SysUser sysUser);
+}

+ 30 - 0
sckw-modules/sckw-example/src/main/java/com/sckw/example/dubbo/FileApiServiceImpl.java

@@ -0,0 +1,30 @@
+package com.sckw.example.dubbo;
+
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.file.api.dubbo.FileApiDubboService;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * @author lfdc
+ * @description fileDubbo调用
+ * @date 2023/6/20 0020
+ */
+@DubboService(group = "design", version = "2.0.0")
+public class FileApiServiceImpl implements FileApiDubboService {
+
+    @Override
+    public HttpResult fileUpload(String str, byte[] fileByte) {
+        return null;
+    }
+
+    @Override
+    public HttpResult fileUploadTodubbo(MultipartFile file) {
+        return null;
+    }
+
+    @Override
+    public HttpResult selectAll() {
+        return null;
+    }
+}

+ 18 - 0
sckw-modules/sckw-example/src/main/java/com/sckw/example/model/KwsDept.java

@@ -0,0 +1,18 @@
+package com.sckw.example.model;
+
+import lombok.Data;
+
+/**
+ * @author lfdc
+ * @description
+ * @date 2023/6/19 0019
+ */
+@Data
+public class KwsDept  {
+
+    private String name;
+    private String parentIds;
+//    private String contacts;
+    private String account;
+
+}

+ 3 - 4
sckw-modules/sckw-example/src/main/java/com/sckw/example/service/ExcelExportService.java

@@ -8,14 +8,13 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.example.model.vo.SysEnterpriseVo;
 import com.sckw.example.model.vo.SysUserVo;
 import com.sckw.excel.common.FileType;
-import com.sckw.excel.config.easyexcel.ExcelImportListener;
-import com.sckw.excel.config.easyexcel.SheetExcelData;
+import com.sckw.excel.easyexcel.ExcelImportListener;
+import com.sckw.excel.easyexcel.SheetExcelData;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
-
 import java.io.*;
 import java.net.URLEncoder;
 import java.util.ArrayList;
@@ -209,4 +208,4 @@ public class ExcelExportService {
         }
         return HttpResult.ok(HttpStatus.SUCCESS_CODE);
     }
-}
+}

+ 29 - 74
sckw-modules/sckw-example/src/main/resources/bootstrap-dev.yml

@@ -5,77 +5,21 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
-        # 权重 1-100 数值越大权重越大分配的流量就越大,通常结合权重负载均衡策略
-#        weight: 100
       config:
         # 配置中心地址
         server-addr: 10.10.10.230:8848
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
-    function:
-      definition: sckwSms;sckwMessage
-        enabled: true
-    stream:
-      binders:
-        defaultRabbit:
-          type: rabbit
-          environment:
-            spring:
-              rabbitmq:
-                virtual-host: /
-                host: 10.10.10.230
-                port: 5672
-                username: sckw
-                password: Yy123...
-      bindings:
-        sckwSms-in-0:
-          destination: sckw-sms
-          content-type: application/json
-          binder: defaultRabbit
-          group: sckw
-        sckwSms-out-0:
-          destination: sckw-sms
-          content-type: application/json
-          default-binder: defaultRabbit
-          group: sckw
-        sckwMessage-in-0:
-          destination: sckw-message
-          content-type: application/json
-          binder: defaultRabbit
-          group: sckw
-        sckwMessage-out-0:
-          destination: sckw-message
-          content-type: application/json
-          binder: defaultRabbit
-          group: sckw
-  rabbitmq:
-    username: sckw
-    password: Yy123...
-    host: 10.10.10.230
-    port: 5672
-    virtual-host: /
+
   data:
-    mongodb:
-      uri: mongodb://sckw:Yy123...@10.10.10.230:27017/sckw?authSource=admin&authMechanism=SCRAM-SHA-1
-      binders:
-        defaultRabbit:
-          type: rabbit
-          environment:
-            spring:
-              rabbitmq:
-                virtual-host: /
-                host: 39.104.134.114
-                port: 5672
-                username: wph
-                password: Yy123...
-# sentinel降级配置
+    # sentinel降级配置
     sentinel:
       transport:
         client-ip: ${spring.cloud.client.ip-address} # 获取本机IP地址
@@ -89,7 +33,7 @@ spring:
         web-context-unify: false
         #持久化nacos配置中
       datasource:
-#        sentinel-rule: # 唯一名称可自定义
+        #sentinel-rule: 唯一名称可自定义
         #限流
         flow:
           nacos:
@@ -97,7 +41,7 @@ spring:
             namespace:  sckw-service-platform-dev
             server-addr:  ${spring.cloud.nacos.discovery.server-addr}
             # 设置Nacos中配置文件的命名规则
-#            data-id:  ${spring.application.name}-sentinel-flow-rules
+            #            data-id:  ${spring.application.name}-sentinel-flow-rules
             data-id:  sckw-example-sentinel-flow-rules
             group-id: SENTINEL_GROUP
             data-type: json
@@ -106,9 +50,9 @@ spring:
         #熔断
         degrade:
           nacos:
-#            namespace:  sckw-service-platform-dev
+            namespace:  sckw-service-platform-dev
             server-addr: ${spring.cloud.nacos.discovery.server-addr}
-#            data-id: ${spring.application.name}-sentinel-degrade-rules
+            #data-id: ${spring.application.name}-sentinel-degrade-rules
             data-id: sckw-example-sentinel-degrade-rules
             group-id: SENTINEL_GROUP
             #熔断
@@ -117,47 +61,58 @@ spring:
       eager: true
   datasource:
     dynamic:
-      seata: true
+      seata: false
+  main:
+    allow-circular-references: true
+
+
 seata:
   # seata 服务分组,要与服务端nacos-config.txt中service.vgroup_mapping的后缀对应
+  # 事务分组名称,要和服务端对应
   tx-service-group: example-seata-service-group
   service:
     vgroup-mapping:
+      # key是事务分组名称 value要和服务端的机房名称保持一致
       example-seata-service-group: default
   registry:
     # 指定nacos作为注册中心
     type: nacos
     nacos:
-      server-addr: 10.10.10.230:8848
-      namespace: sckw-service-platform-dev
-      group: sckw-service-platform
-
+      server-addr: ${spring.cloud.nacos.discovery.server-addr}
+      namespace: ${spring.cloud.nacos.discovery.namespace}
+      #group: SEATA_GROUP为默认分组
+      group: ${spring.cloud.nacos.discovery.group}
   config:
     # 指定nacos作为配置中心
     type: nacos
     nacos:
-      server-addr: 10.10.10.230:8848
-      namespace: sckw-service-platform-dev
-      group: sckw-service-platform
+      server-addr: ${spring.cloud.nacos.discovery.server-addr}
+      namespace: ${spring.cloud.nacos.discovery.namespace}
+      group: ${spring.cloud.nacos.discovery.group}
   application-id: ${spring.application.name}
 # 支持feign对sentinel支持
 #feign:
 #  sentinel:
 #    enabled: true
 
+# dubbo
 dubbo:
   application:
     # 此处没有延用spring.application.name是因为当前项目本身也会注册到nacos中,如果dubbo也延用相同的名称,在nacos服务里会看到注册的producer-server服务数为2
     name: example-dubbo-server
+    parameters:
+      group: ${spring.cloud.nacos.discovery.group}
+      namespace: ${spring.cloud.nacos.discovery.namespace}
   protocol:
     name: dubbo
     port: -1
-    prefer-serialization: java
   registry:
     # 配置dubbo的注册中心为nacos
     address: nacos://${spring.cloud.nacos.discovery.server-addr}
-    group: ${spring.cloud.nacos.config.group}
+    group: ${spring.cloud.nacos.discovery.group}
+    namespace: ${spring.cloud.nacos.discovery.namespace}
     protocol: nacos
     #use-as-config-center: false
     #use-as-metadata-center: false
 
+links:

+ 4 - 0
sckw-modules/sckw-example/src/main/resources/bootstrap-local.yml

@@ -127,6 +127,10 @@ seata:
       namespace: ${spring.cloud.nacos.discovery.namespace}
       group: ${spring.cloud.nacos.discovery.group}
   application-id: ${spring.application.name}
+  #  当前不生效,使用驼峰
+  enabled: true
+  #  enable-auto-data-source-proxy: false
+  enableAutoDataSourceProxy: false
 #  application-id: sckw-seata-file
 # 支持feign对sentinel支持
 #feign:

+ 184 - 30
sckw-modules/sckw-example/src/main/resources/logback-spring.xml

@@ -1,45 +1,199 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-说明:
-    1. 文件的命名和加载顺序有关
-       logback.xml早于application.yml加载,logback-spring.xml晚于application.yml加载
-       如果logback配置需要使用application.yml中的属性,需要命名为logback-spring.xml
-    2. logback使用application.yml中的属性
-       使用springProperty才可使用application.yml中的值 可以设置默认值
--->
-<configuration debug="false">
+<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
+<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
+<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
+                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
+<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
+<configuration  scan="true" scanPeriod="10 seconds">
+    <contextName>logback</contextName>
     <springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue="service"/>
 
-    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
-    <property name="LOG_HOME" value="/tmp/log/${applicationName}" />
-    <!-- 控制台输出 -->
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
+    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
+    <property name="log.path" value="/logs/${applicationName}" />
+
+    <!--0. 日志格式和颜色渲染 -->
+    <!-- 彩色日志依赖的渲染类 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+    <!-- 彩色日志格式 -->
+    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 输出到控制台-->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 设置字符集 -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!--2. 输出到文档-->
+    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_debug.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 设置字符集 -->
         </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志归档 -->
+            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录debug级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_info.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 每天日志归档路径以及格式 -->
+            <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
     </appender>
 
-    <!-- 按照每天生成日志文件 -->
-    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${LOG_HOME}/${applicationName}.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!--日志文件输出的文件名-->
-            <FileNamePattern>${LOG_HOME}/${applicationName}-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
-            <!--日志文件保留天数-->
-            <MaxHistory>30</MaxHistory>
-            <MaxFileSize>1024MB</MaxFileSize>
+    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_warn.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
         </rollingPolicy>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
+        <!-- 此日志文档只记录warn级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_error.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
         </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录ERROR级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
     </appender>
 
-    <!-- 日志输出级别 -->
-    <root level="INFO">
-        <appender-ref ref="STDOUT" />
-        <appender-ref ref="FILE" />
+    <!--
+        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
+        以及指定<appender>。<logger>仅有一个name属性,
+        一个可选的level和一个可选的addtivity属性。
+        name:用来指定受此logger约束的某一个包或者具体的某一个类。
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
+              如果未设置此属性,那么当前logger将会继承上级的级别。
+        addtivity:是否向上级logger传递打印信息。默认是true。
+        <logger name="org.springframework.web" level="info"/>
+        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
+    -->
+    <!-- hibernate logger -->
+    <logger name="com.atguigu" level="debug" />
+    <!-- Spring framework logger -->
+    <logger name="org.springframework" level="debug" additivity="false"></logger>
+
+
+    <!--
+        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
+        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
+        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
+        【logging.level.org.mybatis=debug logging.level.dao=debug】
+     -->
+
+    <!--
+        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+        不能设置为INHERITED或者同义词NULL。默认是DEBUG
+        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
+    -->
+
+    <!-- 4. 最终的策略 -->
+    <!-- 4.1 开发环境:打印控制台-->
+    <springProfile name="dev">
+        <logger name="com.sdcm.pmp" level="debug"/>
+    </springProfile>
+
+    <root level="info">
+        <appender-ref ref="CONSOLE" />
+        <appender-ref ref="DEBUG_FILE" />
+        <appender-ref ref="INFO_FILE" />
+        <appender-ref ref="WARN_FILE" />
+        <appender-ref ref="ERROR_FILE" />
     </root>
 
+    <!-- 4.2 生产环境:输出到文档 -->
+    <springProfile name="pro">
+        <root level="info">
+            <appender-ref ref="CONSOLE" />
+            <appender-ref ref="DEBUG_FILE" />
+            <appender-ref ref="INFO_FILE" />
+            <appender-ref ref="ERROR_FILE" />
+            <appender-ref ref="WARN_FILE" />
+        </root>
+    </springProfile>
+
 </configuration>

+ 35 - 0
sckw-modules/sckw-example/src/main/resources/mapper/KwsDeptDao.xml

@@ -0,0 +1,35 @@
+<?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.sckw.example.dao.KwsDeptDao">
+  <resultMap id="BaseResultMap" type="com.sckw.example.model.KwsDept">
+    <result column="account" property="account" />
+    <result column="parent_ids" property="parentIds" />
+    <result column="name" property="name" />
+  </resultMap>
+
+    <insert id="insert" parameterType="com.sckw.example.model.KwsDept">
+        insert into sckw_system.kws_user
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null">
+                name,
+            </if>
+            <if test="account != null">
+                contacts,
+            </if>
+            <if test="parentIds != null">
+                parent_ids,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="name != null">
+                #{name,jdbcType=VARCHAR},
+            </if>
+            <if test="account != null">
+                #{account,jdbcType=VARCHAR},
+            </if>
+            <if test="parentIds != null">
+                #{parentIds,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+</mapper>

+ 40 - 41
sckw-modules/sckw-file/pom.xml

@@ -2,108 +2,107 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>sckw-modules</artifactId>
         <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
-<!--    <groupId>com.sckw</groupId>-->
     <artifactId>sckw-file</artifactId>
-    <version>1.0.0</version>
-    <description>文件服务</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
-
     <dependencies>
-
+        <!-- 核心模块 -->
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-remote</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-common-core</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-common-remote</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-datasource</artifactId>
-            <version>1.0.0</version>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-redis</artifactId>
-            <version>1.0.0</version>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-excel</artifactId>
-            <version>1.0.0</version>
         </dependency>
 
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-system-api</artifactId>
-            <version>1.0.0</version>
         </dependency>
 
-        <!--alibaba oss-->
+        <!--web-->
         <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
-            <version>2.2.0.RELEASE</version>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
-<!--        <dependency>-->
-<!--            <groupId>com.aliyun.oss</groupId>-->
-<!--            <artifactId>aliyun-sdk-oss</artifactId>-->
-<!--            <version>3.8.0</version>-->
-<!--            <scope>compile</scope>-->
-<!--        </dependency>-->
-        <!--jdk9+ 以上需要手动添加-->
+
         <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.3.1</version>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+            <optional>true</optional>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-loadbalancer</artifactId>
+        </dependency>
+
         <!--注册中心客户端-->
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>
+
         <!--配置中心客户端-->
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
+
+        <!--alibaba oss-->
         <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alicloud-oss</artifactId>
         </dependency>
+
         <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>easyexcel</artifactId>
-            <version>3.0.5</version>
-            <scope>compile</scope>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
         </dependency>
+
         <dependency>
-            <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-excel</artifactId>
-            <version>1.0.0</version>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
             <scope>compile</scope>
         </dependency>
-    </dependencies>
 
+    </dependencies>
 </project>

+ 1 - 7
sckw-modules/sckw-file/src/main/java/com/sckw/file/FileApplication.java

@@ -1,6 +1,5 @@
 package com.sckw.file;
 
-
 import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -15,7 +14,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
  * @company sckw
  * @date 2023-06-02 17:06:43
  */
-//@MapperScan("com.sckw.file.*.mapper")
 @EnableDubbo
 @EnableFeignClients({"com.sckw.*.api.feign"})
 @EnableDiscoveryClient
@@ -25,10 +23,6 @@ public class FileApplication {
     public static void main(String[] args) {
         // 关闭nacos日志
         System.setProperty("nacos.logging.default.config.enabled", "false");
-        try {
-            SpringApplication.run(FileApplication.class, args);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+        SpringApplication.run(FileApplication.class, args);
     }
 }

+ 6 - 0
sckw-modules/sckw-file/src/main/java/com/sckw/file/controller/FileApiController.java

@@ -105,4 +105,10 @@ public class FileApiController {
         return HttpResult.ok(map);
     }
 
+
+    @RequestMapping(value = "/selectAll", method = RequestMethod.GET)
+    public HttpResult selectAll() {
+        return fileService.selectAll();
+    }
+
 }

+ 7 - 0
sckw-modules/sckw-file/src/main/java/com/sckw/file/service/FileService.java

@@ -161,4 +161,11 @@ public class FileService {
         FileUtils.downOSSFile(fileName, response);
 //        FileUtils.downloadByFileName(fileName);
     }
+
+    public HttpResult selectAll() {
+        BigDecimal bigDecimal1 = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal bigDecimal2 = new BigDecimal(NumberConstant.SIX);
+        BigDecimal multiply = bigDecimal2.divide(bigDecimal1);
+        return HttpResult.ok("",multiply);
+    }
 }

+ 0 - 48
sckw-modules/sckw-file/src/main/resouces/bootstrap-dev.yml

@@ -1,48 +0,0 @@
-spring:
-  cloud:
-    nacos:
-      discovery:
-        # 服务注册地址
-        server-addr: 10.10.10.230:8848
-        # 命名空间
-        namespace: sckw-service-platform-dev
-        # 共享配置
-        group: sckw-service-platform
-      config:
-        # 配置中心地址
-        server-addr: 10.10.10.230:8848
-        # 配置文件格式
-        file-extension: yaml
-        # 命名空间
-        namespace: sckw-service-platform-dev
-        # 共享配置
-        group: sckw-service-platform
-
-#限制上传文件大小
-  servlet:
-    multipart:
-      max-file-size: 100MB
-      max-request-size: 100MB
-
-
-# dubbo
-dubbo:
-  application:
-    # 此处没有延用spring.application.name是因为当前项目本身也会注册到nacos中,如果dubbo也延用相同的名称,在nacos服务里会看到注册的producer-server服务数为2
-    name: file-dubbo-server
-  protocol:
-    name: dubbo
-    port: -1
-  registry:
-    # 配置dubbo的注册中心为nacos
-    address: nacos://${spring.cloud.nacos.discovery.server-addr}
-    group: ${spring.cloud.nacos.config.group}
-    protocol: nacos
-    #use-as-config-center: false
-    #use-as-metadata-center: false
-aliyun:
-  oss:
-    endpoint: oss-cn-chengdu.aliyuncs.com
-    accessKeyId: LTAI5tPEbubCGq5Rdwygbz4Q
-    secret: 7mQLWMaBJeZPRV1SRGogctYGXwppjQ
-    bucket: kaiwu-saas

+ 1 - 1
sckw-modules/sckw-file/src/main/resources/banner.txt

@@ -1,5 +1,5 @@
 ====================================================================================================================
 
-                    欢迎使用 [sckw-example] 开物供应链服务平台-文件服务 - Powered By https://www.xxxx.com
+                    欢迎使用 [sckw-file] 开物供应链服务平台-文件服务 - Powered By https://www.xxxx.com
 
 ====================================================================================================================

+ 17 - 38
sckw-modules/sckw-file/src/main/resources/bootstrap-dev.yml

@@ -1,54 +1,24 @@
 spring:
-  rabbitmq:
-    username: admin
-    password: admin
-    host: 10.10.10.138
-    port: 5672
-    virtual-host: /
   cloud:
     nacos:
       discovery:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
-        # 权重 1-100 数值越大权重越大分配的流量就越大,通常结合权重负载均衡策略
-      #        weight: 100
       config:
         # 配置中心地址
         server-addr: 10.10.10.230:8848
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
-        enabled: true
-    stream:
-      bindings:
-        sckwSms-out-0:
-          destination: sckw-sms
-          content-type: application/json
-          default-binder: defaultRabbit
-          group: sckw
-        sckwMessage-out-0:
-          destination: sckw-message
-          content-type: application/json
-          default-binder: defaultRabbit
-          group: sckw
-      binders:
-        defaultRabbit:
-          type: rabbit
-          environment:
-            spring:
-              rabbitmq:
-                virtual-host: /
-                host: 39.104.134.114
-                port: 5672
-                username: wph
-                password: Yy123...
+
+  data:
     # sentinel降级配置
     sentinel:
       transport:
@@ -91,7 +61,10 @@ spring:
       eager: true
   datasource:
     dynamic:
-      seata: true
+      seata: false
+  main:
+    allow-circular-references: true
+
 seata:
   # seata 服务分组,要与服务端nacos-config.txt中service.vgroup_mapping的后缀对应
   # 事务分组名称,要和服务端对应
@@ -99,7 +72,7 @@ seata:
   service:
     vgroup-mapping:
       # key是事务分组名称 value要和服务端的机房名称保持一致
-      file-seata-service-group: default
+      system-seata-service-group: default
   registry:
     # 指定nacos作为注册中心
     type: nacos
@@ -121,21 +94,27 @@ seata:
 #  sentinel:
 #    enabled: true
 
+# dubbo
 dubbo:
   application:
     # 此处没有延用spring.application.name是因为当前项目本身也会注册到nacos中,如果dubbo也延用相同的名称,在nacos服务里会看到注册的producer-server服务数为2
     name: file-dubbo-server
+    parameters:
+      group: ${spring.cloud.nacos.discovery.group}
+      namespace: ${spring.cloud.nacos.discovery.namespace}
   protocol:
     name: dubbo
     port: -1
-    prefer-serialization: java
   registry:
     # 配置dubbo的注册中心为nacos
     address: nacos://${spring.cloud.nacos.discovery.server-addr}
-    group: ${spring.cloud.nacos.config.group}
+    group: ${spring.cloud.nacos.discovery.group}
+    namespace: ${spring.cloud.nacos.discovery.namespace}
     protocol: nacos
     #use-as-config-center: false
     #use-as-metadata-center: false
+
+links:
 aliyun:
   oss:
     endpoint: oss-cn-chengdu.aliyuncs.com

+ 6 - 2
sckw-modules/sckw-file/src/main/resources/bootstrap-local.yml

@@ -115,11 +115,11 @@ spring:
 seata:
   # seata 服务分组,要与服务端nacos-config.txt中service.vgroup_mapping的后缀对应
   # 事务分组名称,要和服务端对应
-  tx-service-group: file-seata-group
+  tx-service-group: file-seata-service-group
   service:
     vgroup-mapping:
       # key是事务分组名称 value要和服务端的机房名称保持一致
-      file-seata-group: default
+      file-seata-service-group: default
   registry:
     # 指定nacos作为注册中心
     type: nacos
@@ -138,6 +138,10 @@ seata:
       namespace: ${spring.cloud.nacos.discovery.namespace}
       group: ${spring.cloud.nacos.discovery.group}
   application-id: ${spring.application.name}
+  #  当前不生效,使用驼峰
+  enabled: true
+  #  enable-auto-data-source-proxy: false
+  enableAutoDataSourceProxy: false
 #  application-id: sckw-seata-file
 # 支持feign对sentinel支持
 #feign:

+ 184 - 30
sckw-modules/sckw-file/src/main/resources/logback-spring.xml

@@ -1,45 +1,199 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-说明:
-    1. 文件的命名和加载顺序有关
-       logback.xml早于application.yml加载,logback-spring.xml晚于application.yml加载
-       如果logback配置需要使用application.yml中的属性,需要命名为logback-spring.xml
-    2. logback使用application.yml中的属性
-       使用springProperty才可使用application.yml中的值 可以设置默认值
--->
-<configuration debug="false">
+<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
+<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
+<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
+                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
+<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
+<configuration  scan="true" scanPeriod="10 seconds">
+    <contextName>logback</contextName>
     <springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue="service"/>
 
-    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
-    <property name="LOG_HOME" value="/tmp/log/${applicationName}" />
-    <!-- 控制台输出 -->
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
+    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
+    <property name="log.path" value="/logs/${applicationName}" />
+
+    <!--0. 日志格式和颜色渲染 -->
+    <!-- 彩色日志依赖的渲染类 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+    <!-- 彩色日志格式 -->
+    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 输出到控制台-->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 设置字符集 -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!--2. 输出到文档-->
+    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_debug.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 设置字符集 -->
         </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志归档 -->
+            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录debug级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_info.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 每天日志归档路径以及格式 -->
+            <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
     </appender>
 
-    <!-- 按照每天生成日志文件 -->
-    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${LOG_HOME}/${applicationName}.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <!--日志文件输出的文件名-->
-            <FileNamePattern>${LOG_HOME}/${applicationName}-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
-            <!--日志文件保留天数-->
-            <MaxHistory>30</MaxHistory>
-            <MaxFileSize>1024MB</MaxFileSize>
+    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_warn.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
         </rollingPolicy>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
+        <!-- 此日志文档只记录warn级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_error.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
         </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录ERROR级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
     </appender>
 
-    <!-- 日志输出级别 -->
-    <root level="INFO">
-        <appender-ref ref="STDOUT" />
-        <appender-ref ref="FILE" />
+    <!--
+        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
+        以及指定<appender>。<logger>仅有一个name属性,
+        一个可选的level和一个可选的addtivity属性。
+        name:用来指定受此logger约束的某一个包或者具体的某一个类。
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
+              如果未设置此属性,那么当前logger将会继承上级的级别。
+        addtivity:是否向上级logger传递打印信息。默认是true。
+        <logger name="org.springframework.web" level="info"/>
+        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
+    -->
+    <!-- hibernate logger -->
+    <logger name="com.atguigu" level="debug" />
+    <!-- Spring framework logger -->
+    <logger name="org.springframework" level="debug" additivity="false"></logger>
+
+
+    <!--
+        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
+        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
+        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
+        【logging.level.org.mybatis=debug logging.level.dao=debug】
+     -->
+
+    <!--
+        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+        不能设置为INHERITED或者同义词NULL。默认是DEBUG
+        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
+    -->
+
+    <!-- 4. 最终的策略 -->
+    <!-- 4.1 开发环境:打印控制台-->
+    <springProfile name="dev">
+        <logger name="com.sdcm.pmp" level="debug"/>
+    </springProfile>
+
+    <root level="info">
+        <appender-ref ref="CONSOLE" />
+        <appender-ref ref="DEBUG_FILE" />
+        <appender-ref ref="INFO_FILE" />
+        <appender-ref ref="WARN_FILE" />
+        <appender-ref ref="ERROR_FILE" />
     </root>
 
+    <!-- 4.2 生产环境:输出到文档 -->
+    <springProfile name="pro">
+        <root level="info">
+            <appender-ref ref="CONSOLE" />
+            <appender-ref ref="DEBUG_FILE" />
+            <appender-ref ref="INFO_FILE" />
+            <appender-ref ref="ERROR_FILE" />
+            <appender-ref ref="WARN_FILE" />
+        </root>
+    </springProfile>
+
 </configuration>

+ 34 - 39
sckw-modules/sckw-message/pom.xml

@@ -2,100 +2,95 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>sckw-modules</artifactId>
         <groupId>com.sckw</groupId>
         <version>1.0.0</version>
     </parent>
+    <modelVersion>4.0.0</modelVersion>
 
-    <groupId>com.sckw</groupId>
     <artifactId>sckw-message</artifactId>
-    <version>1.0.0</version>
-    <description>消息服务</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
-
     <dependencies>
+        <!-- 核心模块 -->
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-core</artifactId>
-            <version>1.0.0</version>
         </dependency>
 
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-remote</artifactId>
-            <version>1.0.0</version>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-datasource</artifactId>
-            <version>1.0.0</version>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-redis</artifactId>
-            <version>1.0.0</version>
         </dependency>
 
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-system-api</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-common-stream</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-message-api</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-system-api</artifactId>
         </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-stream</artifactId>
-            <version>1.0.0</version>
+            <artifactId>sckw-message-api</artifactId>
         </dependency>
 
+        <!--web-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-loadbalancer</artifactId>
+        </dependency>
+
         <!--注册中心客户端-->
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
         </dependency>
+
         <!--配置中心客户端-->
         <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-bootstrap</artifactId>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>3.0.5</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
 
+    </dependencies>
 </project>

+ 2 - 27
sckw-modules/sckw-message/src/main/java/com/sckw/message/MessageApplication.java

@@ -1,44 +1,19 @@
 package com.sckw.message;
 
-
 import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.context.annotation.Bean;
-import org.springframework.messaging.Message;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.FluxSink;
-
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.Supplier;
 
 @EnableDubbo
 @EnableFeignClients({"com.sckw.*.api.feign"})
 @EnableDiscoveryClient
-@SpringBootApplication(scanBasePackages = {"com.sckw.core", "com.sckw.message"})
+@SpringBootApplication
 public class MessageApplication {
 
     public static void main(String[] args) {
-        // 关闭nacos日志
-        System.setProperty("nacos.logging.default.config.enabled", "false");
-        try {
-            SpringApplication.run(MessageApplication.class, args);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Bean
-    public AtomicReference<FluxSink<Message<String>>> mqSender() {
-        return new AtomicReference<>();
-    }
-
-    @Bean
-    //消息发送者
-    public Supplier<Flux<Message<String>>> im(AtomicReference<FluxSink<Message<String>>> mqSender) {
-        return () -> Flux.create(mqSender::set);
+        SpringApplication.run(MessageApplication.class, args);
     }
 
 }

+ 17 - 2
sckw-modules/sckw-message/src/main/java/com/sckw/message/constant/RedisConstant.java

@@ -8,11 +8,26 @@ package com.sckw.message.constant;
 public class RedisConstant {
 
     /**
-     * 短信验证码key
+     * 短信验证码key
      */
-    public static final String MESSAGE_SMS_VERIFY_CODE_KEY = "sckw:message:sms:verifyCode:%s";
+    public static final String MESSAGE_SMS_VERIFY_CODE_VALUE_KEY = "sckw:sms:verifyCode:value:%s";
+    /**
+     * 短信验证码请求key
+     */
+    public static final String MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY = "sckw:sms:verifyCode:request:%s";
     /**
      * 短信验证码有效时间(秒)
      */
     public static final Long SMS_VERIFY_CODE_VALID_TIME = 180L;
+
+    /**
+     * message消费请求key
+     */
+    public static final String MESSAGE_CONSUMER_REQUEST_KEY = "sckw:message:consumer:request:%s";
+
+    /**
+     * 消费请求有效时间(秒)
+     */
+    public static final Long CONSUMER_REQUEST_VALID_TIME = 180L;
+
 }

+ 12 - 4
sckw-modules/sckw-message/src/main/java/com/sckw/message/controller/TestMqController.java

@@ -4,6 +4,7 @@ import cn.hutool.core.lang.UUID;
 import com.alibaba.fastjson2.JSON;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.stream.enums.SmsCodeEnum;
 import com.sckw.stream.model.Person;
 import com.sckw.message.producer.DelayProducer;
 import com.sckw.stream.enums.MessageEnum;
@@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Date;
+import java.util.HashMap;
 
 /**
  * 测试mq
@@ -57,12 +59,18 @@ public class TestMqController {
     public HttpResult sendRabbitMq(String name) {
         String uuid = UUID.fastUUID().toString();
         SckwSms sckwSms = new SckwSms();
-        sckwSms.setTelephone("123456xxxx");
-        streamBridge.send("rec-obj", JSON.toJSONString(sckwSms));
+        sckwSms.setTelephone("17358629955");
+        sckwSms.setSignName("矿拉拉");
+        sckwSms.setTemplateCode(SmsCodeEnum.VERIFICATION_CODE);
+        sckwSms.setParams(new HashMap(){{put("code", "123456");}});
+        streamBridge.send("sckw-sms", JSON.toJSONString(sckwSms));
+
 
         SckwMessage message = new SckwMessage();
-        message.setMessageEnum(MessageEnum.AUDIT_PASS);
-        message.setPushTime(new Date());
+        //person.setName(String.valueOf(System.currentTimeMillis()));
+        message.setMsgUrl("---");
+        message.setPushType("====");
+        message.setClientId("111111111111111");
         streamBridge.send("sckw-message", JSON.toJSONString(message));
         return HttpResult.ok(uuid);
 

+ 1 - 1
sckw-modules/sckw-message/src/main/java/com/sckw/message/dubbo/SmsInfoServiceImpl.java

@@ -14,7 +14,7 @@ import org.apache.dubbo.config.annotation.DubboService;
 public class SmsInfoServiceImpl implements SmsInfoService {
     @Override
     public String getVerifyCode(String phone) {
-        String key = String.format(RedisConstant.MESSAGE_SMS_VERIFY_CODE_KEY, phone);
+        String key = String.format(RedisConstant.MESSAGE_SMS_VERIFY_CODE_VALUE_KEY, phone);
         return RedissonUtils.getString(key);
     }
 }

+ 2 - 2
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/KwmMessageUserService.java

@@ -72,7 +72,7 @@ public class KwmMessageUserService {
      * @date: 2023-06-09 15:07
      */
     @Transactional(rollbackFor = Exception.class)
-    public void delByUserAndMsgIds(long userId, List<Long> msgIds) {
+    public void delByUserAndMsgIds(Long userId, List<Long> msgIds) {
         LambdaUpdateWrapper<KwmMessageUser> wrapper = new LambdaUpdateWrapper<>();
         wrapper.set(KwmMessageUser::getDelFlag, 1)
                 .eq(KwmMessageUser::getUserId, userId).in(KwmMessageUser::getMsgId, msgIds);
@@ -100,7 +100,7 @@ public class KwmMessageUserService {
      * @Param userId:
      * @return: com.sckw.message.model.KwmMessageUser
      */
-    public KwmMessageUser getByMsgIdAndUserId(Long msgId, long userId) {
+    public KwmMessageUser getByMsgIdAndUserId(Long msgId, Long userId) {
         LambdaQueryWrapper<KwmMessageUser> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(KwmMessageUser::getUserId, userId).eq(KwmMessageUser::getMsgId, msgId)
                 .eq(KwmMessageUser::getDelFlag, 0).last("LIMIT 1");

+ 25 - 22
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/MessageService.java

@@ -1,5 +1,6 @@
 package com.sckw.message.service;
 
+import com.sckw.core.model.auth.context.LoginUserHolder;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
@@ -42,15 +43,14 @@ public class MessageService {
      * @date: 2023-06-09 14:21
      */
     public List<KwmMessage> selectMessages(FindMessagesReqVO params) {
-        //TODO 当前线程获取用户id
-        List<KwmMessageUser> messageUsers = kwmMessageUserService.getByUserId(1L);
+        List<KwmMessageUser> messageUsers = kwmMessageUserService.getByUserId(LoginUserHolder.getUserId());
         Map<Long, KwmMessageUser> map = messageUsers.stream().collect(Collectors.toMap(KwmMessageUser::getMsgId, e -> e, (k1, k2) -> k1));
         if (CollectionUtils.isEmpty(map)) {
             return Collections.emptyList();
         }
         List<Long> msgIds = map.keySet().stream().toList();
         List<KwmMessage> list = kwmMessageService.getList(msgIds, params.getCategory(), params.getType(), null);
-        list.forEach(e->{
+        list.forEach(e -> {
             KwmMessageUser messageUser = map.get(e.getId());
             e.setStatus(messageUser.getStatus());
             e.setCreateTime(messageUser.getCreateTime());
@@ -69,8 +69,8 @@ public class MessageService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void read(ReadMessagesReqVO reqVO) {
-        //TODO 当前线程获取用户id
-        List<Long> msgIds = kwmMessageUserService.getMsgIdsByUserId(1L);
+        Long userId = LoginUserHolder.getUserId();
+        List<Long> msgIds = kwmMessageUserService.getMsgIdsByUserId(userId);
         if (CollectionUtils.isEmpty(msgIds)) {
             return;
         }
@@ -78,7 +78,7 @@ public class MessageService {
         //msgIds不为空直接更新用户消息为已读
         if (CollectionUtils.isNotEmpty(ids)) {
             List<Long> list = ids.stream().filter(msgIds::contains).toList();
-            kwmMessageUserService.readByUserAndMsgIds(1L, list);
+            kwmMessageUserService.readByUserAndMsgIds(userId, list);
         } else {
             //msgIds为空根据category及type更新用户消息为已读
             List<KwmMessage> messageList = kwmMessageService.getList(msgIds, reqVO.getCategory(), reqVO.getType(), 0);
@@ -86,7 +86,7 @@ public class MessageService {
                 return;
             }
             List<Long> updateMsgIds = messageList.stream().map(KwmMessage::getId).toList();
-            kwmMessageUserService.readByUserAndMsgIds(1L, updateMsgIds);
+            kwmMessageUserService.readByUserAndMsgIds(userId, updateMsgIds);
         }
     }
 
@@ -99,8 +99,8 @@ public class MessageService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void delete(DeleteMessagesReqVO reqVO) {
-        //TODO 当前线程获取用户id
-        List<Long> msgIds = kwmMessageUserService.getMsgIdsByUserId(1L);
+        Long userId = LoginUserHolder.getUserId();
+        List<Long> msgIds = kwmMessageUserService.getMsgIdsByUserId(userId);
         if (CollectionUtils.isEmpty(msgIds)) {
             return;
         }
@@ -108,7 +108,7 @@ public class MessageService {
         //msgIds不为空直接删除用户消息
         if (CollectionUtils.isNotEmpty(ids)) {
             List<Long> list = ids.stream().filter(msgIds::contains).toList();
-            kwmMessageUserService.delByUserAndMsgIds(1L, list);
+            kwmMessageUserService.delByUserAndMsgIds(userId, list);
         } else {
             //msgIds为空,根据category及type查找删除用户消息
             List<KwmMessage> messageList = kwmMessageService.getList(msgIds, reqVO.getCategory(), reqVO.getType(), null);
@@ -116,7 +116,7 @@ public class MessageService {
                 return;
             }
             List<Long> delMsgIds = messageList.stream().map(KwmMessage::getId).toList();
-            kwmMessageUserService.delByUserAndMsgIds(1L, delMsgIds);
+            kwmMessageUserService.delByUserAndMsgIds(userId, delMsgIds);
         }
     }
 
@@ -128,8 +128,8 @@ public class MessageService {
      * @date: 2023-06-13 9:05
      */
     public List<KwmMessage> select(SelectMessagesReqVO reqVO) {
-        //TODO 当前线程获取用户id
-        FindMessagePageParam findMessagePageParam = FindMessagePageParam.builder().userId(1L).category(reqVO.getCategory()).type(reqVO.getType()).build();
+        FindMessagePageParam findMessagePageParam = FindMessagePageParam.builder().userId(LoginUserHolder.getUserId())
+                .category(reqVO.getCategory()).type(reqVO.getType()).build();
         return kwmMessageService.findPage(findMessagePageParam);
     }
 
@@ -141,22 +141,21 @@ public class MessageService {
      * @date: 2023-06-13 10:19
      */
     public List<MessagesStatisticsResVO> statistics(String category) {
-        //TODO 当前线程获取用户id
         //获取用户未删除消息
-        List<KwmMessageUser> messageUserList = kwmMessageUserService.getByUserId(1L);
-        Map<Long, KwmMessageUser> messageUserMap = messageUserList.stream().collect(Collectors.toMap(KwmMessageUser::getMsgId, e -> e, (k1, k2) -> k1));
-        if (CollectionUtils.isEmpty(messageUserMap)) {
+        List<KwmMessageUser> messageUsers = kwmMessageUserService.getByUserId(LoginUserHolder.getUserId());
+        Map<Long, KwmMessageUser> map = messageUsers.stream().collect(Collectors.toMap(KwmMessageUser::getMsgId, e -> e, (k1, k2) -> k1));
+        if (CollectionUtils.isEmpty(map)) {
             return Collections.emptyList();
         }
-        List<Long> msgIds = messageUserMap.keySet().stream().toList();
+        List<Long> msgIds = map.keySet().stream().toList();
         //根据消息ids获取message详情
         List<KwmMessage> messages = kwmMessageService.statistics(msgIds, category);
         if (CollectionUtils.isEmpty(messages)) {
             return Collections.emptyList();
         }
         //设置用户消息状态及创建时间
-        messages.forEach(e->{
-            KwmMessageUser kwmMessageUser = messageUserMap.get(e.getId());
+        messages.forEach(e -> {
+            KwmMessageUser kwmMessageUser = map.get(e.getId());
             e.setStatus(kwmMessageUser.getStatus());
             e.setCreateTime(kwmMessageUser.getCreateTime());
         });
@@ -190,11 +189,15 @@ public class MessageService {
      */
     @Transactional(rollbackFor = Exception.class)
     public KwmMessage detail(Long id) {
-        //TODO 当前线程获取用户id
+        Long userId = LoginUserHolder.getUserId();
+        KwmMessageUser messageUser = kwmMessageUserService.getByMsgIdAndUserId(id, userId);
+        if (Objects.isNull(messageUser)) {
+            return KwmMessage.builder().build();
+        }
         KwmMessage message = kwmMessageService.getById(id);
         List<Long> ids = Collections.singletonList(id);
         //更新用户消息为已读状态
-        kwmMessageUserService.readByUserAndMsgIds(1L, ids);
+        kwmMessageUserService.readByUserAndMsgIds(userId, ids);
         return message;
     }
 }

+ 18 - 8
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwMessageHandlerService.java

@@ -3,8 +3,10 @@ package com.sckw.message.service;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.nacos.shaded.com.google.common.collect.Lists;
 import com.sckw.core.utils.StringUtils;
+import com.sckw.message.constant.RedisConstant;
 import com.sckw.message.model.KwmMessage;
 import com.sckw.message.model.KwmMessageUser;
+import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.SckwMessage;
 import lombok.RequiredArgsConstructor;
@@ -29,15 +31,19 @@ public class SckwMessageHandlerService {
     private final KwmMessageUserService kwmMessageUserService;
 
 
-    /**
-     * @param sckwMessage
-     * @return void
-     * @desc: message消息处理
-     * @author: yzc
-     * @date: 2023-06-09 15:33
-     */
-    @Transactional(rollbackFor = Exception.class)
+/**
+ * @desc: message消息处理
+ * @author: yzc
+ * @date: 2023-06-09 15:33
+ * @Param sckwMessage:
+ * @return: void
+ */
+@Transactional(rollbackFor = Exception.class)
     public void handler(SckwMessage sckwMessage) {
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(getKey(sckwMessage.getRequestId()), 10L, RedisConstant.CONSUMER_REQUEST_VALID_TIME))) {
+            log.info("重复message消息:{},不处理", sckwMessage.getRequestId());
+            return;
+        }
         String userIds = sckwMessage.getUserIds();
         if (StringUtils.isBlank(userIds)) {
             log.error("message消息处理用户id为空,不处理");
@@ -62,4 +68,8 @@ public class SckwMessageHandlerService {
         });
         kwmMessageUserService.batchSave(messageUsers);
     }
+
+    public static String getKey(String requestId) {
+        return String.format(RedisConstant.MESSAGE_CONSUMER_REQUEST_KEY, requestId);
+    }
 }

+ 9 - 6
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SckwSmsHandlerService.java

@@ -24,19 +24,22 @@ public class SckwSmsHandlerService {
     private final KwmSmsService kwmSmsService;
 
     /**
+     * @param sckwSms
+     * @return void
      * @desc: 短信处理
      * @author: yzc
      * @date: 2023-06-13 13:44
-     * @param sckwSms
-     * @return void
      */
     public void handler(SckwSms sckwSms) {
         log.info("接收到发送短信消息:{},开始处理", JSON.toJSONString(sckwSms));
-        String key = getMessageSmsVerifyCodeKey(sckwSms.getTelephone());
-        if (Boolean.FALSE.equals(RedissonUtils.tryLock(key, 10L, RedisConstant.SMS_VERIFY_CODE_VALID_TIME))) {
+        String requestKey = getKey(RedisConstant.MESSAGE_SMS_VERIFY_CODE_REQUEST_KEY, sckwSms.getTelephone());
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(requestKey, 10L, RedisConstant.SMS_VERIFY_CODE_VALID_TIME))) {
             log.info("重复发送短信消息,不处理");
             return;
         }
+        String valueKey = getKey(RedisConstant.MESSAGE_SMS_VERIFY_CODE_VALUE_KEY, sckwSms.getTelephone());
+        //发送短信
+        RedissonUtils.putString(valueKey, String.valueOf(sckwSms.getParams().get("code")), RedisConstant.SMS_VERIFY_CODE_VALID_TIME);
         //发送短信
         SmsUtil.sendSms(sckwSms.getTelephone(), sckwSms.getSignName(), sckwSms.getTemplateCode().getName(), JSON.toJSONString(sckwSms.getParams()));
         //数据入库
@@ -47,7 +50,7 @@ public class SckwSmsHandlerService {
         kwmSmsService.add(kwmSms);
     }
 
-    private String getMessageSmsVerifyCodeKey(String phone) {
-        return String.format(RedisConstant.MESSAGE_SMS_VERIFY_CODE_KEY, phone);
+    private String getKey(String prefix, String args) {
+        return String.format(prefix, args);
     }
 }

+ 1 - 1
sckw-modules/sckw-message/src/main/java/com/sckw/message/service/SmsService.java

@@ -52,6 +52,6 @@ public class SmsService {
     }
 
     private String getMessageSmsVerifyCodeKey(String phone) {
-        return String.format(RedisConstant.MESSAGE_SMS_VERIFY_CODE_KEY, phone);
+        return String.format(RedisConstant.MESSAGE_SMS_VERIFY_CODE_VALUE_KEY, phone);
     }
 }

+ 22 - 57
sckw-modules/sckw-message/src/main/resources/bootstrap-dev.yml

@@ -5,7 +5,7 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
       config:
@@ -14,44 +14,11 @@ spring:
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_zk
         # 共享配置
         group: sckw-service-platform
-    function:
-      definition: sckwSms;sckwMessage
-    stream:
-      binders:
-        defaultRabbit:
-          type: rabbit
-          environment:
-            spring:
-              rabbitmq:
-                virtual-host: /
-                host: 39.104.134.114
-                port: 5672
-                username: wph
-                password: Yy123...
-      bindings:
-        sckwSms-in-0:
-          destination: sckw-sms
-          content-type: application/json
-          binder: defaultRabbit
-          group: sckw
-        sckwSms-out-0:
-          destination: sckw-sms
-          content-type: application/json
-          default-binder: defaultRabbit
-          group: sckw
-        sckwMessage-in-0:
-          destination: sckw-message
-          content-type: application/json
-          binder: defaultRabbit
-          group: sckw
-        sckwMessage-out-0:
-          destination: sckw-message
-          content-type: application/json
-          binder: defaultRabbit
-          group: sckw
+
+  data:
     # sentinel降级配置
     sentinel:
       transport:
@@ -75,7 +42,7 @@ spring:
             server-addr:  ${spring.cloud.nacos.discovery.server-addr}
             # 设置Nacos中配置文件的命名规则
             #            data-id:  ${spring.application.name}-sentinel-flow-rules
-            data-id:  sckw-file-sentinel-flow-rules
+            data-id:  sckw-message-sentinel-flow-rules
             group-id: SENTINEL_GROUP
             data-type: json
             # 必填的重要字段,指定当前规则类型是"限流"
@@ -86,7 +53,7 @@ spring:
             namespace:  sckw-service-platform-dev
             server-addr: ${spring.cloud.nacos.discovery.server-addr}
             #data-id: ${spring.application.name}-sentinel-degrade-rules
-            data-id: sckw-file-sentinel-degrade-rules
+            data-id: sckw-message-sentinel-degrade-rules
             group-id: SENTINEL_GROUP
             #熔断
             rule-type: degrade
@@ -94,7 +61,11 @@ spring:
       eager: true
   datasource:
     dynamic:
-      seata: true
+      seata: false
+  main:
+    allow-circular-references: true
+
+
 seata:
   # seata 服务分组,要与服务端nacos-config.txt中service.vgroup_mapping的后缀对应
   # 事务分组名称,要和服务端对应
@@ -102,7 +73,7 @@ seata:
   service:
     vgroup-mapping:
       # key是事务分组名称 value要和服务端的机房名称保持一致
-      message-seata-service-group: default
+      system-seata-service-group: default
   registry:
     # 指定nacos作为注册中心
     type: nacos
@@ -116,38 +87,32 @@ seata:
     type: nacos
     nacos:
       server-addr: ${spring.cloud.nacos.discovery.server-addr}
-      #server-addr: 47.108.162.14:8848
       namespace: ${spring.cloud.nacos.discovery.namespace}
       group: ${spring.cloud.nacos.discovery.group}
   application-id: ${spring.application.name}
-  # 支持feign对sentinel支持
-  #feign:
-  #  sentinel:
-  #    enabled: true
-  rabbitmq:
-    username: admin
-    password: admin
-    host: 10.10.10.138
-    port: 5672
-    virtual-host: /
-
+# 支持feign对sentinel支持
+#feign:
+#  sentinel:
+#    enabled: true
 
 # dubbo
 dubbo:
   application:
     # 此处没有延用spring.application.name是因为当前项目本身也会注册到nacos中,如果dubbo也延用相同的名称,在nacos服务里会看到注册的producer-server服务数为2
     name: message-dubbo-server
+    parameters:
+      group: ${spring.cloud.nacos.discovery.group}
+      namespace: ${spring.cloud.nacos.discovery.namespace}
   protocol:
     name: dubbo
     port: -1
-    prefer-serialization: java
   registry:
     # 配置dubbo的注册中心为nacos
     address: nacos://${spring.cloud.nacos.discovery.server-addr}
-    group: ${spring.cloud.nacos.config.group}
+    group: ${spring.cloud.nacos.discovery.group}
+    namespace: ${spring.cloud.nacos.discovery.namespace}
     protocol: nacos
     #use-as-config-center: false
     #use-as-metadata-center: false
 
-
-
+links:

+ 1 - 15
sckw-modules/sckw-message/src/main/resources/bootstrap.yml

@@ -8,18 +8,4 @@ spring:
     active: ${DEPLOY_MODE:dev}
   main:
     allow-bean-definition-overriding: true
-# Spring
-dubbo:
-  application:
-    # 此处没有延用spring.application.name是因为当前项目本身也会注册到nacos中,如果dubbo也延用相同的名称,在nacos服务里会看到注册的producer-server服务数为2
-    name: message-dubbo-server
-  protocol:
-    name: dubbo
-    port: -1
-  registry:
-    # 配置dubbo的注册中心为nacos
-    address: nacos://${spring.cloud.nacos.discovery.server-addr}
-    group: ${spring.cloud.nacos.config.group}
-    protocol: nacos
-    #use-as-config-center: false
-    #use-as-metadata-center: false
+

+ 1 - 1
sckw-api/sckw-app-api/src/main/resources/log4j2.xml → sckw-modules/sckw-message/src/main/resources/log4j2.xml

@@ -7,7 +7,7 @@
                   value="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
         <property name="LOG_WITHOUT_COLOR_PATTERN"
                   value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID}--- [%t] %c{1.} : %m%n%xwEx"/>
-        <property name="LOG_PATH" value="logs/sckw-app-api"/>
+        <property name="LOG_PATH" value="logs/sckw-message"/>
     </properties>
     <!--DEBUG<INFO<WARNING<ERROR<CRITICAL-->
     <!-- 先定义所有的appender(附加器)-->

+ 199 - 0
sckw-modules/sckw-message/src/main/resources/logback-spring.xml

@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
+<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
+<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
+                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
+<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
+<configuration  scan="true" scanPeriod="10 seconds">
+    <contextName>logback</contextName>
+    <springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue="service"/>
+
+    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
+    <property name="log.path" value="/logs/${applicationName}" />
+
+    <!--0. 日志格式和颜色渲染 -->
+    <!-- 彩色日志依赖的渲染类 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+    <!-- 彩色日志格式 -->
+    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 输出到控制台-->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 设置字符集 -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!--2. 输出到文档-->
+    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_debug.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志归档 -->
+            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录debug级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_info.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 每天日志归档路径以及格式 -->
+            <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_warn.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录warn级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文档的路径及文档名 -->
+        <file>${log.path}/web_error.log</file>
+        <!--日志文档输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文档保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文档只记录ERROR级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--
+        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
+        以及指定<appender>。<logger>仅有一个name属性,
+        一个可选的level和一个可选的addtivity属性。
+        name:用来指定受此logger约束的某一个包或者具体的某一个类。
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
+              如果未设置此属性,那么当前logger将会继承上级的级别。
+        addtivity:是否向上级logger传递打印信息。默认是true。
+        <logger name="org.springframework.web" level="info"/>
+        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
+    -->
+    <!-- hibernate logger -->
+    <logger name="com.atguigu" level="debug" />
+    <!-- Spring framework logger -->
+    <logger name="org.springframework" level="debug" additivity="false"></logger>
+
+
+    <!--
+        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
+        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
+        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
+        【logging.level.org.mybatis=debug logging.level.dao=debug】
+     -->
+
+    <!--
+        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+        不能设置为INHERITED或者同义词NULL。默认是DEBUG
+        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
+    -->
+
+    <!-- 4. 最终的策略 -->
+    <!-- 4.1 开发环境:打印控制台-->
+    <springProfile name="dev">
+        <logger name="com.sdcm.pmp" level="debug"/>
+    </springProfile>
+
+    <root level="info">
+        <appender-ref ref="CONSOLE" />
+        <appender-ref ref="DEBUG_FILE" />
+        <appender-ref ref="INFO_FILE" />
+        <appender-ref ref="WARN_FILE" />
+        <appender-ref ref="ERROR_FILE" />
+    </root>
+
+    <!-- 4.2 生产环境:输出到文档 -->
+    <springProfile name="pro">
+        <root level="info">
+            <appender-ref ref="CONSOLE" />
+            <appender-ref ref="DEBUG_FILE" />
+            <appender-ref ref="INFO_FILE" />
+            <appender-ref ref="ERROR_FILE" />
+            <appender-ref ref="WARN_FILE" />
+        </root>
+    </springProfile>
+
+</configuration>

+ 1 - 4
sckw-modules/sckw-message/src/main/resources/mapper/KwmMessageMapper.xml

@@ -10,10 +10,7 @@
     left join kwm_message_user mu
     on m.id = mu.msg_id
     <where>
-        m.del_flag = 0 and mu.del_flag = 0
-        <if test="item.userId != null">
-          and mu.user_id = #{item.userId}
-        </if>
+        m.del_flag = 0 and mu.del_flag = 0 and mu.user_id = #{item.userId}
         <if test="item.category != null and item.category != ''">
           and m.category = #{item.category}
         </if>

+ 24 - 27
sckw-api/sckw-app-api/pom.xml → sckw-modules/sckw-order/pom.xml

@@ -5,14 +5,14 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>com.sckw</groupId>
-        <artifactId>sckw-service-platform</artifactId>
+        <artifactId>sckw-modules</artifactId>
         <version>1.0.0</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
 
-    <artifactId>sckw-app-api</artifactId>
-    <packaging>jar</packaging>
-    <description>app接口模块</description>
+    <groupId>com.sckw</groupId>
+    <artifactId>sckw-order</artifactId>
+    <version>1.0.0</version>
+    <description>订单服务</description>
 
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
@@ -26,36 +26,33 @@
             <artifactId>sckw-common-core</artifactId>
             <version>1.0.0</version>
         </dependency>
-
         <dependency>
             <groupId>com.sckw</groupId>
-            <artifactId>sckw-common-remote</artifactId>
+            <artifactId>sckw-common-datasource</artifactId>
             <version>1.0.0</version>
         </dependency>
-
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-redis</artifactId>
             <version>1.0.0</version>
         </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <!--注册中心客户端-->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-        </dependency>
-        <!--配置中心客户端-->
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-bootstrap</artifactId>
-        </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>3.0.5</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

+ 26 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/OrderApplication.java

@@ -0,0 +1,26 @@
+package com.sckw.order;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+/**
+ * @desc: 订单服务
+ * @author: yzc
+ * @date: 2023-06-21 11:46
+ */
+@EnableDiscoveryClient
+@SpringBootApplication(scanBasePackages = {"com.sckw.core", "com.sckw.order"})
+public class OrderApplication {
+
+    public static void main(String[] args) {
+        // 关闭nacos日志
+        System.setProperty("nacos.logging.default.config.enabled", "false");
+        try {
+            SpringApplication.run(OrderApplication.class, args);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů