From f138375f15c072d10335c20ecec9b35f1da78ee4 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 03 七月 2024 16:17:59 +0800 Subject: [PATCH] bug修改 --- ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java | 36 ++++++++++++++++++++++++++++++------ 1 files changed, 30 insertions(+), 6 deletions(-) diff --git a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java index 41348e6..87a6610 100644 --- a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java +++ b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java @@ -66,7 +66,8 @@ if (null != goods.getTotal()) { // 库存预热,redisson分布式锁 String key = String.format(RedisConstants.GOOD_STOCK, goods.getId()); - List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getGoodsId, goodId) + List<TOrder> orderList = orderService.lambdaQuery() + .eq(TOrder::getGoodsId, goodId) .eq(TOrder::getDisabled, 0).list(); int sum = 0; if (!orderList.isEmpty()) { @@ -88,6 +89,7 @@ @Override @Transactional(rollbackFor = Exception.class) public R<String> goodExchange(GoodExchangeDTO goodExchange, Recipient recipient) { + // 用户本次兑换数量 Integer number = goodExchange.getNumber(); Integer goodId = goodExchange.getGoodId(); TGoods good = lambdaQuery().eq(TGoods::getId, goodId).one(); @@ -122,6 +124,7 @@ // 检查用户兑换数量是否超过单用户最大兑换数量 List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getUserId, user.getId()) .eq(TOrder::getGoodsId, goodId).list(); + // 用户已兑换数量 int totalNumber; if (orderList.isEmpty()) { totalNumber = 0; @@ -130,8 +133,14 @@ totalNumber = orderList.stream().map(TOrder::getCount).collect(Collectors.toList()) .stream().mapToInt(Integer::intValue).sum(); } - boolean canExchange = orderList.isEmpty() || null == good.getUserCount() || - (totalNumber + number) <= good.getUserCount(); + boolean canExchange = true; + if (null != good.getUserCount()) { + if (number > good.getUserCount()) { + canExchange = false; + } else { + canExchange = (totalNumber + number) <= good.getUserCount(); + } + } if (!canExchange) { return R.exchangeError("兑换失败,当前兑换数量已超过最大兑换数量,剩余兑换数量为: " + (good.getUserCount() - totalNumber) + "!"); @@ -167,12 +176,14 @@ .stream().mapToInt(Integer::intValue).sum(); } Integer userCount = good.getUserCount(); - if (good.getUserCount() > totalNumber) { + if (userCount > totalNumber) { int i = userCount - totalNumber; if (number > i) { return R.exchangeError("兑换失败,当前兑换数量已超过最大兑换数量,剩余兑换数量为: " + i + "!"); } + } else { + return R.exchangeError("兑换失败,当前兑换数量已超过最大兑换数量!"); } } boolean result = exchangeGood(goodExchange, recipient, number, goodId, needIntegral); @@ -259,8 +270,14 @@ totalNumber = orderList.stream().map(TOrder::getCount).collect(Collectors.toList()) .stream().mapToInt(Integer::intValue).sum(); } - boolean canExchange = orderList.isEmpty() || null == good.getUserCount() || - (totalNumber + number) <= good.getUserCount(); + boolean canExchange = true; + if (null != good.getUserCount()) { + if (number > good.getUserCount()) { + canExchange = false; + } else { + canExchange = (totalNumber + number) <= good.getUserCount(); + } + } if (!canExchange) { return R.exchangeError("兑换失败,当前兑换数量已超过最大兑换数量,剩余兑换数量为: " + (good.getUserCount() - totalNumber) + "!"); @@ -305,6 +322,8 @@ return R.exchangeError("兑换失败,当前兑换数量已超过最大兑换数量,剩余兑换数量为: " + i + "!"); } + } else { + return R.exchangeError("兑换失败,当前兑换数量已超过最大兑换数量!"); } } boolean result = exchangeGoodParent(goodExchange, recipient, number, goodId, needIntegral); @@ -315,6 +334,11 @@ return R.ok(); } + @Override + public void updateOne(TGoods dto) { + this.baseMapper.updateOne(dto); + } + private TOrder orderInfo(GoodExchangeDTO goodExchange, Recipient recipient, Integer number, Integer goodId, int needIntegral) { TOrder order = new TOrder(); order.setOrderNumber(goodExchange.getOrderNumber()); -- Gitblit v1.7.1