From 9f59ad66c8cbb9708d1dedab144c14006ed555c1 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Sat, 10 Jan 2026 19:20:03 +0800 Subject: [PATCH] =?UTF-8?q?01-10=20=E6=9B=B4=E6=94=B9=E6=89=A3=E6=AC=BE?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/serviceImpl/coin/AuditServiceImpl.java | 36 +++++++++++----------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java index a700c0b..5dfec2f 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -222,29 +222,29 @@ public class AuditServiceImpl implements AuditService { throw new IllegalArgumentException("用户余额不足,无法抵扣红包"); } ConsumeUser consumeUser = new ConsumeUser(); - // 1. 先扣除任务金币 - if (order.getRedDiff().compareTo(userNow.getNowTaskGold().add(BigDecimal.valueOf(order.getTaskGold()))) <= 0) { - // 红包差额小于等于任务金币,只扣任务金币 + // 1. 先扣除免费金币 + if (order.getRedDiff().compareTo(userNow.getNowFreeGold().add(BigDecimal.valueOf(order.getFreeJune() + order.getFreeDecember()))) <= 0) { + // 红包差额小于等于免费金币,只扣免费金币 consumeUser.setJwcode(order.getJwcode()); - consumeUser.setTaskGold(order.getRedDiff()); - consumeUser.setFreeGold(BigDecimal.ZERO); + consumeUser.setFreeGold(order.getRedDiff()); consumeUser.setPermanentGold(BigDecimal.ZERO); + consumeUser.setTaskGold(BigDecimal.ZERO); } else { - // 2. 任务金币不足,扣除任务+免费金币 - BigDecimal remainingAfterTask = order.getRedDiff().subtract(userNow.getNowTaskGold().add(BigDecimal.valueOf(order.getTaskGold()))); - if (remainingAfterTask.compareTo(userNow.getNowFreeGold().add(BigDecimal.valueOf(order.getFreeJune()+order.getFreeDecember()))) <= 0) { + // 2. 免费金币不足,扣除免费+永久金币 + BigDecimal remainingAfterFree = order.getRedDiff().subtract(userNow.getNowFreeGold().add(BigDecimal.valueOf(order.getFreeJune() + order.getFreeDecember()))); + if (remainingAfterFree.compareTo(userNow.getNowPermanentGold().add(BigDecimal.valueOf(order.getPermanentGold()))) <= 0) { consumeUser.setJwcode(order.getJwcode()); - consumeUser.setTaskGold(userNow.getNowTaskGold().add(BigDecimal.valueOf(order.getTaskGold()))); - consumeUser.setFreeGold(remainingAfterTask); - consumeUser.setPermanentGold(BigDecimal.ZERO); + consumeUser.setFreeGold(userNow.getNowFreeGold().add(BigDecimal.valueOf(order.getFreeJune() + order.getFreeDecember()))); + consumeUser.setPermanentGold(remainingAfterFree); + consumeUser.setTaskGold(BigDecimal.ZERO); } else { - // 3. 任务+免费金币仍不足,扣除全部任务+免费+部分永久金币 - BigDecimal remainingAfterFree = remainingAfterTask.subtract(userNow.getNowFreeGold().add(BigDecimal.valueOf(order.getFreeJune()+order.getFreeDecember()))); - if (remainingAfterFree.compareTo(userNow.getNowPermanentGold().add(BigDecimal.valueOf(order.getPermanentGold()))) <= 0) { + // 3. 免费+永久金币仍不足,扣除全部免费+永久+部分任务金币 + BigDecimal remainingAfterPermanent = remainingAfterFree.subtract(userNow.getNowPermanentGold().add(BigDecimal.valueOf(order.getPermanentGold()))); + if (remainingAfterPermanent.compareTo(userNow.getNowTaskGold().add(BigDecimal.valueOf(order.getTaskGold()))) <= 0) { consumeUser.setJwcode(order.getJwcode()); - consumeUser.setTaskGold(userNow.getNowTaskGold().add(BigDecimal.valueOf(order.getTaskGold()))); - consumeUser.setFreeGold(userNow.getNowFreeGold().add(BigDecimal.valueOf(order.getFreeJune()+order.getFreeDecember()))); - consumeUser.setPermanentGold(remainingAfterFree); + consumeUser.setFreeGold(userNow.getNowFreeGold().add(BigDecimal.valueOf(order.getFreeJune() + order.getFreeDecember()))); + consumeUser.setPermanentGold(userNow.getNowPermanentGold().add(BigDecimal.valueOf(order.getPermanentGold()))); + consumeUser.setTaskGold(remainingAfterPermanent); } else { throw new IllegalArgumentException("用户金币不足,无法抵扣红包"); } @@ -259,7 +259,7 @@ public class AuditServiceImpl implements AuditService { //link扣除已有红包 redService.consumeRed(linkId); // 执行审核更新 - redMapper.update(order.getJwcode(),type,order.getPrice()); + redMapper.update(order.getJwcode(),type,order.getPrice().divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)); } //link扣除已有红包 else if (!AuditContext.getRedCheckResult().equals("old")){