Files
Socket/app/services/connect/UserConnectService.php
T
OG Backup 2cd31285f0 backup: 线上最终版本全量备份
包含所有线上运行的改动:
- 荷官端倒计时卡顿修复(CountdownService TTL+10/前端watchdog)
- 停止下注debounce防重复(8个handle.js)
- 洗码量规则重写(单边/双边/开和不计/百家乐+龙虎)
- 龙虎和局不杀庄闲(全额退回)
- 日志系统(Logger工具类/日志查看/清理脚本)
- 好路提醒异常处理(WaybillRemindService try-catch)
- 扫牌器连接改进(ScanConnectService)
- 牛牛/三卡开牌修复
- .gitignore更新/.DS_Store清理
2026-06-14 14:20:43 +08:00

46 lines
1.8 KiB
PHP

<?php
namespace app\services\connect;
use app\models\user\User;
use app\utils\Logger;
use freedom\utils\SocketSession;
use think\Request;
/**
* TODO 会员登录服务
* Class UserConnectService
* @package app\services\connect
*/
class UserConnectService
{
/**
* TODO 控制台登录处理
* @param Request $event
* @return void
*/
public static function doUserConnect(Request $event){
$ws = app('\think\swoole\WebSocket');
$userId = intval($event->get('userid'));
$loginToken = trim($event->get('login_token'));
$username = trim($event->get('account'));
if(isset($username) && isset($loginToken) && isset($userId) && $userId > 0){
$userInfo = User::get(['id' => $userId, 'status' => 1, 'is_delete' => 0]);
if($userInfo && $userInfo['login_token'] == $loginToken && $username == $userInfo['username']){
SocketSession::saveSocketSession(['user_id' => $userId, 'username' => $username],'user');
$ws->emit('onlineLogin',['status' => true, 'money' => $userInfo['money']]);
Logger::info(Logger::CAT_CONNECT, 'user_login_success', ['user_id' => $userId, 'username' => $username]);
}else{
$ws->emit('onlineLogin',['status' => false, 'money' => 0, 'msg' => 'link_server_fail']);
$ws->close();
Logger::warn(Logger::CAT_CONNECT, 'user_login_auth_fail', ['user_id' => $userId, 'username' => $username, 'reason' => 'token_or_user_mismatch']);
}
}else{
$ws->emit('onlineLogin',['status' => false, 'money' => 0, 'msg' => 'link_server_fail']);
$ws->close();
Logger::warn(Logger::CAT_CONNECT, 'user_login_param_missing', ['user_id' => $userId, 'username' => $username ?? '']);
}
}
}