diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/common/util/Throws.java b/tyr-server/src/main/java/cn/axzo/tyr/server/common/util/Throws.java index c63a9249..b1f898c7 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/common/util/Throws.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/common/util/Throws.java @@ -14,8 +14,8 @@ import cn.axzo.framework.domain.web.code.IRespCode; */ public class Throws { - /** 用于抛出请求参数类异常 **/ - public static BizException paramException(IRespCode code, String message) { + /** 用于抛出请求参数类异常 - 避免msg丢失 **/ + public static BizException bizException(IRespCode code, String message) { throw new BizException(ErrorLevel.P2, ErrorType.ERROR_BUSINESS, code, message); } } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/config/exception/BizExceptionResultHandler.java b/tyr-server/src/main/java/cn/axzo/tyr/server/config/exception/BizExceptionResultHandler.java new file mode 100644 index 00000000..8c0e4837 --- /dev/null +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/config/exception/BizExceptionResultHandler.java @@ -0,0 +1,33 @@ +package cn.axzo.tyr.server.config.exception; + +import cn.axzo.framework.autoconfigure.web.exception.RespErrorCodeMappingProperties; +import cn.axzo.framework.autoconfigure.web.exception.handler.AbstractExceptionApiResultHandler; +import cn.axzo.framework.domain.web.BizException; +import cn.axzo.framework.domain.web.code.IRespCode; +import cn.axzo.framework.domain.web.code.RespCode; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; + +/** + * 业务异常处理器 + * 避免返回http 500,造成封装多余的消息 + * @version V1.0 + * @author: ZhanSiHu + * @date: 2023/9/19 16:12 + */ +@Component +public class BizExceptionResultHandler extends AbstractExceptionApiResultHandler { + public BizExceptionResultHandler(RespErrorCodeMappingProperties properties) { + super(properties); + } + + @Override + protected IRespCode decode(BizException ex, IRespCode fallbackCode) { + return new RespCode(ex.getCode(), ex.getMessage()); + } + + @Override + protected HttpStatus mappingHttpStatus(String code, BizException ex) { + return HttpStatus.OK; + } +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java index 44b3d133..3f70641e 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/PermissionPointServiceImpl.java @@ -171,7 +171,7 @@ public class PermissionPointServiceImpl implements PermissionPointService { SaasFeature parent = this.saasFeatureDao.getById(request.getParentId()); if (parent == null) { log.error("指定的父级节点不存在:{}", request.getParentId()); - throw new BizException(BaseCode.BAD_REQUEST); + Throws.bizException(BaseCode.BAD_REQUEST, "父级节点不存在"); } //追加条件path左匹配 queryWrapper.likeRight(SaasFeature::getPath, parent.getPath() + parent.getId() + FEATURE_PATH_DELIMITER); @@ -326,7 +326,7 @@ public class PermissionPointServiceImpl implements PermissionPointService { SaasFeature feature = this.saasFeatureDao.getById(permissionId); if (feature == null) { log.error("未查询到权限点:{}", permissionId); - throw new BizException(BaseCode.BAD_REQUEST, "未查询到权限点"); + Throws.bizException(BaseCode.BAD_REQUEST, "未查询到权限点"); } return feature; } @@ -363,7 +363,7 @@ public class PermissionPointServiceImpl implements PermissionPointService { switch (featureType) { case MODULE: if (parent != null) { - Throws.paramException(BaseCode.BAD_REQUEST, "菜单必须为顶级"); + Throws.bizException(BaseCode.BAD_REQUEST, "菜单必须为顶级"); } break; case MENU: @@ -371,18 +371,18 @@ public class PermissionPointServiceImpl implements PermissionPointService { case PAGE: if (parent == null || FeatureType.apply(parent.getFeatureType()) == BUTTON) { - Throws.paramException(BaseCode.BAD_REQUEST, "页面层级错误"); + Throws.bizException(BaseCode.BAD_REQUEST, "页面层级错误"); } break; case BUTTON: if (parent == null || FeatureType.apply(parent.getFeatureType()) == MODULE || FeatureType.apply(parent.getFeatureType()) == BUTTON) { - Throws.paramException(BaseCode.BAD_REQUEST, "按钮层级错误"); + Throws.bizException(BaseCode.BAD_REQUEST, "按钮层级错误"); } break; default: - Throws.paramException(BaseCode.BAD_REQUEST, "不支持的元素类型"); + Throws.bizException(BaseCode.BAD_REQUEST, "不支持的元素类型"); } } @@ -489,10 +489,10 @@ public class PermissionPointServiceImpl implements PermissionPointService { if (parentId > 0) { parent = this.saasFeatureDao.getById(parentId); if (!StrUtil.equals(feature.getTerminal(), parent.getTerminal())) { - throw new BizException(BaseCode.BAD_REQUEST, "不允许跨工作台"); + Throws.bizException(BaseCode.BAD_REQUEST, "不允许跨工作台"); } if (parent.getPath().contains(String.valueOf(request.getPermissionId()))) { - throw new BizException(BaseCode.BAD_REQUEST, "不允许移到子级"); + Throws.bizException(BaseCode.BAD_REQUEST, "不允许移到子级"); } } //检查元素类型层级