1、增加是否为开发阶段的配置,基于此配置,进行判断,若开发阶段设置临时数据源名称,及不进行登录及权限验证。
2、分配各个子系统id生成器的后缀
1 文件已重命名
23个文件已修改
13个文件已添加
1个文件已删除
827 ■■■■ 已修改文件
pipIrr-platform/pipIrr-common/pipIrr-common.iml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/pom.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAop.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoRestTemplateConfiguration.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/multiDataSource/DataSourceAspect.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/DevOfDataSourceNameSetFilter.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webListener/GenerateIdSetSuffixListener.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/pipIrr-global.iml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/pom.xml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoDemo/DemoMpMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaDistrict.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/DistrictLevel.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/TypeConversionDistrict.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebFilterConfiguration.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebListenerConfiguration.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVo.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVoMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/DemoSetDataSourceFilter.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebFilterConfiguration.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/WebListenerConfiguration.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/test/java/com/dy/pipIrrDemo/mp/MpTest2.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-gis/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pom.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/文档/pipIrr-web的pom/pom(不带version).xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/文档/在线需求文件访问地址.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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" />
pipIrr-platform/pipIrr-common/pom.xml
@@ -73,10 +73,10 @@
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <!--对应自己电脑安装的mysql版本-->
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        <!--druid-spring-boot连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
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,拥有全部权限才可 , å¦‚果其有值,则不在判断以下变量取值
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("后端系统出错,check方法返回null") ;
                    }
                }else{
                    return rObj ;
                }
            }else{
                return BaseResponseUtils.buildError("后端系统出错,check方法返回null") ;
                //已经进入注解处理了,还得不到注解,这种情况是不可能的。
                return BaseResponseUtils.buildError("后端系统出错,DyAop注解为null") ;
            }
        }else{
            //已经进入注解处理了,还得不到注解,这种情况是不可能的。
            return BaseResponseUtils.buildError("后端系统出错,DyAop注解为null") ;
        }
    }
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;
/**
 * ä¸ºSsoAspect访问单点登录系统提供 RestTemplate
 */
@Configuration
public class SsoRestTemplateConfiguration {
    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        return builder.build();
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
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;
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/DevOfDataSourceNameSetFilter.java
New file
@@ -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() {
    }
}
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokenFilter.java
File was renamed from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webFilter/UserTokerFilter.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");
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/webListener/GenerateIdSetSuffixListener.java
@@ -28,7 +28,6 @@
    /**
     * è§£æžç³»ç»Ÿé…ç½®
     * @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) {
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>
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提供的maven打包插件 -->
                <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>
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaDistrictMapper.java
New file
@@ -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);
}
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> {
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaDistrict.java
New file
@@ -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;
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/DistrictLevel.java
New file
@@ -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 ;
    }
}
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/util/TypeConversionDistrict.java
New file
@@ -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 ;
        }
    }
}
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或false
        dsName: ym  #开发阶段,设置临时的数据库名称
    demo:
        webPort: 8000
        actutorPort: 9000
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaDistrictMapper.xml
New file
@@ -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>
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">
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebFilterConfiguration.java
New file
@@ -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与UserTokenFilter只能一个被配置上,
     * æ‰€ä»¥ä»–们的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;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/config/WebListenerConfiguration.java
New file
@@ -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 ;
    /*
    * è§£æžå„种***.config配置的ConfigListener,暂时不采用此种配置方式
    *
    @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在系统启动时,根据配置设置ID产生器的后缀
     * @return æ³¨å†ŒBean
     */
    @Bean
    public ServletListenerRegistrationBean<? extends ServletContextListener> reqSsoListener() {
        ServletListenerRegistrationBean<GenerateIdSetSuffixListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
        listenerRegistrationBean.setListener(new GenerateIdSetSuffixListener());
        listenerRegistrationBean.setOrder(order_idSetSuffix);
        return listenerRegistrationBean;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictCtrl.java
New file
@@ -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版本越高,对泛型约束越严,所以配置SuppressWarnings("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 ä¿å­˜è¡Œæ”¿åŒºform表单对象
     * @return æ˜¯å¦æˆåŠŸ
     */
    @Operation(summary = "保存行政区", description = "提交行政区数据(form表单),进行保存")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "保存行政区返回:true:成功,false:失败(数据基类的content)",
                    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) ;
        }
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictSv.java
New file
@@ -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) ;
    }
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVo.java
New file
@@ -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 = "行政区级别不正确", value = 10)
    @Min(message = "行政区级别不正确",value = 0)
    public Byte level ;
}
pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/district/DistrictVoMapper.java
New file
@@ -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转po
     * @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);
}
pipIrr-platform/pipIrr-web/pipIrr-web-demo/src/main/java/com/dy/pipIrrDemo/config/DemoSetDataSourceFilter.java
File was deleted
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")//不加此注解,编译时警告:“使用了未经检查或不安全的操作。”
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与UserTokenFilter只能一个被配置上,
     * æ‰€ä»¥ä»–们的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;
    }
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;
    }
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
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;
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
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
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) ;
                            }
                        }
                    }
                }
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
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>
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>
                <!--对应自己电脑安装的mysql版本-->
                <version>8.0.33</version>
                <type>pom</type>
@@ -248,6 +248,7 @@
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
pipIrr-platform/Îĵµ/pipIrr-webµÄpom/pom(²»´øversion).xml
@@ -99,10 +99,7 @@
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--druid-spring-boot连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
pipIrr-platform/Îĵµ/ÔÚÏßÐèÇóÎļþ·ÃÎʵØÖ·.txt
New file
@@ -0,0 +1 @@
https://docs.qq.com/doc/DRHBkeVlCekp1d1RU