feat: add usdt freight deduction amount

This commit is contained in:
zhx 2026-07-06 11:26:02 +08:00
parent 4940e612b5
commit bb83f2026b
2 changed files with 21 additions and 7 deletions

View File

@ -163,15 +163,21 @@ public class UserFreightBalanceServiceImpl implements
@Override
public void deduction(UserFreightBalanceCmd param) {
// 余额不足
// 扣款金币允许为0表示本次只登记USDT扣款负数会导致余额反向增加必须拦截
ResponseAssert.isTrue(WalletErrorCode.REQUIRED_GT_ZERO,
ArithmeticUtils.gte(param.getEarnPoints(), BigDecimal.ZERO));
// 操作失败
ResponseAssert.isTrue(CommonErrorCode.OPERATING_FAILURE,
decrCandyBalance(param.getSysOrigin(), param.getUserId(), param.getEarnPoints()));
// USDT扣款复用进货的amount字段必须大于0否则会产生没有金额意义的扣款流水
ResponseAssert.isTrue(WalletErrorCode.REQUIRED_GT_ZERO,
Objects.nonNull(param.getAmount()) && param.getAmount().compareTo(BigDecimal.ZERO) > 0);
// 插入流水
// 只有金币数量大于0时才真正扣减货运金币余额金币为0时保留原余额只记录USDT扣款流水
if (param.getEarnPoints().compareTo(BigDecimal.ZERO) > 0) {
ResponseAssert.isTrue(CommonErrorCode.OPERATING_FAILURE,
decrCandyBalance(param.getSysOrigin(), param.getUserId(), param.getEarnPoints()));
}
// 扣款流水同时记录金币数量和USDT金额amount用于后台列表导出和后续对账
BigDecimal balance = getAvailableBalance(param.getUserId());
ResponseAssert.requiredSuccess(
freightGoldClient.addRunningWater(new AddFreightBalanceRunningWaterCmd()
@ -182,13 +188,16 @@ public class UserFreightBalanceServiceImpl implements
.setQuantity(param.getEarnPoints())
.setBalance(balance)
.setUsdQuantity(BigDecimal.ZERO)
.setAmount(param.getAmount())
.setOrigin(FreightBalanceOrigin.DEDUCTION.name())
.setRemark(param.getRemark())
.setCreateUser(param.getOperationUser())
.setUpdateUser(param.getOperationUser())));
//余额如果少于1250则收回徽章
removeFreightShipBadge(param.getUserId(), balance);
// 实际扣减金币后才需要重新判断金币余额阈值USDT-only扣款不改变余额
if (param.getEarnPoints().compareTo(BigDecimal.ZERO) > 0) {
removeFreightShipBadge(param.getUserId(), balance);
}
}

View File

@ -65,6 +65,11 @@ public class UserFreightBalanceRunningWaterCO implements Serializable {
*/
private BigDecimal balance;
/**
* USDT金额.
*/
private BigDecimal amount;
/**
* 来源.
*/