mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【permission】简化填充状态的方法
parent
a971044329
commit
3e415afa85
|
@ -138,57 +138,14 @@ public class PermissionAssignFactory {
|
||||||
List<RoleBindPermissionItem> appList = roleBindPermissionResponse.getAppPermissionList();
|
List<RoleBindPermissionItem> appList = roleBindPermissionResponse.getAppPermissionList();
|
||||||
|
|
||||||
// 开始填充菜单和功能的选中状态
|
// 开始填充菜单和功能的选中状态
|
||||||
|
fillSubItemCheckedFlag(appList, rolePermissions);
|
||||||
|
|
||||||
|
// 填充应用的选中状态
|
||||||
for (RoleBindPermissionItem appItem : appList) {
|
for (RoleBindPermissionItem appItem : appList) {
|
||||||
|
fillParentCheckedFlag(appItem);
|
||||||
// 遍历菜单是否有选中的
|
|
||||||
List<RoleBindPermissionItem> menuStructure = appItem.getChildren();
|
|
||||||
|
|
||||||
if (ObjectUtil.isNotEmpty(menuStructure)) {
|
|
||||||
|
|
||||||
// 遍历菜单是否有选中的
|
|
||||||
for (RoleBindPermissionItem menuItem : menuStructure) {
|
|
||||||
if (rolePermissions.contains(menuItem.getNodeId())) {
|
|
||||||
menuItem.setChecked(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断菜单中的按钮是否有角色分配的权限
|
// 填充全选的选中状态
|
||||||
List<RoleBindPermissionItem> optionsStructure = menuItem.getChildren();
|
|
||||||
if (ObjectUtil.isNotEmpty(optionsStructure)) {
|
|
||||||
for (RoleBindPermissionItem bindPermissionItem : optionsStructure) {
|
|
||||||
if (rolePermissions.contains(bindPermissionItem.getNodeId())) {
|
|
||||||
menuItem.setChecked(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果所有的子集全选了,则设置当前节点全选
|
|
||||||
for (RoleBindPermissionItem appItem : appList) {
|
|
||||||
|
|
||||||
boolean appTotal = true;
|
|
||||||
|
|
||||||
// 判断所有菜单和所有功能都选中的话,就填充应用的全选
|
|
||||||
List<RoleBindPermissionItem> menuItemList = appItem.getChildren();
|
|
||||||
for (RoleBindPermissionItem menuItem : menuItemList) {
|
|
||||||
|
|
||||||
if (!menuItem.getChecked()) {
|
|
||||||
appTotal = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<RoleBindPermissionItem> optionsList = menuItem.getChildren();
|
|
||||||
for (RoleBindPermissionItem option : optionsList) {
|
|
||||||
if (!option.getChecked()) {
|
|
||||||
appTotal = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
appItem.setChecked(appTotal);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果所有应用都全选了,则设置所有全选为选中
|
|
||||||
roleBindPermissionResponse.setChecked(true);
|
roleBindPermissionResponse.setChecked(true);
|
||||||
for (RoleBindPermissionItem appItem : appList) {
|
for (RoleBindPermissionItem appItem : appList) {
|
||||||
if (!appItem.getChecked()) {
|
if (!appItem.getChecked()) {
|
||||||
|
@ -199,4 +156,49 @@ public class PermissionAssignFactory {
|
||||||
return roleBindPermissionResponse;
|
return roleBindPermissionResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 填充子节点的选中状态
|
||||||
|
* <p>
|
||||||
|
* 根据执行的角色权限参数匹配判断
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2023/6/13 19:21
|
||||||
|
*/
|
||||||
|
private static void fillSubItemCheckedFlag(List<RoleBindPermissionItem> beFilled, Set<Long> rolePermissionList) {
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(beFilled) || ObjectUtil.isEmpty(rolePermissionList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (RoleBindPermissionItem roleBindPermissionItem : beFilled) {
|
||||||
|
if (rolePermissionList.contains(roleBindPermissionItem.getNodeId())) {
|
||||||
|
roleBindPermissionItem.setChecked(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
fillSubItemCheckedFlag(roleBindPermissionItem.getChildren(), rolePermissionList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 填充父级的节点的选中状态
|
||||||
|
* <p>
|
||||||
|
* 如果所有子集都选中了,则选中所有的父级状态
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2023/6/13 19:25
|
||||||
|
*/
|
||||||
|
private static void fillParentCheckedFlag(RoleBindPermissionItem beFilled) {
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(beFilled)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
beFilled.setChecked(true);
|
||||||
|
for (RoleBindPermissionItem item : beFilled.getChildren()) {
|
||||||
|
if (!item.getChecked()) {
|
||||||
|
beFilled.setChecked(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue