1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
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
) {
}