3 Commits

Author SHA1 Message Date
试着奔跑的菜鸟
b784b4b2e3 Pre Merge pull request !373 from 试着奔跑的菜鸟/master 2025-03-07 04:57:06 +00:00
RuoYi
8c096cba8d 优化isAdmin方法,避免脱敏模块security依赖 2025-03-07 12:56:31 +08:00
试着奔跑的菜鸟
ad34bc5698 优化部门管理组装树型结构数据
1. 使用Set集合代替List判断元素是否存在
2. 修改recursionFn中通过map集合的内容判断是否有子元素的方法

Signed-off-by: 试着奔跑的菜鸟 <846933465@qq.com>
2024-05-15 00:24:15 +00:00
5 changed files with 31 additions and 25 deletions

View File

@@ -8,6 +8,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.annotation.Excel.Type;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.annotation.Excels;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.core.xss.Xss;
@@ -116,7 +117,7 @@ public class SysUser extends BaseEntity
public static boolean isAdmin(Long userId)
{
return userId != null && 1L == userId;
return UserConstants.isAdmin(userId);
}
public Long getDeptId()

View File

@@ -80,4 +80,9 @@ public class UserConstants
public static final int PASSWORD_MIN_LENGTH = 5;
public static final int PASSWORD_MAX_LENGTH = 20;
public static boolean isAdmin(Long userId)
{
return userId != null && 1L == userId;
}
}

View File

@@ -17,10 +17,10 @@
<dependencies>
<!-- RuoYi Common Security -->
<!-- RuoYi Common Core -->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common-security</artifactId>
<artifactId>ruoyi-common-core</artifactId>
</dependency>
</dependencies>

View File

@@ -8,10 +8,10 @@ import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.context.SecurityContextHolder;
import com.ruoyi.common.sensitive.annotation.Sensitive;
import com.ruoyi.common.sensitive.enums.DesensitizedType;
import com.ruoyi.system.api.model.LoginUser;
/**
* 数据脱敏序列化过滤
@@ -55,9 +55,9 @@ public class SensitiveJsonSerializer extends JsonSerializer<String> implements C
{
try
{
LoginUser securityUser = SecurityUtils.getLoginUser();
Long userId = SecurityContextHolder.getUserId();
// 管理员不脱敏
return !securityUser.getSysUser().isAdmin();
return !UserConstants.isAdmin(userId);
}
catch (Exception e)
{

View File

@@ -3,6 +3,7 @@ package com.ruoyi.system.service.impl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -68,21 +69,20 @@ public class SysDeptServiceImpl implements ISysDeptService
* @return 树结构列表
*/
@Override
public List<SysDept> buildDeptTree(List<SysDept> depts)
{
public List<SysDept> buildDeptTree(List<SysDept> depts) {
List<SysDept> returnList = new ArrayList<SysDept>();
List<Long> tempList = depts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
for (SysDept dept : depts)
{
// 按父级分组
Map<Long, List<SysDept>> groupByParentIdDepts = depts.stream().filter(dept -> dept.getParentId() != null)
.collect(Collectors.groupingBy(SysDept::getParentId));
for (SysDept dept : depts) {
// 如果是顶级节点, 遍历该父节点的所有子节点
if (!tempList.contains(dept.getParentId()))
{
recursionFn(depts, dept);
if (!tempList.contains(dept.getParentId())) {
recursionFn(groupByParentIdDepts, dept);
returnList.add(dept);
}
}
if (returnList.isEmpty())
{
if (returnList.isEmpty()) {
returnList = depts;
}
return returnList;
@@ -296,17 +296,17 @@ public class SysDeptServiceImpl implements ISysDeptService
/**
* 递归列表
*/
private void recursionFn(List<SysDept> list, SysDept t)
{
private void recursionFn(Map<Long, List<SysDept>> groupByParentIdDepts, SysDept t) {
// 得到子节点列表
List<SysDept> childList = getChildList(list, t);
t.setChildren(childList);
for (SysDept tChild : childList)
{
if (hasChild(list, tChild))
{
recursionFn(list, tChild);
List<SysDept> childList = groupByParentIdDepts.get(t.getDeptId());
if (childList != null) {
t.setChildren(childList);
// 为每个子节点递归找到子节点
for (SysDept tChild : childList) {
recursionFn(groupByParentIdDepts, tChild);
}
} else {
t.setChildren(new ArrayList<>(0));
}
}