在线商城修改
This commit is contained in:
1 parent
326222615a
commit
11f7fcb343
7 files changed
+41
-10
No files matched your search
+6
@@ -116,4 +116,10 @@ public class ShopSkuEntity extends Model<ShopSkuEntity> {
|
||||
|
||||
@Schema(description="版本号")
|
||||
private Integer version;
|
||||
|
||||
/**
|
||||
* 销量
|
||||
*/
|
||||
@Schema(description="销量")
|
||||
private Integer salesCount;
|
||||
}
|
||||
+2
-2
@@ -46,7 +46,7 @@ public class ShopSpuListAppVo {
|
||||
/**
|
||||
* 总库存
|
||||
*/
|
||||
@Schema(description="总库存")
|
||||
private Double totalStock;
|
||||
@Schema(description="总销量")
|
||||
private Double salesCount;
|
||||
|
||||
}
|
||||
+7
-7
@@ -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);
|
||||
|
||||
+5
@@ -8,4 +8,9 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
public interface ShopSpuMapper extends PjcloudBaseMapper<ShopSpuEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 修改销量
|
||||
* @param num
|
||||
*/
|
||||
void updateSalesCount(Long spuId,Integer num);
|
||||
}
|
||||
+14
@@ -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<ShopSkuMapper, ShopSkuEntity> implements ShopSkuService {
|
||||
|
||||
private final ShopSpuMapper shopSpuMapper;
|
||||
/**
|
||||
* 修改库存(乐观锁)
|
||||
* 正数:增加库存,负数:扣减库存
|
||||
@@ -24,7 +30,15 @@ public class ShopSkuServiceImpl extends ServiceImpl<ShopSkuMapper, ShopSkuEntity
|
||||
if (sku == null) return false;
|
||||
// 扣减时判断库存是否足够
|
||||
if (num < 0 && sku.getStock() < -num) return false;
|
||||
LambdaQueryWrapper<ShopSkuEntity> 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;
|
||||
|
||||
+2
-1
@@ -22,11 +22,12 @@
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
<result property="version" column="version"/>
|
||||
<result property="salesCount" column="sales_count"/>
|
||||
</resultMap>
|
||||
|
||||
<update id="deductStock">
|
||||
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}
|
||||
</update>
|
||||
</mapper>
|
||||
+5
@@ -28,4 +28,9 @@
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
<update id="updateSalesCount">
|
||||
UPDATE shop_spu
|
||||
SET sales_count=sales_count+#{num}
|
||||
WHERE id = #{spuId}
|
||||
</update>
|
||||
</mapper>
|
||||
Reference in new issue
Block a user