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());