fix(wallet): widen bank_card_number columns and cap input length

Module 3 step 1 (output application) had no length limit on the bank
card number fields in either the frontend input or the backend DTO.
A long test value overflowed VARCHAR(30) and the MySQL update failed
with 'Data truncation: Data too long for column bank_card_number',
returning a 500 and blocking the whole module 3 flow (and therefore
module 4/5 downstream).

- widen wallet_application.bank_card_number/input_bank_card_number,
  bank_received_wallet_application.bank_card_number,
  wallet_registration_request.bank_card_number, and
  central_wallet_registration.bank_card_number from VARCHAR(30) to
  VARCHAR(64) in schema.sql (already applied directly to the running
  dev database via ALTER TABLE)
- add @Size(max = 64) to WalletApplicationRequest's card number fields
- add maxlength=64 to the bank card input on the wallet open step
chore/issuance-comments-zh
chenyuan 4 weeks ago
parent 93bed6a2a4
commit 8af6f539bf

@ -5,6 +5,7 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.math.BigDecimal; import java.math.BigDecimal;
@Getter @Getter
@ -20,6 +21,7 @@ public class WalletApplicationRequest {
private String inputPhone; private String inputPhone;
@Schema(description = "身份证号", example = "110101199001011234") @Schema(description = "身份证号", example = "110101199001011234")
private String inputIdNumber; private String inputIdNumber;
@Size(max = 64, message = "银行卡号长度不能超过64位")
@Schema(description = "银行卡号", example = "6216610100001234567") @Schema(description = "银行卡号", example = "6216610100001234567")
private String inputBankCardNumber; private String inputBankCardNumber;
@Schema(description = "面签照片路径", example = "/2026/8/11/5cae82501de84bfba3693477ac55140c.pdf") @Schema(description = "面签照片路径", example = "/2026/8/11/5cae82501de84bfba3693477ac55140c.pdf")
@ -28,6 +30,7 @@ public class WalletApplicationRequest {
private String idNumber; private String idNumber;
@Schema(description = "开户银行", example = "中国银行北京分行") @Schema(description = "开户银行", example = "中国银行北京分行")
private String accountBank; private String accountBank;
@Size(max = 64, message = "银行卡号长度不能超过64位")
@Schema(description = "银行卡号(确认)", example = "6216610100001234567") @Schema(description = "银行卡号(确认)", example = "6216610100001234567")
private String bankCardNumber; private String bankCardNumber;
@Schema(description = "账户余额", example = "500000.00") @Schema(description = "账户余额", example = "500000.00")

@ -930,13 +930,13 @@ CREATE TABLE IF NOT EXISTS wallet_application (
id_number VARCHAR(20), id_number VARCHAR(20),
phone VARCHAR(20), phone VARCHAR(20),
account_bank VARCHAR(100), account_bank VARCHAR(100),
bank_card_number VARCHAR(30), bank_card_number VARCHAR(64),
account_balance DECIMAL(20, 2), account_balance DECIMAL(20, 2),
selected_bank VARCHAR(100), selected_bank VARCHAR(100),
wallet_type VARCHAR(20), wallet_type VARCHAR(20),
input_phone VARCHAR(20), input_phone VARCHAR(20),
input_id_number VARCHAR(20), input_id_number VARCHAR(20),
input_bank_card_number VARCHAR(30), input_bank_card_number VARCHAR(64),
signature_photo_path VARCHAR(255), signature_photo_path VARCHAR(255),
face_recognition_status INTEGER, face_recognition_status INTEGER,
application_id VARCHAR(64), application_id VARCHAR(64),
@ -964,7 +964,7 @@ CREATE TABLE IF NOT EXISTS bank_received_wallet_application (
user_name VARCHAR(100), user_name VARCHAR(100),
id_number VARCHAR(20), id_number VARCHAR(20),
phone VARCHAR(20), phone VARCHAR(20),
bank_card_number VARCHAR(30), bank_card_number VARCHAR(64),
wallet_type VARCHAR(20), wallet_type VARCHAR(20),
apply_time VARCHAR(20), apply_time VARCHAR(20),
created_at TIMESTAMP NOT NULL, created_at TIMESTAMP NOT NULL,
@ -1083,7 +1083,7 @@ CREATE TABLE IF NOT EXISTS wallet_registration_request (
wallet_id VARCHAR(128), wallet_id VARCHAR(128),
user_name VARCHAR(100), user_name VARCHAR(100),
id_number VARCHAR(20), id_number VARCHAR(20),
bank_card_number VARCHAR(30), bank_card_number VARCHAR(64),
wallet_type VARCHAR(20), wallet_type VARCHAR(20),
org_code VARCHAR(20), org_code VARCHAR(20),
cert_serial VARCHAR(64), cert_serial VARCHAR(64),
@ -1113,7 +1113,7 @@ CREATE TABLE IF NOT EXISTS central_wallet_registration (
wallet_id VARCHAR(128), wallet_id VARCHAR(128),
user_name VARCHAR(100), user_name VARCHAR(100),
id_number VARCHAR(20), id_number VARCHAR(20),
bank_card_number VARCHAR(30), bank_card_number VARCHAR(64),
wallet_type VARCHAR(20), wallet_type VARCHAR(20),
org_code VARCHAR(20), org_code VARCHAR(20),
cert_serial VARCHAR(64), cert_serial VARCHAR(64),

@ -536,9 +536,9 @@ CREATE TABLE IF NOT EXISTS wallet_application (
phone VARCHAR(20), phone VARCHAR(20),
input_phone VARCHAR(20), input_phone VARCHAR(20),
input_id_number VARCHAR(20), input_id_number VARCHAR(20),
input_bank_card_number VARCHAR(30), input_bank_card_number VARCHAR(64),
account_bank VARCHAR(100), account_bank VARCHAR(100),
bank_card_number VARCHAR(30), bank_card_number VARCHAR(64),
account_balance DECIMAL(20,2), account_balance DECIMAL(20,2),
selected_bank VARCHAR(100), selected_bank VARCHAR(100),
wallet_type VARCHAR(20), wallet_type VARCHAR(20),

Loading…
Cancel
Save