diff --git a/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java b/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java index a70cc3c..cf2503d 100644 --- a/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java +++ b/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java @@ -73,6 +73,7 @@ public enum ResultCodeEnum { LOGGED_IN_FROM_ANOTHER_DEVICE(403, "没有权限访问"), TOKEN_PARSING_FAILED(403, "token解析失败"), FAIL_NO_ACCESS_DENIED_USER_LOCKED(403, "该账户已封禁"), + ROUTER_RANK_NEED_LARGER_THAN_THE_PARENT(219, "设置路由等级需要大于或等于父级的路由等级"), // 系统错误 500 UNKNOWN_EXCEPTION(500, "服务异常"), diff --git a/service/src/main/java/cn/bunny/services/service/system/impl/RouterServiceImpl.java b/service/src/main/java/cn/bunny/services/service/system/impl/RouterServiceImpl.java index 1856b96..f4516e0 100644 --- a/service/src/main/java/cn/bunny/services/service/system/impl/RouterServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/system/impl/RouterServiceImpl.java @@ -217,6 +217,14 @@ public class RouterServiceImpl extends ServiceImpl impleme */ @Override public void updateMenu(RouterUpdateDto dto) { + // 查询当前路由和父级路由 + Router routerParent = getOne(Wrappers.lambdaQuery().eq(Router::getId, dto.getParentId())); + + // 设置路由等级需要大于或等于父级的路由等级 + if (routerParent != null && (dto.getRouterRank() < routerParent.getRouterRank())) { + throw new BunnyException(ResultCodeEnum.ROUTER_RANK_NEED_LARGER_THAN_THE_PARENT); + } + // 如果设置的不是外部页面 if (!dto.getMenuType().equals(2)) dto.setFrameSrc(""); @@ -258,6 +266,14 @@ public class RouterServiceImpl extends ServiceImpl impleme // 判断更新数据是否存在 if (router == null) throw new BunnyException(ResultCodeEnum.DATA_NOT_EXIST); + // 查询当前路由和父级路由 + Router routerParent = getOne(Wrappers.lambdaQuery().eq(Router::getId, router.getParentId())); + + // 设置路由等级需要大于或等于父级的路由等级 + if (routerParent != null && (dto.getRouterRank() < routerParent.getRouterRank())) { + throw new BunnyException(ResultCodeEnum.ROUTER_RANK_NEED_LARGER_THAN_THE_PARENT); + } + // 更新排序 router = new Router(); router.setId(dto.getId());