From cd5b5d190749988f969f5c3c7e41a1037b58046e Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Mon, 13 Jan 2025 15:29:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BA=93=E5=AD=98=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/feign/RemoteCanteenSpuService.java | 10 ++++++++++ .../feign/RemoteOnlineCanteenSpuService.java | 11 ++++++++++ .../CanteenOnlineSpuController.java | 16 +++++++++++++++ .../controller/CanteenSpuController.java | 18 +++++++++++++++++ .../impl/CanteenOnlineSpuServiceImpl.java | 19 +++++++++++++----- .../service/impl/CanteenSpuServiceImpl.java | 20 ++++++++++++++----- 6 files changed, 84 insertions(+), 10 deletions(-) diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenSpuService.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenSpuService.java index 3ecb3bc53..d13d7849d 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenSpuService.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenSpuService.java @@ -21,6 +21,7 @@ package com.bsd.pjcloud.canteen.api.feign; import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO; +import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.core.util.R; @@ -66,4 +67,13 @@ public interface RemoteCanteenSpuService { @PostMapping("/canteenSpu/ad/getSpuListByIds") R> getSpuListByIds(@RequestBody List ids); + /** + * 购物车效验库存 + * @param spuId + * @param incrCount 扣减数量,正数负数都行 + * @return + */ + @GetMapping("/canteenSpu/app/checkSpuStock") + R checkSpuStock(@RequestParam(value ="spuId")Long spuId,@RequestParam("incrCount")Integer incrCount); + } diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java index 9875e7fff..70d6a0a34 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteOnlineCanteenSpuService.java @@ -21,6 +21,7 @@ package com.bsd.pjcloud.canteen.api.feign; import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO; +import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; import com.bsd.pjcloud.canteen.vo.APPOnlineSpuVO; import com.bsd.pjcloud.canteen.vo.app.CanteenOnlineSpuAppVO; import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; @@ -76,4 +77,14 @@ public interface RemoteOnlineCanteenSpuService { @PostMapping("/canteenOnlineSpu/app/getSpuListByIds") R> getSpuListByIds(@RequestBody List ids); + + /** + * 购物车效验库存 + * @param spuId + * @param incrCount 扣减数量,正数负数都行 + * @return + */ + @GetMapping("/canteenOnlineSpu/app/checkSpuStock") + R checkSpuStock(@RequestParam(value ="spuId")Long spuId,@RequestParam("incrCount")Integer incrCount); + } diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineSpuController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineSpuController.java index 87d5903aa..fbf426b41 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineSpuController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenOnlineSpuController.java @@ -23,6 +23,7 @@ import org.springframework.http.HttpHeaders; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -153,9 +154,24 @@ public class CanteenOnlineSpuController { } + @GetMapping("/app/checkSpuStock") + @SysLog("购物车效验库存") + @Transactional + public R checkSpuStock(@RequestParam(value ="spuId")Long spuId,@RequestParam("incrCount")Integer incrCount) { + CanteenOnlineSpuEntity canteenOnlineSpuEntity = canteenOnlineSpuService.getById(spuId); + if (canteenOnlineSpuEntity == null) { + R.failed("商品不存在"); + } + if (canteenOnlineSpuEntity.getStock() list = canteenSpuService.list(new LambdaQueryWrapper().in(CanteenSpuEntity::getId, ids)); return R.ok(list); } + + + @GetMapping("/app/checkSpuStock") + @SysLog("购物车效验库存") + @Transactional + public R checkSpuStock(@RequestParam(value ="spuId")Long spuId,@RequestParam("incrCount")Integer incrCount) { + CanteenSpuEntity canteenSpuEntity = canteenSpuService.getById(spuId); + if (canteenSpuEntity == null) { + R.failed("商品不存在"); + } + if (canteenSpuEntity.getStock() { - int i = baseMapper.updateStock(item.getId(), item.getIncrCount()); - if (item.getIncrCount() <= 0) { - if (i == 0) { - R.failed("商品库存不足"); - } + // 查询当前库存 + CanteenOnlineSpuEntity spu = baseMapper.selectById(item.getId()); + if (spu == null) { + R.failed(spu.getName()+"商品不存在"); } + // 检查库存是否足够 + if (item.getIncrCount() < 0 && Math.abs(item.getIncrCount()) > spu.getStock()) { + R.failed(spu.getName()+"库存不足,无法完成操作"); + } + int i = baseMapper.updateStock(item.getId(), item.getIncrCount()); +// if (item.getIncrCount() <= 0) { +// if (i == 0) { +// R.failed("商品库存不足"); +// } +// } }); return R.ok(); diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java index 45a8f1098..00177f504 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO; +import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; import com.bsd.pjcloud.canteen.mapper.CanteenSpuMapper; import com.bsd.pjcloud.canteen.service.CanteenDailyMenuService; @@ -39,12 +40,21 @@ public class CanteenSpuServiceImpl extends ServiceImpl { - int i = baseMapper.updateStock(item.getId(), item.getIncrCount()); - if (item.getIncrCount() <= 0) { - if (i == 0) { - R.failed("商品库存不足"); - } + // 查询当前库存 + CanteenSpuEntity spu = baseMapper.selectById(item.getId()); + if (spu == null) { + R.failed(spu.getName()+"商品不存在"); } + // 检查库存是否足够 + if (item.getIncrCount() < 0 && Math.abs(item.getIncrCount()) > spu.getStock()) { + R.failed(spu.getName()+"库存不足,无法完成操作"); + } + int i = baseMapper.updateStock(item.getId(), item.getIncrCount()); +// if (item.getIncrCount() <= 0) { +// if (i == 0) { +// R.failed("商品库存不足"); +// } +// } }); return R.ok(); }