1
0
mirror of https://github.com/FatttSnake/Pinnacle-OA.git synced 2026-04-06 07:21:24 +08:00

Added GroupManagement. Fixed some errors in RoleManagement.

This commit is contained in:
2023-05-16 00:19:14 +08:00
parent a385938cd7
commit b6649df71f
13 changed files with 552 additions and 55 deletions

View File

@@ -1,11 +1,18 @@
package com.cfive.pinnacle.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cfive.pinnacle.entity.Group;
import com.cfive.pinnacle.entity.RoleGroup;
import com.cfive.pinnacle.mapper.GroupMapper;
import com.cfive.pinnacle.mapper.RoleGroupMapper;
import com.cfive.pinnacle.service.IGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
/**
* <p>
* 用户组 服务实现类
@@ -16,5 +23,73 @@ import org.springframework.stereotype.Service;
*/
@Service
public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements IGroupService {
private GroupMapper groupMapper;
private RoleGroupMapper roleGroupMapper;
@Autowired
public void setGroupMapper(GroupMapper groupMapper) {
this.groupMapper = groupMapper;
}
@Autowired
public void setRoleGroupMapper(RoleGroupMapper roleGroupMapper) {
this.roleGroupMapper = roleGroupMapper;
}
@Override
public List<Group> getAllGroup() {
return groupMapper.getAll();
}
@Override
public Group getGroup(Long id) {
return groupMapper.getOneById(id);
}
@Override
public boolean addGroup(Group group) {
if (groupMapper.insert(group) == 1) {
group.getRoles().forEach(role -> {
RoleGroup roleGroup = new RoleGroup();
roleGroup.setGroupId(group.getId());
roleGroup.setRoleId(role.getId());
if (roleGroupMapper.insert(roleGroup) != 1) {
throw new RuntimeException("Add role_group failure");
}
});
return true;
} else {
throw new RuntimeException("Add group failure");
}
}
@Override
public boolean modifyGroup(Group group) {
groupMapper.updateById(group);
Group originalGroup = getGroup(group.getId());
HashSet<Long> newRoleIds = new HashSet<>();
group.getRoles().forEach(role -> newRoleIds.add(role.getId()));
HashSet<Long> addRoleIds = new HashSet<>(newRoleIds);
if (originalGroup != null) {
HashSet<Long> originalRoleIds = new HashSet<>();
originalGroup.getRoles().forEach(role -> originalRoleIds.add(role.getId()));
HashSet<Long> deleteRoleIds = new HashSet<>(originalRoleIds);
deleteRoleIds.removeAll(newRoleIds);
addRoleIds.removeAll(originalRoleIds);
deleteRoleIds.forEach(deleteRoleId -> {
LambdaQueryWrapper<RoleGroup> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(RoleGroup::getGroupId, group.getId())
.eq(RoleGroup::getRoleId, deleteRoleId);
roleGroupMapper.delete(wrapper);
});
}
addRoleIds.forEach(addRoleId -> {
RoleGroup roleGroup = new RoleGroup();
roleGroup.setGroupId(group.getId());
roleGroup.setRoleId(addRoleId);
roleGroupMapper.insert(roleGroup);
});
return true;
}
}