商品服务-三级分类-查询(树形展示三级分类数据)

1.分类维护

在这里插入图片描述
跨域解决了,但报错404,前端请求经过网关处理转到后台renren-fast,商品服务的应该转到gulimall-product

2.商品服务配置信息交给配置中心

在这里插入图片描述
新建配置文件bootstrap.properties

#bootstrap.properties优先于application.properties加载
#服务名
spring.application.name=gulimall-product

#配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

#配置命名空间(默认是public空间,只能写唯一id不能写命名空间名称)
spring.cloud.nacos.config.namespace=6ac330a4-ec48-4a1b-a664-c2eba3ca2798

商品服务注册到注册中心,我之前的博客中已写,在此不重述
在这里插入图片描述

3.配置商品服务路由

在gulimall-gateway的application.yml

 #后台renren-fast
- id: admin_route
    #lb 负载均衡
    uri: lb://renren-fast
    predicates:
      - Path=/api/**
    filters:
      - RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}

  ## 前端项目   /api
  ## http://localhost:88/api/captcha.jpg    http://localhost:8080/renren-fast/captcha.jpg

 #商品服务gulimall-product
 - id: product_route
   uri: lb://gulimall-product
   predicates:
     - Path=/api/product/**
   filters:
     - RewritePath=/api/(?<segment>.*),/$\{segment}

重启访问后
在这里插入图片描述
原因分析:商品路由没生效(先走的是后台renren-fast的路由)
解决方案: 精确的路由放高优先级,模糊的低优先级(将后台与商品路由顺序互换)

#商品服务gulimall-product
- id: product_route
   uri: lb://gulimall-product
   predicates:
     - Path=/api/product/**
   filters:
     - RewritePath=/api/(?<segment>.*),/$\{segment}
## http://localhost:88/api/product/category/list/tree http://localhost:10000/product/category/list/tree
        
 #后台renren-fast
  - id: admin_route
    #lb 负载均衡
    uri: lb://renren-fast
    predicates:
      - Path=/api/**
    filters:
      - RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}

   ## 前端项目   /api
  ## http://localhost:88/api/captcha.jpg    http://localhost:8080/renren-fast/captcha.jpg

重启网关项目
在这里插入图片描述

4.数据展示

在这里插入图片描述
修改category.vue中的getMenus方法,将数据解构出来

 //获取菜单
 getMenus() {
    this.$http({
      url: this.$http.adornUrl('/product/category/list/tree'),
      method: 'get',
    }).then(({data})=> {
     console.log("获取菜单数据成功",data.data);
    })
  },

在这里插入图片描述
对数据赋值

 //获取菜单
 getMenus() {
    this.$http({
      url: this.$http.adornUrl('/product/category/list/tree'),
      method: 'get',
    }).then(({data})=> {
     console.log("获取菜单数据成功",data.data);
     this.menus = data.data;
    })
  },

在这里插入图片描述
在这里插入图片描述
修改defaultProps的属性

 defaultProps: {
     children: 'children',
      label: 'name'
 }

详情参考ElementUI官网中树形控件添加链接描述
在这里插入图片描述
在这里插入图片描述

5.category.vue完整代码

<template>
  <el-tree :data="menus" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
</template>

<script>
export default {
name: '',
//import引入的组件需要注入到对象中才能使用
components: {},
props: {},
 data() {
      return {
        menus: [],
        defaultProps: {
          children: 'children',
          label: 'name'
        }
      };
    },
    methods: {
      handleNodeClick(data) {
        console.log(data);
      },
      //获取菜单
      getMenus() {
        this.$http({
          url: this.$http.adornUrl('/product/category/list/tree'),
          method: 'get',
        }).then(({data})=> {
         console.log("获取菜单数据成功",data.data);
         this.menus = data.data;
        })
      },
    },
//计算属性 类似于data概念
computed:{
},
//监控data中的数据变化
watch:{
},

//生命周期 - 创建完成(可以访问当前this实例)
created() {
    this.getMenus();
},
//生命周期 - 挂载完成(可以访问DOM元素)
mounted() {},
beforeCreate() {}, //生命周期 - 创建之前
beforeMount() {}, //生命周期 - 挂载之前
beforeUpdate() {}, //生命周期 - 更新之前
updated() {}, //生命周期 - 更新之后
beforeDestroy() {}, //生命周期 - 销毁之前
destroyed() {}, //生命周期 - 销毁完成
activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>

<style scoped>

</style>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现商品三级分类,我们可以考虑使用树形结构来组织分类信息。树形结构可以方便地表示分类之间的层级关系,便于查询展示。 在后端,我们可以设计一个分类表,包含以下字段: - id:分类ID,唯一标识; - name:分类名称; - parent_id:父级分类ID,用于表示当前分类的上一级分类; - level:分类级别,用于表示当前分类树形结构中所处的层级; - sort_order:排序字段,用于表示分类在当前层级中的顺序。 通过这个表,我们可以建立起一个分类树形结构。具体实现可以采用递归算法,从根节点开始遍历整个树形结构,将每个节点和它的子节点都存储到一个集合中。 在前端,我们可以使用菜单或者列表来展示分类信息。具体实现可以采用递归算法,从根节点开始遍历整个分类树形结构,将每个节点和它的子节点都展示出来。可以考虑使用HTML+CSS+JavaScript来实现这个功能。 下面是一个Java代码示例,实现商品三级分类查询展示: ``` public class CategoryService { private CategoryMapper categoryMapper; public List<CategoryVO> listCategories() { // 查询所有分类 List<Category> categories = categoryMapper.findAll(); // 构建分类树形结构 List<CategoryVO> categoryTree = buildCategoryTree(categories, 0); return categoryTree; } private List<CategoryVO> buildCategoryTree(List<Category> categories, int parentId) { List<CategoryVO> tree = new ArrayList<>(); for (Category category : categories) { if (category.getParentId() == parentId) { CategoryVO node = new CategoryVO(); node.setId(category.getId()); node.setName(category.getName()); node.setChildren(buildCategoryTree(categories, category.getId())); tree.add(node); } } return tree; } } ``` 上面的代码中,CategoryVO是一个视图对象,用于展示分类信息。CategoryMapper是一个数据访问对象,用于查询分类信息。findAll()方法用于查询所有分类信息。buildCategoryTree()方法用于构建分类树形结构。在buildCategoryTree()方法中,递归遍历整个分类树形结构,将每个节点和它的子节点都构建为一个CategoryVO对象,最终返回一个包含所有节点的List。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值