|
@@ -316,16 +316,20 @@ public class WxPayServiceImpl implements WxPayService {
|
|
|
|
|
|
|
|
var rechargeConfig = rechargeConfigService.getRechargeConfigByAmount(walletDetail.getAmount());
|
|
var rechargeConfig = rechargeConfigService.getRechargeConfigByAmount(walletDetail.getAmount());
|
|
|
|
|
|
|
|
- // 更新余额
|
|
|
|
|
|
|
+ // 更新余额(赠款计入不可退优惠金额)
|
|
|
var account = accountService.getAccountByUserId(walletDetail.getUserId());
|
|
var account = accountService.getAccountByUserId(walletDetail.getUserId());
|
|
|
- accountService.lambdaUpdate().setSql("balance = balance + {0}, recharge_balance = recharge_balance + {0}, grants_balance = grants_balance + {1}", transaction.getAmount().getTotal(), rechargeConfig.getGrantsAmount())
|
|
|
|
|
|
|
+ var grantsAmount = rechargeConfig.getGrantsAmount();
|
|
|
|
|
+ accountService.lambdaUpdate().setSql("balance = balance + {0}, recharge_balance = recharge_balance + {0}, grants_balance = grants_balance + {1}, discount_amount = discount_amount + {1}", transaction.getAmount().getTotal(), grantsAmount)
|
|
|
.eq(Account::getUserId, walletDetail.getUserId()).update();
|
|
.eq(Account::getUserId, walletDetail.getUserId()).update();
|
|
|
|
|
|
|
|
walletDetail.setStatus(WalletDetail.STATUS_已确认); //已确认
|
|
walletDetail.setStatus(WalletDetail.STATUS_已确认); //已确认
|
|
|
walletDetail.setCurrency(transaction.getAmount().getCurrency());
|
|
walletDetail.setCurrency(transaction.getAmount().getCurrency());
|
|
|
walletDetail.setAmount(transaction.getAmount().getTotal());
|
|
walletDetail.setAmount(transaction.getAmount().getTotal());
|
|
|
|
|
+ walletDetail.setGrantsAmount(grantsAmount);
|
|
|
walletDetail.setBeforeBalance(account.getBalance());
|
|
walletDetail.setBeforeBalance(account.getBalance());
|
|
|
walletDetail.setAfterBalance(account.getBalance() + walletDetail.getAmount());
|
|
walletDetail.setAfterBalance(account.getBalance() + walletDetail.getAmount());
|
|
|
|
|
+ walletDetail.setBeforeGrantsBalance(account.getGrantsBalance());
|
|
|
|
|
+ walletDetail.setAfterGrantsBalance(account.getGrantsBalance() + grantsAmount);
|
|
|
walletDetail.setTransactionTime(successTime);
|
|
walletDetail.setTransactionTime(successTime);
|
|
|
walletDetailService.updateById(walletDetail);
|
|
walletDetailService.updateById(walletDetail);
|
|
|
|
|
|
|
@@ -407,8 +411,8 @@ public class WxPayServiceImpl implements WxPayService {
|
|
|
throw new BusinessException("不可退金额高于钱包余额,不支持退款");
|
|
throw new BusinessException("不可退金额高于钱包余额,不支持退款");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 将余额转移至冻结余额
|
|
|
|
|
- accountService.lambdaUpdate().setSql(" frozen_amount = (frozen_amount + balance) ,balance = 0").eq(Account::getUserId, userId).update();
|
|
|
|
|
|
|
+ // 将余额转移至冻结余额,同时清零充值余额和赠款余额
|
|
|
|
|
+ accountService.lambdaUpdate().setSql(" frozen_amount = (frozen_amount + balance), balance = 0, recharge_balance = 0, grants_balance = 0").eq(Account::getUserId, userId).update();
|
|
|
|
|
|
|
|
// 退款时,充值权益失效(权益余额转入冻结余额,权益状态设置为失效)
|
|
// 退款时,充值权益失效(权益余额转入冻结余额,权益状态设置为失效)
|
|
|
userRechargeRightsService.lambdaUpdate()
|
|
userRechargeRightsService.lambdaUpdate()
|