GeoQuestionResult.php 2.4 KB
<?php
/**
 * @remark :
 * @name   :GeoQuestionResult.php
 * @author :lyh
 * @method :post
 * @time   :2025/7/3 15:13
 */

namespace App\Console\Commands\Geo;

use App\Models\Geo\GeoPlatform;
use App\Models\Geo\GeoQuestion;
use App\Services\Geo\GeoService;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;

class GeoQuestionResult extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'geo_question_result';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'geo设置请求获取结果';

    public function handle(){
        while (true){
            $task_id = $this->getTaskId();
            $questionModel = new GeoQuestion();//问题
            $info = $questionModel->read(['id'=>$task_id]);
            $questionArr = $info['question'];
            if(empty($questionArr)){
                echo date('Y-m-d H:i:s').'当前任务不存在问题。'.PHP_EOL;
                $questionModel->edit(['status'=>2],['id'=>$task_id]);
            }
            //获取平台信息
            $platformModel = new GeoPlatform();//平台
            $platformArr = $platformModel->selectField(['status'=>$platformModel::STATUS_ON],'en_name');
            if(empty($platformArr)){
                echo date('Y-m-d H:i:s').'请求平台为空。'.PHP_EOL;
                continue;
            }
            $geoService = new GeoService();
            foreach ($questionArr as $q_item){
                foreach ($platformArr as $p_item){
                    $data = $geoService->setWebSearchChatAction($q_item,$p_item);
                    dd($data);
                }
            }
        }
    }

    /**
     * @remark :拉取任务id
     * @name   :getTaskId
     * @author :lyh
     * @method :post
     * @time   :2025/7/3 15:15
     */
    public function getTaskId(){
        $task_id = Redis::rpop('geo_question_result');
        if(empty($task_id)){
            $questionModel = new GeoQuestion();
            $ids = $questionModel->selectField(['status'=>1,'next_time'=>['<=',date('Y-m-d')]],'id');
            if(!empty($ids)){
                foreach ($ids as $id) {
                    Redis::lpush('geo_question_result', $id);
                }
            }
            $task_id = Redis::rpop('geo_question_result');
        }
        return $task_id;
    }
}