package com.seer.teach.netty.im.utils;

import lombok.extern.slf4j.Slf4j;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Slf4j
public class PushTimeStampUtils {

    /** 维护每个设备的最新时间戳（毫秒） */
    private static final Map<String, Long> DEVICE_TIME_MAP = new ConcurrentHashMap<>();

    /**
     * 更新设备时间戳为当前毫秒级时间戳
     * @param device 设备标识
     */
    public static void updateTimeStamp(String device) {
        log.info("更新设备时间戳：{}", device);
        DEVICE_TIME_MAP.put(device, System.currentTimeMillis());
    }

    /**
     * 获取设备上次更新时间戳（毫秒）
     * @param device 设备标识
     * @return 时间戳，如果没有记录则返回 0
     */
    public static long getTimeStamp(String device) {
        return DEVICE_TIME_MAP.getOrDefault(device, 0L);
    }

    /**
     * 判断当前时间是否晚于设备上次更新时间戳
     * @param device 设备标识
     * @return true 如果当前时间 > 上次时间戳
     */
    public static boolean isAfterLastTime(String device,long time) {
        long lastTime = getTimeStamp(device);
        return time >= lastTime;
    }

    /**
     * 清理设备时间戳（可选）
     * @param device 设备标识
     */
    public static void clearTimeStamp(String device) {
        if (device != null) {
            DEVICE_TIME_MAP.remove(device);
        }
    }
}
