package com.youlai.boot.device.service; import com.youlai.boot.device.model.vo.DeviceOnlineVO; import java.util.List; import java.util.Map; /** * 设备在线状态服务 *

* 基于 Redis 记录设备在线/离线状态: *

* * @author TongTongStudio * @since 2026/8/8 */ public interface DeviceOnlineService { /** * 设备上报心跳,记录在线状态(刷新 Redis TTL) * * @param sn 设备序列号 * @param ip 设备 IP(可为空) */ void reportHeartbeat(String sn, String ip); /** * 设备上报心跳,记录在线状态(刷新 Redis TTL) * * @param sn 设备序列号 * @param ip 设备 IP(可为空) * @param screenState 屏幕状态(1:亮屏;0:熄屏;null:未知),可为空 */ void reportHeartbeat(String sn, String ip, Integer screenState); /** * 设备主动离线(如 MQTT Last Will / 关机通知) * * @param sn 设备序列号 */ void markOffline(String sn); /** * 查询单个设备是否在线 * * @param sn 设备序列号 * @return true=在线, false=离线 */ boolean isOnline(String sn); /** * 获取单个设备在线状态信息 * * @param sn 设备序列号 * @return 在线状态信息(离线时 online=0) */ DeviceOnlineVO getOnlineInfo(String sn); /** * 批量查询设备在线状态 * * @param sns 设备序列号集合 * @return key 为 SN,value 为在线状态信息 */ Map getOnlineStatusBySns(List sns); }