Procházet zdrojové kódy

fix insert exception

laowu před 1 dnem
rodič
revize
ade3e572c2
1 změnil soubory, kde provedl 18 přidání a 10 odebrání
  1. 18 10
      app/Services/SuperballActivityService.php

+ 18 - 10
app/Services/SuperballActivityService.php

@@ -6,6 +6,7 @@ use App\Facade\TableName;
 use App\Game\Services\OuroGameService;
 use App\Game\Services\OuroGameService;
 use App\Http\helper\NumConfig;
 use App\Http\helper\NumConfig;
 use Carbon\Carbon;
 use Carbon\Carbon;
+use Illuminate\Database\QueryException;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Redis;
 use Illuminate\Support\Facades\Redis;
 use App\Services\VipService;
 use App\Services\VipService;
@@ -602,16 +603,23 @@ class SuperballActivityService
             return $row;
             return $row;
         }
         }
         $lucky = mt_rand(0, 9);
         $lucky = mt_rand(0, 9);
-        DB::connection('write')->table(TableName::agent() . 'superball_daily')->insert([
-            'pool_date' => $date,
-            'pool_amount' => 0,
-            'total_balls' => 0,
-            'lucky_number' => $lucky,
-            'completed_count' => 0,
-            'lucky_count' => 0,
-            'created_at' => now()->format('Y-m-d H:i:s'),
-            'updated_at' => now()->format('Y-m-d H:i:s'),
-        ]);
+        try {
+            DB::connection('write')->table(TableName::agent() . 'superball_daily')->insert([
+                'pool_date' => $date,
+                'pool_amount' => 0,
+                'total_balls' => 0,
+                'lucky_number' => $lucky,
+                'completed_count' => 0,
+                'lucky_count' => 0,
+                'created_at' => now()->format('Y-m-d H:i:s'),
+                'updated_at' => now()->format('Y-m-d H:i:s'),
+            ]);
+        } catch (QueryException $e) {
+            // Concurrent getOrCreateDaily: unique index IX_superball_daily_date (pool_date)
+            if (stripos($e->getMessage(), 'duplicate key') === false) {
+                throw $e;
+            }
+        }
         return DB::table(TableName::agent() . 'superball_daily')->where('pool_date', $date)->first();
         return DB::table(TableName::agent() . 'superball_daily')->where('pool_date', $date)->first();
     }
     }