feat(exception): 添加数据权限异常及通用数据库执行异常处理
This commit is contained in:
@@ -0,0 +1,28 @@
|
|||||||
|
package com.youlai.boot.common.exception;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据权限异常
|
||||||
|
* <p>
|
||||||
|
* 当数据权限拦截器拼接SQL条件失败时抛出,属于系统级异常,非业务异常。
|
||||||
|
*
|
||||||
|
* @author zc
|
||||||
|
* @since 2.0.0
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public class DataPermissionException extends RuntimeException {
|
||||||
|
|
||||||
|
private final String mappedStatementId;
|
||||||
|
|
||||||
|
public DataPermissionException(String mappedStatementId, String message) {
|
||||||
|
super(message);
|
||||||
|
this.mappedStatementId = mappedStatementId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataPermissionException(String mappedStatementId, String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
this.mappedStatementId = mappedStatementId;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -111,6 +111,7 @@ public enum ResultCode implements IResultCode, Serializable {
|
|||||||
/** 二级宏观错误码:第三方服务具体错误(按号段细分,便于定位是接口不存在/数据库异常等) */
|
/** 二级宏观错误码:第三方服务具体错误(按号段细分,便于定位是接口不存在/数据库异常等) */
|
||||||
INTERFACE_NOT_EXIST("C0113", "接口不存在"),
|
INTERFACE_NOT_EXIST("C0113", "接口不存在"),
|
||||||
DATABASE_SERVICE_ERROR("C0300", "数据库服务出错"),
|
DATABASE_SERVICE_ERROR("C0300", "数据库服务出错"),
|
||||||
|
DATABASE_EXECUTION_ERROR("C0310", "数据库执行异常"),
|
||||||
DATABASE_EXECUTION_SYNTAX_ERROR("C0313", "数据库执行语法错误"),
|
DATABASE_EXECUTION_SYNTAX_ERROR("C0313", "数据库执行语法错误"),
|
||||||
INTEGRITY_CONSTRAINT_VIOLATION("C0342", "违反了完整性约束"),
|
INTEGRITY_CONSTRAINT_VIOLATION("C0342", "违反了完整性约束"),
|
||||||
DATABASE_ACCESS_DENIED("C0351", "演示环境已禁用数据库写入功能,请本地部署修改数据库链接或开启Mock模式进行体验");
|
DATABASE_ACCESS_DENIED("C0351", "演示环境已禁用数据库写入功能,请本地部署修改数据库链接或开启Mock模式进行体验");
|
||||||
|
|||||||
@@ -190,13 +190,11 @@ public class GlobalExceptionHandler {
|
|||||||
@ExceptionHandler(BadSqlGrammarException.class)
|
@ExceptionHandler(BadSqlGrammarException.class)
|
||||||
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
|
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||||
public <T> Result<T> handleBadSqlGrammarException(BadSqlGrammarException e) {
|
public <T> Result<T> handleBadSqlGrammarException(BadSqlGrammarException e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error("SQL执行异常, message={}", e.getMessage(), e);
|
||||||
String errorMsg = e.getMessage();
|
if (StrUtil.isNotBlank(e.getMessage()) && e.getMessage().contains("denied to user")) {
|
||||||
if (StrUtil.isNotBlank(errorMsg) && errorMsg.contains("denied to user")) {
|
|
||||||
return Result.failed(ResultCode.DATABASE_ACCESS_DENIED);
|
return Result.failed(ResultCode.DATABASE_ACCESS_DENIED);
|
||||||
} else {
|
|
||||||
return Result.failed(e.getMessage());
|
|
||||||
}
|
}
|
||||||
|
return Result.failed(ResultCode.DATABASE_EXECUTION_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user