105 lines
3.5 KiB
PHP
Executable File
105 lines
3.5 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Console\Commands\Zq;
|
|
|
|
use App\Model\Zq\ZqCompetition;
|
|
use App\Model\Zq\ZqCompetitionScore;
|
|
use App\Model\Zq\ZqCompetitionScoreHome;
|
|
use App\Service\External\AlStatService;
|
|
use Illuminate\Console\Command;
|
|
use Illuminate\Support\Arr;
|
|
|
|
class SyncCompetitionScore extends Command
|
|
{
|
|
/**
|
|
* 这个就是命令名称
|
|
*/
|
|
protected $signature = 'zq:sync_competition_score';
|
|
|
|
/**
|
|
* 命令的说明描述
|
|
* @var string
|
|
*/
|
|
protected $description = '';
|
|
|
|
/**
|
|
* 创建命令的构造方法。
|
|
* @param string $words 传入的字符参数
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* 命令的具体执行触发方法
|
|
* @return mixed
|
|
*/
|
|
public function handle()
|
|
{
|
|
|
|
ZqCompetition::select(['id','competition_id', 'curr_season'])
|
|
->chunkById(500, function($competitions) {
|
|
foreach ($competitions as $competition) {
|
|
$this->syncScore($competition->competition_id, $competition->curr_season);
|
|
}
|
|
});
|
|
}
|
|
|
|
public function syncScore($competitionId, $season) {
|
|
/** @var AlStatService $alStatService */
|
|
$alStatService = app(AlStatService::class);
|
|
$competitions = $alStatService->getZqLeaqueTableDetail($competitionId, $season);
|
|
if (!$competitions) {
|
|
return;
|
|
}
|
|
|
|
$allScores = Arr::get($competitions, 'overall');
|
|
if (!empty($allScores)) {
|
|
// $this->syncAll($allScores, 1);
|
|
}
|
|
|
|
$homeScores = Arr::get($competitions, 'home');
|
|
if (!empty($homeScores)) {
|
|
$this->syncAll($homeScores, 2);
|
|
}
|
|
|
|
$awayScores = Arr::get($competitions, 'away');
|
|
if (!empty($awayScores)) {
|
|
$this->syncAll($awayScores, 3);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public function syncAll($scores, $type) {
|
|
foreach ($scores as $item) {
|
|
|
|
$competitionScore = ZqCompetitionScore::where('competition_score_id', $item['id'])->first();
|
|
if (!$competitionScore) {
|
|
$competitionScore = new ZqCompetitionScore();
|
|
$competitionScore->competition_score_id = $item['id'];
|
|
$competitionScore->type = $type;
|
|
}
|
|
|
|
$competitionScore->competition_id = intval(Arr::get($item, 'competitionId'));
|
|
$competitionScore->season = strval(Arr::get($item, 'season'));
|
|
$competitionScore->team_id = intval(Arr::get($item, 'teamId'));
|
|
$competitionScore->team_name = strval(Arr::get($item, 'teamName'));
|
|
$competitionScore->group_id = intval(Arr::get($item, 'groupId'));
|
|
$competitionScore->matches = intval(Arr::get($item, 'matches'));
|
|
$competitionScore->wins = intval(Arr::get($item, 'wins'));
|
|
$competitionScore->draws = intval(Arr::get($item, 'draws'));
|
|
$competitionScore->losts = intval(Arr::get($item, 'losts'));
|
|
$competitionScore->goal_for = intval(Arr::get($item, 'goalFor'));
|
|
$competitionScore->goal_aga = intval(Arr::get($item, 'goalAga'));
|
|
$competitionScore->goal_diff = intval(Arr::get($item, 'goalDiff'));
|
|
$competitionScore->points = intval(Arr::get($item, 'points'));
|
|
$competitionScore->position = intval(Arr::get($item, 'position'));
|
|
$competitionScore->qualificate = strval(Arr::get($item, 'qualificate'));
|
|
$competitionScore->save();
|
|
}
|
|
}
|
|
}
|