【18-业务开发-基础业务-商品模块-分类管理-前后端管理系统的启动-为分类管理表增加数据-Json插件的下载-返回具有层级目录、父子关系结构的数据】
创始人
2024-01-31 20:49:34
0

一.知识回顾

【0.三高商城系统的专题专栏都帮你整理好了,请点击这里!】
【1-系统架构演进过程】
【2-微服务系统架构需求】
【3-高性能、高并发、高可用的三高商城系统项目介绍】
【4-Linux云服务器上安装Docker】
【5-Docker安装部署MySQL和Redis服务】
【6-Git安装与配置过程、Gitee码云上创建项目、IDEA关联克隆的项目】
【7-创建商城系统的子模块并将修改后的信息使用Git提交到Gitee上】
【8-数据库表结构的创建&后台管理系统的搭建】
【9-前端项目的搭建部署、Node安装、VSCode安装】
【10-Node的安装以及全局环境变量的相关配置&解决启动报错的问题(1.Error: Cannot find module ‘fs/promises)(2.npm安装node-sass报错)】
【11-导入人人generator项目并自动生成相关的文件&商品子模块的调试&公共模块common子模块的抽离与实现&Lombok插件的安装】
【12-商品子模块整合MyBatisPlus技术&其它模块通过generator的自动生成与补充完善】
【13-项目中微服务组件的学习-SpringCloudAlibaba微服务生态体系的学习&SpringCloudAlibaba的依赖管理&项目中SpringBoot和SpringCloud版本的统一】
【14-微服务的注册中心与配置中心Nacos&Windows操作系统上安装Nacos和Linux操作系统上用Docker中安装Nacos&每个子项目模块使用Nacos进行服务注册与发现】
【15-项目中服务的远程调用之OpenFeign&订单模块与商品模块集成使用OpenFeign的案例】
【16-配置中心之Nacos的基本使用&Nacos服务之命令空间、Nacos服务之配置组、Nacos服务之配置拆分】
【17-微服务网关之Spring Cloud Gateway&Spring Cloud Gateway网关服务搭建】

二.启动我们的管理端的后端项目和前端项目

2.1 后台项目部署

如果启动后端项目的时候遇到如下错误:

image.png

-Djps.track.ap.dependencies=false

那么直接在Settings->Complier->添加上述配置重新启动即可

image.png
后台项目启动后的效果:
在这里插入图片描述

2.2 前端项目部署

在这里插入图片描述

2.3 访问测试登陆

在这里插入图片描述

三.商品分类管理开发

3.1 商品模块对应的商品分类数据库表增加数据

在这里插入图片描述

3.2 启动商品类,对获取我们所有商品分类接口进行测试,看能否成功获取刚插入的数据

启动过程中如果发现报错,错误是Nacos的配置中心地址找不到,我们之前只用订单模块做了案例,并没有给其它模块做案例,所以其它模块直接启动会报错。那么是因为我们没有进行配置中心地址的配置,因为commons模块中引入了Nacos的配置中心依赖,而我们又引入了commons的依赖,所以,如果我们不进行Nacos配置中心的配置,那么启动肯定会报错。
解决方案如下:
在这里插入图片描述

数据展示:
在这里插入图片描述
因为后台为我们传过来的是json数据,显示效果不明显,为了更加明显,我们需要下载一个json插件
在这里插入图片描述
打开我们的插件,将我们的数据拷贝到json插件中
在这里插入图片描述

3.3 数据已经获取了,接下来就需要处理我们的大量数据,说明白了,就是将数据进行分类,具有父子层级关系的目录结构

controller层定义具有层级结构的访问接口

/*** 返回具有层级目录的商品分类数据* @param params* @return*/@GetMapping("/listTree")public R listTree(@RequestParam Map params){List list = categoryService.queryPageWithTree(params);return R.ok().put("data", list);}

在这里插入图片描述

service中定义我们的具体业务接口

/*** CategoryService中同步定义对应的接口方法* @param params* @return*/List queryPageWithTree(Map params);

在这里插入图片描述

对应的service实现类中实现相关的接口,并进行相关业务逻辑的处理
这个地方的实现是比较重要的:递归的思想+JDK8特性中stream流相关方法的使用+而且这个解决方案是通用的+可以用在任何想要返回具有层级结构、父子关系的查找当中。
补充一下:JDK8相关的特性文章可以看一下恩师dpb的博客:JDK8新特性

/*** 实现CategoryService中对应的接口方法中具体的事项逻辑* 查询所有的类别数据,然后将数据封装为树形结构,便于前端使用* @param params* @return*/@Overridepublic List queryPageWithTree(Map params) {// 1.查询所有的商品分类信息List categoryEntities = baseMapper.selectList(null);// 2.将商品分类信息拆解为树形结构【父子关系】// 第一步遍历出所有的大类  parent_cid = 0List list = categoryEntities.stream().filter(categoryEntity -> categoryEntity.getParentCid() == 0).map(categoryEntity -> {// 根据大类找到多有的小类  递归的方式实现categoryEntity.setChildrens(getCategoryChildrens(categoryEntity,categoryEntities));return categoryEntity;}).sorted((entity1, entity2) -> {return (entity1.getSort() == null ? 0 : entity1.getSort()) - (entity2.getSort() == null ? 0 : entity2.getSort());}).collect(Collectors.toList());// 第二步根据大类找到对应的所有的小类return list;}/***  查找该大类下的所有的小类  递归查找* @param categoryEntity 某个大类* @param categoryEntities 所有的类别数据* @return*/private List getCategoryChildrens(CategoryEntity categoryEntity, List categoryEntities) {List collect = categoryEntities.stream().filter(entity -> {// 根据大类找到他的直属的小类return entity.getParentCid() == categoryEntity.getCatId();}).map(entity -> {// 根据这个小类递归找到对应的小小类entity.setChildrens(getCategoryChildrens(entity, categoryEntities));return entity;}).sorted((entity1, entity2) -> {return (entity1.getSort() == null ? 0 : entity1.getSort()) - (entity2.getSort() == null ? 0 : entity2.getSort());}).collect(Collectors.toList());return collect;}

在这里插入图片描述

最后就是启动我们是商品模块,访问测试我们是实现逻辑是否可行:---->如果出现下面的结果—》搞定!
在这里插入图片描述
在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...