修改异常处理.

This commit is contained in:
lijiahang
2023-07-25 15:02:15 +08:00
parent f01f696d37
commit ee53ec6486
8 changed files with 49 additions and 54 deletions

View File

@@ -6,7 +6,12 @@ import com.orion.lang.utils.Exceptions;
import com.orion.lang.utils.Strings;
/**
* 错误码
* 用于定义错误码
* <p>
* 1. http 通用 status
* 2. 前端需要特殊处理
* 3. @ExceptionHandler 全局异常
* 其他情况可以定义在 ExceprionMessage 中
*
* @author Jiahang Li
* @version 1.0.0
@@ -15,6 +20,8 @@ import com.orion.lang.utils.Strings;
@SuppressWarnings("ALL")
public enum ErrorCode implements CodeInfo {
// -------------------- http message --------------------
BAD_REQUEST(400, "参数验证失败"),
UNAUTHORIZED(401, "当前认证信息已失效, 请重新登录"),
@@ -27,7 +34,7 @@ public enum ErrorCode implements CodeInfo {
REQUEST_TIMEOUT(408, "处理超时"),
CONFLICT(409, "状态发生改变, 请刷新后重试"),
CONFLICT(409, "数据状态发生改变, 请刷新后重试"),
PAYLOAD_TOO_LARGE(413, "请求过大"),
@@ -45,10 +52,6 @@ public enum ErrorCode implements CodeInfo {
USER_LOCKED(702, "当前用户已被锁定"),
ROLE_PRESENT(703, "角色 [{}] 不存在"),
DATA_ALTER(704, "数据发生改变, 请刷新后重试"),
// -------------------- 自定义 - 通用 --------------------
NETWORK_FLUCTUATION(900, "当前环境网路波动"),

View File

@@ -31,6 +31,8 @@ public interface ErrorMessage {
String ROLE_ABSENT = "角色不存在";
String ROLE_CODE_ABSENT = "角色 [{}] 不存在";
String INVALID_PARENT_MENU = "所选父菜单不合法";
String PARENT_MENU_ABSENT = "父菜单不存在";

View File

@@ -1,5 +1,6 @@
package com.orion.ops.module.infra.enums;
import com.orion.ops.framework.common.constant.ErrorCode;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -45,4 +46,19 @@ public enum UserStatusEnum {
return null;
}
/**
* 检查用户状态
*
* @param status status
*/
public static void checkUserStatus(Integer status) {
if (UserStatusEnum.DISABLED.getStatus().equals(status)) {
// 禁用状态
throw ErrorCode.USER_DISABLED.exception();
} else if (UserStatusEnum.LOCKED.getStatus().equals(status)) {
// 锁定状态
throw ErrorCode.USER_LOCKED.exception();
}
}
}

View File

@@ -54,7 +54,7 @@ public class SecurityFrameworkServiceImpl implements SecurityFrameworkService {
// 获取登陆信息
LoginUser user = authenticationService.getLoginUser(tokenInfo.getId());
// 检查用户状态
this.checkUserStatus(user);
UserStatusEnum.checkUserStatus(user.getStatus());
return user;
}
@@ -78,17 +78,4 @@ public class SecurityFrameworkServiceImpl implements SecurityFrameworkService {
}
}
/**
* 检查用户状态
*
* @param user user
*/
private void checkUserStatus(LoginUser user) {
if (UserStatusEnum.DISABLED.getStatus().equals(user.getStatus())) {
throw ErrorCode.USER_DISABLED.exception();
} else if (UserStatusEnum.LOCKED.getStatus().equals(user.getStatus())) {
throw ErrorCode.USER_LOCKED.exception();
}
}
}

View File

