fix: 内部工作组权限问题及修复权限数据接口
This commit is contained in:
+11
@@ -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();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新
|
* 更新
|
||||||
*
|
*
|
||||||
|
|||||||
+205
-167
@@ -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;
|
||||||
@@ -24,33 +25,33 @@ import javax.annotation.Resource;
|
|||||||
/**
|
/**
|
||||||
* @Description: 内部工作组
|
* @Description: 内部工作组
|
||||||
* @Author: jero-boot
|
* @Author: jero-boot
|
||||||
* @Date: 2023-09-06
|
* @Date: 2023-09-06
|
||||||
* @Version: V1.0
|
* @Version: V1.0
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Transactional(rollbackFor = JeroBootException.class)
|
@Transactional(rollbackFor = JeroBootException.class)
|
||||||
public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMapper, LawsWorkingGroup> implements ILawsWorkingGroupService {
|
public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMapper, LawsWorkingGroup> implements ILawsWorkingGroupService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ISysUserService sysUserService;
|
private ISysUserService sysUserService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 列表查询
|
* 列表查询
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<LawsWorkingGroup> queryList() {
|
public List<LawsWorkingGroup> queryList() {
|
||||||
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
|
wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
|
||||||
return list(wrapper);
|
return list(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
*
|
*
|
||||||
* @param lawsWorkingGroup
|
* @param lawsWorkingGroup
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void add(LawsWorkingGroup lawsWorkingGroup) {
|
public void add(LawsWorkingGroup lawsWorkingGroup) {
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
lawsWorkingGroup.setCreateTime(now);
|
lawsWorkingGroup.setCreateTime(now);
|
||||||
@@ -58,177 +59,214 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
|
|||||||
save(lawsWorkingGroup);
|
save(lawsWorkingGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新
|
* 修复所有标准分会分配的管理权限
|
||||||
*
|
*
|
||||||
* @param lawsWorkingGroup
|
* @param
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void editById(LawsWorkingGroup lawsWorkingGroup) {
|
public void fixAllAuth() {
|
||||||
Date now = new Date();
|
// 获取所有二级工作组
|
||||||
lawsWorkingGroup.setUpdateTime(now);
|
List<LawsWorkingGroup> list = this.list(
|
||||||
saveOrUpdate(lawsWorkingGroup);
|
new LambdaQueryWrapper<LawsWorkingGroup>().eq(LawsWorkingGroup::getLevel, 2));
|
||||||
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
|
list.forEach(this::editById);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过id删除
|
* 更新
|
||||||
*
|
*
|
||||||
* @param id
|
* @param lawsWorkingGroup
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@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) {
|
public void deleteById(String id) {
|
||||||
removeById(id);
|
removeById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除
|
* 批量删除
|
||||||
*
|
*
|
||||||
* @param ids
|
* @param ids
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void deleteByIds(List<String> ids) {
|
public void deleteByIds(List<String> ids) {
|
||||||
removeByIds(ids);
|
removeByIds(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过id查询
|
* 通过id查询
|
||||||
*
|
*
|
||||||
* @param id
|
* @param id
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public LawsWorkingGroup queryById(String id) {
|
public LawsWorkingGroup queryById(String id) {
|
||||||
return getById(id);
|
return getById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<LawsWorkingGroup> realList() {
|
public List<LawsWorkingGroup> realList() {
|
||||||
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
|
wrapper.eq(LawsWorkingGroup::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
|
||||||
List<LawsWorkingGroup> list = list(wrapper);
|
List<LawsWorkingGroup> list = list(wrapper);
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对列表数据转树结构列表(pid为空当作开始节点)
|
* 对列表数据转树结构列表(pid为空当作开始节点)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list, String name) {
|
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list, String name) {
|
||||||
List<LawsWorkingGroup> matchedNodes = list.stream().filter(node -> node.getName().contains(name)).collect(Collectors.toList());
|
List<LawsWorkingGroup> matchedNodes = list.stream().filter(node -> node.getName().contains(name)).collect(Collectors.toList());
|
||||||
if (matchedNodes.isEmpty()) {
|
if (matchedNodes.isEmpty()) {
|
||||||
return Collections.singletonList(list.get(0));
|
return Collections.singletonList(list.get(0));
|
||||||
}
|
}
|
||||||
Set<LawsWorkingGroup> nodesSet = new HashSet<>();
|
Set<LawsWorkingGroup> nodesSet = new HashSet<>();
|
||||||
for (LawsWorkingGroup matchedNode : matchedNodes) {
|
for (LawsWorkingGroup matchedNode : matchedNodes) {
|
||||||
nodesSet.addAll(findPathToRoot(list, matchedNode));
|
nodesSet.addAll(findPathToRoot(list, matchedNode));
|
||||||
nodesSet.addAll(findAllChildren(list, matchedNode));
|
nodesSet.addAll(findAllChildren(list, matchedNode));
|
||||||
}
|
}
|
||||||
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) {
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
private Set<LawsWorkingGroup> findPathToRoot(List<LawsWorkingGroup> list, LawsWorkingGroup node) {
|
||||||
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list) {
|
Set<LawsWorkingGroup> pathNodes = new HashSet<>();
|
||||||
if (list == null || list.size() == 0){
|
LawsWorkingGroup currentHolder = node;
|
||||||
return new ArrayList<>();
|
while (currentHolder != null) {
|
||||||
}
|
pathNodes.add(currentHolder);
|
||||||
List<LawsWorkingGroup> treeList = new ArrayList<>();
|
LawsWorkingGroup finalCurrentHolder = currentHolder;
|
||||||
List<SysUser> listSysUser = sysUserService.list();
|
currentHolder = list.stream()
|
||||||
for (LawsWorkingGroup group : list) {
|
.filter(n -> n.getId().equals(finalCurrentHolder.getPid()))
|
||||||
if (StringUtils.isBlank(group.getPid())) {
|
.findFirst().orElse(null);
|
||||||
group.setLevel(1);
|
}
|
||||||
addChildGroups(group, list, listSysUser);
|
return pathNodes;
|
||||||
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> 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());
|
||||||
@Override
|
for (LawsWorkingGroup child : directChildren) {
|
||||||
public LawsWorkingGroup convertToTreeById(List<LawsWorkingGroup> list, String id) {
|
childrenSet.add(child);
|
||||||
if (list == null || list.size() == 0 || StringUtils.isBlank(id)){
|
childrenSet.addAll(findAllChildren(list, child));
|
||||||
return null;
|
}
|
||||||
}
|
return childrenSet;
|
||||||
LawsWorkingGroup root = null;
|
}
|
||||||
for (LawsWorkingGroup group : list) {
|
|
||||||
if (group.getId().equals(id)) {
|
@Override
|
||||||
root = group;
|
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list) {
|
||||||
break;
|
if (list == null || list.size() == 0) {
|
||||||
}
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
if (root == null) {
|
List<LawsWorkingGroup> treeList = new ArrayList<>();
|
||||||
return null; // 如果没有找到指定的id,返回null
|
List<SysUser> listSysUser = sysUserService.list();
|
||||||
}
|
for (LawsWorkingGroup group : list) {
|
||||||
addChildGroupsById(root, list);
|
if (StringUtils.isBlank(group.getPid())) {
|
||||||
return root;
|
group.setLevel(1);
|
||||||
}
|
addChildGroups(group, list, listSysUser);
|
||||||
private void addChildGroupsById(LawsWorkingGroup parentGroup, List<LawsWorkingGroup> list) {
|
treeList.add(group);
|
||||||
List<LawsWorkingGroup> childGroups = new ArrayList<>();
|
}
|
||||||
for (LawsWorkingGroup group : list) {
|
}
|
||||||
if (StringUtils.isNotBlank(group.getPid()) && parentGroup.getId().equals(group.getPid())) {
|
return treeList;
|
||||||
addChildGroupsById(group, list);
|
}
|
||||||
childGroups.add(group);
|
|
||||||
}
|
private void addChildGroups(LawsWorkingGroup parentGroup, List<LawsWorkingGroup> list, List<SysUser> listSysUser) {
|
||||||
}
|
List<LawsWorkingGroup> childGroups = new ArrayList<>();
|
||||||
parentGroup.setSubset(childGroups);
|
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
|
* 获取指定节点以及所有子节点ID
|
||||||
*/
|
*/
|
||||||
@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());
|
||||||
for (String s : collect) {
|
for (String s : collect) {
|
||||||
allChildIdById(list, s, ids);
|
allChildIdById(list, s, ids);
|
||||||
}
|
}
|
||||||
ids.add(id);
|
ids.add(id);
|
||||||
return ids;
|
return ids;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user