From e670b7962f093689d1f130070ea50124f219ecbf Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期六, 04 十一月 2023 15:59:19 +0800
Subject: [PATCH] 增加sso子模块,模块application.yml中端口号引用global.yml中统一配置的值,枚举类型标@EnumValue

---
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/pom.xml                                                         |   39 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/UserVo.java                       |   22 
 pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml                              |   18 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/.gitignore                                                      |   33 +
 pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/resources/application.yml                             |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/config/WebListenerConfiguration.java   |   50 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/config/config-sso.xml                        |    5 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/log4j2.yml                            |   79 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Deleted.java                       |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/test/java/com/dy/sso/PipIrrWebSsoApplicationTests.java      |   13 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java                      |  207 ++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/mvnw                                                            |  308 ++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/demo/DemoCtrl.java             |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web.iml                                                                 |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Disabled.java                      |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/.mvn/wrapper/maven-wrapper.properties                           |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/log4j2.yml                                   |   79 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/CacheConstants.java               |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml                             |    4 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/UserVoMapper.java                 |   23 
 pipIrr-platform/pipIrr-web/pom.xml                                                                        |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/mvnw.cmd                                                        |  205 ++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/PipIrrSsoApplication.java              |   31 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/config/CaffeineCacheConfiguration.java |   39 +
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml                       |   18 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml                           |    4 
 /dev/null                                                                                                 |    1 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/.mvn/wrapper/maven-wrapper.jar                                  |    0 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java                      |   32 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java                        |   39 +
 pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/log4j2.yml                                   |   73 +++
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                   |   17 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/util/SsoListener.java                  |   22 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/application.yml                              |   18 
 34 files changed, 1,397 insertions(+), 10 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Deleted.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Deleted.java
index e53c10e..6e073f7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Deleted.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Deleted.java
@@ -1,10 +1,13 @@
 package com.dy.common.mybatis.envm;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
 public enum Deleted  implements IEnum{
 
     YES((byte)1, "鏄�"),
     NO((byte)0, "鍚�");
 
+    @EnumValue
     public Byte code ;
     public String name ;
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Disabled.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Disabled.java
index fd8e9f4..b16444b 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Disabled.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Disabled.java
@@ -1,10 +1,13 @@
 package com.dy.common.mybatis.envm;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
 public enum Disabled implements IEnum{
     
     YES((byte)1, "鏄�"),
     NO((byte)0, "鍚�");
 
+    @EnumValue
     public Byte code ;
     public String name ;
 
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index 61b092b..ac26181 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -70,5 +70,22 @@
         default-enum-type-handler: com.dy.common.mybatis.envm.EnumCodeTypeHandler
 
 pipIrr:
+    demo:
+        webPort: 8000
+        actutorPort: 9000
     sso:
         checkUrl: http://127.0.0.1:8888/sso/sso/ssoCheck
+        webPort: 8080
+        actutorPort: 9080
+    base:
+        webPort: 8080
+        actutorPort: 9080
+    remote:
+        webPort: 8080
+        actutorPort: 9080
+    statistics:
+        webPort: 8080
+        actutorPort: 9080
+    gis:
+        webPort: 8080
+        actutorPort: 9080
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml
index de87bf5..b7bb69a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/resources/application.yml
@@ -5,10 +5,10 @@
 #actutor鐨剋eb绔彛
 management:
     server:
-        port: 9080
+        port: ${pipIrr.base.actutorPort}
 #web鏈嶅姟绔彛锛宼omcat榛樿鏄�8080
 server:
-    port: 8080
+    port: ${pipIrr.base.webPort}
     servlet:
         context-path: /base #web璁块棶涓婁笅鏂囪矾寰�
         context-parameters:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/demo/DemoCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/demo/DemoCtrl.java
index c97b192..002e818 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/demo/DemoCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/demo/DemoCtrl.java
@@ -66,7 +66,7 @@
             )
     })
     @GetMapping("info/{id}/")
-    //http://127.0.0.1:8080/base/demo/info/123234234/?name=寮犱笁
+    //http://127.0.0.1:8000/demo/demo/info/123234234/?name=寮犱笁
     @SsoAop(power="123456", ifAllPower = {"123", "456"})
     public BaseResponse<String> info(@PathVariable String id, @RequestParam String name) throws GlException{
         if(name == null || name.trim().equals("")){
@@ -96,7 +96,7 @@
     ))
     @PostMapping(value = "test", consumes = "application/json")
     //@RequestMapping(value="test", method = RequestMethod.POST, consumes = "application/json")
