首页 > 其他分享 >【阅己书城】递归组装菜单

【阅己书城】递归组装菜单

时间:2024-09-05 09:38:55浏览次数:4  
标签:菜单 return List categoryEntity menu2 menu1 阅己 书城 getSort

1、背景
商品三级分类
2、代码

    /**
     * 查询所有分类以及子分类,以树形结构组装起来
     */
    public List<CategoryEntity> listWithTree() {

        // 查出所有分类
        List<CategoryEntity> categoryEntities = baseMapper.selectList(null);
        List<CategoryEntity> level1Menus = categoryEntities.stream().filter(categoryEntity ->
                categoryEntity.getParentCid() == 0
        ).map(menu -> {
            menu.setChildren(getChildrens(menu, categoryEntities));
            return menu;
        }).sorted((menu1, menu2) -> {
            return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
        }).collect(Collectors.toList());

        // 组装出父子的树形结构
        return level1Menus;
    }



    /**
     * 递归查找所有菜单的子菜单
     *
     * @param root
     * @param all
     * @return
     */
    private List<CategoryEntity> getChildrens(CategoryEntity root, List<CategoryEntity> all) {
        List<CategoryEntity> children = all.stream().filter(categoryEntity -> {
            return categoryEntity.getParentCid().equals(root.getCatId());
        }).map(categoryEntity -> {
            // 找到子菜单
            categoryEntity.setChildren(getChildrens(categoryEntity, all));
            return categoryEntity;
        }).sorted((menu1, menu2) -> {
            // 排序
            return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
        }).collect(Collectors.toList());
        return children;
    }

标签:菜单,return,List,categoryEntity,menu2,menu1,阅己,书城,getSort
From: https://www.cnblogs.com/fengchong0925/p/18397726

相关文章

  • qt之QTableview右击显示菜单选项
     由于上下文菜单添加的action后右击鼠标也会触发QAction的triggered信号,所以添加了事件过滤,并且安装给QMenu的实列化。(代码粘贴复制到vs即可运行)file.h--------------------------------------------------------------------------------------------------#include<QtWidge......
  • Vue3 动态子页面和菜单栏同步
    动态子页面<router-view></router-view>显示子页面的内容main.vue<template><a-layoutid="components-layout-demo-top-side"><the-header-view></the-header-view><a-layoutstyle="padding:24px0;background......
  • c#判断右键菜单(ContextMenuStrip)是从哪个控件弹出来的方法
    1.方法一:在contextMenuStrip1打开时获取控件名称双击contextMenuStrip1在它的opening事件中写入下面的代码:privatevoidcontextMenuStrip1_Opening(objectsender,CancelEventArgse){stringwhichcontrol_name=(senderasContextMenuStrip).So......
  • AWC通过条件控制 菜单可见
    1.定义条件:"conditions":{    "objectIsSelectedFolder":{      "expression":{        "$source":{          "$adapt":"ctx.selected"        },       ......
  • 基于SSM的网上书城系统
    一、项目介绍基于SSM框架的网上书城系统,系统分为用户和管理员两个角色,主要功能如下1.前台功能模块首页、新闻资讯、图书列表、图书分类、图书搜索、图书详情、图书投票、在线留言、添加到购物车、添加到收藏夹、用户登录、用户注册、个人中心、收货地址管理、购买图书、下单、结......
  • java+springboot权限的设计(用户、角色、权限)和前端如何渲染用户所对应的权限菜单
    记得当时在学校的时候,觉得这个实现起来真的超级困难,想想就头大,毫无头绪,即便那时候去查资料看了很多大佬写的文章,看的时候感觉恍然大悟,直拍大腿,但是当我想要动手自己去做的时候,又不知道从哪开始切入,于是一直没有动手去做,直到最近在实习的时候,给了我这个任务,当我带着恐惧去自......
  • java+vue计算机毕设在线书城设计与实现【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,电子商务已成为人们日常生活中不可或缺的一部分,极大地改变了人们的购物习惯。书籍作为知识与文化的载体,其销售与借阅方式也......
  • c# 笔记 winform添加右键菜单,获取文件大小 ,多条件排序OrderBy、ThenBy,list<double>截取
    Winform右键菜单‌要在C#Winform应用程序中添加右键菜单,‌你可以按照以下步骤操作:‌1.‌创建菜单项‌在Form的构造函数或加载事件中,‌创建ContextMenuStrip控件的实例,‌并为其添加菜单项。‌2.‌绑定到控件‌将ContextMenuStrip控件绑定到需要显示右键菜单的控件上,‌......
  • 【阅己书城】整合mybatis-plus
    1、导入依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency>2、配置#导入驱......
  • 【阅己书城】逆向生成代码
    1、配置renren-generator#application.ymlserver:port:80#mysqlspring:datasource:type:com.alibaba.druid.pool.DruidDataSource#MySQL配置driverClassName:com.mysql.cj.jdbc.Driverurl:jdbc:mysql:///:3306/yueji_pms?useUnicode=true&......