支持批量修改规格价格和库存

This commit is contained in:
liyj 2025-07-28 18:31:20 +08:00
parent 3d3c0c5360
commit bcd7df0394
3 changed files with 62 additions and 42 deletions

View File

@ -7,10 +7,9 @@ import com.suisung.mall.shop.product.service.ShopProductItemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
@ -87,13 +86,13 @@ public class ShopProductItemController {
/**
* 编辑库存和价格
* @param shopProductItem
* @param shopProductItemList
* @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);
public CommonResult editQuantity(@RequestBody List<ShopProductItem> shopProductItemList) {
return shopProductItemService.editQuantity(shopProductItemList);
}
}

View File

@ -91,5 +91,5 @@ public interface ShopProductItemService extends IBaseService<ShopProductItem> {
* 修改item的价格和库存
* @param: ShopProductItem
*/
CommonResult editQuantity(ShopProductItem shopProductItem);
CommonResult editQuantity(List<ShopProductItem> shopProductItemList);
}

View File

@ -2294,46 +2294,67 @@ public class ShopProductItemServiceImpl extends BaseServiceImpl<ShopProductItemM
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult editQuantity(ShopProductItem shopProductItem) {
public CommonResult editQuantity(List<ShopProductItem> shopProductItemList) {
if(shopProductItemList.isEmpty()){
return CommonResult.failed("修改数据不能为空");
}
if(shopProductItemList.size()>10){
return CommonResult.failed("修改数据不能超过10条");
}
QueryWrapper<ShopProductItem> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("product_id",shopProductItem.getProduct_id());
List<ShopProductItem> oldShopProductItems= shopProductItemService.list(queryWrapper);
List<ShopProductItem> 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("价格不能为空");
}
List<ShopProductItem> updateShopProductItem=new ArrayList<>();
List<ShopProductBase> updateShopProductBase=new ArrayList<>();
List<ShopProductIndex> updateShopProductIndex=new ArrayList<>();
for (ShopProductItem shopProductItem : shopProductItemList) {
queryWrapper.eq("product_id",shopProductItem.getProduct_id());
List<ShopProductItem> oldShopProductItems= shopProductItemService.list(queryWrapper);
List<ShopProductItem> 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 =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_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());
updateShopProductBase.add(shopProductBase);
// 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())){
updateShopProductIndex.add(shopProductIndex);
//shopProductIndexService.updateById(shopProductIndex);
}
oldShopProductItem.setItem_quantity(shopProductItem.getItem_quantity());
oldShopProductItem.setItem_unit_price(shopProductItem.getItem_unit_price());
updateShopProductItem.add(oldShopProductItem);
// shopProductItemService.updateById(oldShopProductItem);
}
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(!updateShopProductBase.isEmpty()){
shopProductBaseService.updateBatchById(updateShopProductBase);
}
if(ObjectUtil.isNotEmpty(shopProductIndex.getProduct_id())){
shopProductIndexService.updateById(shopProductIndex);
if(!updateShopProductIndex.isEmpty()){
shopProductIndexService.updateBatchById(updateShopProductIndex);
}
oldShopProductItem.setItem_quantity(shopProductItem.getItem_quantity());
oldShopProductItem.setItem_unit_price(shopProductItem.getItem_unit_price());
shopProductItemService.updateById(oldShopProductItem);
shopProductItemService.updateBatchById(updateShopProductItem);
return CommonResult.success();
}
}