FootballSettlement.php 35 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135
  1. <?php
  2. use app\models\SportEvent;
  3. /***************胜相关的玩法***************** */
  4. /**
  5. * 全场胜负(Match Winner) 玩法
  6. * 主胜(Home)、平局(Draw)、客胜(Away)
  7. * $amount:下注金额
  8. * $params['score']:主队-客对
  9. * $detail:下注时的详情
  10. */
  11. function MatchWinner($amount, $detail, $params)
  12. {
  13. $score = getScore($params['score']);
  14. $home = $score['home'];
  15. $away = $score['away'];
  16. $value_and_odd = getValueAndOdd($detail);
  17. $value = $value_and_odd['value'];
  18. $odd = $value_and_odd['odd'];
  19. $is_win = 0;
  20. if ($home > $away && $value == 'Home') {
  21. $is_win = 1;
  22. } elseif ($away > $home && $value == 'Away') {
  23. $is_win = 1;
  24. } elseif ($home == $away && $value == 'Draw') {
  25. $is_win = 1;
  26. }
  27. return getResult($is_win, $amount, $odd);
  28. }
  29. /**
  30. * Home/Away(主胜/客胜) 玩法(平局不输不赢)
  31. * 主胜(Home)、平局(Draw)、客胜(Away)
  32. * $amount:下注金额
  33. * $params['score']:主队-客对
  34. * $detail:下注时的详情
  35. */
  36. function HomeAwayWinner($amount, $detail, $params)
  37. {
  38. $score = getScore($params['score']);
  39. $home = $score['home'];
  40. $away = $score['away'];
  41. $value_and_odd = getValueAndOdd($detail);
  42. $value = $value_and_odd['value'];
  43. $odd = $value_and_odd['odd'];
  44. $is_win = 0;
  45. if ($home > $away && $value == 'Home') {
  46. $is_win = 1;
  47. } elseif ($away > $home && $value == 'Away') {
  48. $is_win = 1;
  49. } elseif ($home == $away && $value == 'Draw') {
  50. $is_win = 2;
  51. }
  52. return getResult($is_win, $amount, $odd);
  53. }
  54. /**
  55. * Second Half Winner(下半场胜负) 玩法
  56. * 主胜(Home)、平局(Draw)、客胜(Away)
  57. * $amount:下注金额
  58. * $half_score:上半场比分
  59. * $score:主队-客对
  60. * $detail:下注时的详情
  61. */
  62. function SecondHalfWinner($amount, $detail, $params)
  63. {
  64. $score = getHalfScore($params['score'], $params['half_score']);
  65. $home = $score['home'];
  66. $away = $score['away'];
  67. $value_and_odd = getValueAndOdd($detail);
  68. $value = $value_and_odd['value'];
  69. $odd = $value_and_odd['odd'];
  70. $is_win = 0;
  71. if ($home > $away && $value == 'Home') {
  72. $is_win = 1;
  73. } elseif ($away > $home && $value == 'Away') {
  74. $is_win = 1;
  75. } elseif ($home == $away && $value == 'Draw') {
  76. $is_win = 1;
  77. }
  78. return getResult($is_win, $amount, $odd);
  79. }
  80. /**
  81. * Win to Nil - Home(主队零封获胜:主队赢,客队的进球数为 0) 玩法
  82. * -yes: 主队零封获胜就中奖
  83. * -no: 非主队零封获胜就中奖
  84. * $amount:下注金额
  85. * $score:主队-客对
  86. * $detail:下注时的详情
  87. */
  88. function WinToNilHomeWinner($amount, $detail, $params)
  89. {
  90. }
  91. /**
  92. * First Half Winner(上半场胜负) 玩法
  93. * 主胜(Home)、平局(Draw)、客胜(Away)
  94. * $amount:下注金额
  95. * $half_score:上半场比分
  96. * $detail:下注时的详情
  97. */
  98. function FirstHalfWinner($amount, $detail, $params)
  99. {
  100. $score = getScore($params['half_score']);
  101. $home = $score['home'];
  102. $away = $score['away'];
  103. $value_and_odd = getValueAndOdd($detail);
  104. $value = $value_and_odd['value'];
  105. $odd = $value_and_odd['odd'];
  106. $is_win = 0;
  107. if ($home > $away && $value == 'Home') {
  108. $is_win = 1;
  109. } elseif ($away > $home && $value == 'Away') {
  110. $is_win = 1;
  111. } elseif ($home == $away && $value == 'Draw') {
  112. $is_win = 1;
  113. }
  114. return getResult($is_win, $amount, $odd);
  115. }
  116. /**
  117. * Win Both Halves(上下半场均获胜) 玩法
  118. * -Home: 主队上下半场都赢就中奖
  119. * -Away: 客队上下半场都赢就中奖
  120. * $amount:下注金额
  121. * $params['half_score']:上半场比分
  122. * $params['score']:主队-客对
  123. * $detail:下注时的详情
  124. */
  125. function WinBothHalvesWinner($amount, $detail, $params)
  126. {
  127. //上半场得分
  128. $score = getScore($params['half_score']);
  129. $home_first_half = $score['home'];
  130. $away_first_half = $score['away'];
  131. //下半场得分
  132. $score = getHalfScore($params['score'], $params['half_score']);
  133. $home_second_half = $score['home'];
  134. $away_second_half = $score['away'];
  135. $value_and_odd = getValueAndOdd($detail);
  136. $value = $value_and_odd['value'];
  137. $odd = $value_and_odd['odd'];
  138. $is_win = 0;
  139. if ($home_first_half > $away_first_half && $home_second_half > $away_second_half && $value == 'Home') {
  140. $is_win = 1; //主胜
  141. } elseif ($home_first_half < $away_first_half && $home_second_half < $away_second_half && $value == 'Away') {
  142. $is_win = 1; //客胜
  143. }
  144. return getResult($is_win, $amount, $odd);
  145. }
  146. /**
  147. * Double Chance(双选胜平负) 玩法
  148. * -Home or Draw:主队赢或打平就中奖
  149. * -Away or Draw:客队赢或打平就中奖
  150. * -Home or Away:只要分出胜负你就中奖
  151. * $amount:下注金额
  152. * $params['score']:主队-客对
  153. * $detail:下注时的详情
  154. */
  155. function DoubleChance($amount, $detail, $params)
  156. {
  157. $score = getScore($params['score']);
  158. $home = $score['home'];
  159. $away = $score['away'];
  160. $value_and_odd = getValueAndOdd($detail);
  161. $value = $value_and_odd['value'];
  162. $odd = $value_and_odd['odd'];
  163. $is_win = 0;
  164. if ($home >= $away && ($value == 'Home or Draw' || $value == 'Home/Draw')) {
  165. $is_win = 1;
  166. } elseif ($away >= $home && ($value == 'Away or Draw' || $value == 'Away/Draw')) {
  167. $is_win = 1;
  168. } elseif ($home != $away && ($value == 'Home or Away' || $value == 'Home/Away')) {
  169. $is_win = 1;
  170. }
  171. return getResult($is_win, $amount, $odd);
  172. }
  173. /**
  174. * Double Chance - First Half(上半场双选胜平负) 玩法
  175. * -Home or Draw:主队赢或打平就中奖
  176. * -Away or Draw:客队赢或打平就中奖
  177. * -Home or Away:只要分出胜负你就中奖
  178. * $amount:下注金额
  179. * $score:主队-客对
  180. * $detail:下注时的详情
  181. */
  182. function DoubleChanceFirstHalf($amount, $detail, $params)
  183. {
  184. $score = getScore($params['half_score']);
  185. $home = $score['home'];
  186. $away = $score['away'];
  187. $value_and_odd = getValueAndOdd($detail);
  188. $value = $value_and_odd['value'];
  189. $odd = $value_and_odd['odd'];
  190. $is_win = 0;
  191. if ($home >= $away && ($value == 'Home or Draw' || $value == 'Home/Draw')) {
  192. $is_win = 1;
  193. } elseif ($away >= $home && ($value == 'Away or Draw' || $value == 'Away/Draw')) {
  194. $is_win = 1;
  195. } elseif ($home != $away && ($value == 'Home or Away' || $value == 'Home/Away')) {
  196. $is_win = 1;
  197. }
  198. return getResult($is_win, $amount, $odd);
  199. }
  200. /***************进球相关的玩法***************** */
  201. /**
  202. * Both Teams Score(双方均有进球) 玩法
  203. * -Yes: 预测两支球队在比赛中都能至少攻入 1 球
  204. * -No: 预测至少有一支球队进球数为 0(或者两队都没有进球)
  205. * $amount:下注金额
  206. * $score:主队-客对
  207. * $detail:下注时的详情
  208. */
  209. function BothTeamsScore($amount, $detail, $params)
  210. {
  211. $score = getScore($params['score']);
  212. $home = $score['home'];
  213. $away = $score['away'];
  214. return getBothTeamsScore($amount, $home, $away,$detail);
  215. }
  216. /**
  217. * Team To Score First(首支进球球队) 玩法
  218. * -Home: 预测主队打入全场第一个进球
  219. * -Away: 预测客队打入全场第一个进球
  220. * -Draw: 预测两队打平
  221. * $amount:下注金额
  222. * $score:主队-客对
  223. * $detail:下注时的详情
  224. */
  225. function TeamToScoreFirst($amount, $detail, $params)
  226. {
  227. return teamToScore($amount, $detail, $params['data_id'], $params['home_team_id'], $params['guest_team_id'], 'first');
  228. }
  229. /**
  230. * Team To Score Last(首支进球球队) 玩法
  231. * -Home: 预测主队打入全场第一个进球
  232. * -Away: 预测客队打入全场第一个进球
  233. * -Draw: 预测两队打平
  234. * $amount:下注金额
  235. * $score:主队-客对
  236. * $detail:下注时的详情
  237. */
  238. function TeamToScoreLast($amount, $detail, $params)
  239. {
  240. return teamToScore($amount, $detail, $params['data_id'], $params['home_team_id'], $params['guest_team_id'], 'last');
  241. }
  242. function teamToScore($amount, $detail, $data_id, $home_team_id, $away_team_id, $type = 'first')
  243. {
  244. $order = $type == 'first' ? 'asc' : 'desc';
  245. $team_id = SportEvent::where('data_id', $data_id)->where('type', 'Goal')->order('time_elapsed', $order)->value('team_id');
  246. $value_and_odd = getValueAndOdd($detail);
  247. $value = $value_and_odd['value'];
  248. $odd = $value_and_odd['odd'];
  249. $is_win = 0;
  250. if ($home_team_id == $team_id && strtolower($value) == 'home' ) {
  251. $is_win = 1;
  252. } elseif ($away_team_id == $team_id && strtolower($value) == 'away' ) {
  253. $is_win = 1;
  254. }
  255. return getResult($is_win, $amount, $odd);
  256. }
  257. /**
  258. * Total - Home(主队总进球数) 玩法
  259. * -Over 1.5: 预测主队至少打进 2 个 或更多球
  260. * -Under 1.5: 预测主队进球数为 0 个 或 1 个
  261. * $amount:下注金额
  262. * $score:主队-客对
  263. * $detail:下注时的详情
  264. */
  265. function TotalHome($amount,$detail, $params)
  266. {
  267. $score = getScore($params['score']);
  268. $home = $score['home'];
  269. return totalHomeOrAway($amount, $home,$detail);
  270. }
  271. /**
  272. * Total - Away(客队总进球数) 玩法
  273. * -Over 1.5: 预测客队至少打进 2 个 或更多球
  274. * -Under 1.5: 预测客队进球数为 0 个 或 1 个
  275. * $amount:下注金额
  276. * $score:主队-客对
  277. * $detail:下注时的详情
  278. */
  279. function TotalAway($amount, $detail, $params)
  280. {
  281. $score = getScore($params['score']);
  282. $away = $score['away'];
  283. return totalHomeOrAway($amount, $away,$detail);
  284. }
  285. /**
  286. * Both Teams Score - First Half(上半场双方均进球) 玩法
  287. * -Yes: 预测上半场结束时,两队都至少各进一球
  288. * -No: 预测上半场结束时,至少有一支球队没进球
  289. * $amount:下注金额
  290. * $score:主队-客对
  291. * $detail:下注时的详情
  292. */
  293. function BothTeamsScoreFirstHalf($amount,$detail, $params)
  294. {
  295. $score = getScore($params['half_score']);
  296. $home = $score['home'];
  297. $away = $score['away'];
  298. return getBothTeamsScore($amount, $home, $away, $detail);
  299. }
  300. /**
  301. * Both Teams To Score - Second Half(下半场双方均进球) 玩法
  302. * -Yes: 预测下半场结束时,两队都至少各进一球
  303. * -No: 预测下半场结束时,至少有一支球队没进球
  304. * $amount:下注金额
  305. * $score:主队-客对
  306. * $detail:下注时的详情
  307. */
  308. function BothTeamsScoreSecondHalf($amount,$detail, $params)
  309. {
  310. $half_score = getHalfScore($params['score'], $params['half_score']);
  311. $half_home = $half_score['home'];
  312. $half_away = $half_score['away'];
  313. return getBothTeamsScore($amount, $half_home, $half_away, $detail);
  314. }
  315. //双方均进球的处理方法
  316. function getBothTeamsScore($amount, $home, $away,$detail)
  317. {
  318. $value_and_odd = getValueAndOdd($detail);
  319. $odd = $value_and_odd['odd'];
  320. $value = $value_and_odd['value'];
  321. $is_win = 0;
  322. if ($home > 0 && $away > 0 && strtolower($value) == 'yes' ) {
  323. $is_win = 1;
  324. } elseif (($away == 0 || $home == 0) && strtolower($value) == 'no' ) {
  325. $is_win = 1;
  326. }
  327. return getResult($is_win, $amount, $odd);
  328. }
  329. /**
  330. * Odd/Even(总进球数奇偶) 玩法
  331. * -Yes: 预测上半场结束时,两队都至少各进一球
  332. * -No: 预测上半场结束时,至少有一支球队没进球
  333. * $amount:下注金额
  334. * $score:主队-客对
  335. * $detail:下注时的详情
  336. */
  337. function OddEven($amount,$detail, $params)
  338. {
  339. $score = getScore($params['score']);
  340. $goals = $score['home'] + $score['away'];
  341. return getOddEven($amount, $goals, $detail);
  342. }
  343. /**
  344. * Odd/Even - First Half(上半场进球奇偶) 玩法
  345. * -Odd: 进球数除以 2 余 1
  346. * -Even: 进球数除以 2 余 0
  347. * $amount:下注金额
  348. * $score:主队-客对
  349. * $detail:下注时的详情
  350. */
  351. function OddEvenFirstHalf($amount,$detail, $params)
  352. {
  353. $score = getScore($params['half_score']);
  354. $half_goals = $score['home'] + $score['away'];
  355. return getOddEven($amount, $half_goals, $detail);
  356. }
  357. /**
  358. * Odd/Even - Second Half(下半场进球奇偶) 玩法
  359. * -Odd: 进球数除以 2 余 1
  360. * -Even: 进球数除以 2 余 0
  361. * $amount:下注金额
  362. * $score:主队-客对
  363. * $detail:下注时的详情
  364. */
  365. function OddEvenSecondHalf($amount,$detail, $params)
  366. {
  367. $score = getHalfScore($params['score'], $params['half_score']);
  368. $half_goals = $score['home'] + $score['away'];
  369. return getOddEven($amount, $half_goals, $detail);
  370. }
  371. /**
  372. * Home Odd/Even(主队进球奇偶) 玩法
  373. * -Odd: 进球数除以 2 余 1
  374. * -Even: 进球数除以 2 余 0
  375. * $amount:下注金额
  376. * $score:主队-客对
  377. * $detail:下注时的详情
  378. */
  379. function HomeOddEven($amount,$detail, $params)
  380. {
  381. $score = getScore($params['score']);
  382. $home = $score['home'];
  383. return getOddEven($amount, $home, $detail);
  384. }
  385. /**
  386. * Away Odd/Even(客队进球奇偶) 玩法
  387. * -Odd: 进球数除以 2 余 1
  388. * -Even: 进球数除以 2 余 0
  389. * $amount:下注金额
  390. * $score:主队-客对
  391. * $detail:下注时的详情
  392. */
  393. function AwayOddEven($amount,$detail, $params)
  394. {
  395. $score = getScore($params['score']);
  396. $away = $score['away'];
  397. return getOddEven($amount, $away, $detail);
  398. }
  399. //进球数奇偶的处理方法
  400. function getOddEven($amount, $goals,$detail)
  401. {
  402. $value_and_odd = getValueAndOdd($detail);
  403. $odd = $value_and_odd['odd'];
  404. $value = $value_and_odd['value'];
  405. $is_win = 0;
  406. if ($goals % 2 == 1 && strtolower($value) == 'odd' ) {
  407. $is_win = 1;
  408. } elseif ($goals % 2 == 0 && strtolower($value) == 'even' ) {
  409. $is_win = 1;
  410. }
  411. return getResult($is_win, $amount, $odd);
  412. }
  413. /**
  414. * Home Team Total Goals(1st Half)(主队上半场总进球) 玩法
  415. * -Over 1.5: 预测主队上半场至少打进 2 个 或更多球
  416. * -Under 1.5: 预测主队上半场进球数为 0 个 或 1 个
  417. * $amount:下注金额
  418. * $score:主队-客对
  419. * $detail:下注时的详情
  420. */
  421. function HomeTeamTotalGoals($amount,$detail, $params)
  422. {
  423. $score = getScore($params['half_score']);
  424. $home = $score['home'];
  425. return totalHomeOrAway($amount, $home,$detail);
  426. }
  427. /**
  428. * Away Team Total Goals(1st Half)(客队上半场总进球) 玩法
  429. * -Over 1.5: 预测客队上半场至少打进 2 个 或更多球
  430. * -Under 1.5: 预测客队上半场进球数为 0 个 或 1 个
  431. * $amount:下注金额
  432. * $score:主队-客对
  433. * $detail:下注时的详情
  434. */
  435. function AwayTeamTotalGoals($amount,$detail, $params)
  436. {
  437. $score = getScore($params['half_score']);
  438. $away = $score['away'];
  439. return totalHomeOrAway($amount, $away,$detail);
  440. }
  441. /**
  442. * Home Team Total Goals(2nd Half)(主队下半场总进球) 玩法
  443. * -Over 1.5: 预测主队下半场至少打进 2 个 或更多球
  444. * -Under 1.5: 预测主队下半场进球数为 0 个 或 1 个
  445. * $amount:下注金额
  446. * $score:主队-客对
  447. * $detail:下注时的详情
  448. */
  449. function HomeTeamTotalGoals2($amount,$detail, $params)
  450. {
  451. $score = getHalfScore($params['score'], $params['half_score']);
  452. $home_half = $score['home'];
  453. return totalHomeOrAway($amount, $home_half,$detail);
  454. }
  455. /**
  456. * Away Team Total Goals(2nd Half)(客队下半场总进球) 玩法
  457. * -Over 1.5: 预测客队下半场至少打进 2 个 或更多球
  458. * -Under 1.5: 预测客队下半场进球数为 0 个 或 1 个
  459. * $amount:下注金额
  460. * $score:主队-客对
  461. * $detail:下注时的详情
  462. */
  463. function AwayTeamTotalGoals2($amount,$detail, $params)
  464. {
  465. $score = getHalfScore($params['score'], $params['half_score']);
  466. $away_half = $score['away'];
  467. return totalHomeOrAway($amount, $away_half,$detail);
  468. }
  469. //$score:主队/客队的进球数
  470. function totalHomeOrAway($amount, $score,$detail)
  471. {
  472. $value_and_odd = getValueAndOdd($detail);
  473. $odd = $value_and_odd['odd'];
  474. $value = $value_and_odd['value'];
  475. $value = explode(' ', $value);
  476. $type = $value[0];
  477. $goal = $value[1];
  478. $is_win = 0;
  479. if ($score > $goal && strtolower($type) == 'over' ) {
  480. $is_win = 1;
  481. } elseif ($score < $goal && strtolower($type) == 'under' ) {
  482. $is_win = 1;
  483. }
  484. return getResult($is_win, $amount, $odd);
  485. }
  486. /**
  487. * Total Goals/Both Teams To Score(总进球+双方进球) 玩法
  488. * -o/yes 2.5: 大于 2.5 且 双方进球
  489. * -o/no 2.5: 大于 2.5 且 双方不同时进球(有一方为0)
  490. * -u/yes 2.5: 小于 2.5 且 双方进球
  491. * -u/no 2.5: 小于 2.5 且 双方不同时进球(且至少有一队没进球)
  492. * $amount:下注金额
  493. * $score:主队-客对
  494. * $detail:下注时的详情
  495. */
  496. function TotalGoalsBothTeamsToScore($amount,$detail, $params)
  497. {
  498. $score = getScore($params['score']);
  499. $home = $score['home'];
  500. $away = $score['away'];
  501. $score = $home + $away;
  502. $value_and_odd = getValueAndOdd($detail);
  503. $odd = $value_and_odd['odd'];
  504. $value = $value_and_odd['value'];
  505. $value = explode(' ', $value);
  506. $type = $value[0];
  507. $goal = $value[1];
  508. $is_win = 0;
  509. if ($score > $goal && $home > 0 && $away > 0 && strtolower($type) == 'o/yes' ) {
  510. $is_win = 1;
  511. } elseif ($score > $goal && ($home == 0 || $away == 0) && strtolower($type) == 'o/no' ) {
  512. $is_win = 1;
  513. } elseif ($score < $goal && $home > 0 && $away > 0 && strtolower($type) == 'u/yes' ) {
  514. $is_win = 1;
  515. } elseif ($score < $goal && ($home == 0 || $away == 0) && strtolower($type) == 'u/no' ) {
  516. $is_win = 1;
  517. }
  518. return getResult($is_win, $amount, $odd);
  519. }
  520. /**
  521. * RTG_H1(上半场进球数(简写)) 玩法
  522. * -Draw/Over 1.5: 平局 + 大 1.5 上半场打平 且 总进球≥2
  523. * -Away/Over 1.5: 客胜 + 大 1.5 上半场客队赢 且 总进球≥2
  524. * -Home/Over 1.5 主胜 + 大 1.5 上半场主队赢 且 总进球≥2
  525. * -Home/Under 1.5 主胜 + 小 1.5 上半场主队赢 且 总进球≤1
  526. * -Draw/Under 1.5 平局 + 小 1.5 上半场打平 且 总进球≤1
  527. * -Away/Under 1.5 客胜 + 小 1.5 上半场客队赢 且 总进球≤1
  528. * $amount:下注金额
  529. * $score:主队-客对
  530. * $detail:下注时的详情
  531. */
  532. function RTGH1($amount,$detail, $params)
  533. {
  534. $score = getScore($params['half_score']);
  535. $home = $score['home'];
  536. $away = $score['away'];
  537. $score = $home + $away;
  538. $value_and_odd = getValueAndOdd($detail);
  539. $odd = $value_and_odd['odd'];
  540. $value = $value_and_odd['value'];
  541. $value = explode(' ', $value);
  542. $type = $value[0];
  543. $goal = $value[1];
  544. $is_win = 0;
  545. if ($score > $goal && $home == $away && strtolower($type) == 'draw/over' ) {
  546. $is_win = 1;
  547. } elseif ($score > $goal && $home < $away && strtolower($type) == 'away/over' ) {
  548. $is_win = 1;
  549. } elseif ($score > $goal && $home > $away && strtolower($type) == 'home/over' ) {
  550. $is_win = 1;
  551. } elseif ($score < $goal && $home > $away && strtolower($type) == 'home/under' ) {
  552. $is_win = 1;
  553. } elseif ($score < $goal && $home == $away && strtolower($type) == 'draw/under' ) {
  554. $is_win = 1;
  555. } elseif ($score < $goal && $home < $away && strtolower($type) == 'away/under' ) {
  556. $is_win = 1;
  557. }
  558. return getResult($is_win, $amount, $odd);
  559. }
  560. /**
  561. * Home team will score in both halves(主队上下半场均进球) 玩法
  562. * -yes: 主队在上半场至少进一球,且在下半场也至少进一球。
  563. * -no: 主队在其中一个半场没进球,或者两个半场都没进球
  564. * $amount:下注金额
  565. * $score:主队-客对
  566. * $detail:下注时的详情
  567. */
  568. function HomeTeamWillScoreInBothHalves($amount,$detail, $params)
  569. {
  570. $score = getScore($params['half_score']);
  571. $home = $score['home'];
  572. $half_score = getHalfScore($params['score'], $params['half_score']);
  573. $home_half = $half_score['home'];
  574. $value_and_odd = getValueAndOdd($detail);
  575. $odd = $value_and_odd['odd'];
  576. $value = $value_and_odd['value'];
  577. $is_win = 0;
  578. if ($home > 0 && $home_half > 0 && strtolower($value) == 'yes' ) {
  579. $is_win = 1;
  580. } elseif (($home == 0 || $home_half == 0) && strtolower($value) == 'no' ) {
  581. $is_win = 1;
  582. }
  583. return getResult($is_win, $amount, $odd);
  584. }
  585. /**
  586. * Away team will score in both halves(客队上下半场均进球) 玩法
  587. * -yes: 客队在上半场至少进一球,且在下半场也至少进一球。
  588. * -no: 客队在其中一个半场没进球,或者两个半场都没进球。
  589. * $amount:下注金额
  590. * $score:主队-客对
  591. * $detail:下注时的详情
  592. */
  593. function AwayTeamWillScoreInBothHalves($amount,$detail, $params)
  594. {
  595. $score = getScore($params['half_score']);
  596. $away = $score['away'];
  597. $half_score = getHalfScore($params['score'], $params['half_score']);
  598. $away_half = $half_score['away'];
  599. $value_and_odd = getValueAndOdd($detail);
  600. $odd = $value_and_odd['odd'];
  601. $value = $value_and_odd['value'];
  602. $is_win = 0;
  603. if ($away > 0 && $away_half > 0 && strtolower($value) == 'yes' ) {
  604. $is_win = 1;
  605. } elseif (($away == 0 || $away_half == 0) && strtolower($value) == 'no' ) {
  606. $is_win = 1;
  607. }
  608. return getResult($is_win, $amount, $odd);
  609. }
  610. /**
  611. * How many goals will Home Team score?(主队进球数) 玩法
  612. * -No goal: 主队全场 0 进球
  613. * -1: 主队恰好进 1 个球
  614. * -2: 主队恰好进 2 个球
  615. * -3 or more: 主队射门 3 个或更多球
  616. * $amount:下注金额
  617. * $score:主队-客对
  618. * $detail:下注时的详情
  619. */
  620. function HowManyGoalsWillHomeTeamScore($amount,$detail, $params)
  621. {
  622. $score = getScore($params['score']);
  623. $home = $score['home'];
  624. $value_and_odd = getValueAndOdd($detail);
  625. $odd = $value_and_odd['odd'];
  626. $value = $value_and_odd['value'];
  627. $is_win = 0;
  628. if ($home == 0 && strtolower($value) == 'no goal' ) {
  629. $is_win = 1;
  630. } elseif (is_numeric($value) && $home == $value ) {
  631. $is_win = 1;
  632. } elseif (strpos($value, 'or more') !== false && $home >= intval($value)) {
  633. $is_win = 1;
  634. }
  635. return getResult($is_win, $amount, $odd);
  636. }
  637. /**
  638. * How many goals will Away Team score?(客队进球数) 玩法
  639. * -No goal: 客队全场 0 进球
  640. * -1: 客队恰好进 1 个球
  641. * -2: 客队恰好进 2 个球
  642. * -3 or more: 客队打进 3 个或更多球
  643. * $amount:下注金额
  644. * $score:主队-客对
  645. * $detail:下注时的详情
  646. */
  647. function HowManyGoalsWillAwayTeamScore($amount,$detail, $params)
  648. {
  649. $score = getScore($params['score']);
  650. $away = $score['away'];
  651. $value_and_odd = getValueAndOdd($detail);
  652. $odd = $value_and_odd['odd'];
  653. $value = $value_and_odd['value'];
  654. $is_win = 0;
  655. if ($away == 0 && strtolower($value) == 'no goal' ) {
  656. $is_win = 1;
  657. } elseif (is_numeric($value) && $away == $value ) {
  658. $is_win = 1;
  659. } elseif (strpos($value, 'or more') !== false && $away >= intval($value)) {
  660. $is_win = 1;
  661. }
  662. return getResult($is_win, $amount, $odd);
  663. }
  664. /**
  665. * Match Goals(全场进球,按盘口分类) 玩法
  666. * -value: over/under
  667. * -handicap: 1.5 2.5 ..
  668. * $amount:下注金额
  669. * $score:主队-客对
  670. * $detail:下注时的详情
  671. */
  672. function MatchGoals($amount,$detail, $params)
  673. {
  674. $score = getScore($params['score']);
  675. $score = $score['home'] + $score['away'];
  676. $value_and_odd = getValueAndOdd($detail);
  677. $odd = $value_and_odd['odd'];
  678. $value = $value_and_odd['value'];
  679. $handicap = $value_and_odd['handicap'];
  680. $is_win = 0;
  681. if ($score > $handicap && strtolower($value) == 'over' ) {
  682. $is_win = 1;
  683. } elseif ($score < $handicap && strtolower($value) == 'under' ) {
  684. $is_win = 1;
  685. }
  686. return getResult($is_win, $amount, $odd);
  687. }
  688. /**
  689. * Home Team Goals(主队进球,按盘口分类) 玩法
  690. * -value: over/under
  691. * -handicap: 1.5 2.5 ..
  692. * $amount:下注金额
  693. * $score:主队-客对
  694. * $detail:下注时的详情
  695. */
  696. function HomeTeamGoals($amount,$detail, $params)
  697. {
  698. $score = getScore($params['score']);
  699. $home = $score['home'];
  700. $value_and_odd = getValueAndOdd($detail);
  701. $odd = $value_and_odd['odd'];
  702. $value = $value_and_odd['value'];
  703. $handicap = $value_and_odd['handicap'];
  704. $is_win = 0;
  705. if ($home > $handicap && strtolower($value) == 'over' ) {
  706. $is_win = 1;
  707. } elseif ($home < $handicap && strtolower($value) == 'under' ) {
  708. $is_win = 1;
  709. }
  710. return getResult($is_win, $amount, $odd);
  711. }
  712. /**
  713. * Away Team Goals(客队进球,按盘口分类) 玩法
  714. * -value: over/under
  715. * -handicap: 1.5 2.5 ..
  716. * $amount:下注金额
  717. * $score:主队-客对
  718. * $detail:下注时的详情
  719. */
  720. function AwayTeamGoals($amount,$detail, $params)
  721. {
  722. $score = getScore($params['score']);
  723. $away = $score['away'];
  724. $value_and_odd = getValueAndOdd($detail);
  725. $odd = $value_and_odd['odd'];
  726. $value = $value_and_odd['value'];
  727. $handicap = $value_and_odd['handicap'];
  728. $is_win = 0;
  729. if ($away > $handicap && strtolower($value) == 'over' ) {
  730. $is_win = 1;
  731. } elseif ($away < $handicap && strtolower($value) == 'under' ) {
  732. $is_win = 1;
  733. }
  734. return getResult($is_win, $amount, $odd);
  735. }
  736. /**
  737. * Home Team Score a Goal (2nd Half)(主队下半场进球) 玩法
  738. * -Yes: 主队在下半场至少打进一球
  739. * -No: 主队在下半场一个球都不进
  740. * $amount:下注金额
  741. * $score:主队-客对
  742. * $detail:下注时的详情
  743. */
  744. function HomeTeamScoreAGoal2($amount,$detail, $params)
  745. {
  746. $half_score = getHalfScore($params['score'], $params['half_score']);
  747. $home_half = $half_score['home'];
  748. $value_and_odd = getValueAndOdd($detail);
  749. $odd = $value_and_odd['odd'];
  750. $value = $value_and_odd['value'];
  751. $is_win = 0;
  752. if ($home_half > 0 && strtolower($value) == 'yes' ) {
  753. $is_win = 1;
  754. } elseif ($home_half == 0 && strtolower($value) == 'no' ) {
  755. $is_win = 1;
  756. }
  757. return getResult($is_win, $amount, $odd);
  758. }
  759. /**
  760. * Away Team Score a Goal (2nd Half)(客队下半场进球) 玩法
  761. * -Yes: 客队在下半场至少打进一球
  762. * -No: 客队在下半场一个球都不进
  763. * $amount:下注金额
  764. * $score:主队-客对
  765. * $detail:下注时的详情
  766. */
  767. function AwayTeamScoreAGoal2($amount,$detail, $params)
  768. {
  769. $half_score = getHalfScore($params['score'], $params['half_score']);
  770. $away_half = $half_score['away'];
  771. $value_and_odd = getValueAndOdd($detail);
  772. $odd = $value_and_odd['odd'];
  773. $value = $value_and_odd['value'];
  774. $is_win = 0;
  775. if ($away_half > 0 && strtolower($value) == 'yes' ) {
  776. $is_win = 1;
  777. } elseif ($away_half == 0 && strtolower($value) == 'no' ) {
  778. $is_win = 1;
  779. }
  780. return getResult($is_win, $amount, $odd);
  781. }
  782. /**
  783. * Both Teams to Score(双方进球) 玩法
  784. * -yes: 主队有进球,且客队也有进球
  785. * -no: 至少有一支球队没进球
  786. * $amount:下注金额
  787. * $score:主队-客对
  788. * $detail:下注时的详情
  789. */
  790. function BothTeamsToScore($amount,$detail, $params)
  791. {
  792. $score = getScore($params['score']);
  793. $home = $score['home'];
  794. $away = $score['away'];
  795. $value_and_odd = getValueAndOdd($detail);
  796. $odd = $value_and_odd['odd'];
  797. $value = $value_and_odd['value'];
  798. $is_win = 0;
  799. if ($home > 0 && $away > 0 && strtolower($value) == 'yes' ) {
  800. $is_win = 1;
  801. } elseif (($home == 0 || $away == 0) && strtolower($value) == 'no' ) {
  802. $is_win = 1;
  803. }
  804. return getResult($is_win, $amount, $odd);
  805. }
  806. /**
  807. * Both Teams To Score (2nd Half)(下半场双方进球) 玩法
  808. * -yes: 下半场主队有进球,且下半场客队也有进球
  809. * -no: 下半场至少有一支球队没进球
  810. * $amount:下注金额
  811. * $score:主队-客对
  812. * $detail:下注时的详情
  813. */
  814. function BothTeamsToScore2($amount,$detail, $params)
  815. {
  816. $half_score = getHalfScore($params['score'], $params['half_score']);
  817. $home_half = $half_score['home'];
  818. $away_half = $half_score['away'];
  819. $value_and_odd = getValueAndOdd($detail);
  820. $odd = $value_and_odd['odd'];
  821. $value = $value_and_odd['value'];
  822. $is_win = 0;
  823. if ($home_half > 0 && $away_half > 0 && strtolower($value) == 'yes' ) {
  824. $is_win = 1;
  825. } elseif (($home_half == 0 || $away_half == 0) && strtolower($value) == 'no' ) {
  826. $is_win = 1;
  827. }
  828. return getResult($is_win, $amount, $odd);
  829. }
  830. /**
  831. * Goals Odd/Even (进球数奇偶) 玩法
  832. */
  833. function GoalsOddEven($amount,$detail, $params)
  834. {
  835. $score = getScore($params['score']);
  836. $goals = $score['home'] + $score['away'];
  837. return getOddEven($amount, $goals, $detail);
  838. }
  839. /**
  840. * Home Team Exact Goals Number(主队精确进球数) 玩法
  841. * -0: 预测主队全场比赛一个球都进不了
  842. * -1: 预测主队刚好只进 1 个球。
  843. * -more 2: 预测主队进球数达到或超过 2 个
  844. * $amount:下注金额
  845. * $score:主队-客对
  846. * $detail:下注时的详情
  847. */
  848. function HomeTeamExactGoalsNumber($amount,$detail, $params)
  849. {
  850. $score = getScore($params['score']);
  851. $home = $score['home'];
  852. $value_and_odd = getValueAndOdd($detail);
  853. $odd = $value_and_odd['odd'];
  854. $value = $value_and_odd['value'];
  855. $is_win = 0;
  856. if (is_numeric($value) && $home == $value ) {
  857. $is_win = 1;
  858. } elseif (strpos($value, 'more') !== false && $home >= intval($value)) {
  859. $is_win = 1;
  860. }
  861. return getResult($is_win, $amount, $odd);
  862. }
  863. /**
  864. * Away Team Exact Goals Number(客队精确进球数) 玩法
  865. * -0: 预测客队全场比赛一个球都进不了
  866. * -1: 预测客队刚好只进 1 个球。
  867. * -more 2: 预测客队进球数达到或超过 2 个。
  868. * $amount:下注金额
  869. * $score:主队-客对
  870. * $detail:下注时的详情
  871. */
  872. function AwayTeamExactGoalsNumber($amount,$detail, $params)
  873. {
  874. $score = getScore($params['score']);
  875. $away = $score['away'];
  876. $value_and_odd = getValueAndOdd($detail);
  877. $odd = $value_and_odd['odd'];
  878. $value = $value_and_odd['value'];
  879. $is_win = 0;
  880. if (is_numeric($value) && $away == $value ) {
  881. $is_win = 1;
  882. } elseif (strpos($value, 'more') !== false && $away >= intval($value)) {
  883. $is_win = 1;
  884. }
  885. return getResult($is_win, $amount, $odd);
  886. }
  887. /**
  888. * Results/Both Teams Score(赛果+双方进球) 玩法
  889. * -Home/Yes: 主队赢球,且客队也进了球
  890. * -Away/Yes: 客队赢球,且主队也进了球
  891. * -Draw/Yes: 双方打平,且都有进球
  892. * -Home/No: 主队赢球,且零封了客队
  893. * -Away/No: 客队赢球,且零封了主队
  894. * -Draw/No: 双方打平,且都没有进球
  895. * $amount:下注金额
  896. * $score:主队-客对
  897. * $detail:下注时的详情
  898. */
  899. function ResultsBothTeamsScore($amount,$detail, $params)
  900. {
  901. $score = getScore($params['score']);
  902. $home = $score['home'];
  903. $away = $score['away'];
  904. $value_and_odd = getValueAndOdd($detail);
  905. $value = strtolower($value_and_odd['value']);
  906. $odd = $value_and_odd['odd'];
  907. $is_win = 0;
  908. if ($home > $away && $away > 0 && ($value == 'home or yes' || $value == 'home/yes')) {
  909. $is_win = 1;
  910. } elseif ($away > $home && $home > 0 && ($value == 'away or yes' || $value == 'away/yes')) {
  911. $is_win = 1;
  912. } elseif ($home == $away && $home > 0 && $away >0 && ($value == 'draw or yes' || $value == 'draw/yes')) {
  913. $is_win = 1;
  914. } elseif ($home > $away && $away == 0 && ($value == 'home or no' || $value == 'home/no')) {
  915. $is_win = 1;
  916. } elseif ($away > $home && $home == 0 && ($value == 'away or no' || $value == 'away/no')) {
  917. $is_win = 1;
  918. } elseif ($home == $away && $home == 0 && $away == 0 && ($value == 'draw or no' || $value == 'draw/no')) {
  919. $is_win = 1;
  920. }
  921. return getResult($is_win, $amount, $odd);
  922. }
  923. /**
  924. * Result/Total Goals(赛果+总进球数) 玩法
  925. * -Draw/Over 1.5: 平局 + 大 1.5 总进球数打平 且 总进球≥2
  926. * -Away/Over 1.5: 客胜 + 大 1.5 总进球数赢 且 总进球≥2
  927. * -Home/Over 1.5 主胜 + 大 1.5 总进球数赢 且 总进球≥2
  928. * -Home/Under 1.5 主胜 + 小 1.5 总进球数赢 且 总进球≤1
  929. * -Draw/Under 1.5 平局 + 小 1.5 总进球数打平 且 总进球≤1
  930. * -Away/Under 1.5 客胜 + 小 1.5 总进球数赢 且 总进球≤1
  931. * $amount:下注金额
  932. * $score:主队-客对
  933. * $detail:下注时的详情
  934. */
  935. function ResultTotalGoals($amount,$detail, $params)
  936. {
  937. $score = getScore($params['score']);
  938. $home = $score['home'];
  939. $away = $score['away'];
  940. $score = $home + $away;
  941. $value_and_odd = getValueAndOdd($detail);
  942. $odd = $value_and_odd['odd'];
  943. $value = $value_and_odd['value'];
  944. $value = explode(' ', $value);
  945. $type = $value[0];
  946. $goal = $value[1];
  947. $is_win = 0;
  948. if ($score > $goal && $home == $away && strtolower($type) == 'draw/over' ) {
  949. $is_win = 1;
  950. } elseif ($score > $goal && $home < $away && strtolower($type) == 'away/over' ) {
  951. $is_win = 1;
  952. } elseif ($score > $goal && $home > $away && strtolower($type) == 'home/over' ) {
  953. $is_win = 1;
  954. } elseif ($score < $goal && $home > $away && strtolower($type) == 'home/under' ) {
  955. $is_win = 1;
  956. } elseif ($score < $goal && $home == $away && strtolower($type) == 'draw/under' ) {
  957. $is_win = 1;
  958. } elseif ($score < $goal && $home < $away && strtolower($type) == 'away/under' ) {
  959. $is_win = 1;
  960. }
  961. return getResult($is_win, $amount, $odd);
  962. }
  963. /**
  964. * Result / Both Teams To Score(赛果+双方进球) 玩法
  965. * -Home/Yes: 主队赢球,且客队也进了球
  966. * -Away/Yes: 客队赢球,且主队也进了球
  967. * -Draw/Yes: 双方打平,且都有进球
  968. * -Home/No: 主队赢球,且零封了客队
  969. * -Away/No: 客队赢球,且零封了主队
  970. * -Draw/No: 双方打平,且都没有进球
  971. * $amount:下注金额
  972. * $score:主队-客对
  973. * $detail:下注时的详情
  974. */
  975. function ResultBothTeamsToScore($amount,$detail, $params)
  976. {
  977. $score = getScore($params['score']);
  978. $home = $score['home'];
  979. $away = $score['away'];
  980. $value_and_odd = getValueAndOdd($detail);
  981. $value = strtolower($value_and_odd['value']);
  982. $odd = $value_and_odd['odd'];
  983. $is_win = 0;
  984. if ($home > $away && $away > 0 && ($value == 'home or yes' || $value == 'home/yes')) {
  985. $is_win = 1;
  986. } elseif ($away > $home && $home > 0 && ($value == 'away or yes' || $value == 'away/yes')) {
  987. $is_win = 1;
  988. } elseif ($home == $away && $home > 0 && $away >0 && ($value == 'draw or yes' || $value == 'draw/yes')) {
  989. $is_win = 1;
  990. } elseif ($home > $away && $away == 0 && ($value == 'home or no' || $value == 'home/no')) {
  991. $is_win = 1;
  992. } elseif ($away > $home && $home == 0 && ($value == 'away or no' || $value == 'away/no')) {
  993. $is_win = 1;
  994. } elseif ($home == $away && $home == 0 && $away == 0 && ($value == 'draw or no' || $value == 'draw/no')) {
  995. $is_win = 1;
  996. }
  997. return getResult($is_win, $amount, $odd);
  998. }
  999. /**
  1000. * 获取主客队得分
  1001. */
  1002. function getScore($score) {
  1003. $score = explode('-', $score);
  1004. return [
  1005. 'home' => (int)$score[0],
  1006. 'away' => (int)$score[1],
  1007. ];
  1008. }
  1009. /**
  1010. * 获取下半场主客队得分
  1011. */
  1012. function getHalfScore($score, $half_score) {
  1013. $score = explode('-', $score);
  1014. $half_score = explode('-', $half_score);
  1015. return [
  1016. 'home' => (int)$score[0] - (int)$half_score[0],
  1017. 'away' => (int)$score[1] - (int)$half_score[1],
  1018. ];
  1019. }
  1020. /**
  1021. * 获取比分
  1022. * $type : 1 主队总进球数,2 客队总进球数, 3
  1023. */
  1024. function getValueAndOdd($detail) {
  1025. $odds = $detail['odds'][0];
  1026. $values = $odds['values'][0];
  1027. return [
  1028. 'value' => $values['value'],
  1029. 'odd' => $values['odd'],
  1030. 'handicap' => isset($values['handicap']) ? $values['handicap'] : 0,
  1031. ];
  1032. }
  1033. function getResult($is_win, $amount, $odds) {
  1034. //is_win:是否中奖:0没中奖1中奖2和局3平手半
  1035. $result = [
  1036. 'is_win' => 0, //是否中奖:0没中奖1中奖2和局3平手半
  1037. 'win_amount' => 0, //中奖金额
  1038. 'profit_and_loss' => -$amount, //盈亏金额
  1039. 'settlement_status' => 1, //结算状态:1未结算2已结算3已取消
  1040. ];
  1041. if ($is_win == 1) {
  1042. $result['is_win'] = 1;
  1043. $result['win_amount'] = bcmul($amount, $odds, 2);
  1044. $result['profit_and_loss'] = $result['win_amount'] - $amount;
  1045. }
  1046. if ($is_win == 2) {
  1047. $result['is_win'] = 2;
  1048. $result['win_amount'] = 0;
  1049. $result['profit_and_loss'] = 0;
  1050. }
  1051. $result['settlement_status'] = 2;
  1052. return $result;
  1053. }