BqRule.php 16 KB

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