From 84b7a95640c9381531c6157380b8e1fd8ba5dcbe Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Mon, 15 May 2023 09:09:55 +0800 Subject: [PATCH] Fixed a null pointer exception when modifying an unprivileged role --- .../service/impl/RoleServiceImpl.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/RoleServiceImpl.java b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/RoleServiceImpl.java index 314ae02..29522df 100644 --- a/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/RoleServiceImpl.java +++ b/Pinnacle/src/main/java/com/cfive/pinnacle/service/impl/RoleServiceImpl.java @@ -71,22 +71,24 @@ public class RoleServiceImpl extends ServiceImpl implements IR public boolean modifyRole(Role role) { roleMapper.updateById(role); Role originalRole = getRole(role.getId()); - HashSet originalPowerIds = new HashSet<>(); - originalRole.getMenus().forEach(menu -> originalPowerIds.add(menu.getPowerId())); - originalRole.getElements().forEach(element -> originalPowerIds.add(element.getPowerId())); - originalRole.getOperations().forEach(operation -> originalPowerIds.add(operation.getPowerId())); HashSet newPowerIds = new HashSet<>(); role.getPowers().forEach(power -> newPowerIds.add(power.getId())); - HashSet deletePowerIds = new HashSet<>(originalPowerIds); - deletePowerIds.removeAll(newPowerIds); HashSet addPowerIds = new HashSet<>(newPowerIds); - addPowerIds.removeAll(originalPowerIds); - deletePowerIds.forEach(deletePowerId -> { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(PowerRole::getRoleId, role.getId()) - .eq(PowerRole::getPowerId, deletePowerId); - powerRoleMapper.delete(wrapper); - }); + if (originalRole != null) { + HashSet originalPowerIds = new HashSet<>(); + originalRole.getMenus().forEach(menu -> originalPowerIds.add(menu.getPowerId())); + originalRole.getElements().forEach(element -> originalPowerIds.add(element.getPowerId())); + originalRole.getOperations().forEach(operation -> originalPowerIds.add(operation.getPowerId())); + HashSet deletePowerIds = new HashSet<>(originalPowerIds); + deletePowerIds.removeAll(newPowerIds); + addPowerIds.removeAll(originalPowerIds); + deletePowerIds.forEach(deletePowerId -> { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PowerRole::getRoleId, role.getId()) + .eq(PowerRole::getPowerId, deletePowerId); + powerRoleMapper.delete(wrapper); + }); + } addPowerIds.forEach(addPowerId -> { PowerRole powerRole = new PowerRole(); powerRole.setRoleId(role.getId());