package com.talentcard.server.request; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; @Schema(name = "商户端停车车牌录入请求", description = "商户端录入或修改停车权益车牌号") public record MerchantParkingPlateRegistrationRequest( @Schema(description = "持卡人ID", example = "2", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "持卡人ID不能为空") Long talentId, @Schema(description = "人才卡ID;不传时取该持卡人的有效卡", example = "8") Long cardId, @Schema(description = "停车场ID;商家有多个停车场时必填", example = "1") Long parkingLotId, @Schema(description = "原车牌登记ID;传入时按修改登记处理", example = "1") Long registrationId, @Schema(description = "车牌号,支持普通车牌和新能源车牌", example = "川K4P888A", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "车牌号不能为空") @Pattern(regexp = "^[\\u4E00-\\u9FFF][A-Z][A-Z0-9]{5,6}$", message = "请输入正确的车牌号") String plateNumber, @Schema(description = "处理备注", example = "商户端录入并同步停车系统") @Size(max = 500, message = "处理备注长度不能超过500") String remark, @Schema(description = "幂等提交凭证;也可通过请求头X-Idempotency-Key传入", example = "merchant-parking-plate-20260804-001") @Size(max = 128, message = "提交凭证长度不能超过128") String idempotencyKey ) { }