host . $this->tokenUrl); $this->token = $response->json()->data; $this->apiUrl = $apiUrl; $this->model = new $model(); if (!$isUpdate) { $this->model->truncate(); } $this->selectedKeys = $selectedKeys; } public function get() { $response = Http::withHeaders([ 'token' => $this->token, 'Content-Type' => 'application/json;charset=utf-8' ])->asJson()->post($this->host . $this->apiUrl, [ 'pageIndex' => $this->pageIndex, 'pageSize' => $this->pageSize ]); $res = $response->json(); switch (true) { case $this->model instanceof PositionModel: $fetch_name = '拉取所有岗位'; break; default: $fetch_name = '未知拉取类型'; } # 记录定时任务日志 (new FetchdataLog())->insert([ 'fetch_name' => $fetch_name, 'data_num' => $this->pageSize, 'return_code' => json_encode($res)['code']??200, 'pull_time' => date('Y-m-d H:i:s'), 'notes' => $this->host . $this->apiUrl ]); unset($response); $resArr = json_decode(json_encode($res), true); unset($res); if ($resArr['code'] !== 0) { return false; } if (!empty($resArr['data'])) { if (!empty($this->selectedKeys)) { $extractedData = []; foreach ($resArr['data'] as $item) { $extractedItem = []; foreach ($this->selectedKeys as $key => $value) { if (isset($item[$key])) { $extractedItem[$value] = $item[$key]; } else { $extractedItem[$value] = ""; } } $extractedData[] = $extractedItem; } $this->model->insertOrIgnore($extractedData); unset($extractedData); } else { $this->model->insertOrIgnore($resArr['data']); unset($resArr); } $this->pageIndex++; $this->get(); } return true; } public function getUpdate($updateTime) { $response = Http::withHeaders([ 'token' => $this->token, 'Content-Type' => 'application/json;charset=utf-8' ])->asJson()->post($this->host . $this->apiUrl, [ 'pageIndex' => 1, 'pageSize' => 500, 'updateTime' => $updateTime ]); $res = $response->json(); $resArr = json_decode(json_encode($res), true); # 记录定时任务日志 (new FetchdataLog())->insert([ 'fetch_name' => '拉取岗位信息', 'data_num' => $this->pageSize, 'return_code' => $resArr['code'], 'pull_time' => date('Y-m-d H:i:s'), 'content' => json_encode($res) ]); if ($resArr['code'] !== 0) { return false; } if (!empty($resArr['data'])) { if (!empty($this->selectedKeys)) { $extractedData = []; foreach ($resArr['data'] as $item) { $extractedItem = []; foreach ($this->selectedKeys as $key => $value) { if (isset($item[$key])) { $extractedItem[$value] = $item[$key]; } } $extractedData[] = $extractedItem; } $this->model->insertOrIgnore($extractedData); } else { $this->model->insertOrIgnore($resArr['data']); } } return true; } }