首页 > 其他分享 >10.业务功能实现---商品服务三级分类树形API

10.业务功能实现---商品服务三级分类树形API

时间:2022-09-02 12:33:22浏览次数:38  
标签:10 return List categoryEntity --- API menu2 menu1 getSort

1.商品服务三级分类树形API

  1. 实体类,添加属性
@Data
@TableName("pms_category")
public class CategoryEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    // ...

    /**
     * 子分类数据
     */
    @TableField(exist = false)
    private List<CategoryEntity> children;
}
  1. 对数据进行分类的方法,组成树形结构:
public List<CategoryEntity> getListToTree() {
    //1.获取所有分类数据
    List<CategoryEntity> categoryEntities = baseMapper.selectList(null);
    //2.组装成树形结构
    //2.1).先找到所有的一级分类,然后继续设置分类下的子分类,最后排序,归约
    List<CategoryEntity> firstLevelMenu = categoryEntities.stream()
        .filter(categoryEntity -> categoryEntity.getParentCid() == 0)
        .map((menu) -> {
	    menu.setChildren(getChildren(categoryEntities, menu));
	    return menu;
	})
	.sorted((menu1, menu2) -> {
	    return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
	}).collect(Collectors.toList());
	return firstLevelMenu;
}

/**
 * 递归设置各级子菜单
 *
 * @param all  所有的分类数据
 * @param root 一级菜单
 * @return
 */
private List<CategoryEntity> getChildren(List<CategoryEntity> all, CategoryEntity root) {
    List<CategoryEntity> children = all.stream()
	.filter(categoryEntity -> categoryEntity.getParentCid() == root.getCatId())
	.map(categoryEntity -> {
	    //递归设置子菜单
	    categoryEntity.setChildren(getChildren(all, categoryEntity));
	    return categoryEntity;
	}).sorted((menu1, menu2) -> {
       	    return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
        }).collect(Collectors.toList());
	return children;
}

标签:10,return,List,categoryEntity,---,API,menu2,menu1,getSort
From: https://www.cnblogs.com/lailix/p/16649171.html

相关文章

  • SparkStreaming中的转换算子2--有状态的转换算子updateStateByKey
    将之前批次的状态保存,packageSparkStreaming.transimportorg.apache.spark.SparkConfimportorg.apache.spark.storage.StorageLevelimportorg.apache.spark.str......
  • 软考-高项-第五章范围管理
    范围管理概述项目范围需要做以下三方面明确项目边界,即明确哪些工作时包括在项目范围之内的,哪些工作时不包括在项目范围之内的对项目执行工作进行监督,确保所有该做的工......
  • 今日热门表情包精选2022-09-02-14
    今日热门表情包精选我觉得我想炸飞你熊猫头飘过动图表情包别嫌阿姨烦,这都是为你好啊youcanyouupnocannobb汤姆汤姆悄悄的躲在柱子后面偷看,让我仔细看看我来了原......
  • 前端面试题每日3题——2022-09-02
    每日3题10以下代码执行后,控制台中的输出内容为?varobj={a:1,};((obj)=>{console.log(obj.a);obj.a=3;varobj={a:2,};console.l......
  • 浅谈10kV无扰动快切装置在煤矿电网中的应用
    10kV无扰动快切装置在煤矿电网的应用摘要:结合某煤矿公司10kV无扰动快切装置在变电站实际情况,对10kV无扰动快切装置的应用从动作原理、保护功能及应用等方面进行分析......
  • Spire.Cloud 私有化部署教程(三) - Windows 系统
    本教程主要介绍如何在Windows系统上实现Spire.Cloud私有化部署。详细步骤如下:一、安装依赖我们的私有部署的依赖有Nodejs、MySQL、Redis和RabbitMQ。请确认服务......
  • vue-element-admin v4.4 学习--1安装篇
    0.学习文档 https://www.bookstack.cn/read/vue-element-admin-4.4-zh/9a23281a80e29fc9.md 1.安装#克隆项目gitclonehttps://github.com/PanJiaChen/vue-eleme......
  • xxxx-xx-xx系统应用(周)巡检报告模版
    ​xxxx-xx-xx系统应用(周)巡检报告模版1、巡检概述与总结系统名称巡检时间巡检人联系方式......
  • 1094 谷歌的招聘——20分
    2004年7月,谷歌在硅谷的101号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以.com结尾的网址,而前面的网址是一个10位素数,这个素数是自然常数......
  • 1-linux内核专栏介绍
    1-linux内核TCP重传率高影响QPS(TPS):每秒钟request/事务数量TCP重传是发生在哪些服务器(IP地址)之间,哪些业务上(服务端口),以及为什么会重传(SYN_SENT)。1 18:21:58 10.17.1......