This commit is contained in:
杨志
2026-02-02 15:16:36 +08:00
parent b9b4e1b909
commit 272dbcb424
3 changed files with 40 additions and 20 deletions

View File

@@ -280,20 +280,11 @@ class Crawler extends BaseController
} }
$treeData = $service->getPositionTree($dsdm, $examid, $bmid, $userid, (string)$aa, $cookies); $treeData = $service->getPositionTree($dsdm, $examid, $bmid, $userid, (string)$aa, $cookies);
// 提取所有CODE作为zwdm $zwdmList = is_array($treeData)
$zwdmList = []; ? $service->collectPositionListExcludingNocheck($treeData)
if (is_array($treeData)) { : [];
foreach ($treeData as $item) {
if (isset($item['CODE']) && !empty($item['CODE'])) {
$zwdmList[] = [
'zwdm' => $item['CODE'],
'title' => $item['TITLE'] ?? $item['CODE'],
];
}
}
}
return json([ return json([
'code' => 1, 'code' => 1,
'data' => $zwdmList, 'data' => $zwdmList,

View File

@@ -196,6 +196,38 @@ class CrawlerService
return $codes; return $codes;
} }
/**
* 从职位树数据中收集可爬取的职位列表(排除 nocheck: true 的节点),用于下拉/勾选展示
* @param array $treeData getPositionTree 的返回值
* @return array[] 每项为 [ 'zwdm' => CODE, 'title' => TITLE ]
*/
public function collectPositionListExcludingNocheck(array $treeData): array
{
$list = [];
$nodes = $treeData;
if (isset($treeData['data']) && is_array($treeData['data'])) {
$nodes = $treeData['data'];
} elseif (isset($treeData['tree']) && is_array($treeData['tree'])) {
$nodes = $treeData['tree'];
}
foreach ($nodes as $item) {
if (!is_array($item)) {
continue;
}
$nocheck = $item['nocheck'] ?? $item['noCheck'] ?? null;
if ($nocheck === true || $nocheck === 1 || (is_string($nocheck) && strtolower($nocheck) === 'true')) {
continue;
}
if (isset($item['CODE']) && $item['CODE'] !== '') {
$list[] = [
'zwdm' => $item['CODE'],
'title' => $item['TITLE'] ?? $item['CODE'],
];
}
}
return $list;
}
/** /**
* 获取职位详细信息 * 获取职位详细信息
* @param string $zwdm 职位代码 * @param string $zwdm 职位代码

View File

@@ -836,13 +836,10 @@
continue; continue;
} }
// 过滤掉152开头的职位代码 // 后端已排除 nocheck: true 的节点,直接使用返回的职位代码
const codes = listResp.data const codes = listResp.data.map(it => it.zwdm);
.map(it => it.zwdm)
.filter(code => !code.startsWith('152'));
totalCodes += codes.length; totalCodes += codes.length;
showMessage('result-message', `地区 ${dsdm}: 共 ${codes.length} 个职位已跳过152开头,开始逐条获取...`, 'info'); showMessage('result-message', `地区 ${dsdm}: 共 ${codes.length} 个职位,开始逐条获取...`, 'info');
// 逐条获取职位详情 // 逐条获取职位详情
for (let i = 0; i < codes.length; i++) { for (let i = 0; i < codes.length; i++) {