From 3b46b6d77d09f1c50ac9154550afca95b4b851f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=BF=97?= Date: Tue, 6 Jan 2026 16:18:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/service/MatchService.php | 65 ++++++++++++++++++++++++++++-------- 1 file changed, 51 insertions(+), 14 deletions(-) diff --git a/app/service/MatchService.php b/app/service/MatchService.php index 9f12fb7..4c1fc05 100644 --- a/app/service/MatchService.php +++ b/app/service/MatchService.php @@ -285,7 +285,8 @@ class MatchService $majorCodeMap = []; $majorCodes = []; foreach ($educations as $education) { - $codeFields = ['major_code', 'majors_code', 'code', 'major_id', 'majors_id', 'major_no']; + // 收集所有可能的专业代码字段 + $codeFields = ['major_code', 'majors_code', 'code', 'major_id', 'majors_id', 'major_no', 'id']; foreach ($codeFields as $field) { if (!empty($education[$field])) { $majorCodes[] = $education[$field]; @@ -296,23 +297,52 @@ class MatchService if (!empty($majorCodes)) { try { - $majors = Db::name('da_majors') - ->whereIn('code', $majorCodes) - ->select() - ->toArray(); + // 尝试多种可能的查询字段:id, code, major_code, majors_id + $majors = []; + $queryFields = ['id', 'code', 'major_code', 'majors_id', 'major_id']; + + foreach ($queryFields as $queryField) { + try { + $majors = Db::name('da_majors') + ->whereIn($queryField, $majorCodes) + ->select() + ->toArray(); + if (!empty($majors)) { + error_log("成功从da_majors表查询到 " . count($majors) . " 条专业记录,使用字段: {$queryField}"); + break; // 找到匹配的字段,退出循环 + } + } catch (\Exception $e) { + // 字段不存在,继续尝试下一个 + continue; + } + } + + // 构建专业代码映射表 foreach ($majors as $major) { - $code = $major['code'] ?? $major['major_code'] ?? null; + // 尝试多种可能的代码字段 + $code = $major['id'] ?? $major['code'] ?? $major['major_code'] ?? $major['majors_id'] ?? $major['major_id'] ?? null; if (!$code) { continue; } + + // 尝试多种可能的名称字段 + $name = $major['major_name'] ?? $major['name'] ?? $major['title'] ?? $major['专业名称'] ?? ''; + + // 尝试多种可能的类别字段 + $category = $major['category_name'] ?? $major['category'] ?? $major['major_category'] ?? $major['专业类别'] ?? $major['学科类别'] ?? ''; + $majorCodeMap[$code] = [ - 'name' => $major['major_name'] ?? $major['name'] ?? $major['title'] ?? '', - 'category' => $major['category_name'] ?? $major['category'] ?? $major['major_category'] ?? '', + 'name' => $name, + 'category' => $category, ]; } + + error_log("专业代码映射表构建完成,共 " . count($majorCodeMap) . " 条记录"); } catch (\Exception $e) { - // da_majors 表不存在或字段不匹配时忽略 + error_log("查询da_majors表失败: " . $e->getMessage()); } + } else { + error_log("未找到专业代码,无法查询da_majors表"); } // 构建简历数据结构 @@ -347,12 +377,19 @@ class MatchService // 如果有专业代码但没有名称,尝试从 da_majors 映射获取 if (empty($majorName)) { - $codeFields = ['major_code', 'majors_code', 'code', 'major_id', 'majors_id', 'major_no']; + $codeFields = ['major_code', 'majors_code', 'code', 'major_id', 'majors_id', 'major_no', 'id']; foreach ($codeFields as $field) { - if (!empty($education[$field]) && isset($majorCodeMap[$education[$field]])) { - $majorName = $majorCodeMap[$education[$field]]['name'] ?? ''; - $education['major_category'] = $majorCodeMap[$education[$field]]['category'] ?? ''; - break; + if (!empty($education[$field])) { + $codeValue = $education[$field]; + // 尝试直接匹配 + if (isset($majorCodeMap[$codeValue])) { + $majorName = $majorCodeMap[$codeValue]['name'] ?? ''; + $education['major_category'] = $majorCodeMap[$codeValue]['category'] ?? ''; + if (!empty($majorName)) { + error_log("从majorCodeMap获取到专业名称: {$majorName}, 代码: {$codeValue}"); + break; + } + } } } }