GoogleLinkService.php 2.7 KB
<?php
/**
 * @remark :
 * @name   :GoogleLinkService.php
 * @author :lyh
 * @method :post
 * @time   :2025/4/3 15:06
 */

namespace App\Services;

use App\Models\GoogleSearch\GoogleLink;

class GoogleLinkService
{
    public $url = 'https://www.cmer.site/api/outlinks';

    /**
     * @remark :只拉取1页数据
     * @name   :linkPageData
     * @author :lyh
     * @method :post
     * @time   :2025/4/3 15:54
     */
    public function linkPageData($domain, $page = 1, $pagesize = 200)
    {
        $param = [
            'domain' => $domain,
            'page' => $page,
            'pagesize' => $pagesize,
        ];
        $queryString = http_build_query($param);
        $url = $this->url . '?' . $queryString;
        $response = http_get($url);
        if (!empty($response) && !empty($response['data']['data'])) {
            if (!empty($response['data']['data'])) {
                return $this->saveLink($response['data']['data']);// 批量插入
            }
        }
        return true;
    }

    /**
     * @remark :拉取所有数据
     * @name   :linkData
     * @author :lyh
     * @method :post
     * @time   :2025/4/3 15:55
     */
    public function linkData($domain, $page = 1, $pagesize = 200)
    {
        $param = [
            'domain' => $domain,
            'page' => $page,
            'pagesize' => $pagesize,
        ];
        do {
            $queryString = http_build_query($param);
            $url = $this->url . '?' . $queryString;
            $response = http_get($url);
            if (!empty($response) && !empty($response['data']['data'])) {
                if (!empty($response['data']['data'])) {
                    $this->saveLink($response['data']['data']);// 批量插入
                }
                $page++;
                $param['page'] = $page; // 更新页码
            } else {
                break; // 遇到错误或空数据时跳出循环
            }
        } while ($page <= $response['data']['last_page']); // 循环直到拉取完所有页数据
        return true;
    }

    /**
     * @remark :保存数据库
     * @name   :saveLink
     * @author :lyh
     * @method :post
     * @time   :2025/4/3 15:26
     */
    public function saveLink($data){
        $saveData = [];
        foreach ($data as $val){
            $timestamp = strtotime($val['created_at']);
            $date = date('Y-m-d H:i:s', $timestamp ?? time());
            $saveData[] = [
                'url'=>$val['url'],
                'moz_da'=>$val['mozDA'],
                'status'=>$val['status'],
                'google_search'=>$val['googlesearch'],
                'date'=>$date
            ];
        }
        $linkModel = new GoogleLink();
        $linkModel->insertAll($saveData);
        return $saveData;
    }
}