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 0b1d58a..6ebea1f 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -149,7 +149,14 @@ public class AuditServiceImpl implements AuditService { }else if (order.getType()==2) { //退款 //对非强制退款订单进行退红包校验 - if (order.getAuditStatus()!=4&&price!= null&&linkId!= null){ + if (price== null&&linkId== null) + { + String logMsg="旧版订单暂不支持退款,请联系工作人员进行操作"; + log.error(logMsg); + AuditContext.setFailMsg(logMsg); + return false; + } + if (order.getAuditStatus()!=4){ try { redService.checkRed(price, linkId); } catch (RedCheckException e) { @@ -222,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("用户金币不足,无法抵扣红包"); }