jingcai-php/app/Model/Lq/JclqOdds.php

119 lines
2.9 KiB
PHP
Executable File

<?php
/**
* @createtime 2023/4/26
* @author wild
* @copyright PhpStorm
*/
namespace App\Model\Lq;
use App\Enums\SaleState;
use App\Model\BaseModel;
use App\Utils\Helps;
use Illuminate\Support\Arr;
/**
* @protected $week_num
*/
class JclqOdds extends BaseModel
{
protected $casts = [
'sf_odds' => 'array',
'sf_odds_last' => 'array',
'rf_odds' => 'array',
'rf_odds_last' => 'array',
'sfc_odds' => 'array',
'sfc_odds_last' => 'array',
'dxf_odds' => 'array',
'dxf_odds_last' => 'array',
];
protected $appends = [
'issue_num_week',
'issue_num_day',
'play_num_view',
'week_num',
];
public function score()
{
return $this->belongsTo(JclqScore::class, 'match_id','match_id');
}
public function match()
{
return $this->belongsTo(JclqMatch::class, 'match_id','match_id');
}
public function scopeSelling($query)
{
return $query->where('order_state', SaleState::Selling);
}
public function getJcHomeTeamNameAttribute() {
if ($this->is_reverse == 1) {
return $this->attributes['jc_away_team_name'];
}
return $this->attributes['jc_home_team_name'];
}
public function getJcHomeTeamNameFullAttribute() {
if ($this->is_reverse == 1) {
return $this->attributes['jc_away_team_name_full'];
}
return $this->attributes['jc_home_team_name_full'];
}
public function getJcAwayTeamNameAttribute() {
if ($this->is_reverse == 1) {
return $this->attributes['jc_home_team_name'];
}
return $this->attributes['jc_away_team_name'];
}
public function getJcAwayTeamNameFullAttribute() {
if ($this->is_reverse == 1) {
return $this->attributes['jc_home_team_name_full'];
}
return $this->attributes['jc_away_team_name_full'];
}
public function getPlayNumViewAttribute() {
return sprintf('%03d', $this->play_num);
}
public function getWeekNumAttribute() {
$week = self::getIssueNumWeek($this->issue_num);
return Helps::weekStr2Num($week);
}
public function getIssueNumWeekAttribute() {
return self::getIssueNumWeek($this->issue_num);
}
public function getIssueNumDayAttribute()
{
return self::getIssueNumDay($this->issue_num);
}
public static function getIssueNumWeek($issueNum)
{
$arr = explode('/', $issueNum);
return Arr::get($arr, 1);
}
public static function getIssueNumDay($issueNum)
{
$arr = explode('/', $issueNum);
return Arr::get($arr, 0);
}
public function getCloseTime($earlySecond) {
$time = strtotime($this->close_time);
return date('Y-m-d H:i:s', $time - $earlySecond);
}
public function weekPlayFormat()
{
return sprintf('%s%03d', $this->week_num, $this->play_num);
}
}