jingcai-php/app/Console/Commands/Plw/SyncPlwIssue.php

92 lines
2.4 KiB
PHP
Executable File

<?php
namespace App\Console\Commands\Plw;
use App\Enums\BoolEnum;
use App\Model\Plw;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use QL\QueryList;
class SyncPlwIssue extends Command
{
/**
* 这个就是命令名称
*/
protected $signature = 'plw:sync_plw_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');
$plw = Plw::where('close_time', '>', $cdate)->where('enable', BoolEnum::YES)->first();
if ($plw) {
Log::info('SyncPlwIssue 已存在在售期号:'.$plw->issue_num);
return;
}
Log::info('SyncPlwIssue 开始同步排列三的开售期号');
$url = 'https://trade.500.com/plw/';
$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('SyncPlwIssue 数据', $logData);
$issue = $issueMat[0];
$closeTime = $closeMat[0];
if (!$issue) {
Log::error('SyncPlwIssue 获取排列三当前期号失败');
return;
}
$plw = Plw::where('issue_num', $issue)->first();
if ($plw) {
return;
}
Plw::where('enable', BoolEnum::YES)
->where('state', BoolEnum::NO)
->update([
'enable' => BoolEnum::NO
]);
$plw = new Plw();
$plw->enable = BoolEnum::YES;
$plw->issue_num = $issue;
$plw->close_time = date('Y') . '-' . $closeTime;
$plw->prize_time = date('Y-m-d H:i:s', strtotime($plw->close_time) + 25 * 60);
$plw->save();
}
}