From ac36bcd41519764d9a79eaffca3fe41e6ecb89f9 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 09 十一月 2023 11:30:17 +0800
Subject: [PATCH] 1、增加是否为开发阶段的配置,基于此配置,进行判断,若开发阶段设置临时数据源名称,及不进行登录及权限验证。 2、分配各个子系统id生成器的后缀

---
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebFilterConfiguration.java   |   45 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webListener/GenerateIdSetSuffixListener.java          |    3 
 pipIrr-platform/pom.xml                                                                                         |    5 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebListenerConfiguration.java |   49 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml                                    |    2 
 pipIrr-platform/文档/pipIrr-web的pom/pom(不带version).xml                                                            |    5 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml                                    |   81 +++++
 pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/resources/application.yml                                   |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/DevOfDataSourceNameSetFilter.java           |   26 +
 pipIrr-platform/文档/在线需求文件访问地址.txt                                                                               |    1 
 pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebListenerConfiguration.java |    8 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java                        |    7 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAop.java                                       |    1 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java           |   98 +++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java                            |   15 
 pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebFilterConfiguration.java   |   45 ++-
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/TypeConversionDistrict.java                |   38 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java             |   24 +
 pipIrr-platform/pipIrr-global/pom.xml                                                                           |   54 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoDemo/DemoMpMapper.java                       |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java                                    |   73 +++--
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/multiDataSource/DataSourceAspect.java                 |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaDistrict.java                          |   30 ++
 pipIrr-platform/pipIrr-global/pipIrr-global.iml                                                                 |    7 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java                     |   51 +++
 pipIrr-platform/pipIrr-web/pom.xml                                                                              |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVoMapper.java       |   21 +
 pipIrr-platform/pipIrr-common/pipIrr-common.iml                                                                 |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml                             |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml                                 |    2 
 /dev/null                                                                                                       |   31 --
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVo.java             |   29 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml                                        |    5 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoRestTemplateConfiguration.java                 |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/test/java/com/dy/pipIrrDemo/mp/MpTest2.java                      |    1 
 pipIrr-platform/pipIrr-common/pom.xml                                                                           |    6 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                         |    3 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/DistrictLevel.java                         |   36 ++
 38 files changed, 709 insertions(+), 118 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/pipIrr-common.iml b/pipIrr-platform/pipIrr-common/pipIrr-common.iml
index 2eb4fee..cfc160c 100644
--- a/pipIrr-platform/pipIrr-common/pipIrr-common.iml
+++ b/pipIrr-platform/pipIrr-common/pipIrr-common.iml
@@ -75,7 +75,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-common/pom.xml b/pipIrr-platform/pipIrr-common/pom.xml
index 6f0479a..2ad1d84 100644
--- a/pipIrr-platform/pipIrr-common/pom.xml
+++ b/pipIrr-platform/pipIrr-common/pom.xml
@@ -73,10 +73,10 @@
 
         <!--mysql椹卞姩-->
         <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <!--瀵瑰簲鑷繁鐢佃剳瀹夎鐨刴ysql鐗堟湰-->
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
         </dependency>
