From 11f7fcb3436803311ae74cbdd38140870a39cd35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=AE=B6=E5=AF=8C?= <1799650030@qq.com> Date: Thu, 17 Jul 2025 11:23:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E5=95=86=E5=9F=8E=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud/supermarket/entity/ShopSkuEntity.java | 6 ++++++ .../supermarket/vo/app/ShopSpuListAppVo.java | 4 ++-- .../controller/AppShopSpuController.java | 14 +++++++------- .../pjcloud/supermarket/mapper/ShopSpuMapper.java | 5 +++++ .../service/impl/ShopSkuServiceImpl.java | 14 ++++++++++++++ .../src/main/resources/mapper/ShopSkuMapper.xml | 3 ++- .../src/main/resources/mapper/ShopSpuMapper.xml | 5 +++++ 7 files changed, 41 insertions(+), 10 deletions(-) diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/ShopSkuEntity.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/ShopSkuEntity.java index 11407bd29..67f4da041 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/ShopSkuEntity.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/ShopSkuEntity.java @@ -116,4 +116,10 @@ public class ShopSkuEntity extends Model { @Schema(description="版本号") private Integer version; + + /** + * 销量 + */ + @Schema(description="销量") + private Integer salesCount; } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuListAppVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuListAppVo.java index 05ae46501..16985be8a 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuListAppVo.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuListAppVo.java @@ -46,7 +46,7 @@ public class ShopSpuListAppVo { /** * 总库存 */ - @Schema(description="总库存") - private Double totalStock; + @Schema(description="总销量") + private Double salesCount; } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java index 2cee5c3eb..b356b60e8 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java @@ -60,13 +60,13 @@ public class AppShopSpuController { .map(price -> new java.math.BigDecimal(price).divide(new java.math.BigDecimal(100))) .min(java.math.BigDecimal::compareTo) .orElse(java.math.BigDecimal.ZERO)); - vo.setTotalStock( - skus.stream() - .map(ShopSkuEntity::getStock) - .filter(java.util.Objects::nonNull) - .mapToDouble(Double::doubleValue) - .sum() - ); +// vo.setTotalStock( +// skus.stream() +// .map(ShopSkuEntity::gets) +// .filter(java.util.Objects::nonNull) +// .mapToDouble(Double::doubleValue) +// .sum() +// ); return vo; }); return R.ok(voPage); diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ShopSpuMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ShopSpuMapper.java index 01abd2060..05c7840b1 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ShopSpuMapper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ShopSpuMapper.java @@ -8,4 +8,9 @@ import org.apache.ibatis.annotations.Mapper; public interface ShopSpuMapper extends PjcloudBaseMapper { + /** + * 修改销量 + * @param num + */ + void updateSalesCount(Long spuId,Integer num); } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ShopSkuServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ShopSkuServiceImpl.java index 8c799075c..84e1b00c1 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ShopSkuServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ShopSkuServiceImpl.java @@ -1,9 +1,12 @@ package com.bsd.pjcloud.supermarket.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.supermarket.entity.ShopSkuEntity; import com.bsd.pjcloud.supermarket.mapper.ShopSkuMapper; +import com.bsd.pjcloud.supermarket.mapper.ShopSpuMapper; import com.bsd.pjcloud.supermarket.service.ShopSkuService; +import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; /** * sku @@ -12,7 +15,10 @@ import org.springframework.stereotype.Service; * @date 2025-06-19 12:43:40 */ @Service +@AllArgsConstructor public class ShopSkuServiceImpl extends ServiceImpl implements ShopSkuService { + + private final ShopSpuMapper shopSpuMapper; /** * 修改库存(乐观锁) * 正数:增加库存,负数:扣减库存 @@ -24,7 +30,15 @@ public class ShopSkuServiceImpl extends ServiceImpl shopSkuEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + shopSkuEntityLambdaQueryWrapper.eq(ShopSkuEntity::getId, skuId); + ShopSkuEntity shopSkuEntity = baseMapper.selectOne(shopSkuEntityLambdaQueryWrapper); + if (null==shopSkuEntity){ + return false; + } int updated = baseMapper.deductStock(skuId, num, sku.getVersion()); + //更新spu已售总数 + shopSpuMapper.updateSalesCount(shopSkuEntity.getSpuId(),num); if (updated > 0) return true; } return false; diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSkuMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSkuMapper.xml index 8e2dd37cb..f0eee7c44 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSkuMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSkuMapper.xml @@ -22,11 +22,12 @@ + UPDATE shop_sku - SET stock = stock + #{num}, version = version + 1 + SET stock = stock + #{num}, version = version + 1,sales_count=sales_count+#{num} WHERE id = #{skuId} AND stock + #{num} >= 0 AND version = #{version} \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSpuMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSpuMapper.xml index 977244bc3..7ea83d126 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSpuMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSpuMapper.xml @@ -28,4 +28,9 @@ + + UPDATE shop_spu + SET sales_count=sales_count+#{num} + WHERE id = #{spuId} + \ No newline at end of file