【7.6.0】【sys】【permission】完善获取角色绑定的权限列表接口

pull/55/MERGE
fengshuonan 2023-06-13 19:17:24 +08:00
parent f0adb5846a
commit a971044329
2 changed files with 78 additions and 9 deletions

View File

@ -47,8 +47,7 @@ public class PermissionAssignFactory {
ArrayList<RoleBindPermissionItem> roleBindPermissionItems = new ArrayList<>(); ArrayList<RoleBindPermissionItem> roleBindPermissionItems = new ArrayList<>();
for (SysMenu leafMenu : leafMenus) { for (SysMenu leafMenu : leafMenus) {
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem( RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(leafMenu.getMenuId(), leafMenu.getAppId(), leafMenu.getMenuName(), PermissionNodeTypeEnum.MENU.getCode(), false);
leafMenu.getMenuId(), leafMenu.getAppId(), leafMenu.getMenuName(), PermissionNodeTypeEnum.MENU.getCode(), false);
roleBindPermissionItems.add(roleBindPermissionItem); roleBindPermissionItems.add(roleBindPermissionItem);
} }
@ -71,8 +70,7 @@ public class PermissionAssignFactory {
// 封装响应结果 // 封装响应结果
for (SysApp sysApp : sysApps) { for (SysApp sysApp : sysApps) {
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem( RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(sysApp.getAppId(), TreeConstants.DEFAULT_PARENT_ID, sysApp.getAppName(), PermissionNodeTypeEnum.APP.getCode(), false);
sysApp.getAppId(), TreeConstants.DEFAULT_PARENT_ID, sysApp.getAppName(), PermissionNodeTypeEnum.APP.getCode(), false);
appResults.add(roleBindPermissionItem); appResults.add(roleBindPermissionItem);
} }
@ -95,8 +93,7 @@ public class PermissionAssignFactory {
// 封装响应结果 // 封装响应结果
for (SysMenuOptions sysMenuOptions : sysMenuOptionsList) { for (SysMenuOptions sysMenuOptions : sysMenuOptionsList) {
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem( RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(sysMenuOptions.getMenuOptionId(), sysMenuOptions.getMenuId(), sysMenuOptions.getOptionName(), PermissionNodeTypeEnum.OPTIONS.getCode(), false);
sysMenuOptions.getMenuOptionId(), sysMenuOptions.getMenuId(), sysMenuOptions.getOptionName(), PermissionNodeTypeEnum.OPTIONS.getCode(), false);
optionsResult.add(roleBindPermissionItem); optionsResult.add(roleBindPermissionItem);
} }
@ -128,4 +125,78 @@ public class PermissionAssignFactory {
return roleBindPermissionResponse; return roleBindPermissionResponse;
} }
/**
*
*
* @param roleBindPermissionResponse
* @param rolePermissions idid
* @author fengshuonan
* @since 2023/6/13 19:00
*/
public static RoleBindPermissionResponse fillCheckedFlag(RoleBindPermissionResponse roleBindPermissionResponse, Set<Long> rolePermissions) {
List<RoleBindPermissionItem> appList = roleBindPermissionResponse.getAppPermissionList();
// 开始填充菜单和功能的选中状态
for (RoleBindPermissionItem appItem : appList) {
// 遍历菜单是否有选中的
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);
for (RoleBindPermissionItem appItem : appList) {
if (!appItem.getChecked()) {
roleBindPermissionResponse.setChecked(false);
}
}
return roleBindPermissionResponse;
}
} }

View File

@ -56,9 +56,7 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
Set<Long> roleBindMenusAndOptions = this.getRoleBindMenusAndOptions(roleBindPermissionRequest.getRoleId()); Set<Long> roleBindMenusAndOptions = this.getRoleBindMenusAndOptions(roleBindPermissionRequest.getRoleId());
// 3. 组合结构树和角色绑定的信息,填充选择状态,封装返回结果 // 3. 组合结构树和角色绑定的信息,填充选择状态,封装返回结果
return PermissionAssignFactory.fillCheckedFlag(selectTreeStructure, roleBindMenusAndOptions);
return null;
} }
@Override @Override