From d5daf546ab74c6cade8735f1b3db52a32ada90e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BD=B3=E6=AD=A3?= <2624533894@qq.com> Date: Fri, 4 Sep 2026 10:45:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wallet/WalletPrerequisiteProjectionService.java | 10 +++++++++- .../application/WalletOpeningService.java | 8 ++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/yau/digitalrmb/shared/wallet/WalletPrerequisiteProjectionService.java b/src/main/java/com/yau/digitalrmb/shared/wallet/WalletPrerequisiteProjectionService.java index dad57ca..550b748 100644 --- a/src/main/java/com/yau/digitalrmb/shared/wallet/WalletPrerequisiteProjectionService.java +++ b/src/main/java/com/yau/digitalrmb/shared/wallet/WalletPrerequisiteProjectionService.java @@ -170,15 +170,23 @@ public class WalletPrerequisiteProjectionService { List existing = bankAccounts(source.userId, institution.bankCode); if (!existing.isEmpty()) { validateAccount(existing.get(0), source, institution); + BigDecimal expectedBalance = source.application.accountBalance != null + && source.application.accountBalance.compareTo(BigDecimal.ZERO) > 0 + ? source.application.accountBalance : new BigDecimal("50000.00"); + jdbc.update("UPDATE simulated_bank_account SET balance=? WHERE account_id=? AND balance=0", + expectedBalance, existing.get(0).accountId); return existing.get(0).accountId; } + BigDecimal initialBalance = source.application.accountBalance != null + && source.application.accountBalance.compareTo(BigDecimal.ZERO) > 0 + ? source.application.accountBalance : new BigDecimal("50000.00"); try { jdbc.update("INSERT INTO simulated_bank_account " + "(account_id,user_id,bank_code,bank_name,card_number,card_last4,balance,frozen_amount,status,created_at,updated_at) " + "VALUES (?,?,?,?,?,?,?,0,'ACTIVE',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)", expectedId, source.userId, institution.bankCode, source.application.bankName, source.application.cardNumber, lastFour(source.application.cardNumber), - source.application.accountBalance); + initialBalance); } catch (DuplicateKeyException exception) { existing = bankAccounts(source.userId, institution.bankCode); if (existing.isEmpty()) throw exception; diff --git a/src/main/java/com/yau/digitalrmb/walletopening/application/WalletOpeningService.java b/src/main/java/com/yau/digitalrmb/walletopening/application/WalletOpeningService.java index 6971efd..c825f1e 100644 --- a/src/main/java/com/yau/digitalrmb/walletopening/application/WalletOpeningService.java +++ b/src/main/java/com/yau/digitalrmb/walletopening/application/WalletOpeningService.java @@ -16,6 +16,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -79,10 +80,13 @@ public class WalletOpeningService { throw new BusinessException(ErrorCode.VALIDATION_ERROR, "请选择数字钱包类型"); } - // 输出申请报文时才存储身份证号、银行卡号等敏感信息 + BigDecimal accountBalance = request.getAccountBalance(); + if (accountBalance == null || accountBalance.compareTo(BigDecimal.ZERO) <= 0) { + accountBalance = new BigDecimal("50000.00"); + } app.fillForm(request.getSelectedBank(), request.getWalletType(), request.getInputPhone(), request.getInputIdNumber(), request.getInputBankCardNumber(), request.getSignaturePhotoPath(), - request.getIdNumber(), request.getAccountBank(), request.getBankCardNumber(), request.getAccountBalance()); + request.getIdNumber(), request.getAccountBank(), request.getBankCardNumber(), accountBalance); String applyTime = LocalDateTime.now().format(TIMESTAMP_FORMAT); String applicationId = "APP_" + applyTime;