From 9f364db8a8ea28aa7d46a3cb1f260276c1f9e66b Mon Sep 17 00:00:00 2001 From: yyb <1416014977@qq.com> Date: Mon, 2 Feb 2026 16:02:42 +0800 Subject: [PATCH] =?UTF-8?q?update=20BigDecimal=E7=B1=BB=E5=9E=8B=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E5=8F=8A=E7=A9=BA=E5=80=BC=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../m2pool/lease/entity/LeaseOrderInfo.java | 4 ++-- .../m2pool/lease/entity/LeaseOrderItem.java | 16 ++++++++-------- .../lease/entity/LeasePayRecordMessage.java | 17 +++++++++++------ .../entity/LeasePayRecordMessageInfo.java | 8 ++++---- .../lease/entity/LeasePayWithdrawMessage.java | 4 ++-- .../lease/entity/LeasePaymentRecord.java | 4 ++-- .../m2pool/lease/entity/LeaseShopConfig.java | 4 ++-- .../m2pool/lease/entity/LeaseSystemWallet.java | 4 ++-- .../entity/LeaseSystemWalletTransaction.java | 8 ++++---- .../lease/entity/LeaseUserOwnedProduct.java | 14 +++++++------- .../lease/entity/LeaseUserWalletData.java | 4 ++-- .../impl/LeaseOrderInfoServiceImpl.java | 18 ++++++++++++------ .../com/m2pool/lease/task/OrderAndPayTask.java | 9 ++++++--- 13 files changed, 64 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/m2pool/lease/entity/LeaseOrderInfo.java b/src/main/java/com/m2pool/lease/entity/LeaseOrderInfo.java index 82f4ad7..824ce8e 100644 --- a/src/main/java/com/m2pool/lease/entity/LeaseOrderInfo.java +++ b/src/main/java/com/m2pool/lease/entity/LeaseOrderInfo.java @@ -50,7 +50,7 @@ public class LeaseOrderInfo implements Serializable { /** * 订单总价 */ - private BigDecimal totalPrice; + private BigDecimal totalPrice = BigDecimal.ZERO; /** * 订单状态,0 表示待支付,1 表示(全部)已支付,2 表示已取消 3售后状态 4已退款 5已超时 10 部分已支付 @@ -74,7 +74,7 @@ public class LeaseOrderInfo implements Serializable { /** * 手续费 */ - private BigDecimal fee; + private BigDecimal fee = BigDecimal.ZERO; /** * 店铺名称 diff --git a/src/main/java/com/m2pool/lease/entity/LeaseOrderItem.java b/src/main/java/com/m2pool/lease/entity/LeaseOrderItem.java index 117563e..1d99408 100644 --- a/src/main/java/com/m2pool/lease/entity/LeaseOrderItem.java +++ b/src/main/java/com/m2pool/lease/entity/LeaseOrderItem.java @@ -111,7 +111,7 @@ public class LeaseOrderItem implements Serializable { /** * 商品单价 */ - private BigDecimal price; + private BigDecimal price = BigDecimal.ZERO; /** * 矿机挖矿币种 nexa rxd dgbo dgbq dgbs alph enx grs mona @@ -127,17 +127,17 @@ public class LeaseOrderItem implements Serializable { /** * 单机理论算力 */ - private BigDecimal theoryPower; + private BigDecimal theoryPower = BigDecimal.ZERO; /** * 单机实际算力 */ - private BigDecimal practicalPower; + private BigDecimal practicalPower = BigDecimal.ZERO; /** * 单机理论收益 */ - private BigDecimal theoryIncome; + private BigDecimal theoryIncome = BigDecimal.ZERO; /** * 单机预估实际收益 @@ -177,17 +177,17 @@ public class LeaseOrderItem implements Serializable { /** * 已支付金额 */ - private BigDecimal alreadyPayAmount; + private BigDecimal alreadyPayAmount = BigDecimal.ZERO; /** * 已支付金额(真实) */ - private BigDecimal alreadyPayRealAmount; + private BigDecimal alreadyPayRealAmount = BigDecimal.ZERO; /** * 当日待支付确认金额 */ - private BigDecimal settlePayRealAmount; + private BigDecimal settlePayRealAmount = BigDecimal.ZERO; private Integer numbers; @@ -200,7 +200,7 @@ public class LeaseOrderItem implements Serializable { /** * 收卖家手续费率 */ - private BigDecimal feeRate; + private BigDecimal feeRate = BigDecimal.ZERO; } diff --git a/src/main/java/com/m2pool/lease/entity/LeasePayRecordMessage.java b/src/main/java/com/m2pool/lease/entity/LeasePayRecordMessage.java index 8a66af6..fbcad94 100644 --- a/src/main/java/com/m2pool/lease/entity/LeasePayRecordMessage.java +++ b/src/main/java/com/m2pool/lease/entity/LeasePayRecordMessage.java @@ -76,22 +76,22 @@ public class LeasePayRecordMessage implements Serializable { /** * 理论支付金额(根据商家定价) */ - private BigDecimal amount; + private BigDecimal amount = BigDecimal.ZERO; /** *真实支付金额 */ - private BigDecimal realAmount; + private BigDecimal realAmount = BigDecimal.ZERO; /** * 实际应支付金额(根据一天内预估算力和实际算力差值计算得来) */ - private BigDecimal needAmount; + private BigDecimal needAmount = BigDecimal.ZERO; /** * 钱包冻结金额 */ - private BigDecimal blockAmount; + private BigDecimal blockAmount = BigDecimal.ZERO; /** * 币种 */ @@ -144,13 +144,18 @@ public class LeasePayRecordMessage implements Serializable { /** * 卖家手续费比例 */ - private BigDecimal feeRate; + private BigDecimal feeRate = BigDecimal.ZERO; + /** + * 卖家手续费 + */ + private BigDecimal sellerFee = BigDecimal.ZERO; + /** * 卖家实收金额 = 店铺手续费比例 * 买家实际支付金额 */ - private BigDecimal receivedAmount; + private BigDecimal receivedAmount = BigDecimal.ZERO; @TableField(exist = false) private String sellerEmail; diff --git a/src/main/java/com/m2pool/lease/entity/LeasePayRecordMessageInfo.java b/src/main/java/com/m2pool/lease/entity/LeasePayRecordMessageInfo.java index 777302e..5a309c1 100644 --- a/src/main/java/com/m2pool/lease/entity/LeasePayRecordMessageInfo.java +++ b/src/main/java/com/m2pool/lease/entity/LeasePayRecordMessageInfo.java @@ -75,22 +75,22 @@ public class LeasePayRecordMessageInfo implements Serializable { /** * 理论支付金额(根据商家定价) */ - private BigDecimal amount; + private BigDecimal amount = BigDecimal.ZERO; /** *真实支付金额 */ - private BigDecimal realAmount; + private BigDecimal realAmount = BigDecimal.ZERO; /** * 实际应支付金额(根据一天内预估算力和实际算力差值计算得来) */ - private BigDecimal needAmount; + private BigDecimal needAmount = BigDecimal.ZERO; /** * 钱包冻结金额 */ - private BigDecimal blockAmount; + private BigDecimal blockAmount = BigDecimal.ZERO; /** * 币种 */ diff --git a/src/main/java/com/m2pool/lease/entity/LeasePayWithdrawMessage.java b/src/main/java/com/m2pool/lease/entity/LeasePayWithdrawMessage.java index d7c51ec..46f7d28 100644 --- a/src/main/java/com/m2pool/lease/entity/LeasePayWithdrawMessage.java +++ b/src/main/java/com/m2pool/lease/entity/LeasePayWithdrawMessage.java @@ -60,7 +60,7 @@ public class LeasePayWithdrawMessage implements Serializable { /** * 支付金额 */ - private BigDecimal amount; + private BigDecimal amount = BigDecimal.ZERO; /** * 交易hash @@ -70,7 +70,7 @@ public class LeasePayWithdrawMessage implements Serializable { /** * 手续费 */ - private BigDecimal serviceCharge; + private BigDecimal serviceCharge = BigDecimal.ZERO; /** * 币种 diff --git a/src/main/java/com/m2pool/lease/entity/LeasePaymentRecord.java b/src/main/java/com/m2pool/lease/entity/LeasePaymentRecord.java index daf1a5c..942586c 100644 --- a/src/main/java/com/m2pool/lease/entity/LeasePaymentRecord.java +++ b/src/main/java/com/m2pool/lease/entity/LeasePaymentRecord.java @@ -55,12 +55,12 @@ public class LeasePaymentRecord implements Serializable { /** * 支付金额 */ - private BigDecimal amount; + private BigDecimal amount = BigDecimal.ZERO; /** * 已支付金额 */ - private BigDecimal payAmount; + private BigDecimal payAmount = BigDecimal.ZERO; /** * 支付状态0支付失败 1支付成功--全部货款已支付 2待支付 5支付已超时 10支付成功--已支付部分货款 diff --git a/src/main/java/com/m2pool/lease/entity/LeaseShopConfig.java b/src/main/java/com/m2pool/lease/entity/LeaseShopConfig.java index e7964d6..a0e1c7c 100644 --- a/src/main/java/com/m2pool/lease/entity/LeaseShopConfig.java +++ b/src/main/java/com/m2pool/lease/entity/LeaseShopConfig.java @@ -75,7 +75,7 @@ public class LeaseShopConfig implements Serializable { /** * 余额(这个余额是租赁系统的收款余额,而不是卖家钱包真实余额,该余额只能用于提现) */ - private BigDecimal balance; + private BigDecimal balance = BigDecimal.ZERO; /** * 创建时间 @@ -93,6 +93,6 @@ public class LeaseShopConfig implements Serializable { private Boolean del; @TableField(exist = false) - private BigDecimal price; + private BigDecimal price = BigDecimal.ZERO; } diff --git a/src/main/java/com/m2pool/lease/entity/LeaseSystemWallet.java b/src/main/java/com/m2pool/lease/entity/LeaseSystemWallet.java index 84c836b..d786e20 100644 --- a/src/main/java/com/m2pool/lease/entity/LeaseSystemWallet.java +++ b/src/main/java/com/m2pool/lease/entity/LeaseSystemWallet.java @@ -47,12 +47,12 @@ public class LeaseSystemWallet implements Serializable { /** * 余额 */ - private BigDecimal balance; + private BigDecimal balance = BigDecimal.ZERO; /** * 冻结余额 */ - private BigDecimal blcokBalance; + private BigDecimal blcokBalance = BigDecimal.ZERO; /** * 链名称 diff --git a/src/main/java/com/m2pool/lease/entity/LeaseSystemWalletTransaction.java b/src/main/java/com/m2pool/lease/entity/LeaseSystemWalletTransaction.java index 29f6082..6d788bd 100644 --- a/src/main/java/com/m2pool/lease/entity/LeaseSystemWalletTransaction.java +++ b/src/main/java/com/m2pool/lease/entity/LeaseSystemWalletTransaction.java @@ -72,22 +72,22 @@ public class LeaseSystemWalletTransaction implements Serializable { /** * 卖方--手续费率 */ - private BigDecimal feeRate; + private BigDecimal feeRate = BigDecimal.ZERO; /** * 卖方--收款金额(未扣手续费) */ - private BigDecimal amount; + private BigDecimal amount = BigDecimal.ZERO; /** * 卖方--实收金额(已扣手续费) */ - private BigDecimal receivedAmount; + private BigDecimal receivedAmount = BigDecimal.ZERO; /** * 卖方--手续费 */ - private BigDecimal fee; + private BigDecimal fee = BigDecimal.ZERO; /** * 币种名称 diff --git a/src/main/java/com/m2pool/lease/entity/LeaseUserOwnedProduct.java b/src/main/java/com/m2pool/lease/entity/LeaseUserOwnedProduct.java index 853aac5..52c4940 100644 --- a/src/main/java/com/m2pool/lease/entity/LeaseUserOwnedProduct.java +++ b/src/main/java/com/m2pool/lease/entity/LeaseUserOwnedProduct.java @@ -80,34 +80,34 @@ public class LeaseUserOwnedProduct implements Serializable { /** * 购买算力的量,当 type 为 1 时有效 */ - private BigDecimal purchasedComputingPower; + private BigDecimal purchasedComputingPower = BigDecimal.ZERO; /** * 预估商品结束时的总收益 单位币种 */ - private BigDecimal estimatedEndIncome; + private BigDecimal estimatedEndIncome = BigDecimal.ZERO; /** * 预估商品结束时的总收益 单位usdt */ - private BigDecimal estimatedEndUsdtIncome; + private BigDecimal estimatedEndUsdtIncome = BigDecimal.ZERO; /** * 当前收益(根据购买机器到现在的平均算力计算得到) 单位币种 */ - private BigDecimal currentIncome; + private BigDecimal currentIncome = BigDecimal.ZERO; /** * 当前收益(根据购买机器到现在的平均算力计算得到)单位usdt */ - private BigDecimal currentUsdtIncome; + private BigDecimal currentUsdtIncome = BigDecimal.ZERO; - private BigDecimal settleIncome ; + private BigDecimal settleIncome = BigDecimal.ZERO; - private BigDecimal settleUsdtIncome ; + private BigDecimal settleUsdtIncome = BigDecimal.ZERO; /** * 商品状态,0 表示运行中,1 表示已过期 diff --git a/src/main/java/com/m2pool/lease/entity/LeaseUserWalletData.java b/src/main/java/com/m2pool/lease/entity/LeaseUserWalletData.java index ffd4d17..0dde078 100644 --- a/src/main/java/com/m2pool/lease/entity/LeaseUserWalletData.java +++ b/src/main/java/com/m2pool/lease/entity/LeaseUserWalletData.java @@ -83,12 +83,12 @@ public class LeaseUserWalletData implements Serializable { /** * 余额 */ - private BigDecimal balance; + private BigDecimal balance = BigDecimal.ZERO; /** * 冻结余额(用户购买机器完成租约所需金额) */ - private BigDecimal blockedBalance; + private BigDecimal blockedBalance = BigDecimal.ZERO; /** * 支付地址二维码 diff --git a/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java b/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java index ccfc651..52662c6 100644 --- a/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java +++ b/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java @@ -283,8 +283,14 @@ public class LeaseOrderInfoServiceImpl extends ServiceImpl { List leaseOrderInfos = collect.get(chainAndCoinKey); - BigDecimal totalAmount = leaseOrderInfos.stream().map(LeaseOrderInfo::getTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal totalFee = leaseOrderInfos.stream().map(LeaseOrderInfo::getFee).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal totalAmount = leaseOrderInfos.stream() + .map(LeaseOrderInfo::getTotalPrice) + .map(price -> price != null ? price : BigDecimal.ZERO) + .reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal totalFee = leaseOrderInfos.stream() + .map(LeaseOrderInfo::getFee) + .map(fee -> fee != null ? fee : BigDecimal.ZERO) + .reduce(BigDecimal.ZERO, BigDecimal::add); if (leaseUserWalletData.getBalance().subtract(leaseUserWalletData.getBlockedBalance()).compareTo(totalAmount.add(totalFee)) < 0){ BigDecimal lackAmount = totalAmount.add(totalFee) @@ -582,10 +588,10 @@ public class LeaseOrderInfoServiceImpl extends ServiceImpl list = new ArrayList<>(); for (LeaseOrderItem leaseOrderItem : leaseOrderItems) { - BigDecimal theoryPower = leaseOrderItem.getTheoryPower(); - BigDecimal practicalPower = leaseOrderItem.getPracticalPower(); - BigDecimal powerRatio = practicalPower.divide(theoryPower, 4, RoundingMode.HALF_UP); - BigDecimal alreadyPayRealAmount = leaseOrderItem.getAlreadyPayRealAmount(); + BigDecimal theoryPower = leaseOrderItem.getTheoryPower() != null ? leaseOrderItem.getTheoryPower() : BigDecimal.ZERO; + BigDecimal practicalPower = leaseOrderItem.getPracticalPower() != null ? leaseOrderItem.getPracticalPower() : BigDecimal.ZERO; + BigDecimal powerRatio = theoryPower.compareTo(BigDecimal.ZERO) > 0 ? practicalPower.divide(theoryPower, 4, RoundingMode.HALF_UP) : BigDecimal.ZERO; + BigDecimal alreadyPayRealAmount = leaseOrderItem.getAlreadyPayRealAmount() != null ? leaseOrderItem.getAlreadyPayRealAmount() : BigDecimal.ZERO; orderInfoDto.setTotalTheoryPower(orderInfoDto.getTotalTheoryPower().add(theoryPower)); orderInfoDto.setTotalPracticalPower(orderInfoDto.getTotalPracticalPower().add(practicalPower)); diff --git a/src/main/java/com/m2pool/lease/task/OrderAndPayTask.java b/src/main/java/com/m2pool/lease/task/OrderAndPayTask.java index 18353ae..d426916 100644 --- a/src/main/java/com/m2pool/lease/task/OrderAndPayTask.java +++ b/src/main/java/com/m2pool/lease/task/OrderAndPayTask.java @@ -963,8 +963,10 @@ public class OrderAndPayTask { LeasePayRecordMessage record = recordMap.get(key); if (record != null) { // 修改钱包的余额和冻结余额 - wallet.setBalance(wallet.getBalance().subtract(record.getRealAmount())); - wallet.setBlockedBalance(wallet.getBlockedBalance().subtract(record.getBlockAmount())); + BigDecimal realAmount = record.getRealAmount() != null ? record.getRealAmount() : BigDecimal.ZERO; + BigDecimal blockAmount = record.getBlockAmount() != null ? record.getBlockAmount() : BigDecimal.ZERO; + wallet.setBalance(wallet.getBalance().subtract(realAmount)); + wallet.setBlockedBalance(wallet.getBlockedBalance().subtract(blockAmount)); } } @@ -990,7 +992,8 @@ public class OrderAndPayTask { LeasePayRecordMessage record = recordMap.get(key); if (record != null) { // 修改钱包的余额 - wallet.setBalance(wallet.getBalance().add(record.getReceivedAmount())); + BigDecimal receivedAmount = record.getReceivedAmount() != null ? record.getReceivedAmount() : BigDecimal.ZERO; + wallet.setBalance(wallet.getBalance().add(receivedAmount)); } }