BqRule.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  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 BqRule
  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 bq_concede_home($model, $resultModel, $resultRecords) {
  19. $this -> bq_concede($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 bq_concede_guest($model, $resultModel, $resultRecords) {
  29. $this -> bq_concede($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 bq_five_concede_home($model, $resultModel, $resultRecords) {
  39. $this -> concedefirstfiveinnings($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 bq_five_concede_guest($model, $resultModel, $resultRecords) {
  49. $this -> concedefirstfiveinnings($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:输
  57. */
  58. public function bq_capot_home($model, $resultModel, $resultRecords) {
  59. $this -> bq_capot($model, $resultModel, $resultRecords, 1);
  60. }
  61. /**
  62. * 全场|客队|独赢
  63. * @param mixed $model 注单表数据
  64. * @param mixed $resultModel 结果表数据
  65. * @param mixed $resultRecords 结果记录表数据
  66. * @return string 1:赢 -1:输
  67. */
  68. public function bq_capot_guest($model, $resultModel, $resultRecords) {
  69. $this -> bq_capot($model, $resultModel, $resultRecords, -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 bq_total_number_big($model, $resultModel, $resultRecords){
  79. return $this -> sizeCommon($model, $resultModel, $resultRecords, 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 bq_total_number_small($model, $resultModel, $resultRecords){
  89. return $this -> sizeCommon($model, $resultModel, $resultRecords, 2);
  90. }
  91. /**
  92. * 前五局|总得分|小
  93. * @param mixed $model 注单表数据
  94. * @param mixed $resultModel 结果表数据
  95. * @param mixed $resultRecords 结果记录表数据
  96. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  97. */
  98. public function bq_five_total_number_big($model, $resultModel, $resultRecords){
  99. return $this -> sizeCommonfirstfiveinnings($model, $resultModel, $resultRecords, 1);
  100. }
  101. /**
  102. * 前五局|总得分|小
  103. * @param mixed $model 注单表数据
  104. * @param mixed $resultModel 结果表数据
  105. * @param mixed $resultRecords 结果记录表数据
  106. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  107. */
  108. public function bq_five_total_number_small($model, $resultModel, $resultRecords){
  109. return $this -> sizeCommonfirstfiveinnings($model, $resultModel, $resultRecords, 2);
  110. }
  111. /**
  112. * 全场|总得分|单
  113. * @param mixed $model 注单表数据
  114. * @param mixed $resultModel 结果表数据
  115. * @param mixed $resultRecords 结果记录表数据
  116. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  117. */
  118. public function bq_two_sides_single($model, $resultModel, $resultRecords){
  119. return $this -> bq_two_sides($model, $resultModel, $resultRecords, 1);
  120. }
  121. /**
  122. * 全场|总得分|双
  123. * @param mixed $model 注单表数据
  124. * @param mixed $resultModel 结果表数据
  125. * @param mixed $resultRecords 结果记录表数据
  126. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  127. */
  128. public function bq_two_sides_double($model, $resultModel, $resultRecords){
  129. return $this -> bq_two_sides($model, $resultModel, $resultRecords, 2);
  130. }
  131. /**
  132. * 全场|[主、客]|让球
  133. * @param mixed $model 注单表数据
  134. * @param mixed $resultModel 结果表数据
  135. * @param mixed $resultRecords 结果记录表数据
  136. * @param mixed $type 1:代表主队让球 2:代表客队让球
  137. * @param mixed $size 1:大 -1:小(如果是让球大小玩法才传入该字段)
  138. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  139. */
  140. public function bq_concede($model, $resultModel, $resultRecords, $type, $size = ''){
  141. $resultModel = $resultModel['0'];
  142. // 主队得分
  143. $homeScore = intval($resultModel -> home_score);
  144. // 客队得分
  145. $guestScore = intval($resultModel -> guest_score);
  146. $difference = 0;
  147. // 分差 - 主 :客
  148. if ($type == 1) {
  149. $difference = $homeScore - $guestScore;
  150. } else {
  151. // 分差 - 客 :主
  152. $difference = $guestScore - $homeScore;
  153. }
  154. // 让球个数
  155. $condition = explode("/", $model -> condition);
  156. $resultArr = [];
  157. // 循环对比让球后输赢
  158. foreach ($condition as $value) {
  159. $absValue = abs($value);
  160. if (substr($model -> condition, 0, 1) == '-') {
  161. $resultScore = $difference - $absValue;
  162. } else {
  163. $resultScore = $difference + $absValue;
  164. }
  165. if ($resultScore > 0) {
  166. $resultArr[] = 1;
  167. } elseif ($resultScore < 0) {
  168. $resultArr[] = -1;
  169. } else {
  170. $resultArr[] = 2;
  171. }
  172. }
  173. // 去重
  174. $resultUniqueArr = array_unique($resultArr);
  175. // 循环对比让球后输赢
  176. $count = count($resultUniqueArr);
  177. if ($size == -1) {
  178. if ($count == 1) {
  179. if ($resultUniqueArr[0] == 1) {
  180. $data['result'] = -1;
  181. } elseif ($resultUniqueArr[0] == 2) {
  182. $data['result'] = 2;
  183. } else {
  184. $data['result'] = 1;
  185. }
  186. } elseif (in_array(1, $resultUniqueArr)) {
  187. $data['result'] = 4;
  188. } else {
  189. $data['result'] = 3;
  190. }
  191. } else {
  192. if ($count == 1) {
  193. $data['result'] = $resultUniqueArr[0];
  194. } elseif (in_array(1, $resultUniqueArr)) {
  195. $data['result'] = 3;
  196. } else {
  197. $data['result'] = 4;
  198. }
  199. }
  200. $data['matchResult'] = "$homeScore-$guestScore(全场)";
  201. return $data;
  202. }
  203. /**
  204. * 前五局|[主、客]|让球
  205. * @param mixed $model 注单表数据
  206. * @param mixed $resultModel 结果表数据
  207. * @param mixed $resultRecords 结果记录表数据
  208. * @param mixed $whoType 1:代表主队让球 2:代表客队让球
  209. * @param mixed $size 1:大 -1:小(如果是让球大小玩法才传入该字段)
  210. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  211. */
  212. public function concedefirstfiveinnings($model, $resultModel, $resultRecords, $whoType, $size = ''){
  213. // 倒叙
  214. $newResultRecords = array_reverse($resultRecords);
  215. // 查询最后的上半场的key值
  216. $upResultKey = array_search('第五局', array_column($newResultRecords, 'match_process'));
  217. $homeScore = 0;
  218. $guestScore = 0;
  219. // 主队得分
  220. $homeScore = intval($newResultRecords[$upResultKey] -> home_score);
  221. // 客队得分
  222. $guestScore = intval($newResultRecords[$upResultKey] -> guest_score);
  223. $difference = 0;
  224. // 分差 - 主 :客
  225. if ($whoType == 1) {
  226. $difference = $homeScore - $guestScore;
  227. } else {
  228. // 分差 - 客 :主
  229. $difference = $guestScore - $homeScore;
  230. }
  231. // 让球个数
  232. $condition = explode("/", $model -> condition);
  233. $resultArr = [];
  234. // 循环对比让球后输赢
  235. foreach ($condition as $value) {
  236. $absValue = abs($value);
  237. if (substr($model -> condition, 0, 1) == '-') {
  238. $resultScore = $difference - $absValue;
  239. } else {
  240. $resultScore = $difference + $absValue;
  241. }
  242. if ($resultScore > 0) {
  243. $resultArr[] = 1;
  244. } elseif ($resultScore < 0) {
  245. $resultArr[] = -1;
  246. } else {
  247. $resultArr[] = 2;
  248. }
  249. }
  250. // 去重
  251. $resultUniqueArr = array_unique($resultArr);
  252. // 循环对比让球后输赢
  253. $count = count($resultUniqueArr);
  254. // 如果猜的是让球大小且猜的是小则运行
  255. if ($size == -1) {
  256. if ($count == 1) {
  257. if ($resultUniqueArr[0] == 1) {
  258. $data['result'] = -1;
  259. } elseif ($resultUniqueArr[0] == 2) {
  260. $data['result'] = 2;
  261. } else {
  262. $data['result'] = 1;
  263. }
  264. } elseif (in_array(1, $resultUniqueArr)) {
  265. $data['result'] = 4;
  266. } else {
  267. $data['result'] = 3;
  268. }
  269. } else {
  270. if ($count == 1) {
  271. $data['result'] = $resultUniqueArr[0];
  272. } elseif (in_array(1, $resultUniqueArr)) {
  273. $data['result'] = 3;
  274. } else {
  275. $data['result'] = 4;
  276. }
  277. }
  278. $data['matchResult'] = "$homeScore-$guestScore(前五局)";
  279. return $data;
  280. }
  281. /**
  282. * 全场|[主、客、平]|独赢
  283. * @param mixed $model 注单表数据
  284. * @param mixed $resultModel 结果表数据
  285. * @param mixed $resultRecords 结果记录表数据
  286. * @param mixed $type 1:主队 2:客队
  287. * @return string 1:赢 -1:输
  288. */
  289. public function bq_capot($model, $resultModel, $resultRecords, $type){
  290. $resultModel = $resultModel['0'];
  291. // 主队得分
  292. $homeScore = intval($resultModel -> home_score);
  293. // 客队得分
  294. $guestScore = intval($resultModel -> guest_score);
  295. $difference = $homeScore - $guestScore;
  296. if ($difference > 0 && $type == 1) {
  297. $data['result'] = 1;
  298. } elseif ($difference < 0 && $type == 2) {
  299. $data['result'] = 1;
  300. } else {
  301. $data['result'] = -1;
  302. }
  303. $data['matchResult'] = "$homeScore-$guestScore(全场)";
  304. return $data;
  305. }
  306. /**
  307. * 全场得分大小
  308. * @param mixed $model 注单表数据
  309. * @param mixed $resultModel 结果表数据
  310. * @param mixed $resultRecords 结果记录表数据
  311. * @param mixed $size 大小 1:大 -1:小
  312. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  313. */
  314. public function sizeCommon($model, $resultModel, $resultRecords, $size){
  315. $resultModel = $resultModel['0'];
  316. // 主队得分
  317. $homeScore = intval($resultModel -> home_score);
  318. // 客队得分
  319. $guestScore = intval($resultModel -> guest_score);
  320. // 总分
  321. $allGoal = $homeScore+$guestScore;
  322. // 总球条件
  323. $condition = intval($model -> condition);
  324. // 差值
  325. if ($size == 1) {
  326. $resultScore = $allGoal - $condition;
  327. } else {
  328. $resultScore = $condition - $allGoal;
  329. }
  330. if ($resultScore > 0) {
  331. $data['result'] = 1;
  332. } elseif ($resultScore < 0) {
  333. $data['result'] = 1;
  334. } else {
  335. $data['result'] = 2;
  336. }
  337. $data['matchResult'] = "$homeScore+$guestScore(全场)";
  338. return $data;
  339. }
  340. /**
  341. * 前五局大小
  342. * @param mixed $model 注单表数据
  343. * @param mixed $resultModel 结果表数据
  344. * @param mixed $resultRecords 结果记录表数据
  345. * @param mixed $size 大小 1:大 -1:小
  346. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  347. */
  348. public function sizeCommonfirstfiveinnings($model, $resultModel, $resultRecords, $size){
  349. // 倒叙
  350. $newResultRecords = array_reverse($resultRecords);
  351. $upResultKey = array_search('第五局', array_column($newResultRecords, 'match_process'));
  352. $homeScore = 0;
  353. $guestScore = 0;
  354. // 主队得分
  355. $homeScore = intval($newResultRecords[$upResultKey] -> home_score);
  356. // 客队得分
  357. $guestScore = intval($newResultRecords[$upResultKey] -> guest_score);
  358. // 总分
  359. $allGoal = $homeScore+$guestScore;
  360. // 总球条件
  361. $condition = intval($model -> condition);
  362. // 差值
  363. if ($size == 1) {
  364. $resultScore = $allGoal - $condition;
  365. } else {
  366. $resultScore = $condition - $allGoal;
  367. }
  368. if ($resultScore > 0) {
  369. $data['result'] = 1;
  370. } elseif ($resultScore < 0) {
  371. $data['result'] = -1;
  372. } else {
  373. $data['result'] = 2;
  374. }
  375. $data['matchResult'] = "$homeScore+$guestScore(前五局)";
  376. return $data;
  377. }
  378. /**
  379. * 全场总得分单双
  380. * @param mixed $model 注单表数据
  381. * @param mixed $resultModel 结果表数据
  382. * @param mixed $resultRecords 结果记录表数据
  383. * @param mixed $type 大小 1:单 2:双
  384. * @return string 1:赢 -1:输 2:平 3:赢半平半 4:输半平半
  385. */
  386. //结果单/双 home_score 主队进球数 guest_score 客队进球数 home_rate 主队让球 guest_rate 客队让球
  387. public function bq_two_sides($model,$resultModel,$resultRecords, $type)
  388. {
  389. $resultModel = $resultModel['0'];
  390. // 主队得分
  391. $homeScore = intval($resultModel -> home_score);
  392. // 客队得分
  393. $guestScore = intval($resultModel -> guest_score);
  394. // 总分
  395. $allGoal = $homeScore+$guestScore;
  396. // 总得分单双条件
  397. $condition = intval($model -> condition);
  398. if($type == 1 && $condition == '单'){
  399. if($allGoal%2 != 0){
  400. $data['result'] = 1;
  401. }else{
  402. $data['result'] = -1;
  403. }
  404. }
  405. if($type = 2 && $condition = '双'){
  406. if($allGoal%2 == 0){
  407. $data['result'] = 1;
  408. }else{
  409. $data['result'] = -1;
  410. }
  411. }
  412. $data['matchResult'] = "$allGoal(全场)";
  413. return $data;
  414. }
  415. }