GetOddsData.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  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. //获取非滚球/即将状态足球默认玩法
  91. $get_DefaultOdds = require "Config/DefaultOdds.php";
  92. $DefaultOdds = $get_DefaultOdds['Other']['zq'];
  93. $oddsData = lm($model_odds, 'Sports')
  94. ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only','source')
  95. ->whereIn('match_id',$match_ids)
  96. ->where(['status'=>0])
  97. ->where($oddsTypeWhere)
  98. ->where(
  99. function($query)use ($model_odds,$DefaultOdds){
  100. $query->where($model_odds.'.odds_code',$DefaultOdds['zq_concede_home'])
  101. ->orWhere(function($query)use ($model_odds,$DefaultOdds){
  102. $query->where($model_odds.'.odds_code',$DefaultOdds['zq_concede_guest']);
  103. })
  104. ->orWhere(function($query)use ($model_odds,$DefaultOdds){
  105. $query->where($model_odds.'.odds_code',$DefaultOdds['zq_goal_size_big']);
  106. })
  107. ->orWhere(function($query)use ($model_odds,$DefaultOdds){
  108. $query->where($model_odds.'.odds_code',$DefaultOdds['zq_goal_size_small']);
  109. });
  110. }
  111. )
  112. ->get()->toArray();
  113. foreach ($matchData as $kk=>$vv){
  114. //获取赛事下赔率并且分组
  115. $odds = [];
  116. foreach ($oddsData as $kkk=>$vvv) {
  117. if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) {
  118. //获取数据源ID
  119. $vvv['sourceID'] = $this->commonFunction->getSourceID($vvv['source']);
  120. $vvv['mark'] = 'zq'.'-'.$vvv['match_id'].'-'.$vvv['p_code'].'-'.$vvv['odds_code'].'-'.$vvv['sort'];
  121. unset($vvv['source']);
  122. if($vvv['odds_code'] == $DefaultOdds['zq_concede_guest']){
  123. $concede_g = $vvv;
  124. }
  125. if($vvv['odds_code'] == $DefaultOdds['zq_concede_home']){
  126. $concede_h = $vvv;
  127. }
  128. if($vvv['odds_code'] == $DefaultOdds['zq_goal_size_small']){
  129. $size_s = $vvv;
  130. }
  131. if($vvv['odds_code'] == $DefaultOdds['zq_goal_size_big']){
  132. $size_b = $vvv;
  133. }
  134. }
  135. }
  136. $concede_size = [$concede_g,$concede_h,$size_s,$size_b];
  137. foreach ($concede_size as $key => $vaule){
  138. if($vaule == null) unset($concede_size[$key]);
  139. }
  140. sort($concede_size);
  141. $odds = $concede_size;
  142. $matchData[$kk]['oddsData'] = $odds;
  143. }
  144. return $matchData;
  145. }
  146. /**
  147. * @param $matchData 赛事数据
  148. * @param $model_odds 赔率model
  149. * @param $source 数据源
  150. * @return array
  151. * @throws \Exception
  152. * 获取篮球默认赔率数据
  153. */
  154. public function getOddsLQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){
  155. //获取赛事id 集合
  156. $match_ids = [];
  157. foreach ($matchData as $k=>$v){
  158. $match_ids[] = $v['match_id'];
  159. }
  160. //获取非滚球/即将状态篮球默认玩法
  161. $get_DefaultOdds = require "Config/DefaultOdds.php";
  162. $DefaultOdds = $get_DefaultOdds['Other']['lq'];
  163. $oddsData = lm($model_odds, 'Sports')
  164. ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only','source')
  165. ->whereIn('match_id',$match_ids)
  166. ->where(['status'=>0])
  167. ->where($oddsTypeWhere)
  168. ->where(
  169. function($query)use ($model_odds,$DefaultOdds){
  170. $query->where($model_odds.'.odds_code',$DefaultOdds['lq_concede_home'])
  171. ->orWhere(function($query)use ($model_odds,$DefaultOdds){
  172. $query->where($model_odds.'.odds_code',$DefaultOdds['lq_concede_guest']);
  173. })
  174. ->orWhere(function($query)use ($model_odds,$DefaultOdds){
  175. $query->where($model_odds.'.odds_code',$DefaultOdds['lq_total_size_big']);
  176. })
  177. ->orWhere(function($query)use ($model_odds,$DefaultOdds){
  178. $query->where($model_odds.'.odds_code',$DefaultOdds['lq_total_size_small']);
  179. });
  180. }
  181. )
  182. ->get()->toArray();
  183. foreach ($matchData as $kk=>$vv){
  184. //获取赛事下赔率并且分组
  185. $odds = [];
  186. foreach ($oddsData as $kkk=>$vvv) {
  187. if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) {
  188. //获取数据源ID
  189. $vvv['sourceID'] = $this->commonFunction->getSourceID($vvv['source']);
  190. $vvv['mark'] = 'lq'.'-'.$vvv['match_id'].'-'.$vvv['p_code'].'-'.$vvv['odds_code'].'-'.$vvv['sort'];
  191. unset($vvv['source']);
  192. if($vvv['odds_code'] == $DefaultOdds['lq_concede_guest']){
  193. $concede_g = $vvv;
  194. }
  195. if($vvv['odds_code'] == $DefaultOdds['lq_concede_home']){
  196. $concede_h = $vvv;
  197. }
  198. if($vvv['odds_code'] == $DefaultOdds['lq_total_size_small']){
  199. $size_s = $vvv;
  200. }
  201. if($vvv['odds_code'] == $DefaultOdds['lq_total_size_big']){
  202. $size_b = $vvv;
  203. }
  204. }
  205. }
  206. $concede_size = [$concede_g,$concede_h,$size_s,$size_b];
  207. foreach ($concede_size as $key => $vaule){
  208. if($vaule == null) unset($concede_size[$key]);
  209. }
  210. sort($concede_size);
  211. $odds = $concede_size;
  212. $matchData[$kk]['oddsData'] = $odds;
  213. }
  214. return $matchData;
  215. }
  216. /**
  217. * @param $matchData 赛事数据
  218. * @param $model_odds 赔率model
  219. * @param $source 数据源
  220. * @return array
  221. * @throws \Exception
  222. * 获取网球默认赔率数据
  223. */
  224. public function getOddsWQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){
  225. //获取赛事id 集合
  226. $match_ids = [];
  227. foreach ($matchData as $k=>$v){
  228. $match_ids[] = $v['match_id'];
  229. }
  230. //获取非滚球/即将状态网球默认玩法
  231. $get_DefaultOdds = require "Config/DefaultOdds.php";
  232. $DefaultOdds = $get_DefaultOdds['Other']['wq'];
  233. $oddsData = lm($model_odds, 'Sports')
  234. ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only','source')
  235. ->whereIn('match_id',$match_ids)
  236. ->where(['status'=>0])
  237. ->where($oddsTypeWhere)
  238. ->where(
  239. function($query)use ($model_odds,$DefaultOdds){
  240. $query->where($model_odds.'.odds_code',$DefaultOdds['wq_dishes_home'])
  241. ->orWhere(function($query)use ($model_odds,$DefaultOdds){
  242. $query->where($model_odds.'.odds_code',$DefaultOdds['wq_dishes_guest']);
  243. })
  244. ->orWhere(function($query)use ($model_odds,$DefaultOdds){
  245. $query->where($model_odds.'.odds_code',$DefaultOdds['wq_kemp_home']);
  246. })
  247. ->orWhere(function($query)use ($model_odds,$DefaultOdds){
  248. $query->where($model_odds.'.odds_code',$DefaultOdds['wq_kemp_guest']);
  249. });
  250. }
  251. )
  252. ->get()->toArray();
  253. foreach ($matchData as $kk=>$vv){
  254. //获取赛事下赔率并且分组
  255. $odds = [];
  256. foreach ($oddsData as $kkk=>$vvv) {
  257. if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) {
  258. //获取数据源ID
  259. $vvv['sourceID'] = $this->commonFunction->getSourceID($vvv['source']);
  260. $vvv['mark'] = 'wq'.'-'.$vvv['match_id'].'-'.$vvv['p_code'].'-'.$vvv['odds_code'].'-'.$vvv['sort'];
  261. unset($vvv['source']);
  262. if($vvv['odds_code'] == $DefaultOdds['wq_dishes_guest']){
  263. $concede_g = $vvv;
  264. }
  265. if($vvv['odds_code'] == $DefaultOdds['wq_dishes_home']){
  266. $concede_h = $vvv;
  267. }
  268. if($vvv['odds_code'] ==$DefaultOdds['wq_kemp_home']){
  269. $size_s = $vvv;
  270. }
  271. if($vvv['odds_code'] == $DefaultOdds['wq_kemp_guest']){
  272. $size_b = $vvv;
  273. }
  274. }
  275. }
  276. $concede_size = [$concede_g,$concede_h,$size_s,$size_b];
  277. foreach ($concede_size as $key => $vaule){
  278. if($vaule == null) unset($concede_size[$key]);
  279. }
  280. sort($concede_size);
  281. $odds = $concede_size;
  282. $matchData[$kk]['oddsData'] = $odds;
  283. }
  284. return $matchData;
  285. }
  286. /**
  287. * @param $matchData 赛事数据
  288. * @param $model_odds 赔率model
  289. * @param $source 数据源
  290. * @return array
  291. * @throws \Exception
  292. * 获取棒球默认赔率数据
  293. */
  294. public function getOddsBQ($matchData,$model_odds,$source='',$oddsTypeWhere=''){
  295. //获取赛事id 集合
  296. $match_ids = [];
  297. foreach ($matchData as $k=>$v){
  298. $match_ids[] = $v['match_id'];
  299. }
  300. //获取非滚球/即将状态网球默认玩法
  301. $get_DefaultOdds = require "Config/DefaultOdds.php";
  302. $DefaultOdds = $get_DefaultOdds['Other']['bq'];
  303. $oddsData = lm($model_odds, 'Sports')
  304. ->select('match_id','id','p_code','odds_code','status','odds','condition','sort','odds_only','source')
  305. ->whereIn('match_id',$match_ids)
  306. ->where(['status'=>0])
  307. ->where($oddsTypeWhere)
  308. ->where(
  309. function($query)use ($model_odds,$DefaultOdds){
  310. $query->where($model_odds.'.odds_code',$DefaultOdds['bq_capot_home'])
  311. ->orWhere(function($query)use ($model_odds,$DefaultOdds){
  312. $query->where($model_odds.'.odds_code',$DefaultOdds['bq_capot_guest']);
  313. });
  314. }
  315. )
  316. ->get()->toArray();
  317. foreach ($matchData as $kk=>$vv){
  318. //获取赛事下赔率并且分组
  319. $odds = [];
  320. foreach ($oddsData as $kkk=>$vvv) {
  321. if ($vv['match_id'] == $vvv['match_id'] and $vvv['sort']==0) {
  322. //获取数据源ID
  323. $vvv['sourceID'] = $this->commonFunction->getSourceID($vvv['source']);
  324. $vvv['mark'] = 'bq'.'-'.$vvv['match_id'].'-'.$vvv['p_code'].'-'.$vvv['odds_code'].'-'.$vvv['sort'];
  325. unset($vvv['source']);
  326. if($vvv['odds_code'] == $DefaultOdds['bq_capot_home']){
  327. $concede_g = $vvv;
  328. }
  329. if($vvv['odds_code'] == $DefaultOdds['bq_capot_guest']){
  330. $concede_h = $vvv;
  331. }
  332. }
  333. }
  334. $concede_size = [$concede_g,$concede_h];
  335. foreach ($concede_size as $key => $vaule){
  336. if($vaule == null) unset($concede_size[$key]);
  337. }
  338. sort($concede_size);
  339. $odds = $concede_size;
  340. $matchData[$kk]['oddsData'] = $odds;
  341. }
  342. return $matchData;
  343. }
  344. }