package com.ruoyi.common.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * 日志参数持有者，用于在当前线程中传递参数到日志切面
 */
public class LogParamHolder {
    
    private static final ThreadLocal<Map<String, Object>> PARAM_HOLDER = ThreadLocal.withInitial(HashMap::new);

    public static final String DEVICE_LON = "deviceLon";    // 设备经度
    public static final String DEVICE_LAT = "deviceLat";    // 设备纬度
    public static final String DEVICE_ID = "deviceId";      // 设备ID、
    public static final String PARAM_LON = "paramLon";      // 参数经度
    public static final String PARAM_LAT = "paramLat";      // 参数纬度
    public static final String IOT_STATUS = "iotStatus";    // 物联网状态

    /**
     * 设置参数
     *
     * @param key 参数键
     * @param value 参数值
     */
    public static void set(String key, Object value) {
        PARAM_HOLDER.get().put(key, value);
    }

    /**
     * 获取参数
     *
     * @param key 参数键
     * @return 参数值
     */
    public static Object get(String key) {
        return PARAM_HOLDER.get().get(key);
    }

    /**
     * 获取所有参数
     *
     * @return 参数Map
     */
    public static Map<String, Object> getAll() {
        return PARAM_HOLDER.get();
    }

    /**
     * 清除当前线程的参数
     */
    public static void clear() {
        PARAM_HOLDER.remove();
    }
    
}