commonFunction = C()->get('commonFunction'); } /** * 根据不同球类获取相关赔率数据 */ public function getOddsData($data,$whereDate,$source,$oddsTypeWhere=''){ if($data['search']){ $search = $data['search']; } //根据 球类代码 获取相关model $models = $this->commonFunction->getModels($data['game_code']); $model_league = $models['model_league']; $model_match = $models['model_match']; $model_odds = $models['model_odds']; $league = lm($model_league, 'Sports') ->select('id as lg_id','name_chinese') ->where(['id'=>$data['leagueID']]) ->first(); if(empty($league->lg_id)) throw new \Exception(Render([], '10003', lang('Tips','Sports')->get('PARAM_ERROR'))); $matchData = lm($model_match, 'Sports') ->select('lg_id','id as match_id','tag','match_date','match_time','home_team','guest_team') ->where(['lg_id'=>$data['leagueID']]) ->where($whereDate) ->where($model_match.'.us_time','>',qgmdate('Y-m-d H:i:s', '', -4)) ->where('status','<',2) ->where($model_match.'.home_team','<>',null) ->where($model_match.'.guest_team','<>',null) ->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($matchData)) throw new \Exception(Render([], '10004', lang('Tips','Sports')->get('PARAM_ERROR'))); if(empty($matchData)){ Render([], '10006', lang('Tips','Sports')->get('empty')); } switch ($data['game_code']){ case 'zq'://获取足球默认赔率数据 $list = $this->getOddsZQ($matchData,$model_odds,$source,$oddsTypeWhere); break; case 'lq'://获取篮球默认赔率数据 $list = $this->getOddsLQ($matchData,$model_odds,$source,$oddsTypeWhere); break; case 'wq'://获取网球默认赔率数据 $list = $this->getOddsWQ($matchData,$model_odds,$source,$oddsTypeWhere); break; case 'bq'://获取棒球默认赔率数据 $list = $this->getOddsBQ($matchData,$model_odds,$source,$oddsTypeWhere); break; default: throw new \Exception(Render([], '10002', lang('Tips','Sports')->get('PARAM_ERROR'))); } $data = [ 'lg_id'=>$league->lg_id, 'leagueName'=>$league->name_chinese, 'matchNum'=>count($list) , 'matchData'=>$list, ]; return $data; } /** * @param $matchData 赛事数据 * @param $model_odds 赔率model * @param $source 数据源 * @return array * @throws \Exception * 获取足球默认赔率数据 */ public function getOddsZQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){ //获取赛事id 集合 $match_ids = []; foreach ($matchData as $k=>$v){ $match_ids[] = (int)$v['match_id']; } $oddsData = lm($model_odds, 'Sports') ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only') ->whereIn('match_id',$match_ids) ->where(['status'=>0]) ->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','goal_size_big'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','goal_size_small'); }); } ) ->get()->toArray(); foreach ($matchData as $kk=>$vv){ //获取赛事下赔率并且分组 $odds = []; foreach ($oddsData as $kkk=>$vvv) { if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) { $odds[] = $vvv; } } $matchData[$kk]['oddsData'] = $odds; } return $matchData; } /** * @param $matchData 赛事数据 * @param $model_odds 赔率model * @param $source 数据源 * @return array * @throws \Exception * 获取篮球默认赔率数据 */ public function getOddsLQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){ //获取赛事id 集合 $match_ids = []; foreach ($matchData as $k=>$v){ $match_ids[] = $v['match_id']; } $oddsData = lm($model_odds, 'Sports') ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only') ->whereIn('match_id',$match_ids) ->where(['status'=>0]) ->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','total_size_big'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','total_size_small'); }); } ) ->get()->toArray(); foreach ($matchData as $kk=>$vv){ //获取赛事下赔率并且分组 $odds = []; foreach ($oddsData as $kkk=>$vvv) { if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) { $odds[] = $vvv; } } $matchData[$kk]['oddsData'] = $odds; } return $matchData; } /** * @param $matchData 赛事数据 * @param $model_odds 赔率model * @param $source 数据源 * @return array * @throws \Exception * 获取网球默认赔率数据 */ public function getOddsWQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){ //获取赛事id 集合 $match_ids = []; foreach ($matchData as $k=>$v){ $match_ids[] = $v['match_id']; } $oddsData = lm($model_odds, 'Sports') ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only') ->whereIn('match_id',$match_ids) ->where(['status'=>0]) ->where( function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','dishes_home') ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','dishes_guest'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','kemp_home'); }) ->orWhere(function($query)use ($model_odds){ $query->where($model_odds.'.odds_code','kemp_guest'); }); } ) ->get()->toArray(); foreach ($matchData as $kk=>$vv){ //获取赛事下赔率并且分组 $odds = []; foreach ($oddsData as $kkk=>$vvv) { if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) { $odds[] = $vvv; } } $matchData[$kk]['oddsData'] = $odds; } return $matchData; } /** * @param $matchData 赛事数据 * @param $model_odds 赔率model * @param $source 数据源 * @return array * @throws \Exception * 获取棒球默认赔率数据 */ public function getOddsBQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){ //获取赛事id 集合 $match_ids = []; foreach ($matchData as $k=>$v){ $match_ids[] = $v['match_id']; } $oddsData = lm($model_odds, 'Sports') ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only') ->whereIn('match_id',$match_ids) ->where(['status'=>0]) ->where( 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_guest'); }); } ) ->get()->toArray(); foreach ($matchData as $kk=>$vv){ //获取赛事下赔率并且分组 $odds = []; foreach ($oddsData as $kkk=>$vvv) { if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) { $odds[] = $vvv; } } $matchData[$kk]['oddsData'] = $odds; } return $matchData; } }