抓取确认

This commit is contained in:
2026-03-12 14:21:12 +08:00
parent 3c948fbb9b
commit 7c7e66ae9a
3 changed files with 68 additions and 6 deletions
@@ -326,12 +326,31 @@ class UsedCarDetailController extends BaseController
} }
/** /**
* 抓取懂车帝二手车数据并保存 * 保存懂车帝二手车数据
* *
* @param Request $request * @param Request $request
* @return \support\Response * @return \support\Response
*/ */
public function crawlAndStore(Request $request) public function crawlStore(Request $request)
{
try {
$params = $request->post();
$userId = $request->user['id'] ?? 0;
$result = $this->service->crawlStore($params, $userId);
return $this->success($result, '保存成功,WordPress推送任务已加入队列,将在后台处理');
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
/**
* 抓取懂车帝二手车数据
*
* @param Request $request
* @return \support\Response
*/
public function crawl(Request $request)
{ {
try { try {
$url = $request->post('url'); $url = $request->post('url');
@@ -350,9 +369,20 @@ class UsedCarDetailController extends BaseController
throw new BusinessException('用户未登录'); throw new BusinessException('用户未登录');
} }
$result = $this->service->crawlAndStore($url, $userId); $result = $this->service->crawl($url, $userId);
if(!empty($result['images'])){
$images = explode(',',$result['images']);
$ossService = new OssService();
$images_pull = [];
foreach ($images as $image){
$images_pull[] = $ossService->generatePrivateUrl($image);
}
$result['images_pull'] = $images_pull;
}else{
$result['images_pull'] = [];
}
return $this->success($result, '抓取成功,WordPress推送任务已加入队列,将在后台处理'); return $this->success($result, '抓取成功');
} catch (\Throwable $e) { } catch (\Throwable $e) {
Log::error('抓取懂车帝二手车失败', [ Log::error('抓取懂车帝二手车失败', [
'url' => $request->post('url'), 'url' => $request->post('url'),
+32 -1
View File
@@ -880,7 +880,7 @@ class UsedCarDetailService
* @return array 返回创建的车辆数据 * @return array 返回创建的车辆数据
* @throws \Exception * @throws \Exception
*/ */
public function crawlAndStore(string $url, int $userId): array public function crawl(string $url, int $userId): array
{ {
// 检查该用户是否已抓取过此URL的车辆 // 检查该用户是否已抓取过此URL的车辆
$existingCar = UsedCarDetail::where('user_id', $userId) $existingCar = UsedCarDetail::where('user_id', $userId)
@@ -946,7 +946,38 @@ class UsedCarDetailService
return !is_array($value); return !is_array($value);
}); });
$data = array_merge($data, $params); $data = array_merge($data, $params);
return $data;
// 5. 创建记录
/*$car = UsedCarDetail::create($data);
// 6. 将推送任务发送到队列
try {
\Webman\RedisQueue\Redis::send('wordpress-push', [
'car_id' => $car->id,
]);
Log::info('WordPress推送任务已加入队列', ['car_id' => $car->id]);
} catch (\Throwable $e) {
Log::error('WordPress推送任务加入队列失败', [
'car_id' => $car->id,
'error' => $e->getMessage(),
]);
}
return $car->toArray();*/
}
/**
* 保存懂车帝二手车数据
*
* @param string $url 懂车帝二手车链接
* @param int $userId 用户ID
* @return array 返回创建的车辆数据
* @throws \Exception
*/
public function crawlStore(array $data, int $userId): array
{
$data['user_id'] = $userId;
// 5. 创建记录 // 5. 创建记录
$car = UsedCarDetail::create($data); $car = UsedCarDetail::create($data);
+2 -1
View File
@@ -92,7 +92,8 @@ Route::group('/common', function () {
Route::any('/audit/stats', [app\common\controller\UsedCarDetailController::class, 'auditStats']); Route::any('/audit/stats', [app\common\controller\UsedCarDetailController::class, 'auditStats']);
// 抓取相关 // 抓取相关
Route::any('/crawl/store', [app\common\controller\UsedCarDetailController::class, 'crawlAndStore']); Route::any('/crawl', [app\common\controller\UsedCarDetailController::class, 'crawl']);
Route::any('/crawl/store', [app\common\controller\UsedCarDetailController::class, 'crawlStore']);
// 重新推送 // 重新推送
Route::any('/retry/push', [app\common\controller\UsedCarDetailController::class, 'retryPush']); Route::any('/retry/push', [app\common\controller\UsedCarDetailController::class, 'retryPush']);