-    //http://127.0.0.1:8080/base/demo/test/{"id":123456789,"age":12,"name":"test","tel":"1230987654"}
+    //http://127.0.0.1:8000/demo/demo/test/{"id":123456789,"age":12,"name":"test","tel":"1230987654"}
     public BaseResponse<DemoTest> test(@RequestBody DemoTestVo req){
         DemoTest po = new DemoTest() ;
         po.id = System.currentTimeMillis() ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/resources/application.yml
index 27e573a..a2ba7a3 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/resources/application.yml
@@ -5,10 +5,10 @@
 #actutor鐨剋eb绔彛
 management:
     server:
-        port: 9000
+        port: ${pipIrr.demo.actutorPort}
 #web鏈嶅姟绔彛锛宼omcat榛樿鏄�8080
 server:
-    port: 8000
+    port: ${pipIrr.demo.webPort}
     servlet:
         context-path: /demo #web璁块棶涓婁笅鏂囪矾寰�
         context-parameters:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.properties b/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.properties
deleted file mode 100644
index 8b13789..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.properties
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml
new file mode 100644
index 0000000..eab3c3a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml
@@ -0,0 +1,18 @@
+spring:
+    profiles:
+        include: global, database
+
+#actutor鐨剋eb绔彛
+management:
+    server:
+        port: ${pipIrr.gis.actutorPort}
+#web鏈嶅姟绔彛锛宼omcat榛樿鏄�8080
+server:
+    port: ${pipIrr.gis.webPort}
+    servlet:
+        context-path: /gis #web璁块棶涓婁笅鏂囪矾寰�
+        context-parameters:
+            #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
+            idSuffix: 1
+            #ConfigListener涓簲鐢�
+            #configFileNames: config-global.xml,config-demo.xml
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/log4j2.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/log4j2.yml
new file mode 100644
index 0000000..84295b1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/log4j2.yml
@@ -0,0 +1,73 @@
+Configuration:
+    #status锛岃繖涓敤浜庤缃甽og4j2鑷韩鍐呴儴鐨勪俊鎭緭鍑猴紝鍙互涓嶈缃紝褰撹缃垚trace鏃讹紝浣犱細鐪嬪埌log4j2鍐呴儴鍚勭璇︾粏杈撳嚭锛涘彲浠ヨ缃垚Off(鍏抽棴)鎴朎rror(鍙緭鍑洪敊璇俊鎭�)
+    status: Error
+
+    Properties: # 瀹氫箟鍏ㄥ眬鍙橀噺
+        Property:
+            #鏃ュ織鏂囦欢瀛樺偍鐨勭洰褰�
+            - name: log.path
+              value: ./logs
+            #鏃ュ織鏂囦欢瀛樺偍鍚嶇О
+            - name: project.name
+              value: pipIrrGis
+
+    #瀹氫箟杈撳嚭鍣紝鍙互杈撳嚭鍒版帶鍒跺彴鍜屾枃浠�.
+    Appenders:
+        #杈撳嚭鍒版帶鍒跺彴
+        Console:
+            #Appender鍛藉悕
+            name: CONSOLE
+            target: SYSTEM_OUT
+            ThresholdFilter:
+                level: debug #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
+                onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
+                onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
+            #鏃ュ織鍐呭鏍峰紡
+            PatternLayout:
+                #%n-鎹㈣
+                #%m-鏃ュ織鍐呭锛岃緭鍑轰唬鐮佷腑鎸囧畾鐨勬棩蹇椾俊鎭�
+                #%p-杈撳嚭浼樺厛绾э紝鍗矰EBUG,INFO,WARN,ERROR,FATAL
+                #%r-绋嬪簭鍚姩鍒扮幇鍦ㄧ殑姣鏁�
+                #%%- 杈撳嚭涓�涓�"%" 瀛楃
+                #%t-褰撳墠绾跨▼鍚�
+                #%d-鏃ユ湡鍜屾椂闂�, 甯哥敤鐨勬牸寮忔湁%d{DATE},%d{ABSOLUTE},%d{HH:mm:ss,SSS},%d{ddMMyyyyHH:mm:ss,SSS}
+                #%l-鍚�%F%L%C%M
+                #%F-java婧愭枃浠跺悕
+                #%L-java婧愮爜琛屾暟
+                #%C-java绫诲悕,%C{1}杈撳嚭鏈�鍚庝竴涓厓绱�
+                #%M-java鏂规硶鍚�
+                pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
+        # 杈撳嚭鍒版枃浠讹紝瓒呰繃10MB褰掓。
+        RollingFile:
+            - name: ROLLING_FILE
+              ignoreExceptions: false
+              fileName: ${log.path}/${project.name}.log
+              filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
+              ThresholdFilter:
+                  level: error #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
+                  onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
+                  onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
+              #鏃ュ織鍐呭鏍峰紡
+              PatternLayout:
+                  pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
+              Policies:
+                  SizeBasedTriggeringPolicy:
+                      size: "10 MB"
+              DefaultRolloverStrategy:
+                  max: 1000
+
+    Loggers:
+        Root:
+            level: info #鏃ュ織杈撳嚭绾у埆锛屽叡鏈�8涓骇鍒紝鎸夌収浠庝綆鍒伴珮涓猴細all < trace < debug < info < warn < error < fatal < off
+            AppenderRef: #Root鐨勫瓙鑺傜偣锛岀敤鏉ユ寚瀹氳鏃ュ織杈撳嚭鍒板摢涓狝ppender.
+                - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+                - ref: ROLLING_FILE  #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+        # 涓哄寘閰嶇疆鐗规畩鐨凩og绾у埆锛屾柟渚胯皟璇曪紝
+        # 涓嶅彈Loggers.Root.level闄愬埗
+        Logger:
+            - name: com.dy.pipIrrGlobal.daoBa
+              additivity: false #鍘婚櫎閲嶅鐨刲og
+              level: debug #杈撳嚭鏃ュ織绾у埆
+              AppenderRef:
+                  - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+                  - ref: ROLLING_FILE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml
index 5cd58e7..895fc77 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml
@@ -5,10 +5,10 @@
 #actutor鐨剋eb绔彛
 management:
     server:
-        port: 9081
+        port: ${pipIrr.remote.actutorPort}
 #web鏈嶅姟绔彛锛宼omcat榛樿鏄�8080
 server:
-    port: 8081
+    port: ${pipIrr.remote.webPort}
     servlet:
         context-path: /remote #web璁块棶涓婁笅鏂囪矾寰�
         context-parameters:
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.gitignore b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.gitignore
new file mode 100644
index 0000000..549e00a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.mvn/wrapper/maven-wrapper.jar b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.mvn/wrapper/maven-wrapper.jar
new file mode 100644
index 0000000..cb28b0e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.mvn/wrapper/maven-wrapper.jar
Binary files differ
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.mvn/wrapper/maven-wrapper.properties b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..5f0536e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,2 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/mvnw b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/mvnw
new file mode 100644
index 0000000..66df285
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/mvnw
@@ -0,0 +1,308 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#    https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Apache Maven Wrapper startup batch script, version 3.2.0
+#
+# Required ENV vars:
+# ------------------
+#   JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
+#     e.g. to debug Maven itself, use
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+  if [ -f /usr/local/etc/mavenrc ] ; then
+    . /usr/local/etc/mavenrc
+  fi
+
+  if [ -f /etc/mavenrc ] ; then
+    . /etc/mavenrc
+  fi
+
+  if [ -f "$HOME/.mavenrc" ] ; then
+    . "$HOME/.mavenrc"
+  fi
+
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+mingw=false
+case "$(uname)" in
+  CYGWIN*) cygwin=true ;;
+  MINGW*) mingw=true;;
+  Darwin*) darwin=true
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+    if [ -z "$JAVA_HOME" ]; then
+      if [ -x "/usr/libexec/java_home" ]; then
+        JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME
+      else
+        JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
+      fi
+    fi
+    ;;
+esac
+
+if [ -z "$JAVA_HOME" ] ; then
+  if [ -r /etc/gentoo-release ] ; then
+    JAVA_HOME=$(java-config --jre-home)
+  fi
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
+fi
+
+# For Mingw, ensure paths are in UNIX format before anything is touched
+if $mingw ; then
+  [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] &&
+    JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)"
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+  javaExecutable="$(which javac)"
+  if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then
+    # readlink(1) is not available as standard on Solaris 10.
+    readLink=$(which readlink)
+    if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
+      if $darwin ; then
+        javaHome="$(dirname "\"$javaExecutable\"")"
+        javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac"
+      else
+        javaExecutable="$(readlink -f "\"$javaExecutable\"")"
+      fi
+      javaHome="$(dirname "\"$javaExecutable\"")"
+      javaHome=$(expr "$javaHome" : '\(.*\)/bin')
+      JAVA_HOME="$javaHome"
+      export JAVA_HOME
+    fi
+  fi
+fi
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)"
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly." >&2
+  echo "  We cannot execute $JAVACMD" >&2
+  exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+  echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+  if [ -z "$1" ]
+  then
+    echo "Path not specified to find_maven_basedir"
+    return 1
+  fi
+
+  basedir="$1"
+  wdir="$1"
+  while [ "$wdir" != '/' ] ; do
+    if [ -d "$wdir"/.mvn ] ; then
+      basedir=$wdir
+      break
+    fi
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+    if [ -d "${wdir}" ]; then
+      wdir=$(cd "$wdir/.." || exit 1; pwd)
+    fi
+    # end of workaround
+  done
+  printf '%s' "$(cd "$basedir" || exit 1; pwd)"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+  if [ -f "$1" ]; then
+    # Remove \r in case we run on Windows within Git Bash
+    # and check out the repository with auto CRLF management
+    # enabled. Otherwise, we may read lines that are delimited with
+    # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
+    # splitting rules.
+    tr -s '\r\n' ' ' < "$1"
+  fi
+}
+
+log() {
+  if [ "$MVNW_VERBOSE" = true ]; then
+    printf '%s\n' "$1"
+  fi
+}
+
+BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
+if [ -z "$BASE_DIR" ]; then
+  exit 1;
+fi
+
+MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR
+log "$MAVEN_PROJECTBASEDIR"
+
+##########################################################################################
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
+##########################################################################################
+wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
+if [ -r "$wrapperJarPath" ]; then
+    log "Found $wrapperJarPath"
+else
+    log "Couldn't find $wrapperJarPath, downloading it ..."
+
+    if [ -n "$MVNW_REPOURL" ]; then
+      wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+    else
+      wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+    fi
+    while IFS="=" read -r key value; do
+      # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
+      safeValue=$(echo "$value" | tr -d '\r')
+      case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
+      esac
+    done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+    log "Downloading from: $wrapperUrl"
+
+    if $cygwin; then
+      wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
+    fi
+
+    if command -v wget > /dev/null; then
+        log "Found wget ... using wget"
+        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+            wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+        else
+            wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+        fi
+    elif command -v curl > /dev/null; then
+        log "Found curl ... using curl"
+        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+            curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
+        else
+            curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
+        fi
+    else
+        log "Falling back to using Java to download"
+        javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
+        javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
+        # For Cygwin, switch paths to Windows format before running javac
+        if $cygwin; then
+          javaSource=$(cygpath --path --windows "$javaSource")
+          javaClass=$(cygpath --path --windows "$javaClass")
+        fi
+        if [ -e "$javaSource" ]; then
+            if [ ! -e "$javaClass" ]; then
+                log " - Compiling MavenWrapperDownloader.java ..."
+                ("$JAVA_HOME/bin/javac" "$javaSource")
+            fi
+            if [ -e "$javaClass" ]; then
+                log " - Running MavenWrapperDownloader.java ..."
+                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
+            fi
+        fi
+    fi
+fi
+##########################################################################################
+# End of extension
+##########################################################################################
+
+# If specified, validate the SHA-256 sum of the Maven wrapper jar file
+wrapperSha256Sum=""
+while IFS="=" read -r key value; do
+  case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;
+  esac
+done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+if [ -n "$wrapperSha256Sum" ]; then
+  wrapperSha256Result=false
+  if command -v sha256sum > /dev/null; then
+    if echo "$wrapperSha256Sum  $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then
+      wrapperSha256Result=true
+    fi
+  elif command -v shasum > /dev/null; then
+    if echo "$wrapperSha256Sum  $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then
+      wrapperSha256Result=true
+    fi
+  else
+    echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
+    echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
+    exit 1
+  fi
+  if [ $wrapperSha256Result = false ]; then
+    echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
+    echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
+    echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
+    exit 1
+  fi
+fi
+
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+    MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
+fi
+
+# Provide a "standardized" way to retrieve the CLI args that will
+# work with both Windows and non-Windows executions.
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
+export MAVEN_CMD_LINE_ARGS
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+# shellcheck disable=SC2086 # safe args
+exec "$JAVACMD" \
+  $MAVEN_OPTS \
+  $MAVEN_DEBUG_OPTS \
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/mvnw.cmd b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/mvnw.cmd
new file mode 100644
index 0000000..95ba6f5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/mvnw.cmd
@@ -0,0 +1,205 @@
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements.  See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership.  The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License.  You may obtain a copy of the License at
+@REM
+@REM    https://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied.  See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Apache Maven Wrapper startup batch script, version 3.2.0
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM     e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+    IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Found %WRAPPER_JAR%
+    )
+) else (
+    if not "%MVNW_REPOURL%" == "" (
+        SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+    )
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Couldn't find %WRAPPER_JAR%, downloading it ...
+        echo Downloading from: %WRAPPER_URL%
+    )
+
+    powershell -Command "&{"^
+		"$webclient = new-object System.Net.WebClient;"^
+		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+		"}"^
+		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
+		"}"
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Finished downloading %WRAPPER_JAR%
+    )
+)
+@REM End of extension
+
+@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
+SET WRAPPER_SHA_256_SUM=""
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+    IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
+)
+IF NOT %WRAPPER_SHA_256_SUM%=="" (
+    powershell -Command "&{"^
+       "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
+       "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
+       "  Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
+       "  Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
+       "  Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
+       "  exit 1;"^
+       "}"^
+       "}"
+    if ERRORLEVEL 1 goto error
+)
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% ^
+  %JVM_CONFIG_MAVEN_PROPS% ^
+  %MAVEN_OPTS% ^
+  %MAVEN_DEBUG_OPTS% ^
+  -classpath %WRAPPER_JAR% ^
+  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+  %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
+
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
+
+cmd /C exit /B %ERROR_CODE%
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/pom.xml b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/pom.xml
new file mode 100644
index 0000000..a9e19dc
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>pipIrr-web</artifactId>
+        <groupId>com.dy</groupId>
+        <version>1.0.0</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <packaging>jar</packaging>
+    <artifactId>pipIrr-web-sso</artifactId>
+    <name>pipIrr-web-sso</name>
+    <description>web鍗曠偣鐧诲綍绯荤粺</description>
+
+    <dependencies>
+        <!-- 缂撳瓨 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-cache</artifactId>
+            <exclusions>
+                <!-- cache涓紩鐢ㄤ簡log4j2锛岃�屾湰绯荤粺parent鐨刾om涓紩鍏ヤ簡log4j2锛屼粠鑰岄噸澶嶅紩鍏ヤ簡锛屾墍浠ヨ繃婊ょ郴cache寮曞叆鐨刲og4j2 -->
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- 缂撳瓨 -->
+        <dependency>
+            <groupId>com.github.ben-manes.caffeine</groupId>
+            <artifactId>caffeine</artifactId>
+            <!-- 鑷姩鍒ゆ柇浣跨敤涓巗pring boot鍏煎鐨勭増鏈� -->
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/PipIrrSsoApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/PipIrrSsoApplication.java
new file mode 100644
index 0000000..1774e26
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/PipIrrSsoApplication.java
@@ -0,0 +1,31 @@
+package com.dy.sso;
+
+import com.dy.common.multiDataSource.EnableMultiDataSource;
+import lombok.extern.slf4j.Slf4j;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+
+@SpringBootApplication
+@EnableAspectJAutoProxy
+@EnableMultiDataSource
+@EnableCaching//寮�鍚娇鐢ㄧ紦瀛�
+@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.sso"})
+@MapperScan(basePackages={"com.dy.pipIrrGlobal.daoBa"})
+@Slf4j
+public class PipIrrSsoApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(PipIrrSsoApplication.class, args);
+        log.info("瀹瑰櫒鍚姩鎴愬姛... ");
+
+//       SpringCacheService springCacheService = SpringContextUtil.getBean(SpringCacheService.class);
+//       springCacheService.query();
+
+//        MyGuavaCacheService myGuavaCacheService = SpringContextUtil.getBean(MyGuavaCacheService.class);
+//        myGuavaCacheService.query();
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/CacheConstants.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/CacheConstants.java
new file mode 100644
index 0000000..b4d129a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/CacheConstants.java
@@ -0,0 +1,8 @@
+package com.dy.sso.busi;
+
+public class CacheConstants {
+
+    public static final String cacheNames = "ssoCache" ;
+
+    public static final String loginUserKeyPrefix = "loginUser_" ;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java
new file mode 100644
index 0000000..253858b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java
@@ -0,0 +1,32 @@
+package com.dy.sso.busi;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.*;
+import org.hibernate.validator.constraints.Length;
+
+@Data
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Schema(name = "鐢ㄦ埛鐧诲綍鍊煎璞�")
+/*
+妯″潡Controller绫绘柟娉曞弬鏁板紩鐢ㄤ簡璇ュ疄浣擄紙@RequestBody锛夛紝妯″潡Schemas API鏂囨。鎵嶄細鍑虹幇璇ュ疄浣撶殑API锛�
+渚嬪鏈疄浣撳湪pipIrr-web-base妯″潡BaseDemoCtrl绫绘柟娉晅est(@RequestBody DemoTest req)
+涓寮曠敤浜嗭紝璇ュ疄浣撴墠浼氬嚭鐜板湪璇ユā鍧楃殑API鏂囨。锛圵EB鐣岄潰锛変腑
+ */
+public class LoginVo {
+    @Schema(description = "鎵嬫満鍙�", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "鎵嬫満鍙蜂笉鑳戒负绌�") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    //@NotNull(message = "鎵嬫満鍙蜂笉鑳戒负绌�") //涓嶈兘涓簄ull浣嗘槸鍙互涓虹┖
+    @Length(message = "鎵嬫満鍙峰繀椤粄min}浣�", min = 11, max = 11)
+    public String phone ;
+
+    @Schema(description = "瀵嗙爜", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "瀵嗙爜涓嶈兘涓虹┖") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    @Length(message = "瀵嗙爜蹇呴』{min}浣�", min = 6, max = 6)
+    public String password ;
+}
+
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
new file mode 100644
index 0000000..321f2c2
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
@@ -0,0 +1,207 @@
+package com.dy.sso.busi;
+
+import com.dy.common.aop.SsoVo;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoBa.BaUser;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.validation.Valid;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.cache.CacheManager;
+import org.springframework.http.MediaType;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Objects;
+import java.util.UUID;
+
+/**
+ * 娉ㄨВTag 鍦ˋPI涓樉绀猴細 Tag 娉ㄨВ, 缁欐暣涓帴鍙h捣浜嗕釜鍚嶅瓧涓庢弿杩�"
+ * 娉ㄨВApiResponses 鍜� 娉ㄨВApiResponse 鐢ㄦ潵閰嶇疆鍝嶅簲锛�
+ * 娉ㄨВOperation 鐢ㄦ潵璁剧疆鎺ュ彛鍚嶇О鍜屾弿杩帮紱
+ * 娉ㄨВParameter 鐢ㄦ潵璁剧疆璇锋眰鍙傛暟鐨勬弿杩般�佹槸鍚﹀繀濉拰绀轰緥銆�
+ */
+@Slf4j
+@Tag(name = "鐢ㄦ埛鐧诲綍", description = "鍗曠偣鐧诲綍绯荤粺锛坰so锛�")
+@RestController
+@RequestMapping(path="sso")
+@SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked")
+public class SsoCtrl {
+
+    //鍦ㄥ睘鎬т笂娉ㄨВ@Autowired鏃讹紝浼氳鍛� Field injection is not recommended锛堜笉鍐嶆帹鑽愪娇鐢ㄥ瓧娈垫敞鍏ワ級
+    private SsoSv sv ;
+
+    //@Autowired
+    //private CacheManager cacheManager ;
+
+
+    @Autowired
+    public void setSv(SsoSv sv ){
+        this.sv = sv ;
+    }
+
+
+    /**
+     * 瀹㈡埛绔姹傜敤鎴风櫥褰曪紝瀹㈡埛绔彁浜son鏁版嵁
+     * @param vo 鐢ㄦ埛鐧诲綍鍊煎璞�
+     * @return 鐧诲綍鐢ㄦ埛鍊煎璞�
+     */
+    @Operation(summary = "鍗曠偣鐧诲綍", description = "鎻愪氦鐧诲綍鐢ㄦ埛鍊煎璞★紙json鏍煎紡锛夛紝杩涜鍗曠偣鐧诲綍")
+    /*
+    //涓嬮潰杩欎釜涓嶈捣浣滅敤锛岄�氳繃@RequestBody=鐩存帴鏄剧ずLoginVo鐨凙PI
+    @io.swagger.v3.oas.annotations.parameters.RequestBody(
+            //required = true,
+            description = "form鍊煎璞�",
+            content = {@Content(mediaType = "application/json",
+                    schema = @Schema(implementation = LoginVo.class))}
+    )
+    */
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖鐧诲綍鐢ㄦ埛鍊煎璞★紙鏁版嵁鍩虹被鐨刢ontent锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = UserVo.class))}
+            )
+    })
+    @PostMapping(path = "loginJson", consumes = MediaType.APPLICATION_JSON_VALUE)
+    public BaseResponse<UserVo> loginJson(@Valid @RequestBody LoginVo vo,  @Parameter(hidden = true) BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        String uuid ;
+        BaUser userPo ;
+        try {
+            //Boolean flag = cacheManager.getCacheNames().isEmpty() ;
+            uuid = UUID.randomUUID().toString();
+            userPo = this.sv.login(uuid, vo.phone, vo.password);
+        } catch (Exception e) {
+            log.error("鐢ㄦ埛鐧诲綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+
+        if(userPo != null){
+            UserVo uVo = UserVoMapper.INSTANCT.po2vo(userPo);
+            uVo.token = uuid ;
+            return BaseResponseUtils.buildSuccess(uVo);
+        }else{
+            return BaseResponseUtils.buildFail("鐧诲綍澶辫触");
+        }
+    }
+
+    /**
+     * 瀹㈡埛绔姹傜敤鎴风櫥褰曪紝瀹㈡埛绔彁浜orm琛ㄥ崟
+     * @param vo 鐧诲綍鐢ㄦ埛form琛ㄥ崟瀵硅薄
+     * @return 鐧诲綍鐢ㄦ埛鍊煎璞�
+     */
+    @Operation(summary = "鍗曠偣鐧诲綍", description = "鎻愪氦鐧诲綍鐢ㄦ埛鏁版嵁锛坒orm琛ㄥ崟锛夛紝杩涜鍗曠偣鐧诲綍")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖鐧诲綍鐢ㄦ埛鍊煎璞★紙鏁版嵁鍩虹被鐨刢ontent锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = UserVo.class))}
+            )
+    })
+    @PostMapping(path = "loginForm", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    public BaseResponse<UserVo> loginForm(@Parameter(description = "form琛ㄥ崟鏁版嵁", required = true) @Valid LoginVo vo,  @Parameter(hidden = true) BindingResult bindingResult){
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        String uuid ;
+        BaUser userPo ;
+        try {
+            //Boolean flag = cacheManager.getCacheNames().isEmpty() ;
+            uuid = UUID.randomUUID().toString();
+            userPo = this.sv.login(uuid, vo.phone, vo.password);
+        } catch (Exception e) {
+            log.error("鐢ㄦ埛鐧诲綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+
+        if(userPo != null){
+            UserVo uVo = UserVoMapper.INSTANCT.po2vo(userPo);
+            uVo.token = uuid ;
+            return BaseResponseUtils.buildSuccess(uVo);
+        }else{
+            return BaseResponseUtils.buildFail("鐧诲綍澶辫触");
+        }
+    }
+
+    /**
+     * 閫氳繃UUID閫�鍑虹櫥褰曪紝鍥犱负鍙傛暟鏄痷uid锛屾墍浠ユ璋冪敤蹇呴』鏄悗绔浉鍏充唬鐮佽皟鐢紝鍥犱负鍓嶇寰椾笉鍒癱ookie涓殑uuid
+     * @param hr HttpServletRequest
+     * @return 姝e父閫�鍑虹櫥褰曡繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse
+     */
+    @Operation(summary = "鍗曠偣鐧诲嚭", description = "鎻愪氦token(鍦╤eader涓�)锛岃繘琛屽崟鐐圭櫥鍑�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖澶勭悊缁撴灉锛堟垚鍔焧rue锛屽け璐alse锛夛紙鏁版嵁鍩虹被鐨刢ontent锛�",
+                    content = {@Content(mediaType = MediaType.TEXT_PLAIN_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @GetMapping(path = "logout")
+    public BaseResponse<Boolean> logout(@Parameter(hidden = true) HttpServletRequest hr){
+        String token = hr.getHeader("token") ;
+        if(token != null){
+            this.sv.logout(token) ;
+            return BaseResponseUtils.buildSuccess(true);
+        }else{
+            return BaseResponseUtils.buildFail("鏈粠header涓緱鍒皌oken");
+        }
+    }
+
+    /**
+     * 姝ゆ柟娉曚緵瀛愭ā鍧楃郴缁熻皟鐢紝鎵�浠ヤ笉鍏紑鍦ˋPI鎺ュ彛涓�
+     * 鏂规硶鍔熻兘锛氬緱鍒扮櫥褰曠敤鎴穒d锛屽惁鍒欒繑鍥瀗ull
+     * @param token 鐧诲綍鐢ㄦ埛token
+     * @return 鐧诲綍鐢ㄦ埛ID
+     */
+    @Hidden
+    @GetMapping(path = "loginUserId")
+    public Long loginUserId(String token){
+        BaUser userPo = this.sv.getByUuid(token) ;
+        return userPo == null ? null : userPo.id ;
+    }
+
+    /**
+     * 姝ゆ柟娉曚緵瀛愭ā鍧楃郴缁熻皟鐢紝鎵�浠ヤ笉鍏紑鍦ˋPI鎺ュ彛涓�
+     * 鏂规硶鍔熻兘锛氶獙璇佹槸鍚﹀凡缁忕櫥褰曪紝濡傛灉鐧诲綍浜嗭紝鍐嶉獙璇佹潈闄�
+     * @param token 鐧诲綍鐢ㄦ埛token
+     * @param power 楠岃瘉涓�涓潈闄�
+     * @param allPower 楠岃瘉鎵�鏈夋潈闄�
+     * @param anyPower 楠岃瘉浠讳綍涓�涓潈闄�
+     * @return SsoVo
+     */
+    @Hidden
+    @GetMapping(path = "ssoCheck")
+    public SsoVo ssoCheck(String token, String power, String[] allPower, String[] anyPower){
+        BaUser userPo = this.sv.getByUuid(token) ;
+        SsoVo vo = new SsoVo();
+        if(userPo != null){
+            vo.logined = true ;
+            vo.hasPower = true ;
+            vo.dataSourceName = userPo.getOrgTag() ;
+        }else{
+            vo.logined = false ;
+            vo.hasPower = false ;
+        }
+        return vo ;
+    }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java
new file mode 100644
index 0000000..249facb
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java
@@ -0,0 +1,39 @@
+package com.dy.sso.busi;
+
+import com.dy.pipIrrGlobal.daoBa.BaUserMapper;
+import com.dy.pipIrrGlobal.pojoBa.BaUser;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class SsoSv {
+
+    private BaUserMapper baUserMapper;
+
+    @Autowired
+    private void setBaUserMapper(BaUserMapper baUserMapper){
+        this.baUserMapper = baUserMapper ;
+    }
+
+    //褰撴湭娉ㄨВ@Transactional鏃讹紝浼氳緭鍑烘棩蹇楋細SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46727a0c] was not registered for synchronization because synchronization is not active
+    //@Transactional
+    @Cacheable(cacheNames=CacheConstants.cacheNames, key="'" + CacheConstants.loginUserKeyPrefix + "' + #uuid", sync=true)
+    public BaUser login(String uuid, String phone, String password){
+        return this.baUserMapper.login(phone, password) ;
+    }
+
+    @CacheEvict(cacheNames=CacheConstants.cacheNames, key="'" + CacheConstants.loginUserKeyPrefix + "' + #uuid")
+    public void logout(String uuid){
+    }
+
+    @Cacheable(cacheNames=CacheConstants.cacheNames, key="'" + CacheConstants.loginUserKeyPrefix + "' + #uuid")
+    public BaUser getByUuid(String uuid){
+        //姝ゆ柟娉曠洰鐨勬槸鐩存帴浠庣紦瀛樹腑璇诲彇锛屽鏋滅紦瀛樻棤姝ゅ�硷紝璇存槑鏁版嵁琚竻妤氫簡锛岃繑鍥瀗ull鍊硷紝闇�瑕侀噸鏂扮櫥褰�
+        return null ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/UserVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/UserVo.java
new file mode 100644
index 0000000..d4408db
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/UserVo.java
@@ -0,0 +1,22 @@
+package com.dy.sso.busi;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+@Data
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Schema(name = "鐧诲綍鐢ㄦ埛鍊煎璞�")
+public class UserVo {
+    @Schema(description = "濮撳悕")
+    public String name ;//鐢ㄦ埛濮撳悕
+
+    @Schema(description = "鎵嬫満鍙�")
+    public String phone ;//鐢ㄦ埛鎵嬫満鍙�
+
+    @Schema(description = "token")
+    public String token ;//
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/UserVoMapper.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/UserVoMapper.java
new file mode 100644
index 0000000..f90c8f3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/UserVoMapper.java
@@ -0,0 +1,23 @@
+package com.dy.sso.busi;
+
+import com.dy.pipIrrGlobal.pojoBa.BaUser;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface UserVoMapper {
+
+    UserVoMapper INSTANCT = Mappers.getMapper(UserVoMapper.class);
+
+    /**
+     * po杞瑅o
+     * @param po
+     * @return
+     */
+    @Mapping(target = "name", source = "name")
+    @Mapping(target = "phone", source = "phone")
+    @Mapping(target = "token", ignore=true)
+    UserVo po2vo(BaUser po);
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/config/CaffeineCacheConfiguration.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/config/CaffeineCacheConfiguration.java
new file mode 100644
index 0000000..d50a4e1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/config/CaffeineCacheConfiguration.java
@@ -0,0 +1,39 @@
+package com.dy.sso.config;
+
+
+import com.github.benmanes.caffeine.cache.Caffeine;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.caffeine.CaffeineCacheManager;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import java.util.concurrent.TimeUnit;
+
+@Configuration
+public class CaffeineCacheConfiguration {
+    /*
+      initialCapacity=[integer]: 鍒濆鐨勭紦瀛樼┖闂村ぇ灏�
+      maximumSize=[long]: 缂撳瓨鐨勬渶澶ф潯鏁�
+      maximumWeight=[long]: 缂撳瓨鐨勬渶澶ф潈閲�
+      expireAfterAccess=[duration]: 鏈�鍚庝竴娆″啓鍏ユ垨璁块棶鍚庣粡杩囧浐瀹氭椂闂磋繃鏈�
+      expireAfterWrite=[duration]: 鏈�鍚庝竴娆″啓鍏ュ悗缁忚繃鍥哄畾鏃堕棿杩囨湡
+      refreshAfterWrite=[duration]: 鍒涘缓缂撳瓨鎴栬�呮渶杩戜竴娆℃洿鏂扮紦瀛樺悗缁忚繃鍥哄畾鐨勬椂闂撮棿闅旓紝鍒锋柊缂撳瓨
+      weakKeys: 鎵撳紑key鐨勫急寮曠敤
+      weakValues锛氭墦寮�value鐨勫急寮曠敤
+      softValues锛氭墦寮�value鐨勮蒋寮曠敤
+      recordStats锛氬紑鍙戠粺璁″姛鑳�
+    娉ㄦ剰锛�
+      expireAfterWrite鍜宔xpireAfterAccess鍚屾椂瀛樺湪鏃讹紝浠xpireAfterWrite涓哄噯銆�
+      maximumSize鍜宮aximumWeight涓嶅彲浠ュ悓鏃朵娇鐢�
+      weakValues鍜宻oftValues涓嶅彲浠ュ悓鏃朵娇鐢偡weakValues鍜宻oftValues涓嶅彲浠ュ悓鏃朵娇鐢�
+     */
+    @Bean
+    public CacheManager cacheManager() {
+        CaffeineCacheManager cacheManager = new CaffeineCacheManager();
+        cacheManager.setCaffeine(Caffeine.newBuilder()
+                .initialCapacity(10)
+                .maximumSize(10000)
+                .expireAfterAccess(30, TimeUnit.MINUTES));
+
+        return cacheManager;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/config/WebListenerConfiguration.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/config/WebListenerConfiguration.java
new file mode 100644
index 0000000..f0bfc9b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/config/WebListenerConfiguration.java
@@ -0,0 +1,50 @@
+package com.dy.sso.config;
+
+import com.dy.common.webListener.ConfigListener;
+import com.dy.sso.util.SsoListener;
+import jakarta.servlet.ServletContextListener;
+import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@SuppressWarnings("unchecked")//涓嶅姞缂栬緫鏃惰鍛婏細鈥滀娇鐢ㄤ簡鏈粡妫�鏌ユ垨涓嶅畨鍏ㄧ殑鎿嶄綔銆傗��
+public class WebListenerConfiguration {
+
+    /**
+     * 鍚姩椤哄簭
+     */
+    private static final int order_config = 1 ;
+    private static final int order_sso = 2 ;
+
+    @Bean
+    public ConfigListener getGlConfigListener(){
+        return new ConfigListener() ;
+    }
+
+    /**
+     * 澶栭儴鎻愪緵Listener
+     * @param listener 澶栭儴鎻愪緵Listener
+     * @return 娉ㄥ唽Bean
+     */
+    @Bean
+    public ServletListenerRegistrationBean<? extends ServletContextListener> regConfigListener(ConfigListener listener) {
+        ServletListenerRegistrationBean<ConfigListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
+        listenerRegistrationBean.setListener(listener);
+        listenerRegistrationBean.setOrder(order_config);
+        return listenerRegistrationBean;
+    }
+
+    /**
+     * 鍐呴儴鎻愪緵listener
+     * @return 娉ㄥ唽Bean
+     */
+    @Bean
+    public ServletListenerRegistrationBean<? extends ServletContextListener> reqSsoListener() {
+        ServletListenerRegistrationBean<SsoListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
+        SsoListener listener = new SsoListener();
+        listenerRegistrationBean.setListener(listener);
+        listenerRegistrationBean.setOrder(order_sso);
+        return listenerRegistrationBean;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/util/SsoListener.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/util/SsoListener.java
new file mode 100644
index 0000000..9098e5b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/util/SsoListener.java
@@ -0,0 +1,22 @@
+package com.dy.sso.util;
+
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletContextEvent;
+import jakarta.servlet.ServletContextListener;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class SsoListener implements ServletContextListener {
+
+    @Override
+    public void contextInitialized(ServletContextEvent event) {
+        ServletContextListener.super.contextInitialized(event);
+        ServletContext con = event.getServletContext();
+    }
+
+    @Override
+    public void contextDestroyed(ServletContextEvent event) {
+        ServletContextListener.super.contextDestroyed(event);
+    }
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/application.yml
new file mode 100644
index 0000000..f934893
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/application.yml
@@ -0,0 +1,18 @@
+spring:
+    profiles:
+        include: global, database
+
+#actutor鐨剋eb绔彛
+management:
+    server:
+        port: ${pipIrr.sso.actutorPort}
+#web鏈嶅姟绔彛锛宼omcat榛樿鏄�8080
+server:
+    port: ${pipIrr.sso.webPort}
+    servlet:
+        context-path: /sso #web璁块棶涓婁笅鏂囪矾寰�
+        context-parameters:
+            #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
+            IdSuffix: 0
+            #ConfigListener涓簲鐢�
+            configFileNames: config-global.xml,config-sso.xml
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/config/config-sso.xml b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/config/config-sso.xml
new file mode 100644
index 0000000..5046a1a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/config/config-sso.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE config>
+<config>
+    <sso.test>鍗犱綅</sso.test>
+</config>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/log4j2.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/log4j2.yml
new file mode 100644
index 0000000..5d27744
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/resources/log4j2.yml
@@ -0,0 +1,79 @@
+Configuration:
+    #status锛岃繖涓敤浜庤缃甽og4j2鑷韩鍐呴儴鐨勪俊鎭緭鍑猴紝鍙互涓嶈缃紝褰撹缃垚trace鏃讹紝浣犱細鐪嬪埌log4j2鍐呴儴鍚勭璇︾粏杈撳嚭锛涘彲浠ヨ缃垚Off(鍏抽棴)鎴朎rror(鍙緭鍑洪敊璇俊鎭�)
+    status: Error
+
+    Properties: # 瀹氫箟鍏ㄥ眬鍙橀噺
+        Property:
+            #鏃ュ織鏂囦欢瀛樺偍鐨勭洰褰�
+            - name: log.path
+              value: ./logs
+            #鏃ュ織鏂囦欢瀛樺偍鍚嶇О
+            - name: project.name
+              value: pipIrrSso
+
+    #瀹氫箟杈撳嚭鍣紝鍙互杈撳嚭鍒版帶鍒跺彴鍜屾枃浠�.
+    Appenders:
+        #杈撳嚭鍒版帶鍒跺彴
+        Console:
+            #Appender鍛藉悕
+            name: CONSOLE
+            target: SYSTEM_OUT
+            ThresholdFilter:
+                level: debug #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
+                onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
+                onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
+            #鏃ュ織鍐呭鏍峰紡
+            PatternLayout:
+                #%n-鎹㈣
+                #%m-鏃ュ織鍐呭锛岃緭鍑轰唬鐮佷腑鎸囧畾鐨勬棩蹇椾俊鎭�
+                #%p-杈撳嚭浼樺厛绾э紝鍗矰EBUG,INFO,WARN,ERROR,FATAL
+                #%r-绋嬪簭鍚姩鍒扮幇鍦ㄧ殑姣鏁�
+                #%%- 杈撳嚭涓�涓�"%" 瀛楃
+                #%t-褰撳墠绾跨▼鍚�
+                #%d-鏃ユ湡鍜屾椂闂�, 甯哥敤鐨勬牸寮忔湁%d{DATE},%d{ABSOLUTE},%d{HH:mm:ss,SSS},%d{ddMMyyyyHH:mm:ss,SSS}
+                #%l-鍚�%F%L%C%M
+                #%F-java婧愭枃浠跺悕
+                #%L-java婧愮爜琛屾暟
+                #%C-java绫诲悕,%C{1}杈撳嚭鏈�鍚庝竴涓厓绱�
+                #%M-java鏂规硶鍚�
+                pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
+        # 杈撳嚭鍒版枃浠讹紝瓒呰繃10MB褰掓。
+        RollingFile:
+            - name: ROLLING_FILE
+              ignoreExceptions: false
+              fileName: ${log.path}/${project.name}.log
+              filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
+              ThresholdFilter:
+                  level: error #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
+                  onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
+                  onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
+              #鏃ュ織鍐呭鏍峰紡
+              PatternLayout:
+                  pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
+              Policies:
+                  SizeBasedTriggeringPolicy:
+                      size: "10 MB"
+              DefaultRolloverStrategy:
+                  max: 1000
+
+    Loggers:
+        Root:
+            level: info #鏃ュ織杈撳嚭绾у埆锛屽叡鏈�8涓骇鍒紝鎸夌収浠庝綆鍒伴珮涓猴細all < trace < debug < info < warn < error < fatal < off
+            AppenderRef: #Root鐨勫瓙鑺傜偣锛岀敤鏉ユ寚瀹氳鏃ュ織杈撳嚭鍒板摢涓狝ppender.
+                - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+                - ref: ROLLING_FILE  #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+        # 涓哄寘閰嶇疆鐗规畩鐨凩og绾у埆锛屾柟渚胯皟璇曪紝
+        # 涓嶅彈Loggers.Root.level闄愬埗
+        Logger:
+            - name: com.dy.sso.busi #鏍规嵁鍖呭悕绉� 閰嶇疆
+              additivity: false #鍘婚櫎閲嶅鐨刲og
+              level: debug #杈撳嚭鏃ュ織绾у埆
+              AppenderRef:
+                  - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+                  - ref: ROLLING_FILE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+            - name: com.dy.pipIrrGlobal.daoBa
+              additivity: false #鍘婚櫎閲嶅鐨刲og
+              level: debug #杈撳嚭鏃ュ織绾у埆
+              AppenderRef:
+                  - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+                  - ref: ROLLING_FILE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/test/java/com/dy/sso/PipIrrWebSsoApplicationTests.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/test/java/com/dy/sso/PipIrrWebSsoApplicationTests.java
new file mode 100644
index 0000000..b7e5f32
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/test/java/com/dy/sso/PipIrrWebSsoApplicationTests.java
@@ -0,0 +1,13 @@
+package com.dy.sso;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class PipIrrWebSsoApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.properties b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.properties
deleted file mode 100644
index 8b13789..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.properties
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml
new file mode 100644
index 0000000..71047d4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml
@@ -0,0 +1,18 @@
+spring:
+    profiles:
+        include: global, database
+
+#actutor鐨剋eb绔彛
+management:
+    server:
+        port: ${pipIrr.statistics.actutorPort}
+#web鏈嶅姟绔彛锛宼omcat榛樿鏄�8080
+server:
+    port: ${pipIrr.statistics.webPort}
+    servlet:
+        context-path: /sso #web璁块棶涓婁笅鏂囪矾寰�
+        context-parameters:
+            #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
+            IdSuffix: 0
+            #ConfigListener涓簲鐢�
+            configFileNames: config-global.xml,config-sso.xml
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/log4j2.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/log4j2.yml
new file mode 100644
index 0000000..2d840a9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/log4j2.yml
@@ -0,0 +1,79 @@
+Configuration:
+    #status锛岃繖涓敤浜庤缃甽og4j2鑷韩鍐呴儴鐨勪俊鎭緭鍑猴紝鍙互涓嶈缃紝褰撹缃垚trace鏃讹紝浣犱細鐪嬪埌log4j2鍐呴儴鍚勭璇︾粏杈撳嚭锛涘彲浠ヨ缃垚Off(鍏抽棴)鎴朎rror(鍙緭鍑洪敊璇俊鎭�)
+    status: Error
+
+    Properties: # 瀹氫箟鍏ㄥ眬鍙橀噺
+        Property:
+            #鏃ュ織鏂囦欢瀛樺偍鐨勭洰褰�
+            - name: log.path
+              value: ./logs
+            #鏃ュ織鏂囦欢瀛樺偍鍚嶇О
+            - name: project.name
+              value: pipIrrStatistics
+
+    #瀹氫箟杈撳嚭鍣紝鍙互杈撳嚭鍒版帶鍒跺彴鍜屾枃浠�.
+    Appenders:
+        #杈撳嚭鍒版帶鍒跺彴
+        Console:
+            #Appender鍛藉悕
+            name: CONSOLE
+            target: SYSTEM_OUT
+            ThresholdFilter:
+                level: debug #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
+                onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
+                onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
+            #鏃ュ織鍐呭鏍峰紡
+            PatternLayout:
+                #%n-鎹㈣
+                #%m-鏃ュ織鍐呭锛岃緭鍑轰唬鐮佷腑鎸囧畾鐨勬棩蹇椾俊鎭�
+                #%p-杈撳嚭浼樺厛绾э紝鍗矰EBUG,INFO,WARN,ERROR,FATAL
+                #%r-绋嬪簭鍚姩鍒扮幇鍦ㄧ殑姣鏁�
+                #%%- 杈撳嚭涓�涓�"%" 瀛楃
+                #%t-褰撳墠绾跨▼鍚�
+                #%d-鏃ユ湡鍜屾椂闂�, 甯哥敤鐨勬牸寮忔湁%d{DATE},%d{ABSOLUTE},%d{HH:mm:ss,SSS},%d{ddMMyyyyHH:mm:ss,SSS}
+                #%l-鍚�%F%L%C%M
+                #%F-java婧愭枃浠跺悕
+                #%L-java婧愮爜琛屾暟
+                #%C-java绫诲悕,%C{1}杈撳嚭鏈�鍚庝竴涓厓绱�
+                #%M-java鏂规硶鍚�
+                pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
+        # 杈撳嚭鍒版枃浠讹紝瓒呰繃10MB褰掓。
+        RollingFile:
+            - name: ROLLING_FILE
+              ignoreExceptions: false
+              fileName: ${log.path}/${project.name}.log
+              filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
+              ThresholdFilter:
+                  level: error #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
+                  onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
+                  onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
+              #鏃ュ織鍐呭鏍峰紡
+              PatternLayout:
+                  pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
+              Policies:
+                  SizeBasedTriggeringPolicy:
+                      size: "10 MB"
+              DefaultRolloverStrategy:
+                  max: 1000
+
+    Loggers:
+        Root:
+            level: info #鏃ュ織杈撳嚭绾у埆锛屽叡鏈�8涓骇鍒紝鎸夌収浠庝綆鍒伴珮涓猴細all < trace < debug < info < warn < error < fatal < off
+            AppenderRef: #Root鐨勫瓙鑺傜偣锛岀敤鏉ユ寚瀹氳鏃ュ織杈撳嚭鍒板摢涓狝ppender.
+                - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+                - ref: ROLLING_FILE  #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+        # 涓哄寘閰嶇疆鐗规畩鐨凩og绾у埆锛屾柟渚胯皟璇曪紝
+        # 涓嶅彈Loggers.Root.level闄愬埗
+        Logger:
+            - name: com.dy.sso.busi #鏍规嵁鍖呭悕绉� 閰嶇疆
+              additivity: false #鍘婚櫎閲嶅鐨刲og
+              level: debug #杈撳嚭鏃ュ織绾у埆
+              AppenderRef:
+                  - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+                  - ref: ROLLING_FILE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+            - name: com.dy.pipIrrGlobal.daoBa
+              additivity: false #鍘婚櫎閲嶅鐨刲og
+              level: debug #杈撳嚭鏃ュ織绾у埆
+              AppenderRef:
+                  - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+                  - ref: ROLLING_FILE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web.iml b/pipIrr-platform/pipIrr-web/pipIrr-web.iml
index 7b1573f..86d6a00 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web.iml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web.iml
@@ -81,7 +81,7 @@
     <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-models:2.2.9" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.security:spring-security-core:6.1.2" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:6.1.2" level="project" />
-    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.48" level="project" />
+    <orderEntry type="library" name="Maven: com.mysql:mysql-connector-j:8.0.33" level="project" />
     <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.20" level="project" />
     <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.20" level="project" />
     <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:2.0.7" level="project" />
diff --git a/pipIrr-platform/pipIrr-web/pom.xml b/pipIrr-platform/pipIrr-web/pom.xml
index 10b9f31..865fb08 100644
--- a/pipIrr-platform/pipIrr-web/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pom.xml
@@ -19,6 +19,7 @@
 
     <modules>
         <module>pipIrr-web-demo</module>
+        <module>pipIrr-web-sso</module>
         <module>pipIrr-web-base</module>
         <module>pipIrr-web-remote</module>
         <module>pipIrr-web-statistics</module>
@@ -106,6 +107,7 @@
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.33</version>
         </dependency>
         <!--druid-spring-boot杩炴帴姹�-->
         <dependency>

--
Gitblit v1.8.0