Sports.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace App\Sports\Controller;
  3. use BaseController\Controller;
  4. /**
  5. * Class Register
  6. * @package App\Sports\Controller
  7. * User: junghwi
  8. * Date: 2019/3/21
  9. */
  10. class Sports extends Controller{
  11. /**
  12. * 首页体育-球类比赛数据方法
  13. * @param [type] $game_code 球类代码
  14. * @param [array] $where 球类额外条件
  15. * @param [int] $limit_mt 赛事显示条数 默认3条
  16. * @param [int] $limit_lg 联赛显示条数 默认3条
  17. * @return [array] $data
  18. */
  19. private function Sports_info($game_code,$where,$limit_mt = 3,$limit_lg = 3){
  20. $data=[];
  21. $data['name'] = lm('GameType','Sports')->where('game_code',$game_code)->value('game_name');
  22. $data['game_code'] = $game_code;
  23. //===查询该球类Models===
  24. $getModels = getModels($game_code);
  25. $st_league = $getModels['model_league'];
  26. $st_competition = $getModels['model_match'];
  27. //查询足球早盘其他球的所有赛事
  28. if ($game_code == 'zq'){
  29. $data['all']['name'] ='今日赛事';
  30. $data['all']['game_code'] = $game_code;
  31. $data['all']['code'] = 'today';
  32. $data['all']['count'] = lm($st_competition,'Sports')
  33. ->join($st_league,$st_league.'.lg_id',$st_competition.'.lg_id')
  34. ->where(getState('StToday',$st_competition))
  35. ->where([
  36. [$st_competition.'.source',$this->source['source']],
  37. [$st_competition.'.home_team','<>',null],
  38. [$st_competition.'.guest_team','<>',null],
  39. [$st_league.'.name_chinese','<>',null],
  40. [$st_competition.'.status','<',2],
  41. [$st_competition.'.us_time','>',qgmdate('Y-m-d H:i:s', '', -4)]
  42. ])
  43. ->count('*');
  44. } else {
  45. $data['all']['name'] = '所有赛事';
  46. $data['all']['game_code'] = $game_code;
  47. $data['all']['code'] = 'all';
  48. $data['all']['count'] = lm($st_competition,'Sports')
  49. ->join($st_league,$st_league.'.lg_id',$st_competition.'.lg_id')
  50. ->where([[$st_competition.'.status', '<', '2'],
  51. [$st_competition.'.source',$this->source['source']]])
  52. ->where([
  53. [$st_competition.'.source',$this->source['source']],
  54. [$st_competition.'.home_team','<>',null],
  55. [$st_competition.'.guest_team','<>',null],
  56. [$st_league.'.name_chinese','<>',null],
  57. [$st_competition.'.status','<',2],
  58. [$st_competition.'.us_time','>',qgmdate('Y-m-d H:i:s', '', -4)]
  59. ])
  60. ->where($st_competition.'.us_time','>',qgmdate('Y-m-d H:i:s', '', -4))
  61. ->count('*');
  62. }
  63. //查询正在进行的和未开始的球类比赛
  64. $data['match'] = lm($st_competition,"Sports")
  65. ->join($st_league,$st_league.'.lg_id',$st_competition.'.lg_id')
  66. ->select($st_competition.'.match_id',$st_competition.'.home_team',$st_competition.'.guest_team',$st_competition.'.match_date',$st_competition.'.match_time')
  67. ->where([[$st_competition.'.status','<',2],[$st_competition.'.source',$this->source]])
  68. ->where($st_competition.'.us_time','>',qgmdate('Y-m-d H:i:s', '', -4))
  69. ->where($where)
  70. ->where([
  71. [$st_competition.'.source',$this->source['source']],
  72. [$st_competition.'.home_team','<>',null],
  73. [$st_competition.'.guest_team','<>',null],
  74. [$st_league.'.name_chinese','<>',null],
  75. [$st_competition.'.status','<',2],
  76. [$st_competition.'.us_time','>',qgmdate('Y-m-d H:i:s', '', -4)]
  77. ])
  78. ->limit($limit_mt)
  79. ->get();
  80. if(!empty($data['match'])){
  81. $data['match'] = $data['match']->toarray();
  82. }
  83. // 获取正在进行的和未开始联赛
  84. $data['league'] = lm($st_competition,"Sports")
  85. ->join($st_league,$st_league.'.lg_id',$st_competition.'.lg_id')
  86. ->select($st_league.'.lg_id',$st_league.'.name_chinese')
  87. ->where([[$st_competition.'.status','<',2],[$st_competition.'.source',$this->source]])
  88. ->where($st_competition.'.us_time','>',qgmdate('Y-m-d H:i:s', '', -4))
  89. ->where($where)
  90. ->where([
  91. [$st_competition.'.source',$this->source['source']],
  92. [$st_competition.'.home_team','<>',null],
  93. [$st_competition.'.guest_team','<>',null],
  94. [$st_league.'.name_chinese','<>',null],
  95. [$st_competition.'.status','<',2],
  96. [$st_competition.'.us_time','>',qgmdate('Y-m-d H:i:s', '', -4)]
  97. ])
  98. ->limit($limit_lg)
  99. ->distinct($st_league.'lg_id')
  100. ->get();
  101. if (!empty($data['league'])) {
  102. $data['league'] = $data['league']->toarray();
  103. // $data['league'] = array_column($data['league'],'lg_id');
  104. foreach($data['league'] as $k => $v){
  105. //统计当前联赛下的联赛
  106. $data['league'][$k]['game_code'] = $game_code;
  107. $data['league'][$k]['code'] = "qt";
  108. $data['league'][$k]['count'] = lm($st_competition,'Sports')
  109. ->where([[$st_competition.'.status','<',2],[$st_competition.'.source',$this->source]])
  110. ->where('lg_id',$v['lg_id'])
  111. ->where($where)
  112. ->where([
  113. [$st_competition.'.source',$this->source['source']],
  114. [$st_competition.'.home_team','<>',null],
  115. [$st_competition.'.guest_team','<>',null],
  116. [$st_competition.'.status','<',2],
  117. [$st_competition.'.us_time','>',qgmdate('Y-m-d H:i:s', '', -4)]
  118. ])
  119. ->count('*');
  120. }
  121. }
  122. return $data;
  123. }
  124. /*
  125. * 获取首页体育信息数据接口
  126. */
  127. public function data(){
  128. $where = [];//球类额外条件
  129. $lq[] = $this->Sports_info('lq',$where);
  130. $wq[] = $this->Sports_info('wq',$where);
  131. $bq[] = $this->Sports_info('bq',$where);
  132. $zq[] = $this->Sports_info('zq',$where);
  133. $data = array_merge_recursive($zq,$lq,$bq,$wq);
  134. Render($data,'1', lang('Tips','Sports')->get('success'));
  135. }
  136. }