1.修改求职者生日验证及参数验证

This commit is contained in:
sh
2025-11-25 16:56:32 +08:00
parent 46c78f72a4
commit 6e2cdba1d9
4 changed files with 29 additions and 23 deletions

View File

@@ -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);

View File

@@ -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; // 格式错误返回提示
}
}
}