From 52c39423469f25699a57941fd0615b46f1ddd672 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Fri, 25 Jul 2025 15:49:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81sukitem=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=92=8C=E5=BA=93=E5=AD=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/ShopProductItemController.java | 13 ++++++ .../service/ShopProductItemService.java | 8 ++++ .../impl/ShopProductItemServiceImpl.java | 46 +++++++++++++++++++ sql/shop/dev/20250725_dml.sql | 1 + 4 files changed, 68 insertions(+) create mode 100644 sql/shop/dev/20250725_dml.sql diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductItemController.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductItemController.java index bc9a8d69..4543c88f 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductItemController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductItemController.java @@ -83,5 +83,18 @@ public class ShopProductItemController { .orderByAsc("item_id"); return CommonResult.success(shopProductItemService.find(queryWrapper)); } + + + /** + * 编辑库存和价格 + * @param shopProductItem + * @return + */ + @ApiOperation(value = "商品表-SKU表 商品名称(产品名称+颜色规格名称) =shop_product_item-编辑", notes = "商品表-SKU表 商品名称(产品名称+颜色规格名称) =shop_product_item-编辑") + @RequestMapping(value = "/editQuantity", method = RequestMethod.POST) + public CommonResult editQuantity(ShopProductItem shopProductItem) { + return shopProductItemService.editQuantity(shopProductItem); + } + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductItemService.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductItemService.java index 80109da1..01da4dd6 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductItemService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductItemService.java @@ -1,6 +1,7 @@ package com.suisung.mall.shop.product.service; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.modules.edu.vo.EduCourseDetailVO; import com.suisung.mall.common.modules.product.ShopProductItem; import com.suisung.mall.common.pojo.dto.EduCourseDetailDTO; @@ -84,4 +85,11 @@ public interface ShopProductItemService extends IBaseService { * @return */ void batchUpdateByCondition(List shopProductItemList); + + /** + * 功能描述: + * 修改item的价格和库存 + * @param: ShopProductItem + */ + CommonResult editQuantity(ShopProductItem shopProductItem); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java index 7833e341..1d78beae 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java @@ -17,6 +17,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.api.ResultCode; import com.suisung.mall.common.api.StateCode; import com.suisung.mall.common.constant.ConfigConstant; @@ -61,6 +62,7 @@ import com.suisung.mall.shop.user.service.ShopUserProductBrowseService; import io.seata.spring.annotation.GlobalTransactional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; @@ -2290,4 +2292,48 @@ public class ShopProductItemServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("product_id",shopProductItem.getProduct_id()); + List oldShopProductItems= shopProductItemService.list(queryWrapper); + List oldShopProductItemList= oldShopProductItems.stream().filter(s -> s.getItem_id().equals(shopProductItem.getItem_id())).collect(Collectors.toList()); + if(CollUtil.isEmpty(oldShopProductItemList)){ + return CommonResult.failed("不存在商品sku"); + } + ShopProductItem oldShopProductItem=oldShopProductItemList.get(0); + if(ObjectUtil.isEmpty(shopProductItem.getItem_quantity())){ + return CommonResult.failed("库存不能为空"); + } + if(ObjectUtil.isEmpty(shopProductItem.getItem_unit_price())){ + return CommonResult.failed("价格不能为空"); + } + + BigDecimal item_unit_price =shopProductItem.getItem_unit_price(); + BigDecimal item_unit_price_max =shopProductItem.getItem_unit_price(); + + BigDecimal item_unit_price_old = oldShopProductItems.stream().map(ShopProductItem::getItem_unit_price).min(BigDecimal::compareTo).get(); + ShopProductIndex shopProductIndex=new ShopProductIndex(); + if(item_unit_price_old.compareTo(item_unit_price)>0){ + ShopProductBase shopProductBase=new ShopProductBase(); + shopProductBase.setProduct_id(shopProductItem.getProduct_id()); + shopProductBase.setProduct_unit_price(item_unit_price); + shopProductIndex.setProduct_unit_price(item_unit_price); + shopProductIndex.setProduct_id(shopProductItem.getProduct_id()); + shopProductBaseService.updateById(shopProductBase); + } + BigDecimal item_unit_price_max_old=oldShopProductItems.stream().map(ShopProductItem::getItem_unit_price).max(BigDecimal::compareTo).get(); + if(item_unit_price_max.compareTo(item_unit_price_max_old)>0){ + shopProductIndex.setProduct_id(shopProductItem.getProduct_id()); + shopProductIndex.setProduct_unit_price_max(item_unit_price_max); + } + if(ObjectUtil.isNotEmpty(shopProductIndex.getProduct_id())){ + shopProductIndexService.updateById(shopProductIndex); + } + oldShopProductItem.setItem_quantity(shopProductItem.getItem_quantity()); + oldShopProductItem.setItem_unit_price(shopProductItem.getItem_unit_price()); + shopProductItemService.updateById(oldShopProductItem); + return CommonResult.success(); + } } diff --git a/sql/shop/dev/20250725_dml.sql b/sql/shop/dev/20250725_dml.sql new file mode 100644 index 00000000..73037bbe --- /dev/null +++ b/sql/shop/dev/20250725_dml.sql @@ -0,0 +1 @@ +INSERT INTO `admin_base_protocol` (`ctl`, `met`, `db`, `rights_id`, `log`, `path`) VALUES ('/admin/shop/shop-product-item/editQuantity', 'index', 'master', '', '0', '/admin/shop/shop-product-item/editQuantity'); \ No newline at end of file