diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/factory/RoleBindPermissionFactory.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/factory/RoleBindPermissionFactory.java index 3b387d497..9c9bd089c 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/factory/RoleBindPermissionFactory.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/factory/RoleBindPermissionFactory.java @@ -53,6 +53,9 @@ public class RoleBindPermissionFactory { List roleBindPermissionItems = new DefaultTreeBuildFactory().doTreeBuild(apps); roleBindPermissionResponse.setAppPermissionList(roleBindPermissionItems); + // 递归遍历roleBindPermissionItems,如果children为空,则设置为null而不是空数组 + circulateDeleteEmptyChildren(roleBindPermissionItems); + return roleBindPermissionResponse; } @@ -125,11 +128,18 @@ public class RoleBindPermissionFactory { } appItem.setChecked(true); + + if (ObjectUtil.isEmpty(appItem.getChildren())) { + return; + } for (RoleBindPermissionItem menuItem : appItem.getChildren()) { if (!menuItem.getChecked()) { appItem.setChecked(false); } + if (ObjectUtil.isEmpty(menuItem.getChildren())) { + continue; + } for (RoleBindPermissionItem options : menuItem.getChildren()) { if (!options.getChecked()) { appItem.setChecked(false); @@ -138,4 +148,20 @@ public class RoleBindPermissionFactory { } } + /** + * 递归遍历,删掉为空数组的children属性,改为null + * + * @author fengshuonan + * @since 2024/10/31 10:24 + */ + private static void circulateDeleteEmptyChildren(List params) { + for (RoleBindPermissionItem item : params) { + if (ObjectUtil.isEmpty(item.getChildren())) { + item.setChildren(null); + } else { + circulateDeleteEmptyChildren(item.getChildren()); + } + } + } + }