Commit 1572855ba2a6978495ada16034af72690799c863

Authored by 芋道源码
Committed by GitHub
2 parents 1afc774b 28c266f9

Merge pull request #1229 from dadiyang/fix/product-category-parent-self

[BUG] 商品分类:编辑一级类目把"上级分类"选成自己,保存成功且该类目从分类树消失
yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/enums/ErrorCodeConstants.java
... ... @@ -16,6 +16,7 @@ public interface ErrorCodeConstants {
16 16 ErrorCode CATEGORY_EXISTS_CHILDREN = new ErrorCode(1_008_001_003, "存在子分类,无法删除");
17 17 ErrorCode CATEGORY_DISABLED = new ErrorCode(1_008_001_004, "商品分类({})已禁用,无法使用");
18 18 ErrorCode CATEGORY_HAVE_BIND_SPU = new ErrorCode(1_008_001_005, "类别下存在商品,无法删除");
  19 + ErrorCode CATEGORY_PARENT_IS_SELF = new ErrorCode(1_008_001_006, "父分类不能设置为分类自身");
19 20  
20 21 // ========== 商品品牌相关编号 1-008-002-000 ==========
21 22 ErrorCode BRAND_NOT_EXISTS = new ErrorCode(1_008_002_000, "品牌不存在");
... ...
yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java
... ... @@ -55,6 +55,10 @@ public class ProductCategoryServiceImpl implements ProductCategoryService {
55 55 public void updateCategory(ProductCategorySaveReqVO updateReqVO) {
56 56 // 校验分类是否存在
57 57 validateProductCategoryExists(updateReqVO.getId());
  58 + // 校验父分类不能是分类自身(环检测:父级设成自己会形成循环层级,后续按父链遍历将死循环/脏数据)
  59 + if (Objects.equals(updateReqVO.getParentId(), updateReqVO.getId())) {
  60 + throw exception(CATEGORY_PARENT_IS_SELF);
  61 + }
58 62 // 校验父分类存在
59 63 validateParentProductCategory(updateReqVO.getParentId());
60 64  
... ...