diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index 5e07c96c0..ade320c47 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -122,5 +122,15 @@ public interface Constants { */ String SYS_DICT_KEY = "sys_dict:"; + /** + * Long数据类型默认根节点 + */ + Long LongRootId = 0L; + + /** + * String数据类型默认根节点 + */ + String StringRootId = "0"; + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeBuildUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeBuildUtils.java index 76bf864f4..59c00e134 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeBuildUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeBuildUtils.java @@ -1,9 +1,11 @@ package com.ruoyi.common.utils; +import cn.hutool.core.lang.Validator; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; import cn.hutool.core.lang.tree.parser.NodeParser; +import com.ruoyi.common.constant.Constants; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -22,7 +24,37 @@ public class TreeBuildUtils extends TreeUtil { */ public static final TreeNodeConfig DEFAULT_CONFIG = TreeNodeConfig.DEFAULT_CONFIG.setNameKey("label"); + /** + * 构建整型类型的树型结构 + * @param list 数据列表 + * @param parentId 父级ID + * @param nodeParser 节点解析 + * @param 实体 + * @return + */ public static List> build(List list, Long parentId, NodeParser nodeParser) { + // 默认设为根节点 + if (Validator.isNull(parentId)) { + parentId = Constants.LongRootId; + } + + return TreeUtil.build(list, parentId, DEFAULT_CONFIG, nodeParser); + } + + /** + * 构建字符串类型的树型结构 + * @param list 数据列表 + * @param parentId 父级ID + * @param nodeParser 节点解析 + * @param 实体 + * @return + */ + public static List> buildStrTree(List list, String parentId, NodeParser nodeParser) { + // 默认设为根节点 + if (Validator.isEmpty(parentId)) { + parentId = Constants.StringRootId; + } + return TreeUtil.build(list, parentId, DEFAULT_CONFIG, nodeParser); }