From 366685379ab7b27d4978acaa02354edbcd43b895 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Thu, 17 Mar 2022 18:22:12 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=A7=84=E6=A0=BC=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=BA=A7=E8=81=94=E5=88=A0=E9=99=A4=202?= =?UTF-8?q?=E3=80=81=E5=B1=9E=E6=80=A7=E5=88=86=E7=BB=84=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E5=8F=AF=E4=BB=A5=E5=88=A0?= =?UTF-8?q?=E9=99=A4=203=E3=80=81=E6=96=B0=E5=A2=9E=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=95=86=E5=9F=8E=E4=B8=9A=E5=8A=A1=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xjs/exception/MallException.java | 24 +++++++++++++++++++ .../product/controller/AttrController.java | 2 +- .../controller/AttrGroupController.java | 2 +- .../product/service/AttrGroupService.java | 11 ++++++++- .../xjs/mall/product/service/AttrService.java | 7 ++++++ .../service/impl/AttrGroupServiceImpl.java | 23 ++++++++++++++++++ .../product/service/impl/AttrServiceImpl.java | 11 +++++++++ 7 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 xjs-business/xjs-business-common/src/main/java/com/xjs/exception/MallException.java 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)); + } + } + }