ZqRule.php 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/4/25
  6. * Time: 14:10
  7. */
  8. namespace App\Lib\Settlement\Adapter;
  9. use Illuminate\Support\Facades\DB;
  10. class ZqRule
  11. {
  12. use RulePlus;
  13. /**
  14. * 全场|主队|让球
  15. * @param mixed $model 注单表数据
  16. * @param mixed $resultModel 结果表数据
  17. * @param mixed $resultRecords 结果记录表数据
  18. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  19. */
  20. public function concede_home($model, $resultModels, $resultRecords)
  21. {
  22. $resultModel = $resultModels['0'];
  23. $home = intval($resultModel->home_score);
  24. $guest = intval($resultModel->guest_score);
  25. $word = $home . '-' . $guest . '(全场)';
  26. $ret = $this->zq_letball($home - $guest, $model->condition, $word);
  27. return $ret;
  28. }
  29. /**
  30. * 全场|客队|让球
  31. * @param mixed $model 注单表数据
  32. * @param mixed $resultModel 结果表数据
  33. * @param mixed $resultRecords 结果记录表数据
  34. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  35. */
  36. public function concede_guest($model, $resultModels, $resultRecords)
  37. {
  38. $resultModel = $resultModels['0'];
  39. $home = intval($resultModel->home_score);
  40. $guest = intval($resultModel->guest_score);
  41. $word = $home . '-' . $guest . '(全场)';
  42. $ret = $this->zq_letball($guest - $home, $model->condition, $word);
  43. return $ret;
  44. }
  45. /**
  46. * 上半场|主队|让球
  47. * @param mixed $model 注单表数据
  48. * @param mixed $resultModel 结果表数据
  49. * @param mixed $resultRecords 结果记录表数据
  50. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  51. */
  52. public function half_concede_home($model, $resultModels, $resultRecords)
  53. {
  54. $resultModel = $resultModels['0'];
  55. $home = intval($resultModel->u_home_score);
  56. $guest = intval($resultModel->u_guest_score);
  57. $word = $home . '-' . $guest . '(上半场)';
  58. $ret = $this->zq_letball($home - $guest, $model->condition, $word);
  59. return $ret;
  60. }
  61. /**
  62. * 上半场|客队|让球
  63. * @param mixed $model 注单表数据
  64. * @param mixed $resultModel 结果表数据
  65. * @param mixed $resultRecords 结果记录表数据
  66. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  67. */
  68. public function half_concede_guest($model, $resultModels, $resultRecords)
  69. {
  70. $resultModel = $resultModels['0'];
  71. $home = intval($resultModel->u_home_score);
  72. $guest = intval($resultModel->u_guest_score);
  73. $word = $home . '-' . $guest . '(上半场)';
  74. $ret = $this->zq_letball($guest - $home, $model->condition, $word);
  75. return $ret;
  76. }
  77. /**
  78. * 进球|全场|大
  79. * @param mixed $model 注单表数据
  80. * @param mixed $resultModel 结果表数据
  81. * @param mixed $resultMgoal_size_smallodel 结果表数据
  82. * @param mixed $resultRecords 结果记录表数据
  83. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  84. */
  85. public function goal_size_home($model, $resultModels, $resultRecords)
  86. {
  87. $resultModel = $resultModels['0'];
  88. $home = intval($resultModel->u_home_score);
  89. $guest = intval($resultModel->u_guest_score);
  90. $total = $home + $guest;
  91. $word = $home . '-' . $guest . '(全场)';
  92. $ret = $this->zq_inball_bigsmall($total, $model->condition, 2, $word);
  93. return $ret;
  94. //return $this->sizeFull($model, $resultModel, $resultRecords, 0, 1);
  95. }
  96. /**
  97. * 进球|全场|小
  98. * @param mixed $model 注单表数据
  99. * @param mixed $resultModel 结果表数据
  100. * @param mixed $resultRecords 结果记录表数据
  101. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  102. */
  103. public function goal_size_guest($model, $resultModel, $resultRecords)
  104. {
  105. return $this->sizeFull($model, $resultModel, $resultRecords, 0, -1);
  106. }
  107. /**
  108. * 总进球全场|[主、客、全]|大小
  109. * @param mixed $model 注单表数据
  110. * @param mixed $resultModel 结果表数据
  111. * @param mixed $resultRecords 结果记录表数据
  112. * @param mixed $type 1:主队 2:客队 0:全部进球 (目前只传 0)
  113. * @param mixed $size 1:大 -1:小
  114. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  115. */
  116. public function sizeFull($model, $resultModels, $resultRecords, $type, $size)
  117. {
  118. $resultModel = $resultModels['0'];
  119. // 总进球数
  120. $allGoal = intval($resultModel->home_score) + intval($resultModel->guest_score);
  121. // 主队进球数
  122. $homeGoal = intval($resultModel->home_score);
  123. // 客队进球数
  124. $guestGoal = intval($resultModel->guest_score);
  125. // 条件
  126. $condition = explode("/", $model->condition);
  127. $resultArr = [];
  128. // 循环对比输赢
  129. foreach ($condition as $value) {
  130. $absValue = abs($value);
  131. if ($type == 1) {
  132. $resultScore = $homeGoal - $absValue;
  133. } elseif ($type == 2) {
  134. $resultScore = $guestGoal - $absValue;
  135. } else {
  136. $resultScore = $allGoal - $absValue;
  137. }
  138. if ($resultScore > 0) {
  139. $resultArr[] = 1;
  140. } elseif ($resultScore < 0) {
  141. $resultArr[] = -1;
  142. } else {
  143. $resultArr[] = 0;
  144. }
  145. }
  146. // 去重
  147. $resultUniqueArr = array_unique($resultArr);
  148. // 循环对比让球后输赢
  149. $count = count($resultUniqueArr);
  150. if ($count == 1) {
  151. // 如果猜中
  152. if ($resultUniqueArr[0] == $size) {
  153. $data['result'] = 1;
  154. } elseif ($resultUniqueArr[0] == 0) {
  155. // 如果平
  156. $data['result'] = 2;
  157. } else {
  158. // 如果猜错
  159. $data['result'] = -1;
  160. }
  161. } elseif (in_array($size, $resultUniqueArr)) {
  162. $data['result'] = 3;
  163. } else {
  164. $data['result'] = 4;
  165. }
  166. $data['matchResult'] = "$homeGoal-$guestGoal(全场)";
  167. return $data;
  168. }
  169. //全场|进球|大
  170. public function goal_size_big($model, $resultModels, $resultRecords)
  171. {
  172. $resultModel = $resultModels['0'];
  173. $allscore = intval($resultModel->home_score) + intval($resultModel->guest_score);
  174. $word = $allscore . "(全场)";
  175. $returnDatas = $this->zq_inball_bigsmall($allscore, $model->condition, 2, $word);
  176. return $returnDatas;
  177. }
  178. //全场|进球|小
  179. public function goal_size_small($model, $resultModels, $resultRecords)
  180. {
  181. $resultModel = $resultModels['0'];
  182. $allscore = intval($resultModel->home_score) + intval($resultModel->guest_score);
  183. $word = $allscore . "(全场)";
  184. $returnDatas = $this->zq_inball_bigsmall($allscore, $model->condition, 1, $word);
  185. return $returnDatas;
  186. }
  187. /**
  188. * 进球|上半场|大
  189. * @param mixed $model 注单表数据
  190. * @param mixed $resultModel 结果表数据
  191. * @param mixed $resultRecords 结果记录表数据
  192. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  193. */
  194. public function half_goal_size_big($model, $resultModels, $resultRecords)
  195. {
  196. $resultModel = $resultModels['0'];
  197. $score = intval($resultModel->u_home_score) + intval($resultModel->u_guest_score);
  198. return $this->zq_inball_bigsmall($score, $model->condition, 2, $score . '(上半场)');
  199. }
  200. /**
  201. * 进球|上半场|小
  202. * @param mixed $model 注单表数据
  203. * @param mixed $resultModel 结果表数据
  204. * @param mixed $resultRecords 结果记录表数据
  205. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  206. */
  207. public function half_goal_size_small($model, $resultModels, $resultRecords)
  208. {
  209. $resultModel = $resultModels['0'];
  210. $score = intval($resultModel->u_home_score) + intval($resultModel->u_guest_score);
  211. return $this->zq_inball_bigsmall($score, $model->condition, 1, $score . '(上半场)');
  212. }
  213. /**
  214. * 全场|主队|独赢
  215. * @param mixed $model 注单表数据
  216. * @param mixed $resultModel 结果表数据
  217. * @param mixed $resultRecords 结果记录表数据
  218. * @return string 1:赢 -1:输
  219. */
  220. public function capot_home($model, $resultModels, $resultRecords)
  221. {
  222. $resultModel = $resultModels['0'];
  223. $home = intval($resultModel->home_score);
  224. $guest = intval($resultModel->guest_score);
  225. $word = $home . '-' . $guest . '(全场)';
  226. $ret = $this->zq_duyingv2(1, 4, $resultModel, $word);
  227. return $ret;
  228. }
  229. /**
  230. * 全场|客队|独赢
  231. * @param mixed $model 注单表数据
  232. * @param mixed $resultModel 结果表数据
  233. * @param mixed $resultRecords 结果记录表数据
  234. * @return string 1:赢 -1:输
  235. */
  236. public function capot_guest($model, $resultModels, $resultRecords)
  237. {
  238. $resultModel = $resultModels['0'];
  239. $home = intval($resultModel->home_score);
  240. $guest = intval($resultModel->guest_score);
  241. $word = $home . '-' . $guest . '(全场)';
  242. $ret = $this->zq_duyingv2(2, 4, $resultModel, $word);
  243. return $ret;
  244. }
  245. /**
  246. * 全场|主客平|独赢
  247. * @param mixed $model 注单表数据
  248. * @param mixed $resultModel 结果表数据
  249. * @param mixed $resultRecords 结果记录表数据
  250. * @return string 1:赢 -1:输
  251. */
  252. public function capot_dogfall($model, $resultModels, $resultRecords)
  253. {
  254. $resultModel = $resultModels['0'];
  255. $home = intval($resultModel->home_score);
  256. $guest = intval($resultModel->guest_score);
  257. $word = $home . '-' . $guest . '(全场)';
  258. if ($home == $guest) {
  259. $return['result'] = 1;
  260. } else {
  261. $return['result'] = -1;
  262. }
  263. $return['matchResult'] = $word;
  264. return $return;
  265. }
  266. /**
  267. * 上半场|主队|独赢
  268. * @param mixed $model 注单表数据
  269. * @param mixed $resultModel 结果表数据
  270. * @param mixed $resultRecords 结果记录表数据
  271. * @return string 1:赢 -1:输
  272. */
  273. public function half_capot_home($model, $resultModels, $resultRecords)
  274. {
  275. $resultModel = $resultModels['0'];
  276. $word = $resultModel->u_home_score . '-' . $resultModel->u_guest_score . '(上半场)';
  277. return $this->zq_duyingv2(1, 1, $resultModel, $word);
  278. }
  279. /**
  280. * 上半场|客队|独赢
  281. * @param mixed $model 注单表数据
  282. * @param mixed $resultModel 结果表数据
  283. * @param mixed $resultRecords 结果记录表数据
  284. * @return string 1:赢 -1:输
  285. */
  286. public function half_capot_guest($model, $resultModels, $resultRecords)
  287. {
  288. $resultModel = $resultModels['0'];
  289. $word = $resultModel->u_home_score . '-' . $resultModel->u_guest_score . '(上半场)';
  290. return $this->zq_duyingv2(2, 1, $resultModel, $word);
  291. }
  292. /**
  293. * 上半场|主客平|独赢
  294. * @param mixed $model 注单表数据
  295. * @param mixed $resultModel 结果表数据
  296. * @param mixed $resultRecords 结果记录表数据
  297. * @return string 1:赢 -1:输
  298. */
  299. public function half_capot_dogfall($model, $resultModels, $resultRecords)
  300. {
  301. $resultModel = $resultModels['0'];
  302. $word = $resultModel->u_home_score . '-' . $resultModel->u_guest_score . '(上半场)';
  303. if ($resultModel->u_home_score == $resultModel->u_guest_score) {
  304. $result = 1;
  305. } else {
  306. $result = -1;
  307. }
  308. return ['result' => $result, 'matchResult' => $word];
  309. }
  310. // first_last_ball最先/最后进球 开始-----------------------
  311. //主队|最先进球
  312. public function first_ball_home($model, $resultModel, $resultRecords)
  313. {
  314. $resultModel = $resultModel['0'];
  315. if (trim($resultModel->first_score) == trim($resultModel->home_team)) {
  316. return ['result' => 1, 'matchResult' => ''];
  317. } else {
  318. return ['result' => -1, 'matchResult' => ''];
  319. }
  320. }
  321. //客队|最先进球
  322. public function first_ball_guest($model, $resultModel, $resultRecords)
  323. {
  324. $resultModel = $resultModel['0'];
  325. if (trim($resultModel->first_score) == trim($resultModel->guest_team)) {
  326. return ['result' => 1, 'matchResult' => ''];
  327. } else {
  328. return ['result' => -1, 'matchResult' => ''];
  329. }
  330. }
  331. //主队|最后进球
  332. public function last_ball_home($model, $resultModel, $resultRecords)
  333. {
  334. $resultModel = $resultModel['0'];
  335. if (trim($resultModel->last_score) == trim($resultModel->home_team)) {
  336. return ['result' => 1, 'matchResult' => ''];
  337. } else {
  338. return ['result' => -1, 'matchResult' => ''];
  339. }
  340. }
  341. //客队|最后进球
  342. public function last_ball_guest($model, $resultModel, $resultRecords)
  343. {
  344. $pos = count($resultModel) - 1;
  345. $resultModel = $resultModel[$pos];
  346. if (trim($resultModel->last_score) == trim($resultModel->guest_team)) {
  347. return ['result' => 1, 'matchResult' => ''];
  348. } else {
  349. return ['result' => -1, 'matchResult' => ''];
  350. }
  351. }
  352. //没有进球
  353. public function not_ball($model, $resultModel, $resultRecords)
  354. {
  355. $pos = count($resultModel) - 1;
  356. $resultModel = $resultModel[$pos];
  357. $all_score = intval($resultModel->home_score) + intval($resultModel->guest_score);
  358. if ($all_score <= 0) {
  359. return ['result' => 1, 'matchResult' => ''];
  360. } else {
  361. return ['result' => -1, 'matchResult' => ''];
  362. }
  363. }
  364. ////////// first_last_ball最先/最后进球 结束-----------------------
  365. /**
  366. * 足球波胆 规则
  367. * @param $bet_match 投注赛事数据
  368. * @param $result_match 最终结果
  369. * @param $result_match_r 结果记录
  370. */
  371. public function bodan($bet_match, $result_match, $result_match_r)
  372. {
  373. // $bet_match = DB::table('money_buy_match')->where(['match_id'=> 3219925,'p_code'=>'bodan'])->first();
  374. // $result_match = DB::table('st_zq_result')->where('match_id', 3224833)->limit(10)->get();
  375. // select * from st_zq_result where id=1317823 order by id desc limit 10 ;
  376. // $result_match_r = DB::table('st_zq_result_record')->where('match_id', 3150765)->get()->toArray();
  377. //获取父/子级赔率代码
  378. $p_code = $bet_match->p_code;
  379. $odds_code = $bet_match->odds_code;
  380. //获取主客队投注比分
  381. $bet_score = explode('-', $bet_match->condition);
  382. $bet_home_score = (int)$bet_score[0];
  383. $bet_guest_score = isset($bet_score[1]) ? intval($bet_score[1]) : 0;
  384. if ($p_code != 'bodan') return false;
  385. //获取赛事最终结果数据
  386. $result_match = $this->getHalfData($result_match);
  387. if (strstr($odds_code, "half")) {//上半场
  388. //获取主客队上半场得分
  389. $home_score = $result_match->u_home_score;
  390. $guest_score = $result_match->u_guest_score;
  391. //返回结果
  392. $data = [
  393. 'result' => 1,
  394. 'matchResult' => "$home_score-$guest_score(上半场)"
  395. ];
  396. if (strstr($bet_match->condition, "其他")) {
  397. if (($home_score > 3) || ($guest_score > 3)) {
  398. return $data;
  399. }
  400. }
  401. //判断结果
  402. if ($bet_home_score == $home_score and $bet_guest_score == $guest_score) {
  403. return $data;
  404. }
  405. $data['result'] = -1;
  406. return $data;
  407. } else {//全场
  408. //获取主客队全场得分
  409. $home_score = $result_match->home_score;
  410. $guest_score = $result_match->guest_score;
  411. //返回结果
  412. $data = [
  413. 'result' => 1,
  414. 'matchResult' => "$home_score-$guest_score(全场)"
  415. ];
  416. if (strstr($bet_match->condition, "其他")) {
  417. if (($home_score > 4) || ($guest_score > 4)) {
  418. return $data;
  419. }
  420. }
  421. //判断结果
  422. if ($bet_home_score == $home_score and $bet_guest_score == $guest_score) {
  423. return $data;
  424. }
  425. $data['result'] = -1;
  426. return $data;
  427. }
  428. }
  429. //结果单/双 home_score 主队进球数 guest_score 客队进球数 home_rate 主队让球 guest_rate 客队让球 u_home_score 上半场主队进球 u_guest_score 上半场-客队进球数 two_sides_single 全场单 two_sides_double 全场双 half_two_sides_single 上半场单 half_two_sides_double 上半场双
  430. public function two_sides($model, $resultModels, $resultRecords)
  431. {
  432. $resultModel = $resultModels['0'];
  433. $resulttod = intval($resultModel->home_score) + intval($resultModel->guest_score);//全场
  434. if ($resulttod % 2 == 0) {
  435. $text = '双';
  436. } else {
  437. $text = '单';
  438. }
  439. if ($model->odds_code == "two_sides_single" || $model->odds_code == 'two_sides_double') {
  440. if ($text == $model->condition) {
  441. $dsresult = 1;
  442. } else {
  443. $dsresult = -1;
  444. }
  445. return ['result' => $dsresult, 'matchResult' => "$resulttod(全场)"];
  446. } elseif ($model->odds_code == 'half_two_sides_single' || $model->odds_code == 'half_two_sides_double') {
  447. $hafs = intval($resultModel->u_home_score) + intval($resultModel->u_guest_score);
  448. $text = ($hafs % 2 == 0) ? '双' : '单';
  449. $dsresult = ($text == $model->condition) ? 1 : -1;
  450. return ['result' => $dsresult, 'matchResult' => "$hafs(全场)"];
  451. } else {
  452. $data = [
  453. 'result' => 100,
  454. 'matchResult' => "参数不存在",
  455. ];
  456. return $data;
  457. }
  458. }
  459. //结果总数 home_score 主队进球数 guest_score 客队进球数 home_rate 主队让球 guest_rate 客队让球 u_home_score 上半场-主队进球数 u_guest_score 上半场-客队进球数
  460. public function total_goal($model, $resultModels, $resultRecords)
  461. {
  462. $resultModel = $resultModels['0'];
  463. //全场总进球数
  464. $resulttod = intval($resultModel->home_score) + intval($resultModel->guest_score);
  465. //上半场总进球数
  466. $firsthalftod = intval($resultModel->u_home_score) + intval($resultModel->u_guest_score);
  467. $results = 0;
  468. $resultb = 0;
  469. if ($model->odds_code == "total_goal_four") {
  470. if (4 <= $resulttod and $resulttod <= 6) {
  471. $results = 1;
  472. } else {
  473. $results = -1;
  474. }
  475. }
  476. if ($model->odds_code == "total_goal_zero") {
  477. if (0 <= $resulttod and $resulttod <= 1) {
  478. $results = 1;
  479. } else {
  480. $results = -1;
  481. }
  482. }
  483. if ($model->odds_code == "total_goal_two") {
  484. if (2 <= $resulttod and $resulttod <= 3) {
  485. $results = 1;
  486. } else {
  487. $results = -1;
  488. }
  489. }
  490. if ($model->odds_code == "total_goal_seven") {
  491. if (7 <= $resulttod) {
  492. $results = 1;
  493. } else {
  494. $results = -1;
  495. }
  496. }
  497. if ($model->odds_code == "half_total_goal_zero") {
  498. if ($firsthalftod == 0) {
  499. $resultb = 1;
  500. } else {
  501. $resultb = -1;
  502. }
  503. }
  504. if ($model->odds_code == "half_total_goal_one") {
  505. if ($firsthalftod == 1) {
  506. $resultb = 1;
  507. } else {
  508. $resultb = -1;
  509. }
  510. }
  511. if ($model->odds_code == "half_total_goal_two") {
  512. if ($firsthalftod == 2) {
  513. $resultb = 1;
  514. } else {
  515. $resultb = -1;
  516. }
  517. }
  518. if ($model->odds_code == "half_total_goal_three") {
  519. if ($firsthalftod == 3) {
  520. $resultb = 1;
  521. } else {
  522. $resultb = -1;
  523. }
  524. }
  525. if ($results == 1) {
  526. $data = [
  527. 'result' => 1,
  528. 'matchResult' => "$resulttod(全场)",
  529. ];
  530. }
  531. if ($results == -1) {
  532. $data = [
  533. 'result' => -1,
  534. 'matchResult' => "$resulttod(全场)",
  535. ];
  536. }
  537. if ($resultb == 1) {
  538. $data = [
  539. 'result' => 1,
  540. 'matchResult' => "$resulttod(半场)",
  541. ];
  542. }
  543. if ($resultb == -1) {
  544. $data = [
  545. 'result' => -1,
  546. 'matchResult' => "$resulttod(半场)",
  547. ];
  548. }
  549. return $data;
  550. }
  551. //球队进球数:大/小
  552. //condition 0.5 或 0.5/1 这种
  553. public function tema_ball($model, $resultModels, $result_match_r = [])
  554. {
  555. $resultModel = $resultModels['0'];
  556. $odds_code = trim($model->odds_code);
  557. $score_home = intval($resultModel->home_score);
  558. $score_guest = intval($resultModel->guest_score);
  559. $score_home_uhalf = intval($resultModel->u_home_score);
  560. $score_guest_uhalf = intval($resultModel->u_guest_score);
  561. switch ($odds_code) {
  562. case 'home_tema_ball_big':
  563. $returnDatas['matchResult'] = $score_home . '(全场)';
  564. $returnDatas = $this->zq_inball_bigsmall($score_home, $model->condition, 2, $returnDatas['matchResult']);
  565. break;
  566. case 'home_tema_ball_small':
  567. $returnDatas['matchResult'] = $score_home . '(全场)';
  568. $returnDatas = $this->zq_inball_bigsmall($score_home, $model->condition, 1, $returnDatas['matchResult']);
  569. break;
  570. case 'guest_tema_ball_big':
  571. $returnDatas['matchResult'] = $score_guest . '(全场)';
  572. $returnDatas = $this->zq_inball_bigsmall($score_guest, $model->condition, 2, $returnDatas['matchResult']);
  573. break;
  574. case 'guest_tema_ball_small':
  575. $returnDatas['matchResult'] = $score_guest . '(全场)';
  576. $returnDatas = $this->zq_inball_bigsmall($score_guest, $model->condition, 1, $returnDatas['matchResult']);
  577. break;
  578. case 'half_home_tema_ball_big':
  579. $returnDatas['matchResult'] = $score_home_uhalf . '(上全场)';
  580. $returnDatas = $this->zq_inball_bigsmall($score_home_uhalf, $model->condition, 2, $returnDatas['matchResult']);
  581. break;
  582. case 'half_home_tema_ball_small':
  583. $returnDatas['matchResult'] = $score_home_uhalf . '(上全场)';
  584. $returnDatas = $this->zq_inball_bigsmall($score_home_uhalf, $model->condition, 1, $returnDatas['matchResult']);
  585. break;
  586. case 'half_guest_tema_ball_big':
  587. $returnDatas['matchResult'] = $score_guest_uhalf . '(上半场)';
  588. $returnDatas = $this->zq_inball_bigsmall($score_guest_uhalf, $model->condition, 2, $returnDatas['matchResult']);
  589. break;
  590. case 'half_guest_tema_ball_small':
  591. $returnDatas['matchResult'] = $score_guest_uhalf . '(上半场)';
  592. $returnDatas = $this->zq_inball_bigsmall($score_guest_uhalf, $model->condition, 1, $returnDatas['matchResult']);
  593. break;
  594. }
  595. return $returnDatas;
  596. }
  597. /**
  598. * 半场/全场 投注规则
  599. */
  600. public function half_full($bet_match, $result_match, $result_match_r)
  601. {
  602. // $bet_match = DB::table('money_buy_match')->where('match_id', 3210851)->first();
  603. // $result_match = DB::table('st_zq_result')->where('match_id', 3210851)->first();
  604. // $result_match_r = DB::table('st_zq_result_record')->where('match_id', 3210851)->get()->toArray();
  605. if (empty($bet_match) || empty($result_match)) return false;
  606. //获取父/子级赔率代码
  607. $p_code = $bet_match->p_code;
  608. $odds_code = $bet_match->odds_code;
  609. //获取最终赛事数据
  610. $result_match = $this->getHalfData($result_match);
  611. //获取主客队上半场得分
  612. $half_home_score = $result_match->u_home_score;
  613. $half_guest_score = $result_match->u_guest_score;
  614. //获取主客队全场得分
  615. $full_home_score = $result_match->home_score;
  616. $full_guest_score = $result_match->guest_score;
  617. //半场/全场盘口
  618. if ($p_code != 'half_full') return false;
  619. //返回结果
  620. $data = [
  621. 'result' => 1,
  622. 'matchResult' => "$half_home_score-$half_guest_score(上半场);$full_home_score-$full_guest_score(全场)"
  623. ];
  624. switch ($odds_code) {
  625. case 'half_full_home_home':// 主-主
  626. if ($half_home_score > $half_guest_score and $full_home_score > $full_guest_score) return $data;
  627. break;
  628. case 'half_full_home_dogfall':// 主-和
  629. if ($half_home_score > $half_guest_score and $full_home_score == $full_guest_score) return $data;
  630. break;
  631. case 'half_full_home_guest':// 主-客
  632. if ($half_home_score > $half_guest_score and $full_home_score < $full_guest_score) return $data;
  633. break;
  634. case 'half_full_dogfall_home':// 和-主
  635. if ($half_home_score == $half_guest_score and $full_home_score > $full_guest_score) return $data;
  636. break;
  637. case 'half_full_dogfall_dogfall':// 和-和
  638. if ($half_home_score == $half_guest_score and $full_home_score == $full_guest_score) return $data;
  639. break;
  640. case 'half_full_dogfall_guest':// 和-客
  641. if ($half_home_score == $half_guest_score and $full_home_score < $full_guest_score) return $data;
  642. break;
  643. case 'half_full_guest_home':// 客-主
  644. if ($half_home_score < $half_guest_score and $full_home_score > $full_guest_score) return $data;
  645. break;
  646. case 'half_full_guest_dogfall':// 客-和
  647. if ($half_home_score < $half_guest_score and $full_home_score == $full_guest_score) return $data;
  648. break;
  649. case 'half_full_guest_guest':// 客-客
  650. if ($half_home_score < $half_guest_score and $full_home_score < $full_guest_score) return $data;
  651. break;
  652. default:
  653. return false;
  654. }
  655. $data['result'] = -1;
  656. return $data;
  657. }
  658. /**
  659. * @param $result_match_r 赛事结果记录
  660. * @return mixed 返回最新一条上半场结果数据
  661. */
  662. public function getHalfData($result_match_r = [])
  663. {
  664. return $result_match_r['0'];
  665. if (empty($result_match_r)) return false;
  666. if (is_array($result_match_r)) {
  667. foreach ($result_match_r as $k => $v) {
  668. return $v;
  669. }
  670. }
  671. }
  672. /**bo
  673. * 冠军盘口投注
  674. * $bet_match 投注赛事数据
  675. * $result_match 联赛结果 数据 根据玩法代码查询一条
  676. * $result_match_r 无用参数
  677. */
  678. public function gj($bet_match, $result_match, $result_match_r)
  679. {
  680. // $bet_match = DB::table('money_buy_match')->where('match_id', 127317)->first();
  681. // $bet_match->odds_code = '巴西小组赛积分成绩';
  682. // $result_match = DB::table('st_zq_league_result')->where(['lg_id'=>27317,'game_name'=>$bet_match->odds_code])->first();
  683. //获取 赛事最终数据
  684. $result_match = $this->getHalfData($result_match);
  685. if (empty($bet_match) || empty($result_match)) return false;
  686. if ($bet_match->p_code != 'gj') return false;//冠军玩法
  687. if ($bet_match->odds_code == $result_match->game_name) {
  688. $condition = $bet_match->condition;
  689. //进球数判断
  690. if (strpos($bet_match->odds_code, '进球数') !== false) {
  691. //返回结果
  692. $data = [
  693. 'result' => 1,
  694. 'matchResult' => "$result_match->result(球队进球数)"
  695. ];
  696. //获取数值
  697. $bet = $this->findNum($condition);
  698. //以上/以下判断
  699. if (strpos($condition, '上') !== false) {
  700. if ($bet < $result_match->result) {
  701. return $data;
  702. }
  703. $data['result'] = -1;
  704. return $data;
  705. }
  706. if (strpos($condition, '下') !== false) {
  707. if ($bet > $result_match->result) {
  708. return $data;
  709. }
  710. $data['result'] = -1;
  711. return $data;
  712. }
  713. //大/小判断
  714. if (strpos($condition, '大') !== false) {
  715. if ($bet < $result_match->result) {
  716. return $data;
  717. }
  718. $data['result'] = -1;
  719. return $data;
  720. }
  721. if (strpos($condition, '小') !== false) {
  722. if ($bet > $result_match->result) {
  723. return $data;
  724. }
  725. $data['result'] = -1;
  726. return $data;
  727. }
  728. }
  729. //积分成绩判断
  730. if (strpos($bet_match->odds_code, '积分') !== false) {
  731. //返回结果
  732. $data = [
  733. 'result' => 1,
  734. 'matchResult' => "$result_match->result(球队积分)"
  735. ];
  736. $condition = $bet_match->condition;
  737. //获取数值
  738. $bet = $this->findNum($condition);
  739. if ($bet == $result_match->result) {
  740. return $data;
  741. }
  742. $data['result'] = -1;
  743. return $data;
  744. }
  745. //如果条件中没有数字,则获取球队/球员结果
  746. if ((preg_match('/\d+/', $condition)) == 0) {
  747. //返回结果
  748. $data = [
  749. 'result' => 1,
  750. 'matchResult' => "$result_match->result(晋级球队)"
  751. ];
  752. $result = $this->teamJudge($condition, $result_match->result);
  753. if ($result) {
  754. return $data;
  755. }
  756. $data['result'] = -1;
  757. return $data;
  758. };
  759. return false;
  760. }
  761. return false;
  762. }
  763. /**
  764. * 冠军盘口 球队/球员结果判断
  765. */
  766. public function teamJudge($condition, $result)
  767. {
  768. //返回结果数组中是否包含该球队
  769. $result = in_array($condition, json_decode($result, true));
  770. return $result;
  771. }
  772. /**
  773. * @param string $str
  774. * @return string
  775. * 处理字符串中的数字
  776. */
  777. public function findNum($str = '')
  778. {
  779. $str = trim($str);
  780. if (empty($str)) {
  781. return '';
  782. }
  783. $result = '';
  784. for ($i = 0; $i < strlen($str); $i++) {
  785. if (is_numeric($str[$i]) || $str[$i] == '.') {
  786. $result .= $str[$i];
  787. }
  788. }
  789. //如果有小数点,返回浮点数
  790. if (strpos($result, '.')) return floatval($result);
  791. //返回整数
  792. return (int)$result;
  793. }
  794. /**
  795. * 角球相关--------->开始
  796. */
  797. public function corner_ball($model, $resultModels, $result_match_r)
  798. {
  799. $odds_code = $model->odds_code;
  800. $isHalf = strpos(strtolower($odds_code), 'half');
  801. if ($isHalf) {
  802. return $this->corner_ball_half($model, $resultModels, $result_match_r);
  803. } else {
  804. return $this->corner_ball_all($model, $resultModels, $result_match_r);
  805. }
  806. }
  807. public function corner_ball_all($model, $resultModels, $result_match_r)
  808. {
  809. $resultModel = $resultModels['0'];
  810. if ($resultModel->corner_ball == '') {
  811. $game_ret = json_decode(json_encode(['home' => 0, 'guest' => 0, 'home_half' => 0, 'guest_half' => 0]));
  812. } else {
  813. $game_ret = json_decode($resultModel->corner_ball);
  814. }
  815. $word = $game_ret->home . '-' . $game_ret->guest . "(全场)";
  816. $returnDatas = ['result' => -1, 'matchResult' => $word];
  817. $odds_code = $model->odds_code;
  818. switch ($odds_code) {
  819. case "corner_concede_home":
  820. $returnDatas = $this->zq_letball($game_ret->home - $game_ret->guest, $model->condition, $word);
  821. break;
  822. case "corner_concede_guest":
  823. $returnDatas = $this->zq_letball($game_ret->guest - $game_ret->home, $model->condition, $word);
  824. break;
  825. case "corner_goal_size_home":
  826. $returnDatas = $this->zq_inball_bigsmall($game_ret->home - $game_ret->guest, $model->condition, 2, $word);
  827. break;
  828. case "corner_goal_size_guest":
  829. $returnDatas = $this->zq_inball_bigsmall($game_ret->guest - $game_ret->home, $model->condition, 1, $word);
  830. break;
  831. case "corner_capot_home":
  832. $returnDatas = $this->zq_duyingv2(1, 4, $resultModel, $word);
  833. break;
  834. case "corner_capot_guest":
  835. $returnDatas = $this->zq_duyingv2(2, 4, $resultModel, $word);
  836. break;
  837. case "corner_capot_dogfall":
  838. $returnDatas['result'] = ($game_ret->home == $game_ret->guest) ? 1 : -1;
  839. break;
  840. case "corner_two_sides_single":
  841. $returnDatas = $this->zq_doublesing($game_ret->home + $game_ret->guest, $model->condition, $word);
  842. break;
  843. case "corner_two_sides_double":
  844. $returnDatas = $this->zq_doublesing($game_ret->home + $game_ret->guest, $model->condition, $word);
  845. break;
  846. default:
  847. $returnDatas = ['result' => 2, 'matchResult' => '(玩法无规则异常)-' . $odds_code];
  848. }
  849. return $returnDatas;
  850. }
  851. public function corner_ball_half($model, $resultModels, $result_match_r)
  852. {
  853. $resultModel = $resultModels['0'];
  854. if ($resultModel->corner_ball == '') {
  855. $game_ret = json_decode(json_encode(['home' => 0, 'guest' => 0, 'home_half' => 0, 'guest_half' => 0]));
  856. } else {
  857. $game_ret = json_decode($resultModel->corner_ball);
  858. }
  859. $word = $game_ret->home_half . '-' . $game_ret->guest_half . "(上半场)";
  860. $returnDatas = ['result' => -1, 'matchResult' => $word];
  861. $odds_code = $model->odds_code;
  862. switch ($odds_code) {
  863. case "corner_half_concede_home":
  864. $returnDatas = $this->zq_letball($game_ret->home_half - $game_ret->guest_half, $model->condition, $word);
  865. break;
  866. case "corner_half_concede_guest":
  867. $returnDatas = $this->zq_letball($game_ret->guest_half - $game_ret->home_half, $model->condition, $word);
  868. break;
  869. case "corner_half_goal_size_home":
  870. $returnDatas = $this->zq_inball_bigsmall($game_ret->home_half - $game_ret->guest_half, $model->condition, 2, $word);
  871. break;
  872. case "corner_half_goal_size_guest":
  873. $returnDatas = $this->zq_inball_bigsmall($game_ret->guest_half - $game_ret->home_half, $model->condition, 1, $word);
  874. break;
  875. case "corner_half_capot_home":
  876. $returnDatas = $this->zq_duyingv2(1, 1, $resultModel, $word);
  877. break;
  878. case "corner_half_capot_guest":
  879. $returnDatas = $this->zq_duyingv2(2, 1, $resultModel, $word);
  880. break;
  881. case "corner_half_capot_dogfall":
  882. $returnDatas['result'] = ($game_ret->home_half == $game_ret->guest_half) ? 1 : -1;
  883. break;
  884. case "corner_half_two_sides_single":
  885. $returnDatas = $this->zq_doublesing($game_ret->home_half + $game_ret->guest_half, $model->condition, $word);
  886. break;
  887. case "corner_half_two_sides_double":
  888. $returnDatas = $this->zq_doublesing($game_ret->home_half + $game_ret->guest_half, $model->condition, $word);
  889. break;
  890. default:
  891. $returnDatas = ['result' => 2, 'matchResult' => '(玩法无规则异常)-' . $odds_code];
  892. }
  893. return $returnDatas;
  894. }
  895. /**
  896. * 角球相关--------->结束
  897. */
  898. /**
  899. * 发球相关 开始
  900. */
  901. public function penalty_card($model, $resultModels, $result_match_r)
  902. {
  903. $odde_code = $model->odde_code;
  904. $isHalf = strpos(strtolower($odde_code), 'half');
  905. if ($isHalf) {
  906. return $this->penalty_card_half($model, $resultModels, $result_match_r);
  907. } else {
  908. return $this->penalty_card_all($model, $resultModels, $result_match_r);
  909. }
  910. }
  911. public function penalty_card_half($model, $resultModels, $result_match_r)
  912. {
  913. $resultModel = $resultModels['0'];
  914. if ($resultModel->conner_ball == '') {
  915. $game_ret = json_decode(json_encode(['home' => 0, 'guest' => 0, 'home_half' => 0, 'guest_half' => 0]));
  916. } else {
  917. $game_ret = json_decode($resultModel->penalty_card);
  918. }
  919. $word = $game_ret->home_half . '-' . $game_ret->guest_half . "(上半场)";
  920. $returnDatas = ['result' => -1, 'matchResult' => $word];
  921. $odds_code = $model->odds_code;
  922. switch ($odds_code) {
  923. case "penalty_half_concede_home":
  924. $returnDatas = $this->zq_letball($game_ret->home_half - $game_ret->guest_half, $model->condition, $word);
  925. break;
  926. case "penalty_half_concede_guest":
  927. $returnDatas = $this->zq_letball($game_ret->guest_half - $game_ret->home_half, $model->condition, $word);
  928. break;
  929. case "penalty_half_goal_size_home":
  930. $returnDatas = $this->zq_inball_bigsmall($game_ret->home_half - $game_ret->guest_half, $model->condition, 2, $word);
  931. break;
  932. case "penalty_half_goal_size_guest":
  933. $returnDatas = $this->zq_inball_bigsmall($game_ret->guest_half - $game_ret->home_half, $model->condition, 1, $word);
  934. break;
  935. case "penalty_half_capot_home":
  936. $returnDatas = $this->zq_duyingv2(1, 1, $resultModel, $word);
  937. break;
  938. case "penalty_half_capot_guest":
  939. $returnDatas = $this->zq_duyingv2(2, 1, $resultModel, $word);
  940. break;
  941. case "penalty_half_capot_dogfall":
  942. $returnDatas['result'] = ($game_ret->home_half == $game_ret->guest_half) ? 1 : -1;
  943. break;
  944. case "penalty_half_two_sides_single":
  945. $returnDatas = $this->zq_doublesing($game_ret->home_half + $game_ret->guest_half, $model->condition, $word);
  946. break;
  947. case "penalty_half_two_sides_double":
  948. $returnDatas = $this->zq_doublesing($game_ret->home_half + $game_ret->guest_half, $model->condition, $word);
  949. break;
  950. default:
  951. $returnDatas = ['result' => 2, 'matchResult' => '(玩法无规则异常)-' . $odds_code];
  952. }
  953. return $returnDatas;
  954. }
  955. public function penalty_card_all($model, $resultModels, $result_match_r)
  956. {
  957. $resultModel = $resultModels['0'];
  958. if ($resultModel->conner_ball == '') {
  959. $game_ret = json_decode(json_encode(['home' => 0, 'guest' => 0, 'home_half' => 0, 'guest_half' => 0]));
  960. } else {
  961. $game_ret = json_decode($resultModel->penalty_card);
  962. }
  963. $word = $game_ret->home . '-' . $game_ret->guest . "(全场)";
  964. $returnDatas = ['result' => -1, 'matchResult' => $word];
  965. $odds_code = $model->odds_code;
  966. switch ($odds_code) {
  967. case "penalty_concede_home":
  968. $returnDatas = $this->zq_letball($game_ret->home - $game_ret->guest, $model->condition, $word);
  969. break;
  970. case "penalty_concede_guest":
  971. $returnDatas = $this->zq_letball($game_ret->guest - $game_ret->home, $model->condition, $word);
  972. break;
  973. case "penalty_goal_size_home":
  974. $returnDatas = $this->zq_inball_bigsmall($game_ret->home - $game_ret->guest, $model->condition, 2, $word);
  975. break;
  976. case "penalty_goal_size_guest":
  977. $returnDatas = $this->zq_inball_bigsmall($game_ret->guest - $game_ret->home, $model->condition, 1, $word);
  978. break;
  979. case "penalty_capot_home":
  980. $returnDatas = $this->zq_duyingv2(1, 4, $resultModel, $word);
  981. break;
  982. case "penalty_capot_guest":
  983. $returnDatas = $this->zq_duyingv2(2, 4, $resultModel, $word);
  984. break;
  985. case "penalty_capot_dogfall":
  986. $returnDatas['result'] = ($game_ret->home == $game_ret->guest) ? 1 : -1;
  987. break;
  988. case "penalty_two_sides_single":
  989. $returnDatas = $this->zq_doublesing($game_ret->home + $game_ret->guest, $model->condition, $word);
  990. break;
  991. case "penalty_two_sides_double":
  992. $returnDatas = $this->zq_doublesing($game_ret->home + $game_ret->guest, $model->condition, $word);
  993. break;
  994. default:
  995. $returnDatas = ['result' => 2, 'matchResult' => '(玩法无规则异常)-' . $odds_code];
  996. }
  997. return $returnDatas;
  998. }
  999. /**
  1000. * 发球相关 结束
  1001. */
  1002. }