jingcai-php/app/Console/Commands/Dlt/SyncDltIssue.php

108 lines
3.0 KiB
PHP
Executable File

<?php
namespace App\Console\Commands\Dlt;
use App\Enums\BoolEnum;
use App\Enums\LottType;
use App\Model\Dlt;
use App\Model\LotteryType;
use App\Model\Lq\JclqCompetition;
use App\Service\External\AlStatService;
use Illuminate\Console\Command;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Log;
use QL\QueryList;
class SyncDltIssue extends Command
{
/**
* 免费数据接口
* https://www.jisuapi.com/api/caipiao/
* 这个就是命令名称
*/
protected $signature = 'dlt:sync_dlt_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');
$dlt = Dlt::where('close_time', '>', $cdate)->where('enable', BoolEnum::YES)->first();
if ($dlt) {
Log::info('SyncDltIssue 已存在在售期号:'.$dlt->issue_num);
return;
}
Log::info('SyncDltIssue开始同步大乐透的开售期号');
$url = 'https://trade.500.com/dlt/';
$con = file_get_contents($url);
$query = QueryList::setHtml($con);
$issueString = $query->find('.logo-text > .f14')->text();
$closeString = $query->find('.logo-info')->text();
$prizeString = $query->find('.logo-info > .gray > .ff-arial')->text();
preg_match('/\d+/', $issueString, $issueMat);
preg_match('/(\d{2}-\d{2}\s\d{2}:\d{2})/', $closeString, $closeMat);
$logData = [
'$issueString' => $issueString,
'$closeString' => $closeString,
'$prizeString' => $prizeString,
'$issueMat' => $issueMat,
'$closeMat' => $closeMat,
];
Log::info('SyncDltIssue 数据', $logData);
$issue = $issueMat[0];
$closeTime = $closeMat[0];
if (!$issue) {
Log::error('SyncDltIssue 获取大乐透当前期号失败');
return;
}
$dlt = Dlt::where('issue_num', $issue)->first();
if ($dlt) {
return;
}
Dlt::where('enable', BoolEnum::YES)
->where('state', BoolEnum::NO)
->update([
'enable' => BoolEnum::NO
]);
$dlt = new Dlt();
$dlt->enable = BoolEnum::YES;
$dlt->issue_num = $issue;
$dlt->prize = $prizeString;
$dlt->close_time = date('Y') . '-' . $closeTime;
$dlt->prize_time = date('Y-m-d H:i:s', strtotime($dlt->close_time) + 25 * 60);
$dlt->save();
$dltLottery = LotteryType::where('type', LottType::DLT)->first();
if ($dltLottery) {
$dltLottery->info = '奖池'.$prizeString;
$dltLottery->save();
}
}
}