ZqRule.php 41 KB

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