game_code){ //将所有进行中的赛事写入结果 $this->match_result($data->game_code); } //写赛事数据 $obt = $data->data; if($obt){ $getData = $this->getAddData($obt); // return Response::success($getData); $league = []; $competition = []; $odds = []; $league_result = []; $match_result = []; $match_result_record = []; $odds_record = []; //指定排序 foreach ($getData as $k=>$v){ if($v['title'] == 'league') $league[] = $v; if($v['title'] == 'competition') $competition[] = $v; if($v['title'] == 'odds') $odds[] = $v; if($v['title'] == 'league_result') $league_result[] = $v; if($v['title'] == 'match_result') $match_result[] = $v; if($v['title'] == 'match_result_record') $match_result_record[] = $v; if($v['title'] == 'odds_record') $odds_record[] = $v; } $matchData = [$league,$competition,$odds,$league_result,$match_result,$match_result_record,$odds_record]; //排空处理 foreach ($matchData as $k=>$v){ if($v == []) unset($matchData[$k]); } // $dd = []; //根据顺序写入数据 // return Response::success($matchData); foreach ($matchData as $k=>$v){ foreach ($v as $kk =>$vv){ switch ($vv['title']){ case 'area'://地区 throw new \Exception(Response::generate(Response::AUTH_ERROR)) ; break; case 'country'://国家 throw new \Exception(Response::generate(Response::AUTH_ERROR)); break; case 'league'://联赛 $ret = $this->league($vv); // $dd[] = $ret; break; case 'competition'://赛事 $this->competition($vv); break; case 'odds'://赔率 $this->odds($vv); break; case 'league_result'://联赛结果 $this->league_result($vv); break; case 'match_result'://赛事结果 throw new \Exception(Response::generate(Response::AUTH_ERROR)); $this->match_result($vv); break; case 'match_result_record'://赛事结果记录 $this->com_result_record($vv); break; case 'odds_record'://赔率记录 $this->odds_record($vv); break; default: throw new \Exception(Response::generate(Response::ABNORMAL)) ; } } } } //提交事务 DB::commit(); return Response::success(); } catch (\Exception $e) { //回滚事务 DB::rollBack(); return $e->getMessage(); } } //计算滚球 赛事进行时间 private function secTime($sec=0){ $min = floor($sec/60); $res = $min.':'.($sec-$min*60); return $res; } //将进行中赛事写入 赛事结果 public function match_result($game_code = ''){ $model =commonFunction::getModels($game_code,1); //获取赛事表所有滚球 $matchData = $model['model_match']::select('id','home_team','guest_team','lg_id','status','tag','match_time') ->where(['status'=> 1]) ->get() ->toarray(); //没有滚球数据,无需操作 if(empty($matchData)) return Response::success(); //获取赛事结果表 所有滚球 $matchData_r = $model['model_result']::select('match_id') ->where(['status'=> 1]) ->get() ->toarray(); //没有滚球结果,直接插入结果表 if(empty($matchData_r)){ foreach ($matchData as $k=>$v){ $time = time()-strtotime($v['match_time']); $match_time = $this->secTime($time); $set_match_r[] = [ "match_id"=> $v['id'], "home_team"=>$v['home_team'], "guest_team"=>$v['guest_team'], "lg_id"=>$v['lg_id'], "status"=>$v['status'], "tag"=> $v['tag'], 'match_time'=>$match_time, "update_time"=>date('Y-m-d H:m:i') ]; } $ret = $model['model_result']::insert($set_match_r); if($ret != true) return Response::generate(Response::ADD_MATCH_R_ERROR); } //如果结果表有数据,则获取结果表没有的赛事 foreach ($matchData as $k=>$v){ foreach ($matchData_r as $kk=>$vv){ if($v['id'] == $vv['match_id']){ unset($matchData[$k]); } } } //如果还有未写入赛事 if(!empty($matchData)){ //写入结果表不存在赛事 foreach ($matchData as $k=>$v){ $time = time()-strtotime($v['match_time']); $match_time = $this->secTime($time); $set_match_r[] = [ "match_id"=> $v['id'], "home_team"=>$v['home_team'], "guest_team"=>$v['guest_team'], "lg_id"=>$v['lg_id'], "status"=>$v['status'], "tag"=> $v['tag'], 'match_time'=>$match_time, "update_time"=>date('Y-m-d H:m:i') ]; } $ret = $model['model_result']::insert($set_match_r); if($ret != true) return Response::generate(Response::ADD_MATCH_R_ERROR);//Render([], '10022', lang('Tips','Sports')->get('add_match_r_error')); } } //写入地区数据 弃用 public function area($opt = []){ $ret = lm('st_area','Sports')->insert($opt); return $ret; } //写入国家数据 弃用 public function country($opt = []){ $ret = lm('st_country','Sports')->insert($opt); return $ret; } //写入联赛数据 public function league($opt = []){ $game_code = $opt['game_code']; //根据球类代码获取相关model $model =commonFunction::getModels($game_code,1); $data = $opt['data']; // if(empty($data['belong'])) throw new \Exception(Response::generate(Response::COUNTRY_ERROR)) ;//Render([], '10013', lang('Tips','Sports')->get('country_error')); // //获取联赛所属 国家/地区id // $belong = St_area_countryModel::getID($data['belong']); $set_lg['area_id'] = 0;//$belong['area_id']; $set_lg['country_id'] = 0;// $belong['country_id']; //查询中间表 是否已记录 $lg_id = $model['model_local_league']::where(['others_lg_id'=>$data['lg_id'],'source'=>$data['source']]) ->value('lg_id'); //如果没有记录 if(empty($lg_id)){ //查询联赛是否已存在 $id = $model['model_league']::where('name_chinese','=',$data['name_chinese']) ->value('id'); $last_time = '2019-12-31 23:59:59'; //决赛时间 if($data['last_time']){ $last_time = $data['last_time']; } if(empty($id)){ $set_lg['name_chinese'] = $data['name_chinese']; $set_lg['kind'] = $data['kind']; $set_lg['match_mode'] = $data['match_mode']; $set_lg['if_stop'] = $data['if_stop']; $set_lg['last_time'] = $last_time; $set_lg['utime'] = date('Y-m-d H:m:i'); $id = $model['model_league']::insertGetId($set_lg); $m_lg_id = $id; if($m_lg_id < 1) throw new \Exception(Response::generate(Response::INSERT_ERROR)); } $set_local = [ 'lg_id'=>$id, 'others_lg_id'=>$data['lg_id'], 'source'=>$data['source'], ]; $ret = $model['model_local_league']::insertGetId($set_local); if($ret < 1) throw new \Exception(Response::generate(Response::LOCAL_LEAGUE_ERROR)) ;//Render([], '10017', lang('Tips','Sports')->get('local_league_error')); } return 1; // return Response::success(); } //写入赛事数据 public function competition($opt = []){ $game_code = $opt['game_code']; //根据球类代码获取相关model $model = commonFunction::getModels($game_code,1); $data = $opt['data']; if(empty($data['lg_id'])) throw new \Exception(Response::generate(Response::LEAGUE_ERROR)) ;//Render([], '10015', lang('Tips','Sports')->get('league_error')); //根据源联赛ID 获取本地关联id $lg_id = $model['model_local_league']::where(['others_lg_id'=>$data['lg_id'],'source'=>$data['source']]) ->value('lg_id'); if(empty($lg_id)) throw new \Exception(Response::generate(Response::LEAGUE_ERROR)) ;//Render([], '10015', lang('Tips','Sports')->get('league_error')); //查询关联记录是否存在 $match_id = $model['model_local_match']::where(['others_match_id'=>$data['match_id'],'source'=>$data['source']]) ->value('match_id'); if(empty($match_id)){ //查询赛事是否存在 $id = $model['model_match']::where(['home_team'=>$data['home_team'],'guest_team'=>$data['guest_team'],'match_date'=>$data['match_date'],'match_time'=>$data['match_time']]) ->value('id'); $half_match_id = 0; //如果有上半场赛事id 获取上半场赛事是否存在 if(!empty($data['half_match_id'])){ $half_match_id = $match_id = $model['model_local_match']::where(['others_match_id'=>$data['half_match_id'],'source'=>$data['source']]) ->value('match_id'); if(empty($half_match_id)) throw new \Exception(Response::generate(Response::HALF_MATCH_ERROR)) ;//Render([], '10024', lang('Tips','Sports')->get('half_match_error')); } //写入赛事 if(empty($id)){ //如果赛事没有开始日期,则为冠军盘口赛事 if(empty($data['match_date'])){ //冠军盘口赛事获取所属联赛结束时间 $last_time = $model['model_league']::where(['id'=>$lg_id]) ->value('last_time'); if(empty($last_time)) throw new \Exception(Response::generate(Response::LG_LASTTIME_ERROR)) ;//Render([], '10023', lang('Tips','Sports')->get('lg_lastTime_error')); //给冠军盘口赛事 赋值时间 $time = strtotime($last_time); $data['match_date'] = date('Y-m-d',$time); $data['match_time'] = date('H:m:i',$time); } $set_match = [ 'ctime'=>date('Y-m-d H:m:i'), 'utime'=>date('Y-m-d H:m:i'), 'expire_time'=>date('Y-m-d H:m:i',time()+60), 'home_team'=>$data['home_team']?:'', 'guest_team'=>$data['guest_team']?:'no_team', 'lg_id'=>$lg_id, 'status'=>$data['status'], 'match_date'=>$data['match_date']?:'', 'match_time'=>$data['match_time']?:'', 'tag'=>$data['tag']?:0, 'is_rollball'=>$data['is_rollball']?:0, 'is_today'=>$data['is_today']?:0, 'is_morningplate'=>$data['is_morningplate']?:0, 'is_stringscene'=>$data['is_stringscene']?:0, 'us_time'=>$data['us_time']?:'', 'half_match_id'=>$half_match_id?:0, ]; //写入赛事 返回id $id = $model['model_match']::insertGetId($set_match); if($id < 1) throw new \Exception(Response::generate(Response::INSERT_ERROR)) ;//Render([], '10012', lang('Tips','Sports')->get('insert_error')); } $set_local = [ 'match_id'=>$id, 'others_match_id'=>$data['match_id'], 'source'=>$data['source'], ]; $ret = $model['model_local_match']::insertGetId($set_local); if($ret < 1) throw new \Exception(Response::generate(Response::LOCAL_MATCH_ERROR)) ;//Render([], '10018', lang('Tips','Sports')->get('local_match_error')); } // return Response::success(); } //写入赔率数据 public function odds($opt){ $game_code = $opt['game_code']; //根据球类代码获取相关model $model = commonFunction::getModels($game_code,1); $data = $opt['data']; $match = $model['model_local_match']::select('match_id','others_match_id') ->where(['others_match_id'=>$data['match_id'],'source'=>$data['source']]) ->first(); if(count($match) < 1) throw new \Exception(Response::generate(Response::MATCH_ERROR)) ;//Render([], '10016', lang('Tips','Sports')->get('match_error')); //获取赛事 本地/源ID $others_match_id = $match->others_match_id; $match_id = $match->match_id; $lg = $model['model_local_league']::select('lg_id','others_lg_id') ->where(['others_lg_id'=>$data['lg_id'],'source'=>$data['source']]) ->first(); if(count($lg) < 1) throw new \Exception(Response::generate(Response::LEAGUE_ERROR));//Render([], '10015', lang('Tips','Sports')->get('league_error')); //获取联赛 本地/源ID $others_lg_id = $lg->others_lg_id; $lg_id = $lg->lg_id; //查询 赔率数据是否存在 $oddsID = $model['model_odds']::where(['lg_id'=>$lg_id,'others_lg_id'=>$others_lg_id,'match_id'=>$match_id,'others_match_id'=>$others_match_id,'odds_code'=>$data['odds_code'],'sort'=>$data['sort']]) ->value('id'); $set_odds = [ 'match_id'=> $match_id, 'others_match_id'=> $others_match_id, 'odds_code'=> $data['odds_code'], 'status'=> $data['status'], 'sort'=> $data['sort'], 'p_code'=> $data['p_code'], 'odds'=> $data['odds'], 'condition'=> $data['condition'], 'odds_only'=> $data['odds_only'], 'sole'=> $data['sole'], 'source'=> $data['source'], 'type'=> $data['type'], 'team'=> $data['team'], 'lg_id'=> $lg_id, 'others_lg_id'=> $others_lg_id, 'ctime'=> date('Y-m-d H:m:i'), 'utime'=> date('Y-m-d H:m:i'), 'expire_time'=>date('Y-m-d H:m:i',time()+60), ]; //更新或写入赔率数据 if(!empty($oddsID)){ $ret = $model['model_odds']::where(['id'=>$oddsID]) -> update($set_odds); if($ret < 1) throw new \Exception(Response::generate(Response::ADD_ODDS_ERROR));//Render([], '10019', lang('Tips','Sports')->get('add_odds_error')); }else{ $ret = $model['model_odds']::insert($set_odds); if($ret != true) throw new \Exception(Response::generate(Response::ADD_ODDS_ERROR));//Render([], '10019', lang('Tips','Sports')->get('add_odds_error')); } // return Response::success(); } //写入联赛结果 public function league_result($opt){ $game_code = $opt['game_code']; //根据球类代码获取相关model $model = commonFunction::getModels($game_code,1); $data = $opt['data']; //验证结果所属联赛 $lg_id = $model['model_local_league']::where(['others_lg_id'=>$data['lg_id'],'source'=>$data['source']]) ->value('lg_id'); if($lg_id < 1) throw new \Exception(Response::generate(Response::LEAGUE_ERROR));//Render([], '10015', lang('Tips','Sports')->get('league_error')); $lg_result_id = $model['model_league_result']::where(['lg_id'=>$lg_id,'game_name'=>$data['game_name']]) ->value('id'); $set_lg_result = [ 'lg_id'=>$lg_id, 'game_name'=>$data['game_name'], 'result'=>json_encode($data['result'],JSON_UNESCAPED_UNICODE), 'status'=>$data['status'], 'ctime'=> date('Y-m-d H:m:i'), 'utime'=> date('Y-m-d H:m:i'), ]; //联赛结果数据处理 if(!empty($lg_result_id)){ $ret = $model['model_league_result']::where(['id'=>$lg_result_id]) -> update($set_lg_result); if($ret < 1) throw new \Exception(Response::generate(Response::ADD_LG_R_ERROR)) ;//Render([], '10021', lang('Tips','Sports')->get('add_lg_r_error')); }else{ $ret = $model['model_league_result']::insert($set_lg_result); if($ret != true) throw new \Exception(Response::generate(Response::ADD_LG_R_ERROR));//Render([], '10021', lang('Tips','Sports')->get('add_lg_r_error')); } // return Response::success(); } //写入赛事结果 public function com_result($opt){ $game_code = $opt['game_code']; //根据球类代码获取相关model $model = commonFunction::getModels($game_code,1); $data = $opt['data']; //验证结果所属联赛 $lg_id = $model['model_local_league']::where(['others_lg_id'=>$data['lg_id'],'source'=>$data['source']]) ->value('lg_id'); if($lg_id < 1) throw new \Exception(Response::generate(Response::LEAGUE_ERROR)) ;//Render([], '10015', lang('Tips','Sports')->get('league_error')); //验证结果所属赛事 $match_id = $model['model_local_match']::where(['others_match_id'=>$data['match_id'],'source'=>$data['source']]) ->value('match_id'); if($match_id < 1) throw new \Exception(Response::generate(Response::MATCH_ERROR));//Render([], '10016', lang('Tips','Sports')->get('match_error')); //查询结果是否存在 $match_r_id = $model['model_result']::where(['match_id'=>$match_id]) ->value('id'); $set_match_r = [ "home_team"=>$data['home_team'], "guest_team"=>$data['guest_team'], "lg_id"=>$lg_id, "home_rate"=> $data['home_rate'], "guest_rate"=> $data['guest_rate'], "home_score"=> $data['home_score'], "guest_score"=> $data['guest_score'], "all_goal"=> $data['all_goal'], "status"=>$data['status'], "first_score"=>$data['first_score'], "last_score"=> $data['last_score'], "match_score"=> $data['match_score'], "match_winer"=> $data['match_winer'], "match_time"=> $data['match_time'], "match_process"=> $data['match_process'], "tag"=> $data['tag'], "match_id"=> $match_id, "u_home_score"=> $data['u_home_score'], "u_guest_score"=> $data['u_guest_score'], "p_code"=> $data['p_code'], "update_time"=>date('Y-m-d H:m:i') ]; //赛事结果数据处理 if(!empty($match_r_id)){ $ret = $model['model_result']::where(['id'=>$match_r_id]) -> update($set_match_r); if($ret < 1) throw new \Exception(Response::generate(Response::ADD_MATCH_R_ERROR)) ;//Render([], '10022', lang('Tips','Sports')->get('add_match_r_error')); }else{ $ret = $model['model_result']::insert($set_match_r); if($ret != true) throw new \Exception(Response::generate(Response::ADD_MATCH_R_ERROR)) ;//Render([], '10022', lang('Tips','Sports')->get('add_match_r_error')); } // return Response::success(); } //写入赛事结果记录 public function com_result_record($opt){ $game_code = $opt['game_code']; //根据球类代码获取相关model $model = commonFunction::getModels($game_code,1); $data = $opt['data']; //验证结果所属联赛 $lg_id = $model['model_local_league']::where(['others_lg_id'=>$data['lg_id'],'source'=>$data['source']]) ->value('lg_id'); if($lg_id < 1) throw new \Exception(Response::generate(Response::LEAGUE_ERROR)) ;//Render([], '10015', lang('Tips','Sports')->get('league_error')); //验证结果所属赛事 $match_id = $model['model_local_match']::where(['others_match_id'=>$data['match_id'],'source'=>$data['source']]) ->value('match_id'); if($match_id < 1) throw new \Exception(Response::generate(Response::MATCH_ERROR));//Render([], '10016', lang('Tips','Sports')->get('match_error')); $match_r_id = $model['model_result_record']::where(['match_id'=>$match_id,'match_time'=>$data['match_time']]) ->value('id'); $set_match_r = [ "home_team"=>$data['home_team'], "guest_team"=>$data['guest_team'], "lg_id"=>$lg_id, "home_rate"=> $data['home_rate'], "guest_rate"=> $data['guest_rate'], "home_score"=> $data['home_score'], "guest_score"=> $data['guest_score'], "all_goal"=> $data['all_goal'], "status"=>$data['status'], "first_score"=>$data['first_score'], "last_score"=> $data['last_score'], "match_score"=> $data['match_score'], "match_winer"=> $data['match_winer'], "match_time"=> $data['match_time'], "match_process"=> $data['match_process'], "tag"=> $data['tag'], "match_id"=> $match_id, "p_code"=> $data['p_code'], "update_time"=>date('Y-m-d H:m:i') ]; //赛事结果记录处理 if($match_r_id > 0){ $ret = $model['model_result_record']::where(['id'=>$match_r_id]) ->update($set_match_r); if($ret < 1) throw new \Exception(Response::generate(Response::ADD_MATCH_R_R_ERROR));//Render([], '10022', lang('Tips','Sports')->get('add_match_r_r_error')); }else{ $ret = $model['model_result_record']::insert($set_match_r); if($ret != true) throw new \Exception(Response::generate(Response::ADD_MATCH_R_R_ERROR));//Render([], '10022', lang('Tips','Sports')->get('add_match_r_r_error')); } // return Response::success(); } //写入赔率记录 public function odds_record($opt){ $game_code = $opt['game_code']; //根据球类代码获取相关model $model = commonFunction::getModels($game_code,1); $data = $opt['data']; $match = $model['model_local_match']::select('match_id','others_match_id') ->where(['others_match_id'=>$data['match_id'],'source'=>$data['source']]) ->first(); if(count($match) < 1) throw new \Exception(Response::generate(Response::MATCH_ERROR)) ;//Render([], '10016', lang('Tips','Sports')->get('match_error')); //获取赛事 本地/源ID $others_match_id = $match->others_match_id; $match_id = $match->match_id; $lg = $model['model_local_league']::select('lg_id','others_lg_id') ->where(['others_lg_id'=>$data['lg_id'],'source'=>$data['source']]) ->first(); if(count($lg) < 1) throw new \Exception(Response::generate(Response::LEAGUE_ERROR)) ;//Render([], '10015', lang('Tips','Sports')->get('league_error')); //获取联赛 本地/源ID $others_lg_id = $lg->others_lg_id; $lg_id = $lg->lg_id; //查询 赔率数据是否存在 $oddsID = $model['model_odds_record']::where(['odds_only'=>$data['odds_only']]) ->value('id'); $set_odds = [ 'match_id'=> $match_id, 'others_match_id'=> $others_match_id, 'odds_code'=> $data['odds_code'], 'status'=> $data['status'], 'sort'=> $data['sort'], 'p_code'=> $data['p_code'], 'odds'=> $data['odds'], 'condition'=> $data['condition'], 'odds_only'=> $data['odds_only'], 'source'=> $data['source'], 'type'=> $data['type'], 'team'=> $data['team'], 'lg_id'=> $lg_id, 'others_lg_id'=> $others_lg_id, 'ctime'=> date('Y-m-d H:m:i'), 'utime'=> date('Y-m-d H:m:i'), ]; //更新或写入赔率记录 if(!empty($oddsID)){ $ret = $model['model_odds_record']::where(['id'=>$oddsID]) -> update($set_odds); if($ret < 1) throw new \Exception(Response::generate(Response::ADD_ODDS_R_ERROR)) ;//Render([], '10020', lang('Tips','Sports')->get('add_odds_r_error')); }else{ $ret = $model['model_odds_record']::insert($set_odds); if($ret != true) throw new \Exception(Response::generate(Response::ADD_ODDS_R_ERROR));//Render([], '10020', lang('Tips','Sports')->get('add_odds_r_error')); } // return Response::success(); } /** * @param $data * @return mixed * json转数组 */ public function getAddData($data){ $data = json_decode($data,true); return $data; } }