+
         <!--druid-spring-boot杩炴帴姹�-->
         <dependency>
             <groupId>com.alibaba</groupId>
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAop.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAop.java
index 9ada78f..c2f143a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAop.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAop.java
@@ -6,6 +6,7 @@
 @Target(ElementType.METHOD)
 @Inherited
 public @interface SsoAop {
+    String value() default "" ;
     //浼樺厛绾�1(鏈�楂�)锛屽鏋滃叾鏈夊�硷紝鍒欎笉鍦ㄥ垽鏂互涓嬪彉閲忓彇鍊�
     String power() default "" ;
     //浼樺厛绾�2锛屾嫢鏈夊叏閮ㄦ潈闄愭墠鍙� , 濡傛灉鍏舵湁鍊硷紝鍒欎笉鍦ㄥ垽鏂互涓嬪彉閲忓彇鍊�
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java
index 8ff3393..fbfa354 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java
@@ -4,7 +4,7 @@
 import com.dy.common.multiDataSource.DataSourceContext;
 import com.dy.common.webFilter.UserTokenContext;
 import com.dy.common.webUtil.BaseResponseUtils;
-import com.mysql.jdbc.StringUtils;
+import com.mysql.cj.util.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
@@ -31,6 +31,9 @@
 @Component
 public class SsoAspect {
 
+    @Value("${pipIrr.global.dev}")
+    public String isDevStage ;//鏄惁涓哄紑鍙戦樁娈�
+
     @Value("${pipIrr.sso.checkUrl}")
     public String SsoCheckUrl ;
 
@@ -47,43 +50,55 @@
 
     @Around("dyPointCut()")
     public Object execute(ProceedingJoinPoint point) throws Throwable {
-        MethodSignature signature = (MethodSignature) point.getSignature();
-        Method method = signature.getMethod();
-        SsoAop aop = method.getAnnotation(SsoAop.class) ;
-        if (Objects.nonNull(aop)){
-            String token = UserTokenContext.get() ;
-            String power = aop.power() ;
-            String[] allPower = aop.ifAllPower() ;
-            String[] anyPower = aop.ifAnyPower() ;
-            Object rObj = this.check(token, power, allPower, anyPower);
-            if(rObj != null){
-                if(rObj instanceof SsoVo ssoVo){
-                    if(ssoVo.logined){
-                        if(ssoVo.hasPower){
-                            if(!StringUtils.isNullOrEmpty(ssoVo.dataSourceName)){
-                                DataSourceContext.set(ssoVo.dataSourceName);
-                                return point.proceed();
+        if(isDevStage != null && !isDevStage.trim().equals("") && isDevStage.trim().equalsIgnoreCase("true")){
+            return point.proceed();
+        }else{
+            MethodSignature signature = (MethodSignature) point.getSignature();
+            Method method = signature.getMethod();
+            SsoAop aop = method.getAnnotation(SsoAop.class) ;
+            if (Objects.nonNull(aop)){
+                String power = aop.value() ;
+                if(power.trim().equals("")){
+                    power = aop.power() ;
+                }
+                if(power.trim().equals("-1")){
+                    //涓嶈繘琛岀櫥褰曞強鏉冮檺楠岃瘉
+                    return point.proceed();
+                }else{
+                    String[] allPower = aop.ifAllPower() ;
+                    String[] anyPower = aop.ifAnyPower() ;
+                    String token = UserTokenContext.get() ;
+                    Object rObj = this.check(token, power, allPower, anyPower);
+                    if(rObj != null){
+                        if(rObj instanceof SsoVo ssoVo){
+                            if(ssoVo.logined){
+                                if(ssoVo.hasPower){
+                                    if(!StringUtils.isNullOrEmpty(ssoVo.dataSourceName)){
+                                        DataSourceContext.set(ssoVo.dataSourceName);
+                                        return point.proceed();
+                                    }else{
+                                        //鏃犳暟鎹簮
+                                        return BaseResponseUtils.buildError("鍚庣绯荤粺鍑洪敊锛屾湭寰楀埌褰撳墠鐧诲綍鐢ㄦ埛鎵�灞炴満鏋勬爣绛撅紙鏁版嵁婧愬悕锛�") ;
+                                    }
+                                }else{
+                                    //鏃犳潈闄�
+                                    return BaseResponseUtils.buildNoPower() ;
+                                }
                             }else{
-                                //鏃犳暟鎹簮
-                                return BaseResponseUtils.buildError("鍚庣绯荤粺鍑洪敊锛屾湭寰楀埌褰撳墠鐧诲綍鐢ㄦ埛鎵�灞炴満鏋勬爣绛撅紙鏁版嵁婧愬悕锛�") ;
+                                //鏈櫥褰�
+                                return BaseResponseUtils.buildToLogin() ;
                             }
                         }else{
-                            //鏃犳潈闄�
-                            return BaseResponseUtils.buildNoPower() ;
+                            return rObj ;
                         }
                     }else{
-                        //鏈櫥褰�
-                        return BaseResponseUtils.buildToLogin() ;
+                        return BaseResponseUtils.buildError("鍚庣绯荤粺鍑洪敊锛宑heck鏂规硶杩斿洖null") ;
                     }
-                }else{
-                    return rObj ;
                 }
             }else{
-                return BaseResponseUtils.buildError("鍚庣绯荤粺鍑洪敊锛宑heck鏂规硶杩斿洖null") ;
+                //宸茬粡杩涘叆娉ㄨВ澶勭悊浜嗭紝杩樺緱涓嶅埌娉ㄨВ锛岃繖绉嶆儏鍐垫槸涓嶅彲鑳界殑銆�
+                return BaseResponseUtils.buildError("鍚庣绯荤粺鍑洪敊锛孌yAop娉ㄨВ涓簄ull") ;
             }
-        }else{
-            //宸茬粡杩涘叆娉ㄨВ澶勭悊浜嗭紝杩樺緱涓嶅埌娉ㄨВ锛岃繖绉嶆儏鍐垫槸涓嶅彲鑳界殑銆�
-            return BaseResponseUtils.buildError("鍚庣绯荤粺鍑洪敊锛孌yAop娉ㄨВ涓簄ull") ;
         }
     }
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoRestTemplateConfiguration.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoRestTemplateConfiguration.java
index 2f7515a..d61098d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoRestTemplateConfiguration.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoRestTemplateConfiguration.java
@@ -1,16 +1,18 @@
 package com.dy.common.aop;
 
-import org.springframework.boot.web.client.RestTemplateBuilder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.client.RestTemplate;
 
+/**
+ * 涓篠soAspect璁块棶鍗曠偣鐧诲綍绯荤粺鎻愪緵 RestTemplate
+ */
 @Configuration
 public class SsoRestTemplateConfiguration {
 
     @Bean
-    public RestTemplate restTemplate(RestTemplateBuilder builder){
-        return builder.build();
+    public RestTemplate restTemplate(){
+        return new RestTemplate();
     }
 
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/multiDataSource/DataSourceAspect.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/multiDataSource/DataSourceAspect.java
index 82f3ea4..610dbcf 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/multiDataSource/DataSourceAspect.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/multiDataSource/DataSourceAspect.java
@@ -1,7 +1,7 @@
 package com.dy.common.multiDataSource;
 
 import com.dy.common.contant.Constant;
-import com.mysql.jdbc.StringUtils;
+import com.mysql.cj.util.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/DevOfDataSourceNameSetFilter.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/DevOfDataSourceNameSetFilter.java
new file mode 100644
index 0000000..5ae7e4d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/DevOfDataSourceNameSetFilter.java
@@ -0,0 +1,26 @@
+package com.dy.common.webFilter;
+
+import com.dy.common.multiDataSource.DataSourceContext;
+import jakarta.servlet.*;
+import lombok.extern.slf4j.Slf4j;
+import java.io.IOException;
+
+@Slf4j
+public class DevOfDataSourceNameSetFilter  implements Filter {
+    private String devOfDataSourceName ;
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+        devOfDataSourceName = filterConfig.getInitParameter("dataSourceName");
+        log.info("寮�鍙戦樁娈碉紝璁剧疆鏁版嵁婧愬悕绉颁负:" + devOfDataSourceName);
+    }
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+        log.info("寮�鍙戦樁娈碉紝璁剧疆鏁版嵁婧愬悕绉颁负:" + devOfDataSourceName);
+        DataSourceContext.set(devOfDataSourceName);
+        filterChain.doFilter(servletRequest, servletResponse);
+    }
+
+    @Override
+    public void destroy() {
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokerFilter.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java
similarity index 88%
rename from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokerFilter.java
rename to pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java
index 0481216..7fc1185 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokerFilter.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java
@@ -4,7 +4,7 @@
 import com.dy.common.contant.Constant;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
-import com.mysql.jdbc.StringUtils;
+import com.mysql.cj.util.StringUtils ;
 import jakarta.servlet.*;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
@@ -14,10 +14,9 @@
 import java.io.PrintWriter;
 
 @Slf4j
-public class UserTokerFilter implements Filter {
+public class UserTokenFilter implements Filter {
     @Override
     public void init(FilterConfig filterConfig) throws ServletException {
-        //log.info("UserTokerFilter init: name:" + filterConfig.getInitParameter("name"));
     }
 
     @Override
@@ -31,7 +30,7 @@
         }else{
             PrintWriter pw = null ;
             try {
-                BaseResponse res = BaseResponseUtils.buildToLogin() ;
+                BaseResponse<?> res = BaseResponseUtils.buildToLogin() ;
                 String jsonString = JSON.toJSONString(res);
                 response.setCharacterEncoding("UTF-8");
                 response.setContentType("application/json; charset=utf-8");
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webListener/GenerateIdSetSuffixListener.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webListener/GenerateIdSetSuffixListener.java
index 3de19d4..f64190d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webListener/GenerateIdSetSuffixListener.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webListener/GenerateIdSetSuffixListener.java
@@ -28,7 +28,6 @@
 
     /**
      * 瑙f瀽绯荤粺閰嶇疆
-     * @return
      */
     private void init(ServletContext con){
         try {
@@ -39,7 +38,7 @@
                 if(!NumUtil.isPlusIntNumber(idSuffix)){
                     throw new Exception("閰嶇疆ID鍚庣紑鏍煎紡涓嶆纭�") ;
                 }else{
-                    IDLongGenerator.setSuffix(Integer.valueOf(idSuffix));
+                    IDLongGenerator.setSuffix(Integer.parseInt(idSuffix));
                 }
             }
         } catch (Exception e) {
diff --git a/pipIrr-platform/pipIrr-global/pipIrr-global.iml b/pipIrr-platform/pipIrr-global/pipIrr-global.iml
index ecb090e..2f45e45 100644
--- a/pipIrr-platform/pipIrr-global/pipIrr-global.iml
+++ b/pipIrr-platform/pipIrr-global/pipIrr-global.iml
@@ -48,12 +48,13 @@
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:3.1.3" level="project" />
     <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.28" level="project" />
     <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.20" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-log4j2:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j2-impl:2.20.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-log4j2:2.7.9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j-impl:2.20.0" level="project" />
     <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.20.0" level="project" />
     <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:2.0.7" level="project" />
     <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.20.0" level="project" />
     <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-jul:2.20.0" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:2.0.7" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.15.2" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.15.2" level="project" />
@@ -76,5 +77,7 @@
     <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.40" level="project" />
     <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension-spring6:2.0.40" level="project" />
     <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension:2.0.40" level="project" />
+    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.5.5.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct-processor:1.5.5.Final" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/pom.xml b/pipIrr-platform/pipIrr-global/pom.xml
index a440ad1..e984ab5 100644
--- a/pipIrr-platform/pipIrr-global/pom.xml
+++ b/pipIrr-platform/pipIrr-global/pom.xml
@@ -26,6 +26,7 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
+            <version>3.1.3</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.springframework.boot</groupId>
@@ -41,45 +42,98 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-devtools</artifactId>
+            <version>3.1.3</version>
             <scope>runtime</scope>
         </dependency>
         <!-- lombok -->
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
+            <version>1.18.28</version>
         </dependency>
         <dependency>
             <groupId>org.aspectj</groupId>
             <artifactId>aspectjweaver</artifactId>
+            <version>1.9.20</version>
         </dependency>
         <!--log4j2鏃ュ織-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-log4j2</artifactId>
+            <version>2.7.9</version>
         </dependency>
         <!-- 鐢ㄤ簬杈ㄨlog4j2.yml鏂囦欢 -->
         <dependency>
             <groupId>com.fasterxml.jackson.dataformat</groupId>
             <artifactId>jackson-dataformat-yaml</artifactId>
+            <version>2.15.2</version>
         </dependency>
         <!--mybatis-plus-spring-boot-->
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.3.2</version>
         </dependency>
         <!-- 闃块噷fastjson -->
         <dependency>
             <groupId>cglib</groupId>
             <artifactId>cglib</artifactId>
+            <version>3.3.0</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba.fastjson2</groupId>
             <artifactId>fastjson2</artifactId>
+            <version>2.0.40</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba.fastjson2</groupId>
             <artifactId>fastjson2-extension-spring6</artifactId>
+            <version>2.0.40</version>
         </dependency>
 
+        <!-- vo po杞崲 鍏ㄥ眬娌℃湁涓嬮潰渚濊禆锛屾墍浠ユ澶勫繀椤诲姞鐗堟湰鍙�-->
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct</artifactId>
+            <version>1.5.5.Final</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct-processor</artifactId>
+            <version>1.5.5.Final</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <!-- spring boot鎻愪緵鐨刴aven鎵撳寘鎻掍欢 -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                        </exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- maven閲屾墽琛屾祴璇曠敤渚嬬殑鎻掍欢 -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- 寮哄埗璁惧畾 java缂栬瘧鐗堟湰锛岃繍琛岀幆澧冪増鏈� -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java
new file mode 100644
index 0000000..9e342c8
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java
@@ -0,0 +1,51 @@
+package com.dy.pipIrrGlobal.daoBa;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoBa.BaDistrict;
+import com.dy.pipIrrGlobal.pojoBa.BaPrivilege;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface BaDistrictMapper extends BaseMapper<BaPrivilege> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(BaDistrict record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(BaDistrict record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    BaDistrict selectByPrimaryKey(Long id);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(BaDistrict record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(BaDistrict record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoDemo/DemoMpMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoDemo/DemoMpMapper.java
index c55b0da..c7bebbe 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoDemo/DemoMpMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoDemo/DemoMpMapper.java
@@ -4,6 +4,9 @@
 import com.dy.pipIrrGlobal.pojoDemo.DemoMp;
 import org.apache.ibatis.annotations.Mapper;
 
+/**
+ * 婕旂ず娌℃湁DemoMpMapper.xml瀹炵幇鏂瑰紡
+ */
 @Mapper
 public interface DemoMpMapper extends BaseMapper<DemoMp> {
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaDistrict.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaDistrict.java
new file mode 100644
index 0000000..ea2cc1d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaDistrict.java
@@ -0,0 +1,30 @@
+package com.dy.pipIrrGlobal.pojoBa;
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import com.dy.pipIrrGlobal.util.DistrictLevel;
+import lombok.*;
+
+@TableName(value="ba_district", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class BaDistrict implements BaseEntity {
+
+    public static final long serialVersionUID = 202311081046001L;
+
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    public Long id ;
+
+    public String name;
+
+    public DistrictLevel level;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/DistrictLevel.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/DistrictLevel.java
new file mode 100644
index 0000000..f841907
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/DistrictLevel.java
@@ -0,0 +1,36 @@
+package com.dy.pipIrrGlobal.util;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.dy.common.mybatis.envm.IEnum;
+
+/**
+ * 琛屾斂鍖哄垝绾у埆
+ * Provinces, cities, counties, towns, and village groups
+ */
+public enum DistrictLevel implements IEnum {
+
+    City((byte)1, "甯�"),
+    County((byte)2, "鍘�"),
+    Town((byte)3,  "闀�"),
+    Village((byte)4,  "鏉�"),
+    Group((byte)5,  "缁�");
+
+    @EnumValue
+    public Byte code ;
+    public String name ;
+
+    DistrictLevel(Byte code, String name){
+        this.code = code ;
+        this.name = name ;
+    }
+
+    @Override
+    public Byte getCode() {
+        return this.code ;
+    }
+
+    @Override
+    public String getName() {
+        return this.name ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/TypeConversionDistrict.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/TypeConversionDistrict.java
new file mode 100644
index 0000000..85b2944
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/TypeConversionDistrict.java
@@ -0,0 +1,38 @@
+package com.dy.pipIrrGlobal.util;
+
+import org.mapstruct.Named;
+import org.springframework.stereotype.Component;
+import java.util.Objects;
+
+/**
+ * Mapping閫氱敤杞崲
+ */
+@Component
+@SuppressWarnings("")
+public class TypeConversionDistrict {
+    /**
+     * @param obj 鍙傛暟
+     * @return 杞崲鎴愮殑瀵硅薄
+     */
+    @Named("districtLevelByteToObj")
+    public DistrictLevel converseDistrictLevel(Object obj) {
+        if (Objects.isNull(obj)) {
+            return null;
+        }else{
+            byte sourceObj = (obj instanceof Byte?(Byte)obj: DistrictLevel.City.code);
+            DistrictLevel rObj = null ;
+            if(sourceObj == DistrictLevel.City.code){
+                rObj = DistrictLevel.City ;
+            }else if(sourceObj == DistrictLevel.County.code){
+                rObj = DistrictLevel.County ;
+            }else if(sourceObj == DistrictLevel.Town.code){
+                rObj = DistrictLevel.Town ;
+            }else if(sourceObj == DistrictLevel.Village.code){
+                rObj = DistrictLevel.Village ;
+            }else if(sourceObj == DistrictLevel.Group.code){
+                rObj = DistrictLevel.Group ;
+            }
+            return rObj ;
+        }
+    }
+}
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 ac26181..1af34b2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -70,6 +70,9 @@
         default-enum-type-handler: com.dy.common.mybatis.envm.EnumCodeTypeHandler
 
 pipIrr:
+    global:
+        dev: true   #鏄惁寮�鍙戦樁娈碉紝true鎴杅alse
+        dsName: ym  #寮�鍙戦樁娈碉紝璁剧疆涓存椂鐨勬暟鎹簱鍚嶇О
     demo:
         webPort: 8000
         actutorPort: 9000
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml
new file mode 100644
index 0000000..e434616
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml
@@ -0,0 +1,81 @@
+<?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.dy.pipIrrGlobal.daoBa.BaDistrictMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoBa.BaDistrict">
+    <!--@mbg.generated-->
+    <!--@Table ba_district-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result property="level" column="level" typeHandler="com.dy.common.mybatis.envm.EnumCodeTypeHandler" javaType="com.dy.pipIrrGlobal.util.DistrictLevel"/>
+
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, `name`, `level`
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from ba_district
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from ba_district
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoBa.BaDistrict">
+    <!--@mbg.generated-->
+    insert into ba_district (id, `name`, `level`
+      )
+    values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{level,jdbcType=TINYINT}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoBa.BaDistrict">
+    <!--@mbg.generated-->
+    insert into ba_district
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="name != null">
+        `name`,
+      </if>
+      <if test="level != null">
+        `level`,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="name != null">
+        #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="level != null">
+        #{level,jdbcType=TINYINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoBa.BaDistrict">
+    <!--@mbg.generated-->
+    update ba_district
+    <set>
+      <if test="name != null">
+        `name` = #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="level != null">
+        `level` = #{level,jdbcType=TINYINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoBa.BaDistrict">
+    <!--@mbg.generated-->
+    update ba_district
+    set `name` = #{name,jdbcType=VARCHAR},
+      `level` = #{level,jdbcType=TINYINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
index af96f76..3eb39b3 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
@@ -12,7 +12,8 @@
         <result property="password" column="password"/>
         <result property="orgTag" column="orgTag"/>
         <result property="supperAdmin" column="supperAdmin"/>
-        <result property="disabled" column="deleted"/>
+        <result property="disabled" column="disabled" typeHandler="com.dy.common.mybatis.envm.EnumCodeTypeHandler" javaType="com.dy.common.mybatis.envm.Disabled"/>
+        <result property="deleted" column="deleted" typeHandler="com.dy.common.mybatis.envm.EnumCodeTypeHandler" javaType="com.dy.common.mybatis.envm.Deleted"/>
     </resultMap>
 
     <resultMap id="login" type="com.dy.pipIrrGlobal.pojoBa.BaUser">
@@ -25,7 +26,7 @@
 
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
-        id, name, phone, password, orgTag, supperAdmin, deleted
+        id, name, phone, password, orgTag, supperAdmin, disabled, deleted
     </sql>
 
     <sql id="Login_Column_List">
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebFilterConfiguration.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebFilterConfiguration.java
new file mode 100644
index 0000000..cab864c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebFilterConfiguration.java
@@ -0,0 +1,45 @@
+package com.dy.pipIrrBase.config;
+
+import com.dy.common.webFilter.DevOfDataSourceNameSetFilter;
+import com.dy.common.webFilter.UserTokenFilter;
+import jakarta.servlet.Filter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class WebFilterConfiguration {
+
+    @Value("${pipIrr.global.dev}")
+    public String isDevStage ;//鏄惁涓哄紑鍙戦樁娈�
+    @Value("${pipIrr.global.dsName}")
+    public String dsName ;//寮�鍙戦樁娈电殑鏁版嵁婧愬悕绉�
+
+    /**
+     * DevOfDataSourceNameSetFilter涓嶶serTokenFilter鍙兘涓�涓閰嶇疆涓婏紝
+     * 鎵�浠ヤ粬浠殑order閮芥槸1
+     */
+    private static final int order_UserTokenFilter = 1 ;//涓庝笅闈�
+    private static final int order_DevOfDataSourceNameSetFilter = 1 ;
+
+
+    @Bean
+    public FilterRegistrationBean<? extends Filter> RegFilter() {
+        FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();
+        if(this.isDevStage != null && !this.isDevStage.trim().equals("") && this.isDevStage.trim().equalsIgnoreCase("true")){
+            filterRegistrationBean.setFilter(new DevOfDataSourceNameSetFilter());
+            filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
+            filterRegistrationBean.addInitParameter("dataSourceName",dsName);//璁剧疆init鍙傛暟
+            filterRegistrationBean.setName("DevOfDataSourceNameSetFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
+            filterRegistrationBean.setOrder(order_DevOfDataSourceNameSetFilter);//鎵ц娆″簭
+        }else{
+            filterRegistrationBean.setFilter(new UserTokenFilter());
+            filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
+            filterRegistrationBean.setName("UserTokenFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
+            filterRegistrationBean.setOrder(order_UserTokenFilter);//鎵ц娆″簭
+        }
+        return filterRegistrationBean;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebListenerConfiguration.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebListenerConfiguration.java
new file mode 100644
index 0000000..cb50fca
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebListenerConfiguration.java
@@ -0,0 +1,49 @@
+package com.dy.pipIrrBase.config;
+
+import com.dy.common.webListener.GenerateIdSetSuffixListener;
+import jakarta.servlet.ServletContextListener;
+import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class WebListenerConfiguration {
+
+    /**
+     * 鍚姩椤哄簭
+     */
+    //private static final int order_config = 0 ;
+    private static final int order_idSetSuffix = 1 ;
+
+    /*
+    * 瑙f瀽鍚勭***.config閰嶇疆鐨凜onfigListener锛屾殏鏃朵笉閲囩敤姝ょ閰嶇疆鏂瑰紡
+    *
+    @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锛岃listener鍦ㄧ郴缁熷惎鍔ㄦ椂锛屾牴鎹厤缃缃甀D浜х敓鍣ㄧ殑鍚庣紑
+     * @return 娉ㄥ唽Bean
+     */
+    @Bean
+    public ServletListenerRegistrationBean<? extends ServletContextListener> reqSsoListener() {
+        ServletListenerRegistrationBean<GenerateIdSetSuffixListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
+        listenerRegistrationBean.setListener(new GenerateIdSetSuffixListener());
+        listenerRegistrationBean.setOrder(order_idSetSuffix);
+        return listenerRegistrationBean;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java
new file mode 100644
index 0000000..a274591
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java
@@ -0,0 +1,98 @@
+package com.dy.pipIrrBase.district;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoBa.BaDistrict;
+import com.dy.pipIrrGlobal.util.DistrictLevel;
+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.validation.Valid;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+
+@Slf4j
+@Tag(name = "琛屾斂鍖哄垝绠$悊", description = "琛屾斂鍖哄垝澧炲垹鏀规煡绛夋搷浣�")
+@RestController
+@RequestMapping(path="district")
+@SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked")
+public class DistrictCtrl {
+
+    private DistrictSv sv ;
+
+    @Autowired
+    private void setSv(DistrictSv sv){
+        this.sv = sv ;
+    }
+
+    /**
+     * 瀹㈡埛绔姹傚緱鍒版墍鏈夎鏀垮尯鍒掔骇鍒暟鎹�
+     * @return 鎵�鏈夎鏀垮尯鍒掔骇鍒暟鎹�
+     */
+    @Operation(summary = "琛屾斂鍖哄垝绾у埆", description = "杩斿洖鎵�鏈夎鏀垮尯鍒掔骇鍒暟鎹�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖鎵�鏈夎鏀垮尯鍒掔骇鍒暟鎹紙BaseResponse.content:[ { \"code\":1, \"name\":\"甯俓" }, { \"code\":2, \"name\":\"鍘縗" }]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = DistrictLevel.class))}
+            )
+    })
+    @GetMapping(path = "allLevel")
+    public BaseResponse<List<DistrictLevel>> allDistrictLevels(){
+        List<DistrictLevel> list = Arrays.asList(DistrictLevel.City, DistrictLevel.County, DistrictLevel.Town, DistrictLevel.Village, DistrictLevel.Group) ;
+        return BaseResponseUtils.buildSuccess(list);
+    }
+
+
+    /**
+     * 淇濆瓨琛屾斂鍖�
+     * @param vo 淇濆瓨琛屾斂鍖篺orm琛ㄥ崟瀵硅薄
+     * @return 鏄惁鎴愬姛
+     */
+    @Operation(summary = "淇濆瓨琛屾斂鍖�", description = "鎻愪氦琛屾斂鍖烘暟鎹紙form琛ㄥ崟锛夛紝杩涜淇濆瓨")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "淇濆瓨琛屾斂鍖鸿繑鍥烇細true锛氭垚鍔燂紝false锛氬け璐ワ紙鏁版嵁鍩虹被鐨刢ontent锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @PostMapping(path = "save", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    @SsoAop("-1")//@SsoAop(power = "-1")
+    public BaseResponse<Boolean> save(@Parameter(description = "form琛ㄥ崟鏁版嵁", required = true) @Valid DistrictVo vo, @Parameter(hidden = true) BindingResult bindingResult){
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+        BaDistrict po = DistrictVoMapper.INSTANCT.convert(vo);
+        int count;
+        try {
+            count = this.sv.save(po);
+        } catch (Exception e) {
+            log.error("淇濆瓨琛屾斂鍖哄紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+        if(count <= 0){
+            return BaseResponseUtils.buildSuccess(true) ;
+        }else{
+            return BaseResponseUtils.buildSuccess(true) ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java
new file mode 100644
index 0000000..9faba57
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java
@@ -0,0 +1,24 @@
+package com.dy.pipIrrBase.district;
+
+import com.dy.pipIrrGlobal.daoBa.BaDistrictMapper;
+import com.dy.pipIrrGlobal.pojoBa.BaDistrict;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class DistrictSv {
+
+    private BaDistrictMapper baDistrictMapper ;
+
+    @Autowired
+    private void setBaDistrictMapper(BaDistrictMapper baDistrictMapper){
+        this.baDistrictMapper = baDistrictMapper ;
+    }
+
+
+    public int save(BaDistrict po){
+        return this.baDistrictMapper.insert(po) ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVo.java
new file mode 100644
index 0000000..91d043c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVo.java
@@ -0,0 +1,29 @@
+package com.dy.pipIrrBase.district;
+
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import lombok.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotEmpty;
+import org.hibernate.validator.constraints.Length;
+
+@Data
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Schema(name = "琛屾斂鍖哄垝鍊煎璞�")
+public class DistrictVo {
+    @Schema(description = "琛屾斂鍖哄悕绉�", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "琛屾斂鍖哄悕绉颁笉鑳戒负绌�") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    @Length(message = "琛屾斂鍖哄悕绉板皬浜巤max}瀛�", min = 1, max = 25)
+    public String name ;
+
+    @Schema(description = "琛屾斂鍖虹骇鍒�", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "琛屾斂鍖虹骇鍒笉鑳戒负绌�") //涓嶈兘涓虹┖涔熶笉鑳戒负null
+    @Max(message = "琛屾斂鍖虹骇鍒笉姝g‘", value = 10)
+    @Min(message = "琛屾斂鍖虹骇鍒笉姝g‘",value = 0)
+    public Byte level ;
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVoMapper.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVoMapper.java
new file mode 100644
index 0000000..3b79344
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVoMapper.java
@@ -0,0 +1,21 @@
+package com.dy.pipIrrBase.district;
+
+import com.dy.pipIrrGlobal.pojoBa.BaDistrict;
+import com.dy.pipIrrGlobal.util.TypeConversionDistrict;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(uses = {TypeConversionDistrict.class})
+public interface DistrictVoMapper {
+    DistrictVoMapper INSTANCT = Mappers.getMapper(DistrictVoMapper.class);
+    /**
+     * vo杞琾o
+     * @param vo 鍊煎璞�
+     * @return po
+     */
+    @Mapping(target = "id", ignore = true)
+    @Mapping(target = "name", source = "name")
+    @Mapping(target = "level", source = "level", qualifiedByName = "districtLevelByteToObj")
+    BaDistrict convert(DistrictVo vo);
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/DemoSetDataSourceFilter.java b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/DemoSetDataSourceFilter.java
deleted file mode 100644
index 1456c44..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/DemoSetDataSourceFilter.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.dy.pipIrrDemo.config;
-
-import com.dy.common.multiDataSource.DataSourceContext;
-import jakarta.servlet.*;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.IOException;
-
-@Slf4j
-public class DemoSetDataSourceFilter implements Filter {
-    @Override
-    public void init(FilterConfig filterConfig) throws ServletException {
-        log.info("DemoSetDataSourceFilter init: name:" + filterConfig.getInitParameter("name"));
-    }
-
-    @Override
-    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
-        log.info("in DemoSetDataSourceFilter");
-
-        DataSourceContext.set("ym");
-
-        filterChain.doFilter(servletRequest, servletResponse);
-
-    }
-
-    @Override
-    public void destroy() {
-        System.out.println("DemoSetDataSourceFilter destroy");
-    }
-
-}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebFilterConfiguration.java b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebFilterConfiguration.java
index def798f..c4f1e2e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebFilterConfiguration.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebFilterConfiguration.java
@@ -1,31 +1,44 @@
 package com.dy.pipIrrDemo.config;
 
+import com.dy.common.webFilter.DevOfDataSourceNameSetFilter;
+import com.dy.common.webFilter.UserTokenFilter;
 import jakarta.servlet.Filter;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 @Configuration
-@SuppressWarnings("unchecked")//涓嶅姞姝ゆ敞瑙o紝缂栬瘧鏃惰鍛婏細鈥滀娇鐢ㄤ簡鏈粡妫�鏌ユ垨涓嶅畨鍏ㄧ殑鎿嶄綔銆傗��
 public class WebFilterConfiguration {
 
-    private static final int orger_demoSetDataSourceFilter = 1 ;
+    @Value("${pipIrr.global.dev}")
+    public String isDevStage ;//鏄惁涓哄紑鍙戦樁娈�
+    @Value("${pipIrr.global.dsName}")
+    public String dsName ;//寮�鍙戦樁娈电殑鏁版嵁婧愬悕绉�
+
+    /**
+     * DevOfDataSourceNameSetFilter涓嶶serTokenFilter鍙兘涓�涓閰嶇疆涓婏紝
+     * 鎵�浠ヤ粬浠殑order閮芥槸1
+     */
+    private static final int order_UserTokenFilter = 1 ;//涓庝笅闈�
+    private static final int order_DevOfDataSourceNameSetFilter = 1 ;
+
 
     @Bean
-    public DemoSetDataSourceFilter getDemoSetDataSourceFilter(){
-        return new DemoSetDataSourceFilter() ;
-    }
-
-    @Bean
-    public FilterRegistrationBean<? extends Filter> reqDemoSetDataSourceFilter(DemoSetDataSourceFilter filter) {
-        FilterRegistrationBean<DemoSetDataSourceFilter> filterRegistrationBean = new FilterRegistrationBean();
-
-        filterRegistrationBean.setFilter(filter);
-        filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
-        filterRegistrationBean.addInitParameter("name","I am DemoSetDataSourceFilter");//璁剧疆init鍙傛暟
-        filterRegistrationBean.setName("demoSetDataSourceFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
-        filterRegistrationBean.setOrder(orger_demoSetDataSourceFilter);//鎵ц娆″簭
-
+    public FilterRegistrationBean<? extends Filter> RegFilter() {
+        FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();
+        if(this.isDevStage != null && !this.isDevStage.trim().equals("") && this.isDevStage.trim().equalsIgnoreCase("true")){
+            filterRegistrationBean.setFilter(new DevOfDataSourceNameSetFilter());
+            filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
+            filterRegistrationBean.addInitParameter("dataSourceName",dsName);//璁剧疆init鍙傛暟
+            filterRegistrationBean.setName("DevOfDataSourceNameSetFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
+            filterRegistrationBean.setOrder(order_DevOfDataSourceNameSetFilter);//鎵ц娆″簭
+        }else{
+            filterRegistrationBean.setFilter(new UserTokenFilter());
+            filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
+            filterRegistrationBean.setName("UserTokenFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
+            filterRegistrationBean.setOrder(order_UserTokenFilter);//鎵ц娆″簭
+        }
         return filterRegistrationBean;
     }
 
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebListenerConfiguration.java b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebListenerConfiguration.java
index 753e643..d0dd81a 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebListenerConfiguration.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebListenerConfiguration.java
@@ -1,6 +1,5 @@
 package com.dy.pipIrrDemo.config;
 
-import com.dy.common.webListener.ConfigListener;
 import com.dy.common.webListener.GenerateIdSetSuffixListener;
 import jakarta.servlet.ServletContextListener;
 import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
@@ -8,13 +7,13 @@
 import org.springframework.context.annotation.Configuration;
 
 @Configuration
-@SuppressWarnings("unchecked")//涓嶅姞缂栬緫鏃惰鍛婏細鈥滀娇鐢ㄤ簡鏈粡妫�鏌ユ垨涓嶅畨鍏ㄧ殑鎿嶄綔銆傗��
+//@SuppressWarnings("unchecked")//涓嶅姞缂栬緫鏃惰鍛婏細鈥滀娇鐢ㄤ簡鏈粡妫�鏌ユ垨涓嶅畨鍏ㄧ殑鎿嶄綔銆傗��
 public class WebListenerConfiguration {
 
     /**
      * 鍚姩椤哄簭
      */
-    private static final int order_config = 1 ;
+    //private static final int order_config = 1 ;
     private static final int order_idSetSuffix = 2 ;
 
 //    @Bean
@@ -42,8 +41,7 @@
     @Bean
     public ServletListenerRegistrationBean<? extends ServletContextListener> reqSsoListener() {
         ServletListenerRegistrationBean<GenerateIdSetSuffixListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
-        GenerateIdSetSuffixListener listener = new GenerateIdSetSuffixListener();
-        listenerRegistrationBean.setListener(listener);
+        listenerRegistrationBean.setListener(new GenerateIdSetSuffixListener());
         listenerRegistrationBean.setOrder(order_idSetSuffix);
         return listenerRegistrationBean;
     }
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 a2ba7a3..7e250e8 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
@@ -13,7 +13,7 @@
         context-path: /demo #web璁块棶涓婁笅鏂囪矾寰�
         context-parameters:
             #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
-            idSuffix: 1
+            idSuffix: 99
             #ConfigListener涓簲鐢�
             #configFileNames: config-global.xml,config-demo.xml
 
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/test/java/com/dy/pipIrrDemo/mp/MpTest2.java b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/test/java/com/dy/pipIrrDemo/mp/MpTest2.java
index 05a5b86..0136946 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/test/java/com/dy/pipIrrDemo/mp/MpTest2.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/test/java/com/dy/pipIrrDemo/mp/MpTest2.java
@@ -1,7 +1,6 @@
 package com.dy.pipIrrDemo.mp;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.dy.common.multiDataSource.DataSourceContext;
 import com.dy.pipIrrGlobal.daoDemo.DemoMpMapper;
 import com.dy.pipIrrGlobal.pojoDemo.DemoMp;
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
index eab3c3a..5c74c10 100644
--- 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
@@ -13,6 +13,6 @@
         context-path: /gis #web璁块棶涓婁笅鏂囪矾寰�
         context-parameters:
             #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
-            idSuffix: 1
+            idSuffix: 4
             #ConfigListener涓簲鐢�
             #configFileNames: config-global.xml,config-demo.xml
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 895fc77..08ac119 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
@@ -13,6 +13,6 @@
         context-path: /remote #web璁块棶涓婁笅鏂囪矾寰�
         context-parameters:
             #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
-            idSuffix: 1
+            idSuffix: 2
             #ConfigListener涓簲鐢�
             #configFileNames: config-global.xml,config-demo.xml
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
index aead030..6ca0341 100644
--- 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
@@ -205,12 +205,17 @@
             if(userPo.supperAdmin != null && userPo.supperAdmin == 1){
                 vo.hasPower = true ;
             }else{
-                if(userPo.privileges != null && userPo.privileges.size() > 0){
-                    vo.hasPower = this.hasOnePrivilege(privilege, userPo) ;
-                    if(!vo.hasPower){
-                        vo.hasPower = this.hasAllPrivilege(allPrivilege, userPo) ;
+                if(privilege.equals("-1")){
+                    //鏃犻渶鏉冮檺楠岃瘉
+                    vo.hasPower = true ;
+                }else{
+                    if(userPo.privileges != null && userPo.privileges.size() > 0){
+                        vo.hasPower = this.hasOnePrivilege(privilege, userPo) ;
                         if(!vo.hasPower){
-                            vo.hasPower = this.hasAnyPrivilege(anyPrivilege, userPo) ;
+                            vo.hasPower = this.hasAllPrivilege(allPrivilege, userPo) ;
+                            if(!vo.hasPower){
+                                vo.hasPower = this.hasAnyPrivilege(anyPrivilege, userPo) ;
+                            }
                         }
                     }
                 }
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
index 71047d4..2d5cddc 100644
--- 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
@@ -13,6 +13,6 @@
         context-path: /sso #web璁块棶涓婁笅鏂囪矾寰�
         context-parameters:
             #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
-            IdSuffix: 0
+            IdSuffix: 3
             #ConfigListener涓簲鐢�
             configFileNames: config-global.xml,config-sso.xml
diff --git a/pipIrr-platform/pipIrr-web/pom.xml b/pipIrr-platform/pipIrr-web/pom.xml
index 865fb08..114f342 100644
--- a/pipIrr-platform/pipIrr-web/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pom.xml
@@ -105,8 +105,8 @@
 
         <!--mysql椹卞姩-->
         <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
             <version>8.0.33</version>
         </dependency>
         <!--druid-spring-boot杩炴帴姹�-->
@@ -138,7 +138,7 @@
             <version>2.0.40</version>
         </dependency>
 
-        <!-- vo po杞崲 -->
+        <!-- vo po杞崲  鍏ㄥ眬娌℃湁涓嬮潰渚濊禆锛屾墍浠ユ澶勫繀椤诲姞鐗堟湰鍙�-->
         <dependency>
             <groupId>org.mapstruct</groupId>
             <artifactId>mapstruct</artifactId>
diff --git a/pipIrr-platform/pom.xml b/pipIrr-platform/pom.xml
index ea0ae6b..3f80fb0 100644
--- a/pipIrr-platform/pom.xml
+++ b/pipIrr-platform/pom.xml
@@ -152,8 +152,8 @@
 
             <!--mysql椹卞姩-->
             <dependency>
-                <groupId>mysql</groupId>
-                <artifactId>mysql-connector-java</artifactId>
+                <groupId>com.mysql</groupId>
+                <artifactId>mysql-connector-j</artifactId>
                 <!--瀵瑰簲鑷繁鐢佃剳瀹夎鐨刴ysql鐗堟湰-->
                 <version>8.0.33</version>
                 <type>pom</type>
@@ -248,6 +248,7 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+
         </dependencies>
     </dependencyManagement>
 
diff --git "a/pipIrr-platform/\346\226\207\346\241\243/pipIrr-web\347\232\204pom/pom\050\344\270\215\345\270\246version\051.xml" "b/pipIrr-platform/\346\226\207\346\241\243/pipIrr-web\347\232\204pom/pom\050\344\270\215\345\270\246version\051.xml"
index e2bd74f..9fa5067 100644
--- "a/pipIrr-platform/\346\226\207\346\241\243/pipIrr-web\347\232\204pom/pom\050\344\270\215\345\270\246version\051.xml"
+++ "b/pipIrr-platform/\346\226\207\346\241\243/pipIrr-web\347\232\204pom/pom\050\344\270\215\345\270\246version\051.xml"
@@ -99,10 +99,7 @@
 
 
         <!--mysql椹卞姩-->
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-        </dependency>
+
         <!--druid-spring-boot杩炴帴姹�-->
         <dependency>
             <groupId>com.alibaba</groupId>
diff --git "a/pipIrr-platform/\346\226\207\346\241\243/\345\234\250\347\272\277\351\234\200\346\261\202\346\226\207\344\273\266\350\256\277\351\227\256\345\234\260\345\235\200.txt" "b/pipIrr-platform/\346\226\207\346\241\243/\345\234\250\347\272\277\351\234\200\346\261\202\346\226\207\344\273\266\350\256\277\351\227\256\345\234\260\345\235\200.txt"
new file mode 100644
index 0000000..61ce6a3
--- /dev/null
+++ "b/pipIrr-platform/\346\226\207\346\241\243/\345\234\250\347\272\277\351\234\200\346\261\202\346\226\207\344\273\266\350\256\277\351\227\256\345\234\260\345\235\200.txt"
@@ -0,0 +1 @@
+https://docs.qq.com/doc/DRHBkeVlCekp1d1RU
\ No newline at end of file

--
Gitblit v1.8.0