jingcai-php/app/Console/Commands/Pls/SyncPlsIssue.php

92 lines
2.4 KiB
PHP
Executable File

<?php
namespace App\Console\Commands\Pls;
use App\Enums\BoolEnum;
use App\Model\Pls;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use QL\QueryList;
class SyncPlsIssue extends Command
{
/**
* 这个就是命令名称
*/
protected $signature = 'pls:sync_pls_issue';
/**
* 命令的说明描述
* @var string
*/
protected $description = '';
/**
* 创建命令的构造方法。
* @param string $words 传入的字符参数
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* 命令的具体执行触发方法
* @return mixed
*/
public function handle()
{
$cdate = date('Y-m-d H:i:s');
$pls = Pls::where('close_time', '>', $cdate)->where('enable', BoolEnum::YES)->first();
if ($pls) {
Log::info('SyncPlsIssue 已存在在售期号:'.$pls->issue_num);
return;
}
Log::info('SyncPlsIssue 开始同步排列三的开售期号');
$url = 'https://trade.500.com/pls/';
$con = file_get_contents($url);
$query = QueryList::setHtml($con);
$issueString = $query->find('.logo-text > .f14')->text();
$closeString = $query->find('.logo-info')->text();
preg_match('/\d+/', $issueString, $issueMat);
preg_match('/(\d{2}-\d{2}\s\d{2}:\d{2})/', $closeString, $closeMat);
$logData = [
'$issueString' => $issueString,
'$closeString' => $closeString,
'$issueMat' => $issueMat,
'$closeMat' => $closeMat,
];
Log::info('SyncPlsIssue 数据', $logData);
$issue = $issueMat[0];
$closeTime = $closeMat[0];
if (!$issue) {
Log::error('SyncPlsIssue 获取排列三当前期号失败');
return;
}
$pls = Pls::where('issue_num', $issue)->first();
if ($pls) {
return;
}
Pls::where('enable', BoolEnum::YES)
->where('state', BoolEnum::NO)
->update([
'enable' => BoolEnum::NO
]);
$pls = new Pls();
$pls->enable = BoolEnum::YES;
$pls->issue_num = $issue;
$pls->close_time = date('Y') . '-' . $closeTime;
$pls->prize_time = date('Y-m-d H:i:s', strtotime($pls->close_time) + 25 * 60);
$pls->save();
}
}