1.修改求职者生日验证及参数验证
This commit is contained in:
@@ -267,7 +267,7 @@ public class JobCollectionServiceImpl extends ServiceImpl<JobCollectionMapper,Jo
|
||||
}
|
||||
|
||||
// 5. 年龄估算(从生日计算)
|
||||
int userAge = getUserAge(DateUtils.toDate(user.getBirthDate()));
|
||||
int userAge = getUserAge(DateUtils.stringToDateWithYmd(user.getBirthDate(),DateUtils.YYYY_MM_DD));
|
||||
// 假设最佳年龄区间为 22-35,越接近越匹配
|
||||
if (userAge >= 22 && userAge <= 35) {
|
||||
matchScore += 1;
|
||||
@@ -293,7 +293,7 @@ public class JobCollectionServiceImpl extends ServiceImpl<JobCollectionMapper,Jo
|
||||
// ================== 计算雷达图数据(取平均值)==================
|
||||
RadarChart radarChart = new RadarChart();
|
||||
|
||||
double avgAgeScore = userScores.stream().mapToInt(u -> getAgeScore(DateUtils.toDate(u.getUser().getBirthDate()))).average().orElse(0);
|
||||
double avgAgeScore = userScores.stream().mapToInt(u -> getAgeScore(DateUtils.stringToDateWithYmd(u.getUser().getBirthDate(),DateUtils.YYYY_MM_DD))).average().orElse(0);
|
||||
double avgExperienceScore = userScores.stream().mapToInt(u -> getExperienceScore(u.getUser().getExperience(), job.getExperience(), experienceRank)).average().orElse(0);
|
||||
double avgEducationScore = userScores.stream().mapToInt(u -> getEducationScore(u.getUser().getEducation(), job.getEducation(), educationRank)).average().orElse(0);
|
||||
double avgSkillScore = userScores.stream().mapToInt(u -> getSkillScore(u.getUser(), job)).average().orElse(0);
|
||||
|
||||
@@ -9,31 +9,21 @@ import java.time.format.DateTimeParseException;
|
||||
*/
|
||||
public class DateValidateUtil {
|
||||
|
||||
// 私有构造器:禁止实例化工具类
|
||||
private DateValidateUtil() {}
|
||||
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
private static final String ERROR_MSG = "生日格式错误!不为空时必须填写 yyyy-MM-dd 完整格式(如 1991-09-01)";
|
||||
|
||||
// 生日格式:yyyy-MM-dd(静态常量,统一维护)
|
||||
private static final DateTimeFormatter BIRTH_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
private static final String BIRTH_DATE_ERROR_MSG = "生日格式错误!不为空时必须填写 yyyy-MM-dd 格式(如 2000-01-01)";
|
||||
|
||||
/**
|
||||
* 静态方法:校验生日格式(可为空,非空时需符合 yyyy-MM-dd)
|
||||
* @param birthDate 待校验的生日(LocalDate 类型)
|
||||
* @return 校验通过返回 null;失败返回错误提示信息
|
||||
*/
|
||||
public static String validateBirthDate(LocalDate birthDate) {
|
||||
// 空值直接放行,返回 null 表示校验通过
|
||||
if (birthDate == null) {
|
||||
return null;
|
||||
// 改为校验 String 类型
|
||||
public static String validateBirthDate(String birthDateStr) {
|
||||
if (birthDateStr == null || birthDateStr.trim().isEmpty()) {
|
||||
return null; // 为空放行
|
||||
}
|
||||
|
||||
try {
|
||||
// 非空时校验格式:LocalDate 格式化需符合 yyyy-MM-dd
|
||||
BIRTH_DATE_FORMATTER.format(birthDate);
|
||||
return null; // 格式正确,返回 null 表示校验通过
|
||||
// 严格校验格式:必须是 yyyy-MM-dd,且日期合法(如 1991-02-30 会失败)
|
||||
LocalDate.parse(birthDateStr.trim(), FORMATTER);
|
||||
return null; // 校验通过
|
||||
} catch (DateTimeParseException e) {
|
||||
// 格式错误,返回具体提示信息
|
||||
return BIRTH_DATE_ERROR_MSG;
|
||||
return ERROR_MSG; // 格式错误返回提示
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user