轻松聘AI开发
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

44 lines
2.0 KiB

package com.mydreamjob.preference.dto;
import jakarta.validation.constraints.AssertTrue;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Size;
import lombok.Data;
import java.util.List;
@Data
public class StudentPreferenceRequest {
/** 已保存在线简历时必填;从 GET /profile/me/online-resume 获取。 */
@jakarta.validation.constraints.PositiveOrZero
@io.swagger.v3.oas.annotations.media.Schema(minimum = "0", description = "已保存在线简历时必填,取自 GET /profile/me/online-resume;缺少或过期返回409/6002。尚无在线记录时可省略或传0。成功后重新GET获取新版本。")
private Long revision;
@Min(value = 0, message = "expectedSalaryMin must not be negative")
private Integer expectedSalaryMin;
@Min(value = 0, message = "expectedSalaryMax must not be negative")
private Integer expectedSalaryMax;
@Size(max = 20, message = "preferredCities must have at most 20 items")
private List<@Size(min = 1, max = 100, message = "each city must be 1-100 chars") String> preferredCities;
@Size(max = 20, message = "employmentTypes must have at most 20 items")
private List<@Size(min = 1, max = 100, message = "each employment type must be 1-100 chars") String> employmentTypes;
@Size(max = 20, message = "preferredIndustries must have at most 20 items")
private List<@Size(min = 1, max = 100, message = "each industry must be 1-100 chars") String> preferredIndustries;
@Size(max = 20, message = "preferredJobTypes must have at most 20 items")
private List<@Size(min = 1, max = 100, message = "each job type must be 1-100 chars") String> preferredJobTypes;
private Boolean remoteAllowed;
@AssertTrue(message = "expectedSalaryMin must not be greater than expectedSalaryMax")
public boolean isSalaryRangeValid() {
if (expectedSalaryMin == null || expectedSalaryMax == null) return true;
return expectedSalaryMin <= expectedSalaryMax;
}
}