Commit d9d473dcf00dea0377855c43ec1cf1244398cc5b

Authored by jeromesoar
1 parent ff307a4c

fix: TODO 分类合理性

yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/ErrorCodeConstants.java
... ... @@ -11,6 +11,8 @@ public interface ErrorCodeConstants {
11 11  
12 12 // ========== 商品分类相关 1008001000============
13 13 ErrorCode CATEGORY_NOT_EXISTS = new ErrorCode(1008001000, "商品分类不存在");
  14 + ErrorCode CATEGORY_PARENT_NOT_EXISTS = new ErrorCode(1008001001, "父分类不存在");
  15 + ErrorCode CATEGORY_EXISTS_CHILDREN = new ErrorCode(1008001002, "存在子分类,无法删除");
14 16  
15 17 // ========== 品牌相关编号 1008002000 ==========
16 18 ErrorCode BRAND_NOT_EXISTS = new ErrorCode(1008002000, "品牌不存在");
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/category/CategoryMapper.java
... ... @@ -34,4 +34,7 @@ public interface CategoryMapper extends BaseMapperX<CategoryDO> {
34 34 .orderByDesc(CategoryDO::getId));
35 35 }
36 36  
  37 + default Long selectCountByParentId(Long parentId) {
  38 + return selectCount(CategoryDO::getParentId, parentId);
  39 + }
37 40 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/CategoryServiceImpl.java
1 1 package cn.iocoder.yudao.module.product.service.category;
2 2  
  3 +import cn.iocoder.yudao.framework.common.exception.ErrorCode;
  4 +import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
3 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 6 import cn.iocoder.yudao.module.product.controller.admin.category.vo.*;
5 7 import cn.iocoder.yudao.module.product.convert.category.CategoryConvert;
... ... @@ -13,7 +15,7 @@ import java.util.Collection;
13 15 import java.util.List;
14 16  
15 17 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
16   -import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.CATEGORY_NOT_EXISTS;
  18 +import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*;
17 19  
18 20 /**
19 21 * 商品分类 Service 实现类
... ... @@ -29,7 +31,8 @@ public class CategoryServiceImpl implements CategoryService {
29 31  
30 32 @Override
31 33 public Long createCategory(CategoryCreateReqVO createReqVO) {
32   - // TODO JeromeSoar:校验父分类
  34 + // 校验父分类存在
  35 + this.validateCategoryExists(createReqVO.getParentId(), CATEGORY_PARENT_NOT_EXISTS);
33 36 // 插入
34 37 CategoryDO category = CategoryConvert.INSTANCE.convert(createReqVO);
35 38 categoryMapper.insert(category);
... ... @@ -39,9 +42,10 @@ public class CategoryServiceImpl implements CategoryService {
39 42  
40 43 @Override
41 44 public void updateCategory(CategoryUpdateReqVO updateReqVO) {
42   - // TODO JeromeSoar:校验父分类
43   - // 校验存在
44   - this.validateCategoryExists(updateReqVO.getId());
  45 + // 校验父分类存在
  46 + this.validateCategoryExists(updateReqVO.getParentId(), CATEGORY_PARENT_NOT_EXISTS);
  47 + // 校验分类是否存在
  48 + this.validateCategoryExists(updateReqVO.getId(), CATEGORY_NOT_EXISTS);
45 49 // 更新
46 50 CategoryDO updateObj = CategoryConvert.INSTANCE.convert(updateReqVO);
47 51 categoryMapper.updateById(updateObj);
... ... @@ -49,18 +53,23 @@ public class CategoryServiceImpl implements CategoryService {
49 53  
50 54 @Override
51 55 public void deleteCategory(Long id) {
52   - // TODO JeromeSoar:校验删除的商品分类是否存在
53 56 // TODO 芋艿 补充只有不存在商品才可以删除
54   - // 校验存在
55   - this.validateCategoryExists(id);
  57 + // 校验分类是否存在
  58 + CategoryDO categoryDO = this.validateCategoryExists(id, CATEGORY_NOT_EXISTS);
  59 + // 校验是否还有子分类
  60 + if (categoryMapper.selectCountByParentId(categoryDO.getParentId()) > 0) {
  61 + throw ServiceExceptionUtil.exception(CATEGORY_EXISTS_CHILDREN);
  62 + }
56 63 // 删除
57 64 categoryMapper.deleteById(id);
58 65 }
59 66  
60   - private void validateCategoryExists(Long id) {
61   - if (categoryMapper.selectById(id) == null) {
62   - throw exception(CATEGORY_NOT_EXISTS);
  67 + private CategoryDO validateCategoryExists(Long id, ErrorCode errorCode) {
  68 + CategoryDO categoryDO = categoryMapper.selectById(id);
  69 + if (categoryDO == null) {
  70 + throw exception(errorCode);
63 71 }
  72 + return categoryDO;
64 73 }
65 74  
66 75 @Override
... ...