根据当前分类id,返回所有父分类id数组

1.Controller层

@RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
		AttrgroupEntity attrgroup = attrgroupService.getById(id);
        Long[] cascadedCategoryId = categoryService.getCascadedCategoryId(attrgroup.getCategoryId());
        attrgroup.setCascadedCategoryId(cascadedCategoryId);
        return R.ok().put("attrgroup", attrgroup);
    }

2.Service层

    /**
     * 找到 cascadedCategoryId 的[第 1 级分类 id, 第 2 级分类 id, 第3 级分类id]
     */
    Long[] getCascadedCategoryId(Long categoryId);

    /**
     * 找到 categoryId 的所有父类 id,
     *返回 cascadedCategoryId(是一个数组)的[第 1 级分类 id, 第 2 级分类id, 第3 级分类id]
     */
    @Override
    public Long[] getCascadedCategoryId(Long categoryId) {
        List<Long> categories = new ArrayList<>();
        getParentCategoryId(categoryId, categories);
        // 反转list集合中的值
        Collections.reverse(categories);
        // 返回Long类型数组

        return categories.toArray(new Long[categories.size()]);
    }

    /**
     * 该方法递归的找到 categoryId 的所有父分类 id , 并存放到 categories
     * 注意得到的所有分类 id 是一个逆序的
     *
     * @param categoryId
     * @param categories
     * @return
     */
    private List<Long> getParentCategoryId(Long categoryId, List<Long> categories) {
        CategoryEntity categoryEntity = this.getById(categoryId);
        // 添加categoryId
        categories.add(categoryId);
        // 如果parentId不等于0
        if (!categoryEntity.getParentId().equals(0L)) {
            getParentCategoryId(categoryEntity.getParentId(), categories);
        }
        return categories;
    }

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值