fix: 内部工作组权限问题及修复权限数据接口

This commit is contained in:
2024-06-14 11:37:21 +08:00
parent c1f978d28a
commit 724f8f4781
3 changed files with 224 additions and 167 deletions
@@ -223,4 +223,15 @@ public class LawsWorkingGroupController extends JeroController<LawsWorkingGroup,
} }
return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); 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); void add(LawsWorkingGroup lawsWorkingGroup);
/**
* 修复所有权限
*
* @param
* @return
*/
void fixAllAuth();
/** /**
* 更新 * 更新
* *
@@ -1,5 +1,6 @@
package com.jero.modules.sys.service.impl; package com.jero.modules.sys.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.constant.CommonConstant; import com.jero.common.constant.CommonConstant;
import com.jero.modules.sys.entity.LawsWorkingGroup; import com.jero.modules.sys.entity.LawsWorkingGroup;
@@ -58,6 +59,22 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
save(lawsWorkingGroup); save(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);
}
}
/** /**
* 更新 * 更新
* *
@@ -66,11 +83,28 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
*/ */
@Override @Override
public void editById(LawsWorkingGroup lawsWorkingGroup) { 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(); Date now = new Date();
lawsWorkingGroup.setUpdateTime(now); lawsWorkingGroup.setUpdateTime(now);
saveOrUpdate(lawsWorkingGroup); 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删除 * 通过id删除
* *
@@ -129,6 +163,7 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
List<LawsWorkingGroup> LawsWorkingGroups = new ArrayList<>(nodesSet); List<LawsWorkingGroup> LawsWorkingGroups = new ArrayList<>(nodesSet);
return this.convertToTree(LawsWorkingGroups); return this.convertToTree(LawsWorkingGroups);
} }
private Set<LawsWorkingGroup> findPathToRoot(List<LawsWorkingGroup> list, LawsWorkingGroup node) { private Set<LawsWorkingGroup> findPathToRoot(List<LawsWorkingGroup> list, LawsWorkingGroup node) {
Set<LawsWorkingGroup> pathNodes = new HashSet<>(); Set<LawsWorkingGroup> pathNodes = new HashSet<>();
LawsWorkingGroup currentHolder = node; LawsWorkingGroup currentHolder = node;
@@ -141,6 +176,7 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
} }
return pathNodes; return pathNodes;
} }
private Set<LawsWorkingGroup> findAllChildren(List<LawsWorkingGroup> list, LawsWorkingGroup node) { private Set<LawsWorkingGroup> findAllChildren(List<LawsWorkingGroup> list, LawsWorkingGroup node) {
Set<LawsWorkingGroup> childrenSet = new HashSet<>(); Set<LawsWorkingGroup> childrenSet = new HashSet<>();
List<LawsWorkingGroup> directChildren = list.stream().filter(n -> n.getPid().equals(node.getId())).collect(Collectors.toList()); List<LawsWorkingGroup> directChildren = list.stream().filter(n -> n.getPid().equals(node.getId())).collect(Collectors.toList());
@@ -153,7 +189,7 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
@Override @Override
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list) { public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list) {
if (list == null || list.size() == 0){ if (list == null || list.size() == 0) {
return new ArrayList<>(); return new ArrayList<>();
} }
List<LawsWorkingGroup> treeList = new ArrayList<>(); List<LawsWorkingGroup> treeList = new ArrayList<>();
@@ -167,13 +203,14 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
} }
return treeList; return treeList;
} }
private void addChildGroups(LawsWorkingGroup parentGroup, List<LawsWorkingGroup> list, List<SysUser> listSysUser) { private void addChildGroups(LawsWorkingGroup parentGroup, List<LawsWorkingGroup> list, List<SysUser> listSysUser) {
List<LawsWorkingGroup> childGroups = new ArrayList<>(); List<LawsWorkingGroup> childGroups = new ArrayList<>();
for (LawsWorkingGroup group : list) { for (LawsWorkingGroup group : list) {
if (StringUtils.isNotBlank(group.getPid()) && parentGroup.getId().equals(group.getPid())) { if (StringUtils.isNotBlank(group.getPid()) && parentGroup.getId().equals(group.getPid())) {
group.setLevel(parentGroup.getLevel() + 1); group.setLevel(parentGroup.getLevel() + 1);
if(!CollectionUtils.isEmpty(listSysUser) && !StringUtils.isBlank(group.getUserId())){ if (!CollectionUtils.isEmpty(listSysUser) && !StringUtils.isBlank(group.getUserId())) {
Optional<SysUser> op = listSysUser.stream().filter(o->Objects.equals(o.getId(),group.getUserId())).findFirst(); Optional<SysUser> op = listSysUser.stream().filter(o -> Objects.equals(o.getId(), group.getUserId())).findFirst();
op.ifPresent(sysUser -> group.setUserName(sysUser.getRealname() + "(" + sysUser.getUsername() + ")")); op.ifPresent(sysUser -> group.setUserName(sysUser.getRealname() + "(" + sysUser.getUsername() + ")"));
} }
addChildGroups(group, list, listSysUser); addChildGroups(group, list, listSysUser);
@@ -188,7 +225,7 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
*/ */
@Override @Override
public LawsWorkingGroup convertToTreeById(List<LawsWorkingGroup> list, String id) { public LawsWorkingGroup convertToTreeById(List<LawsWorkingGroup> list, String id) {
if (list == null || list.size() == 0 || StringUtils.isBlank(id)){ if (list == null || list.size() == 0 || StringUtils.isBlank(id)) {
return null; return null;
} }
LawsWorkingGroup root = null; LawsWorkingGroup root = null;
@@ -204,6 +241,7 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
addChildGroupsById(root, list); addChildGroupsById(root, list);
return root; return root;
} }
private void addChildGroupsById(LawsWorkingGroup parentGroup, List<LawsWorkingGroup> list) { private void addChildGroupsById(LawsWorkingGroup parentGroup, List<LawsWorkingGroup> list) {
List<LawsWorkingGroup> childGroups = new ArrayList<>(); List<LawsWorkingGroup> childGroups = new ArrayList<>();
for (LawsWorkingGroup group : list) { for (LawsWorkingGroup group : list) {
@@ -221,7 +259,7 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
*/ */
@Override @Override
public List<String> allChildIdById(List<LawsWorkingGroup> list, String id, List<String> ids) { public List<String> allChildIdById(List<LawsWorkingGroup> list, String id, List<String> ids) {
if (list == null || list.size() == 0){ if (list == null || list.size() == 0) {
return new ArrayList<>(); return new ArrayList<>();
} }
List<String> collect = list.stream().filter(LawsWorkingGroup -> id.equals(LawsWorkingGroup.getPid())).map(LawsWorkingGroup::getId).collect(Collectors.toList()); List<String> collect = list.stream().filter(LawsWorkingGroup -> id.equals(LawsWorkingGroup.getPid())).map(LawsWorkingGroup::getId).collect(Collectors.toList());