|
@@ -107,59 +107,75 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
|
|
|
|
|
|
// 组装配置-后台
|
|
|
List<RoleMenu> roleMenus = new ArrayList<>();
|
|
|
- roleIds.forEach(roleId -> menuIds.forEach(menuId -> {
|
|
|
- RoleMenu roleMenu = new RoleMenu();
|
|
|
- roleMenu.setRoleId(roleId);
|
|
|
- roleMenu.setMenuId(Long.valueOf(menuId.split("---")[0]));
|
|
|
- roleMenu.setStatus(menuId.split("---")[1]);
|
|
|
- roleMenus.add(roleMenu);
|
|
|
- }));
|
|
|
-
|
|
|
+ if (menuIds != null && menuIds.size() >= 1) {
|
|
|
+ roleIds.forEach(roleId -> menuIds.forEach(menuId -> {
|
|
|
+ RoleMenu roleMenu = new RoleMenu();
|
|
|
+ roleMenu.setRoleId(roleId);
|
|
|
+ roleMenu.setMenuId(Long.valueOf(menuId.split("---")[0]));
|
|
|
+ roleMenu.setStatus(menuId.split("---")[1]);
|
|
|
+ roleMenus.add(roleMenu);
|
|
|
+ }));
|
|
|
+ }
|
|
|
// 组装配置-客户端
|
|
|
- roleIds.forEach(roleId -> menuClientIds.forEach(menuIdC -> {
|
|
|
- RoleMenu roleMenu = new RoleMenu();
|
|
|
- roleMenu.setRoleId(roleId);
|
|
|
- roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
|
|
|
- roleMenu.setStatus(menuIdC.split("---")[1]);
|
|
|
- roleMenus.add(roleMenu);
|
|
|
- }));
|
|
|
-
|
|
|
+ if (menuClientIds != null && menuClientIds.size() >= 1) {
|
|
|
+ roleIds.forEach(roleId -> menuClientIds.forEach(menuIdC -> {
|
|
|
+ RoleMenu roleMenu = new RoleMenu();
|
|
|
+ roleMenu.setRoleId(roleId);
|
|
|
+ roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
|
|
|
+ roleMenu.setStatus(menuIdC.split("---")[1]);
|
|
|
+ roleMenus.add(roleMenu);
|
|
|
+ }));
|
|
|
+ }
|
|
|
// 组装配置-档案
|
|
|
- roleIds.forEach(roleId -> menuArchivesIds.forEach(menuIdC -> {
|
|
|
- RoleMenu roleMenu = new RoleMenu();
|
|
|
- roleMenu.setRoleId(roleId);
|
|
|
- roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
|
|
|
- roleMenu.setStatus(menuIdC.split("---")[1]);
|
|
|
- roleMenus.add(roleMenu);
|
|
|
- }));
|
|
|
-
|
|
|
+ if (menuArchivesIds != null && menuArchivesIds.size() >= 1) {
|
|
|
+ roleIds.forEach(roleId -> menuArchivesIds.forEach(menuIdC -> {
|
|
|
+ RoleMenu roleMenu = new RoleMenu();
|
|
|
+ roleMenu.setRoleId(roleId);
|
|
|
+ roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
|
|
|
+ roleMenu.setStatus(menuIdC.split("---")[1]);
|
|
|
+ roleMenus.add(roleMenu);
|
|
|
+ }));
|
|
|
+ }
|
|
|
// 组装配置-内控
|
|
|
- roleIds.forEach(roleId -> menuHacIds.forEach(menuIdC -> {
|
|
|
- RoleMenu roleMenu = new RoleMenu();
|
|
|
- roleMenu.setRoleId(roleId);
|
|
|
- roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
|
|
|
- roleMenu.setStatus(menuIdC.split("---")[1]);
|
|
|
- roleMenus.add(roleMenu);
|
|
|
- }));
|
|
|
-
|
|
|
+ if (menuHacIds != null && menuHacIds.size() >= 1) {
|
|
|
+ roleIds.forEach(roleId -> menuHacIds.forEach(menuIdC -> {
|
|
|
+ RoleMenu roleMenu = new RoleMenu();
|
|
|
+ roleMenu.setRoleId(roleId);
|
|
|
+ roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
|
|
|
+ roleMenu.setStatus(menuIdC.split("---")[1]);
|
|
|
+ roleMenus.add(roleMenu);
|
|
|
+ }));
|
|
|
+ }
|
|
|
// 组装配置-征拆
|
|
|
- roleIds.forEach(roleId -> menuLarIds.forEach(menuIdC -> {
|
|
|
- RoleMenu roleMenu = new RoleMenu();
|
|
|
- roleMenu.setRoleId(roleId);
|
|
|
- roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
|
|
|
- roleMenu.setStatus(menuIdC.split("---")[1]);
|
|
|
- roleMenus.add(roleMenu);
|
|
|
- }));
|
|
|
-
|
|
|
+ if (menuLarIds != null && menuLarIds.size() >= 1) {
|
|
|
+ roleIds.forEach(roleId -> menuLarIds.forEach(menuIdC -> {
|
|
|
+ RoleMenu roleMenu = new RoleMenu();
|
|
|
+ roleMenu.setRoleId(roleId);
|
|
|
+ roleMenu.setMenuId(Long.valueOf(menuIdC.split("---")[0]));
|
|
|
+ roleMenu.setStatus(menuIdC.split("---")[1]);
|
|
|
+ roleMenus.add(roleMenu);
|
|
|
+ }));
|
|
|
+ }
|
|
|
// 新增配置
|
|
|
- roleMenuService.saveBatch(roleMenus);
|
|
|
-
|
|
|
+ boolean b = roleMenuService.saveBatch(roleMenus);
|
|
|
+ System.out.println("ddd");
|
|
|
// 递归设置下属角色菜单集合
|
|
|
- recursionRoleMenu(roleIds, menuIds);
|
|
|
- recursionRoleMenu(roleIds, menuClientIds);
|
|
|
- recursionRoleMenu(roleIds, menuArchivesIds);
|
|
|
- recursionRoleMenu(roleIds, menuHacIds); //内控
|
|
|
- recursionRoleMenu(roleIds, menuLarIds); //征拆
|
|
|
+ if (menuIds != null && menuIds.size() >= 1) {
|
|
|
+ recursionRoleMenu(roleIds, menuIds);
|
|
|
+ }
|
|
|
+ if (menuClientIds != null && menuClientIds.size() >= 1) {
|
|
|
+ recursionRoleMenu(roleIds, menuClientIds);
|
|
|
+ }
|
|
|
+ if (menuArchivesIds != null && menuArchivesIds.size() >= 1) {
|
|
|
+ recursionRoleMenu(roleIds, menuArchivesIds);
|
|
|
+ }
|
|
|
+ if (menuHacIds != null && menuHacIds.size() >= 1) {
|
|
|
+ recursionRoleMenu(roleIds, menuHacIds); //内控
|
|
|
+ }
|
|
|
+ if (menuLarIds != null && menuLarIds.size() >= 1) {
|
|
|
+ recursionRoleMenu(roleIds, menuLarIds); //征拆
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -171,50 +187,58 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
|
|
|
String id = split[0]; //id
|
|
|
menuIds.add(Long.valueOf(id));
|
|
|
}
|
|
|
- roleIds.forEach(roleId -> baseMapper.selectList(Wrappers.<Role>query().lambda().eq(Role::getParentId, roleId)).forEach(role -> {
|
|
|
- List<RoleMenu> roleMenuList = roleMenuService.list(Wrappers.<RoleMenu>query().lambda().eq(RoleMenu::getRoleId, role.getId()));
|
|
|
- // 子节点过滤出父节点删除的菜单集合
|
|
|
- List<Long> collectRoleMenuIds = roleMenuList.stream().map(RoleMenu::getMenuId).filter(menuId -> !menuIds.contains(menuId)).collect(Collectors.toList());
|
|
|
- if (collectRoleMenuIds.size() > 0) {
|
|
|
- // 删除子节点权限外的菜单集合
|
|
|
- roleMenuService.remove(Wrappers.<RoleMenu>update().lambda().eq(RoleMenu::getRoleId, role.getId()).in(RoleMenu::getMenuId, collectRoleMenuIds));
|
|
|
- // 递归设置下属角色菜单集合
|
|
|
- recursionRoleMenu(Collections.singletonList(role.getId()), menuIdsAll);
|
|
|
- }
|
|
|
- }));
|
|
|
+ //
|
|
|
+ for (Long roleId : roleIds) {
|
|
|
+ List<Role> roleList = roleMapper.getRoleDeptInfoByParentId(roleId + "");
|
|
|
+ roleList.forEach(role -> {
|
|
|
+ List<RoleMenu> roleMenuList = roleMenuService.list(Wrappers.<RoleMenu>query().lambda().eq(RoleMenu::getRoleId, role.getId()));
|
|
|
+ // 子节点过滤出父节点删除的菜单集合
|
|
|
+ List<Long> collectRoleMenuIds = roleMenuList.stream().map(RoleMenu::getMenuId).filter(menuId -> !menuIds.contains(menuId)).collect(Collectors.toList());
|
|
|
+ if (collectRoleMenuIds.size() > 0) {
|
|
|
+ // 删除子节点权限外的菜单集合
|
|
|
+ roleMenuService.remove(Wrappers.<RoleMenu>update().lambda().eq(RoleMenu::getRoleId, role.getId()).in(RoleMenu::getMenuId, collectRoleMenuIds));
|
|
|
+ // 递归设置下属角色菜单集合
|
|
|
+ recursionRoleMenu(Collections.singletonList(role.getId()), menuIdsAll);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private boolean grantDataScope(List<Long> roleIds, List<Long> dataScopeIds) {
|
|
|
// 删除角色配置的数据权限集合
|
|
|
- roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, DATA_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
|
|
|
- // 组装配置
|
|
|
- List<RoleScope> roleDataScopes = new ArrayList<>();
|
|
|
- roleIds.forEach(roleId -> dataScopeIds.forEach(scopeId -> {
|
|
|
- RoleScope roleScope = new RoleScope();
|
|
|
- roleScope.setScopeCategory(DATA_SCOPE_CATEGORY);
|
|
|
- roleScope.setRoleId(roleId);
|
|
|
- roleScope.setScopeId(scopeId);
|
|
|
- roleDataScopes.add(roleScope);
|
|
|
- }));
|
|
|
- // 新增配置
|
|
|
- roleScopeService.saveBatch(roleDataScopes);
|
|
|
+ if (roleIds != null && roleIds.size() >= 1 && dataScopeIds != null && dataScopeIds.size() >= 1) {
|
|
|
+ roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, DATA_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
|
|
|
+ // 组装配置
|
|
|
+ List<RoleScope> roleDataScopes = new ArrayList<>();
|
|
|
+ roleIds.forEach(roleId -> dataScopeIds.forEach(scopeId -> {
|
|
|
+ RoleScope roleScope = new RoleScope();
|
|
|
+ roleScope.setScopeCategory(DATA_SCOPE_CATEGORY);
|
|
|
+ roleScope.setRoleId(roleId);
|
|
|
+ roleScope.setScopeId(scopeId);
|
|
|
+ roleDataScopes.add(roleScope);
|
|
|
+ }));
|
|
|
+ // 新增配置
|
|
|
+ roleScopeService.saveBatch(roleDataScopes);
|
|
|
+ }
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
private boolean grantApiScope(List<Long> roleIds, List<Long> apiScopeIds) {
|
|
|
- // 删除角色配置的接口权限集合
|
|
|
- roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, API_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
|
|
|
- // 组装配置
|
|
|
- List<RoleScope> roleApiScopes = new ArrayList<>();
|
|
|
- roleIds.forEach(roleId -> apiScopeIds.forEach(scopeId -> {
|
|
|
- RoleScope roleScope = new RoleScope();
|
|
|
- roleScope.setScopeCategory(API_SCOPE_CATEGORY);
|
|
|
- roleScope.setScopeId(scopeId);
|
|
|
- roleScope.setRoleId(roleId);
|
|
|
- roleApiScopes.add(roleScope);
|
|
|
- }));
|
|
|
- // 新增配置
|
|
|
- roleScopeService.saveBatch(roleApiScopes);
|
|
|
+ if (roleIds != null && roleIds.size() >= 1 && apiScopeIds != null && apiScopeIds.size() >= 1) {
|
|
|
+ // 删除角色配置的接口权限集合
|
|
|
+ roleScopeService.remove(Wrappers.<RoleScope>update().lambda().eq(RoleScope::getScopeCategory, API_SCOPE_CATEGORY).in(RoleScope::getRoleId, roleIds));
|
|
|
+ // 组装配置
|
|
|
+ List<RoleScope> roleApiScopes = new ArrayList<>();
|
|
|
+ roleIds.forEach(roleId -> apiScopeIds.forEach(scopeId -> {
|
|
|
+ RoleScope roleScope = new RoleScope();
|
|
|
+ roleScope.setScopeCategory(API_SCOPE_CATEGORY);
|
|
|
+ roleScope.setScopeId(scopeId);
|
|
|
+ roleScope.setRoleId(roleId);
|
|
|
+ roleApiScopes.add(roleScope);
|
|
|
+ }));
|
|
|
+ // 新增配置
|
|
|
+ roleScopeService.saveBatch(roleApiScopes);
|
|
|
+ }
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -317,46 +341,50 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean submitRoleAndTableOwner(List<Long> roleIds, List<Long> tableOwners) {
|
|
|
- for (Long role : roleIds) {
|
|
|
- List<WbsTableOwnerRole> list = baseMapper.selectRoleAndTableOwnerListByRoleId(role);
|
|
|
+ if (tableOwners != null && tableOwners.size() >= 1) {
|
|
|
+ for (Long role : roleIds) {
|
|
|
+ List<WbsTableOwnerRole> list = baseMapper.selectRoleAndTableOwnerListByRoleId(role);
|
|
|
|
|
|
- List<String> tableOwnerValuesIn = list.stream().map(WbsTableOwnerRole::getTableOwnerNumber).collect(Collectors.toList());
|
|
|
+ List<String> tableOwnerValuesIn = list.stream().map(WbsTableOwnerRole::getTableOwnerNumber).collect(Collectors.toList());
|
|
|
|
|
|
- List<String> tableOwnerValuesOut = tableOwners.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
+ List<String> tableOwnerValuesOut = tableOwners.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
|
|
|
- List<String> diffRent = getDiffRent(tableOwnerValuesOut, tableOwnerValuesIn);
|
|
|
+ List<String> diffRent = getDiffRent(tableOwnerValuesOut, tableOwnerValuesIn);
|
|
|
|
|
|
- List<String> ids = new ArrayList<>();
|
|
|
+ List<String> ids = new ArrayList<>();
|
|
|
|
|
|
- //获取ids
|
|
|
- for (WbsTableOwnerRole wbsTableOwnerRole : list) {
|
|
|
- for (String diff : diffRent) {
|
|
|
- if (wbsTableOwnerRole.getTableOwnerNumber().equals(diff)) {
|
|
|
- ids.add(String.valueOf(wbsTableOwnerRole.getId()));
|
|
|
+ //获取ids
|
|
|
+ for (WbsTableOwnerRole wbsTableOwnerRole : list) {
|
|
|
+ for (String diff : diffRent) {
|
|
|
+ if (wbsTableOwnerRole.getTableOwnerNumber().equals(diff)) {
|
|
|
+ ids.add(String.valueOf(wbsTableOwnerRole.getId()));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- if (diffRent.size() == 0) {
|
|
|
- return true;
|
|
|
- } else {
|
|
|
- if (tableOwnerValuesOut.size() > tableOwnerValuesIn.size()) {
|
|
|
- //新增
|
|
|
- for (String tableOwner : diffRent) {
|
|
|
- Long id = SnowFlakeUtil.getId();
|
|
|
- baseMapper.insertRoleAndTableOwner(id, role, tableOwner);
|
|
|
- }
|
|
|
+ if (diffRent.size() == 0) {
|
|
|
return true;
|
|
|
-
|
|
|
- } else if (tableOwnerValuesOut.size() < tableOwnerValuesIn.size()) {
|
|
|
- //删除
|
|
|
- Integer row = baseMapper.deleteRoleAndTableOwner(ids);
|
|
|
- return row > 0;
|
|
|
+ } else {
|
|
|
+ if (tableOwnerValuesOut.size() > tableOwnerValuesIn.size()) {
|
|
|
+ //新增
|
|
|
+ for (String tableOwner : diffRent) {
|
|
|
+ Long id = SnowFlakeUtil.getId();
|
|
|
+ baseMapper.insertRoleAndTableOwner(id, role, tableOwner);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+
|
|
|
+ } else if (tableOwnerValuesOut.size() < tableOwnerValuesIn.size()) {
|
|
|
+ //删除
|
|
|
+ Integer row = baseMapper.deleteRoleAndTableOwner(ids);
|
|
|
+ return row > 0;
|
|
|
+ }
|
|
|
}
|
|
|
+ return false;
|
|
|
}
|
|
|
- return false;
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
}
|
|
|
- return false;
|
|
|
}
|
|
|
|
|
|
private static List<String> getDiffRent(List<String> list1, List<String> list2) {
|