From 79e057703ff45bf0ecd2ae573510ed194a960f3e Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Sat, 27 Sep 2025 13:37:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AA=E7=8E=AF=E8=BF=9B=E8=A1=8C=E8=BD=AC?= =?UTF-8?q?=E8=B4=A6=E6=93=8D=E4=BD=9C=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/PaymentTestController.java | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/jsowell-admin/src/test/java/PaymentTestController.java b/jsowell-admin/src/test/java/PaymentTestController.java index 00fbf44ed..ae5833b6b 100644 --- a/jsowell-admin/src/test/java/PaymentTestController.java +++ b/jsowell-admin/src/test/java/PaymentTestController.java @@ -557,13 +557,51 @@ public class PaymentTestController { } /** - * 提取余额到自己账户 + * 由于限制单笔转账1万,转账方法改为循环创建 + * @throws BaseAdaPayException + */ + @Test + public void cycleCreateBalancePayment() throws BaseAdaPayException { + BigDecimal totalAmount = new BigDecimal("156821.00"); // TODO 需要转账的总金额 + String outMemberId = "AM84864234"; // TODO 出账memberId + String inMemberId = "0"; // 入账memberId + String title = "提取余额到自己账户"; // 标题 + String desc = "2025年9月27日10点26分,售后需求:客户重新添加结算账户, 原账户余额无法提取, 由现下打款给客户"; // 描述 + String wechatAppId = wechatAppId1; // 万车充id + + // 计算转账次数 + BigDecimal singleLimit = new BigDecimal("10000.00"); // 单笔限额 + int count = totalAmount.divide(singleLimit, 0, BigDecimal.ROUND_UP).intValue(); + + // 计算每次转账金额 + BigDecimal remainingAmount = totalAmount; + List transferAmounts = new ArrayList<>(); + while (remainingAmount.compareTo(BigDecimal.ZERO) > 0) { + // 计算当前转账金额(取剩余金额和单笔最大金额中的较小值) + BigDecimal currentAmount = remainingAmount.min(singleLimit); + transferAmounts.add(currentAmount); + // 减去已转账金额 + remainingAmount = remainingAmount.subtract(currentAmount); + } + + logger.info("计算转账次数:{}", count); + logger.info("转账金额:{}", transferAmounts); + + // 循环创建转账 + for (int i = 0; i < count; i++) { + String transAmt = transferAmounts.get(i).toString(); // 金额 + adapayService.createBalancePaymentRequest(outMemberId, inMemberId, transAmt, title, desc, wechatAppId); + } + } + + /** + * 提取余额到自己账户, 转账超过1万使用循环创建{@link PaymentTestController#cycleCreateBalancePayment()} */ @Test public void createBalancePaymentRequestTest() { - String outMemberId = "AM46804136"; // 出账memberId + String outMemberId = "AM84864234"; // 出账memberId String inMemberId = "0"; // 入账memberId - String transAmt = "23831.81"; // 金额 + String transAmt = "10000.00"; // 金额 String title = "提取余额到自己账户"; // 标题 String desc = "2025年9月27日10点26分,售后需求:客户重新添加结算账户, 原账户余额无法提取, 由现下打款给客户"; // 描述 String wechatAppId = wechatAppId1; // 万车充id