layui树形组件动态获取值或将父子节点转化同级别集合

数据库存储数据的格式

idcategoryNameparentid
1家电0
2电视1
3洗衣机1

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName(value = "code_enroll_category")
public class CodeEnrollCategory {
    @TableId(value = "id" ,type = IdType.AUTO)
    private Integer id;

    @TableField(value = "categoryName")
    private String categoryName;

    @TableField(value = "parentId")
    private Integer parentId;
}

mapper映射文件

 <resultMap id="BaseResultMap" type="codeEnrollCategory">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="categoryName" jdbcType="VARCHAR" property="categoryName" />
    <result column="parentId" jdbcType="INTEGER" property="parentId" />
  </resultMap>
  
<sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, categoryName, parentId
 </sql>
 
<select id="getTreeList" resultMap="BaseResultMap">
    select  <include refid="Base_Column_List"/>
    from `code_enroll_category`
    where state =1
  </select>

dao源码

List<CodeEnrollCategory> getTreeList();

serviceImpl层

/**
     * 
     * @return
     */
    @Override
    public List<Map<String, Object>> getTreeList() {
        List<CodeEnrollCategory> list = baseMapper.getTreeList();
        List<Map<String, Object>> result = new ArrayList<>();
        List<CodeEnrollCategory> collect = list.stream()
                .filter(codeEnrollCategory -> codeEnrollCategory.getParentId() == 0)
                .collect(Collectors.toList());
        return getTree( list , result,collect);  //第一种类型获取树状菜单
        return getList( list , result,collect);  //第二种类型将父子节点转化同级别集合
    }

    /**
     * 查找下级菜单
     * 将实体类格式转换成tree指定的数据格式
     * @param list
     * @param result
     * @return
     */
    private List<Map<String, Object>> getTree(List<CodeEnrollCategory> list ,List<Map<String, Object>> result,List<CodeEnrollCategory> collect){
        for (CodeEnrollCategory category : collect){
            Map<String, Object> map = new HashMap<>();
            map.put("id", category.getId());
            map.put("title", category.getCategoryName());
            map.put("spread",false);
            List<CodeEnrollCategory> collect1 = list.stream()
                    .filter(cate -> cate.getParentId().equals(category.getId()))
                    .collect(Collectors.toList());
            List<Map<String, Object>> result1 = new ArrayList<>();
            map.put("children", getTree(list, result1,collect1));
            result.add(map);
        }
        return result;
    }

  /**
     * 查找下级菜单
     * 将父子节点转化同级别集合List
     * @param list
     * @param result
     * @return
     */
    private List<Map<String, Object>> getList(List<CodeEnrollCategory> list ,List<Map<String, Object>> result,List<CodeEnrollCategory> collect){
        for (CodeEnrollCategory category : collect){
            Map<String, Object> map = new HashMap<>();
            map.put("id", category.getId());
            map.put("title", category.getCategoryName());
            map.put("spread",false);
            result.add(map);
            List<CodeEnrollCategory> collect1 = list.stream()
                    .filter(cate -> cate.getParentId().equals(category.getId()))
                    .collect(Collectors.toList());
             getList(list, result,collect1);
        }
        return result;
    }

service 接口

List<Map<String,Object>> getTreeList();

controller 接口

/**
     *获取树形菜单
     */
    @RequestMapping("/getTreeList")
    public R getTreeList(){
        List<Map<String, Object>> list= null;
        if(redisUtils.existsKey(TREELIST)){
            String s = redisUtils.get(TREELIST);
            list= new Gson().fromJson(s, new TypeToken<List<Map<String, Object>>>() {
            }.getType());
        }else {
            list = codeEnrollCategoryService.getTreeList();
            redisUtils.set(TREELIST,list);
        }
        Map<String, Object> map = new HashMap<>();
        map.put("list",list);
        return R.ok(map);
    }

前端页面

<div id="test1"></div>
<script>
    layui.use('tree', function(){
        var tree = layui.tree;
            ajaxLoad('/zz/acc/accept/getTreeList',{
                token: window.localStorage.getItem('token'),
            },function (res) {
                var inst1 = tree.render({
                    elem: '#test1'  //绑定元素
                    , data: res.list
                });
            });
    });
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值