From 90ecd78e8d949d19dd382e6a09cd0a1eab3193fa Mon Sep 17 00:00:00 2001 From: puzvv <1@> Date: Tue, 30 Dec 2025 17:46:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ProductController.java | 7 ++++ .../Mapper/ProductMapper.java | 2 +- .../Service/Impl/ProductServiceImpl.java | 37 ++++++++++++++++--- .../Service/ProductService.java | 6 +++ 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/main/java/icu/sunway/ai_spring_example/Controllers/ProductController.java b/src/main/java/icu/sunway/ai_spring_example/Controllers/ProductController.java index 30cdf04..581a1fc 100644 --- a/src/main/java/icu/sunway/ai_spring_example/Controllers/ProductController.java +++ b/src/main/java/icu/sunway/ai_spring_example/Controllers/ProductController.java @@ -48,6 +48,13 @@ public class ProductController { return ResponseEntity.success("商品修改成功"); } + @DeleteMapping + public ResponseEntity delete(@RequestParam Long id) { + log.info("删除商品及关联规格: {}", id); + productService.deleteProduct(id); + return ResponseEntity.success("商品及关联规格删除成功"); + } + /** * 商品上下架 */ diff --git a/src/main/java/icu/sunway/ai_spring_example/Mapper/ProductMapper.java b/src/main/java/icu/sunway/ai_spring_example/Mapper/ProductMapper.java index 5b9f5a4..39aea52 100644 --- a/src/main/java/icu/sunway/ai_spring_example/Mapper/ProductMapper.java +++ b/src/main/java/icu/sunway/ai_spring_example/Mapper/ProductMapper.java @@ -27,5 +27,5 @@ public interface ProductMapper extends BaseMapper { @Param("status") Integer status ); - IPage selectProductPageByUser(Page pageInfo, Long categoryId, String name, Integer status); + IPage selectProductPageByUser(Page pageInfo, Long categoryId, String name, Integer status, @Param("userId") Long userId); } \ No newline at end of file diff --git a/src/main/java/icu/sunway/ai_spring_example/Service/Impl/ProductServiceImpl.java b/src/main/java/icu/sunway/ai_spring_example/Service/Impl/ProductServiceImpl.java index 6a9bc5e..071dd2a 100644 --- a/src/main/java/icu/sunway/ai_spring_example/Service/Impl/ProductServiceImpl.java +++ b/src/main/java/icu/sunway/ai_spring_example/Service/Impl/ProductServiceImpl.java @@ -50,17 +50,41 @@ public class ProductServiceImpl extends ServiceImpl impl // 2. 保存商品规格 List skuList = new ArrayList<>(); - for (ProductSkuDTO skuDTO : productDTO.getSkuList()) { - ProductSku sku = new ProductSku(); - BeanUtils.copyProperties(skuDTO, sku); - sku.setProductId(product.getId()); // 设置商品ID关联 - skuList.add(sku); + if(productDTO.getSkuList() != null){ + for (ProductSkuDTO skuDTO : productDTO.getSkuList()) { + ProductSku sku = new ProductSku(); + BeanUtils.copyProperties(skuDTO, sku); + sku.setProductId(product.getId()); // 设置商品ID关联 + skuList.add(sku); + } } if (!skuList.isEmpty()) { productSkuMapper.batchInsert(skuList); } } + @Override + @Transactional // 保证事务一致性 + public void deleteProduct(Long productId) { + // 1. 验证商品是否存在 + Product product = baseMapper.selectById(productId); + if (product == null) { + throw new BusinessException("商品不存在"); + } + + // 2. 删除商品关联的所有规格 + LambdaQueryWrapper skuQueryWrapper = new LambdaQueryWrapper<>(); + skuQueryWrapper.eq(ProductSku::getProductId, productId); + int skuDeleteCount = productSkuMapper.delete(skuQueryWrapper); + log.info("删除商品[{}]关联的规格数量: {}", productId, skuDeleteCount); + + // 3. 删除商品本身(如果是逻辑删除会自动触发,物理删除则执行此操作) + int productDeleteCount = baseMapper.deleteById(productId); + if (productDeleteCount > 0) { + log.info("商品[{}]删除成功", productId); + } + } + @Override @Transactional public void updateProduct(ProductDTO productDTO) { @@ -112,7 +136,8 @@ public class ProductServiceImpl extends ServiceImpl impl pageInfo, categoryId, name, - status + status, + currentUserId // 添加这个参数 ); return (Page) result; } diff --git a/src/main/java/icu/sunway/ai_spring_example/Service/ProductService.java b/src/main/java/icu/sunway/ai_spring_example/Service/ProductService.java index 6e24979..4b75c76 100644 --- a/src/main/java/icu/sunway/ai_spring_example/Service/ProductService.java +++ b/src/main/java/icu/sunway/ai_spring_example/Service/ProductService.java @@ -58,4 +58,10 @@ public interface ProductService extends IService { * @param status 状态(0-下架,1-上架) */ void updateStatus(Long id, Integer status); + + /** + * 删除商品及关联规格 + * @param productId 商品ID + */ + void deleteProduct(Long productId); }