mirror of
https://github.com/FatttSnake/Pinnacle-OA.git
synced 2026-04-05 06:51:23 +08:00
Fixed a null pointer exception when modifying an unprivileged role
This commit is contained in:
@@ -71,22 +71,24 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
|
|||||||
public boolean modifyRole(Role role) {
|
public boolean modifyRole(Role role) {
|
||||||
roleMapper.updateById(role);
|
roleMapper.updateById(role);
|
||||||
Role originalRole = getRole(role.getId());
|
Role originalRole = getRole(role.getId());
|
||||||
HashSet<Long> 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<Long> newPowerIds = new HashSet<>();
|
HashSet<Long> newPowerIds = new HashSet<>();
|
||||||
role.getPowers().forEach(power -> newPowerIds.add(power.getId()));
|
role.getPowers().forEach(power -> newPowerIds.add(power.getId()));
|
||||||
HashSet<Long> deletePowerIds = new HashSet<>(originalPowerIds);
|
|
||||||
deletePowerIds.removeAll(newPowerIds);
|
|
||||||
HashSet<Long> addPowerIds = new HashSet<>(newPowerIds);
|
HashSet<Long> addPowerIds = new HashSet<>(newPowerIds);
|
||||||
addPowerIds.removeAll(originalPowerIds);
|
if (originalRole != null) {
|
||||||
deletePowerIds.forEach(deletePowerId -> {
|
HashSet<Long> originalPowerIds = new HashSet<>();
|
||||||
LambdaQueryWrapper<PowerRole> wrapper = new LambdaQueryWrapper<>();
|
originalRole.getMenus().forEach(menu -> originalPowerIds.add(menu.getPowerId()));
|
||||||
wrapper.eq(PowerRole::getRoleId, role.getId())
|
originalRole.getElements().forEach(element -> originalPowerIds.add(element.getPowerId()));
|
||||||
.eq(PowerRole::getPowerId, deletePowerId);
|
originalRole.getOperations().forEach(operation -> originalPowerIds.add(operation.getPowerId()));
|
||||||
powerRoleMapper.delete(wrapper);
|
HashSet<Long> deletePowerIds = new HashSet<>(originalPowerIds);
|
||||||
});
|
deletePowerIds.removeAll(newPowerIds);
|
||||||
|
addPowerIds.removeAll(originalPowerIds);
|
||||||
|
deletePowerIds.forEach(deletePowerId -> {
|
||||||
|
LambdaQueryWrapper<PowerRole> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(PowerRole::getRoleId, role.getId())
|
||||||
|
.eq(PowerRole::getPowerId, deletePowerId);
|
||||||
|
powerRoleMapper.delete(wrapper);
|
||||||
|
});
|
||||||
|
}
|
||||||
addPowerIds.forEach(addPowerId -> {
|
addPowerIds.forEach(addPowerId -> {
|
||||||
PowerRole powerRole = new PowerRole();
|
PowerRole powerRole = new PowerRole();
|
||||||
powerRole.setRoleId(role.getId());
|
powerRole.setRoleId(role.getId());
|
||||||
|
|||||||
Reference in New Issue
Block a user