提交 3587aec3 编写于 作者: tangyaologin's avatar tangyaologin

角色查询父子关系代码优化

上级 3ac4c2f0
...@@ -14,7 +14,6 @@ import org.springframework.context.annotation.Primary; ...@@ -14,7 +14,6 @@ import org.springframework.context.annotation.Primary;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.*; import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
/** /**
* 实体[系统角色] 自定义服务对象 * 实体[系统角色] 自定义服务对象
...@@ -47,31 +46,30 @@ public class SysRoleExService extends SysRoleServiceImpl { ...@@ -47,31 +46,30 @@ public class SysRoleExService extends SysRoleServiceImpl {
@Override @Override
@SneakyThrows @SneakyThrows
public Page<SysRole> searchNoRepeat(SysRoleSearchContext context) { public Page<SysRole> searchNoRepeat(SysRoleSearchContext context) {
List<SysRole> newResult = new CopyOnWriteArrayList<>(); List<SysRole> newResult = new ArrayList<>();
String sysRoleid = (String) context.getParams().get("sys_roleid"); String sysRoleId = (String) context.getParams().get("sys_roleid");
com.baomidou.mybatisplus.extension.plugins.pagination.Page<SysRole> pages = baseMapper.searchNoRepeat(context.getPages(),context,context.getSelectCond()); com.baomidou.mybatisplus.extension.plugins.pagination.Page<SysRole> pages = baseMapper.searchNoRepeat(context.getPages(),context,context.getSelectCond());
if(!ObjectUtils.isEmpty(sysRoleid)){ if(!ObjectUtils.isEmpty(sysRoleId)){
findSRelation(result,pages.getRecords(),sysRoleid); findSRelation(pages.getRecords(),sysRoleId);
newResult.addAll(findPRelation(sysRoleid,new ArrayList<SysRole>())); newResult.addAll(findPRelation(sysRoleId,new ArrayList<>()));
newResult.addAll(result); newResult.addAll(result);
result.clear(); result.clear();
} }
for (int i = 0;i < newResult.size();i++){ for (SysRole sysRole : newResult) {
for (int j = 0;j < pages.getRecords().size();j++){ for (int j = 0; j < pages.getRecords().size(); j++) {
if(pages.getRecords().get(j).getRoleid().equals(newResult.get(i).getRoleid())){ if (pages.getRecords().get(j).getRoleid().equals(sysRole.getRoleid())) {
pages.getRecords().remove(j); pages.getRecords().remove(j);
} }
} }
} }
return new PageImpl<SysRole>(pages.getRecords(), context.getPageable(), pages.getTotal() - newResult.size()); return new PageImpl<>(pages.getRecords(), context.getPageable(), pages.getTotal() - newResult.size());
} }
/** /**
* 递归获取某个子节点的所有父节点 * 递归获取某个子节点的所有父节点
* @param contextId 上下文中当前子节点id * @param contextId 上下文中当前子节点id
* @param pList 父id集合 * @param pList 父id集合
* @return
*/ */
private List<SysRole> findPRelation(String contextId,List<SysRole> pList){ private List<SysRole> findPRelation(String contextId,List<SysRole> pList){
SysRole currentSysRole = baseMapper.selectById(contextId); SysRole currentSysRole = baseMapper.selectById(contextId);
...@@ -90,15 +88,14 @@ public class SysRoleExService extends SysRoleServiceImpl { ...@@ -90,15 +88,14 @@ public class SysRoleExService extends SysRoleServiceImpl {
/** /**
* 递归获取某个父节点下的所有子节点 * 递归获取某个父节点下的所有子节点
* @param childRole 返回的结果
* @param roleList 数据库查询出来的所有角色集合 * @param roleList 数据库查询出来的所有角色集合
* @param pId 父id * @param pId 父id
*/ */
private void findSRelation(List<SysRole> childRole,List<SysRole> roleList, String pId) { private void findSRelation(List<SysRole> roleList, String pId) {
for (SysRole role : roleList) { for (SysRole role : roleList) {
if (!StringUtils.isEmpty(role.getProleid())) { if (!StringUtils.isEmpty(role.getProleid())) {
if (role.getProleid().equals(pId)) { if (role.getProleid().equals(pId)) {
findSRelation(childRole,roleList, role.getRoleid()); findSRelation(roleList, role.getRoleid());
result.add(role); result.add(role);
} }
} }
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册