GetOddsData.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  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,$oddsTypeWhere=''){
  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('id as lg_id','name_chinese')
  28. ->where(['id'=>$data['leagueID']])
  29. ->first();
  30. if(empty($league->lg_id)) throw new \Exception(Render([], '10003', lang('Tips','Sports')->get('PARAM_ERROR')));
  31. $matchData = lm($model_match, 'Sports')
  32. ->select('lg_id','id as match_id','tag','match_date','match_time','home_team','guest_team')
  33. ->where(['lg_id'=>$data['leagueID']])
  34. ->where($whereDate)
  35. ->where($model_match.'.us_time','>',qgmdate('Y-m-d H:i:s', '', -4))
  36. ->where('status','<',2)
  37. ->where($model_match.'.home_team','<>',null)
  38. ->where($model_match.'.guest_team','<>',null)
  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. //===获取当前赛事是否有赔率,如果没有则去除===
  47. $matchData = $this->commonFunction->Handle_Odds_Null($matchData,$models);
  48. if(empty($matchData)) throw new \Exception(Render([], '10004', lang('Tips','Sports')->get('PARAM_ERROR')));
  49. if(empty($matchData)){
  50. Render([], '10006', lang('Tips','Sports')->get('empty'));
  51. }
  52. switch ($data['game_code']){
  53. case 'zq'://获取足球默认赔率数据
  54. $list = $this->getOddsZQ($matchData,$model_odds,$source,$oddsTypeWhere);
  55. break;
  56. case 'lq'://获取篮球默认赔率数据
  57. $list = $this->getOddsLQ($matchData,$model_odds,$source,$oddsTypeWhere);
  58. break;
  59. case 'wq'://获取网球默认赔率数据
  60. $list = $this->getOddsWQ($matchData,$model_odds,$source,$oddsTypeWhere);
  61. break;
  62. case 'bq'://获取棒球默认赔率数据
  63. $list = $this->getOddsBQ($matchData,$model_odds,$source,$oddsTypeWhere);
  64. break;
  65. default:
  66. throw new \Exception(Render([], '10002', lang('Tips','Sports')->get('PARAM_ERROR')));
  67. }
  68. $data = [
  69. 'lg_id'=>$league->lg_id,
  70. 'leagueName'=>$league->name_chinese,
  71. 'matchNum'=>count($list) ,
  72. 'matchData'=>$list,
  73. ];
  74. return $data;
  75. }
  76. /**
  77. * @param $matchData 赛事数据
  78. * @param $model_odds 赔率model
  79. * @param $source 数据源
  80. * @return array
  81. * @throws \Exception
  82. * 获取足球默认赔率数据
  83. */
  84. public function getOddsZQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){
  85. //获取赛事id 集合
  86. $match_ids = [];
  87. foreach ($matchData as $k=>$v){
  88. $match_ids[] = (int)$v['match_id'];
  89. }
  90. $oddsData = lm($model_odds, 'Sports')
  91. ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only')
  92. ->whereIn('match_id',$match_ids)
  93. ->where(['status'=>0])
  94. ->where($oddsTypeWhere)
  95. ->where(
  96. function($query)use ($model_odds){
  97. $query->where($model_odds.'.odds_code','concede_home')
  98. ->orWhere(function($query)use ($model_odds){
  99. $query->where($model_odds.'.odds_code','concede_guest');
  100. })
  101. ->orWhere(function($query)use ($model_odds){
  102. $query->where($model_odds.'.odds_code','goal_size_big');
  103. })
  104. ->orWhere(function($query)use ($model_odds){
  105. $query->where($model_odds.'.odds_code','goal_size_small');
  106. });
  107. }
  108. )
  109. ->get()->toArray();
  110. foreach ($matchData as $kk=>$vv){
  111. //获取赛事下赔率并且分组
  112. $odds = [];
  113. foreach ($oddsData as $kkk=>$vvv) {
  114. if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) {
  115. if($vvv['odds_code'] == 'concede_guest'){
  116. $concede_g = $vvv;
  117. }
  118. if($vvv['odds_code'] == 'concede_home'){
  119. $concede_h = $vvv;
  120. }
  121. if($vvv['odds_code'] == 'goal_size_big'){
  122. $size_s = $vvv;
  123. }
  124. if($vvv['odds_code'] == 'goal_size_small'){
  125. $size_b = $vvv;
  126. }
  127. }
  128. }
  129. $concede_size = [$concede_g,$concede_h,$size_s,$size_b];
  130. foreach ($concede_size as $key => $vaule){
  131. if($vaule == null) unset($concede_size[$key]);
  132. }
  133. sort($concede_size);
  134. $odds = $concede_size;
  135. $matchData[$kk]['oddsData'] = $odds;
  136. }
  137. return $matchData;
  138. }
  139. /**
  140. * @param $matchData 赛事数据
  141. * @param $model_odds 赔率model
  142. * @param $source 数据源
  143. * @return array
  144. * @throws \Exception
  145. * 获取篮球默认赔率数据
  146. */
  147. public function getOddsLQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){
  148. //获取赛事id 集合
  149. $match_ids = [];
  150. foreach ($matchData as $k=>$v){
  151. $match_ids[] = $v['match_id'];
  152. }
  153. $oddsData = lm($model_odds, 'Sports')
  154. ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only')
  155. ->whereIn('match_id',$match_ids)
  156. ->where(['status'=>0])
  157. ->where($oddsTypeWhere)
  158. ->where(
  159. function($query)use ($model_odds){
  160. $query->where($model_odds.'.odds_code','concede_home')
  161. ->orWhere(function($query)use ($model_odds){
  162. $query->where($model_odds.'.odds_code','concede_guest');
  163. })
  164. ->orWhere(function($query)use ($model_odds){
  165. $query->where($model_odds.'.odds_code','total_size_big');
  166. })
  167. ->orWhere(function($query)use ($model_odds){
  168. $query->where($model_odds.'.odds_code','total_size_small');
  169. });
  170. }
  171. )
  172. ->get()->toArray();
  173. foreach ($matchData as $kk=>$vv){
  174. //获取赛事下赔率并且分组
  175. $odds = [];
  176. foreach ($oddsData as $kkk=>$vvv) {
  177. if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) {
  178. if($vvv['odds_code'] == 'concede_guest'){
  179. $concede_g = $vvv;
  180. }
  181. if($vvv['odds_code'] == 'concede_home'){
  182. $concede_h = $vvv;
  183. }
  184. if($vvv['odds_code'] == 'total_size_big'){
  185. $size_s = $vvv;
  186. }
  187. if($vvv['odds_code'] == 'total_size_small'){
  188. $size_b = $vvv;
  189. }
  190. }
  191. }
  192. $concede_size = [$concede_g,$concede_h,$size_s,$size_b];
  193. foreach ($concede_size as $key => $vaule){
  194. if($vaule == null) unset($concede_size[$key]);
  195. }
  196. sort($concede_size);
  197. $odds = $concede_size;
  198. $matchData[$kk]['oddsData'] = $odds;
  199. }
  200. return $matchData;
  201. }
  202. /**
  203. * @param $matchData 赛事数据
  204. * @param $model_odds 赔率model
  205. * @param $source 数据源
  206. * @return array
  207. * @throws \Exception
  208. * 获取网球默认赔率数据
  209. */
  210. public function getOddsWQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){
  211. //获取赛事id 集合
  212. $match_ids = [];
  213. foreach ($matchData as $k=>$v){
  214. $match_ids[] = $v['match_id'];
  215. }
  216. $oddsData = lm($model_odds, 'Sports')
  217. ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only')
  218. ->whereIn('match_id',$match_ids)
  219. ->where(['status'=>0])
  220. ->where($oddsTypeWhere)
  221. ->where(
  222. function($query)use ($model_odds){
  223. $query->where($model_odds.'.odds_code','dishes_home')
  224. ->orWhere(function($query)use ($model_odds){
  225. $query->where($model_odds.'.odds_code','dishes_guest');
  226. })
  227. ->orWhere(function($query)use ($model_odds){
  228. $query->where($model_odds.'.odds_code','kemp_home');
  229. })
  230. ->orWhere(function($query)use ($model_odds){
  231. $query->where($model_odds.'.odds_code','kemp_guest');
  232. });
  233. }
  234. )
  235. ->get()->toArray();
  236. foreach ($matchData as $kk=>$vv){
  237. //获取赛事下赔率并且分组
  238. $odds = [];
  239. foreach ($oddsData as $kkk=>$vvv) {
  240. if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) {
  241. if($vvv['odds_code'] == 'dishes_home'){
  242. $concede_g = $vvv;
  243. }
  244. if($vvv['odds_code'] == 'dishes_guest'){
  245. $concede_h = $vvv;
  246. }
  247. if($vvv['odds_code'] == 'kemp_home'){
  248. $size_s = $vvv;
  249. }
  250. if($vvv['odds_code'] == 'kemp_guest'){
  251. $size_b = $vvv;
  252. }
  253. }
  254. }
  255. $concede_size = [$concede_g,$concede_h,$size_s,$size_b];
  256. foreach ($concede_size as $key => $vaule){
  257. if($vaule == null) unset($concede_size[$key]);
  258. }
  259. sort($concede_size);
  260. $odds = $concede_size;
  261. $matchData[$kk]['oddsData'] = $odds;
  262. }
  263. return $matchData;
  264. }
  265. /**
  266. * @param $matchData 赛事数据
  267. * @param $model_odds 赔率model
  268. * @param $source 数据源
  269. * @return array
  270. * @throws \Exception
  271. * 获取棒球默认赔率数据
  272. */
  273. public function getOddsBQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){
  274. //获取赛事id 集合
  275. $match_ids = [];
  276. foreach ($matchData as $k=>$v){
  277. $match_ids[] = $v['match_id'];
  278. }
  279. $oddsData = lm($model_odds, 'Sports')
  280. ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only')
  281. ->whereIn('match_id',$match_ids)
  282. ->where(['status'=>0])
  283. ->where($oddsTypeWhere)
  284. ->where(
  285. function($query)use ($model_odds){
  286. $query->where($model_odds.'.odds_code','capot_home')
  287. ->orWhere(function($query)use ($model_odds){
  288. $query->where($model_odds.'.odds_code','capot_guest');
  289. });
  290. }
  291. )
  292. ->get()->toArray();
  293. foreach ($matchData as $kk=>$vv){
  294. //获取赛事下赔率并且分组
  295. $odds = [];
  296. foreach ($oddsData as $kkk=>$vvv) {
  297. if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) {
  298. if($vvv['odds_code'] == 'capot_home'){
  299. $concede_g = $vvv;
  300. }
  301. if($vvv['odds_code'] == 'capot_guest'){
  302. $concede_h = $vvv;
  303. }
  304. }
  305. }
  306. $concede_size = [$concede_g,$concede_h];
  307. foreach ($concede_size as $key => $vaule){
  308. if($vaule == null) unset($concede_size[$key]);
  309. }
  310. sort($concede_size);
  311. $odds = $concede_size;
  312. $matchData[$kk]['oddsData'] = $odds;
  313. }
  314. return $matchData;
  315. }
  316. }