first(); } /** * @description: 查询所有数据 * @param array $search * @return \Illuminate\Database\Eloquent\Collection */ public static function findAll(array $search = []) { return self::model()::where(self::getWhere($search))->get(); } /** * @description: 分页查询 * @param array $search * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator */ public static function paginate(array $search = []) { $limit = isset($search['limit'])?$search['limit']:15; $paginator = self::model()::where(self::getWhere($search))->paginate($limit); return ['total' => $paginator->total(), 'data' => $paginator->items()]; } /** * @description: 获取中奖的奖项 * @param {*} $winning_numbers * @return {*} */ public static function award($winning_numbers) { $result = []; // 组合 $sum = array_sum($winning_numbers); $section = self::getSection($sum); // 总和段位 $result[] = $section; $sumOddEven = self::calculateOddEven($sum); // 总和单双 $result[] = $sumOddEven; $sumSize = self::calculateSumSize($sum); // 总和大小 $result[] = $sumSize; $sumExtremeSize = self::calculateSumExtremeSize($sum); // 总和极值 if($sumExtremeSize){ $result[] = $sumExtremeSize; } $sumCao = $sum . '操'; // 总和数字 $result[] = $sumCao; $sumCombo = $sumSize. $sumOddEven; // 总和大小单双组合 $result[] = $sumCombo; $sumBaoZi = self::isBaoZi($winning_numbers[0], $winning_numbers[1], $winning_numbers[2]); // 豹子 if($sumBaoZi){ $result[] = $sumBaoZi; } $sumPair = self::isPair($winning_numbers[0], $winning_numbers[1], $winning_numbers[2]); // 对子 if($sumPair){ $result[] = $sumPair; } $sumStraight = self::isStraight($winning_numbers[0], $winning_numbers[1], $winning_numbers[2]); // 顺子 if($sumStraight){ $result[] = $sumStraight; } $tail = self::getLastDigit($sum); // 总和尾数 $result[] = $tail . '尾'; // 尾数 $tailOddEven = self::calculateOddEven($tail); // 尾数单双 $result[] = '尾'.$tailOddEven; $tailSize = self::calculateOneSize($tail); // 尾数大小 $result[] = '尾'.$tailSize; $tailCombo = '尾'.$tailSize . $tailOddEven; // 尾数大小单双组合 $result[] = $tailCombo; $numA = $winning_numbers[0]; // A球 $result[] = $numA.'A'; $numAOddEven = self::calculateOddEven($numA); // A球单双 $result[] = 'A'.$numAOddEven; $numASize = self::calculateOneSize($numA); // A球大小 $result[] = 'A'.$numASize; $numB = $winning_numbers[1]; // B球 $result[] = $numB.'B'; $numBOddEven = self::calculateOddEven($numB); // B球 $result[] = 'B'.$numBOddEven; $numBSize = self::calculateOneSize($numB); // B球大小 $result[] = 'B'.$numBSize; $numC = $winning_numbers[2]; $result[] = $numC.'C'; $numCOddEven = self::calculateOddEven($numC); // C球单双 $result[] = 'C'.$numCOddEven; $numCSize = self::calculateOneSize($numC); // C球大小 $result[] = 'C'.$numCSize; return $result; } /** * @description: 算单双 * @param {*} $number * @return {*} */ public static function calculateOddEven($number) { if ($number & 1) { return GameplayRuleEnum::SINGLE; } else { return GameplayRuleEnum::DOUBLE; } } /** * @description: 总和大小 * @param {*} $number * @return {*} */ public static function calculateSumSize($number) { if($number >= GameplayRuleEnum::SUM_BIG) { return GameplayRuleEnum::BIG; } if($number <= GameplayRuleEnum::SUM_SMALL){ return GameplayRuleEnum::SMALL; } } /** * @description: 总和极值 * @param {*} $number * @return {*} */ public static function calculateSumExtremeSize($number) { $result = ''; if($number >= GameplayRuleEnum::SUM_EXTREME_BIG) { $result = GameplayRuleEnum::EXTREME_BIG; } if($number <= GameplayRuleEnum::SUM_EXTREME_SMALL){ $result = GameplayRuleEnum::EXTREME_SMALL; } return $result; } /** * @description: 豹子 * @param {int} $a * @param {int} $b * @param {int} $c * @return {*} */ public static function isBaoZi(int $a, int $b, int $c) { $result = ''; if($a === $b && $b === $c){ $result = GameplayRuleEnum::BAO_ZI; } return $result; } /** * @description: 对子 * @param {int} $a * @param {int} $b * @param {int} $c * @return {*} */ public static function isPair($a, $b, $c) { $result = ''; // 确保输入都是个位数 if (!is_numeric($a) || !is_numeric($b) || !is_numeric($c) || $a < 0 || $a > 9 || $b < 0 || $b > 9 || $c < 0 || $c > 9) { return ''; // 或者抛出异常 } if(($a == $b && $a != $c) || ($a == $c && $a != $b) || ($b == $c && $b != $a)){ $result = GameplayRuleEnum::PAIRS; } // 判断是否为对子情况 return $result; } /** * @description: 顺子 * @param {int} $a * @param {int} $b * @param {int} $c * @return {*} */ public static function isStraight($a, $b, $c) { $result = ''; // 确保输入都是个位数(0-9) if (!is_numeric($a) || !is_numeric($b) || !is_numeric($c) || $a < 0 || $a > 9 || $b < 0 || $b > 9 || $c < 0 || $c > 9) { return ''; } // 去重(顺子必须三个不同数字) if ($a == $b || $a == $c || $b == $c) { return ''; } // 检查是否是完全升序或完全降序的连续数字 $numbers = [$a, $b, $c]; sort($numbers); // 排序后检查是否是 x, x+1, x+2 list($x, $y, $z) = $numbers; // 情况1:升序连续(1,2,3) $isAscending = ($x + 1 == $y) && ($y + 1 == $z); // 情况2:降序连续(3,2,1) $isDescending = ($z + 1 == $y) && ($y + 1 == $x); if($isAscending || $isDescending){ $result = GameplayRuleEnum::STRAIGHT; } return $result; } /** * 获取数字的尾数 * @param int $number 输入数字 * @return int 尾数 */ public static function getLastDigit($number) { // 确保输入是整数 $number = (int)$number; // 取绝对值,处理负数情况 $number = abs($number); // 取模10得到尾数 return $number % 10; } /** * @description: 尾大小 * @param {*} $number * @return {*} */ public static function calculateOneSize($number) { if($number >= GameplayRuleEnum::ONE_BIG) { return GameplayRuleEnum::BIG; } if($number <= GameplayRuleEnum::ONE_SMALL){ return GameplayRuleEnum::SMALL; } } /** * @description: 获取段位 * @param {*} $number * @return {*} */ public static function getSection($number) { $result = ''; if ($number >= GameplayRuleEnum::SECTION_1[0] && $number <= GameplayRuleEnum::SECTION_1[1]) { $result = GameplayRuleEnum::ONE; } elseif ($number >= GameplayRuleEnum::SECTION_2[0] && $number <= GameplayRuleEnum::SECTION_2[1]) { $result = GameplayRuleEnum::TWO; } elseif ($number >= GameplayRuleEnum::SECTION_3[0] && $number <= GameplayRuleEnum::SECTION_3[1]) { $result = GameplayRuleEnum::THREE; } elseif ($number >= GameplayRuleEnum::SECTION_4[0] && $number <= GameplayRuleEnum::SECTION_4[1]) { $result = GameplayRuleEnum::FOUR; } return $result; // 不在任何段中 } }