fix: 内部工作组权限问题及修复权限数据接口
This commit is contained in:
+11
@@ -223,4 +223,15 @@ public class LawsWorkingGroupController extends JeroController<LawsWorkingGroup,
|
||||
}
|
||||
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修复所有权限
|
||||
*/
|
||||
@ApiOperationSupport(order = 7)
|
||||
@ApiOperation(value="内部工作组-修复所有权限", notes="内部工作组-修复所有权限")
|
||||
@GetMapping(value = "/fixAllAuth")
|
||||
public Result<T> fixAllAuth() {
|
||||
lawsWorkingGroupService.fixAllAuth();
|
||||
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,14 @@ public interface ILawsWorkingGroupService extends IService<LawsWorkingGroup> {
|
||||
*/
|
||||
void add(LawsWorkingGroup lawsWorkingGroup);
|
||||
|
||||
/**
|
||||
* 修复所有权限
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
void fixAllAuth();
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
|
||||
+205
-167
@@ -1,5 +1,6 @@
|
||||
package com.jero.modules.sys.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.constant.CommonConstant;
|
||||
import com.jero.modules.sys.entity.LawsWorkingGroup;
|
||||
@@ -24,33 +25,33 @@ import javax.annotation.Resource;
|
||||
/**
|
||||
* @Description: 内部工作组
|
||||
* @Author: jero-boot
|
||||
* @Date: 2023-09-06
|
||||
* @Date: 2023-09-06
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@Transactional(rollbackFor = JeroBootException.class)
|
||||
public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMapper, LawsWorkingGroup> implements ILawsWorkingGroupService {
|
||||
|
||||
@Resource
|
||||
private ISysUserService sysUserService;
|
||||
@Resource
|
||||
private ISysUserService sysUserService;
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*/
|
||||
@Override
|
||||
public List<LawsWorkingGroup> queryList() {
|
||||
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
|
||||
return list(wrapper);
|
||||
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
|
||||
return list(wrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param lawsWorkingGroup
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param lawsWorkingGroup
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void add(LawsWorkingGroup lawsWorkingGroup) {
|
||||
Date now = new Date();
|
||||
lawsWorkingGroup.setCreateTime(now);
|
||||
@@ -58,177 +59,214 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
|
||||
save(lawsWorkingGroup);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param lawsWorkingGroup
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void editById(LawsWorkingGroup lawsWorkingGroup) {
|
||||
Date now = new Date();
|
||||
lawsWorkingGroup.setUpdateTime(now);
|
||||
saveOrUpdate(lawsWorkingGroup);
|
||||
/**
|
||||
* 修复所有标准分会分配的管理权限
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void fixAllAuth() {
|
||||
// 获取所有二级工作组
|
||||
List<LawsWorkingGroup> list = this.list(
|
||||
new LambdaQueryWrapper<LawsWorkingGroup>().eq(LawsWorkingGroup::getLevel, 2));
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
list.forEach(this::editById);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param lawsWorkingGroup
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void editById(LawsWorkingGroup lawsWorkingGroup) {
|
||||
LawsWorkingGroup old = getById(lawsWorkingGroup.getId());
|
||||
// 找到所有子集工作组 更新userId
|
||||
List<LawsWorkingGroup> subset = this.getSubset(old.getId());
|
||||
subset.forEach(item -> item.setUserId(lawsWorkingGroup.getUserId()));
|
||||
saveOrUpdateBatch(subset);
|
||||
Date now = new Date();
|
||||
lawsWorkingGroup.setUpdateTime(now);
|
||||
saveOrUpdate(lawsWorkingGroup);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据父级id获取所有子集工作组
|
||||
*
|
||||
* @param pId
|
||||
* @return
|
||||
*/
|
||||
private List<LawsWorkingGroup> getSubset(String pId) {
|
||||
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(LawsWorkingGroup::getPid, pId);
|
||||
return list(wrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteById(String id) {
|
||||
removeById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteByIds(List<String> ids) {
|
||||
removeByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public LawsWorkingGroup queryById(String id) {
|
||||
return getById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LawsWorkingGroup> realList() {
|
||||
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
|
||||
List<LawsWorkingGroup> list = list(wrapper);
|
||||
return list;
|
||||
}
|
||||
@Override
|
||||
public List<LawsWorkingGroup> realList() {
|
||||
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
|
||||
List<LawsWorkingGroup> list = list(wrapper);
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对列表数据转树结构列表(pid为空当作开始节点)
|
||||
*/
|
||||
@Override
|
||||
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list, String name) {
|
||||
List<LawsWorkingGroup> matchedNodes = list.stream().filter(node -> node.getName().contains(name)).collect(Collectors.toList());
|
||||
if (matchedNodes.isEmpty()) {
|
||||
return Collections.singletonList(list.get(0));
|
||||
}
|
||||
Set<LawsWorkingGroup> nodesSet = new HashSet<>();
|
||||
for (LawsWorkingGroup matchedNode : matchedNodes) {
|
||||
nodesSet.addAll(findPathToRoot(list, matchedNode));
|
||||
nodesSet.addAll(findAllChildren(list, matchedNode));
|
||||
}
|
||||
List<LawsWorkingGroup> LawsWorkingGroups = new ArrayList<>(nodesSet);
|
||||
return this.convertToTree(LawsWorkingGroups);
|
||||
}
|
||||
private Set<LawsWorkingGroup> findPathToRoot(List<LawsWorkingGroup> list, LawsWorkingGroup node) {
|
||||
Set<LawsWorkingGroup> pathNodes = new HashSet<>();
|
||||
LawsWorkingGroup currentHolder = node;
|
||||
while (currentHolder != null) {
|
||||
pathNodes.add(currentHolder);
|
||||
LawsWorkingGroup finalCurrentHolder = currentHolder;
|
||||
currentHolder = list.stream()
|
||||
.filter(n -> n.getId().equals(finalCurrentHolder.getPid()))
|
||||
.findFirst().orElse(null);
|
||||
}
|
||||
return pathNodes;
|
||||
}
|
||||
private Set<LawsWorkingGroup> findAllChildren(List<LawsWorkingGroup> list, LawsWorkingGroup node) {
|
||||
Set<LawsWorkingGroup> childrenSet = new HashSet<>();
|
||||
List<LawsWorkingGroup> directChildren = list.stream().filter(n -> n.getPid().equals(node.getId())).collect(Collectors.toList());
|
||||
for (LawsWorkingGroup child : directChildren) {
|
||||
childrenSet.add(child);
|
||||
childrenSet.addAll(findAllChildren(list, child));
|
||||
}
|
||||
return childrenSet;
|
||||
}
|
||||
/**
|
||||
* 对列表数据转树结构列表(pid为空当作开始节点)
|
||||
*/
|
||||
@Override
|
||||
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list, String name) {
|
||||
List<LawsWorkingGroup> matchedNodes = list.stream().filter(node -> node.getName().contains(name)).collect(Collectors.toList());
|
||||
if (matchedNodes.isEmpty()) {
|
||||
return Collections.singletonList(list.get(0));
|
||||
}
|
||||
Set<LawsWorkingGroup> nodesSet = new HashSet<>();
|
||||
for (LawsWorkingGroup matchedNode : matchedNodes) {
|
||||
nodesSet.addAll(findPathToRoot(list, matchedNode));
|
||||
nodesSet.addAll(findAllChildren(list, matchedNode));
|
||||
}
|
||||
List<LawsWorkingGroup> LawsWorkingGroups = new ArrayList<>(nodesSet);
|
||||
return this.convertToTree(LawsWorkingGroups);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list) {
|
||||
if (list == null || list.size() == 0){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<LawsWorkingGroup> treeList = new ArrayList<>();
|
||||
List<SysUser> listSysUser = sysUserService.list();
|
||||
for (LawsWorkingGroup group : list) {
|
||||
if (StringUtils.isBlank(group.getPid())) {
|
||||
group.setLevel(1);
|
||||
addChildGroups(group, list, listSysUser);
|
||||
treeList.add(group);
|
||||
}
|
||||
}
|
||||
return treeList;
|
||||
}
|
||||
private void addChildGroups(LawsWorkingGroup parentGroup, List<LawsWorkingGroup> list, List<SysUser> listSysUser) {
|
||||
List<LawsWorkingGroup> childGroups = new ArrayList<>();
|
||||
for (LawsWorkingGroup group : list) {
|
||||
if (StringUtils.isNotBlank(group.getPid()) && parentGroup.getId().equals(group.getPid())) {
|
||||
group.setLevel(parentGroup.getLevel() + 1);
|
||||
if(!CollectionUtils.isEmpty(listSysUser) && !StringUtils.isBlank(group.getUserId())){
|
||||
Optional<SysUser> op = listSysUser.stream().filter(o->Objects.equals(o.getId(),group.getUserId())).findFirst();
|
||||
op.ifPresent(sysUser -> group.setUserName(sysUser.getRealname() + "(" + sysUser.getUsername() + ")"));
|
||||
}
|
||||
addChildGroups(group, list, listSysUser);
|
||||
childGroups.add(group);
|
||||
}
|
||||
}
|
||||
parentGroup.setSubset(childGroups);
|
||||
}
|
||||
private Set<LawsWorkingGroup> findPathToRoot(List<LawsWorkingGroup> list, LawsWorkingGroup node) {
|
||||
Set<LawsWorkingGroup> pathNodes = new HashSet<>();
|
||||
LawsWorkingGroup currentHolder = node;
|
||||
while (currentHolder != null) {
|
||||
pathNodes.add(currentHolder);
|
||||
LawsWorkingGroup finalCurrentHolder = currentHolder;
|
||||
currentHolder = list.stream()
|
||||
.filter(n -> n.getId().equals(finalCurrentHolder.getPid()))
|
||||
.findFirst().orElse(null);
|
||||
}
|
||||
return pathNodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对列表数据转树结构列表(指定开始节点)
|
||||
*/
|
||||
@Override
|
||||
public LawsWorkingGroup convertToTreeById(List<LawsWorkingGroup> list, String id) {
|
||||
if (list == null || list.size() == 0 || StringUtils.isBlank(id)){
|
||||
return null;
|
||||
}
|
||||
LawsWorkingGroup root = null;
|
||||
for (LawsWorkingGroup group : list) {
|
||||
if (group.getId().equals(id)) {
|
||||
root = group;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (root == null) {
|
||||
return null; // 如果没有找到指定的id,返回null
|
||||
}
|
||||
addChildGroupsById(root, list);
|
||||
return root;
|
||||
}
|
||||
private void addChildGroupsById(LawsWorkingGroup parentGroup, List<LawsWorkingGroup> list) {
|
||||
List<LawsWorkingGroup> childGroups = new ArrayList<>();
|
||||
for (LawsWorkingGroup group : list) {
|
||||
if (StringUtils.isNotBlank(group.getPid()) && parentGroup.getId().equals(group.getPid())) {
|
||||
addChildGroupsById(group, list);
|
||||
childGroups.add(group);
|
||||
}
|
||||
}
|
||||
parentGroup.setSubset(childGroups);
|
||||
}
|
||||
private Set<LawsWorkingGroup> findAllChildren(List<LawsWorkingGroup> list, LawsWorkingGroup node) {
|
||||
Set<LawsWorkingGroup> childrenSet = new HashSet<>();
|
||||
List<LawsWorkingGroup> directChildren = list.stream().filter(n -> n.getPid().equals(node.getId())).collect(Collectors.toList());
|
||||
for (LawsWorkingGroup child : directChildren) {
|
||||
childrenSet.add(child);
|
||||
childrenSet.addAll(findAllChildren(list, child));
|
||||
}
|
||||
return childrenSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list) {
|
||||
if (list == null || list.size() == 0) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<LawsWorkingGroup> treeList = new ArrayList<>();
|
||||
List<SysUser> listSysUser = sysUserService.list();
|
||||
for (LawsWorkingGroup group : list) {
|
||||
if (StringUtils.isBlank(group.getPid())) {
|
||||
group.setLevel(1);
|
||||
addChildGroups(group, list, listSysUser);
|
||||
treeList.add(group);
|
||||
}
|
||||
}
|
||||
return treeList;
|
||||
}
|
||||
|
||||
private void addChildGroups(LawsWorkingGroup parentGroup, List<LawsWorkingGroup> list, List<SysUser> listSysUser) {
|
||||
List<LawsWorkingGroup> childGroups = new ArrayList<>();
|
||||
for (LawsWorkingGroup group : list) {
|
||||
if (StringUtils.isNotBlank(group.getPid()) && parentGroup.getId().equals(group.getPid())) {
|
||||
group.setLevel(parentGroup.getLevel() + 1);
|
||||
if (!CollectionUtils.isEmpty(listSysUser) && !StringUtils.isBlank(group.getUserId())) {
|
||||
Optional<SysUser> op = listSysUser.stream().filter(o -> Objects.equals(o.getId(), group.getUserId())).findFirst();
|
||||
op.ifPresent(sysUser -> group.setUserName(sysUser.getRealname() + "(" + sysUser.getUsername() + ")"));
|
||||
}
|
||||
addChildGroups(group, list, listSysUser);
|
||||
childGroups.add(group);
|
||||
}
|
||||
}
|
||||
parentGroup.setSubset(childGroups);
|
||||
}
|
||||
|
||||
/**
|
||||
* 对列表数据转树结构列表(指定开始节点)
|
||||
*/
|
||||
@Override
|
||||
public LawsWorkingGroup convertToTreeById(List<LawsWorkingGroup> list, String id) {
|
||||
if (list == null || list.size() == 0 || StringUtils.isBlank(id)) {
|
||||
return null;
|
||||
}
|
||||
LawsWorkingGroup root = null;
|
||||
for (LawsWorkingGroup group : list) {
|
||||
if (group.getId().equals(id)) {
|
||||
root = group;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (root == null) {
|
||||
return null; // 如果没有找到指定的id,返回null
|
||||
}
|
||||
addChildGroupsById(root, list);
|
||||
return root;
|
||||
}
|
||||
|
||||
private void addChildGroupsById(LawsWorkingGroup parentGroup, List<LawsWorkingGroup> list) {
|
||||
List<LawsWorkingGroup> childGroups = new ArrayList<>();
|
||||
for (LawsWorkingGroup group : list) {
|
||||
if (StringUtils.isNotBlank(group.getPid()) && parentGroup.getId().equals(group.getPid())) {
|
||||
addChildGroupsById(group, list);
|
||||
childGroups.add(group);
|
||||
}
|
||||
}
|
||||
parentGroup.setSubset(childGroups);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定节点以及所有子节点ID
|
||||
*/
|
||||
@Override
|
||||
public List<String> allChildIdById(List<LawsWorkingGroup> list, String id, List<String> ids) {
|
||||
if (list == null || list.size() == 0){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<String> collect = list.stream().filter(LawsWorkingGroup -> id.equals(LawsWorkingGroup.getPid())).map(LawsWorkingGroup::getId).collect(Collectors.toList());
|
||||
for (String s : collect) {
|
||||
allChildIdById(list, s, ids);
|
||||
}
|
||||
ids.add(id);
|
||||
return ids;
|
||||
}
|
||||
/**
|
||||
* 获取指定节点以及所有子节点ID
|
||||
*/
|
||||
@Override
|
||||
public List<String> allChildIdById(List<LawsWorkingGroup> list, String id, List<String> ids) {
|
||||
if (list == null || list.size() == 0) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<String> collect = list.stream().filter(LawsWorkingGroup -> id.equals(LawsWorkingGroup.getPid())).map(LawsWorkingGroup::getId).collect(Collectors.toList());
|
||||
for (String s : collect) {
|
||||
allChildIdById(list, s, ids);
|
||||
}
|
||||
ids.add(id);
|
||||
return ids;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user