getOddsData = new GetOddsData(); } /** * @param $ret 提交参数 * @param $source 数据源条件 * @return array * @throws \Exception * 获取不同状态下的赛事相关数据 */ public function typeData($ret,$source){ //根据球类代码 获取相关model $models = getModels($ret['game_code']); $model_match = $models['model_match']; //获取 不同状态的查询条件 $where = getState($ret['type_code'],$model_match); //根据联赛id查询 if(!empty($ret['lg_id'])){ $lg_id = $ret['lg_id']; } //根据搜索查询 if(!empty($ret['search'])){ $search = $ret['search']; } switch ($ret['type_code']){ case 'StRollBall'://滚球 $data = $this->getRollBall($source,$models,$where,$ret,$search); break; case 'StSoon'://即将 $data = $this->getSoon($source,$models,$where,$lg_id,$search); break; case 'StToday'://今日 $data = $this->getToday($source,$models,$where,$lg_id,$search); break; case 'StMorningPlate'://早盘 //默认当天 if(empty($ret['match_date'])){ $match_date = date("Y-m-d"); }else{ if($ret['match_date'] != 'other'){ $match_date = $ret['match_date']; }else{ $match_date = 'other'; } } $data = $this->getMorningPlate($source,$models,$where,$lg_id,$search,$match_date); break; case 'StStringScene'://串场 if(empty($ret['str_type']) || $ret['str_type'] ==0){//赛事 $data = $this->getStringScene($source,$models,$where,$lg_id,$search); } if($ret['str_type'] == 1){//参赛表 } if($ret['str_type'] == 2){//冠军盘口 $where = getState('StChampion',$model_match); $data = $this->getChampion($source,$models,$where,$lg_id,$search,'StChampion'); } break; case 'StChampion'://冠军 $data = $this->getChampion($source,$models,$where,$lg_id,$search,$ret['type_code']); break; default: throw new \Exception(Render([], '10002', lang('Tips','Sports')->get('PARAM_ERROR'))); } return $data; } /** * 获取滚球数据 */ public function getRollBall($source,$models,$where,$ret,$search=''){ $model_match = $models['model_match']; $model_odds = $models['model_odds']; $model_league = $models['model_league']; $model_result = $models['model_result']; //当前状态下所有联赛 $data = lm($model_league,"Sports") ->join($model_match,$model_match.'.lg_id',$model_league.'.lg_id') ->join($model_result,$model_result.'.match_id',$model_match.'.match_id') ->select($model_league.'.lg_id',$model_league.'.name_chinese as leagueName') ->distinct($model_league.'.name_chinese') ->where($model_league.'.source',$source['source']) ->where($where) ->where(function($query)use ($model_match,$search){ $query->where($model_match.'.home_team','like','%'.$search.'%') ->orWhere(function($query)use ($model_match,$search) { $query->where($model_match . '.guest_team', 'like', '%' . $search . '%'); }); }) ->get() ->toarray(); if(empty($data)){ $data = []; return $data; } //统计联赛下的赛事及查询赛事 foreach($data as $k => $v){ $data[$k]['matchNum'] = lm($model_match,"Sports") ->where($source) ->where('lg_id',$v['lg_id']) ->where($where) ->count(); $data[$k]['matchData'] = lm($model_match,"Sports") ->leftjoin($model_result,$model_result.'.match_id',$model_match.'.match_id') ->select($model_match.'.match_id',$model_match.'.tag','match_date',$model_match.'.match_time',$model_match.'.home_team',$model_match.'.guest_team','home_score','guest_score',$model_result.'.match_time as a_time','match_process') ->where($model_match.'.source',$source['source']) ->where($model_match.'.lg_id',$v['lg_id']) ->where($where) ->get() ->toarray(); } foreach($data as $k => $v){ foreach($v['matchData'] as $kk => $vv){ $oddsData= lm($model_match,"Sports") ->leftjoin($model_odds,$model_odds.'.match_id',$model_match.'.match_id') ->select($model_odds.'.id','p_code','odds_code',$model_odds.'.status','odds','condition','sort') ->where($model_match.'.source',$source['source']) ->where([$model_odds.'.match_id' => $vv['match_id'],$model_odds.'.type'=>0]) // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s")) ->where(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','concede_home') ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','concede_guest'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','size_home'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','size_guest'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','capot_home'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','capot_dogfall'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','capot_guest'); }); }) ->get() ->toarray(); //根据 排序 获取 最新让球/大小玩法赔率 $sortData = array_column($oddsData,'sort'); array_multisort($sortData,SORT_DESC,$oddsData); $zu = []; foreach ($oddsData as $key1 =>$item1){ $zu[$item1['p_code']][] = $item1; } $c_s = array_slice($zu['concede_size'],0,4);//让球/大小 前四条 放入 $capot = $zu['capot'];//独赢 $data[$k]['matchData'][$kk]['oddsData'] = [$c_s,$capot]; } } return $data; } /** * 获取即将数据 */ public function getSoon($source,$models,$where,$lg_id=0,$search=''){ $model_match = $models['model_match']; $model_odds = $models['model_odds']; $model_league = $models['model_league']; $model_result = $models['model_result']; //当前状态下所有联赛 $data = lm($model_league,"Sports") ->join($model_match,$model_match.'.lg_id',$model_league.'.lg_id') ->select($model_league.'.lg_id',$model_league.'.name_chinese as leagueName') ->distinct($model_league.'.name_chinese') ->where($model_league.'.source',$source['source']) ->where($where) ->where(function($query)use ($model_match,$search){ $query->where($model_match.'.home_team','like','%'.$search.'%') ->orWhere(function($query)use ($model_match,$search) { $query->where($model_match . '.guest_team', 'like', '%' . $search . '%'); }); }) ->get() ->toarray(); if(empty($data)){ $data = []; return $data; } //统计联赛下的赛事及查询赛事 foreach($data as $k => $v){ $data[$k]['matchNum'] = lm($model_match,"Sports") ->where($source) ->where('lg_id',$v['lg_id']) ->where($where) ->count(); $data[$k]['matchData'] = lm($model_match,"Sports") ->select($model_match.'.match_id',$model_match.'.tag','match_date',$model_match.'.match_time',$model_match.'.home_team',$model_match.'.guest_team') ->where($source) ->where($model_match.'.lg_id',$v['lg_id']) ->where($where) ->get() ->toarray(); } foreach($data as $k => $v){ foreach($v['matchData'] as $kk => $vv){ $wait_time = ceil(((strtotime( $vv['match_time']))-time())/60); $data[$k]['matchData'][$kk]['wait_time'] = $wait_time;//追加距离开赛时间 $oddsData= lm($model_match,"Sports") ->leftjoin($model_odds,$model_odds.'.match_id',$model_match.'.match_id') ->select($model_odds.'.id','odds_only','p_code','odds_code',$model_odds.'.status','odds','condition','sort') ->where($model_match.'.source',$source['source']) ->where([$model_odds.'.match_id' => $vv['match_id'],$model_odds.'.type'=>0]) // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s")) ->where(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','concede_home') ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','concede_guest'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','size_home'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','size_guest'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','capot_home'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','capot_dogfall'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','capot_guest'); }); }) ->get() ->toarray(); //根据 排序 获取 最新让球/大小玩法赔率 $sortData = array_column($oddsData,'sort'); array_multisort($sortData,SORT_DESC,$oddsData); $zu = []; foreach ($oddsData as $key1 =>$item1){ $zu[$item1['p_code']][] = $item1; } $c_s = array_slice($zu['concede_size'],0,4);//让球/大小 前四条 放入 $capot = $zu['capot'];//独赢 $data[$k]['matchData'][$kk]['oddsData'] = [$c_s,$capot]; } } return $data; } /** * 获取今日数据 */ public function getToday($source,$models,$where,$lg_id=0,$search=''){ //获取model $model_match = $models['model_match']; $model_odds = $models['model_odds']; $model_league = $models['model_league']; $model_result = $models['model_result']; //根据联赛id 获取联赛下 赛事赔率数据 if($lg_id >0){ $leagueData = $this->getMatchOdds($source,$model_league,$model_match,$model_odds,$where,$search,$lg_id); return $leagueData; } $data = $this->getMatch($source,$model_league,$model_match,'',$search,$where); return $data; } /** * 获取早盘数据 */ public function getMorningPlate($source,$models,$where,$lg_id=0,$search='',$time=''){ //获取model $model_match = $models['model_match']; $model_odds = $models['model_odds']; $model_league = $models['model_league']; $model_result = $models['model_result']; //根据联赛id 获取联赛下 赛事赔率数据 if($lg_id >0){ $leagueData = $this->getMatchOdds($source,$model_league,$model_match,$model_odds,$where,$search,$lg_id,$time); return $leagueData; } $data = $this->getMatch($source,$model_league,$model_match,'',$search,$where,$time); return $data; } /** * 获取串场数据 */ public function getStringScene($source,$models,$where,$lg_id=0,$search='',$time){ //获取model $model_match = $models['model_match']; $model_odds = $models['model_odds']; $model_league = $models['model_league']; $model_result = $models['model_result']; //根据联赛id 获取联赛下 赛事赔率数据 if($lg_id >0){ $leagueData = $this->getMatchOdds($source,$model_league,$model_match,$model_odds,$where,$search,$lg_id,$time); return $leagueData; } $data = $this->getMatch($source,$model_league,$model_match,'',$search,$where,$time); return $data; } /** * 获取冠军数据 */ public function getChampion($source,$models,$where,$lg_id=0,$search='',$type_code=''){ //获取model $model_odds = $models['model_odds']; $model_league = $models['model_league']; //根据联赛id 获取联赛下 冠军玩法盘口 if($lg_id >0){ $last_time = lm($model_league, 'Sports') ->select('last_time') // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s")) ->where($source) ->where('lg_id',$lg_id) ->first()->last_time; $championData = lm($model_odds, 'Sports') ->select("id","lg_id","p_code","odds_code","team","odds","sort","status","odds_only") // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s")) ->where($source) ->where('lg_id',$lg_id) ->where($where) ->groupBy("id","lg_id","p_code","odds_code","team","odds","sort","status","odds_only") ->get()->toArray(); //按p_code分组 $p_code=array(); foreach($championData as $k=>$v){ $p_code[$v['p_code']][]=$v; } $sd = []; foreach ($p_code as $k1=>$v1){ foreach ($v1 as $k2=>$v2){ $sd[$v2['p_code']]['last_time'] =$last_time; $sd[$v2['p_code']][$v2['odds_code']][] = $v2; } } return $sd; } //获取国家/洲下所有联赛及数量 $data = $this->getMatch($source,$model_league,'',$model_odds,$search,$where,'',$type_code); return $data; } /** * 获取国家/洲 下联赛 */ public function getMatch($source,$model_league,$model_match='',$model_odds='',$search,$where,$time='',$type_code=''){ //国家下所有联赛 $country = lm($model_league,"Sports") ->leftjoin('st_country','st_country.country_id',$model_league.'.country_id') ->select('st_country.country_id','st_country.name_chinese as region') // ->select('st_country.country_id as region_id','st_country.name_chinese as region',$model_league.'.lg_id', $model_league.'.name_chinese as league') ->distinct('st_country.name_chinese') ->where($model_league.'.source',$source['source']) ->where($model_league.'.name_chinese','like','%'.$search.'%') ->get() ->toArray(); //洲下所有联赛 $area = lm($model_league,"Sports") ->leftjoin('st_area','st_area.id',$model_league.'.area_id') ->select('st_area.id as area_id','st_area.title as region') // ->select('st_area.id as region_id','st_area.title as region',$model_league.'.lg_id', $model_league.'.name_chinese as league') ->distinct('st_area.title') ->where($model_league.'.source',$source['source']) ->where($model_league.'.name_chinese','like','%'.$search.'%') ->get() ->toArray(); if($type_code != 'StChampion'){//非冠军赛事 $data = $this->getMatchNum($source,$country,$area,$model_league,$model_match,$model_odds,$where,$search,$time); }else{//冠军赛事 $data = $this->getMatchStChampionNum($source,$country,$area,$model_league,$model_match,$model_odds,$where,$search,$time); } return $data; } /** * 获取联赛下赛事 数量 * 非冠军盘口 */ public function getMatchNum($source,$country,$area,$model_league,$model_match='',$model_odds='',$where,$search,$time='',$type=0){ //统计国家下联赛-赛事/盘口数量 if(!empty($country)){ foreach($country as $k => $v) { $country[$k]['league_count'] = lm($model_league, 'Sports') ->select('lg_id', 'name_chinese as league') ->where($source) ->where('country_id', $v['country_id']) ->where($model_league.'.name_chinese','like','%'.$search.'%') ->get()->toarray(); } foreach ($country as $k => $v) { foreach($v['league_count'] as $kk => $vv ){ if(!empty($model_match)){//非冠军玩法,获取联赛下赛事数量 if(empty($time)){ $country[$k]['league_count'][$kk]['count'] = lm($model_match, 'Sports') ->select("match_id") ->where($source) ->where('lg_id',$vv['lg_id']) ->where($where) ->count("*"); }else{//早盘 下有时间查询 if($time == 'other'){//早盘 一周后 $country[$k]['league_count'][$kk]['count'] = lm($model_match, 'Sports') ->select("match_id") ->where($source) ->where('lg_id',$vv['lg_id']) ->where($where) ->where('match_date','>',date("Y-m-d",strtotime("+1weeks",strtotime(date('Y-m-d',time()))))) ->count("*"); }else{ $country[$k]['league_count'][$kk]['count'] = lm($model_match, 'Sports') ->select("match_id") ->where($source) ->where('lg_id',$vv['lg_id']) ->where($where) ->where('match_date',$time) ->count("*"); } } } if($country[$k]['league_count'][$kk]['count'] == 0){ unset($country[$k]['league_count'][$kk]); } } } } //统计 地区 联赛-赛事/盘口数量 if(!empty($area)){ foreach($area as $k => $v) { $area[$k]['league_count'] = lm($model_league, 'Sports') ->select('lg_id', 'name_chinese as league') ->where($source) ->where('area_id', $v['area_id']) ->where($model_league.'.name_chinese','like','%'.$search.'%') ->get()->toarray(); } foreach ($area as $k => $v) { foreach($v['league_count'] as $kk => $vv ){ if(!empty($model_match)){//非冠军玩法,获取联赛下赛事数量 if(empty($time)){ $area[$k]['league_count'][$kk]['count'] = lm($model_match, 'Sports') ->select("match_id") ->where($source) ->where('lg_id',$vv['lg_id']) ->where($where) ->count("*"); }else { if ($time == 'other') {// 今日 一周后 $area[$k]['league_count'][$kk]['count'] = lm($model_match, 'Sports') ->select("match_id") ->where($source) ->where('lg_id', $vv['lg_id']) ->where($where) ->where('match_date', '>', date("Y-m-d", strtotime("+1weeks", strtotime(date('Y-m-d', time()))))) ->count("*"); } else {//今日 大于今日 $area[$k]['league_count'][$kk]['count'] = lm($model_match, 'Sports') ->select("match_id") ->where($source) ->where('lg_id',$vv['lg_id']) ->where($where) ->where('match_date',$time) ->count("*"); } } } if($area[$k]['league_count'][$kk]['count'] == 0){ unset($area[$k]['league_count'][$kk]); } } } } //处理空联赛国家 $countryData = handleArr($country); $areaData = handleArr($area); //合并数组 $data = array_merge($countryData,$areaData); return $data; } /** * 获取联赛下赛事 数量 * 冠军盘口 */ public function getMatchStChampionNum($source,$country,$area,$model_league,$model_match='',$model_odds='',$where,$search,$time='',$type=0){ $leagueData = lm($model_league,'Sports') ->select('id','lg_id','name_chinese as league','country_id','area_id') ->where($source) ->where($model_league.'.name_chinese','like','%'.$search.'%') ->get() ->toArray(); $oddsData = lm($model_odds,'Sports') ->select('id','lg_id','p_code') ->distinct("p_code")//去重 ->where($where) ->where($source) ->get() ->toArray(); //按国家 $countryData = []; if(!empty($country) and !empty($leagueData) and($oddsData)){ foreach ($country as $k=>$v){ if($v['country_id']){ $countryData[$k] = $v; foreach ($leagueData as $kk=>$vv){ if($v['country_id'] == $vv['country_id']){ $countryData[$k]['league_count'][] = $vv; } } } } } //去除无联赛 国家 foreach ($countryData as $k=>$v){ if(count($v) == 2){ unset($countryData[$k]); } } //按地区 $areaData = []; if(!empty($area) and !empty($leagueData) and($oddsData)){ foreach ($area as $k=>$v){ if($v['area_id']){ $areaData[$k] = $v; foreach ($leagueData as $kk=>$vv){ if($v['area_id'] == $vv['area_id']){ $areaData[$k]['league_count'][] = $vv; } } } } } //去除无联赛 地区 foreach ($areaData as $k=>$v){ if(count($v) == 2){ unset($areaData[$k]); } } $countryData = array_gj_tt($countryData,$oddsData); $areaData = array_gj_tt($areaData,$oddsData); $data = array_merge($countryData,$areaData); return $data; } /** * 获取联赛下 赛事赔率 */ public function getMatchOdds($source,$model_league,$model_match,$model_odds,$where,$search,$lg_id,$time=''){ $leagueData = lm($model_league,"Sports") ->select('lg_id','name_chinese as leagueName') ->where($source) ->where('lg_id',$lg_id) ->first(); if(!empty($time)){//早盘 按时间查询 if($time == 'other'){//早盘 一周后 $matchData = lm($model_match,"Sports") ->select($model_match.'.match_id',$model_match.'.tag','match_date',$model_match.'.match_time',$model_match.'.home_team',$model_match.'.guest_team') ->where($source) ->where($model_match.'.lg_id',$lg_id) ->where($where) ->where('match_date','>',date("Y-m-d",strtotime("+1weeks",strtotime(date('Y-m-d',time()))))) ->where(function($query)use ($model_match,$search){ $query->where($model_match.'.home_team','like','%'.$search.'%') ->orWhere(function($query)use ($model_match,$search) { $query->where($model_match . '.guest_team', 'like', '%' . $search . '%'); }); }) ->get() ->toarray(); }else{ if($time == date('Y-m-d')){//早盘今天 $matchData = lm($model_match,"Sports") ->select($model_match.'.match_id',$model_match.'.tag','match_date',$model_match.'.match_time',$model_match.'.home_team',$model_match.'.guest_team') ->where($source) ->where($model_match.'.lg_id',$lg_id) ->where('is_morningplate','=',1) ->where('match_date',$time) ->where('match_time','>',date("H:i:s", time())) ->where(function($query)use ($model_match,$search){ $query->where($model_match.'.home_team','like','%'.$search.'%') ->orWhere(function($query)use ($model_match,$search) { $query->where($model_match . '.guest_team', 'like', '%' . $search . '%'); }); }) ->get() ->toarray(); }else{//早盘 今天以后 $matchData = lm($model_match,"Sports") ->select($model_match.'.match_id',$model_match.'.tag','match_date',$model_match.'.match_time',$model_match.'.home_team',$model_match.'.guest_team') ->where($source) ->where($model_match.'.lg_id',$lg_id) ->where($where) ->where('match_date',$time) ->where(function($query)use ($model_match,$search){ $query->where($model_match.'.home_team','like','%'.$search.'%') ->orWhere(function($query)use ($model_match,$search) { $query->where($model_match . '.guest_team', 'like', '%' . $search . '%'); }); }) ->get() ->toarray(); } } }else{ $matchData = lm($model_match,"Sports") ->select($model_match.'.match_id',$model_match.'.tag','match_date',$model_match.'.match_time',$model_match.'.home_team',$model_match.'.guest_team') ->where($source) ->where($model_match.'.lg_id',$lg_id) ->where($where) ->where(function($query)use ($model_match,$search){ $query->where($model_match.'.home_team','like','%'.$search.'%') ->orWhere(function($query)use ($model_match,$search) { $query->where($model_match . '.guest_team', 'like', '%' . $search . '%'); }); }) ->get() ->toarray(); } foreach($matchData as $kk => $vv) { $oddsData = lm($model_match, "Sports") ->leftjoin($model_odds, $model_odds . '.match_id', $model_match . '.match_id') ->select($model_odds . '.id', 'odds_only','p_code', 'odds_code', $model_odds . '.status', 'odds', 'condition', 'sort') ->where($model_match.'.source',$source['source']) ->where([$model_odds . '.match_id' => $vv['match_id'], $model_odds . '.type' => 0]) // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s")) ->where(function ($query) use ($model_odds) { $query->where($model_odds . '.odds_code', 'concede_home') ->orWhere(function ($query) use ($model_odds) { $query->where($model_odds . '.odds_code', 'concede_guest'); }) ->orWhere(function ($query) use ($model_odds) { $query->where($model_odds . '.odds_code', 'size_home'); }) ->orWhere(function ($query) use ($model_odds) { $query->where($model_odds . '.odds_code', 'size_guest'); }); }) ->get() ->toarray(); //根据 排序 获取 最新让球/大小玩法赔率 $sortData = array_column($oddsData,'sort'); array_multisort($sortData,SORT_DESC,$oddsData); $zu = []; foreach ($oddsData as $key1 =>$item1){ $zu[$item1['p_code']][] = $item1; } $c_s = array_slice($zu['concede_size'],0,4);//让球/大小 前四条 放入 $matchData[$kk]['oddsData'] = $c_s; } $leagueData->matchNum = count($matchData); $leagueData->matchData = $matchData; return $leagueData; } /** * @param $source 数据源 * @param $where 该状态 查询条件 * @return array * @throws \Exception * 获取所有即将开赛 数据 */ public function getAllSoon($source,$where){ $game = lm('GameType', 'Sports')->select('id','game_name','game_code','game_ico_url')->where('status',1)->get()->toArray(); $data=[]; foreach ($game as $key=>$item){ if($item['game_code'] !='gj'){ $model = getModels($item['game_code']); $matchData = lm($model['model_match'], 'Sports') ->select('match_id','home_team','guest_team','match_time') ->where($source) ->where($where) // ->limit(6) ->get()->toArray(); $matchNum = count($matchData); $matchData = array_slice($matchData,0,6); foreach ($matchData as $key1 => $item1){ //获取等待时间 $wait_time = ceil(((strtotime($item1['match_time']))-time())/60); $matchData[$key1]['wait_time'] = $wait_time; } if($matchNum > 0){ $data[$item['game_code']]['matchData'] = $matchData; $data[$item['game_code']]['matchNum'] = $matchNum; $data[$item['game_code']]['gameName'] = $item['game_name']; $data[$item['game_code']]['gameCode'] = $item['game_code']; } } } return $data; } /** * 获取欧冠 各状态赛事数据 */ public function getUEFAChampions($source){ //根据搜索查询 if(!empty($_GET['search'])){ $search = $_GET['search']; } $model = getModels('gj',1); $model_league = $model['model_league']; $leagueData = lm($model_league,'Sports') ->select('name_chinese','lg_id','last_time') ->where($model_league.'.source',$source['source']) ->where($model_league.'.name_chinese','欧洲冠军杯') ->first(); //获取滚球数据 $StRollBall = $this->getUEFAStRollBall($model,'StRollBall',$source,$leagueData->lg_id,$search); //获取今日数据 $StToday = $this->getUEFAStToday($model,'StToday',$source,$leagueData->lg_id,$search); //获取早盘数据 $StMorningPlate = $this->getUEFAStMorningPlate($model,'StMorningPlate',$source,$leagueData->lg_id,$search); //获取冠军盘口数据 $StChampion = $this->getUEFAStChampion($model,'StChampion',$source,$leagueData->lg_id,$leagueData->last_time); $data = [ 'leagueName'=> $leagueData->name_chinese, 'StRollBall'=>[//滚球数据 'typeName'=>'滚球', 'matchNum'=>count($StRollBall), 'matchData'=>$StRollBall ], 'StToday'=>[//今日数据 'typeName'=>'今日', 'matchNum'=>count($StToday), 'matchData'=>$StToday ], 'StMorningPlate'=>[//早盘数据 'typeName'=>'早盘', 'matchNum'=>count($StMorningPlate), 'matchData'=>$StMorningPlate ], 'StChampion'=>[//冠军盘口 'typeName'=>'冠军盘口', 'matchNum'=>count($StChampion), 'matchData'=>$StChampion ] ]; return $data; } /** * 获取欧冠 滚球数据 */ public function getUEFAStRollBall($model,$type_code,$source,$lg_id,$search=''){ $model_match = $model['model_match']; $model_odds = $model['model_odds']; $model_result = $model['model_result']; $where = getState($type_code,$model_match); $matchData = lm($model_match,"Sports") ->leftjoin($model_result,$model_result.'.match_id',$model_match.'.match_id') ->select($model_match.'.match_id',$model_match.'.tag','match_date',$model_match.'.match_time',$model_match.'.home_team',$model_match.'.guest_team','home_score','guest_score',$model_result.'.match_time as a_time','match_process') ->where($model_match.'.source',$source['source']) ->where($model_match.'.lg_id',$lg_id) ->where($where) ->where(function($query)use ($model_match,$search){ $query->where($model_match.'.home_team','like','%'.$search.'%') ->orWhere(function($query)use ($model_match,$search) { $query->where($model_match . '.guest_team', 'like', '%' . $search . '%'); }); }) ->get() ->toarray(); foreach($matchData as $kk => $vv){ $oddsData= lm($model_match,"Sports") ->leftjoin($model_odds,$model_odds.'.match_id',$model_match.'.match_id') ->select($model_odds.'.id','p_code','odds_code',$model_odds.'.status','odds','condition','sort') ->where($model_match.'.source',$source['source']) ->where([$model_odds.'.match_id' => $vv['match_id'],$model_odds.'.type'=>0]) // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s")) ->where(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','concede_home') ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','concede_guest'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','size_home'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','size_guest'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','capot_home'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','capot_dogfall'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','capot_guest'); }); }) ->get() ->toarray(); //根据 排序 获取 最新让球/大小玩法赔率 $sortData = array_column($oddsData,'sort'); array_multisort($sortData,SORT_DESC,$oddsData); $zu = []; foreach ($oddsData as $key1 =>$item1){ $zu[$item1['p_code']][] = $item1; } $c_s = array_slice($zu['concede_size'],0,4);//让球/大小 前四条 放入 $capot = $zu['capot'];//独赢 $matchData[$kk]['oddsData'] = [$c_s,$capot]; } return $matchData; } /** * 获取欧冠 今日数据 */ public function getUEFAStToday($model,$type_code,$source,$lg_id,$search=''){ $model_match = $model['model_match']; $model_odds = $model['model_odds']; $where = getState($type_code); $matchData = lm($model_match,'Sports') ->select('match_id','match_date','match_time','tag','home_team','guest_team') ->where($model_match.'.source',$source['source']) ->where($where) ->where('lg_id',$lg_id) ->where(function($query)use ($model_match,$search){ $query->where($model_match.'.home_team','like','%'.$search.'%') ->orWhere(function($query)use ($model_match,$search) { $query->where($model_match . '.guest_team', 'like', '%' . $search . '%'); }); }) ->get()->toArray(); foreach($matchData as $kk => $vv) { $oddsData = lm($model_match, "Sports") ->leftjoin($model_odds, $model_odds . '.match_id', $model_match . '.match_id') ->select($model_odds . '.id','p_code', 'odds_code','odds_only', $model_odds . '.status', 'odds', 'condition', 'sort') ->where($model_match.'.source',$source['source']) ->where([$model_odds . '.match_id' => $vv['match_id']]) // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s")) ->groupBy($model_odds . '.id','p_code', 'odds_code','odds_only', $model_odds . '.status', 'odds', 'condition', 'sort') ->orderBy($model_odds . '.id','desc') ->get() ->toarray(); $matchData[$kk]['oddsData'] = $oddsData; } return $matchData; } /** * 获取欧冠 早盘数据 */ public function getUEFAStMorningPlate($model,$type_code,$source,$lg_id,$search=''){ $model_match = $model['model_match']; $model_odds = $model['model_odds']; $where = getState($type_code); $matchData = lm($model_match,'Sports') ->select('match_id','match_date','match_time','tag','home_team','guest_team') ->where($model_match.'.source',$source['source']) ->where($where) ->where('lg_id',$lg_id) ->where(function($query)use ($model_match,$search){ $query->where($model_match.'.home_team','like','%'.$search.'%') ->orWhere(function($query)use ($model_match,$search) { $query->where($model_match . '.guest_team', 'like', '%' . $search . '%'); }); }) ->get()->toArray(); $data = $this->getOddsData->getOddsZQ($matchData,$model_odds,$source); return $data; } /** * 获取 欧冠 冠军盘口数据 */ public function getUEFAStChampion($model,$type_code,$source,$lg_id,$last_time=''){ $model_odds = $model['model_odds']; $where = getState($type_code); $championData = lm($model_odds, 'Sports') ->select("id","lg_id","p_code","odds_code","team","odds","sort","status","odds_only") // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s")) ->where($source) ->where('lg_id',$lg_id) ->where($where) ->groupBy("id","lg_id","p_code","odds_code","team","odds","sort","status","odds_only") ->get()->toArray(); //按p_code分组 $p_code=array(); foreach($championData as $k=>$v){ $p_code[$v['p_code']][]=$v; } $data = []; foreach ($p_code as $k1=>$v1){ foreach ($v1 as $k2=>$v2){ $data[$v2['p_code']]['last_time'] =$last_time; $data[$v2['p_code']][$v2['odds_code']][] = $v2; } } return $data; } }