@@ -8,7 +8,6 @@ import com.orion.lang.utils.Exceptions;
import com.orion.lang.utils.collect.Lists;
import com.orion.lang.utils.crypto.Signatures;
import com.orion.ops.framework.common.constant.Const;
import com.orion.ops.framework.common.constant.ErrorCode;
import com.orion.ops.framework.common.constant.ErrorMessage;
import com.orion.ops.framework.common.security.LoginUser;
import com.orion.ops.framework.common.utils.CryptoUtils;
@@ -75,7 +74,7 @@ public class AuthenticationServiceImpl implements AuthenticationService {
boolean passwordCorrect = this.checkPassword(request, user);
Valid.isTrue(passwordCorrect, ErrorMessage.USERNAME_PASSWORD_ERROR);
// 检查用户状态
this.checkUserStatus(user.getStatus());
UserStatusEnum.checkUserStatus(user.getStatus());
// 设置上次登录时间
this.setLastLoginTime(user.getId());
// 检查用户缓存
@@ -239,21 +238,6 @@ public class AuthenticationServiceImpl implements AuthenticationService {
return false;
}
/**
* 检查用户状态
*
* @param status status
*/
private void checkUserStatus(Integer status) {
if (UserStatusEnum.DISABLED.getStatus().equals(status)) {
// 禁用状态
throw ErrorCode.USER_DISABLED.exception();
} else if (UserStatusEnum.LOCKED.getStatus().equals(status)) {
// 锁定状态
throw ErrorCode.USER_LOCKED.exception();
}
}
/**
* 设置最后登录时间
*

View File

@@ -1,6 +1,7 @@
package com.orion.ops.module.infra.service.impl;
import com.orion.lang.utils.collect.Lists;
import com.orion.ops.framework.common.constant.Const;
import com.orion.ops.framework.common.security.LoginUser;
import com.orion.ops.framework.security.core.utils.SecurityUtils;
import com.orion.ops.module.infra.convert.SystemMenuConvert;
@@ -156,10 +157,10 @@ public class PermissionServiceImpl implements PermissionService {
// 查询角色菜单
Stream<SystemMenuCacheDTO> mergeStream;
if (RoleDefine.containsAdmin(roles)) {
// 管理员拥有全部权限
// 管理员拥有全部菜单
mergeStream = menuCache.stream();
} else {
// 当前用户所适配的角色
// 当前用户所适配的角色菜单
mergeStream = roles.stream()
.map(roleMenuCache::get)
.filter(Objects::nonNull)
@@ -187,15 +188,21 @@ public class PermissionServiceImpl implements PermissionService {
if (roles.isEmpty()) {
permissions = Lists.empty();
} else {
permissions = roles.stream()
.map(roleMenuCache::get)
.filter(Objects::nonNull)
.flatMap(Collection::stream)
.filter(s -> MenuStatusEnum.ENABLED.getStatus().equals(s.getStatus()))
.map(SystemMenuCacheDTO::getPermission)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
if (RoleDefine.containsAdmin(roles)) {
// 管理员拥有全部权限
permissions = Lists.of(Const.ASTERISK);
} else {
// 当前用户所适配的角色的权限
permissions = roles.stream()
.map(roleMenuCache::get)
.filter(Objects::nonNull)
.flatMap(Collection::stream)
.filter(s -> MenuStatusEnum.ENABLED.getStatus().equals(s.getStatus()))
.map(SystemMenuCacheDTO::getPermission)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
}
}
// 组装数据
return UserPermissionVO.builder()

View File

@@ -60,7 +60,7 @@ public class SystemRoleMenuServiceImpl implements SystemRoleMenuService {
// 查询菜单列表
List<SystemMenuDO> menuList = systemMenuDAO.selectBatchIds(menuIdList);
if (menuIdList.size() != menuList.size()) {
throw ErrorCode.DATA_ALTER.exception();
throw ErrorCode.CONFLICT.exception();
}
// 查询角色菜单
List<Long> beforeMenuIdList = systemRoleMenuDAO.of()

View File

@@ -1,7 +1,6 @@
package com.orion.ops.module.infra.service.impl;
import com.orion.lang.utils.collect.Lists;
import com.orion.ops.framework.common.constant.ErrorCode;
import com.orion.ops.framework.common.constant.ErrorMessage;
import com.orion.ops.framework.common.security.LoginUser;
import com.orion.ops.framework.common.utils.Valid;
@@ -75,10 +74,7 @@ public class SystemUserRoleServiceImpl implements SystemUserRoleService {
.map(SystemRoleDO::getCode)
.collect(Collectors.toList());
for (String roleCode : roleCodeList) {
// 角色不存在
if (!userRoleCodes.contains(roleCode)) {
throw ErrorCode.ROLE_PRESENT.exception(roleCode);
}
Valid.in(roleCode, userRoleCodes, ErrorMessage.ROLE_CODE_ABSENT, roleCode);
}
}
// 删除用户角色关联