From 17768de6babdae1c45ad9e43150a44c47e30f128 Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Tue, 18 Feb 2025 18:56:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E6=A8=A1=E5=9D=97=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ProductController.java | 12 ++++++++ .../czg/product/service/ProductService.java | 6 ++-- .../product/vo/MiniAppHomeProductInfoVo.java | 12 ++++++++ .../service/impl/ProductServiceImpl.java | 28 +++++++++++++++++++ .../service/impl/UProductServiceImpl.java | 9 +++++- 5 files changed, 64 insertions(+), 3 deletions(-) diff --git a/cash-api/product-server/src/main/java/com/czg/controller/admin/ProductController.java b/cash-api/product-server/src/main/java/com/czg/controller/admin/ProductController.java index bb4cd0591..dddbb8bde 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/admin/ProductController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/admin/ProductController.java @@ -2,6 +2,7 @@ package com.czg.controller.admin; import com.czg.log.annotation.OperationLog; import com.czg.product.dto.ProductDTO; +import com.czg.product.param.ProductIsSaleParam; import com.czg.product.service.ProductService; import com.czg.resp.CzgResult; import com.czg.utils.AssertUtil; @@ -80,4 +81,15 @@ public class ProductController { return CzgResult.success(); } + /** + * 商品-上下架 + */ + @PostMapping("/on-off") + @OperationLog("商品-上下架") + //@SaAdminCheckPermission("product:on-off") + public CzgResult onOffProduct(@RequestBody @Validated({DefaultGroup.class}) ProductIsSaleParam param) { + productService.onOffProduct(param); + return CzgResult.success(); + } + } \ No newline at end of file diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProductService.java b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProductService.java index b523f345d..80ed12775 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProductService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProductService.java @@ -2,6 +2,7 @@ package com.czg.product.service; import com.czg.product.dto.ProductDTO; import com.czg.product.entity.Product; +import com.czg.product.param.ProductIsSaleParam; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.service.IService; @@ -21,9 +22,10 @@ public interface ProductService extends IService { ProductDTO getProductById(Long id); boolean addProduct(ProductDTO dto); - - boolean deleteProduct(Long id); boolean updateProduct(ProductDTO dto); + boolean deleteProduct(Long id); + + boolean onOffProduct(ProductIsSaleParam param); } \ No newline at end of file diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/MiniAppHomeProductInfoVo.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/MiniAppHomeProductInfoVo.java index 3ace845a1..543d702a6 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/MiniAppHomeProductInfoVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/MiniAppHomeProductInfoVo.java @@ -63,6 +63,18 @@ public class MiniAppHomeProductInfoVo implements Serializable { * 会员最低售价 */ private BigDecimal lowMemberPrice; + /** + * 是否售罄 + */ + private Integer isSoldStock; + /** + * 商品库存 + */ + private Integer stockNumber; + /** + * 是否上架 0-未上架,1-已上架 + */ + private Integer isSale; /** * 商品SKU列表 */ diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java index 1b4394b8d..cfc0e75c9 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java @@ -13,7 +13,9 @@ import com.czg.product.dto.ProdSkuDTO; import com.czg.product.dto.ProductDTO; import com.czg.product.entity.ProdSku; import com.czg.product.entity.Product; +import com.czg.product.enums.ProductIsSaleTypeEnum; import com.czg.product.enums.ProductTypeEnum; +import com.czg.product.param.ProductIsSaleParam; import com.czg.product.service.ProductService; import com.czg.sa.StpKit; import com.czg.service.product.mapper.ProdSkuMapper; @@ -233,4 +235,30 @@ public class ProductServiceImpl extends ServiceImpl impl .update(); } + @Override + @Transactional(rollbackFor = Exception.class) + public boolean onOffProduct(ProductIsSaleParam param) { + Long shopId = StpKit.USER.getLoginIdAsLong(); + String type = param.getType(); + Long id = param.getId(); + Integer isSale = param.getIsSale(); + if (ProductIsSaleTypeEnum.PRODUCT.value().equals(type)) { + UpdateChain.of(Product.class) + .set(Product::getIsSale, isSale) + .eq(Product::getId, id) + .eq(Product::getShopId, shopId) + .update(); + UpdateChain.of(ProdSku.class) + .set(ProdSku::getIsGrounding, isSale) + .eq(ProdSku::getProductId, id) + .update(); + } else if (ProductIsSaleTypeEnum.SKU.value().equals(type)) { + UpdateChain.of(ProdSku.class) + .set(ProdSku::getIsGrounding, isSale) + .eq(ProdSku::getId, id) + .update(); + } + return true; + } + } \ No newline at end of file diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java index 032d1f214..7fa1ddf31 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java @@ -95,7 +95,11 @@ public class UProductServiceImpl extends ServiceImpl imp return Collections.emptyList(); } List prodIdList = dtoList.stream().map(ProductDTO::getId).distinct().toList(); - List skuList = prodSkuMapper.selectListByQueryAs(query().in(ProdSku::getProductId, prodIdList).eq(ProdSku::getIsDel, DeleteEnum.NORMAL.value()), ProdSkuDTO.class); + List skuList = prodSkuMapper.selectListByQueryAs(query() + .in(ProdSku::getProductId, prodIdList) + .eq(ProdSku::getIsDel, DeleteEnum.NORMAL.value()) + .eq(ProdSku::getIsGrounding, YesNoEnum.YES.value()) + , ProdSkuDTO.class); Map> collect = skuList.stream().collect(Collectors.groupingBy(ProdSkuDTO::getProductId)); List products = new ArrayList<>(); for (ProductDTO dto : dtoList) { @@ -109,6 +113,9 @@ public class UProductServiceImpl extends ServiceImpl imp prod.setType(dto.getType()); prod.setGroupType(dto.getGroupType()); prod.setSelectSpecInfo(dto.getSelectSpecInfo()); + prod.setIsSoldStock(dto.getIsSoldStock()); + prod.setStockNumber(dto.getStockNumber()); + prod.setIsSale(dto.getIsSale()); List list = collect.getOrDefault(dto.getId(), Collections.emptyList()); Optional lowPriceIsPresent = list.stream().map(ProdSkuDTO::getSalePrice).min(BigDecimal::compareTo);