From 52489cdc86ef4d1f2aa63d7edaa69a73a747cd61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=88=90?= Date: Thu, 18 Dec 2025 18:10:24 +0800 Subject: [PATCH] 1 --- api/controller_admin/device_monitor.js | 6 ++++-- api/middleware/mqtt/mqttDispatcher.js | 9 +++++++-- api/middleware/schedule/deviceManager.js | 6 ++++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/api/controller_admin/device_monitor.js b/api/controller_admin/device_monitor.js index 8e72ce3..3326606 100644 --- a/api/controller_admin/device_monitor.js +++ b/api/controller_admin/device_monitor.js @@ -80,11 +80,11 @@ module.exports = { } const accountData = account.toJSON(); - + // 从 deviceManager 获取在线状态 const deviceStatus = deviceManager.getAllDevicesStatus(); const onlineStatus = deviceStatus[deviceSn] || { isOnline: false }; - + // 组合返回数据 const deviceData = { sn_code: accountData.sn_code, @@ -92,6 +92,8 @@ module.exports = { deviceName: accountData.name || accountData.sn_code, platform: accountData.platform_type, isOnline: onlineStatus.isOnline || false, + is_online: onlineStatus.isOnline || false, // 前端使用的字段名 + is_logged_in: onlineStatus.isLoggedIn || false, // 从 deviceManager 内存中获取登录状态 isRunning: false, // 不再维护运行状态 lastHeartbeatTime: onlineStatus.lastHeartbeat ? new Date(onlineStatus.lastHeartbeat) : null, accountName: accountData.name, diff --git a/api/middleware/mqtt/mqttDispatcher.js b/api/middleware/mqtt/mqttDispatcher.js index a27f81e..8355bc5 100644 --- a/api/middleware/mqtt/mqttDispatcher.js +++ b/api/middleware/mqtt/mqttDispatcher.js @@ -288,8 +288,13 @@ class MqttDispatcher { // return; // } - // 记录心跳到设备管理器 - await deviceManager.recordHeartbeat(sn_code, heartbeatData); + // 记录心跳到设备管理器(包含登录状态) + const heartbeatPayload = { + isLoggedIn: updateData.isLoggedIn || false, + ...heartbeatData + }; + console.log(`[MQTT心跳] 传递给 deviceManager 的数据:`, { sn_code, isLoggedIn: heartbeatPayload.isLoggedIn }); + await deviceManager.recordHeartbeat(sn_code, heartbeatPayload); } catch (error) { console.error('[MQTT心跳] 处理心跳消息失败:', error); } diff --git a/api/middleware/schedule/deviceManager.js b/api/middleware/schedule/deviceManager.js index 3d59f44..708a38b 100644 --- a/api/middleware/schedule/deviceManager.js +++ b/api/middleware/schedule/deviceManager.js @@ -64,6 +64,7 @@ class DeviceManager { if (!this.devices.has(sn_code)) { this.devices.set(sn_code, { isOnline: true, + isLoggedIn: heartbeatData.isLoggedIn || false, lastHeartbeat: now, dailyCounts: { date: utils.getTodayString(), searchCount: 0, applyCount: 0, chatCount: 0 } }); @@ -72,6 +73,10 @@ class DeviceManager { const device = this.devices.get(sn_code); device.isOnline = true; device.lastHeartbeat = now; + // 更新登录状态 + if (heartbeatData.isLoggedIn !== undefined) { + device.isLoggedIn = heartbeatData.isLoggedIn; + } } /** @@ -181,6 +186,7 @@ class DeviceManager { for (const [sn_code, device] of this.devices.entries()) { result[sn_code] = { isOnline: device.isOnline, + isLoggedIn: device.isLoggedIn || false, lastHeartbeat: device.lastHeartbeat, dailyCounts: device.dailyCounts || {} };