Browse Source

Merge remote-tracking branch 'origin/milestone-20251215-红包修改' into milestone-20251215-红包修改

milestone-20251215-红包修改
lijianlin 3 days ago
parent
commit
0db8274260
  1. 32
      src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java

32
src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java

@ -229,29 +229,29 @@ public class AuditServiceImpl implements AuditService {
throw new IllegalArgumentException("用户余额不足,无法抵扣红包");
}
ConsumeUser consumeUser = new ConsumeUser();
// 1. 先扣除免费金币
if (order.getRedDiff().compareTo(user.getNowFreeGold()) <= 0) {
// 红包差额小于等于总免费金币只扣免费金币
// 1. 先扣除任务金币
if (order.getRedDiff().compareTo(user.getNowTaskGold()) <= 0) {
// 红包差额小于等于任务金币只扣任务金币
consumeUser.setJwcode(order.getJwcode());
consumeUser.setFreeGold(order.getRedDiff());
consumeUser.setTaskGold(order.getRedDiff());
consumeUser.setFreeGold(BigDecimal.ZERO);
consumeUser.setPermanentGold(BigDecimal.ZERO);
consumeUser.setTaskGold(BigDecimal.ZERO);
} else {
// 2. 免费金币不足扣除免费+永久金币
BigDecimal remainingAfterFree = order.getRedDiff().subtract(user.getNowFreeGold());
if (remainingAfterFree.compareTo(user.getNowPermanentGold()) <= 0) {
// 2. 任务金币不足扣除任务+免费金币
BigDecimal remainingAfterTask = order.getRedDiff().subtract(user.getNowTaskGold());
if (remainingAfterTask.compareTo(user.getNowFreeGold()) <= 0) {
consumeUser.setJwcode(order.getJwcode());
consumeUser.setFreeGold(user.getNowFreeGold());
consumeUser.setPermanentGold(user.getNowPermanentGold().subtract(remainingAfterFree));
consumeUser.setTaskGold(BigDecimal.ZERO);
consumeUser.setTaskGold(user.getNowTaskGold());
consumeUser.setFreeGold(user.getNowFreeGold().subtract(remainingAfterTask));
consumeUser.setPermanentGold(BigDecimal.ZERO);
} else {
// 3. 免费+永久金币仍不足扣除全部免费+永久+部分任务金币
BigDecimal remainingAfterPermanent = remainingAfterFree.subtract(user.getNowPermanentGold());
if (remainingAfterPermanent.compareTo(user.getNowTaskGold()) <= 0) {
// 3. 任务+免费金币仍不足扣除全部任务+免费+部分永久金币
BigDecimal remainingAfterFree = remainingAfterTask.subtract(user.getNowFreeGold());
if (remainingAfterFree.compareTo(user.getNowPermanentGold()) <= 0) {
consumeUser.setJwcode(order.getJwcode());
consumeUser.setTaskGold(user.getNowTaskGold());
consumeUser.setFreeGold(user.getNowFreeGold());
consumeUser.setPermanentGold(user.getNowPermanentGold());
consumeUser.setTaskGold(user.getNowTaskGold().subtract(remainingAfterPermanent));
consumeUser.setPermanentGold(user.getNowPermanentGold().subtract(remainingAfterFree));
} else {
throw new IllegalArgumentException("用户金币不足,无法抵扣红包");
}

Loading…
Cancel
Save