From 528d3d8cacc28eccca68a7194f64e451b7ef7d3b Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 01 七月 2024 17:43:31 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/DolphinEnglish --- ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java | 91 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 80 insertions(+), 11 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 04491b7..41348e6 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 @@ -108,20 +108,28 @@ // 检查库存总数是否足够 List<TOrder> order = orderService.lambdaQuery().eq(TOrder::getGoodsId, goodId) .eq(TOrder::getDisabled, 0).list(); + int item; if (!order.isEmpty()) { - int totalNumber = order.stream().map(TOrder::getCount).collect(Collectors.toList()) + item = order.stream().map(TOrder::getCount).collect(Collectors.toList()) .stream().mapToInt(Integer::intValue).sum(); - boolean canBuy = good.getTotal() - totalNumber >= number; - if (!canBuy) { - throw new GlobalException("商品库存不足,兑换失败!"); - } + } else { + item = 0; + } + boolean canBuy = good.getTotal() - item >= number; + if (!canBuy) { + throw new GlobalException("商品库存不足,兑换失败!"); } // 检查用户兑换数量是否超过单用户最大兑换数量 List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getUserId, user.getId()) .eq(TOrder::getGoodsId, goodId).list(); - // 该商品订单为空、订单数量未超过商品的单个用户兑换上限数量时,可以进行兑换 - int totalNumber = orderList.stream().map(TOrder::getCount).collect(Collectors.toList()) - .stream().mapToInt(Integer::intValue).sum(); + int totalNumber; + if (orderList.isEmpty()) { + totalNumber = 0; + } else { + // 该商品订单为空、订单数量未超过商品的单个用户兑换上限数量时,可以进行兑换 + 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(); if (!canExchange) { @@ -146,6 +154,27 @@ return R.exchangeError("商品兑换失败!"); } } else { + if (null != good.getUserCount()) { + // 检查用户兑换数量是否超过单用户最大兑换数量 + List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getUserId, user.getId()) + .eq(TOrder::getGoodsId, goodId).list(); + int totalNumber; + if (orderList.isEmpty()) { + totalNumber = 0; + } else { + // 该商品订单为空、订单数量未超过商品的单个用户兑换上限数量时,可以进行兑换 + totalNumber = orderList.stream().map(TOrder::getCount).collect(Collectors.toList()) + .stream().mapToInt(Integer::intValue).sum(); + } + Integer userCount = good.getUserCount(); + if (good.getUserCount() > totalNumber) { + int i = userCount - totalNumber; + if (number > i) { + return R.exchangeError("兑换失败,当前兑换数量已超过最大兑换数量,剩余兑换数量为: " + + i + "!"); + } + } + } boolean result = exchangeGood(goodExchange, recipient, number, goodId, needIntegral); if (!result) { return R.exchangeError("商品兑换失败!"); @@ -205,12 +234,31 @@ return R.exchangeError("兑换失败,当前剩余积分不足!"); } if (null != good.getTotal()) { + // 检查库存总数是否足够 + List<TOrder> order = orderService.lambdaQuery().eq(TOrder::getGoodsId, goodId) + .eq(TOrder::getDisabled, 0).list(); + int item; + if (!order.isEmpty()) { + item = order.stream().map(TOrder::getCount).collect(Collectors.toList()) + .stream().mapToInt(Integer::intValue).sum(); + } else { + item = 0; + } + boolean canBuy = good.getTotal() - item >= number; + if (!canBuy) { + throw new GlobalException("商品库存不足,兑换失败!"); + } // 检查用户兑换数量是否超过单用户最大兑换数量 List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getUserId, user.getId()) .eq(TOrder::getGoodsId, goodId).list(); - // 该商品订单为空、订单数量未超过商品的单个用户兑换上限数量时,可以进行兑换 - int totalNumber = orderList.stream().map(TOrder::getCount).collect(Collectors.toList()) - .stream().mapToInt(Integer::intValue).sum(); + int totalNumber; + if (orderList.isEmpty()) { + totalNumber = 0; + } else { + // 该商品订单为空、订单数量未超过商品的单个用户兑换上限数量时,可以进行兑换 + 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(); if (!canExchange) { @@ -238,6 +286,27 @@ return R.exchangeError("商品兑换失败!"); } } else { + if (null != good.getUserCount()) { + // 检查用户兑换数量是否超过单用户最大兑换数量 + List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getUserId, user.getId()) + .eq(TOrder::getGoodsId, goodId).list(); + int totalNumber; + if (orderList.isEmpty()) { + totalNumber = 0; + } else { + // 该商品订单为空、订单数量未超过商品的单个用户兑换上限数量时,可以进行兑换 + totalNumber = orderList.stream().map(TOrder::getCount).collect(Collectors.toList()) + .stream().mapToInt(Integer::intValue).sum(); + } + Integer userCount = good.getUserCount(); + if (good.getUserCount() > totalNumber) { + int i = userCount - totalNumber; + if (number > i) { + return R.exchangeError("兑换失败,当前兑换数量已超过最大兑换数量,剩余兑换数量为: " + + i + "!"); + } + } + } boolean result = exchangeGoodParent(goodExchange, recipient, number, goodId, needIntegral); if (!result) { return R.exchangeError("商品兑换失败!"); -- Gitblit v1.7.1