diff --git a/app/controller/Crawler.php b/app/controller/Crawler.php index 62b25a9..f28dc6d 100644 --- a/app/controller/Crawler.php +++ b/app/controller/Crawler.php @@ -341,16 +341,25 @@ class Crawler extends BaseController $treeData = $service->getPositionTree($dsdm, $examid, $bmid, $userid, (string)$aa, $cookies); $zwdmList = []; - if (is_array($treeData)) { - foreach ($treeData as $item) { - if (isset($item['CODE']) && !empty($item['CODE'])) { - // 跳过包含 nocheck: true 的节点(如分组节点,不参与爬取) - if (!empty($item['nocheck'])) { - continue; + $collectCodes = function (array $nodes) use (&$collectCodes, &$zwdmList) { + foreach ($nodes as $item) { + // 跳过包含 nocheck: true 的节点(如分组节点,不参与爬取) + if (!empty($item['nocheck'])) { + if (!empty($item['children']) && is_array($item['children'])) { + $collectCodes($item['children']); } + continue; + } + if (isset($item['CODE']) && $item['CODE'] !== '') { $zwdmList[] = $item['CODE']; } + if (!empty($item['children']) && is_array($item['children'])) { + $collectCodes($item['children']); + } } + }; + if (is_array($treeData)) { + $collectCodes($treeData); } if (empty($zwdmList)) {