Ken пре 3 дана
родитељ
комит
8a4708dc73

+ 5 - 2
app/Models/PcPrediction.php

@@ -5,7 +5,7 @@ namespace App\Models;
 class PcPrediction extends BaseModel
 {
     protected $table = 'pc_prediction';
-    protected $fillable = ['issue_no', 'size', 'odd_or_even', 'is_valid', 'winning_numbers'];
+    protected $fillable = ['issue_no', 'size', 'odd_or_even', 'is_valid', 'winning_numbers', 'time'];
     const SIZE_BIG = 1;//预测大小:大
     const SIZE_SMALL = 0;//预测大小:小
     const ODD = 0;//预测单双:单
@@ -17,12 +17,14 @@ class PcPrediction extends BaseModel
     //预测
     static function prediction($issueNo): PcPrediction
     {
+        $issue = PcIssue::where('issue_no', $issueNo)->first();
         $size = mt_rand(static::SIZE_SMALL, static::SIZE_BIG);
         $oddOrEven = mt_rand(static::ODD, static::EVEN);
         return static::create([
             'issue_no' => $issueNo,
             'size' => $size,
-            'odd_or_even' => $oddOrEven
+            'odd_or_even' => $oddOrEven,
+            'time' => $issue->end_time
         ]);
     }
 
@@ -30,6 +32,7 @@ class PcPrediction extends BaseModel
     static function result($issueNo, $winningNumbers, $awards): void
     {
 
+
         $data = static::where('issue_no', $issueNo)->first();
         if (!$data) $data = static::prediction($issueNo);
 

+ 57 - 53
app/Services/PcIssueService.php

@@ -77,64 +77,68 @@ class PcIssueService extends BaseService
         $now = time();
         foreach ($list as $index => $item) {
             if (strtotime($item->end_time) <= $now) {
-                $keno = static::getKeno();
-                $item->keno = json_encode($keno);
-                $winningNumbers = static::getWinningNumbers($keno);
-                $item->winning_numbers = implode(',', $winningNumbers);
-                $item->save();
-
-
-                $winArr = array_map('intval', $winningNumbers);
-                // 组合
-                $sum = array_sum($winArr);
-                $combo = [];
-                $sumSize = IssueService::calculateSumSize($sum);  // 总和大小
-                $combo[] = $sumSize;
+                DB::beginTransaction();
+                try {
+                    $keno = static::getKeno();
+                    $item->keno = json_encode($keno);
+                    $winningNumbers = static::getWinningNumbers($keno);
+                    $item->winning_numbers = implode(',', $winningNumbers);
+                    $item->save();
+
+
+                    $winArr = array_map('intval', $winningNumbers);
+                    // 组合
+                    $sum = array_sum($winArr);
+                    $combo = [];
+                    $sumSize = IssueService::calculateSumSize($sum);  // 总和大小
+                    $combo[] = $sumSize;
+
+                    $sumOddEven = IssueService::calculateOddEven($sum); // 总和单双
+                    $combo[] = $sumOddEven;
+                    $sumExtremeSize = IssueService::calculateSumExtremeSize($sum);  // 总和极值
+                    if ($sumExtremeSize) {
+                        $combo[] = $sumExtremeSize;
+                    }
+                    $sumBaoZi = IssueService::isBaoZi($winArr[0], $winArr[1], $winArr[2]); // 豹子
+                    if ($sumBaoZi) {
+                        $combo[] = $sumBaoZi;
+                    }
+                    $sumPair = IssueService::isPair($winArr[0], $winArr[1], $winArr[2]); // 对子
+                    if ($sumPair) {
+                        $combo[] = $sumPair;
+                    }
+                    $sumStraight = IssueService::isStraight($winArr[0], $winArr[1], $winArr[2]); // 顺子
+                    if ($sumStraight) {
+                        $combo[] = $sumStraight;
+                    }
+                    $tail = IssueService::getLastDigit($sum); // 总和尾数
+                    if ($tail != 0 && $tail != 9) {
+                        $combo[] = '尾' . $tail; // 尾数
+                    }
 
-                $sumOddEven = IssueService::calculateOddEven($sum); // 总和单双
-                $combo[] = $sumOddEven;
-                $sumExtremeSize = IssueService::calculateSumExtremeSize($sum);  // 总和极值
-                if ($sumExtremeSize) {
-                    $combo[] = $sumExtremeSize;
-                }
-                $sumBaoZi = IssueService::isBaoZi($winArr[0], $winArr[1], $winArr[2]); // 豹子
-                if ($sumBaoZi) {
-                    $combo[] = $sumBaoZi;
-                }
-                $sumPair = IssueService::isPair($winArr[0], $winArr[1], $winArr[2]); // 对子
-                if ($sumPair) {
-                    $combo[] = $sumPair;
-                }
-                $sumStraight = IssueService::isStraight($winArr[0], $winArr[1], $winArr[2]); // 顺子
-                if ($sumStraight) {
-                    $combo[] = $sumStraight;
-                }
-                $tail = IssueService::getLastDigit($sum); // 总和尾数
-                if ($tail != 0 && $tail != 9) {
-                    $combo[] = '尾' . $tail; // 尾数
-                }
 
+                    $key = 'lottery_numbers_' . $item->issue_no;
+                    $combo = implode(' ', $combo);
 
-                $key = 'lottery_numbers_' . $item->issue_no;
-                $combo = implode(' ', $combo);
+                    if (Cache::add($key, $item->winning_numbers, 100)) {
+                        self::lotteryDraw($item->issue_no, $item->winning_numbers, $combo, '', $index);
+                    }
 
-                if (Cache::add($key, $item->winning_numbers, 100)) {
-                    self::lotteryDraw($item->issue_no, $item->winning_numbers, $combo, '', $index);
+                    $pc28Switch = Config::where('field', 'pc28_switch')->first()->val;
+                    //更新游戏开关的切换
+                    if ($pc28Switch == 1) Config::setPc28Switch();
+
+                    $awards = IssueService::award(explode(',', $item->winning_numbers));
+                    //预测结果
+                    PcPrediction::result($item->issue_no, $item->winning_numbers, $awards);
+                    //自开奖以来的结果统计
+                    PcCao::updateData($awards);
+                    //每天开奖结果统计
+                    PcCaoHistory::updateData($awards);
+                    DB::commit();
+                } catch (\Exception $e) {
+                    Db::rollBack();
                 }
-
-                $pc28Switch = Config::where('field', 'pc28_switch')->first()->val;
-                //更新游戏开关的切换
-                if ($pc28Switch == 1) Config::setPc28Switch();
-
-                $awards = IssueService::award(explode(',', $item->winning_numbers));
-                //预测结果
-                PcPrediction::result($item->issue_no, $item->winning_numbers, $awards);
-                //自开奖以来的结果统计
-                PcCao::updateData($awards);
-                //每天开奖结果统计
-                PcCaoHistory::updateData($awards);
-
-
             }
         }
     }

+ 31 - 0
database/migrations/2025_12_11_101059_update_pc_prediction.php

@@ -0,0 +1,31 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('pc_prediction', function (Blueprint $table) {
+            $table->dateTime('time')->nullable()->comment('时间');
+        });
+
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        //
+    }
+};