SyncInquiry.php 2.4 KB
<?php
/**
 * Created by PhpStorm.
 * User: zhl
 * Date: 2024/09/30
 * Time: 14:01
 */
namespace App\Console\Commands\Inquiry;

use App\Enums\Common\Code;
use App\Helper\Arr;
use App\Models\Inquiry\ReInquiryForm;
use App\Utils\HttpUtils;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Console\Command;

/**
 * Class SyncInquiry
 * @package App\Console\Commands\Inquiry
 */
class SyncInquiry extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'sync_inquiry';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '同步询盘信息';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * TODO 定时任务,去同步询盘列表
     * FIXME 不在同步时直接拆分转发目标, 是考虑到之后有其他渠道也需要转发, 就只需要在询盘表添加数据即可完成转发功能
     * @return bool
     */
    public function handle()
    {
        while (true) {
            $result = $this->getInquiry();
            if (!$result){
                //5分钟同步一次
                sleep(300);
            }
            // 询盘数据入库
            foreach ($result as $key=>$val) {
                ReInquiryForm::createInquiry($val['id'], $val['origin_id'], $val['adset_id'], $val['adset_name'], $val['ad_id'], $val['ad_name'], $val['full_name'], $val['email'], $val['phone_number'], $val['whatapp'], $val['ai_inquery'], $val['country'], $val['inquiry_time']);
            }
        }
    }

    /**
     * 获取远程询盘信息
     * @return array
     * @throws \GuzzleHttp\Exception\GuzzleException
     */
    public function getInquiry()
    {
        $last_origin_id = ReInquiryForm::orderBy('id', 'desc')->value('id') ?: 0;
        try {
            $res = HttpUtils::get('https://fob.ai.cc/api/fb_inquery_lists', ['order'=> 'asc', 'id' => $last_origin_id, 'limit' => 100]);
            $res = Arr::s2a($res);
        } catch (\Exception | GuzzleException $e) {
            $this->output($e->getMessage());
            return [];
        }
        return $res['data']['data'] ?? [];
    }


    public function output($message)
    {
        echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
    }
}