CategoryController
/**
* 删除商品类目
* @param categoryId 商品类目标识
* @return
*/
@ApiOperation("删除商品类目")
@DeleteMapping("{categoryId}")
@PreAuthorize("hasAuthority('prod:category:delete')")
public Result<String> removeCategory(@PathVariable Long categoryId) {
Boolean removed = categoryService.removeCategoryById(categoryId);
return Result.handle(removed);
}
CategoryServiceImpl
/**
* 删除商品类目
* 需求:如果一级类目包含子类目,则不可删除
* @param categoryId
* @return
*/
@Override
@Caching(evict = {
@CacheEvict(key = ProductConstants.ALL_CATEGORY_LIST_KEY),
@CacheEvict(key = ProductConstants.FIRST_CATEGORY_LIST_KEY),
@CacheEvict(key = ProductConstants.WX_FIRST_CATEGORY)
})
public Boolean removeCategoryById(Long categoryId) {
// 根据类目标识查询子类目集合
List<Category> childCategoryList = categoryMapper.selectList(new LambdaQueryWrapper<Category>()
.eq(Category::getParentId, categoryId)
);
// 判断是否有值
if (CollectionUtil.isNotEmpty(childCategoryList) && childCategoryList.size() != 0) {
// 说明:当前类目包含子类目,不可删除
throw new BusinessException("当前类目包含子类目,不可删除");
}
// 说明:当前类目不包含子类目
return categoryMapper.deleteById(categoryId)>0;
}