package com.talentcard.server.request; import java.util.List; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.Size; @Schema(name = "预约申请提交请求", description = "小程序提交体检、医院快捷通道、酒店、配偶就业、学生托管预约申请") public record ServiceAppointmentSubmitRequest( @Schema(description = "预约类型:MEDICAL_RESERVATION体检、FAST_TRACK快捷通道、HOTEL_RESERVATION酒店、SPOUSE_EMPLOYMENT配偶就业、CHILD_ENTRUSTMENT学生托管", example = "MEDICAL_RESERVATION", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "预约类型不能为空") @Size(max = 64, message = "预约类型长度不能超过64") String applicationType, @Schema(description = "人才用户ID;cardId未传时必填", example = "2") @Positive(message = "人才用户ID必须大于0") Long talentId, @Schema(description = "人才卡ID;传入后按该卡保存预约快照", example = "8") @Positive(message = "人才卡ID必须大于0") Long cardId, @Schema(description = "服务商户/医院/酒店ID;体检、酒店、配偶就业建议传入", example = "12") @Positive(message = "商户ID必须大于0") Long merchantId, @Schema(description = "体检套餐ID;体检预约可传,不传则使用packageName", example = "1") @Positive(message = "体检套餐ID必须大于0") Long packageId, @Schema(description = "酒店房型/套餐ID;酒店预约可传,不传则使用productName", example = "20") @Positive(message = "酒店房型/套餐ID必须大于0") Long productId, @Schema(description = "学生托管学校ID;可选", example = "3") @Positive(message = "学校ID必须大于0") Long schoolId, @Schema(description = "已存在的子女信息ID;学生托管可传,未传则按子女字段新建审核资料", example = "5") @Positive(message = "子女信息ID必须大于0") Long childId, @Schema(description = "申请人姓名;体检/快捷通道可传,默认使用持卡人姓名", example = "张某某") @Size(max = 64, message = "申请人姓名长度不能超过64") String applicantName, @Schema(description = "申请人手机号;体检/快捷通道可传,默认使用持卡人手机号", example = "13800001688") @Size(max = 20, message = "申请人手机号长度不能超过20") String applicantMobile, @Schema(description = "申请人证件号;体检/快捷通道可传,默认使用持卡人证件号", example = "510402199001011688") @Size(max = 64, message = "申请人证件号长度不能超过64") String applicantIdCardNo, @Schema(description = "医院名称;未传merchantId时必填", example = "攀枝花市中心医院") @Size(max = 128, message = "医院名称长度不能超过128") String hospitalName, @Schema(description = "商户/酒店/服务机构名称;未传merchantId时可传", example = "全季酒店") @Size(max = 128, message = "服务机构名称长度不能超过128") String merchantName, @Schema(description = "联系电话;未传merchantId时可传", example = "0812-3509201") @Size(max = 20, message = "联系电话长度不能超过20") String contactMobile, @Schema(description = "预约套餐/体检套餐名称", example = "A套餐") @Size(max = 128, message = "套餐名称长度不能超过128") String packageName, @Schema(description = "预约项目/房型/服务内容", example = "商务大床房") @Size(max = 128, message = "预约项目长度不能超过128") String productName, @Schema(description = "期望预约时间;如2026-05-28或2026-05-22 至 2026-05-23", example = "2026-05-28") @Size(max = 128, message = "期望预约时间长度不能超过128") String expectedTime, @Schema(description = "期望预约日期;格式yyyy-MM-dd,未传expectedTime时使用", example = "2026-05-28") @Size(max = 32, message = "期望预约日期长度不能超过32") String expectedDate, @Schema(description = "入住日期;酒店预约使用,格式yyyy-MM-dd", example = "2026-05-22") @Size(max = 32, message = "入住日期长度不能超过32") String checkInDate, @Schema(description = "离店日期;酒店预约使用,格式yyyy-MM-dd", example = "2026-05-23") @Size(max = 32, message = "离店日期长度不能超过32") String checkOutDate, @Schema(description = "入住人数;酒店预约可传", example = "2") @Positive(message = "入住人数必须大于0") Integer guestCount, @Schema(description = "是否使用补贴/权益;酒店预约可传", example = "是") @Size(max = 16, message = "补贴标识长度不能超过16") String subsidy, @Schema(description = "配偶姓名;配偶就业必填", example = "李四") @Size(max = 64, message = "配偶姓名长度不能超过64") String spouseName, @Schema(description = "配偶手机号;配偶就业必填", example = "13600006666") @Size(max = 20, message = "配偶手机号长度不能超过20") String spouseMobile, @Schema(description = "配偶证件号;配偶就业必填", example = "510402199003033456") @Size(max = 64, message = "配偶证件号长度不能超过64") String spouseIdCardNo, @Schema(description = "政治面貌", example = "群众") @Size(max = 64, message = "政治面貌长度不能超过64") String spousePoliticalStatus, @Schema(description = "学历", example = "本科") @Size(max = 64, message = "学历长度不能超过64") String spouseEducation, @Schema(description = "毕业院校及专业", example = "四川大学计算机专业") @Size(max = 255, message = "毕业院校及专业长度不能超过255") String spouseSchoolMajor, @Schema(description = "现工作单位及职务", example = "待就业") @Size(max = 255, message = "现工作单位及职务长度不能超过255") String spouseWorkUnit, @Schema(description = "是否为机关事业单位在编人员", example = "否") @Size(max = 16, message = "是否在编长度不能超过16") String spouseInInstitution, @Schema(description = "工作经历", example = "具有软件项目实施、客户服务相关经验。") @Size(max = 4000, message = "工作经历长度不能超过4000") String spouseWorkExperience, @Schema(description = "子女姓名;学生托管必填", example = "陈娇娇") @Size(max = 64, message = "子女姓名长度不能超过64") String childName, @Schema(description = "子女性别;学生托管必填:男、女", example = "男") @Size(max = 8, message = "子女性别长度不能超过8") String childGender, @Schema(description = "子女出生年月/出生日期;格式yyyy-MM-dd", example = "2020-05-23") @Size(max = 32, message = "出生日期长度不能超过32") String childBirthDate, @Schema(description = "亲属关系证明材料文件ID列表;学生托管最多3个", example = "[\"file-1\",\"file-2\"]") List proofFileIds, @Schema(description = "提交备注", example = "请尽快联系") @Size(max = 500, message = "备注长度不能超过500") String remark ) { }