update 计算解冻金额逻辑

This commit is contained in:
2023-08-31 19:42:40 +08:00
parent efb64a6a6b
commit acb60adf39

View File

@@ -83,11 +83,22 @@ public class MemberAdapayRecordServiceImpl implements MemberAdapayRecordService
/**
* 更新消费金额
* 用来累计消费金额
*/
@Override
public void updateSpendAmount(String paymentId, BigDecimal spendAmount) {
log.info("更新消费金额, paymentId:{}, 消费金额:{}", paymentId, spendAmount);
commonUpdateAmountMethod(paymentId, spendAmount, null, null);
MemberAdapayRecord record = selectByPaymentId(paymentId);
if (record == null) {
log.info("更新交易记录的消费金额和退款金额paymentId:{}, 查询为空", paymentId);
return;
}
// 更新消费金额 = 累计消费的金额 - 本次消费的金额
record.setSpendAmt(record.getSpendAmt().add(spendAmount));
// 更新此笔交易单的剩余金额 = 支付金额 - 累计退款金额 - 累计消费金额 - 累计冻结金额
BigDecimal balanceAmt = record.getPayAmt().subtract(record.getRefundAmt()).subtract(record.getSpendAmt()).subtract(record.getFreezeAmt());
record.setBalanceAmt(balanceAmt);
updateByPrimaryKeySelective(record);
}
/**
@@ -96,7 +107,6 @@ public class MemberAdapayRecordServiceImpl implements MemberAdapayRecordService
@Override
public void unfreezeAmount(String paymentId, BigDecimal unfreezeAmount) {
log.info("解冻金额, paymentId:{}, 解冻金额:{}", paymentId, unfreezeAmount);
// commonUpdateAmountMethod(paymentId, null, null, unfreezeAmount.negate());
MemberAdapayRecord record = selectByPaymentId(paymentId);
if (record == null) {
log.info("更新交易记录的消费金额和退款金额paymentId:{}, 查询为空", paymentId);
@@ -118,7 +128,19 @@ public class MemberAdapayRecordServiceImpl implements MemberAdapayRecordService
@Override
public void unfreezeAmountAndUpdateSpendAmount(String paymentId, BigDecimal unfreezeAmount, BigDecimal spendAmount) {
log.info("解冻金额并更新消费金额, paymentId:{}, 解冻金额:{}, 消费金额:{}", paymentId, unfreezeAmount, spendAmount);
commonUpdateAmountMethod(paymentId, spendAmount, null, unfreezeAmount.negate());
MemberAdapayRecord record = selectByPaymentId(paymentId);
if (record == null) {
log.info("更新交易记录的消费金额和退款金额paymentId:{}, 查询为空", paymentId);
return;
}
// 更新解冻金额 = 目前冻结的金额 - 需要解冻的金额
record.setFreezeAmt(record.getFreezeAmt().subtract(unfreezeAmount));
// 更新消费金额 = 累计消费的金额 - 本次消费的金额
record.setSpendAmt(record.getSpendAmt().add(spendAmount));
// 更新此笔交易单的剩余金额 = 支付金额 - 累计退款金额 - 累计消费金额 - 累计冻结金额
BigDecimal balanceAmt = record.getPayAmt().subtract(record.getRefundAmt()).subtract(record.getSpendAmt()).subtract(record.getFreezeAmt());
record.setBalanceAmt(balanceAmt);
updateByPrimaryKeySelective(record);
}
/**
@@ -128,16 +150,39 @@ public class MemberAdapayRecordServiceImpl implements MemberAdapayRecordService
@Override
public void updateRefundAmountFromFreezeAmount(String paymentId, BigDecimal refundAmount) {
log.info("部分解冻,并退款, paymentId:{}, 退款金额:{}", paymentId, refundAmount);
commonUpdateAmountMethod(paymentId, null, refundAmount, refundAmount.negate());
// commonUpdateAmountMethod(paymentId, null, refundAmount, refundAmount.negate());
MemberAdapayRecord record = selectByPaymentId(paymentId);
if (record == null) {
log.info("更新交易记录的消费金额和退款金额paymentId:{}, 查询为空", paymentId);
return;
}
// 更新冻结金额 = 目前冻结的金额 - 需要解冻的金额
record.setFreezeAmt(record.getFreezeAmt().subtract(refundAmount));
// 更新消费金额 = 累计消费的金额 - 本次消费的金额
record.setRefundAmt(record.getRefundAmt().add(refundAmount));
// 更新此笔交易单的剩余金额 = 支付金额 - 累计退款金额 - 累计消费金额 - 累计冻结金额
BigDecimal balanceAmt = record.getPayAmt().subtract(record.getRefundAmt()).subtract(record.getSpendAmt()).subtract(record.getFreezeAmt());
record.setBalanceAmt(balanceAmt);
updateByPrimaryKeySelective(record);
}
/**
* 更新剩余金额
* 更新退款金额
*/
@Override
public void updateRefundAmount(String paymentId, BigDecimal refundAmount) {
log.info("更新剩余金额, paymentId:{}, 退款金额:{}", paymentId, refundAmount);
commonUpdateAmountMethod(paymentId, null, refundAmount, null);
MemberAdapayRecord record = selectByPaymentId(paymentId);
if (record == null) {
log.info("更新交易记录的消费金额和退款金额paymentId:{}, 查询为空", paymentId);
return;
}
// 更新消费金额 = 累计消费的金额 - 本次消费的金额
record.setRefundAmt(record.getRefundAmt().add(refundAmount));
// 更新此笔交易单的剩余金额 = 支付金额 - 累计退款金额 - 累计消费金额 - 累计冻结金额
BigDecimal balanceAmt = record.getPayAmt().subtract(record.getRefundAmt()).subtract(record.getSpendAmt()).subtract(record.getFreezeAmt());
record.setBalanceAmt(balanceAmt);
updateByPrimaryKeySelective(record);
}
/**
@@ -146,7 +191,17 @@ public class MemberAdapayRecordServiceImpl implements MemberAdapayRecordService
@Override
public void updateFreezeAmount(String paymentId, BigDecimal freezeAmount) {
log.info("更新冻结金额, paymentId:{}, 冻结金额:{}", paymentId, freezeAmount);
commonUpdateAmountMethod(paymentId, null, null, freezeAmount);
MemberAdapayRecord record = selectByPaymentId(paymentId);
if (record == null) {
log.info("更新交易记录的消费金额和退款金额paymentId:{}, 查询为空", paymentId);
return;
}
// 更新冻结金额 = 目前冻结的金额 - 需要解冻的金额
record.setFreezeAmt(record.getFreezeAmt().subtract(freezeAmount));
// 更新此笔交易单的剩余金额 = 支付金额 - 累计退款金额 - 累计消费金额 - 累计冻结金额
BigDecimal balanceAmt = record.getPayAmt().subtract(record.getRefundAmt()).subtract(record.getSpendAmt()).subtract(record.getFreezeAmt());
record.setBalanceAmt(balanceAmt);
updateByPrimaryKeySelective(record);
}
/**