diff --git a/xjs-business/xjs-business-common/src/main/java/com/xjs/exception/MallException.java b/xjs-business/xjs-business-common/src/main/java/com/xjs/exception/MallException.java new file mode 100644 index 00000000..ea4b9ded --- /dev/null +++ b/xjs-business/xjs-business-common/src/main/java/com/xjs/exception/MallException.java @@ -0,0 +1,24 @@ +package com.xjs.exception; + +import lombok.extern.log4j.Log4j2; + +/** + * 自定义商城业务异常 + * @author xiejs + * @since 2022-03-17 + */ +@Log4j2 +public class MallException extends RuntimeException{ + public MallException() { + super(); + } + + public MallException(String message) { + super(message); + log.error("商城业务异常----{}",message); + } + + public MallException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/AttrController.java b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/AttrController.java index 5de49c9c..b56e6050 100644 --- a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/AttrController.java +++ b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/AttrController.java @@ -84,7 +84,7 @@ public class AttrController { @ApiOperation("删除") @Log(title = "规格参数", businessType = BusinessType.DELETE) public R delete(@RequestBody Long[] attrIds) { - attrService.removeByIds(Arrays.asList(attrIds)); + attrService.removeAttr(Arrays.asList(attrIds)); return R.ok(); } diff --git a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/AttrGroupController.java b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/AttrGroupController.java index 87931b73..3c4e3764 100644 --- a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/AttrGroupController.java +++ b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/controller/AttrGroupController.java @@ -97,7 +97,7 @@ public class AttrGroupController { @ApiOperation("删除") @Log(title = "属性分组", businessType = BusinessType.DELETE) public R delete(@RequestBody Long[] attrGroupIds) { - attrGroupService.removeByIds(Arrays.asList(attrGroupIds)); + attrGroupService.removeAttrGroup(Arrays.asList(attrGroupIds)); return R.ok(); } diff --git a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/AttrGroupService.java b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/AttrGroupService.java index a44325a5..77984f4c 100644 --- a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/AttrGroupService.java +++ b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/AttrGroupService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.xjs.mall.product.entity.AttrGroupEntity; import com.xjs.utils.PageUtils; +import java.util.List; import java.util.Map; /** @@ -17,12 +18,20 @@ public interface AttrGroupService extends IService { /** * 分页 - * @param params 条件 + * + * @param params 条件 * @param categoryId 类别id * @return pageUtils */ PageUtils queryPage(Map params, Long categoryId); + /** + * 删除属性分组,校验,被引用则不删除 + * + * @param ids id + */ + void removeAttrGroup(List ids); + /** * 根据分类id查出所有的分组以及这些组里面的属性 * @param categoryId 分类id diff --git a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/AttrService.java b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/AttrService.java index e45960af..89a2ef2f 100644 --- a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/AttrService.java +++ b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/AttrService.java @@ -6,6 +6,7 @@ import com.xjs.mall.product.vo.AttrVo; import com.xjs.utils.PageUtils; import com.xjs.mall.product.entity.AttrEntity; +import java.util.List; import java.util.Map; /** @@ -43,5 +44,11 @@ public interface AttrService extends IService { * @param attr 实体类 */ void updateAttr(AttrVo attr); + + /** + * 删除规格参数及关联信息 + * @param asList ids + */ + void removeAttr(List asList); } diff --git a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/impl/AttrGroupServiceImpl.java b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/impl/AttrGroupServiceImpl.java index ab79fdef..fef77684 100644 --- a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/impl/AttrGroupServiceImpl.java +++ b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/impl/AttrGroupServiceImpl.java @@ -1,11 +1,15 @@ package com.xjs.mall.product.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xjs.exception.MallException; import com.xjs.mall.product.dao.AttrGroupDao; +import com.xjs.mall.product.entity.AttrAttrgroupRelationEntity; import com.xjs.mall.product.entity.AttrGroupEntity; import com.xjs.mall.product.entity.CategoryEntity; +import com.xjs.mall.product.service.AttrAttrgroupRelationService; import com.xjs.mall.product.service.AttrGroupService; import com.xjs.mall.product.service.CategoryService; import com.xjs.mall.product.vo.AttrGroupResponseVo; @@ -29,6 +33,9 @@ public class AttrGroupServiceImpl extends ServiceImpl params, Long categoryId) { String key = (String) params.get(Query.KEY_NAME); @@ -63,6 +70,22 @@ public class AttrGroupServiceImpl extends ServiceImpl ids) { + for (Long id : ids) { + //先查询中间表是否有数据,有数据代表该数据被引用,则不能删除 + List relationEntityList = attrAttrgroupRelationService + .list(new LambdaQueryWrapper() + .eq(AttrAttrgroupRelationEntity::getAttrGroupId, id)); + + if (CollUtil.isEmpty(relationEntityList)) { + super.removeById(id); + }else { + throw new MallException("含有被引用的规格参数未删除,请先删除规格参数"); + } + } + } + private List setList(List records) { return records.stream().map(attrGroupEntity -> { diff --git a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/impl/AttrServiceImpl.java b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/impl/AttrServiceImpl.java index f05f4f0a..0726fc24 100644 --- a/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/impl/AttrServiceImpl.java +++ b/xjs-business/xjs-project-mall/mall-product/src/main/java/com/xjs/mall/product/service/impl/AttrServiceImpl.java @@ -169,4 +169,15 @@ public class AttrServiceImpl extends ServiceImpl implements } + @Override + public void removeAttr(List asList) { + //删除自身 + super.removeByIds(asList); + //级联删除中间表数据 + for (Long id : asList) { + attrAttrgroupRelationService.remove(new LambdaUpdateWrapper() + .eq(AttrAttrgroupRelationEntity::getAttrId,id)); + } + } + }