mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-11-03 22:57:14 +08:00 
			
		
		
		
	chore: continew-starter 2.5.2 => 2.6.0
修复更新加密失效 修复特殊校验异常不打印堆栈 其他优化 Closes #84
This commit is contained in:
		
							
								
								
									
										24
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								README.md
									
									
									
									
									
								
							@@ -13,7 +13,7 @@
 | 
				
			|||||||
<img src="https://sonarcloud.io/api/project_badges/measure?project=Charles7c_continew-admin&metric=alert_status" alt="Sonar Status" />
 | 
					<img src="https://sonarcloud.io/api/project_badges/measure?project=Charles7c_continew-admin&metric=alert_status" alt="Sonar Status" />
 | 
				
			||||||
</a>
 | 
					</a>
 | 
				
			||||||
<a href="https://github.com/continew-org/continew-starter" target="_blank">
 | 
					<a href="https://github.com/continew-org/continew-starter" target="_blank">
 | 
				
			||||||
<img src="https://img.shields.io/badge/ContiNew Starter-2.5.2-%236CB52D.svg" alt="ContiNew Starter" />
 | 
					<img src="https://img.shields.io/badge/ContiNew Starter-2.6.0-%236CB52D.svg" alt="ContiNew Starter" />
 | 
				
			||||||
</a>
 | 
					</a>
 | 
				
			||||||
<a href="https://spring.io/projects/spring-boot" target="_blank">
 | 
					<a href="https://spring.io/projects/spring-boot" target="_blank">
 | 
				
			||||||
<img src="https://img.shields.io/badge/Spring Boot-3.2.7-%236CB52D.svg?logo=Spring-Boot" alt="Spring Boot" />
 | 
					<img src="https://img.shields.io/badge/Spring Boot-3.2.7-%236CB52D.svg?logo=Spring-Boot" alt="Spring Boot" />
 | 
				
			||||||
@@ -210,16 +210,16 @@ public class DeptController extends BaseController<DeptService, DeptResp, DeptDe
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## 核心技术栈
 | 
					## 核心技术栈
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 名称                                                         | 版本           | 简介                                                         |
 | 
					| 名称                                                         | 版本         | 简介                                                         |
 | 
				
			||||||
| :----------------------------------------------------------- |:-------------| :----------------------------------------------------------- |
 | 
					| :----------------------------------------------------------- | :----------- | :----------------------------------------------------------- |
 | 
				
			||||||
| <a href="https://cn.vuejs.org/" target="_blank">Vue</a>      | 3.4.21       | 渐进式 JavaScript 框架,易学易用,性能出色,适用场景丰富的 Web 前端框架。 |
 | 
					| <a href="https://cn.vuejs.org/" target="_blank">Vue</a>      | 3.4.21       | 渐进式 JavaScript 框架,易学易用,性能出色,适用场景丰富的 Web 前端框架。 |
 | 
				
			||||||
| <a href="https://arco.design/vue/docs/start" target="_blank">Arco Design</a> | 2.55.0       | 字节跳动推出的前端 UI 框架,年轻化的色彩和组件设计。         |
 | 
					| <a href="https://arco.design/vue/docs/start" target="_blank">Arco Design</a> | 2.56.0       | 字节跳动推出的前端 UI 框架,年轻化的色彩和组件设计。         |
 | 
				
			||||||
| <a href="https://www.typescriptlang.org/zh/" target="_blank">TypeScript</a> | 5.0.4        | TypeScript 是微软开发的一个开源的编程语言,通过在 JavaScript 的基础上添加静态类型定义构建而成。 |
 | 
					| <a href="https://www.typescriptlang.org/zh/" target="_blank">TypeScript</a> | 5.0.4        | TypeScript 是微软开发的一个开源的编程语言,通过在 JavaScript 的基础上添加静态类型定义构建而成。 |
 | 
				
			||||||
| <a href="https://cn.vitejs.dev/" target="_blank">Vite</a>    | 5.1.5        | 下一代的前端工具链,为开发提供极速响应。                     |
 | 
					| <a href="https://cn.vitejs.dev/" target="_blank">Vite</a>    | 5.1.5        | 下一代的前端工具链,为开发提供极速响应。                     |
 | 
				
			||||||
