feat: add usdt freight deduction amount
This commit is contained in:
parent
4940e612b5
commit
bb83f2026b
@ -163,15 +163,21 @@ public class UserFreightBalanceServiceImpl implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deduction(UserFreightBalanceCmd param) {
|
public void deduction(UserFreightBalanceCmd param) {
|
||||||
// 余额不足
|
// 扣款金币允许为0,表示本次只登记USDT扣款;负数会导致余额反向增加,必须拦截。
|
||||||
ResponseAssert.isTrue(WalletErrorCode.REQUIRED_GT_ZERO,
|
ResponseAssert.isTrue(WalletErrorCode.REQUIRED_GT_ZERO,
|
||||||
ArithmeticUtils.gte(param.getEarnPoints(), BigDecimal.ZERO));
|
ArithmeticUtils.gte(param.getEarnPoints(), BigDecimal.ZERO));
|
||||||
|
|
||||||
// 操作失败
|
// USDT扣款复用进货的amount字段,必须大于0,否则会产生没有金额意义的扣款流水。
|
||||||
ResponseAssert.isTrue(CommonErrorCode.OPERATING_FAILURE,
|
ResponseAssert.isTrue(WalletErrorCode.REQUIRED_GT_ZERO,
|
||||||
decrCandyBalance(param.getSysOrigin(), param.getUserId(), param.getEarnPoints()));
|
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());
|
BigDecimal balance = getAvailableBalance(param.getUserId());
|
||||||
ResponseAssert.requiredSuccess(
|
ResponseAssert.requiredSuccess(
|
||||||
freightGoldClient.addRunningWater(new AddFreightBalanceRunningWaterCmd()
|
freightGoldClient.addRunningWater(new AddFreightBalanceRunningWaterCmd()
|
||||||
@ -182,13 +188,16 @@ public class UserFreightBalanceServiceImpl implements
|
|||||||
.setQuantity(param.getEarnPoints())
|
.setQuantity(param.getEarnPoints())
|
||||||
.setBalance(balance)
|
.setBalance(balance)
|
||||||
.setUsdQuantity(BigDecimal.ZERO)
|
.setUsdQuantity(BigDecimal.ZERO)
|
||||||
|
.setAmount(param.getAmount())
|
||||||
.setOrigin(FreightBalanceOrigin.DEDUCTION.name())
|
.setOrigin(FreightBalanceOrigin.DEDUCTION.name())
|
||||||
.setRemark(param.getRemark())
|
.setRemark(param.getRemark())
|
||||||
.setCreateUser(param.getOperationUser())
|
.setCreateUser(param.getOperationUser())
|
||||||
.setUpdateUser(param.getOperationUser())));
|
.setUpdateUser(param.getOperationUser())));
|
||||||
|
|
||||||
//余额如果少于1250则收回徽章
|
// 实际扣减金币后才需要重新判断金币余额阈值;USDT-only扣款不改变余额。
|
||||||
removeFreightShipBadge(param.getUserId(), balance);
|
if (param.getEarnPoints().compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
removeFreightShipBadge(param.getUserId(), balance);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -65,6 +65,11 @@ public class UserFreightBalanceRunningWaterCO implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal balance;
|
private BigDecimal balance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* USDT金额.
|
||||||
|
*/
|
||||||
|
private BigDecimal amount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 来源.
|
* 来源.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user