ZqRule.php 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108
  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. $word = $resultModel->first_score ? $resultModel->first_score : '无';
  316. if (trim($resultModel->first_score) == trim($resultModel->home_team)) {
  317. return ['result' => 1, 'matchResult' => $word];
  318. } else {
  319. return ['result' => -1, 'matchResult' => $word];
  320. }
  321. }
  322. //客队|最先进球
  323. public function first_ball_guest($model, $resultModel, $resultRecords)
  324. {
  325. $resultModel = $resultModel['0'];
  326. $word = $resultModel->first_score ? $resultModel->first_score : '无';
  327. if (trim($resultModel->first_score) == trim($resultModel->guest_team)) {
  328. return ['result' => 1, 'matchResult' => $word];
  329. } else {
  330. return ['result' => -1, 'matchResult' => $word];
  331. }
  332. }
  333. //主队|最后进球
  334. public function last_ball_home($model, $resultModel, $resultRecords)
  335. {
  336. $resultModel = $resultModel['0'];
  337. $word = $resultModel->last_score ? $resultModel->first_score : '无';
  338. if (trim($resultModel->last_score) == trim($resultModel->home_team)) {
  339. return ['result' => 1, 'matchResult' => $word];
  340. } else {
  341. return ['result' => -1, 'matchResult' => $word];
  342. }
  343. }
  344. //客队|最后进球
  345. public function last_ball_guest($model, $resultModel, $resultRecords)
  346. {
  347. $pos = count($resultModel) - 1;
  348. $resultModel = $resultModel[$pos];
  349. $word = $resultModel->last_score ? $resultModel->first_score : '无';
  350. if (trim($resultModel->last_score) == trim($resultModel->guest_team)) {
  351. return ['result' => 1, 'matchResult' => $word];
  352. } else {
  353. return ['result' => -1, 'matchResult' => $word];
  354. }
  355. }
  356. //没有进球
  357. public function not_ball($model, $resultModel, $resultRecords)
  358. {
  359. $pos = count($resultModel) - 1;
  360. $resultModel = $resultModel[$pos];
  361. $all_score = intval($resultModel->home_score) + intval($resultModel->guest_score);
  362. $word = $resultModel->first_score ? $resultModel->first_score : '无';
  363. if ($all_score <= 0) {
  364. return ['result' => 1, 'matchResult' => $word];
  365. } else {
  366. return ['result' => -1, 'matchResult' => $word];
  367. }
  368. }
  369. ////////// first_last_ball最先/最后进球 结束-----------------------
  370. /**
  371. * 足球波胆 规则
  372. * @param $bet_match 投注赛事数据
  373. * @param $result_match 最终结果
  374. * @param $result_match_r 结果记录
  375. */
  376. public function bodan($bet_match, $result_match, $result_match_r)
  377. {
  378. // $bet_match = DB::table('money_buy_match')->where(['match_id'=> 3219925,'p_code'=>'bodan'])->first();
  379. // $result_match = DB::table('st_zq_result')->where('match_id', 3224833)->limit(10)->get();
  380. // select * from st_zq_result where id=1317823 order by id desc limit 10 ;
  381. // $result_match_r = DB::table('st_zq_result_record')->where('match_id', 3150765)->get()->toArray();
  382. //获取父/子级赔率代码
  383. $p_code = $bet_match->p_code;
  384. $odds_code = $bet_match->odds_code;
  385. //获取主客队投注比分
  386. $bet_score = explode('-', $bet_match->condition);
  387. $bet_home_score = (int)$bet_score[0];
  388. $bet_guest_score = isset($bet_score[1]) ? intval($bet_score[1]) : 0;
  389. if ($p_code != 'bodan') return false;
  390. //获取赛事最终结果数据
  391. $result_match = $this->getHalfData($result_match);
  392. if (strstr($odds_code, "half")) {//上半场
  393. //获取主客队上半场得分
  394. $home_score = $result_match->u_home_score;
  395. $guest_score = $result_match->u_guest_score;
  396. //返回结果
  397. $data = [
  398. 'result' => 1,
  399. 'matchResult' => "$home_score-$guest_score(上半场)"
  400. ];
  401. if (strstr($bet_match->condition, "其他")) {
  402. if (($home_score > 3) || ($guest_score > 3)) {
  403. return $data;
  404. }
  405. }
  406. //判断结果
  407. if ($bet_home_score == $home_score and $bet_guest_score == $guest_score) {
  408. return $data;
  409. }
  410. $data['result'] = -1;
  411. return $data;
  412. } else {//全场
  413. //获取主客队全场得分
  414. $home_score = $result_match->home_score;
  415. $guest_score = $result_match->guest_score;
  416. //返回结果
  417. $data = [
  418. 'result' => 1,
  419. 'matchResult' => "$home_score-$guest_score(全场)"
  420. ];
  421. if (strstr($bet_match->condition, "其他")) {
  422. if (($home_score > 4) || ($guest_score > 4)) {
  423. return $data;
  424. }
  425. }
  426. //判断结果
  427. if ($bet_home_score == $home_score and $bet_guest_score == $guest_score) {
  428. return $data;
  429. }
  430. $data['result'] = -1;
  431. return $data;
  432. }
  433. }
  434. //结果单/双 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 上半场双
  435. public function two_sides($model, $resultModels, $resultRecords)
  436. {
  437. $resultModel = $resultModels['0'];
  438. $resulttod = intval($resultModel->home_score) + intval($resultModel->guest_score);//全场
  439. if ($resulttod % 2 == 0) {
  440. $text = '双';
  441. } else {
  442. $text = '单';
  443. }
  444. if ($model->odds_code == "two_sides_single" || $model->odds_code == 'two_sides_double') {
  445. if ($text == $model->condition) {
  446. $dsresult = 1;
  447. } else {
  448. $dsresult = -1;
  449. }
  450. return ['result' => $dsresult, 'matchResult' => "$resulttod(全场)"];
  451. } elseif ($model->odds_code == 'half_two_sides_single' || $model->odds_code == 'half_two_sides_double') {
  452. $hafs = intval($resultModel->u_home_score) + intval($resultModel->u_guest_score);
  453. $text = ($hafs % 2 == 0) ? '双' : '单';
  454. $dsresult = ($text == $model->condition) ? 1 : -1;
  455. return ['result' => $dsresult, 'matchResult' => "$hafs(半场)"];
  456. } else {
  457. $data = [
  458. 'result' => 100,
  459. 'matchResult' => "参数不存在",
  460. ];
  461. return $data;
  462. }
  463. }
  464. //结果总数 home_score 主队进球数 guest_score 客队进球数 home_rate 主队让球 guest_rate 客队让球 u_home_score 上半场-主队进球数 u_guest_score 上半场-客队进球数
  465. public function total_goal($model, $resultModels, $resultRecords)
  466. {
  467. $resultModel = $resultModels['0'];
  468. //全场总进球数
  469. $resulttod = intval($resultModel->home_score) + intval($resultModel->guest_score);
  470. //上半场总进球数
  471. $firsthalftod = intval($resultModel->u_home_score) + intval($resultModel->u_guest_score);
  472. $results = 0;
  473. $resultb = 0;
  474. if ($model->odds_code == "total_goal_four") {
  475. if (4 <= $resulttod and $resulttod <= 6) {
  476. $results = 1;
  477. } else {
  478. $results = -1;
  479. }
  480. }
  481. if ($model->odds_code == "total_goal_zero") {
  482. if (0 <= $resulttod and $resulttod <= 1) {
  483. $results = 1;
  484. } else {
  485. $results = -1;
  486. }
  487. }
  488. if ($model->odds_code == "total_goal_two") {
  489. if (2 <= $resulttod and $resulttod <= 3) {
  490. $results = 1;
  491. } else {
  492. $results = -1;
  493. }
  494. }
  495. if ($model->odds_code == "total_goal_seven") {
  496. if (7 <= $resulttod) {
  497. $results = 1;
  498. } else {
  499. $results = -1;
  500. }
  501. }
  502. if ($model->odds_code == "half_total_goal_zero") {
  503. if ($firsthalftod == 0) {
  504. $resultb = 1;
  505. } else {
  506. $resultb = -1;
  507. }
  508. }
  509. if ($model->odds_code == "half_total_goal_one") {
  510. if ($firsthalftod == 1) {
  511. $resultb = 1;
  512. } else {
  513. $resultb = -1;
  514. }
  515. }
  516. if ($model->odds_code == "half_total_goal_two") {
  517. if ($firsthalftod == 2) {
  518. $resultb = 1;
  519. } else {
  520. $resultb = -1;
  521. }
  522. }
  523. if ($model->odds_code == "half_total_goal_three") {
  524. if ($firsthalftod == 3) {
  525. $resultb = 1;
  526. } else {
  527. $resultb = -1;
  528. }
  529. }
  530. if ($results == 1) {
  531. $data = [
  532. 'result' => 1,
  533. 'matchResult' => "$resulttod(全场)",
  534. ];
  535. }
  536. if ($results == -1) {
  537. $data = [
  538. 'result' => -1,
  539. 'matchResult' => "$resulttod(全场)",
  540. ];
  541. }
  542. if ($resultb == 1) {
  543. $data = [
  544. 'result' => 1,
  545. 'matchResult' => "$firsthalftod(半场)",
  546. ];
  547. }
  548. if ($resultb == -1) {
  549. $data = [
  550. 'result' => -1,
  551. 'matchResult' => "$firsthalftod(半场)",
  552. ];
  553. }
  554. return $data;
  555. }
  556. //球队进球数:大/小
  557. //condition 0.5 或 0.5/1 这种
  558. public function tema_ball($model, $resultModels, $result_match_r = [])
  559. {
  560. $resultModel = $resultModels['0'];
  561. $odds_code = trim($model->odds_code);
  562. $score_home = intval($resultModel->home_score);
  563. $score_guest = intval($resultModel->guest_score);
  564. $score_home_uhalf = intval($resultModel->u_home_score);
  565. $score_guest_uhalf = intval($resultModel->u_guest_score);
  566. switch ($odds_code) {
  567. case 'home_tema_ball_big':
  568. $returnDatas['matchResult'] = $score_home . '(全场)';
  569. $returnDatas = $this->zq_inball_bigsmall($score_home, $model->condition, 2, $returnDatas['matchResult']);
  570. break;
  571. case 'home_tema_ball_small':
  572. $returnDatas['matchResult'] = $score_home . '(全场)';
  573. $returnDatas = $this->zq_inball_bigsmall($score_home, $model->condition, 1, $returnDatas['matchResult']);
  574. break;
  575. case 'guest_tema_ball_big':
  576. $returnDatas['matchResult'] = $score_guest . '(全场)';
  577. $returnDatas = $this->zq_inball_bigsmall($score_guest, $model->condition, 2, $returnDatas['matchResult']);
  578. break;
  579. case 'guest_tema_ball_small':
  580. $returnDatas['matchResult'] = $score_guest . '(全场)';
  581. $returnDatas = $this->zq_inball_bigsmall($score_guest, $model->condition, 1, $returnDatas['matchResult']);
  582. break;
  583. case 'half_home_tema_ball_big':
  584. $returnDatas['matchResult'] = $score_home_uhalf . '(上全场)';
  585. $returnDatas = $this->zq_inball_bigsmall($score_home_uhalf, $model->condition, 2, $returnDatas['matchResult']);
  586. break;
  587. case 'half_home_tema_ball_small':
  588. $returnDatas['matchResult'] = $score_home_uhalf . '(上全场)';
  589. $returnDatas = $this->zq_inball_bigsmall($score_home_uhalf, $model->condition, 1, $returnDatas['matchResult']);
  590. break;
  591. case 'half_guest_tema_ball_big':
  592. $returnDatas['matchResult'] = $score_guest_uhalf . '(上半场)';
  593. $returnDatas = $this->zq_inball_bigsmall($score_guest_uhalf, $model->condition, 2, $returnDatas['matchResult']);
  594. break;
  595. case 'half_guest_tema_ball_small':
  596. $returnDatas['matchResult'] = $score_guest_uhalf . '(上半场)';
  597. $returnDatas = $this->zq_inball_bigsmall($score_guest_uhalf, $model->condition, 1, $returnDatas['matchResult']);
  598. break;
  599. }
  600. return $returnDatas;
  601. }
  602. /**
  603. * 半场/全场 投注规则
  604. */
  605. public function half_full($bet_match, $result_match, $result_match_r)
  606. {
  607. // $bet_match = DB::table('money_buy_match')->where('match_id', 3210851)->first();
  608. // $result_match = DB::table('st_zq_result')->where('match_id', 3210851)->first();
  609. // $result_match_r = DB::table('st_zq_result_record')->where('match_id', 3210851)->get()->toArray();
  610. if (empty($bet_match) || empty($result_match)) return false;
  611. //获取父/子级赔率代码
  612. $p_code = $bet_match->p_code;
  613. $odds_code = $bet_match->odds_code;
  614. //获取最终赛事数据
  615. $result_match = $this->getHalfData($result_match);
  616. //获取主客队上半场得分
  617. $half_home_score = $result_match->u_home_score;
  618. $half_guest_score = $result_match->u_guest_score;
  619. //获取主客队全场得分
  620. $full_home_score = $result_match->home_score;
  621. $full_guest_score = $result_match->guest_score;
  622. //半场/全场盘口
  623. if ($p_code != 'half_full') return false;
  624. //返回结果
  625. $data = [
  626. 'result' => 1,
  627. 'matchResult' => "$half_home_score-$half_guest_score(上半场);$full_home_score-$full_guest_score(全场)"
  628. ];
  629. switch ($odds_code) {
  630. case 'half_full_home_home':// 主-主
  631. if ($half_home_score > $half_guest_score and $full_home_score > $full_guest_score) return $data;
  632. break;
  633. case 'half_full_home_dogfall':// 主-和
  634. if ($half_home_score > $half_guest_score and $full_home_score == $full_guest_score) return $data;
  635. break;
  636. case 'half_full_home_guest':// 主-客
  637. if ($half_home_score > $half_guest_score and $full_home_score < $full_guest_score) return $data;
  638. break;
  639. case 'half_full_dogfall_home':// 和-主
  640. if ($half_home_score == $half_guest_score and $full_home_score > $full_guest_score) return $data;
  641. break;
  642. case 'half_full_dogfall_dogfall':// 和-和
  643. if ($half_home_score == $half_guest_score and $full_home_score == $full_guest_score) return $data;
  644. break;
  645. case 'half_full_dogfall_guest':// 和-客
  646. if ($half_home_score == $half_guest_score and $full_home_score < $full_guest_score) return $data;
  647. break;
  648. case 'half_full_guest_home':// 客-主
  649. if ($half_home_score < $half_guest_score and $full_home_score > $full_guest_score) return $data;
  650. break;
  651. case 'half_full_guest_dogfall':// 客-和
  652. if ($half_home_score < $half_guest_score and $full_home_score == $full_guest_score) return $data;
  653. break;
  654. case 'half_full_guest_guest':// 客-客
  655. if ($half_home_score < $half_guest_score and $full_home_score < $full_guest_score) return $data;
  656. break;
  657. default:
  658. return false;
  659. }
  660. $data['result'] = -1;
  661. return $data;
  662. }
  663. /**
  664. * @param $result_match_r 赛事结果记录
  665. * @return mixed 返回最新一条上半场结果数据
  666. */
  667. public function getHalfData($result_match_r = [])
  668. {
  669. return $result_match_r['0'];
  670. if (empty($result_match_r)) return false;
  671. if (is_array($result_match_r)) {
  672. foreach ($result_match_r as $k => $v) {
  673. return $v;
  674. }
  675. }
  676. }
  677. /**bo
  678. * 冠军盘口投注
  679. * $bet_match 投注赛事数据
  680. * $result_match 联赛结果 数据 根据玩法代码查询一条
  681. * $result_match_r 无用参数
  682. */
  683. public function gj($bet_match, $result_match, $result_match_r)
  684. {
  685. // $bet_match = DB::table('money_buy_match')->where('match_id', 127317)->first();
  686. // $bet_match->odds_code = '巴西小组赛积分成绩';
  687. // $result_match = DB::table('st_zq_league_result')->where(['lg_id'=>27317,'game_name'=>$bet_match->odds_code])->first();
  688. //获取 赛事最终数据
  689. $result_match = $this->getHalfData($result_match);
  690. if (empty($bet_match) || empty($result_match)) return false;
  691. if ($bet_match->p_code != 'gj') return false;//冠军玩法
  692. if ($bet_match->odds_code == $result_match->game_name) {
  693. $condition = $bet_match->condition;
  694. //进球数判断
  695. if (strpos($bet_match->odds_code, '进球数') !== false) {
  696. //返回结果
  697. $data = [
  698. 'result' => 1,
  699. 'matchResult' => "$result_match->result(球队进球数)"
  700. ];
  701. //获取数值
  702. $bet = $this->findNum($condition);
  703. //以上/以下判断
  704. if (strpos($condition, '上') !== false) {
  705. if ($bet < $result_match->result) {
  706. return $data;
  707. }
  708. $data['result'] = -1;
  709. return $data;
  710. }
  711. if (strpos($condition, '下') !== false) {
  712. if ($bet > $result_match->result) {
  713. return $data;
  714. }
  715. $data['result'] = -1;
  716. return $data;
  717. }
  718. //大/小判断
  719. if (strpos($condition, '大') !== false) {
  720. if ($bet < $result_match->result) {
  721. return $data;
  722. }
  723. $data['result'] = -1;
  724. return $data;
  725. }
  726. if (strpos($condition, '小') !== false) {
  727. if ($bet > $result_match->result) {
  728. return $data;
  729. }
  730. $data['result'] = -1;
  731. return $data;
  732. }
  733. }
  734. //积分成绩判断
  735. if (strpos($bet_match->odds_code, '积分') !== false) {
  736. //返回结果
  737. $data = [
  738. 'result' => 1,
  739. 'matchResult' => "$result_match->result(球队积分)"
  740. ];
  741. $condition = $bet_match->condition;
  742. //获取数值
  743. $bet = $this->findNum($condition);
  744. if ($bet == $result_match->result) {
  745. return $data;
  746. }
  747. $data['result'] = -1;
  748. return $data;
  749. }
  750. //如果条件中没有数字,则获取球队/球员结果
  751. if ((preg_match('/\d+/', $condition)) == 0) {
  752. //返回结果
  753. $data = [
  754. 'result' => 1,
  755. 'matchResult' => "$result_match->result(晋级球队)"
  756. ];
  757. $result = $this->teamJudge($condition, $result_match->result);
  758. if ($result) {
  759. return $data;
  760. }
  761. $data['result'] = -1;
  762. return $data;
  763. };
  764. return false;
  765. }
  766. return false;
  767. }
  768. /**
  769. * 冠军盘口 球队/球员结果判断
  770. */
  771. public function teamJudge($condition, $result)
  772. {
  773. //返回结果数组中是否包含该球队
  774. $result = in_array($condition, json_decode($result, true));
  775. return $result;
  776. }
  777. /**
  778. * @param string $str
  779. * @return string
  780. * 处理字符串中的数字
  781. */
  782. public function findNum($str = '')
  783. {
  784. $str = trim($str);
  785. if (empty($str)) {
  786. return '';
  787. }
  788. $result = '';
  789. for ($i = 0; $i < strlen($str); $i++) {
  790. if (is_numeric($str[$i]) || $str[$i] == '.') {
  791. $result .= $str[$i];
  792. }
  793. }
  794. //如果有小数点,返回浮点数
  795. if (strpos($result, '.')) return floatval($result);
  796. //返回整数
  797. return (int)$result;
  798. }
  799. /**
  800. * 角球相关--------->开始
  801. */
  802. public function corner_ball($model, $resultModels, $result_match_r)
  803. {
  804. $odds_code = $model->odds_code;
  805. $isHalf = strpos(strtolower($odds_code), 'half');
  806. if ($isHalf) {
  807. return $this->corner_ball_half($model, $resultModels, $result_match_r);
  808. } else {
  809. return $this->corner_ball_all($model, $resultModels, $result_match_r);
  810. }
  811. }
  812. public function corner_ball_all($model, $resultModels, $result_match_r)
  813. {
  814. $resultModel = $resultModels['0'];
  815. if ($resultModel->corner_ball == '') {
  816. $game_ret = json_decode(json_encode(['home' => 0, 'guest' => 0, 'home_half' => 0, 'guest_half' => 0]));
  817. } else {
  818. $game_ret = json_decode($resultModel->corner_ball);
  819. }
  820. $word = $game_ret->home . '-' . $game_ret->guest . "(全场)";
  821. $returnDatas = ['result' => -1, 'matchResult' => $word];
  822. $odds_code = $model->odds_code;
  823. switch ($odds_code) {
  824. case "corner_concede_home":
  825. $returnDatas = $this->zq_letball($game_ret->home - $game_ret->guest, $model->condition, $word);
  826. break;
  827. case "corner_concede_guest":
  828. $returnDatas = $this->zq_letball($game_ret->guest - $game_ret->home, $model->condition, $word);
  829. break;
  830. case "corner_goal_size_home":
  831. $returnDatas = $this->zq_inball_bigsmall($game_ret->home - $game_ret->guest, $model->condition, 2, $word);
  832. break;
  833. case "corner_goal_size_guest":
  834. $returnDatas = $this->zq_inball_bigsmall($game_ret->guest - $game_ret->home, $model->condition, 1, $word);
  835. break;
  836. case "corner_capot_home":
  837. $returnDatas = $this->zq_duyingv2(1, 4, $resultModel, $word);
  838. break;
  839. case "corner_capot_guest":
  840. $returnDatas = $this->zq_duyingv2(2, 4, $resultModel, $word);
  841. break;
  842. case "corner_capot_dogfall":
  843. $returnDatas['result'] = ($game_ret->home == $game_ret->guest) ? 1 : -1;
  844. break;
  845. case "corner_two_sides_single":
  846. $returnDatas = $this->zq_doublesing($game_ret->home + $game_ret->guest, $model->condition, $word);
  847. break;
  848. case "corner_two_sides_double":
  849. $returnDatas = $this->zq_doublesing($game_ret->home + $game_ret->guest, $model->condition, $word);
  850. break;
  851. default:
  852. $returnDatas = ['result' => 2, 'matchResult' => '(玩法无规则异常)-' . $odds_code];
  853. }
  854. return $returnDatas;
  855. }
  856. public function corner_ball_half($model, $resultModels, $result_match_r)
  857. {
  858. $resultModel = $resultModels['0'];
  859. if ($resultModel->corner_ball == '') {
  860. $game_ret = json_decode(json_encode(['home' => 0, 'guest' => 0, 'home_half' => 0, 'guest_half' => 0]));
  861. } else {
  862. $game_ret = json_decode($resultModel->corner_ball);
  863. }
  864. $word = $game_ret->home_half . '-' . $game_ret->guest_half . "(上半场)";
  865. $returnDatas = ['result' => -1, 'matchResult' => $word];
  866. $odds_code = $model->odds_code;
  867. switch ($odds_code) {
  868. case "corner_half_concede_home":
  869. $returnDatas = $this->zq_letball($game_ret->home_half - $game_ret->guest_half, $model->condition, $word);
  870. break;
  871. case "corner_half_concede_guest":
  872. $returnDatas = $this->zq_letball($game_ret->guest_half - $game_ret->home_half, $model->condition, $word);
  873. break;
  874. case "corner_half_goal_size_home":
  875. $returnDatas = $this->zq_inball_bigsmall($game_ret->home_half - $game_ret->guest_half, $model->condition, 2, $word);
  876. break;
  877. case "corner_half_goal_size_guest":
  878. $returnDatas = $this->zq_inball_bigsmall($game_ret->guest_half - $game_ret->home_half, $model->condition, 1, $word);
  879. break;
  880. case "corner_half_capot_home":
  881. $returnDatas = $this->zq_duyingv2(1, 1, $resultModel, $word);
  882. break;
  883. case "corner_half_capot_guest":
  884. $returnDatas = $this->zq_duyingv2(2, 1, $resultModel, $word);
  885. break;
  886. case "corner_half_capot_dogfall":
  887. $returnDatas['result'] = ($game_ret->home_half == $game_ret->guest_half) ? 1 : -1;
  888. break;
  889. case "corner_half_two_sides_single":
  890. $returnDatas = $this->zq_doublesing($game_ret->home_half + $game_ret->guest_half, $model->condition, $word);
  891. break;
  892. case "corner_half_two_sides_double":
  893. $returnDatas = $this->zq_doublesing($game_ret->home_half + $game_ret->guest_half, $model->condition, $word);
  894. break;
  895. default:
  896. $returnDatas = ['result' => 2, 'matchResult' => '(玩法无规则异常)-' . $odds_code];
  897. }
  898. return $returnDatas;
  899. }
  900. /**
  901. * 角球相关--------->结束
  902. */
  903. /**
  904. * 发球相关 开始
  905. */
  906. public function penalty_card($model, $resultModels, $result_match_r)
  907. {
  908. $odde_code = $model->odde_code;
  909. $isHalf = strpos(strtolower($odde_code), 'half');
  910. if ($isHalf) {
  911. return $this->penalty_card_half($model, $resultModels, $result_match_r);
  912. } else {
  913. return $this->penalty_card_all($model, $resultModels, $result_match_r);
  914. }
  915. }
  916. public function penalty_card_half($model, $resultModels, $result_match_r)
  917. {
  918. $resultModel = $resultModels['0'];
  919. if ($resultModel->conner_ball == '') {
  920. $game_ret = json_decode(json_encode(['home' => 0, 'guest' => 0, 'home_half' => 0, 'guest_half' => 0]));
  921. } else {
  922. $game_ret = json_decode($resultModel->penalty_card);
  923. }
  924. $word = $game_ret->home_half . '-' . $game_ret->guest_half . "(上半场)";
  925. $returnDatas = ['result' => -1, 'matchResult' => $word];
  926. $odds_code = $model->odds_code;
  927. switch ($odds_code) {
  928. case "penalty_half_concede_home":
  929. $returnDatas = $this->zq_letball($game_ret->home_half - $game_ret->guest_half, $model->condition, $word);
  930. break;
  931. case "penalty_half_concede_guest":
  932. $returnDatas = $this->zq_letball($game_ret->guest_half - $game_ret->home_half, $model->condition, $word);
  933. break;
  934. case "penalty_half_goal_size_home":
  935. $returnDatas = $this->zq_inball_bigsmall($game_ret->home_half - $game_ret->guest_half, $model->condition, 2, $word);
  936. break;
  937. case "penalty_half_goal_size_guest":
  938. $returnDatas = $this->zq_inball_bigsmall($game_ret->guest_half - $game_ret->home_half, $model->condition, 1, $word);
  939. break;
  940. case "penalty_half_capot_home":
  941. $returnDatas = $this->zq_duyingv2(1, 1, $resultModel, $word);
  942. break;
  943. case "penalty_half_capot_guest":
  944. $returnDatas = $this->zq_duyingv2(2, 1, $resultModel, $word);
  945. break;
  946. case "penalty_half_capot_dogfall":
  947. $returnDatas['result'] = ($game_ret->home_half == $game_ret->guest_half) ? 1 : -1;
  948. break;
  949. case "penalty_half_two_sides_single":
  950. $returnDatas = $this->zq_doublesing($game_ret->home_half + $game_ret->guest_half, $model->condition, $word);
  951. break;
  952. case "penalty_half_two_sides_double":
  953. $returnDatas = $this->zq_doublesing($game_ret->home_half + $game_ret->guest_half, $model->condition, $word);
  954. break;
  955. default:
  956. $returnDatas = ['result' => 2, 'matchResult' => '(玩法无规则异常)-' . $odds_code];
  957. }
  958. return $returnDatas;
  959. }
  960. public function penalty_card_all($model, $resultModels, $result_match_r)
  961. {
  962. $resultModel = $resultModels['0'];
  963. if ($resultModel->conner_ball == '') {
  964. $game_ret = json_decode(json_encode(['home' => 0, 'guest' => 0, 'home_half' => 0, 'guest_half' => 0]));
  965. } else {
  966. $game_ret = json_decode($resultModel->penalty_card);
  967. }
  968. $word = $game_ret->home . '-' . $game_ret->guest . "(全场)";
  969. $returnDatas = ['result' => -1, 'matchResult' => $word];
  970. $odds_code = $model->odds_code;
  971. switch ($odds_code) {
  972. case "penalty_concede_home":
  973. $returnDatas = $this->zq_letball($game_ret->home - $game_ret->guest, $model->condition, $word);
  974. break;
  975. case "penalty_concede_guest":
  976. $returnDatas = $this->zq_letball($game_ret->guest - $game_ret->home, $model->condition, $word);
  977. break;
  978. case "penalty_goal_size_home":
  979. $returnDatas = $this->zq_inball_bigsmall($game_ret->home - $game_ret->guest, $model->condition, 2, $word);
  980. break;
  981. case "penalty_goal_size_guest":
  982. $returnDatas = $this->zq_inball_bigsmall($game_ret->guest - $game_ret->home, $model->condition, 1, $word);
  983. break;
  984. case "penalty_capot_home":
  985. $returnDatas = $this->zq_duyingv2(1, 4, $resultModel, $word);
  986. break;
  987. case "penalty_capot_guest":
  988. $returnDatas = $this->zq_duyingv2(2, 4, $resultModel, $word);
  989. break;
  990. case "penalty_capot_dogfall":
  991. $returnDatas['result'] = ($game_ret->home == $game_ret->guest) ? 1 : -1;
  992. break;
  993. case "penalty_two_sides_single":
  994. $returnDatas = $this->zq_doublesing($game_ret->home + $game_ret->guest, $model->condition, $word);
  995. break;
  996. case "penalty_two_sides_double":
  997. $returnDatas = $this->zq_doublesing($game_ret->home + $game_ret->guest, $model->condition, $word);
  998. break;
  999. default:
  1000. $returnDatas = ['result' => 2, 'matchResult' => '(玩法无规则异常)-' . $odds_code];
  1001. }
  1002. return $returnDatas;
  1003. }
  1004. /**
  1005. * 发球相关 结束
  1006. */
  1007. }