GetOddsData.php 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * 获取不同球类默认赔率玩法
  5. * User: Jun.peng
  6. * Date: 2019/4/16
  7. * Time: 9:29
  8. */
  9. namespace Biz\Match;
  10. class GetOddsData {
  11. /**
  12. * 根据不同球类获取相关赔率数据
  13. */
  14. public function getOddsData($data,$whereDate,$source){
  15. //根据 球类代码 获取相关model
  16. $models = getModels($data['game_code']);
  17. $model_league = $models['model_league'];
  18. $model_match = $models['model_match'];
  19. $model_odds = $models['model_odds'];
  20. $league = lm($model_league, 'Sports')
  21. ->select('lg_id','name_chinese')
  22. ->where($source)
  23. ->where(['lg_id'=>$data['leagueID']])
  24. ->first();
  25. if(empty($league->lg_id)) throw new \Exception(Render([], '10003', lang('Tips','Sports')->get('PARAM_ERROR')));
  26. $matchData = lm($model_match, 'Sports')
  27. ->select('lg_id','match_id','tag','match_date','match_time','home_team','guest_team')
  28. ->where($source)
  29. ->where(['lg_id'=>$data['leagueID']])
  30. ->where($whereDate)
  31. ->where('st_zq_competition.us_time','>',qgmdate('Y-m-d H:i:s', '', -4))
  32. ->where('status','<',2)
  33. ->get()->toArray();
  34. if(empty($matchData)) throw new \Exception(Render([], '10004', lang('Tips','Sports')->get('PARAM_ERROR')));
  35. if(empty($matchData)){
  36. Render([], '10006', lang('Tips','Sports')->get('empty'));
  37. }
  38. switch ($data['game_code']){
  39. case 'zq'://获取足球默认赔率数据
  40. $list = $this->getOddsZQ($matchData,$model_odds,$source);
  41. break;
  42. case 'lq'://获取篮球默认赔率数据
  43. $list = $this->getOddsLQ($matchData,$model_odds,$source);
  44. break;
  45. case 'wq'://获取网球默认赔率数据
  46. $list = $this->getOddsWQ($matchData,$model_odds,$source);
  47. break;
  48. case 'bq'://获取棒球默认赔率数据
  49. $list = $this->getOddsBQ($matchData,$model_odds,$source);
  50. break;
  51. default:
  52. throw new \Exception(Render([], '10002', lang('Tips','Sports')->get('PARAM_ERROR')));
  53. }
  54. $data = [
  55. 'leagueID'=>$league->lg_id,
  56. 'leagueName'=>$league->name_chinese,
  57. 'matchNum'=>count($list) ,
  58. 'matchData'=>$list,
  59. // 'lang' => lang('OddsTemp','Sports')->getAll(),
  60. ];
  61. return $data;
  62. }
  63. /**
  64. * @param $matchData 赛事数据
  65. * @param $model_odds 赔率model
  66. * @param $source 数据源
  67. * @return array
  68. * @throws \Exception
  69. * 获取足球默认赔率数据
  70. */
  71. public function getOddsZQ($matchData,$model_odds,$source){
  72. $list = array();
  73. foreach ($matchData as $key=>$item){
  74. $list[$key] = $item;
  75. $oddsData = lm($model_odds, 'Sports')
  76. ->select('id','p_code','odds_code','status','odds','condition','sort','odds_only')
  77. ->where($source)
  78. ->where(['match_id'=>$item['match_id'],'type'=>0])
  79. // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s"))//追加查询有效时间
  80. ->where(
  81. function($query)use ($model_odds){
  82. $query->where($model_odds.'.odds_code','concede_home')
  83. ->orWhere(function($query)use ($model_odds){
  84. $query->where($model_odds.'.odds_code','concede_guest');
  85. })
  86. ->orWhere(function($query)use ($model_odds){
  87. $query->where($model_odds.'.odds_code','size_home');
  88. })
  89. ->orWhere(function($query)use ($model_odds){
  90. $query->where($model_odds.'.odds_code','size_guest');
  91. });
  92. }
  93. )
  94. ->get()->toArray();
  95. if(!empty($oddsData)){
  96. //根据 排序 获取 最新让球/大小玩法赔率
  97. $sortData = array_column($oddsData,'sort');
  98. array_multisort($sortData,SORT_DESC,$oddsData);
  99. $list[$key]['oddsData'] = array_slice($oddsData,0,4);//前四条 放入
  100. }else{
  101. $list[$key]['oddsData'] = [];
  102. }
  103. }
  104. return $list;
  105. }
  106. /**
  107. * @param $matchData 赛事数据
  108. * @param $model_odds 赔率model
  109. * @param $source 数据源
  110. * @return array
  111. * @throws \Exception
  112. * 获取篮球默认赔率数据
  113. */
  114. public function getOddsLQ($matchData,$model_odds,$source){
  115. $list = array();
  116. foreach ($matchData as $key=>$item){
  117. $list[$key] = $item;
  118. $oddsData = lm($model_odds, 'Sports')
  119. ->select('id','p_code','odds_code','status','odds','condition','sort','odds_only')
  120. ->where($source)
  121. ->where(['match_id'=>$item['match_id'],'type'=>0])
  122. // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s"))//追加查询有效时间
  123. ->where(
  124. function($query)use ($model_odds){
  125. $query->where($model_odds.'.odds_code','concede_home')
  126. ->orWhere(function($query)use ($model_odds){
  127. $query->where($model_odds.'.odds_code','concede_guest');
  128. })
  129. ->orWhere(function($query)use ($model_odds){
  130. $query->where($model_odds.'.odds_code','size_home');
  131. })
  132. ->orWhere(function($query)use ($model_odds){
  133. $query->where($model_odds.'.odds_code','size_guest');
  134. });
  135. }
  136. )
  137. ->get()->toArray();
  138. if(!empty($oddsData)){
  139. //根据 排序 获取 最新让球/大小玩法赔率
  140. $sortData = array_column($oddsData,'sort');
  141. array_multisort($sortData,SORT_DESC,$oddsData);
  142. $list[$key]['oddsData'] = array_slice($oddsData,0,4);//前四条 放入
  143. }else{
  144. $list[$key]['oddsData'] = [];
  145. }
  146. }
  147. return $list;
  148. }
  149. /**
  150. * @param $matchData 赛事数据
  151. * @param $model_odds 赔率model
  152. * @param $source 数据源
  153. * @return array
  154. * @throws \Exception
  155. * 获取网球默认赔率数据
  156. */
  157. public function getOddsWQ($matchData,$model_odds,$source){
  158. $list = array();
  159. foreach ($matchData as $key=>$item){
  160. $list[$key] = $item;
  161. $oddsData = lm($model_odds, 'Sports')
  162. ->select('id','p_code','odds_code','status','odds','condition','sort','odds_only')
  163. ->where($source)
  164. ->where(['match_id'=>$item['match_id'],'type'=>0])
  165. // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s"))//追加查询有效时间
  166. ->where(
  167. function($query)use ($model_odds){
  168. $query->where($model_odds.'.odds_code','capot_home')
  169. ->orWhere(function($query)use ($model_odds){
  170. $query->where($model_odds.'.odds_code','capot_guest');
  171. })
  172. ->orWhere(function($query)use ($model_odds){
  173. $query->where($model_odds.'.odds_code','concede_home');
  174. })
  175. ->orWhere(function($query)use ($model_odds){
  176. $query->where($model_odds.'.odds_code','concede_guest');
  177. });
  178. }
  179. )
  180. ->get()->toArray();
  181. if(!empty($oddsData)){
  182. //根据 排序 获取 最新让球/大小玩法赔率
  183. $sortData = array_column($oddsData,'sort');
  184. array_multisort($sortData,SORT_DESC,$oddsData);
  185. $list[$key]['oddsData'] = array_slice($oddsData,0,4);//前四条 放入
  186. }else{
  187. $list[$key]['oddsData'] = [];
  188. }
  189. }
  190. return $list;
  191. }
  192. /**
  193. * @param $matchData 赛事数据
  194. * @param $model_odds 赔率model
  195. * @param $source 数据源
  196. * @return array
  197. * @throws \Exception
  198. * 获取棒球默认赔率数据
  199. */
  200. public function getOddsBQ($matchData,$model_odds,$source){
  201. $list = array();
  202. foreach ($matchData as $key=>$item){
  203. $list[$key] = $item;
  204. $oddsData = lm($model_odds, 'Sports')
  205. ->select('id','p_code','odds_code','status','odds','condition','sort','odds_only')
  206. ->where($source)
  207. ->where(['match_id'=>$item['match_id'],'type'=>0])
  208. // ->where($model_odds.'.expire_time','>',date("Y-m-d H:i:s"))//追加查询有效时间
  209. ->where(
  210. function($query)use ($model_odds){
  211. $query->where($model_odds.'.odds_code','capot_home')
  212. ->orWhere(function($query)use ($model_odds){
  213. $query->where($model_odds.'.odds_code','capot_guest');
  214. });
  215. }
  216. )
  217. ->get()->toArray();
  218. if(!empty($oddsData)){
  219. //根据 排序 获取 最新让球/大小玩法赔率
  220. $sortData = array_column($oddsData,'sort');
  221. array_multisort($sortData,SORT_DESC,$oddsData);
  222. $list[$key]['oddsData'] = array_slice($oddsData,0,2);//前四条 放入
  223. }else{
  224. $list[$key]['oddsData'] = [];
  225. }
  226. }
  227. return $list;
  228. }
  229. }