From 6ff543612835547601550214b81a0e8db37f18c4 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Wed, 10 Dec 2025 15:27:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=AE=A2=E7=AB=8B=E5=87=8F=20?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...kShopConsumeDiscountRecordServiceImpl.java | 76 +++++++++++-------- 1 file changed, 45 insertions(+), 31 deletions(-) diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopConsumeDiscountRecordServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopConsumeDiscountRecordServiceImpl.java index 8a409310c..af88c754d 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopConsumeDiscountRecordServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopConsumeDiscountRecordServiceImpl.java @@ -65,7 +65,7 @@ public class MkShopConsumeDiscountRecordServiceImpl extends ServiceImpl randomList = consumeDiscountVO.getRandomDiscountList(); - if ("RANDOM".equals(consumeDiscountVO.getDiscountType()) && (randomList == null || randomList.isEmpty()) ){ + if ("RANDOM".equals(consumeDiscountVO.getDiscountType()) && (randomList == null || randomList.isEmpty())) { throw new CzgException("随机立减配置错误"); } ShopUser shopUser = shopUserService.getShopUserInfo(shopId, userId); @@ -84,8 +84,8 @@ public class MkShopConsumeDiscountRecordServiceImpl extends ServiceImpl randomList = consumeDiscountVO.getRandomDiscountList(); - if (randomList == null || randomList.isEmpty()) { - throw new CzgException("随机立减配置错误"); - } - - // 生成 1~100 的随机数 - int rand = new Random().nextInt(100) + 1; - int current = 0; - - for (MkConsumeDiscountRandom item : randomList) { - int prob = item.getProbability().intValue(); - current += prob; - if (rand <= current) { - shopConsumeDiscountRecord.setAmount(item.getAmount()); - save(shopConsumeDiscountRecord); - return shopConsumeDiscountRecord; - } - } - - throw new CzgException("随机立减计算失败"); + shopConsumeDiscountRecord.setAmount(deductionAmount); + save(shopConsumeDiscountRecord); + return shopConsumeDiscountRecord; } catch (Exception e) { log.info(e.getMessage()); return null; } } + + private BigDecimal deductionAmount(MkConsumeDiscountVO consumeDiscountVO) { + // 固定金额 + if (TableValueConstant.ConsumeDiscount.DiscountType.FIXED.getCode().equals(consumeDiscountVO.getDiscountType())) { + return consumeDiscountVO.getDiscountAmount(); + } + + // 随机金额(概率加起来是100) + List randomList = consumeDiscountVO.getRandomDiscountList(); + if (randomList == null || randomList.isEmpty()) { + throw new CzgException("随机立减配置错误"); + } + + // 生成 1~100 的随机数 + int rand = new Random().nextInt(100) + 1; + int current = 0; + + for (MkConsumeDiscountRandom item : randomList) { + int prob = item.getProbability().intValue(); + current += prob; + if (rand <= current) { + return item.getAmount(); + } + } + return BigDecimal.ZERO; + } }