Browse Source

01-07 退款扣金币抵扣红包 修改扣款顺序至任务免费永久

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

41
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("用户金币不足,无法抵扣红包");
}

Loading…
Cancel
Save