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", "接口不存在"),
|
||||
DATABASE_SERVICE_ERROR("C0300", "数据库服务出错"),
|
||||
DATABASE_EXECUTION_ERROR("C0310", "数据库执行异常"),
|
||||
DATABASE_EXECUTION_SYNTAX_ERROR("C0313", "数据库执行语法错误"),
|
||||
INTEGRITY_CONSTRAINT_VIOLATION("C0342", "违反了完整性约束"),
|
||||
DATABASE_ACCESS_DENIED("C0351", "演示环境已禁用数据库写入功能,请本地部署修改数据库链接或开启Mock模式进行体验");
|
||||
|
||||
@@ -190,13 +190,11 @@ public class GlobalExceptionHandler {
|
||||
@ExceptionHandler(BadSqlGrammarException.class)
|
||||
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
public <T> Result<T> handleBadSqlGrammarException(BadSqlGrammarException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
String errorMsg = e.getMessage();
|
||||
if (StrUtil.isNotBlank(errorMsg) && errorMsg.contains("denied to user")) {
|
||||
log.error("SQL执行异常, message={}", e.getMessage(), e);
|
||||
if (StrUtil.isNotBlank(e.getMessage()) && e.getMessage().contains("denied to user")) {
|
||||
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