From a4768d49b0c9ba3cb2f0b7e614c5c4a274d35c63 Mon Sep 17 00:00:00 2001 From: v Date: Thu, 28 Aug 2025 22:40:30 +0800 Subject: [PATCH] up. ws update. --- app/command/admin/Worker.php | 15 ++++++++ z_ele/src/layout/components/lock-dialog.vue | 39 +++++++++++++-------- z_ele/src/plugins/websocket/types.ts | 3 +- z_ele/src/store/modules/user.ts | 8 +++-- 4 files changed, 48 insertions(+), 17 deletions(-) diff --git a/app/command/admin/Worker.php b/app/command/admin/Worker.php index 820ef73..42a0e5e 100644 --- a/app/command/admin/Worker.php +++ b/app/command/admin/Worker.php @@ -3,6 +3,7 @@ namespace app\command\admin; +use app\entity\SysUserClient; use app\service\admin\LoginService; use think\console\Command; use think\console\Input; @@ -51,16 +52,30 @@ class Worker extends Command if($messageJson) { if($messageJson['event'] == 'bind_connect_id') { $authorization = $messageJson['data']['token'] ?? ''; + $clientId = $messageJson['data']['clientId'] ?? ''; + $clientName = $messageJson['data']['clientName'] ?? ''; + $clientVersion = $messageJson['data']['clientVersion'] ?? ''; $authorization = str_replace('Bearer ', '', $authorization); $loginSrv = new LoginService(); $auth = $loginSrv->checkUserAccessToken($authorization); var_dump("当前用户: ".$auth->userId); + // 用户信息 $connection->userId = $auth->userId; + // 客户端信息 + $connection->clientId = $clientId; + $connection->clientName = $clientName; + $connection->clientVersion = $clientVersion; + // 绑定成功通知 $connection->send(json_encode(['event'=>'bind_connect_id_success','userId'=>$auth->userId])); } if ($messageJson['event'] == 'lock_client_screen') { if($connection->userId) { + $lock_password = $messageJson['data']['lockPassword'] ?? ''; var_dump("锁定客户端/通知全部ws触发锁定操作"); + SysUserClient::where([ + 'client_id' => $connection->clientId, + 'client_name'=> $connection->clientName + ])->update(['is_lock'=>1,'lock_password'=>$lock_password,'lock_time'=>date('Y-m-d H:i:s')]); } } } diff --git a/z_ele/src/layout/components/lock-dialog.vue b/z_ele/src/layout/components/lock-dialog.vue index 66bd0e0..48c1ade 100644 --- a/z_ele/src/layout/components/lock-dialog.vue +++ b/z_ele/src/layout/components/lock-dialog.vue @@ -11,26 +11,37 @@ :close-on-press-escape="false" :close-on-click-modal="false" > - -
- 锁定客户端 + +
+ 锁定客户端
diff --git a/z_ele/src/plugins/websocket/types.ts b/z_ele/src/plugins/websocket/types.ts index 65ce5d4..115e223 100644 --- a/z_ele/src/plugins/websocket/types.ts +++ b/z_ele/src/plugins/websocket/types.ts @@ -6,7 +6,8 @@ export enum WsEvent { } export enum WsSendEventType { - BIND_CONNECT_ID = 'bind_connect_id' + BIND_CONNECT_ID = 'bind_connect_id', + LOCK_CLIENT_SCREEN = 'lock_client_screen', } export enum WsConnectionStatus { diff --git a/z_ele/src/store/modules/user.ts b/z_ele/src/store/modules/user.ts index 10cee90..b618686 100644 --- a/z_ele/src/store/modules/user.ts +++ b/z_ele/src/store/modules/user.ts @@ -9,7 +9,7 @@ import type { User } from '@/api/system/user/model'; import type { Menu } from '@/api/system/menu/model'; import type { DictionaryData } from '@/api/system/dictionary-data/model'; import { getUserInfo } from '@/api/layout'; -import { getToken } from '@/utils/token-util'; +import {getClientInfo, getToken} from '@/utils/token-util'; import { WsEventContext, wsEventManager, @@ -79,9 +79,13 @@ export const useUserStore = defineStore('user', { wsEventManager.subscribe(WsEvent.CONNECTED, (sub: WsEventContext) => { console.log('事件执行, 绑定连接和用户关系'); // 绑定用户到websocket的connect_id中 + const clientInfo = getClientInfo(); wsInstance.sendMessage(WsSendEventType.BIND_CONNECT_ID, { token: getToken(), - userId: result.userId + userId: result.userId, + clientId: clientInfo.id, + clientName: clientInfo.name, + clientVersion: clientInfo.version }); }); return { menus, homePath };