Files
Socket/app/services/connect/SpaceConnectService.php
T
testadmin d77c6beac7 feat: add logging module for backend + frontend error reporting
Backend:
- New Logger utility (app/utils/Logger.php) with category-based log files
  (connect/game/bet/error/frontend under runtime/log/)
- Log WebSocket connect/close events (WsConnect, WsClose)
- Log dealer auth success/failure (SpaceConnectService)
- Log all game events: startBet, endBet, changeBoot, opening for all 7 game types
- Log unhandled exceptions (ExceptionHandle)
- Separate SQL/error logs via apart_level, enable realtime_write for Swoole
- Add /log/report POST endpoint for frontend error ingestion

Frontend:
- New error-report.js with window.onerror + unhandledrejection auto-reporting
- Added to all 12 dealer HTML templates
- Bump VERSION_V to v10.1.0
2026-05-14 11:28:33 +08:00

65 lines
2.7 KiB
PHP

<?php
namespace app\services\connect;
use app\models\table\Table;
use app\models\table\UserController;
use app\utils\Logger;
use freedom\utils\SocketSession;
use think\Request;
/**
* TODO 控制台登录服务
* Class SpaceConnectService
* @package app\services\connect
*/
class SpaceConnectService
{
/**
* TODO 控制台登录处理
* @param Request $event
* @return void
*/
public static function doSpaceConnect(Request $event){
/*
$redis = Cache::store('redis')->handler();
//设置哈希
$redis->hset('123456','yzm','4566');
//设置过期时间
$redis->expire('123456',60);
*/
$ws = app('\think\swoole\WebSocket');
$tableId = intval($event->get('table_id'));
$tableInfo = Table::get($tableId);
$userId = intval($event->get('userid'));
$loginToken = trim($event->get('login_token'));
$username = trim($event->get('account'));
$userController = UserController::get(['id' => $userId, 'username' => $username, 'login_token' => $loginToken]);
if (!$tableInfo || !$userController){
Logger::warn(Logger::CAT_CONNECT, 'space_auth_fail', ['table_id' => $tableId, 'username' => $username, 'has_table' => !!$tableInfo, 'has_user' => !!$userController]);
$ws->emit('onlineLogin',['status' => false, 'msg' => 'not_table_data']);
return;
}
$lastNumberTab = InitTableService::initTable($tableInfo);
if($lastNumberTab){
$round = array();
$round['boot_id'] = $lastNumberTab['boot_id'];
$round['boot_num'] = $lastNumberTab['boot_num'];
$round['number_tab_id'] = $lastNumberTab['id'];
$round['number_tab_number'] = $lastNumberTab['number'];
$round['in_checkout'] = $tableInfo['in_checkout'];
$round['number_tab_status'] = InitTableService::numberTabStatus($lastNumberTab);
$round['show_card'] = GetCardService::getCard($tableInfo,$lastNumberTab);
$ws->emit('onlineLogin',['status' => true, 'table_id' => $tableInfo['id'], 'round' => $round]);
SocketSession::saveSocketSession(['table_id' => $tableInfo['id'], 'table_name' => $tableInfo['table_name']],'space');
Logger::info(Logger::CAT_CONNECT, 'space_login_ok', ['table_id' => $tableInfo['id'], 'table_name' => $tableInfo['table_name'], 'username' => $username]);
}else{
Logger::warn(Logger::CAT_CONNECT, 'space_init_fail', ['table_id' => $tableId, 'username' => $username]);
$ws->emit('onlineLogin',['status' => false, 'table_id' => $tableInfo['id'], 'msg' => 'link_server_fail']);
//$ws->close();
}
}
}