|
13 | 13 | import club.boyuan.official.service.IUserService; |
14 | 14 | import com.fasterxml.jackson.core.type.TypeReference; |
15 | 15 | import com.fasterxml.jackson.databind.ObjectMapper; |
| 16 | +import com.fasterxml.jackson.databind.JsonNode; |
16 | 17 | import lombok.AllArgsConstructor; |
17 | 18 | import org.slf4j.Logger; |
18 | 19 | import org.slf4j.LoggerFactory; |
@@ -280,11 +281,26 @@ private Map<Integer, List<String>> getUserPreferredTimes(List<Resume> resumes, I |
280 | 281 | for (ResumeFieldValue interviewTimeValue : interviewTimeValues) { |
281 | 282 | logger.info("用户 {} 的期望面试时间字段值: {}", resume.getUserId(), interviewTimeValue.getFieldValue()); |
282 | 283 | try { |
283 | | - // 解析JSON数组 |
284 | | - List<String> preferredTimes = objectMapper.readValue( |
285 | | - interviewTimeValue.getFieldValue(), |
286 | | - new TypeReference<List<String>>() {}); |
287 | | - allPreferredTimes.addAll(preferredTimes); |
| 284 | + // 检查是否是包含first和second字段的JSON对象格式 |
| 285 | + String fieldValue = interviewTimeValue.getFieldValue(); |
| 286 | + if (fieldValue != null && fieldValue.contains("\"first\"") && fieldValue.contains("\"second\"")) { |
| 287 | + // 解析包含first和second字段的JSON对象 |
| 288 | + JsonNode jsonNode = objectMapper.readTree(fieldValue); |
| 289 | + String first = jsonNode.get("first").asText(); |
| 290 | + String second = jsonNode.get("second").asText(); |
| 291 | + |
| 292 | + // 添加非空的时间选项 |
| 293 | + if (first != null && !first.isEmpty() && !"null".equals(first)) { |
| 294 | + allPreferredTimes.add(first); |
| 295 | + } |
| 296 | + if (second != null && !second.isEmpty() && !"null".equals(second)) { |
| 297 | + allPreferredTimes.add(second); |
| 298 | + } |
| 299 | + } else { |
| 300 | + // 解析普通的JSON数组格式(向后兼容) |
| 301 | + List<String> preferredTimes = objectMapper.readValue(fieldValue, new TypeReference<List<String>>() {}); |
| 302 | + allPreferredTimes.addAll(preferredTimes); |
| 303 | + } |
288 | 304 | } catch (Exception e) { |
289 | 305 | logger.warn("解析用户 {} 的期望面试时间失败: {}", resume.getUserId(), |
290 | 306 | interviewTimeValue.getFieldValue(), e); |
|
0 commit comments