fix: TODO 分类合理性

This commit is contained in:
jeromesoar 2022-05-12 17:09:18 +08:00
parent ff307a4c86
commit d9d473dcf0
3 changed files with 25 additions and 11 deletions

View File

@ -11,6 +11,8 @@ public interface ErrorCodeConstants {
// ========== 商品分类相关 1008001000============
ErrorCode CATEGORY_NOT_EXISTS = new ErrorCode(1008001000, "商品分类不存在");
ErrorCode CATEGORY_PARENT_NOT_EXISTS = new ErrorCode(1008001001, "父分类不存在");
ErrorCode CATEGORY_EXISTS_CHILDREN = new ErrorCode(1008001002, "存在子分类,无法删除");
// ========== 品牌相关编号 1008002000 ==========
ErrorCode BRAND_NOT_EXISTS = new ErrorCode(1008002000, "品牌不存在");

View File

@ -34,4 +34,7 @@ public interface CategoryMapper extends BaseMapperX<CategoryDO> {
.orderByDesc(CategoryDO::getId));
}
default Long selectCountByParentId(Long parentId) {
return selectCount(CategoryDO::getParentId, parentId);
}
}

View File

@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.product.service.category;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.product.controller.admin.category.vo.*;
import cn.iocoder.yudao.module.product.convert.category.CategoryConvert;
@ -13,7 +15,7 @@ import java.util.Collection;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.CATEGORY_NOT_EXISTS;
import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*;
/**
* 商品分类 Service 实现类
@ -29,7 +31,8 @@ public class CategoryServiceImpl implements CategoryService {
@Override
public Long createCategory(CategoryCreateReqVO createReqVO) {
// TODO JeromeSoar校验父分类
// 校验父分类存在
this.validateCategoryExists(createReqVO.getParentId(), CATEGORY_PARENT_NOT_EXISTS);
// 插入
CategoryDO category = CategoryConvert.INSTANCE.convert(createReqVO);
categoryMapper.insert(category);
@ -39,9 +42,10 @@ public class CategoryServiceImpl implements CategoryService {
@Override
public void updateCategory(CategoryUpdateReqVO updateReqVO) {
// TODO JeromeSoar校验父分类
// 校验存在
this.validateCategoryExists(updateReqVO.getId());
// 校验父分类存在
this.validateCategoryExists(updateReqVO.getParentId(), CATEGORY_PARENT_NOT_EXISTS);
// 校验分类是否存在
this.validateCategoryExists(updateReqVO.getId(), CATEGORY_NOT_EXISTS);
// 更新
CategoryDO updateObj = CategoryConvert.INSTANCE.convert(updateReqVO);
categoryMapper.updateById(updateObj);
@ -49,18 +53,23 @@ public class CategoryServiceImpl implements CategoryService {
@Override
public void deleteCategory(Long id) {
// TODO JeromeSoar校验删除的商品分类是否存在
// TODO 芋艿 补充只有不存在商品才可以删除
// 校验存在
this.validateCategoryExists(id);
// 校验分类是否存在
CategoryDO categoryDO = this.validateCategoryExists(id, CATEGORY_NOT_EXISTS);
// 校验是否还有子分类
if (categoryMapper.selectCountByParentId(categoryDO.getParentId()) > 0) {
throw ServiceExceptionUtil.exception(CATEGORY_EXISTS_CHILDREN);
}
// 删除
categoryMapper.deleteById(id);
}
private void validateCategoryExists(Long id) {
if (categoryMapper.selectById(id) == null) {
throw exception(CATEGORY_NOT_EXISTS);
private CategoryDO validateCategoryExists(Long id, ErrorCode errorCode) {
CategoryDO categoryDO = categoryMapper.selectById(id);
if (categoryDO == null) {
throw exception(errorCode);
}
return categoryDO;
}
@Override