| [ContiNew Starter](https://github.com/continew-org/continew-starter) | 2.5.2        | ContiNew Starter 包含了一系列经过企业实践优化的依赖包(如 MyBatis-Plus、SaToken),可轻松集成到应用中,为开发人员减少手动引入依赖及配置的麻烦,为 Spring Boot Web 项目的灵活快速构建提供支持。 |
 | 
					| [ContiNew Starter](https://github.com/continew-org/continew-starter) | 2.6.0        | ContiNew Starter 包含了一系列经过企业实践优化的依赖包(如 MyBatis-Plus、SaToken),可轻松集成到应用中,为开发人员减少手动引入依赖及配置的麻烦,为 Spring Boot Web 项目的灵活快速构建提供支持。 |
 | 
				
			||||||
| <a href="https://spring.io/projects/spring-boot" target="_blank">Spring Boot</a> | 3.2.7        | 简化 Spring 应用的初始搭建和开发过程,基于“约定优于配置”的理念,使开发人员不再需要定义样板化的配置。(Spring Boot 3.0 开始,要求 Java 17 作为最低版本) |
 | 
					| <a href="https://spring.io/projects/spring-boot" target="_blank">Spring Boot</a> | 3.2.7        | 简化 Spring 应用的初始搭建和开发过程,基于“约定优于配置”的理念,使开发人员不再需要定义样板化的配置。(Spring Boot 3.0 开始,要求 Java 17 作为最低版本) |
 | 
				
			||||||
| <a href="https://undertow.io/" target="_blank">Undertow</a>  | 2.3.13.Final | 采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制。 |
 | 
					| <a href="https://undertow.io/" target="_blank">Undertow</a>  | 2.3.13.Final | 采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制。 |
 | 
				
			||||||
| <a href="https://sa-token.dev33.cn/" target="_blank">Sa-Token + JWT</a> | 1.38.0       | 轻量级 Java 权限认证框架,让鉴权变得简单、优雅。             |
 | 
					| <a href="https://sa-token.dev33.cn/" target="_blank">Sa-Token + JWT</a> | 1.39.0       | 轻量级 Java 权限认证框架,让鉴权变得简单、优雅。             |
 | 
				
			||||||
| <a href="https://baomidou.com/" target="_blank">MyBatis Plus</a> | 3.5.7        | MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。 |
 | 
					| <a href="https://baomidou.com/" target="_blank">MyBatis Plus</a> | 3.5.7        | MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。 |
 | 
				
			||||||
| <a href="https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611" target="_blank">dynamic-datasource-spring-boot-starter</a> | 4.3.1        | 基于 Spring Boot 的快速集成多数据源的启动器。                |
 | 
					| <a href="https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611" target="_blank">dynamic-datasource-spring-boot-starter</a> | 4.3.1        | 基于 Spring Boot 的快速集成多数据源的启动器。                |
 | 
				
			||||||
| Hikari                                                       | 5.0.1        | JDBC 连接池,号称 “史上最快连接池”,SpringBoot 在 2.0 之后,采用的默认数据库连接池就是 Hikari。 |
 | 
					| Hikari                                                       | 5.0.1        | JDBC 连接池,号称 “史上最快连接池”,SpringBoot 在 2.0 之后,采用的默认数据库连接池就是 Hikari。 |
 | 
				
			||||||
@@ -228,18 +228,20 @@ public class DeptController extends BaseController<DeptService, DeptResp, DeptDe
 | 
				
			|||||||
| <a href="https://github.com/p6spy/p6spy" target="_blank">P6Spy</a> | 3.9.1        | SQL 性能分析组件。                                           |
 | 
					| <a href="https://github.com/p6spy/p6spy" target="_blank">P6Spy</a> | 3.9.1        | SQL 性能分析组件。                                           |
 | 
				
			||||||
| <a href="https://github.com/liquibase/liquibase" target="_blank">Liquibase</a> | 4.24.0       | 用于管理数据库版本,跟踪、管理和应用数据库变化。             |
 | 
					| <a href="https://github.com/liquibase/liquibase" target="_blank">Liquibase</a> | 4.24.0       | 用于管理数据库版本,跟踪、管理和应用数据库变化。             |
 | 
				
			||||||
| [JetCache](https://github.com/alibaba/jetcache/blob/master/docs/CN/Readme.md) | 2.7.6        | 一个基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用。提供了比 SpringCache 更加强大的注解,可以原生的支持 TTL、两级缓存、分布式自动刷新,还提供了 Cache 接口用于手工缓存操作。 |
 | 
					| [JetCache](https://github.com/alibaba/jetcache/blob/master/docs/CN/Readme.md) | 2.7.6        | 一个基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用。提供了比 SpringCache 更加强大的注解,可以原生的支持 TTL、两级缓存、分布式自动刷新,还提供了 Cache 接口用于手工缓存操作。 |
 | 
				
			||||||
| <a href="https://github.com/redisson/redisson/wiki/Redisson%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D" target="_blank">Redisson</a> | 3.32.0       | 不仅仅是一个 Redis Java 客户端,Redisson 充分的利用了 Redis 键值数据库提供的一系列优势,为使用者提供了一系列具有分布式特性的常用工具:分布式锁、限流器等。 |
 | 
					| <a href="https://github.com/redisson/redisson/wiki/Redisson%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D" target="_blank">Redisson</a> | 3.35.0       | 不仅仅是一个 Redis Java 客户端,Redisson 充分的利用了 Redis 键值数据库提供的一系列优势,为使用者提供了一系列具有分布式特性的常用工具:分布式锁、限流器等。 |
 | 
				
			||||||
| <a href="https://redis.io/" target="_blank">Redis</a>        | 7.2.3        | 高性能的 key-value 数据库。                                  |
 | 
					| <a href="https://redis.io/" target="_blank">Redis</a>        | 7.2.3        | 高性能的 key-value 数据库。                                  |
 | 
				
			||||||
| [Snail Job](https://snailjob.opensnail.com/)                 | 1.1.0        | 灵活,可靠和快速的分布式任务重试和分布式任务调度平台。       |
 | 
					| [Snail Job](https://snailjob.opensnail.com/)                 | 1.1.2        | 灵活,可靠和快速的分布式任务重试和分布式任务调度平台。       |
 | 
				
			||||||
| [X File Storage](https://x-file-storage.xuyanwu.cn/#/)       | 2.2.0        | 一行代码将文件存储到本地、FTP、SFTP、WebDAV、阿里云 OSS、华为云 OBS...等其它兼容 S3 协议的存储平台。 |
 | 
					| [X File Storage](https://x-file-storage.xuyanwu.cn/#/)       | 2.2.1        | 一行代码将文件存储到本地、FTP、SFTP、WebDAV、阿里云 OSS、华为云 OBS...等其它兼容 S3 协议的存储平台。 |
 | 
				
			||||||
| <a href="https://sms4j.com/" target="_blank">SMS4J</a>       | 3.2.1        | 短信聚合框架,轻松集成多家短信服务,解决接入多个短信 SDK 的繁琐流程。 |
 | 
					| <a href="https://sms4j.com/" target="_blank">SMS4J</a>       | 3.3.2        | 短信聚合框架,轻松集成多家短信服务,解决接入多个短信 SDK 的繁琐流程。 |
 | 
				
			||||||
| <a href="https://justauth.cn/" target="_blank">Just Auth</a> | 1.16.6       | 开箱即用的整合第三方登录的开源组件,脱离繁琐的第三方登录 SDK,让登录变得 So easy! |
 | 
					| <a href="https://justauth.cn/" target="_blank">Just Auth</a> | 1.16.6       | 开箱即用的整合第三方登录的开源组件,脱离繁琐的第三方登录 SDK,让登录变得 So easy! |
 | 
				
			||||||
| <a href="https://easyexcel.opensource.alibaba.com/" target="_blank">Easy Excel</a> | 4.0.1        | 一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。 |
 | 
					| <a href="https://easyexcel.opensource.alibaba.com/" target="_blank">Easy Excel</a> | 4.0.1        | 一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。 |
 | 
				
			||||||
| [AJ-Captcha](https://ajcaptcha.beliefteam.cn/captcha-doc/)   | 1.3.0        | Java 行为验证码,包含滑动拼图、文字点选两种方式,UI支持弹出和嵌入两种方式。 |
 | 
					| [AJ-Captcha](https://ajcaptcha.beliefteam.cn/captcha-doc/)   | 1.3.0        | Java 行为验证码,包含滑动拼图、文字点选两种方式,UI支持弹出和嵌入两种方式。 |
 | 
				
			||||||
| Easy Captcha                                                 | 1.6.2        | Java 图形验证码,支持 gif、中文、算术等类型,可用于 Java Web、JavaSE 等项目。 |
 | 
					| Easy Captcha                                                 | 1.6.2        | Java 图形验证码,支持 gif、中文、算术等类型,可用于 Java Web、JavaSE 等项目。 |
 | 
				
			||||||
| [Crane4j](https://createsequence.gitee.io/crane4j-doc/#/)    | 2.9.0        | 一个基于注解的,用于完成一切 “根据 A 的 key 值拿到 B,再把 B 的属性映射到 A” 这类需求的字段填充框架。 |
 | 
					| [Crane4j](https://createsequence.gitee.io/crane4j-doc/#/)    | 2.9.0        | 一个基于注解的,用于完成一切 “根据 A 的 key 值拿到 B,再把 B 的属性映射到 A” 这类需求的字段填充框架。 |
 | 
				
			||||||
 | 
					| [CosID](https://cosid.ahoo.me/guide/getting-started.html)    | 2.9.6        | 旨在提供通用、灵活、高性能的分布式 ID 生成器。               |
 | 
				
			||||||
 | 
					| [Graceful Response](https://doc.feiniaojin.com/graceful-response/home.html) | 5.0.0-boot3  | 一个Spring Boot技术栈下的优雅响应处理组件,可以帮助开发者完成响应数据封装、异常处理、错误码填充等过程,提高开发效率,提高代码质量。 |
 | 
				
			||||||
| <a href="https://doc.xiaominfo.com/" target="_blank">Knife4j</a> | 4.5.0        | 前身是 swagger-bootstrap-ui,集 Swagger2 和 OpenAPI3 为一体的增强解决方案。 |
 | 
					| <a href="https://doc.xiaominfo.com/" target="_blank">Knife4j</a> | 4.5.0        | 前身是 swagger-bootstrap-ui,集 Swagger2 和 OpenAPI3 为一体的增强解决方案。 |
 | 
				
			||||||
| <a href="https://www.hutool.cn/" target="_blank">Hutool</a>  | 5.8.29       | 小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。 |
 | 
					| <a href="https://www.hutool.cn/" target="_blank">Hutool</a>  | 5.8.32       | 小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。 |
 | 
				
			||||||
| <a href="https://projectlombok.org/" target="_blank">Lombok</a> | 1.18.32      | 在 Java 开发过程中用注解的方式,简化了 JavaBean 的编写,避免了冗余和样板式代码,让编写的类更加简洁。 |
 | 
					| <a href="https://projectlombok.org/" target="_blank">Lombok</a> | 1.18.32      | 在 Java 开发过程中用注解的方式,简化了 JavaBean 的编写,避免了冗余和样板式代码,让编写的类更加简洁。 |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 快速开始
 | 
					## 快速开始
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,7 +67,7 @@
 | 
				
			|||||||
        <!-- ContiNew Starter 数据访问模块 - MyBatis Plus -->
 | 
					        <!-- ContiNew Starter 数据访问模块 - MyBatis Plus -->
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <groupId>top.continew</groupId>
 | 
					            <groupId>top.continew</groupId>
 | 
				
			||||||
            <artifactId>continew-starter-data-mybatis-plus</artifactId>
 | 
					            <artifactId>continew-starter-data-mp</artifactId>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- ContiNew Starter 缓存模块 - JetCache -->
 | 
					        <!-- ContiNew Starter 缓存模块 - JetCache -->
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@ public class GlobalExceptionHandler {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    @ExceptionHandler(BusinessException.class)
 | 
					    @ExceptionHandler(BusinessException.class)
 | 
				
			||||||
    public R handleBusinessException(BusinessException e, HttpServletRequest request) {
 | 
					    public R handleBusinessException(BusinessException e, HttpServletRequest request) {
 | 
				
			||||||
        log.error("请求地址 [{}],发生业务异常。", request.getRequestURI(), e);
 | 
					        log.error("[{}] {}", request.getMethod(), request.getRequestURI(), e);
 | 
				
			||||||
        return R.fail(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()), e.getMessage());
 | 
					        return R.fail(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()), e.getMessage());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -54,7 +54,7 @@ public class GlobalExceptionHandler {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    @ExceptionHandler(BadRequestException.class)
 | 
					    @ExceptionHandler(BadRequestException.class)
 | 
				
			||||||
    public R handleBadRequestException(BadRequestException e, HttpServletRequest request) {
 | 
					    public R handleBadRequestException(BadRequestException e, HttpServletRequest request) {
 | 
				
			||||||
        log.error("请求地址 [{}],自定义验证失败。", request.getRequestURI(), e);
 | 
					        log.error("[{}] {}", request.getMethod(), request.getRequestURI(), e);
 | 
				
			||||||
        return R.fail(String.valueOf(HttpStatus.BAD_REQUEST.value()), e.getMessage());
 | 
					        return R.fail(String.valueOf(HttpStatus.BAD_REQUEST.value()), e.getMessage());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -63,6 +63,7 @@ public class GlobalExceptionHandler {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    @ExceptionHandler(MultipartException.class)
 | 
					    @ExceptionHandler(MultipartException.class)
 | 
				
			||||||
    public R handleRequestTooBigException(MultipartException e, HttpServletRequest request) {
 | 
					    public R handleRequestTooBigException(MultipartException e, HttpServletRequest request) {
 | 
				
			||||||
 | 
					        log.error("[{}] {}", request.getMethod(), request.getRequestURI(), e);
 | 
				
			||||||
        String msg = e.getMessage();
 | 
					        String msg = e.getMessage();
 | 
				
			||||||
        R defaultFail = R.fail(String.valueOf(HttpStatus.BAD_REQUEST.value()), msg);
 | 
					        R defaultFail = R.fail(String.valueOf(HttpStatus.BAD_REQUEST.value()), msg);
 | 
				
			||||||
        if (CharSequenceUtil.isBlank(msg)) {
 | 
					        if (CharSequenceUtil.isBlank(msg)) {
 | 
				
			||||||
@@ -81,7 +82,6 @@ public class GlobalExceptionHandler {
 | 
				
			|||||||
            return defaultFail;
 | 
					            return defaultFail;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        String errorMsg = "请上传小于 %sKB 的文件".formatted(NumberUtil.parseLong(sizeLimit) / 1024);
 | 
					        String errorMsg = "请上传小于 %sKB 的文件".formatted(NumberUtil.parseLong(sizeLimit) / 1024);
 | 
				
			||||||
        log.error("请求地址 [{}],上传文件失败,文件大小超过限制。", request.getRequestURI(), e);
 | 
					 | 
				
			||||||
        return R.fail(String.valueOf(HttpStatus.BAD_REQUEST.value()), errorMsg);
 | 
					        return R.fail(String.valueOf(HttpStatus.BAD_REQUEST.value()), errorMsg);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -43,7 +43,7 @@ public class GlobalSaTokenExceptionHandler {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    @ExceptionHandler(NotLoginException.class)
 | 
					    @ExceptionHandler(NotLoginException.class)
 | 
				
			||||||
    public R handleNotLoginException(NotLoginException e, HttpServletRequest request) {
 | 
					    public R handleNotLoginException(NotLoginException e, HttpServletRequest request) {
 | 
				
			||||||
        log.error("请求地址 [{}],认证失败,无法访问系统资源。", request.getRequestURI(), e);
 | 
					        log.error("[{}] {}", request.getMethod(), request.getRequestURI(), e);
 | 
				
			||||||
        String errorMsg = switch (e.getType()) {
 | 
					        String errorMsg = switch (e.getType()) {
 | 
				
			||||||
            case NotLoginException.KICK_OUT -> "您已被踢下线";
 | 
					            case NotLoginException.KICK_OUT -> "您已被踢下线";
 | 
				
			||||||
            case NotLoginException.BE_REPLACED_MESSAGE -> "您已被顶下线";
 | 
					            case NotLoginException.BE_REPLACED_MESSAGE -> "您已被顶下线";
 | 
				
			||||||
@@ -57,7 +57,7 @@ public class GlobalSaTokenExceptionHandler {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    @ExceptionHandler(NotPermissionException.class)
 | 
					    @ExceptionHandler(NotPermissionException.class)
 | 
				
			||||||
    public R handleNotPermissionException(NotPermissionException e, HttpServletRequest request) {
 | 
					    public R handleNotPermissionException(NotPermissionException e, HttpServletRequest request) {
 | 
				
			||||||
        log.error("请求地址 [{}],权限码校验失败。", request.getRequestURI(), e);
 | 
					        log.error("[{}] {}", request.getMethod(), request.getRequestURI(), e);
 | 
				
			||||||
        return R.fail(String.valueOf(HttpStatus.FORBIDDEN.value()), "没有访问权限,请联系管理员授权");
 | 
					        return R.fail(String.valueOf(HttpStatus.FORBIDDEN.value()), "没有访问权限,请联系管理员授权");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -66,7 +66,7 @@ public class GlobalSaTokenExceptionHandler {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    @ExceptionHandler(NotRoleException.class)
 | 
					    @ExceptionHandler(NotRoleException.class)
 | 
				
			||||||
    public R handleNotRoleException(NotRoleException e, HttpServletRequest request) {
 | 
					    public R handleNotRoleException(NotRoleException e, HttpServletRequest request) {
 | 
				
			||||||
        log.error("请求地址 [{}],角色权限校验失败。", request.getRequestURI(), e);
 | 
					        log.error("[{}] {}", request.getMethod(), request.getRequestURI(), e);
 | 
				
			||||||
        return R.fail(String.valueOf(HttpStatus.FORBIDDEN.value()), "没有访问权限,请联系管理员授权");
 | 
					        return R.fail(String.valueOf(HttpStatus.FORBIDDEN.value()), "没有访问权限,请联系管理员授权");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -19,9 +19,9 @@ package top.continew.admin.common.config.mybatis;
 | 
				
			|||||||
import cn.hutool.core.convert.Convert;
 | 
					import cn.hutool.core.convert.Convert;
 | 
				
			||||||
import top.continew.admin.common.model.dto.LoginUser;
 | 
					import top.continew.admin.common.model.dto.LoginUser;
 | 
				
			||||||
import top.continew.admin.common.util.helper.LoginHelper;
 | 
					import top.continew.admin.common.util.helper.LoginHelper;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.datapermission.DataPermissionCurrentUser;
 | 
					import top.continew.starter.data.mp.datapermission.DataPermissionCurrentUser;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.datapermission.DataPermissionFilter;
 | 
					import top.continew.starter.data.mp.datapermission.DataPermissionFilter;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.datapermission.DataScope;
 | 
					import top.continew.starter.data.mp.datapermission.DataScope;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.stream.Collectors;
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,8 +20,8 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 | 
				
			|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
					import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
				
			||||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
 | 
					import com.baomidou.mybatisplus.core.toolkit.Constants;
 | 
				
			||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.datapermission.DataPermission;
 | 
					import top.continew.starter.data.mp.datapermission.DataPermission;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 | 
				
			|||||||
import org.springframework.context.annotation.Bean;
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
import org.springframework.context.annotation.Configuration;
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
import org.springframework.security.crypto.password.PasswordEncoder;
 | 
					import org.springframework.security.crypto.password.PasswordEncoder;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.datapermission.DataPermissionFilter;
 | 
					import top.continew.starter.data.mp.datapermission.DataPermissionFilter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * MyBatis Plus 配置
 | 
					 * MyBatis Plus 配置
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    <properties>
 | 
					    <properties>
 | 
				
			||||||
        <!-- SnailJob 服务端 -->
 | 
					        <!-- SnailJob 服务端 -->
 | 
				
			||||||
        <snail-job.version>1.1.0</snail-job.version>
 | 
					        <snail-job.version>1.1.2</snail-job.version>
 | 
				
			||||||
    </properties>
 | 
					    </properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <dependencies>
 | 
					    <dependencies>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package top.continew.admin.generator.mapper;
 | 
				
			|||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import org.apache.ibatis.annotations.Select;
 | 
					import org.apache.ibatis.annotations.Select;
 | 
				
			||||||
import top.continew.admin.generator.model.entity.FieldConfigDO;
 | 
					import top.continew.admin.generator.model.entity.FieldConfigDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
package top.continew.admin.generator.mapper;
 | 
					package top.continew.admin.generator.mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import top.continew.admin.generator.model.entity.GenConfigDO;
 | 
					import top.continew.admin.generator.model.entity.GenConfigDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 生成配置 Mapper
 | 
					 * 生成配置 Mapper
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
package ${packageName}.${subPackageName};
 | 
					package ${packageName}.${subPackageName};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
import ${packageName}.model.entity.${classNamePrefix}DO;
 | 
					import ${packageName}.model.entity.${classNamePrefix}DO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -108,7 +108,7 @@
 | 
				
			|||||||
<script setup lang="ts">
 | 
					<script setup lang="ts">
 | 
				
			||||||
import ${classNamePrefix}AddModal from './${classNamePrefix}AddModal.vue'
 | 
					import ${classNamePrefix}AddModal from './${classNamePrefix}AddModal.vue'
 | 
				
			||||||
import ${classNamePrefix}DetailDrawer from './${classNamePrefix}DetailDrawer.vue'
 | 
					import ${classNamePrefix}DetailDrawer from './${classNamePrefix}DetailDrawer.vue'
 | 
				
			||||||
import { type ${classNamePrefix}Resp, type ${classNamePrefix}Query, delete${classNamePrefix}, export${classNamePrefix}, list${classNamePrefix} } from '@/apis/${apiModuleName}/${apiName}'
 | 
					import { type ${classNamePrefix}Resp, type ${classNamePrefix}Query, delete${classNamePrefix}, export${classNamePrefix}, list${classNamePrefix} } from '@/apis/${apiModuleName}'
 | 
				
			||||||
import type { TableInstanceColumns } from '@/components/GiTable/type'
 | 
					import type { TableInstanceColumns } from '@/components/GiTable/type'
 | 
				
			||||||
import { useDownload, useTable } from '@/hooks'
 | 
					import { useDownload, useTable } from '@/hooks'
 | 
				
			||||||
import { isMobile } from '@/utils'
 | 
					import { isMobile } from '@/utils'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
package top.continew.admin.system.mapper;
 | 
					package top.continew.admin.system.mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import top.continew.admin.system.model.entity.DeptDO;
 | 
					import top.continew.admin.system.model.entity.DeptDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 部门 Mapper
 | 
					 * 部门 Mapper
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package top.continew.admin.system.mapper;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import top.continew.admin.system.model.entity.DictItemDO;
 | 
					import top.continew.admin.system.model.entity.DictItemDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
import top.continew.starter.extension.crud.model.resp.LabelValueResp;
 | 
					import top.continew.starter.extension.crud.model.resp.LabelValueResp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
package top.continew.admin.system.mapper;
 | 
					package top.continew.admin.system.mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import top.continew.admin.system.model.entity.DictDO;
 | 
					import top.continew.admin.system.model.entity.DictDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 字典 Mapper
 | 
					 * 字典 Mapper
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package top.continew.admin.system.mapper;
 | 
				
			|||||||
import org.apache.ibatis.annotations.Select;
 | 
					import org.apache.ibatis.annotations.Select;
 | 
				
			||||||
import top.continew.admin.system.model.entity.FileDO;
 | 
					import top.continew.admin.system.model.entity.FileDO;
 | 
				
			||||||
import top.continew.admin.system.model.resp.FileStatisticsResp;
 | 
					import top.continew.admin.system.model.resp.FileStatisticsResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ import top.continew.admin.system.model.resp.DashboardAccessTrendResp;
 | 
				
			|||||||
import top.continew.admin.system.model.resp.DashboardPopularModuleResp;
 | 
					import top.continew.admin.system.model.resp.DashboardPopularModuleResp;
 | 
				
			||||||
import top.continew.admin.system.model.resp.DashboardTotalResp;
 | 
					import top.continew.admin.system.model.resp.DashboardTotalResp;
 | 
				
			||||||
import top.continew.admin.system.model.resp.log.LogResp;
 | 
					import top.continew.admin.system.model.resp.log.LogResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package top.continew.admin.system.mapper;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import top.continew.admin.system.model.entity.MenuDO;
 | 
					import top.continew.admin.system.model.entity.MenuDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
 | 
				
			|||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import top.continew.admin.system.model.entity.MessageDO;
 | 
					import top.continew.admin.system.model.entity.MessageDO;
 | 
				
			||||||
import top.continew.admin.system.model.resp.MessageResp;
 | 
					import top.continew.admin.system.model.resp.MessageResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 消息 Mapper
 | 
					 * 消息 Mapper
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package top.continew.admin.system.mapper;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import top.continew.admin.system.model.entity.MessageUserDO;
 | 
					import top.continew.admin.system.model.entity.MessageUserDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 消息和用户 Mapper
 | 
					 * 消息和用户 Mapper
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package top.continew.admin.system.mapper;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import top.continew.admin.system.model.entity.NoticeDO;
 | 
					import top.continew.admin.system.model.entity.NoticeDO;
 | 
				
			||||||
import top.continew.admin.system.model.resp.DashboardNoticeResp;
 | 
					import top.continew.admin.system.model.resp.DashboardNoticeResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package top.continew.admin.system.mapper;
 | 
				
			|||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import org.apache.ibatis.annotations.Select;
 | 
					import org.apache.ibatis.annotations.Select;
 | 
				
			||||||
import top.continew.admin.system.model.entity.OptionDO;
 | 
					import top.continew.admin.system.model.entity.OptionDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package top.continew.admin.system.mapper;
 | 
				
			|||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import org.apache.ibatis.annotations.Select;
 | 
					import org.apache.ibatis.annotations.Select;
 | 
				
			||||||
import top.continew.admin.system.model.entity.RoleDeptDO;
 | 
					import top.continew.admin.system.model.entity.RoleDeptDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
package top.continew.admin.system.mapper;
 | 
					package top.continew.admin.system.mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import top.continew.admin.system.model.entity.RoleDO;
 | 
					import top.continew.admin.system.model.entity.RoleDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 角色 Mapper
 | 
					 * 角色 Mapper
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
package top.continew.admin.system.mapper;
 | 
					package top.continew.admin.system.mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import top.continew.admin.system.model.entity.RoleMenuDO;
 | 
					import top.continew.admin.system.model.entity.RoleMenuDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
package top.continew.admin.system.mapper;
 | 
					package top.continew.admin.system.mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import top.continew.admin.system.model.entity.StorageDO;
 | 
					import top.continew.admin.system.model.entity.StorageDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 存储 Mapper
 | 
					 * 存储 Mapper
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import org.apache.ibatis.annotations.Select;
 | 
				
			|||||||
import top.continew.admin.common.config.mybatis.DataPermissionMapper;
 | 
					import top.continew.admin.common.config.mybatis.DataPermissionMapper;
 | 
				
			||||||
import top.continew.admin.system.model.entity.UserDO;
 | 
					import top.continew.admin.system.model.entity.UserDO;
 | 
				
			||||||
import top.continew.admin.system.model.resp.UserDetailResp;
 | 
					import top.continew.admin.system.model.resp.UserDetailResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.datapermission.DataPermission;
 | 
					import top.continew.starter.data.mp.datapermission.DataPermission;
 | 
				
			||||||
import top.continew.starter.security.crypto.annotation.FieldEncrypt;
 | 
					import top.continew.starter.security.crypto.annotation.FieldEncrypt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
package top.continew.admin.system.mapper;
 | 
					package top.continew.admin.system.mapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
import top.continew.admin.system.model.entity.UserPasswordHistoryDO;
 | 
					import top.continew.admin.system.model.entity.UserPasswordHistoryDO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package top.continew.admin.system.mapper;
 | 
				
			|||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import org.apache.ibatis.annotations.Select;
 | 
					import org.apache.ibatis.annotations.Select;
 | 
				
			||||||
import top.continew.admin.system.model.entity.UserRoleDO;
 | 
					import top.continew.admin.system.model.entity.UserRoleDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package top.continew.admin.system.mapper;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import org.apache.ibatis.annotations.Param;
 | 
					import org.apache.ibatis.annotations.Param;
 | 
				
			||||||
import top.continew.admin.system.model.entity.UserSocialDO;
 | 
					import top.continew.admin.system.model.entity.UserSocialDO;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.base.BaseMapper;
 | 
					import top.continew.starter.data.mp.base.BaseMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 用户社会化关联 Mapper
 | 
					 * 用户社会化关联 Mapper
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ import top.continew.admin.system.model.entity.DeptDO;
 | 
				
			|||||||
import top.continew.admin.system.model.query.DeptQuery;
 | 
					import top.continew.admin.system.model.query.DeptQuery;
 | 
				
			||||||
import top.continew.admin.system.model.req.DeptReq;
 | 
					import top.continew.admin.system.model.req.DeptReq;
 | 
				
			||||||
import top.continew.admin.system.model.resp.DeptResp;
 | 
					import top.continew.admin.system.model.resp.DeptResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.service.IService;
 | 
					import top.continew.starter.data.mp.service.IService;
 | 
				
			||||||
import top.continew.starter.extension.crud.service.BaseService;
 | 
					import top.continew.starter.extension.crud.service.BaseService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ import top.continew.admin.system.model.entity.DictItemDO;
 | 
				
			|||||||
import top.continew.admin.system.model.query.DictItemQuery;
 | 
					import top.continew.admin.system.model.query.DictItemQuery;
 | 
				
			||||||
import top.continew.admin.system.model.req.DictItemReq;
 | 
					import top.continew.admin.system.model.req.DictItemReq;
 | 
				
			||||||
import top.continew.admin.system.model.resp.DictItemResp;
 | 
					import top.continew.admin.system.model.resp.DictItemResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.service.IService;
 | 
					import top.continew.starter.data.mp.service.IService;
 | 
				
			||||||
import top.continew.starter.extension.crud.model.resp.LabelValueResp;
 | 
					import top.continew.starter.extension.crud.model.resp.LabelValueResp;
 | 
				
			||||||
import top.continew.starter.extension.crud.service.BaseService;
 | 
					import top.continew.starter.extension.crud.service.BaseService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ import top.continew.admin.system.model.entity.DictDO;
 | 
				
			|||||||
import top.continew.admin.system.model.query.DictQuery;
 | 
					import top.continew.admin.system.model.query.DictQuery;
 | 
				
			||||||
import top.continew.admin.system.model.req.DictReq;
 | 
					import top.continew.admin.system.model.req.DictReq;
 | 
				
			||||||
import top.continew.admin.system.model.resp.DictResp;
 | 
					import top.continew.admin.system.model.resp.DictResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.service.IService;
 | 
					import top.continew.starter.data.mp.service.IService;
 | 
				
			||||||
import top.continew.starter.extension.crud.model.resp.LabelValueResp;
 | 
					import top.continew.starter.extension.crud.model.resp.LabelValueResp;
 | 
				
			||||||
import top.continew.starter.extension.crud.service.BaseService;
 | 
					import top.continew.starter.extension.crud.service.BaseService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import top.continew.admin.system.model.query.FileQuery;
 | 
				
			|||||||
import top.continew.admin.system.model.req.FileReq;
 | 
					import top.continew.admin.system.model.req.FileReq;
 | 
				
			||||||
import top.continew.admin.system.model.resp.FileResp;
 | 
					import top.continew.admin.system.model.resp.FileResp;
 | 
				
			||||||
import top.continew.admin.system.model.resp.FileStatisticsResp;
 | 
					import top.continew.admin.system.model.resp.FileStatisticsResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.service.IService;
 | 
					import top.continew.starter.data.mp.service.IService;
 | 
				
			||||||
import top.continew.starter.extension.crud.service.BaseService;
 | 
					import top.continew.starter.extension.crud.service.BaseService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ import top.continew.admin.system.model.query.MenuQuery;
 | 
				
			|||||||
import top.continew.admin.system.model.req.MenuReq;
 | 
					import top.continew.admin.system.model.req.MenuReq;
 | 
				
			||||||
import top.continew.admin.system.model.resp.MenuResp;
 | 
					import top.continew.admin.system.model.resp.MenuResp;
 | 
				
			||||||
import top.continew.starter.extension.crud.service.BaseService;
 | 
					import top.continew.starter.extension.crud.service.BaseService;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.service.IService;
 | 
					import top.continew.starter.data.mp.service.IService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import top.continew.admin.system.model.resp.NoticeDetailResp;
 | 
				
			|||||||
import top.continew.admin.system.model.resp.NoticeResp;
 | 
					import top.continew.admin.system.model.resp.NoticeResp;
 | 
				
			||||||
import top.continew.admin.system.model.resp.DashboardNoticeResp;
 | 
					import top.continew.admin.system.model.resp.DashboardNoticeResp;
 | 
				
			||||||
import top.continew.starter.extension.crud.service.BaseService;
 | 
					import top.continew.starter.extension.crud.service.BaseService;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.service.IService;
 | 
					import top.continew.starter.data.mp.service.IService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import top.continew.admin.system.model.query.RoleQuery;
 | 
				
			|||||||
import top.continew.admin.system.model.req.RoleReq;
 | 
					import top.continew.admin.system.model.req.RoleReq;
 | 
				
			||||||
import top.continew.admin.system.model.resp.RoleDetailResp;
 | 
					import top.continew.admin.system.model.resp.RoleDetailResp;
 | 
				
			||||||
import top.continew.admin.system.model.resp.RoleResp;
 | 
					import top.continew.admin.system.model.resp.RoleResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.service.IService;
 | 
					import top.continew.starter.data.mp.service.IService;
 | 
				
			||||||
import top.continew.starter.extension.crud.service.BaseService;
 | 
					import top.continew.starter.extension.crud.service.BaseService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ import top.continew.admin.system.model.entity.StorageDO;
 | 
				
			|||||||
import top.continew.admin.system.model.query.StorageQuery;
 | 
					import top.continew.admin.system.model.query.StorageQuery;
 | 
				
			||||||
import top.continew.admin.system.model.req.StorageReq;
 | 
					import top.continew.admin.system.model.req.StorageReq;
 | 
				
			||||||
import top.continew.admin.system.model.resp.StorageResp;
 | 
					import top.continew.admin.system.model.resp.StorageResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.service.IService;
 | 
					import top.continew.starter.data.mp.service.IService;
 | 
				
			||||||
import top.continew.starter.extension.crud.service.BaseService;
 | 
					import top.continew.starter.extension.crud.service.BaseService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ import top.continew.admin.system.model.resp.UserDetailResp;
 | 
				
			|||||||
import top.continew.admin.system.model.resp.UserImportParseResp;
 | 
					import top.continew.admin.system.model.resp.UserImportParseResp;
 | 
				
			||||||
import top.continew.admin.system.model.resp.UserImportResp;
 | 
					import top.continew.admin.system.model.resp.UserImportResp;
 | 
				
			||||||
import top.continew.admin.system.model.resp.UserResp;
 | 
					import top.continew.admin.system.model.resp.UserResp;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.service.IService;
 | 
					import top.continew.starter.data.mp.service.IService;
 | 
				
			||||||
import top.continew.starter.extension.crud.service.BaseService;
 | 
					import top.continew.starter.extension.crud.service.BaseService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,7 +58,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes
 | 
				
			|||||||
    public List<DeptDO> listChildren(Long id) {
 | 
					    public List<DeptDO> listChildren(Long id) {
 | 
				
			||||||
        DatabaseType databaseType = MetaUtils.getDatabaseTypeOrDefault(SpringUtil
 | 
					        DatabaseType databaseType = MetaUtils.getDatabaseTypeOrDefault(SpringUtil
 | 
				
			||||||
            .getBean(DynamicRoutingDataSource.class), DatabaseType.MYSQL);
 | 
					            .getBean(DynamicRoutingDataSource.class), DatabaseType.MYSQL);
 | 
				
			||||||
        return baseMapper.lambdaQuery().apply(databaseType.findInSet(), id, "ancestors").list();
 | 
					        return baseMapper.lambdaQuery().apply(databaseType.findInSet(id, "ancestors")).list();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -187,7 +187,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes
 | 
				
			|||||||
        DatabaseType databaseType = MetaUtils.getDatabaseTypeOrDefault(SpringUtil
 | 
					        DatabaseType databaseType = MetaUtils.getDatabaseTypeOrDefault(SpringUtil
 | 
				
			||||||
            .getBean(DynamicRoutingDataSource.class), DatabaseType.MYSQL);
 | 
					            .getBean(DynamicRoutingDataSource.class), DatabaseType.MYSQL);
 | 
				
			||||||
        return ids.stream()
 | 
					        return ids.stream()
 | 
				
			||||||
            .mapToLong(id -> baseMapper.lambdaQuery().apply(databaseType.findInSet(), id, "ancestors").count())
 | 
					            .mapToLong(id -> baseMapper.lambdaQuery().apply(databaseType.findInSet(id, "ancestors")).count())
 | 
				
			||||||
            .sum();
 | 
					            .sum();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,7 +33,7 @@ import top.continew.admin.system.model.resp.MessageResp;
 | 
				
			|||||||
import top.continew.admin.system.service.MessageService;
 | 
					import top.continew.admin.system.service.MessageService;
 | 
				
			||||||
import top.continew.admin.system.service.MessageUserService;
 | 
					import top.continew.admin.system.service.MessageUserService;
 | 
				
			||||||
import top.continew.starter.core.util.validate.CheckUtils;
 | 
					import top.continew.starter.core.util.validate.CheckUtils;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.util.QueryWrapperHelper;
 | 
					import top.continew.starter.data.mp.util.QueryWrapperHelper;
 | 
				
			||||||
import top.continew.starter.extension.crud.model.query.PageQuery;
 | 
					import top.continew.starter.extension.crud.model.query.PageQuery;
 | 
				
			||||||
import top.continew.starter.extension.crud.model.resp.PageResp;
 | 
					import top.continew.starter.extension.crud.model.resp.PageResp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,7 +38,7 @@ import top.continew.starter.cache.redisson.util.RedisUtils;
 | 
				
			|||||||
import top.continew.starter.core.constant.StringConstants;
 | 
					import top.continew.starter.core.constant.StringConstants;
 | 
				
			||||||
import top.continew.starter.core.util.validate.CheckUtils;
 | 
					import top.continew.starter.core.util.validate.CheckUtils;
 | 
				
			||||||
import top.continew.starter.core.util.validate.ValidationUtils;
 | 
					import top.continew.starter.core.util.validate.ValidationUtils;
 | 
				
			||||||
import top.continew.starter.data.mybatis.plus.util.QueryWrapperHelper;
 | 
					import top.continew.starter.data.mp.util.QueryWrapperHelper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -110,7 +110,7 @@ public class LogDaoLocalImpl implements LogDao {
 | 
				
			|||||||
    private void setResponse(LogDO logDO, LogResponse logResponse) {
 | 
					    private void setResponse(LogDO logDO, LogResponse logResponse) {
 | 
				
			||||||
        Map<String, String> responseHeaders = logResponse.getHeaders();
 | 
					        Map<String, String> responseHeaders = logResponse.getHeaders();
 | 
				
			||||||
        logDO.setResponseHeaders(JSONUtil.toJsonStr(responseHeaders));
 | 
					        logDO.setResponseHeaders(JSONUtil.toJsonStr(responseHeaders));
 | 
				
			||||||
        logDO.setTraceId(responseHeaders.get(traceProperties.getHeaderName()));
 | 
					        logDO.setTraceId(responseHeaders.get(traceProperties.getTraceIdName()));
 | 
				
			||||||
        String responseBody = logResponse.getBody();
 | 
					        String responseBody = logResponse.getBody();
 | 
				
			||||||
        logDO.setResponseBody(responseBody);
 | 
					        logDO.setResponseBody(responseBody);
 | 
				
			||||||
        // 状态
 | 
					        // 状态
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,5 +5,5 @@
 | 
				
			|||||||
  \____|\___/ |_| |_| \__||_||_| \_| \___|  \_/\_/       /_/   \_\\__,_||_| |_| |_||_||_| |_|
 | 
					  \____|\___/ |_| |_| \__||_||_| \_| \___|  \_/\_/       /_/   \_\\__,_||_| |_| |_||_||_| |_|
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 :: ${project.name}   ::                                               v${project.version}
 | 
					 :: ${project.name}   ::                                               v${project.version}
 | 
				
			||||||
 :: ContiNew Starter ::                                               v2.5.2
 | 
					 :: ContiNew Starter ::                                               v2.6.0
 | 
				
			||||||
 :: Spring Boot      ::                                               v${spring-boot.version}
 | 
					 :: Spring Boot      ::                                               v${spring-boot.version}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,6 +53,8 @@ continew-starter.web:
 | 
				
			|||||||
  response:
 | 
					  response:
 | 
				
			||||||
    # 是否开启国际化(默认:false)
 | 
					    # 是否开启国际化(默认:false)
 | 
				
			||||||
    i18n: false
 | 
					    i18n: false
 | 
				
			||||||
 | 
					    # 自定义失败 HTTP 状态码(默认:200,建议业务和通信状态码区分)
 | 
				
			||||||
 | 
					    default-http-status-code-on-error: 200
 | 
				
			||||||
    # 自定义成功响应码(默认:0)
 | 
					    # 自定义成功响应码(默认:0)
 | 
				
			||||||
    default-success-code: 0
 | 
					    default-success-code: 0
 | 
				
			||||||
    # 自定义成功提示(默认:ok)
 | 
					    # 自定义成功提示(默认:ok)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							@@ -13,7 +13,7 @@
 | 
				
			|||||||
    <parent>
 | 
					    <parent>
 | 
				
			||||||
        <groupId>top.continew</groupId>
 | 
					        <groupId>top.continew</groupId>
 | 
				
			||||||
        <artifactId>continew-starter</artifactId>
 | 
					        <artifactId>continew-starter</artifactId>
 | 
				
			||||||
        <version>2.5.2</version>
 | 
					        <version>2.6.0</version>
 | 
				
			||||||
    </parent>
 | 
					    </parent>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <groupId>top.continew</groupId>
 | 
					    <groupId>top.continew</groupId>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user