From 6fffdf27b396579c6b1eb4564a7ec908fc66dbc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Thu, 20 Feb 2025 11:09:30 +0800 Subject: [PATCH] =?UTF-8?q?pad=E7=82=B9=E9=A4=90=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/PadProdController.java | 17 ++-- .../czg/account/dto/pad/PadDetailDelDTO.java | 19 +++++ .../account/entity/PadProductCategory.java | 2 + .../entity/PadProductCategoryDetail.java | 2 + .../czg/account/service/PadProdService.java | 6 +- .../service/impl/PadProdServiceImpl.java | 79 +++++++++++++++---- 6 files changed, 101 insertions(+), 24 deletions(-) create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/dto/pad/PadDetailDelDTO.java diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/PadProdController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/PadProdController.java index 2f128c242..26f85f21f 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/admin/PadProdController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/PadProdController.java @@ -1,10 +1,7 @@ package com.czg.controller.admin; import cn.dev33.satoken.annotation.SaCheckPermission; -import com.czg.account.dto.pad.PadDetailAddDTO; -import com.czg.account.dto.pad.PadDetailDTO; -import com.czg.account.dto.pad.PadDetailEditDTO; -import com.czg.account.dto.pad.PadProductCategoryDTO; +import com.czg.account.dto.pad.*; import com.czg.account.entity.PadProductCategoryDetail; import com.czg.account.service.PadProdService; import com.czg.annotation.SaAdminCheckPermission; @@ -65,9 +62,19 @@ public class PadProdController { * pad点餐修改 * @return 是否成功 */ - @SaAdminCheckPermission(value = "padProd:edit", name = "pad点餐详情") + @SaAdminCheckPermission(value = "padProd:edit", name = "pad点餐修改") @PutMapping public CzgResult edit(@RequestBody @Validated PadDetailEditDTO padDetailEditDTO) { return CzgResult.success(padProdService.edit(StpKit.USER.getShopId(), padDetailEditDTO)); } + + /** + * pad点餐修改 + * @return 是否成功 + */ + @SaAdminCheckPermission(value = "padProd:del", name = "pad点餐删除") + @DeleteMapping + public CzgResult del(@RequestBody @Validated PadDetailDelDTO delDTO) { + return CzgResult.success(padProdService.del(StpKit.USER.getShopId(), delDTO)); + } } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/pad/PadDetailDelDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/pad/PadDetailDelDTO.java new file mode 100644 index 000000000..30fb233cc --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/pad/PadDetailDelDTO.java @@ -0,0 +1,19 @@ +package com.czg.account.dto.pad; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Administrator + */ +@Data +public class PadDetailDelDTO { + /** + * 列表id + */ + @NotNull(message = "tb_pad_product_categoryId不为空") + private Long id; +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/PadProductCategory.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/PadProductCategory.java index 6fb02650e..d50f0ab2f 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/PadProductCategory.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/PadProductCategory.java @@ -13,6 +13,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; /** * Pad商品自定义分类 实体类。 @@ -25,6 +26,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor @Table("tb_pad_product_category") +@Accessors(chain = true) public class PadProductCategory implements Serializable { @Serial diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/PadProductCategoryDetail.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/PadProductCategoryDetail.java index 27419dbf3..ba1f0443a 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/PadProductCategoryDetail.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/PadProductCategoryDetail.java @@ -13,6 +13,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; /** * Pad商品自定义分类明细 实体类。 @@ -25,6 +26,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor @Table("tb_pad_product_category_detail") +@Accessors(chain = true) public class PadProductCategoryDetail implements Serializable { @Serial diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/PadProdService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/PadProdService.java index 9e983de5e..125e68dab 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/service/PadProdService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/PadProdService.java @@ -1,9 +1,6 @@ package com.czg.account.service; -import com.czg.account.dto.pad.PadDetailAddDTO; -import com.czg.account.dto.pad.PadDetailDTO; -import com.czg.account.dto.pad.PadDetailEditDTO; -import com.czg.account.dto.pad.PadProductCategoryDTO; +import com.czg.account.dto.pad.*; import com.mybatisflex.core.paginate.Page; /** @@ -18,4 +15,5 @@ public interface PadProdService { Boolean add(Long shopId, PadDetailAddDTO padDetailAddDTO); + Boolean del(Long shopId, PadDetailDelDTO delDTO); } diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java index 44e0e0615..bf575329d 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/PadProdServiceImpl.java @@ -1,17 +1,9 @@ package com.czg.service.account.service.impl; -import com.czg.account.dto.pad.PadDetailAddDTO; -import com.czg.account.dto.pad.PadDetailDTO; -import com.czg.account.dto.pad.PadDetailEditDTO; -import com.czg.account.dto.pad.PadProductCategoryDTO; -import com.czg.account.entity.PadProductCategory; -import com.czg.account.entity.PadProductCategoryDetail; -import com.czg.account.entity.Product; -import com.czg.account.entity.ShopProdCategory; -import com.czg.account.service.PadProdService; -import com.czg.account.service.PadProductCategoryService; -import com.czg.account.service.ProductService; -import com.czg.account.service.ShopProdCategoryService; +import com.czg.account.dto.pad.*; +import com.czg.account.entity.*; +import com.czg.account.service.*; +import com.czg.enums.StatusEnum; import com.czg.exception.ApiNotPrintException; import com.czg.service.account.mapper.PadProductCategoryDetailMapper; import com.mybatisflex.core.paginate.Page; @@ -19,6 +11,7 @@ import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -34,6 +27,10 @@ public class PadProdServiceImpl implements PadProdService { private ProductService productService; @Resource private ShopProdCategoryService shopProdCategoryService; + @Resource + private PadLayoutService padLayoutService; + @Resource + private PadProductCategoryDetailService padProductCategoryDetailService; @Override public Page pageInfo(Page objectPage, Long productCategoryId, Long shopId) { @@ -66,12 +63,64 @@ public class PadProdServiceImpl implements PadProdService { @Override public Boolean add(Long shopId, PadDetailAddDTO padDetailAddDTO) { - shopProdCategoryService.getOne(new QueryWrapper().eq(ShopProdCategory::getId, padDetailAddDTO.getProductCategoryId())); - return null; + long count = shopProdCategoryService.count(new QueryWrapper().eq(ShopProdCategory::getId, padDetailAddDTO.getProductCategoryId())); + if (count == 0) { + throw new ApiNotPrintException("商品分类不存在"); + } + + checkInfo(shopId, padDetailAddDTO.getPadLayoutId(), padDetailAddDTO.getProductIdList()); + + PadProductCategory padProductCategory = new PadProductCategory().setPadLayoutId(padDetailAddDTO.getPadLayoutId()).setProductCategoryId(padDetailAddDTO.getProductCategoryId()) + .setShopId(shopId); + padProductCategoryService.save(padProductCategory); + + ArrayList details = new ArrayList<>(); + padDetailAddDTO.getProductIdList().forEach(item -> { + details.add(new PadProductCategoryDetail().setPadProductCategoryId(padProductCategory.getId()).setProductId(item)); + }); + return padProductCategoryDetailService.saveBatch(details); } @Override public Boolean edit(Long shopId, PadDetailEditDTO padDetailEditDTO) { - return null; + PadProductCategory category = padProductCategoryService.getOne(new QueryWrapper().eq(PadProductCategory::getShopId, shopId).eq(PadProductCategory::getId, padDetailEditDTO.getId())); + if (category == null) { + throw new ApiNotPrintException("pad商品不存在"); + } + + checkInfo(shopId, padDetailEditDTO.getPadLayoutId(), padDetailEditDTO.getProductIdList()); + padProductCategoryDetailService.remove(new QueryWrapper().eq(PadProductCategoryDetail::getPadProductCategoryId, padDetailEditDTO.getId())); + + category.setPadLayoutId(padDetailEditDTO.getPadLayoutId()); + padProductCategoryService.updateById(category); + + ArrayList details = new ArrayList<>(); + padDetailEditDTO.getProductIdList().forEach(item -> { + details.add(new PadProductCategoryDetail().setPadProductCategoryId(padDetailEditDTO.getId()).setProductId(item)); + }); + return padProductCategoryDetailService.saveBatch(details); + } + + private void checkInfo(Long shopId, Long padLayoutId, List productIdList) { + long layOutCount = padLayoutService.count(new QueryWrapper().eq(PadLayout::getId, padLayoutId).eq(PadLayout::getIsDel, 0)); + if (layOutCount == 0) { + throw new ApiNotPrintException("pad布局不存在"); + } + + long proCount = productService.count(new QueryWrapper().eq(Product::getShopId, shopId).in(Product::getId, productIdList)); + if (proCount != productIdList.size()) { + throw new ApiNotPrintException("存在错误商品id"); + } + } + + @Override + public Boolean del(Long shopId, PadDetailDelDTO delDTO) { + PadProductCategory category = padProductCategoryService.getOne(new QueryWrapper().eq(PadProductCategory::getShopId, shopId).eq(PadProductCategory::getId, delDTO.getId())); + if (category == null) { + throw new ApiNotPrintException("pad商品不存在"); + } + padProductCategoryService.removeById(delDTO.getId()); + + return padProductCategoryDetailService.remove(new QueryWrapper().eq(PadProductCategoryDetail::getPadProductCategoryId, delDTO.getId())); } }