GetOddsData.php 10 KB

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