角色模板返回树形

This commit is contained in:
张松
2025-12-09 14:28:41 +08:00
parent b28f2557b3
commit 15e82e853b
2 changed files with 29 additions and 4 deletions

View File

@@ -8,6 +8,8 @@ import java.io.Serializable;
import java.time.LocalDateTime;
import java.io.Serial;
import java.util.ArrayList;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -76,4 +78,6 @@ public class SysRoleTemplate implements Serializable {
*/
private Integer pid;
private List<SysRoleTemplate> children = new ArrayList<>();
}

View File

@@ -13,7 +13,10 @@ import com.czg.market.service.SysRoleTemplateService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 角色模板 服务层实现。
@@ -42,10 +45,28 @@ public class SysRoleTemplateServiceImpl extends ServiceImpl<SysRoleTemplateMappe
@Override
public List<SysRoleTemplate> listInfo(Long pid) {
QueryWrapper queryWrapper = new QueryWrapper().eq(SysRoleTemplate::getPid, pid);
if (pid == null) {
queryWrapper.isNull(SysRoleTemplate::getPid);
}
return list(queryWrapper);
List<SysRoleTemplate> list = list(queryWrapper);
// 转成 map便于通过 id 找节点
Map<Integer, SysRoleTemplate> map = list.stream()
.collect(Collectors.toMap(SysRoleTemplate::getId, v -> v));
// 存根节点
List<SysRoleTemplate> roots = new ArrayList<>();
list.forEach(item -> {
if (item.getPid() == null || item.getPid() == 0) {
// 这是根节点
roots.add(item);
} else {
// 找父节点
SysRoleTemplate parent = map.get(item.getPid());
if (parent != null) {
parent.getChildren().add(item);
}
}
});
return roots;
}
@Override