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<String> proofFileIds,
|
|
@Schema(description = "提交备注", example = "请尽快联系")
|
@Size(max = 500, message = "备注长度不能超过500")
|
String remark
|
) {
|
}
|