Compare commits

...

2 Commits

Author SHA1 Message Date
张成
56e40efadb 1 2025-12-18 18:10:36 +08:00
张成
52489cdc86 1 2025-12-18 18:10:24 +08:00
3 changed files with 19 additions and 4 deletions

View File

@@ -92,6 +92,8 @@ module.exports = {
deviceName: accountData.name || accountData.sn_code, deviceName: accountData.name || accountData.sn_code,
platform: accountData.platform_type, platform: accountData.platform_type,
isOnline: onlineStatus.isOnline || false, isOnline: onlineStatus.isOnline || false,
is_online: onlineStatus.isOnline || false, // 前端使用的字段名
is_logged_in: onlineStatus.isLoggedIn || false, // 从 deviceManager 内存中获取登录状态
isRunning: false, // 不再维护运行状态 isRunning: false, // 不再维护运行状态
lastHeartbeatTime: onlineStatus.lastHeartbeat ? new Date(onlineStatus.lastHeartbeat) : null, lastHeartbeatTime: onlineStatus.lastHeartbeat ? new Date(onlineStatus.lastHeartbeat) : null,
accountName: accountData.name, accountName: accountData.name,

View File

@@ -288,8 +288,13 @@ class MqttDispatcher {
// return; // 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) { } catch (error) {
console.error('[MQTT心跳] 处理心跳消息失败:', error); console.error('[MQTT心跳] 处理心跳消息失败:', error);
} }

View File

@@ -64,14 +64,21 @@ class DeviceManager {
if (!this.devices.has(sn_code)) { if (!this.devices.has(sn_code)) {
this.devices.set(sn_code, { this.devices.set(sn_code, {
isOnline: true, isOnline: true,
isLoggedIn: heartbeatData.isLoggedIn || false,
lastHeartbeat: now, lastHeartbeat: now,
dailyCounts: { date: utils.getTodayString(), searchCount: 0, applyCount: 0, chatCount: 0 } dailyCounts: { date: utils.getTodayString(), searchCount: 0, applyCount: 0, chatCount: 0 }
}); });
console.log(`[设备管理器] 新设备 ${sn_code} 初始化 - isLoggedIn: ${heartbeatData.isLoggedIn}`);
} }
const device = this.devices.get(sn_code); const device = this.devices.get(sn_code);
device.isOnline = true; device.isOnline = true;
device.lastHeartbeat = now; device.lastHeartbeat = now;
// 更新登录状态
if (heartbeatData.isLoggedIn !== undefined) {
device.isLoggedIn = heartbeatData.isLoggedIn;
console.log(`[设备管理器] 设备 ${sn_code} 登录状态更新 - isLoggedIn: ${device.isLoggedIn}`);
}
} }
/** /**
@@ -181,6 +188,7 @@ class DeviceManager {
for (const [sn_code, device] of this.devices.entries()) { for (const [sn_code, device] of this.devices.entries()) {
result[sn_code] = { result[sn_code] = {
isOnline: device.isOnline, isOnline: device.isOnline,
isLoggedIn: device.isLoggedIn || false,
lastHeartbeat: device.lastHeartbeat, lastHeartbeat: device.lastHeartbeat,
dailyCounts: device.dailyCounts || {} dailyCounts: device.dailyCounts || {}
}; };