|
|
|
@ -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) { |
|
|
|
consumeUser.setJwcode(order.getJwcode()); |
|
|
|
consumeUser.setTaskGold(userNow.getNowTaskGold().add(BigDecimal.valueOf(order.getTaskGold()))); |
|
|
|
consumeUser.setFreeGold(remainingAfterTask); |
|
|
|
consumeUser.setPermanentGold(BigDecimal.ZERO); |
|
|
|
} else { |
|
|
|
// 3. 任务+免费金币仍不足,扣除全部任务+免费+部分永久金币 |
|
|
|
BigDecimal remainingAfterFree = remainingAfterTask.subtract(userNow.getNowFreeGold().add(BigDecimal.valueOf(order.getFreeJune()+order.getFreeDecember()))); |
|
|
|
// 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(userNow.getNowFreeGold().add(BigDecimal.valueOf(order.getFreeJune()+order.getFreeDecember()))); |
|
|
|
consumeUser.setFreeGold(userNow.getNowFreeGold().add(BigDecimal.valueOf(order.getFreeJune() + order.getFreeDecember()))); |
|
|
|
consumeUser.setPermanentGold(remainingAfterFree); |
|
|
|
consumeUser.setTaskGold(BigDecimal.ZERO); |
|
|
|
} else { |
|
|
|
// 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.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")){ |
|
|
|
|