GetOddsData.php 9.8 KB

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