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;
}