diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobCollectionServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobCollectionServiceImpl.java index 45f501c..99b8237 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobCollectionServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobCollectionServiceImpl.java @@ -267,7 +267,7 @@ public class JobCollectionServiceImpl extends ServiceImpl= 22 && userAge <= 35) { matchScore += 1; @@ -293,7 +293,7 @@ public class JobCollectionServiceImpl extends ServiceImpl 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); diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java index 6d9e03d..d9ca446 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java @@ -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; // 格式错误返回提示 } } } \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/AppUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/AppUser.java index f54d5d8..8e919bb 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/AppUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/AppUser.java @@ -49,7 +49,7 @@ public class AppUser extends BaseEntity @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "生日", width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty("生日") - private LocalDate birthDate; + private String birthDate; @Excel(name = "学历 对应字典education") @ApiModelProperty("学历 对应字典education") diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java index 108cd1b..8385bc7 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -203,4 +203,20 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils .atZone(ZONE_ID) .toLocalDateTime(); } + + + /** + * @param dateStr 日期字符串(需符合yyyy-MM-dd格式) + * @return 转换后的Date对象,转换失败则返回null + */ + public static Date stringToDateWithYmd(String dateStr,String format) { + if (dateStr == null || dateStr.trim().isEmpty()) { + return null; + } + try { + return new SimpleDateFormat(format).parse(dateStr); + } catch (ParseException e) { + return null; + } + } }