From e948cdefbca63726cd372511beb745467c5dd343 Mon Sep 17 00:00:00 2001 From: sangelxiu1 <15781802@163.com> Date: Mon, 7 Jul 2025 15:35:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?##=20Opt=20-=20=E5=88=86=E8=B4=A6=E4=B8=BA0?= =?UTF-8?q?,=E4=B8=8D=E5=88=86=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/service/impl/JdPayServiceImpl.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java b/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java index 1d69fcbc..aeb59162 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java +++ b/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java @@ -275,15 +275,17 @@ public class JdPayServiceImpl implements IJdPayService { divisionAccountTradeInfo.setMerchantNo(separateAccount.getAccount()); divisionAccountTradeInfo.setOutTradeNo(onlinePayment.getBusinessCode() + "_" + (i + 1)); divisionAccountTradeInfo.setTradeAmount(subTradeAmount.multiply(new BigDecimal(100)).intValue() + ""); - divisionAccountTradeInfoList.add(divisionAccountTradeInfo); - sepAccDList.add( - TOnlinePaymentSepAccD.builder() - .account(separateAccount.getAccount()) - .proportion(separateAccount.getProportion()) - .tradeAmount(subTradeAmount) - .outTradeNo(divisionAccountTradeInfo.getOutTradeNo()) - .build() - ); + if(subTradeAmount.compareTo(BigDecimal.ZERO) > 0){ + divisionAccountTradeInfoList.add(divisionAccountTradeInfo); + sepAccDList.add( + TOnlinePaymentSepAccD.builder() + .account(separateAccount.getAccount()) + .proportion(separateAccount.getProportion()) + .tradeAmount(subTradeAmount) + .outTradeNo(divisionAccountTradeInfo.getOutTradeNo()) + .build() + ); + } } } } From 51c948bc231a59338409d14cf223b38c1a9975a2 Mon Sep 17 00:00:00 2001 From: sangelxiu1 <15781802@163.com> Date: Mon, 7 Jul 2025 15:52:08 +0800 Subject: [PATCH 2/3] =?UTF-8?q?##=20Opt=20-=20=E5=88=86=E8=B4=A6=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java b/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java index aeb59162..d24f7487 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java +++ b/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java @@ -267,9 +267,11 @@ public class JdPayServiceImpl implements IJdPayService { BigDecimal subTradeAmount; if(i == separateAccounts.size() - 1){ subTradeAmount = remaining; + log.info("分账 最后一个账户( 总 - 已分账 ) : {}, {}", subTradeAmount, remaining); }else{ subTradeAmount = tradeAmount.subtract(tradeAmount.multiply(separateAccount.getProportion().setScale(2, BigDecimal.ROUND_DOWN)).setScale(2, BigDecimal.ROUND_DOWN)); remaining = remaining.subtract(subTradeAmount).setScale(2, BigDecimal.ROUND_DOWN); + log.info("分账 过程 : {}, {}, {}", subTradeAmount, remaining, separateAccount.getProportion().setScale(2, BigDecimal.ROUND_DOWN)); } JdPayDivisionAccountTradeInfo divisionAccountTradeInfo = new JdPayDivisionAccountTradeInfo(); divisionAccountTradeInfo.setMerchantNo(separateAccount.getAccount()); From d3fad46ad354dce917a47298dec5503b9c5bf0d9 Mon Sep 17 00:00:00 2001 From: sangelxiu1 <15781802@163.com> Date: Mon, 7 Jul 2025 16:02:49 +0800 Subject: [PATCH 3/3] =?UTF-8?q?##=20Opt=20-=20=E5=88=86=E8=B4=A6=E6=8C=89?= =?UTF-8?q?=E6=AF=94=E4=BE=8B=E6=8E=92=E5=BA=8F(=E9=99=8D=E5=BA=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java b/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java index d24f7487..aa79bc01 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java +++ b/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java @@ -47,6 +47,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.net.InetAddress; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.concurrent.TimeUnit; @@ -259,6 +260,7 @@ public class JdPayServiceImpl implements IJdPayService { List sepAccDList = new ArrayList<>(); if(ObjectUtil.isNotEmpty(jdPayBankProperties)){ List separateAccounts = jdPayBankProperties.getSeparateAccounts(); + separateAccounts.sort(Comparator.comparing(JdPaySeparateAccountConfig::getProportion).reversed()); if(ObjectUtil.isNotEmpty(separateAccounts)){ BigDecimal tradeAmount = onlinePayment.getPayMoney(); BigDecimal remaining = onlinePayment.getPayMoney();