ソースを参照

add new games

Tree 18 時間 前
コミット
325acbd047
2 ファイル変更131 行追加0 行削除
  1. 128 0
      app/Http/Controllers/Game/HacksawController.php
  2. 3 0
      routes/game.php

+ 128 - 0
app/Http/Controllers/Game/HacksawController.php

@@ -0,0 +1,128 @@
+<?php
+
+namespace App\Http\Controllers\Game;
+
+use App\Game\GameCard;
+use App\Game\GlobalUserInfo;
+use App\Game\LogGamecardClick;
+use App\Game\Services\OuroGameService;
+use App\Models\AccountsInfo;
+use App\Notification\TelegramBot;
+use App\Util;
+use Illuminate\Http\Request;
+use Illuminate\Routing\Controller;
+use Illuminate\Support\Facades\Redis;
+
+class HacksawController extends Controller
+{
+    /** gid => version(与 CDN 静态资源目录一致) */
+    private static $gameVersions = [
+        '1632' => '1.34.2',   // Speed Crash
+        '1624' => '1.43.2',   // Limbo
+        '1590' => '1.30.0',   // Dice
+        '1446' => '1.59.1',   // Baccarat
+        '1416' => '1.30.1',   // Twenty-One
+        '1386' => '1.36.2',   // Colors
+        '1380' => '1.34.1',   // Blocks
+        '1321' => '1.41.0',   // Wheel
+        '1334' => '1.41.1',   // Lines
+        '1148' => '1.27.3',   // Coins
+        '1294' => '1.88.1',   // Plinko
+        '1328' => '1.43.0',   // Hi-Lo
+        '1126' => '1.135.0',  // Mines
+        '1154' => '1.68.1',   // Boxes
+    ];
+
+    /**
+     * Hacksaw 子游戏载入入口
+     * 请求: /game/hacksaw/lunch?gid=1632
+     */
+    public function gameLunch(Request $request)
+    {
+        $gid = (string) $request->input('gid');
+        $user = $request->user();
+        $userid = $user->UserID;
+
+        $version = self::$gameVersions[$gid] ?? null;
+        if ($version === null) {
+            abort(404, 'Hacksaw game version not configured for gid: ' . $gid);
+        }
+
+        GameCard::$enableStateCheck = false;
+        $gamecard = GameCard::where('gid', $gid)->where('brand', 'Hacksaw')->first();
+        if (!$gamecard) {
+            abort(404, 'Game not found');
+        }
+
+        $in_gameid = OuroGameService::getUserInGame($userid, $user->GlobalUID);
+        if ($in_gameid != intval($gamecard->id)) {
+            Util::WriteLog('24680game', compact('in_gameid', 'gamecard', 'user'));
+        }
+
+        $gamecard->increment('play_num', 1);
+        LogGamecardClick::recordClick($gamecard->id, $userid);
+
+        $lang = GlobalUserInfo::getLocale();
+        $supportLang = ['en', 'da', 'de', 'es', 'fi', 'fr', 'id', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'ro', 'ru', 'sv', 'th', 'tr', 'vi', 'zh', 'my'];
+        if (!in_array($lang, $supportLang)) {
+            $lang = 'en';
+        }
+
+        $configurls = json_decode(env('CONFIG_GAMES'), true);
+        $configurl = $configurls['hacksaw'] ?? $configurls['hkg'] ?? null;
+        if (!$configurl) {
+            $staticHost = 'static.pgn-nmu2nd.com';
+            $apiHost = 'api.pgn-nmu2nd.com';
+        } else {
+            $staticHost = $configurl['source'] ?? 'static.pgn-nmu2nd.com';
+            $apiHost = $configurl['api'] ?? 'api.pgn-nmu2nd.com';
+        }
+
+        $cdnserver = 'https://' . $staticHost;
+        $apiBase = 'https://' . $apiHost . '/api';
+        $lobbyurl = $cdnserver;
+//        $sign = GlobalUserInfo::genGuuidSign($user);
+        $newToken = base64_encode(random_bytes(20));
+
+        $Currency = env("CONFIG_24680_CURRENCY", "BRL");
+        $CurrencySymbol = env("CONFIG_24680_DOLLAR", "R$");
+
+
+        $data['currency'] = $Currency;
+        $data['dollar'] = $CurrencySymbol;
+
+        $data['limit_room']=0;
+
+        $account = AccountsInfo::where('UserID', $userid)->first();
+        if(!$account){
+            TelegramBot::getDefault()->sendMsgWithEnv("hawksaw_ fail11111:" . json_encode([$request->all(),$data]) );
+            abort(404, 'User not found');
+        }else{
+            $account=$account->toArray();
+        }
+        $data = array_merge($data, $account);
+
+        Redis::setex($newToken, 7200, json_encode($data));
+
+        $params = [
+            'language'     => $lang,
+            'channel'      => 'mobile',
+            'gameid'       => $gid,
+            'mode'         => 2,
+            'token'        => $newToken,
+            'lobbyurl'     => $lobbyurl,
+            'currency'     => env('CONFIG_24680_CURRENCY', 'EUR'),
+            'partner'      => 'demo',
+            'env'          => $apiBase,
+            'realmoneyenv' => $apiBase,
+        ];
+
+        $url = $cdnserver . '/' . $gid . '/' . $version . '/index.html?' . http_build_query($params);
+
+
+        return "<script>
+parent.postMessage({cmd:\"closeLoading\"},\"*\");
+location.href='$url';
+</script>";
+    }
+}

+ 3 - 0
routes/game.php

@@ -265,6 +265,9 @@ Route::group([
 
     $route->any('/pgsoft/lunch', 'Game\PgSimController@gameLunch');
     $route->any('/jiligame/lunch', 'Game\JiliSimController@gameLunch');
+
+    $route->any('/hacksaw/lunch', 'Game\HacksawController@gameLunch');
+
     //测试
     $route->any('/pg/lunch', 'Game\PgSoftTestController@gameLunch');