优化异常信息
This commit is contained in:
		| @@ -1,43 +0,0 @@ | |||||||
| package com.ruoyi.common.exception; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * 自定义异常 |  | ||||||
|  *  |  | ||||||
|  * @author ruoyi |  | ||||||
|  */ |  | ||||||
| public class CustomException extends RuntimeException |  | ||||||
| { |  | ||||||
|     private static final long serialVersionUID = 1L; |  | ||||||
|  |  | ||||||
|     private Integer code; |  | ||||||
|  |  | ||||||
|     private String message; |  | ||||||
|  |  | ||||||
|     public CustomException(String message) |  | ||||||
|     { |  | ||||||
|         this.message = message; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public CustomException(String message, Integer code) |  | ||||||
|     { |  | ||||||
|         this.message = message; |  | ||||||
|         this.code = code; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public CustomException(String message, Throwable e) |  | ||||||
|     { |  | ||||||
|         super(message, e); |  | ||||||
|         this.message = message; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public String getMessage() |  | ||||||
|     { |  | ||||||
|         return message; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public Integer getCode() |  | ||||||
|     { |  | ||||||
|         return code; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -0,0 +1,58 @@ | |||||||
|  | package com.ruoyi.common.exception; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 全局异常 | ||||||
|  |  *  | ||||||
|  |  * @author ruoyi | ||||||
|  |  */ | ||||||
|  | public class GlobalException extends RuntimeException | ||||||
|  | { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 错误提示 | ||||||
|  |      */ | ||||||
|  |     private String message; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 错误明细,内部调试错误 | ||||||
|  |      * | ||||||
|  |      * 和 {@link CommonResult#getDetailMessage()} 一致的设计 | ||||||
|  |      */ | ||||||
|  |     private String detailMessage; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 空构造方法,避免反序列化问题 | ||||||
|  |      */ | ||||||
|  |     public GlobalException() | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public GlobalException(String message) | ||||||
|  |     { | ||||||
|  |         this.message = message; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getDetailMessage() | ||||||
|  |     { | ||||||
|  |         return detailMessage; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public GlobalException setDetailMessage(String detailMessage) | ||||||
|  |     { | ||||||
|  |         this.detailMessage = detailMessage; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getMessage() | ||||||
|  |     { | ||||||
|  |         return message; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public GlobalException setMessage(String message) | ||||||
|  |     { | ||||||
|  |         this.message = message; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,73 @@ | |||||||
|  | package com.ruoyi.common.exception; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 业务异常 | ||||||
|  |  *  | ||||||
|  |  * @author ruoyi | ||||||
|  |  */ | ||||||
|  | public final class ServiceException extends RuntimeException | ||||||
|  | { | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 错误码 | ||||||
|  |      */ | ||||||
|  |     private Integer code; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 错误提示 | ||||||
|  |      */ | ||||||
|  |     private String message; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 错误明细,内部调试错误 | ||||||
|  |      * | ||||||
|  |      * 和 {@link CommonResult#getDetailMessage()} 一致的设计 | ||||||
|  |      */ | ||||||
|  |     private String detailMessage; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 空构造方法,避免反序列化问题 | ||||||
|  |      */ | ||||||
|  |     public ServiceException() | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public ServiceException(String message) | ||||||
|  |     { | ||||||
|  |         this.message = message; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public ServiceException(String message, Integer code) | ||||||
|  |     { | ||||||
|  |         this.message = message; | ||||||
|  |         this.code = code; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getDetailMessage() | ||||||
|  |     { | ||||||
|  |         return detailMessage; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getMessage() | ||||||
|  |     { | ||||||
|  |         return message; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Integer getCode() | ||||||
|  |     { | ||||||
|  |         return code; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public ServiceException setMessage(String message) | ||||||
|  |     { | ||||||
|  |         this.message = message; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public ServiceException setDetailMessage(String detailMessage) | ||||||
|  |     { | ||||||
|  |         this.detailMessage = detailMessage; | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| package com.ruoyi.common.exception; | package com.ruoyi.common.exception.base; | ||||||
| 
 | 
 | ||||||
| import com.ruoyi.common.utils.MessageUtils; | import com.ruoyi.common.utils.MessageUtils; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| package com.ruoyi.common.exception.file; | package com.ruoyi.common.exception.file; | ||||||
|  |  | ||||||
| import com.ruoyi.common.exception.BaseException; | import com.ruoyi.common.exception.base.BaseException; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 文件信息异常类 |  * 文件信息异常类 | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| package com.ruoyi.common.exception.user; | package com.ruoyi.common.exception.user; | ||||||
|  |  | ||||||
| import com.ruoyi.common.exception.BaseException; | import com.ruoyi.common.exception.base.BaseException; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 用户信息异常类 |  * 用户信息异常类 | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ import org.springframework.security.core.context.SecurityContextHolder; | |||||||
| import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | ||||||
| import com.ruoyi.common.constant.HttpStatus; | import com.ruoyi.common.constant.HttpStatus; | ||||||
| import com.ruoyi.common.core.domain.model.LoginUser; | import com.ruoyi.common.core.domain.model.LoginUser; | ||||||
| import com.ruoyi.common.exception.CustomException; | import com.ruoyi.common.exception.ServiceException; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 安全服务工具类 |  * 安全服务工具类 | ||||||
| @@ -25,7 +25,7 @@ public class SecurityUtils | |||||||
|         } |         } | ||||||
|         catch (Exception e) |         catch (Exception e) | ||||||
|         { |         { | ||||||
|             throw new CustomException("获取用户ID异常", HttpStatus.UNAUTHORIZED); |             throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -40,7 +40,7 @@ public class SecurityUtils | |||||||
|         } |         } | ||||||
|         catch (Exception e) |         catch (Exception e) | ||||||
|         { |         { | ||||||
|             throw new CustomException("获取部门ID异常", HttpStatus.UNAUTHORIZED); |             throw new ServiceException("获取部门ID异常", HttpStatus.UNAUTHORIZED); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
| @@ -55,7 +55,7 @@ public class SecurityUtils | |||||||
|         } |         } | ||||||
|         catch (Exception e) |         catch (Exception e) | ||||||
|         { |         { | ||||||
|             throw new CustomException("获取用户账户异常", HttpStatus.UNAUTHORIZED); |             throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -70,7 +70,7 @@ public class SecurityUtils | |||||||
|         } |         } | ||||||
|         catch (Exception e) |         catch (Exception e) | ||||||
|         { |         { | ||||||
|             throw new CustomException("获取用户信息异常", HttpStatus.UNAUTHORIZED); |             throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -66,7 +66,7 @@ import com.ruoyi.common.annotation.Excels; | |||||||
| import com.ruoyi.common.config.RuoYiConfig; | import com.ruoyi.common.config.RuoYiConfig; | ||||||
| import com.ruoyi.common.core.domain.AjaxResult; | import com.ruoyi.common.core.domain.AjaxResult; | ||||||
| import com.ruoyi.common.core.text.Convert; | import com.ruoyi.common.core.text.Convert; | ||||||
| import com.ruoyi.common.exception.CustomException; | import com.ruoyi.common.exception.UtilException; | ||||||
| import com.ruoyi.common.utils.DateUtils; | import com.ruoyi.common.utils.DateUtils; | ||||||
| import com.ruoyi.common.utils.DictUtils; | import com.ruoyi.common.utils.DictUtils; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| @@ -450,7 +450,7 @@ public class ExcelUtil<T> | |||||||
|         catch (Exception e) |         catch (Exception e) | ||||||
|         { |         { | ||||||
|             log.error("导出Excel异常{}", e.getMessage()); |             log.error("导出Excel异常{}", e.getMessage()); | ||||||
|             throw new CustomException("导出Excel失败,请联系网站管理员!"); |             throw new UtilException("导出Excel失败,请联系网站管理员!"); | ||||||
|         } |         } | ||||||
|         finally |         finally | ||||||
|         { |         { | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| package com.ruoyi.common.utils.sql; | package com.ruoyi.common.utils.sql; | ||||||
|  |  | ||||||
| import com.ruoyi.common.exception.BaseException; | import com.ruoyi.common.exception.UtilException; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -22,7 +22,7 @@ public class SqlUtil | |||||||
|     { |     { | ||||||
|         if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) |         if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) | ||||||
|         { |         { | ||||||
|             throw new BaseException("参数不符合规范,不能进行查询"); |             throw new UtilException("参数不符合规范,不能进行查询"); | ||||||
|         } |         } | ||||||
|         return value; |         return value; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -1,20 +1,18 @@ | |||||||
| package com.ruoyi.framework.web.exception; | package com.ruoyi.framework.web.exception; | ||||||
|  |  | ||||||
|  | import javax.servlet.http.HttpServletRequest; | ||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
| import org.springframework.security.access.AccessDeniedException; | import org.springframework.security.access.AccessDeniedException; | ||||||
| import org.springframework.security.authentication.AccountExpiredException; |  | ||||||
| import org.springframework.security.core.userdetails.UsernameNotFoundException; |  | ||||||
| import org.springframework.validation.BindException; | import org.springframework.validation.BindException; | ||||||
|  | import org.springframework.web.HttpRequestMethodNotSupportedException; | ||||||
| import org.springframework.web.bind.MethodArgumentNotValidException; | import org.springframework.web.bind.MethodArgumentNotValidException; | ||||||
| import org.springframework.web.bind.annotation.ExceptionHandler; | import org.springframework.web.bind.annotation.ExceptionHandler; | ||||||
| import org.springframework.web.bind.annotation.RestControllerAdvice; | import org.springframework.web.bind.annotation.RestControllerAdvice; | ||||||
| import org.springframework.web.servlet.NoHandlerFoundException; |  | ||||||
| import com.ruoyi.common.constant.HttpStatus; | import com.ruoyi.common.constant.HttpStatus; | ||||||
| import com.ruoyi.common.core.domain.AjaxResult; | import com.ruoyi.common.core.domain.AjaxResult; | ||||||
| import com.ruoyi.common.exception.BaseException; |  | ||||||
| import com.ruoyi.common.exception.CustomException; |  | ||||||
| import com.ruoyi.common.exception.DemoModeException; | import com.ruoyi.common.exception.DemoModeException; | ||||||
|  | import com.ruoyi.common.exception.ServiceException; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -28,59 +26,58 @@ public class GlobalExceptionHandler | |||||||
|     private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); |     private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 基础异常 |      * 权限校验异常 | ||||||
|      */ |      */ | ||||||
|     @ExceptionHandler(BaseException.class) |     @ExceptionHandler(AccessDeniedException.class) | ||||||
|     public AjaxResult baseException(BaseException e) |     public AjaxResult handleAccessDeniedException(AccessDeniedException e, HttpServletRequest request) | ||||||
|     { |     { | ||||||
|  |         String requestURI = request.getRequestURI(); | ||||||
|  |         log.error("请求地址'{}',权限校验失败'{}'", requestURI, e.getMessage()); | ||||||
|  |         return AjaxResult.error(HttpStatus.FORBIDDEN, "没有权限,请联系管理员授权"); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 请求方式不支持 | ||||||
|  |      */ | ||||||
|  |     @ExceptionHandler(HttpRequestMethodNotSupportedException.class) | ||||||
|  |     public AjaxResult handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException e, | ||||||
|  |             HttpServletRequest request) | ||||||
|  |     { | ||||||
|  |         String requestURI = request.getRequestURI(); | ||||||
|  |         log.error("请求地址'{}',不支持'{}'请求", requestURI, e.getMethod()); | ||||||
|         return AjaxResult.error(e.getMessage()); |         return AjaxResult.error(e.getMessage()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 业务异常 |      * 业务异常 | ||||||
|      */ |      */ | ||||||
|     @ExceptionHandler(CustomException.class) |     @ExceptionHandler(ServiceException.class) | ||||||
|     public AjaxResult businessException(CustomException e) |     public AjaxResult handleServiceException(ServiceException e, HttpServletRequest request) | ||||||
|     { |  | ||||||
|         if (StringUtils.isNull(e.getCode())) |  | ||||||
|         { |  | ||||||
|             return AjaxResult.error(e.getMessage()); |  | ||||||
|         } |  | ||||||
|         return AjaxResult.error(e.getCode(), e.getMessage()); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @ExceptionHandler(NoHandlerFoundException.class) |  | ||||||
|     public AjaxResult handlerNoFoundException(Exception e) |  | ||||||
|     { |     { | ||||||
|         log.error(e.getMessage(), e); |         log.error(e.getMessage(), e); | ||||||
|         return AjaxResult.error(HttpStatus.NOT_FOUND, "路径不存在,请检查路径是否正确"); |         Integer code = e.getCode(); | ||||||
|  |         return StringUtils.isNotNull(code) ? AjaxResult.error(code, e.getMessage()) : AjaxResult.error(e.getMessage()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @ExceptionHandler(AccessDeniedException.class) |     /** | ||||||
|     public AjaxResult handleAuthorizationException(AccessDeniedException e) |      * 拦截未知的运行时异常 | ||||||
|  |      */ | ||||||
|  |     @ExceptionHandler(RuntimeException.class) | ||||||
|  |     public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request) | ||||||
|     { |     { | ||||||
|         log.error(e.getMessage()); |         String requestURI = request.getRequestURI(); | ||||||
|         return AjaxResult.error(HttpStatus.FORBIDDEN, "没有权限,请联系管理员授权"); |         log.error("请求地址'{}',发生未知异常.", requestURI, e); | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @ExceptionHandler(AccountExpiredException.class) |  | ||||||
|     public AjaxResult handleAccountExpiredException(AccountExpiredException e) |  | ||||||
|     { |  | ||||||
|         log.error(e.getMessage(), e); |  | ||||||
|         return AjaxResult.error(e.getMessage()); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @ExceptionHandler(UsernameNotFoundException.class) |  | ||||||
|     public AjaxResult handleUsernameNotFoundException(UsernameNotFoundException e) |  | ||||||
|     { |  | ||||||
|         log.error(e.getMessage(), e); |  | ||||||
|         return AjaxResult.error(e.getMessage()); |         return AjaxResult.error(e.getMessage()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 系统异常 | ||||||
|  |      */ | ||||||
|     @ExceptionHandler(Exception.class) |     @ExceptionHandler(Exception.class) | ||||||
|     public AjaxResult handleException(Exception e) |     public AjaxResult handleException(Exception e, HttpServletRequest request) | ||||||
|     { |     { | ||||||
|         log.error(e.getMessage(), e); |         String requestURI = request.getRequestURI(); | ||||||
|  |         log.error("请求地址'{}',发生系统异常.", requestURI, e); | ||||||
|         return AjaxResult.error(e.getMessage()); |         return AjaxResult.error(e.getMessage()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -88,7 +85,7 @@ public class GlobalExceptionHandler | |||||||
|      * 自定义验证异常 |      * 自定义验证异常 | ||||||
|      */ |      */ | ||||||
|     @ExceptionHandler(BindException.class) |     @ExceptionHandler(BindException.class) | ||||||
|     public AjaxResult validatedBindException(BindException e) |     public AjaxResult handleBindException(BindException e) | ||||||
|     { |     { | ||||||
|         log.error(e.getMessage(), e); |         log.error(e.getMessage(), e); | ||||||
|         String message = e.getAllErrors().get(0).getDefaultMessage(); |         String message = e.getAllErrors().get(0).getDefaultMessage(); | ||||||
| @@ -99,7 +96,7 @@ public class GlobalExceptionHandler | |||||||
|      * 自定义验证异常 |      * 自定义验证异常 | ||||||
|      */ |      */ | ||||||
|     @ExceptionHandler(MethodArgumentNotValidException.class) |     @ExceptionHandler(MethodArgumentNotValidException.class) | ||||||
|     public Object validExceptionHandler(MethodArgumentNotValidException e) |     public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e) | ||||||
|     { |     { | ||||||
|         log.error(e.getMessage(), e); |         log.error(e.getMessage(), e); | ||||||
|         String message = e.getBindingResult().getFieldError().getDefaultMessage(); |         String message = e.getBindingResult().getFieldError().getDefaultMessage(); | ||||||
| @@ -110,7 +107,7 @@ public class GlobalExceptionHandler | |||||||
|      * 演示模式异常 |      * 演示模式异常 | ||||||
|      */ |      */ | ||||||
|     @ExceptionHandler(DemoModeException.class) |     @ExceptionHandler(DemoModeException.class) | ||||||
|     public AjaxResult demoModeException(DemoModeException e) |     public AjaxResult handleDemoModeException(DemoModeException e) | ||||||
|     { |     { | ||||||
|         return AjaxResult.error("演示模式,不允许操作"); |         return AjaxResult.error("演示模式,不允许操作"); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ import com.ruoyi.common.constant.Constants; | |||||||
| import com.ruoyi.common.core.domain.entity.SysUser; | import com.ruoyi.common.core.domain.entity.SysUser; | ||||||
| import com.ruoyi.common.core.domain.model.LoginUser; | import com.ruoyi.common.core.domain.model.LoginUser; | ||||||
| import com.ruoyi.common.core.redis.RedisCache; | import com.ruoyi.common.core.redis.RedisCache; | ||||||
| import com.ruoyi.common.exception.CustomException; | import com.ruoyi.common.exception.ServiceException; | ||||||
| import com.ruoyi.common.exception.user.CaptchaException; | import com.ruoyi.common.exception.user.CaptchaException; | ||||||
| import com.ruoyi.common.exception.user.CaptchaExpireException; | import com.ruoyi.common.exception.user.CaptchaExpireException; | ||||||
| import com.ruoyi.common.exception.user.UserPasswordNotMatchException; | import com.ruoyi.common.exception.user.UserPasswordNotMatchException; | ||||||
| @@ -82,7 +82,7 @@ public class SysLoginService | |||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); |                 AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); | ||||||
|                 throw new CustomException(e.getMessage()); |                 throw new ServiceException(e.getMessage()); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); |         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ import org.springframework.stereotype.Service; | |||||||
| import com.ruoyi.common.core.domain.entity.SysUser; | import com.ruoyi.common.core.domain.entity.SysUser; | ||||||
| import com.ruoyi.common.core.domain.model.LoginUser; | import com.ruoyi.common.core.domain.model.LoginUser; | ||||||
| import com.ruoyi.common.enums.UserStatus; | import com.ruoyi.common.enums.UserStatus; | ||||||
| import com.ruoyi.common.exception.BaseException; | import com.ruoyi.common.exception.ServiceException; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| import com.ruoyi.system.service.ISysUserService; | import com.ruoyi.system.service.ISysUserService; | ||||||
|  |  | ||||||
| @@ -37,17 +37,17 @@ public class UserDetailsServiceImpl implements UserDetailsService | |||||||
|         if (StringUtils.isNull(user)) |         if (StringUtils.isNull(user)) | ||||||
|         { |         { | ||||||
|             log.info("登录用户:{} 不存在.", username); |             log.info("登录用户:{} 不存在.", username); | ||||||
|             throw new UsernameNotFoundException("登录用户:" + username + " 不存在"); |             throw new ServiceException("登录用户:" + username + " 不存在"); | ||||||
|         } |         } | ||||||
|         else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) |         else if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) | ||||||
|         { |         { | ||||||
|             log.info("登录用户:{} 已被删除.", username); |             log.info("登录用户:{} 已被删除.", username); | ||||||
|             throw new BaseException("对不起,您的账号:" + username + " 已被删除"); |             throw new ServiceException("对不起,您的账号:" + username + " 已被删除"); | ||||||
|         } |         } | ||||||
|         else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) |         else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) | ||||||
|         { |         { | ||||||
|             log.info("登录用户:{} 已被停用.", username); |             log.info("登录用户:{} 已被停用.", username); | ||||||
|             throw new BaseException("对不起,您的账号:" + username + " 已停用"); |             throw new ServiceException("对不起,您的账号:" + username + " 已停用"); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return createLoginUser(user); |         return createLoginUser(user); | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ import com.alibaba.fastjson.JSONObject; | |||||||
| import com.ruoyi.common.constant.Constants; | import com.ruoyi.common.constant.Constants; | ||||||
| import com.ruoyi.common.constant.GenConstants; | import com.ruoyi.common.constant.GenConstants; | ||||||
| import com.ruoyi.common.core.text.CharsetKit; | import com.ruoyi.common.core.text.CharsetKit; | ||||||
| import com.ruoyi.common.exception.CustomException; | import com.ruoyi.common.exception.ServiceException; | ||||||
| import com.ruoyi.common.utils.SecurityUtils; | import com.ruoyi.common.utils.SecurityUtils; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| import com.ruoyi.generator.domain.GenTable; | import com.ruoyi.generator.domain.GenTable; | ||||||
| @@ -180,7 +180,7 @@ public class GenTableServiceImpl implements IGenTableService | |||||||
|         } |         } | ||||||
|         catch (Exception e) |         catch (Exception e) | ||||||
|         { |         { | ||||||
|             throw new CustomException("导入失败:" + e.getMessage()); |             throw new ServiceException("导入失败:" + e.getMessage()); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -269,7 +269,7 @@ public class GenTableServiceImpl implements IGenTableService | |||||||
|                 } |                 } | ||||||
|                 catch (IOException e) |                 catch (IOException e) | ||||||
|                 { |                 { | ||||||
|                     throw new CustomException("渲染模板失败,表名:" + table.getTableName()); |                     throw new ServiceException("渲染模板失败,表名:" + table.getTableName()); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -291,7 +291,7 @@ public class GenTableServiceImpl implements IGenTableService | |||||||
|         List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); |         List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); | ||||||
|         if (StringUtils.isEmpty(dbTableColumns)) |         if (StringUtils.isEmpty(dbTableColumns)) | ||||||
|         { |         { | ||||||
|             throw new CustomException("同步数据失败,原表结构不存在"); |             throw new ServiceException("同步数据失败,原表结构不存在"); | ||||||
|         } |         } | ||||||
|         List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); |         List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); | ||||||
|  |  | ||||||
| @@ -383,25 +383,25 @@ public class GenTableServiceImpl implements IGenTableService | |||||||
|             JSONObject paramsObj = JSONObject.parseObject(options); |             JSONObject paramsObj = JSONObject.parseObject(options); | ||||||
|             if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) |             if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) | ||||||
|             { |             { | ||||||
|                 throw new CustomException("树编码字段不能为空"); |                 throw new ServiceException("树编码字段不能为空"); | ||||||
|             } |             } | ||||||
|             else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) |             else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) | ||||||
|             { |             { | ||||||
|                 throw new CustomException("树父编码字段不能为空"); |                 throw new ServiceException("树父编码字段不能为空"); | ||||||
|             } |             } | ||||||
|             else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) |             else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) | ||||||
|             { |             { | ||||||
|                 throw new CustomException("树名称字段不能为空"); |                 throw new ServiceException("树名称字段不能为空"); | ||||||
|             } |             } | ||||||
|             else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) |             else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) | ||||||
|             { |             { | ||||||
|                 if (StringUtils.isEmpty(genTable.getSubTableName())) |                 if (StringUtils.isEmpty(genTable.getSubTableName())) | ||||||
|                 { |                 { | ||||||
|                     throw new CustomException("关联子表的表名不能为空"); |                     throw new ServiceException("关联子表的表名不能为空"); | ||||||
|                 } |                 } | ||||||
|                 else if (StringUtils.isEmpty(genTable.getSubTableFkName())) |                 else if (StringUtils.isEmpty(genTable.getSubTableFkName())) | ||||||
|                 { |                 { | ||||||
|                     throw new CustomException("子表关联的外键名不能为空"); |                     throw new ServiceException("子表关联的外键名不能为空"); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ import com.ruoyi.common.constant.UserConstants; | |||||||
| import com.ruoyi.common.core.redis.RedisCache; | import com.ruoyi.common.core.redis.RedisCache; | ||||||
| import com.ruoyi.common.core.text.Convert; | import com.ruoyi.common.core.text.Convert; | ||||||
| import com.ruoyi.common.enums.DataSourceType; | import com.ruoyi.common.enums.DataSourceType; | ||||||
| import com.ruoyi.common.exception.CustomException; | import com.ruoyi.common.exception.ServiceException; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| import com.ruoyi.system.domain.SysConfig; | import com.ruoyi.system.domain.SysConfig; | ||||||
| import com.ruoyi.system.mapper.SysConfigMapper; | import com.ruoyi.system.mapper.SysConfigMapper; | ||||||
| @@ -156,7 +156,7 @@ public class SysConfigServiceImpl implements ISysConfigService | |||||||
|             SysConfig config = selectConfigById(configId); |             SysConfig config = selectConfigById(configId); | ||||||
|             if (StringUtils.equals(UserConstants.YES, config.getConfigType())) |             if (StringUtils.equals(UserConstants.YES, config.getConfigType())) | ||||||
|             { |             { | ||||||
|                 throw new CustomException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey())); |                 throw new ServiceException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey())); | ||||||
|             } |             } | ||||||
|             configMapper.deleteConfigById(configId); |             configMapper.deleteConfigById(configId); | ||||||
|             redisCache.deleteObject(getCacheKey(config.getConfigKey())); |             redisCache.deleteObject(getCacheKey(config.getConfigKey())); | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ import com.ruoyi.common.core.domain.TreeSelect; | |||||||
| import com.ruoyi.common.core.domain.entity.SysDept; | import com.ruoyi.common.core.domain.entity.SysDept; | ||||||
| import com.ruoyi.common.core.domain.entity.SysRole; | import com.ruoyi.common.core.domain.entity.SysRole; | ||||||
| import com.ruoyi.common.core.text.Convert; | import com.ruoyi.common.core.text.Convert; | ||||||
| import com.ruoyi.common.exception.CustomException; | import com.ruoyi.common.exception.ServiceException; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| import com.ruoyi.system.mapper.SysDeptMapper; | import com.ruoyi.system.mapper.SysDeptMapper; | ||||||
| import com.ruoyi.system.mapper.SysRoleMapper; | import com.ruoyi.system.mapper.SysRoleMapper; | ||||||
| @@ -184,7 +184,7 @@ public class SysDeptServiceImpl implements ISysDeptService | |||||||
|         // 如果父节点不为正常状态,则不允许新增子节点 |         // 如果父节点不为正常状态,则不允许新增子节点 | ||||||
|         if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) |         if (!UserConstants.DEPT_NORMAL.equals(info.getStatus())) | ||||||
|         { |         { | ||||||
|             throw new CustomException("部门停用,不允许新增"); |             throw new ServiceException("部门停用,不允许新增"); | ||||||
|         } |         } | ||||||
|         dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); |         dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); | ||||||
|         return deptMapper.insertDept(dept); |         return deptMapper.insertDept(dept); | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ package com.ruoyi.system.service.impl; | |||||||
| import com.ruoyi.common.constant.UserConstants; | import com.ruoyi.common.constant.UserConstants; | ||||||
| import com.ruoyi.common.core.domain.entity.SysDictData; | import com.ruoyi.common.core.domain.entity.SysDictData; | ||||||
| import com.ruoyi.common.core.domain.entity.SysDictType; | import com.ruoyi.common.core.domain.entity.SysDictType; | ||||||
| import com.ruoyi.common.exception.CustomException; | import com.ruoyi.common.exception.ServiceException; | ||||||
| import com.ruoyi.common.utils.DictUtils; | import com.ruoyi.common.utils.DictUtils; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| import com.ruoyi.system.mapper.SysDictDataMapper; | import com.ruoyi.system.mapper.SysDictDataMapper; | ||||||
| @@ -122,7 +122,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService | |||||||
|             SysDictType dictType = selectDictTypeById(dictId); |             SysDictType dictType = selectDictTypeById(dictId); | ||||||
|             if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) |             if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) | ||||||
|             { |             { | ||||||
|                 throw new CustomException(String.format("%1$s已分配,不能删除", dictType.getDictName())); |                 throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName())); | ||||||
|             } |             } | ||||||
|             dictTypeMapper.deleteDictTypeById(dictId); |             dictTypeMapper.deleteDictTypeById(dictId); | ||||||
|             DictUtils.removeDictCache(dictType.getDictType()); |             DictUtils.removeDictCache(dictType.getDictType()); | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ import java.util.List; | |||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import com.ruoyi.common.constant.UserConstants; | import com.ruoyi.common.constant.UserConstants; | ||||||
| import com.ruoyi.common.exception.CustomException; | import com.ruoyi.common.exception.ServiceException; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| import com.ruoyi.system.domain.SysPost; | import com.ruoyi.system.domain.SysPost; | ||||||
| import com.ruoyi.system.mapper.SysPostMapper; | import com.ruoyi.system.mapper.SysPostMapper; | ||||||
| @@ -147,7 +147,7 @@ public class SysPostServiceImpl implements ISysPostService | |||||||
|             SysPost post = selectPostById(postId); |             SysPost post = selectPostById(postId); | ||||||
|             if (countUserPostById(postId) > 0) |             if (countUserPostById(postId) > 0) | ||||||
|             { |             { | ||||||
|                 throw new CustomException(String.format("%1$s已分配,不能删除", post.getPostName())); |                 throw new ServiceException(String.format("%1$s已分配,不能删除", post.getPostName())); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return postMapper.deletePostByIds(postIds); |         return postMapper.deletePostByIds(postIds); | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ import org.springframework.transaction.annotation.Transactional; | |||||||
| import com.ruoyi.common.annotation.DataScope; | import com.ruoyi.common.annotation.DataScope; | ||||||
| import com.ruoyi.common.constant.UserConstants; | import com.ruoyi.common.constant.UserConstants; | ||||||
| import com.ruoyi.common.core.domain.entity.SysRole; | import com.ruoyi.common.core.domain.entity.SysRole; | ||||||
| import com.ruoyi.common.exception.CustomException; | import com.ruoyi.common.exception.ServiceException; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| import com.ruoyi.common.utils.spring.SpringUtils; | import com.ruoyi.common.utils.spring.SpringUtils; | ||||||
| import com.ruoyi.system.domain.SysRoleDept; | import com.ruoyi.system.domain.SysRoleDept; | ||||||
| @@ -183,7 +183,7 @@ public class SysRoleServiceImpl implements ISysRoleService | |||||||
|     { |     { | ||||||
|         if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) |         if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) | ||||||
|         { |         { | ||||||
|             throw new CustomException("不允许操作超级管理员角色"); |             throw new ServiceException("不允许操作超级管理员角色"); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -342,7 +342,7 @@ public class SysRoleServiceImpl implements ISysRoleService | |||||||
|             SysRole role = selectRoleById(roleId); |             SysRole role = selectRoleById(roleId); | ||||||
|             if (countUserRoleByRoleId(roleId) > 0) |             if (countUserRoleByRoleId(roleId) > 0) | ||||||
|             { |             { | ||||||
|                 throw new CustomException(String.format("%1$s已分配,不能删除", role.getRoleName())); |                 throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName())); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         // 删除角色与菜单关联 |         // 删除角色与菜单关联 | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ import com.ruoyi.common.annotation.DataScope; | |||||||
| import com.ruoyi.common.constant.UserConstants; | import com.ruoyi.common.constant.UserConstants; | ||||||
| import com.ruoyi.common.core.domain.entity.SysRole; | import com.ruoyi.common.core.domain.entity.SysRole; | ||||||
| import com.ruoyi.common.core.domain.entity.SysUser; | import com.ruoyi.common.core.domain.entity.SysUser; | ||||||
| import com.ruoyi.common.exception.CustomException; | import com.ruoyi.common.exception.ServiceException; | ||||||
| import com.ruoyi.common.utils.SecurityUtils; | import com.ruoyi.common.utils.SecurityUtils; | ||||||
| import com.ruoyi.common.utils.StringUtils; | import com.ruoyi.common.utils.StringUtils; | ||||||
| import com.ruoyi.system.domain.SysPost; | import com.ruoyi.system.domain.SysPost; | ||||||
| @@ -223,7 +223,7 @@ public class SysUserServiceImpl implements ISysUserService | |||||||
|     { |     { | ||||||
|         if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) |         if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) | ||||||
|         { |         { | ||||||
|             throw new CustomException("不允许操作超级管理员用户"); |             throw new ServiceException("不允许操作超级管理员用户"); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -485,7 +485,7 @@ public class SysUserServiceImpl implements ISysUserService | |||||||
|     { |     { | ||||||
|         if (StringUtils.isNull(userList) || userList.size() == 0) |         if (StringUtils.isNull(userList) || userList.size() == 0) | ||||||
|         { |         { | ||||||
|             throw new CustomException("导入用户数据不能为空!"); |             throw new ServiceException("导入用户数据不能为空!"); | ||||||
|         } |         } | ||||||
|         int successNum = 0; |         int successNum = 0; | ||||||
|         int failureNum = 0; |         int failureNum = 0; | ||||||
| @@ -530,7 +530,7 @@ public class SysUserServiceImpl implements ISysUserService | |||||||
|         if (failureNum > 0) |         if (failureNum > 0) | ||||||
|         { |         { | ||||||
|             failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); |             failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); | ||||||
|             throw new CustomException(failureMsg.toString()); |             throw new ServiceException(failureMsg.toString()); | ||||||
|         } |         } | ||||||
|         else |         else | ||||||
|         { |         { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user