GoogleLinkService.php 3.4 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,$project_id)
    {
        $domain = getDomain($domain);
        // 第一次请求,获取总数
        $param = [
            'domain' => $domain,
            'page' => 1,
            'pagesize' => 1, // 只拉取一条数据,获取 total
        ];
        $queryString = http_build_query($param);
        $url = $this->url . '?' . $queryString;
        $response = http_get($url);
        if (!empty($response) && !empty($response['data']['total'])) {
            // 计算总数并一次性获取所有数据
            $param['pagesize'] = $response['data']['total'];
            $queryString = http_build_query($param);
            $url = $this->url . '?' . $queryString;
            $response = http_get($url);
            if (!empty($response['data']['data'])) {
                return $this->saveLink($response['data']['data'],$project_id,$domain);// 批量插入
            }
        }
        return false;
    }
    /**
     * @remark :拉取所有数据
     * @name   :linkData
     * @author :lyh
     * @method :post
     * @time   :2025/4/3 15:55
     */
    public function linkData($domain,$project_id, $page = 1, $pagesize = 200)
    {
        $domain = getDomain($domain);
        $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'],$project_id,$domain);// 批量插入
                }
                $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,$project_id,$domain){
        $saveData = [];
        foreach ($data as $val){
            $date = date('Y-m-d 00:00:00', time());
            if($val['status'] != 1){
                continue;
            }
            $saveData[] = [
                'url'=>$val['url'],
                'moz_da'=>$val['mozDA'],
                'status'=>$val['status'],
                'google_search'=>$val['googlesearch'],
                'date'=>$date,
                'project_id'=>$project_id,
                'domain'=>$domain,
                'url_domain'=>getDomain($val['url'] ?? '')
            ];
        }
        $linkModel = new GoogleLink();
        if(!empty($saveData)){
            $linkModel->del(['project_id'=>$project_id]);
            $linkModel->insertAll($saveData);
        }
        return $saveData;
    }
}