package com.ruoyi.user.domain.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; /** * C端会员 主体认证申请提交入参(当前仅个人主体) * * 只承载「姓名」与「身份证号」两个字段:会员身份取自登录态(网关注入的 user_id 头), * 不接受前端传入 userId,天然防水平越权;主体类型由服务端固定为「个人」, * 不接受前端传入,避免越权提交企业主体绕开后续资料要求。 * * 本品只做基础格式校验(姓名必填、身份证号结构校验),不做三方实名核验。 * * @author hugray */ public class AccountCertificationApplyDto { /** 姓名;必填,长度不超过 64(对应 account_certification_apply.real_name varchar(64)) */ @NotBlank(message = "姓名不能为空") @Size(max = 64, message = "姓名过长") private String realName; /** * 身份证号;必填,18 位。 * * 正则只校验结构:6 位地址码 + 8 位出生日期(年份 18/19/20 开头,月 01~12,日 01~31) * + 3 位顺序码 + 1 位校验位(数字或 X),不校验最后一位校验码的数学正确性, * 也不做真实身份核验(后续由后台人工审核把关)。 */ @NotBlank(message = "身份证号不能为空") @Size(max = 32, message = "身份证号过长") @Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$", message = "身份证号格式不正确") private String idCard; public String getRealName() { return realName; } public void setRealName(String realName) { this.realName = realName; } public String getIdCard() { return idCard; } public void setIdCard(String idCard) { this.idCard = idCard; } }