ZqRule.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  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. class ZqRule
  10. {
  11. /**
  12. * 全场|主队|让球
  13. * @param mixed $model 注单表数据
  14. * @param mixed $resultModel 结果表数据
  15. * @param mixed $resultRecords 结果记录表数据
  16. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  17. */
  18. public function concede_home($model, $resultModel, $resultRecords) {
  19. $this -> concedeFull($model, $resultModel, $resultRecords, 1);
  20. }
  21. /**
  22. * 全场|客队|让球
  23. * @param mixed $model 注单表数据
  24. * @param mixed $resultModel 结果表数据
  25. * @param mixed $resultRecords 结果记录表数据
  26. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  27. */
  28. public function concede_guest($model, $resultModel, $resultRecords) {
  29. $this -> concedeFull($model, $resultModel, $resultRecords, 2);
  30. }
  31. /**
  32. * 上半场|主队|让球
  33. * @param mixed $model 注单表数据
  34. * @param mixed $resultModel 结果表数据
  35. * @param mixed $resultRecords 结果记录表数据
  36. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  37. */
  38. public function half_concede_home($model, $resultModel, $resultRecords) {
  39. $this -> concedeHalf($model, $resultModel, $resultRecords, 1, 1);
  40. }
  41. /**
  42. * 上半场|客队|让球
  43. * @param mixed $model 注单表数据
  44. * @param mixed $resultModel 结果表数据
  45. * @param mixed $resultRecords 结果记录表数据
  46. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  47. */
  48. public function half_concede_guest($model, $resultModel, $resultRecords) {
  49. $this -> concedeHalf($model, $resultModel, $resultRecords, 2, 1);
  50. }
  51. /**
  52. * 进球|全场|大
  53. * @param mixed $model 注单表数据
  54. * @param mixed $resultModel 结果表数据
  55. * @param mixed $resultRecords 结果记录表数据
  56. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  57. */
  58. public function size_home($model, $resultModel, $resultRecords) {
  59. $this -> sizeFull($model, $resultModel, $resultRecords, 0, 1);
  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 size_guest($model, $resultModel, $resultRecords) {
  69. $this -> sizeFull($model, $resultModel, $resultRecords, 0, -1);
  70. }
  71. /**
  72. * 进球|上半场|大
  73. * @param mixed $model 注单表数据
  74. * @param mixed $resultModel 结果表数据
  75. * @param mixed $resultRecords 结果记录表数据
  76. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  77. */
  78. public function half_size_home($model, $resultModel, $resultRecords) {
  79. $this -> sizeHalf($model, $resultModel, $resultRecords, 0, 1, 1);
  80. }
  81. /**
  82. * 进球|上半场|小
  83. * @param mixed $model 注单表数据
  84. * @param mixed $resultModel 结果表数据
  85. * @param mixed $resultRecords 结果记录表数据
  86. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  87. */
  88. public function half_size_guest($model, $resultModel, $resultRecords) {
  89. $this -> sizeHalf($model, $resultModel, $resultRecords, 0, -1, 1);
  90. }
  91. /**
  92. * 全场|主队|独赢
  93. * @param mixed $model 注单表数据
  94. * @param mixed $resultModel 结果表数据
  95. * @param mixed $resultRecords 结果记录表数据
  96. * @return string 1:赢 -1:输
  97. */
  98. public function capot_home($model, $resultModel, $resultRecords) {
  99. $this -> winFull($model, $resultModel, $resultRecords, 1);
  100. }
  101. /**
  102. * 全场|客队|独赢
  103. * @param mixed $model 注单表数据
  104. * @param mixed $resultModel 结果表数据
  105. * @param mixed $resultRecords 结果记录表数据
  106. * @return string 1:赢 -1:输
  107. */
  108. public function capot_guest($model, $resultModel, $resultRecords) {
  109. $this -> winFull($model, $resultModel, $resultRecords, 2);
  110. }
  111. /**
  112. * 全场|主客平|独赢
  113. * @param mixed $model 注单表数据
  114. * @param mixed $resultModel 结果表数据
  115. * @param mixed $resultRecords 结果记录表数据
  116. * @return string 1:赢 -1:输
  117. */
  118. public function capot_dogfall($model, $resultModel, $resultRecords) {
  119. $this -> winFull($model, $resultModel, $resultRecords, 0);
  120. }
  121. /**
  122. * 上半场|主队|独赢
  123. * @param mixed $model 注单表数据
  124. * @param mixed $resultModel 结果表数据
  125. * @param mixed $resultRecords 结果记录表数据
  126. * @return string 1:赢 -1:输
  127. */
  128. public function half_capot_home($model, $resultModel, $resultRecords) {
  129. $this -> winHalf($model, $resultModel, $resultRecords, 1, 1);
  130. }
  131. /**
  132. * 上半场|客队|独赢
  133. * @param mixed $model 注单表数据
  134. * @param mixed $resultModel 结果表数据
  135. * @param mixed $resultRecords 结果记录表数据
  136. * @return string 1:赢 -1:输
  137. */
  138. public function half_capot_guest($model, $resultModel, $resultRecords) {
  139. $this -> winHalf($model, $resultModel, $resultRecords, 2, 1);
  140. }
  141. /**
  142. * 上半场|主客平|独赢
  143. * @param mixed $model 注单表数据
  144. * @param mixed $resultModel 结果表数据
  145. * @param mixed $resultRecords 结果记录表数据
  146. * @return string 1:赢 -1:输
  147. */
  148. public function half_capot_dogfall($model, $resultModel, $resultRecords) {
  149. $this -> winHalf($model, $resultModel, $resultRecords, 0, 1);
  150. }
  151. /**
  152. * 全场|[主、客]|让球
  153. * @param mixed $model 注单表数据
  154. * @param mixed $resultModel 结果表数据
  155. * @param mixed $resultRecords 结果记录表数据
  156. * @param mixed $type 1:代表主队让球 2:代表客队让球
  157. * @param mixed $size 1:大 -1:小(如果是让球大小玩法才传入该字段)
  158. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  159. */
  160. public function concedeFull($model, $resultModel, $resultRecords, $type, $size = ''){
  161. // 主队得分
  162. $homeScore = intval($resultModel -> home_score);
  163. // 客队得分
  164. $guestScore = intval($resultModel -> guest_score);
  165. $difference = 0;
  166. // 分差 - 主 :客
  167. if ($type == 1) {
  168. $difference = $homeScore - $guestScore;
  169. } else {
  170. // 分差 - 客 :主
  171. $difference = $guestScore - $homeScore;
  172. }
  173. // 让球个数
  174. $condition = explode("/", $model -> condition);
  175. $resultArr = [];
  176. // 循环对比让球后输赢
  177. foreach ($condition as $value) {
  178. $absValue = abs($value);
  179. if (substr($model -> condition, 0, 1) == '-') {
  180. $resultScore = $difference - $absValue;
  181. } else {
  182. $resultScore = $difference + $absValue;
  183. }
  184. if ($resultScore > 0) {
  185. $resultArr[] = 1;
  186. } elseif ($resultScore < 0) {
  187. $resultArr[] = -1;
  188. } else {
  189. $resultArr[] = 2;
  190. }
  191. }
  192. // 去重
  193. $resultUniqueArr = array_unique($resultArr);
  194. // 循环对比让球后输赢
  195. $count = count($resultUniqueArr);
  196. if ($size == -1) {
  197. if ($count == 1) {
  198. if ($resultUniqueArr[0] == 1) {
  199. return -1;
  200. } elseif ($resultUniqueArr[0] == 2) {
  201. return 2;
  202. } else {
  203. return 1;
  204. }
  205. } elseif (in_array(1, $resultUniqueArr)) {
  206. return 4;
  207. } else {
  208. return 3;
  209. }
  210. } else {
  211. if ($count == 1) {
  212. return $resultUniqueArr[0];
  213. } elseif (in_array(1, $resultUniqueArr)) {
  214. return 3;
  215. } else {
  216. return 4;
  217. }
  218. }
  219. }
  220. /**
  221. * 半场|[主、客]|让球
  222. * @param mixed $model 注单表数据
  223. * @param mixed $resultModel 结果表数据
  224. * @param mixed $resultRecords 结果记录表数据
  225. * @param mixed $whoType 1:代表主队让球 2:代表客队让球
  226. * @param mixed $halfType 1:上半场 2:下半场
  227. * @param mixed $size 1:大 -1:小(如果是让球大小玩法才传入该字段)
  228. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  229. */
  230. public function concedeHalf($model, $resultModel, $resultRecords, $whoType, $halfType, $size = ''){
  231. $half = [1 => '上半场', 2 => '下半场'];
  232. // 倒叙
  233. $newResultRecords = array_reverse($resultRecords);
  234. // 查询最后的上半场的key值
  235. $upResultKey = array_search($half[1], array_column($newResultRecords, 'match_process'));
  236. $homeScore = 0;
  237. $guestScore = 0;
  238. if ($halfType == 1) {
  239. // 主队得分
  240. $homeScore = intval($newResultRecords[$upResultKey] -> home_score);
  241. // 客队得分
  242. $guestScore = intval($newResultRecords[$upResultKey] -> guest_score);
  243. } else {
  244. // 查询最后的下半场的key值
  245. $downResultKey = array_search($half[2], array_column($newResultRecords, 'match_process'));
  246. // 下半场主队得分
  247. $homeScore = intval($newResultRecords[$downResultKey] -> home_score) - intval($newResultRecords[$upResultKey] -> home_score);
  248. // 下半场客队得分
  249. $guestScore = intval($newResultRecords[$downResultKey] -> guest_score) - intval($newResultRecords[$upResultKey] -> guest_score);
  250. }
  251. $difference = 0;
  252. // 分差 - 主 :客
  253. if ($whoType == 1) {
  254. $difference = $homeScore - $guestScore;
  255. } else {
  256. // 分差 - 客 :主
  257. $difference = $guestScore - $homeScore;
  258. }
  259. // 让球个数
  260. $condition = explode("/", $model -> condition);
  261. $resultArr = [];
  262. // 循环对比让球后输赢
  263. foreach ($condition as $value) {
  264. $absValue = abs($value);
  265. if (substr($model -> condition, 0, 1) == '-') {
  266. $resultScore = $difference - $absValue;
  267. } else {
  268. $resultScore = $difference + $absValue;
  269. }
  270. if ($resultScore > 0) {
  271. $resultArr[] = 1;
  272. } elseif ($resultScore < 0) {
  273. $resultArr[] = -1;
  274. } else {
  275. $resultArr[] = 2;
  276. }
  277. }
  278. // 去重
  279. $resultUniqueArr = array_unique($resultArr);
  280. // 循环对比让球后输赢
  281. $count = count($resultUniqueArr);
  282. // 如果猜的是让球大小且猜的是小则运行
  283. if ($size == -1) {
  284. if ($count == 1) {
  285. if ($resultUniqueArr[0] == 1) {
  286. return -1;
  287. } elseif ($resultUniqueArr[0] == 2) {
  288. return 2;
  289. } else {
  290. return 1;
  291. }
  292. } elseif (in_array(1, $resultUniqueArr)) {
  293. return 4;
  294. } else {
  295. return 3;
  296. }
  297. } else {
  298. if ($count == 1) {
  299. return $resultUniqueArr[0];
  300. } elseif (in_array(1, $resultUniqueArr)) {
  301. return 3;
  302. } else {
  303. return 4;
  304. }
  305. }
  306. }
  307. /**
  308. * 总进球全场|[主、客、全]|大小
  309. * @param mixed $model 注单表数据
  310. * @param mixed $resultModel 结果表数据
  311. * @param mixed $resultRecords 结果记录表数据
  312. * @param mixed $type 1:主队 2:客队 0:全部进球 (目前只传 0)
  313. * @param mixed $size 1:大 -1:小
  314. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  315. */
  316. public function sizeFull($model, $resultModel, $resultRecords, $type, $size){
  317. // 总进球数
  318. $allGoal = intval($resultModel -> home_score) + intval($resultModel -> guest_score);
  319. // 主队进球数
  320. $homeGoal = intval($resultModel -> home_score);
  321. // 客队进球数
  322. $guestGoal = intval($resultModel -> guest_score);
  323. // 条件
  324. $condition = explode("/", $model -> condition);
  325. $resultArr = [];
  326. // 循环对比输赢
  327. foreach ($condition as $value) {
  328. $absValue = abs($value);
  329. if ($type == 1) {
  330. $resultScore = $homeGoal - $absValue;
  331. } elseif ($type == 2) {
  332. $resultScore = $guestGoal - $absValue;
  333. } else {
  334. $resultScore = $allGoal - $absValue;
  335. }
  336. if ($resultScore > 0) {
  337. $resultArr[] = 1;
  338. } elseif ($resultScore < 0) {
  339. $resultArr[] = -1;
  340. } else {
  341. $resultArr[] = 0;
  342. }
  343. }
  344. // 去重
  345. $resultUniqueArr = array_unique($resultArr);
  346. // 循环对比让球后输赢
  347. $count = count($resultUniqueArr);
  348. if ($count == 1) {
  349. // 如果猜中
  350. if ($resultUniqueArr[0] == $size) {
  351. return 1;
  352. } elseif ($resultUniqueArr[0] == 0) {
  353. // 如果平
  354. return 2;
  355. } else {
  356. // 如果猜错
  357. return -1;
  358. }
  359. } elseif (in_array($size, $resultUniqueArr)) {
  360. return 3;
  361. } else {
  362. return 4;
  363. }
  364. }
  365. /**
  366. * 半场|[主、客、全]|大小
  367. * @param mixed $model 注单表数据
  368. * @param mixed $resultModel 结果表数据
  369. * @param mixed $resultRecords 结果记录表数据
  370. * @param mixed $type 1:主队 2:客队 0:全部进球 (目前只传 0)
  371. * @param mixed $size 1:大 -1:小
  372. * @param mixed $halfType 1:上半场 2:下半场
  373. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  374. */
  375. public function sizeHalf($model, $resultModel, $resultRecords, $type, $size, $halfType){
  376. $half = [1 => '上半场', 2 => '下半场'];
  377. // 倒叙
  378. $newResultRecords = array_reverse($resultRecords);
  379. // 查询最后的上半场的key值
  380. $upResultKey = array_search($half[1], array_column($newResultRecords, 'match_process'));
  381. if ($halfType == 1) {
  382. // 上半场总进球数
  383. $allGoal = intval($newResultRecords[$upResultKey] -> home_score) + intval($newResultRecords[$upResultKey] -> guest_score);
  384. // 上半场主队进球数
  385. $homeGoal = intval($newResultRecords[$upResultKey] -> home_score);
  386. // 上半场客队进球数
  387. $guestGoal = intval($newResultRecords[$upResultKey] -> guest_score);
  388. } else {
  389. // 查询最后的下半场的key值
  390. $downResultKey = array_search($half[2], array_column($newResultRecords, 'match_process'));
  391. // 下半场总进球数
  392. $allGoal = intval($newResultRecords[$downResultKey] -> home_score) + intval($newResultRecords[$downResultKey] -> guest_score) -
  393. intval($newResultRecords[$upResultKey] -> home_score) + intval($newResultRecords[$upResultKey] -> guest_score);
  394. // 下半场主队进球数
  395. $homeGoal = intval($newResultRecords[$downResultKey] -> home_score) - intval($newResultRecords[$upResultKey] -> home_score);
  396. // 下半场客队进球数
  397. $guestGoal = intval($newResultRecords[$downResultKey] -> guest_score) - intval($newResultRecords[$upResultKey] -> guest_score);
  398. }
  399. // 条件
  400. $condition = explode("/", $model -> condition);
  401. $resultArr = [];
  402. // 循环对比输赢
  403. foreach ($condition as $value) {
  404. $absValue = abs($value);
  405. if ($type == 1) {
  406. $resultScore = $homeGoal - $absValue;
  407. } elseif ($type == 2) {
  408. $resultScore = $guestGoal - $absValue;
  409. } else {
  410. $resultScore = $allGoal - $absValue;
  411. }
  412. if ($resultScore > 0) {
  413. $resultArr[] = 1;
  414. } elseif ($resultScore < 0) {
  415. $resultArr[] = -1;
  416. } else {
  417. $resultArr[] = 0;
  418. }
  419. }
  420. // 去重
  421. $resultUniqueArr = array_unique($resultArr);
  422. // 循环对比让球后输赢
  423. $count = count($resultUniqueArr);
  424. if ($count == 1) {
  425. // 如果猜中
  426. if ($resultUniqueArr[0] == $size) {
  427. return 1;
  428. } elseif ($resultUniqueArr[0] == 0) {
  429. // 如果平
  430. return 2;
  431. } else {
  432. // 如果猜错
  433. return -1;
  434. }
  435. } elseif (in_array($size, $resultUniqueArr)) {
  436. return 3;
  437. } else {
  438. return 4;
  439. }
  440. }
  441. /**
  442. * 全场|[主、客、平]|独赢
  443. * @param mixed $model 注单表数据
  444. * @param mixed $resultModel 结果表数据
  445. * @param mixed $resultRecords 结果记录表数据
  446. * @param mixed $type 1:主队 2:客队 0:平
  447. * @return string 1:赢 -1:输
  448. */
  449. public function winFull($model, $resultModel, $resultRecords, $type){
  450. // 主队得分
  451. $homeScore = intval($resultModel -> home_score);
  452. // 客队得分
  453. $guestScore = intval($resultModel -> guest_score);
  454. $difference = $homeScore - $guestScore;
  455. if ($difference > 0 && $type == 1) {
  456. return 1;
  457. } elseif ($difference < 0 && $type == 2) {
  458. return 1;
  459. } elseif ($difference == 0 && $type == 0) {
  460. return 1;
  461. } else {
  462. return -1;
  463. }
  464. }
  465. /**
  466. * 半场|[主、客、平]|独赢
  467. * @param mixed $model 注单表数据
  468. * @param mixed $resultModel 结果表数据
  469. * @param mixed $resultRecords 结果记录表数据
  470. * @param mixed $type 1:主队 2:客队 0:平
  471. * @param mixed $halfType 1:上半场 2:下半场
  472. * @return string 1:赢 -1:输
  473. */
  474. public function winHalf($model, $resultModel, $resultRecords, $type, $halfType){
  475. $half = [1 => '上半场', 2 => '下半场'];
  476. // 倒叙
  477. $newResultRecords = array_reverse($resultRecords);
  478. // 查询最后的上半场的key值
  479. $upResultKey = array_search($half[1], array_column($newResultRecords, 'match_process'));
  480. $homeScore = 0;
  481. $guestScore = 0;
  482. if ($halfType == 1) {
  483. // 主队得分
  484. $homeScore = intval($newResultRecords[$upResultKey] -> home_score);
  485. // 客队得分
  486. $guestScore = intval($newResultRecords[$upResultKey] -> guest_score);
  487. } else {
  488. // 查询最后的下半场的key值
  489. $downResultKey = array_search($half[2], array_column($newResultRecords, 'match_process'));
  490. // 下半场主队得分
  491. $homeScore = intval($newResultRecords[$downResultKey] -> home_score) - intval($newResultRecords[$upResultKey] -> home_score);
  492. // 下半场客队得分
  493. $guestScore = intval($newResultRecords[$downResultKey] -> guest_score) - intval($newResultRecords[$upResultKey] -> guest_score);
  494. }
  495. $difference = $homeScore - $guestScore;
  496. if ($difference > 0 && $type == 1) {
  497. return 1;
  498. } elseif ($difference < 0 && $type == 2) {
  499. return 1;
  500. } elseif ($difference == 0 && $type == 0) {
  501. return 1;
  502. } else {
  503. return -1;
  504. }
  505. }
  506. // first_last_ball最先/最后进球 开始-----------------------
  507. //主队|最先进球
  508. public function first_ball_home($model,$resultModel,$resultRecords){
  509. if ($resultModel->all_goal >0){
  510. if ($resultModel->first_score === $resultModel->home_team){
  511. return 1;
  512. }else{
  513. return -1 ;
  514. }
  515. }
  516. return 2 ;
  517. }
  518. //客队|最先进球
  519. public function first_ball_guest($model,$resultModel,$resultRecords){
  520. if ($resultModel->all_goal >0){
  521. if ($resultModel->first_score === $resultModel->guest_team){
  522. return 1;
  523. }else{
  524. return -1 ;
  525. }
  526. }
  527. return 2 ;
  528. }
  529. //主队|最后进球
  530. public function last_ball_home($model,$resultModel,$resultRecords){
  531. if ($resultModel->all_goal >0){
  532. if ($resultModel->last_score === $resultModel->home_team){
  533. return 1;
  534. }else{
  535. return -1 ;
  536. }
  537. }
  538. return 2 ;
  539. }
  540. //客队|最后进球
  541. public function last_ball_guest($model,$resultModel,$resultRecords){
  542. if ($resultModel->all_goal >0){
  543. if ($resultModel->last_score === $resultModel->guest_team){
  544. return 1;
  545. }else{
  546. return -1 ;
  547. }
  548. }
  549. return 2 ;
  550. }
  551. //没有进球
  552. public function not_ball($model,$resultModel,$resultRecords){
  553. if ($resultModel->all_goal <=0){
  554. return 1 ;
  555. }else{
  556. return -1 ;
  557. }
  558. }
  559. ////////// first_last_ball最先/最后进球 结束-----------------------
  560. /**
  561. * 足球波胆 规则
  562. * @param $bet_match 投注赛事数据
  563. * @param $result_match 最终结果
  564. * @param $result_match_r 结果记录
  565. */
  566. public function bodan($bet_match,$result_match,$result_match_r){
  567. // $bet_match = DB::table('money_buy_match')->where('match_id', 3144414)->first();
  568. // $result_match = DB::table('st_zq_result')->where('match_id', 3144414)->first();
  569. // $result_match_r = DB::table('st_zq_result_record')->where('match_id', 3144414)->get()->toArray();
  570. //获取父/子级赔率代码
  571. $p_code = $bet_match->p_code;
  572. $odds_code = $bet_match->odds_code;
  573. //获取主客队投注比分
  574. $bet_score = explode('-', $bet_match->condition);
  575. $bet_home_score = (int)$bet_score[0];
  576. $bet_guest_score = (int)$bet_score[1];
  577. if($p_code != 'bodan') return false;
  578. if(strstr($odds_code,"half")){//上半场
  579. //获取上半场最终数据
  580. $last_half_data = $this->getHalfData($result_match_r);
  581. //获取主客队上半场得分
  582. $home_score = $last_half_data->home_score;
  583. $guest_score = $last_half_data->guest_score;
  584. }else{//全场
  585. //获取主客队全场得分
  586. $home_score = $result_match->home_score;
  587. $guest_score = $result_match->guest_score;
  588. }
  589. //判断结果
  590. if($bet_home_score == $home_score and $bet_guest_score == $guest_score) return 1;
  591. return -1;
  592. }
  593. //结果单/双 home_score 主队进球数 guest_score 客队进球数 home_rate 主队让球 guest_rate 客队让球
  594. public function two_sides($model,$resultModel,$resultRecords){
  595. $resulttod = intval($resultModel->home_score) + intval($resultModel->guest_score) + intval($resultModel->guest_rate) + intval($resultModel->home_rate);
  596. if($resulttod%2==0){
  597. $data = 2;
  598. }else{
  599. $data = 2;
  600. }
  601. if($data = intval($model->condition)){
  602. return 1;
  603. }else{
  604. return -1;
  605. }
  606. }
  607. //结果总数 home_score 主队进球数 guest_score 客队进球数 home_rate 主队让球 guest_rate 客队让球 u_home_score 上半场-主队进球数 u_guest_score 上半场-客队进球数
  608. public function total_goal($model,$resultModel,$resultRecords){
  609. //全场总进球数
  610. $resulttod = intval($resultModel->home_score) + intval($resultModel->guest_score) + intval($resultModel->guest_rate) + intval($resultModel->home_rate);
  611. //上半场总进球数
  612. $Firsthalftod = intval($resultModel->home_score) + intval($resultModel->guest_score) + intval($resultModel->u_home_score) + intval($resultModel->u_guest_score);
  613. $qjnum = explode(',', $model->condition);
  614. if($qjnum[0]<$resulttod and $qjnum[1]>$resulttod){
  615. return 1;
  616. }else{
  617. return -1;
  618. }
  619. }
  620. /**
  621. * 半场/全场 投注规则
  622. */
  623. public function half_full($bet_match,$result_match,$result_match_r){
  624. // $bet_match = DB::table('money_buy_match')->where('match_id', 3144414)->first();
  625. // $result_match = DB::table('st_zq_result')->where('match_id', 3144414)->first();
  626. // $result_match_r = DB::table('st_zq_result_record')->where('match_id', 3144414)->get()->toArray();
  627. if(empty($bet_match) || empty($result_match) || empty($result_match_r)) return false;
  628. //获取父/子级赔率代码
  629. $p_code = $bet_match->p_code;
  630. $odds_code = $bet_match->odds_code;
  631. //获取上半场最终数据
  632. $last_half_data = $this->getHalfData($result_match_r);
  633. //获取主客队上半场得分
  634. $half_home_score = $last_half_data->home_score;
  635. $half_guest_score = $last_half_data->guest_score;
  636. //获取主客队全场得分
  637. $full_home_score = $result_match->home_score;
  638. $full_guest_score = $result_match->guest_score;
  639. //半场/全场盘口
  640. if($p_code != 'half_full') return false;
  641. switch ($odds_code ) {
  642. case 'half_full_home_home':// 主-主
  643. if($half_home_score > $half_guest_score and $full_home_score > $full_guest_score) return 1;
  644. break;
  645. case 'half_full_home_dogfall':// 主-和
  646. if($half_home_score > $half_guest_score and $full_home_score == $full_guest_score) return 1;
  647. break;
  648. case 'half_full_home_guest':// 主-客
  649. if($half_home_score > $half_guest_score and $full_home_score < $full_guest_score) return 1;
  650. break;
  651. case 'half_full_dogfall_home':// 和-主
  652. if($half_home_score == $half_guest_score and $full_home_score > $full_guest_score) return 1;
  653. break;
  654. case 'half_full_dogfall_dogfall':// 和-和
  655. if($half_home_score == $half_guest_score and $full_home_score == $full_guest_score) return 1;
  656. break;
  657. case 'half_full_dogfall_guest':// 和-客
  658. if($half_home_score == $half_guest_score and $full_home_score < $full_guest_score) return 1;
  659. break;
  660. case 'half_full_guest_home':// 客-主
  661. if($half_home_score < $half_guest_score and $full_home_score > $full_guest_score) return 1;
  662. break;
  663. case 'half_full_guest_dogfall':// 客-和
  664. if($half_home_score < $half_guest_score and $full_home_score == $full_guest_score) return 1;
  665. break;
  666. case 'half_full_guest_guest':// 客-客
  667. if($half_home_score < $half_guest_score and $full_home_score < $full_guest_score) return 1;
  668. break;
  669. default:
  670. return false;
  671. }
  672. return -1;
  673. }
  674. /**
  675. * @param $result_match_r 赛事结果记录
  676. * @return mixed 返回最新一条上半场结果数据
  677. */
  678. public function getHalfData($result_match_r=[]){
  679. if(empty($result_match_r)) return false;
  680. $half_data = [];
  681. foreach ($result_match_r as $k=>$v){
  682. //取出上半场数据
  683. if($v->match_process == '上半场'){
  684. $half_data[] = $v;
  685. }
  686. }
  687. //根据id倒序排列
  688. $half_data_sorc = array_column($half_data,'id');
  689. array_multisort($half_data_sorc,SORT_DESC,$half_data);
  690. //获取id最大的一条数据
  691. foreach ($half_data as $k=>$v){
  692. if($v->id == $half_data_sorc[0]){
  693. $last_half_data = $v;
  694. }
  695. }
  696. return $last_half_data;
  697. }
  698. }