request ? $this->request->get('record_id') : null; $recordId = is_numeric((string) $recordIdRaw) ? (int) $recordIdRaw : null; return $this->success('', GameLiveService::buildSnapshot($recordId)); } public function snapshot(WebmanRequest $request): Response { $response = $this->initializeBackend($request); if ($response !== null) { return $response; } $recordIdRaw = $request->get('record_id'); $recordId = is_numeric((string) $recordIdRaw) ? (int) $recordIdRaw : null; return $this->success('', GameLiveService::buildSnapshot($recordId)); } public function pushConfig(WebmanRequest $request): Response { $response = $this->initializeBackend($request); if ($response !== null) { return $response; } $ws = (string) config('plugin.webman.push.app.websocket'); $ws = str_replace('websocket://', 'ws://', $ws); $ws = str_replace('0.0.0.0', '127.0.0.1', $ws); return $this->success('', [ 'url' => $ws, 'app_key' => (string) config('plugin.webman.push.app.app_key'), 'channel' => 'game-live', 'event' => 'bet-updated', ]); } public function calculate(WebmanRequest $request): Response { $response = $this->initializeBackend($request); if ($response !== null) { return $response; } if ($request->method() !== 'POST') { return $this->error(__('Parameter error')); } $recordIdRaw = $request->post('record_id'); $recordId = is_numeric((string) $recordIdRaw) ? (int) $recordIdRaw : null; $manualRaw = $request->post('manual_number'); $manualNumber = is_numeric((string) $manualRaw) ? (int) $manualRaw : null; $res = GameLiveService::calculateResult($recordId, $manualNumber); if (!($res['ok'] ?? false)) { $errMsg = $res['msg'] ?? null; return $this->error(is_string($errMsg) ? $errMsg : __('Calculation failed')); } $okMsg = $res['msg'] ?? ''; return $this->success(is_string($okMsg) ? $okMsg : '', $res); } /** * 预约本期开奖号码(倒计时结束后自动开奖,不立即开奖)。 */ public function draw(WebmanRequest $request): Response { $response = $this->initializeBackend($request); if ($response !== null) { return $response; } if ($request->method() !== 'POST') { return $this->error(__('Parameter error')); } $recordIdRaw = $request->post('record_id'); $recordId = is_numeric((string) $recordIdRaw) ? (int) $recordIdRaw : null; $manualRaw = $request->post('manual_number'); if (!is_numeric((string) $manualRaw)) { return $this->error(__('Please enter the draw number')); } $manualNumber = (int) $manualRaw; $res = GameLiveService::scheduleDraw($recordId, $manualNumber); if (!($res['ok'] ?? false)) { $errMsg = $res['msg'] ?? null; return $this->error(is_string($errMsg) ? $errMsg : __('Schedule failed')); } $okMsg = $res['msg'] ?? ''; return $this->success(is_string($okMsg) ? $okMsg : '', $res); } }