ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-09-02 12:30:25  阅读:157  来源: 互联网

标签: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
来源: https://www.cnblogs.com/lailix/p/16649171.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有