首页 > 其他分享 >58、商城业务---首页---渲染二级三级目录

58、商城业务---首页---渲染二级三级目录

时间:2023-01-30 13:34:07浏览次数:31  
标签:二级 58 getCatId 分类 --- collect 首页 id 三级

类似于下面这种,当我们鼠标悬浮在一级分类上时,会查询该一级分类对应的二级分类和三级分类

(前端如何实现的不用考虑,下面是后端查询分类的代码逻辑)

要求我们返回的数据是json格式,如下:

11是一级分类id,然后11下面是二级分类,二级分类的vo包括一级分类的id,三级分类的list,二级分类本身的id和name;
二级分类下的三级分类包括二级分类的id,三级分类本身的id和name

后端返回Map,即Json对象格式,如上图所示的格式
逻辑如下:
1、vo层

2、controller层

3、serviceImpl层

@Override
    public Map<String, List<CatelogTwoLevelVo>> getCatalogJson() {
        //查询所有的一级分类
        List<CategoryEntity> categoryEntities = this.selectOneLevelCategory();

        //查询所有的二级分类和三级分类并封装数据
        //map的key是一级分类的id,v是二级分类的vo
        Map<String, List<CatelogTwoLevelVo>> map = categoryEntities.stream().collect(Collectors.toMap(k -> k.getCatId().toString(), v -> {
            //查询每一个一级分类下的二级分类
            List<CategoryEntity> categoryTwoLevelEntities = this.baseMapper.selectList(new QueryWrapper<CategoryEntity>().eq("parent_cid", v.getCatId()));
            List<CatelogTwoLevelVo> collect = null;
            if (categoryTwoLevelEntities!=null){
                collect = categoryTwoLevelEntities.stream().map(l2 -> {
                    //查询该二级分类对应的三级分类并封装数据
                    List<CategoryEntity> categoryThreeLevelEntities = this.baseMapper.selectList(new QueryWrapper<CategoryEntity>().eq("parent_cid", l2.getCatId()));
                    List<CatelogTwoLevelVo.CatalogThreeLevelVo> catalogThreeLevelVos = null;
                    if (categoryThreeLevelEntities!=null){
                        catalogThreeLevelVos = categoryThreeLevelEntities.stream().map(l3 -> {
                            CatelogTwoLevelVo.CatalogThreeLevelVo catalogThreeLevelVo = new CatelogTwoLevelVo.CatalogThreeLevelVo(l2.getCatId().toString(), l3.getCatId().toString(), l3.getName());

                            return catalogThreeLevelVo;
                        }).collect(Collectors.toList());
                    }

                    //构造二级分类的vo
                    CatelogTwoLevelVo catelogTwoLevelVo = new CatelogTwoLevelVo(v.getCatId().toString(), catalogThreeLevelVos, l2.getCatId().toString(), l2.getName());

                    return catelogTwoLevelVo;
                }).collect(Collectors.toList());
            }
            return collect;
        }));

        return map;
    }

标签:二级,58,getCatId,分类,---,collect,首页,id,三级
From: https://www.cnblogs.com/morehair/p/17075518.html

相关文章

  • 【KAWAKO】MNN-1.2.0版本交叉编译遇到的错误与解决方法
    目录在使用gcc-linaro-7.5.0-aarch64-linux-gnu、gcc-linaro-6.3.1-aarch64-linux-gnu交叉编译链对MNN1.2.0进行交叉编译的过程中,make的时候遇到了一个报错。error:can......
  • C/C++自助攒机系统[2023-01-30]
    C/C++自助攒机系统[2023-01-30]自助攒机系统管理员可以录入如下几种硬件的价格、型号信息:CPU:主频、品牌、价格、图片硬盘:容量、品牌、价格显示器:尺寸、品牌、价格......
  • 【KAWAKO】audiotsm-使用python对音频进行变速不变调处理
    目录安装库导入相关库定义reader定义writer定义WSLOA算法,并运行官方手册源码安装库pipinstallaudiotsm导入相关库importaudiotsmimportaudiotsm.io.wavimpo......
  • C/C++晋中理工学院数据结构[2023-01-30]
    C/C++晋中理工学院数据结构[2023-01-30]晋中理工学院数据结构实验周任务书2022-2023学年第1学期学院: 信创与大数据学院专业: 学生姓名: 学号......
  • 离散数学左孝凌版本--------第五章代数系统
    第五章代数结构代数系统的运算和性质闭运算:集合A中的运算其结果还在A中代数系统其运算定义可视为实数集合加减乘除的推广注意:若B是A的逆元则A也是B的......
  • 【KAWAKO】Pydub-某些函数的使用方法
    目录EQ源码其中使用的_eq函数源码测试代码EQ源码seg:AudioSegment音频focus_freq:需要调整的中心频率bandwidth:调整的频率范围channel_mode:调整哪个声道fi......
  • 57、商城业务---实现nginx反向代理静态页面资源
    把页面引用的静态资源部署到nginx,页面可以放到各个微服务中,这样就做到了部署期间的动静分离(静指的是静态资源,由nginx返回;动指的是动态请求)。好处是可以分担微服务的压力......
  • POJ--3169 Layout(最短路)
    记录12:362023-1-30http://poj.org/problem?id=3169reference:《挑战程序设计竞赛(第2版)》2.5.6p111DescriptionLikeeveryoneelse,cowsliketostandcloseto......
  • k8s部署nginx-ingress
    Kubernetes暴露服务的有三种方式,分别为LoadBlancerService、NodePortService、Ingress。官网对Ingress的定义为管理对外服务到集群内服务之间规则的集合,通俗点讲就是......
  • caddyserver step-ca 集成
    最近在学习caddy2的一些新特性,以前大致看过step-ca这个强大的证书管理工具,所以集成caddy+step-ca的acme进行测试下因为acme需要对于dns进行校验,但是因为自己是本地......