jingcai-php/app/Console/Commands/Zq/SyncCompetitionScore.php

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();
}
}
}