diff --git a/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java b/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java index 7147cb75..52f4e843 100644 --- a/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java +++ b/laws-modules/src/main/java/com/jero/modules/sys/controller/LawsWorkingGroupController.java @@ -223,4 +223,15 @@ public class LawsWorkingGroupController extends JeroController fixAllAuth() { + lawsWorkingGroupService.fixAllAuth(); + return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); + } } diff --git a/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java b/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java index bfe76b4b..8c8fe9bd 100644 --- a/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java +++ b/laws-modules/src/main/java/com/jero/modules/sys/service/ILawsWorkingGroupService.java @@ -27,6 +27,14 @@ public interface ILawsWorkingGroupService extends IService { */ void add(LawsWorkingGroup lawsWorkingGroup); + /** + * 修复所有权限 + * + * @param + * @return + */ + void fixAllAuth(); + /** * 更新 * diff --git a/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java index 6c069680..fb5df61b 100644 --- a/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/sys/service/impl/LawsWorkingGroupServiceImpl.java @@ -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 implements ILawsWorkingGroupService { - @Resource - private ISysUserService sysUserService; + @Resource + private ISysUserService sysUserService; /** * 列表查询 */ @Override public List queryList() { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - return list(wrapper); + LambdaQueryWrapper 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 list = this.list( + new LambdaQueryWrapper().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 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 getSubset(String pId) { + LambdaQueryWrapper 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 ids) { removeByIds(ids); } - /** - * 通过id查询 - * - * @param id - * @return - */ - @Override + /** + * 通过id查询 + * + * @param id + * @return + */ + @Override public LawsWorkingGroup queryById(String id) { return getById(id); } - @Override - public List realList() { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - List list = list(wrapper); - return list; - } + @Override + public List realList() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + List list = list(wrapper); + return list; + } - /** - * 对列表数据转树结构列表(pid为空当作开始节点) - */ - @Override - public List convertToTree(List list, String name) { - List matchedNodes = list.stream().filter(node -> node.getName().contains(name)).collect(Collectors.toList()); - if (matchedNodes.isEmpty()) { - return Collections.singletonList(list.get(0)); - } - Set nodesSet = new HashSet<>(); - for (LawsWorkingGroup matchedNode : matchedNodes) { - nodesSet.addAll(findPathToRoot(list, matchedNode)); - nodesSet.addAll(findAllChildren(list, matchedNode)); - } - List LawsWorkingGroups = new ArrayList<>(nodesSet); - return this.convertToTree(LawsWorkingGroups); - } - private Set findPathToRoot(List list, LawsWorkingGroup node) { - Set 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 findAllChildren(List list, LawsWorkingGroup node) { - Set childrenSet = new HashSet<>(); - List 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 convertToTree(List list, String name) { + List matchedNodes = list.stream().filter(node -> node.getName().contains(name)).collect(Collectors.toList()); + if (matchedNodes.isEmpty()) { + return Collections.singletonList(list.get(0)); + } + Set nodesSet = new HashSet<>(); + for (LawsWorkingGroup matchedNode : matchedNodes) { + nodesSet.addAll(findPathToRoot(list, matchedNode)); + nodesSet.addAll(findAllChildren(list, matchedNode)); + } + List LawsWorkingGroups = new ArrayList<>(nodesSet); + return this.convertToTree(LawsWorkingGroups); + } - @Override - public List convertToTree(List list) { - if (list == null || list.size() == 0){ - return new ArrayList<>(); - } - List treeList = new ArrayList<>(); - List 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 list, List listSysUser) { - List 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 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 findPathToRoot(List list, LawsWorkingGroup node) { + Set 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 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 list) { - List 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 findAllChildren(List list, LawsWorkingGroup node) { + Set childrenSet = new HashSet<>(); + List 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 convertToTree(List list) { + if (list == null || list.size() == 0) { + return new ArrayList<>(); + } + List treeList = new ArrayList<>(); + List 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 list, List listSysUser) { + List 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 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 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 list) { + List 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 allChildIdById(List list, String id, List ids) { - if (list == null || list.size() == 0){ - return new ArrayList<>(); - } - List 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 allChildIdById(List list, String id, List ids) { + if (list == null || list.size() == 0) { + return new ArrayList<>(); + } + List 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; + } }