package com.ruoyi.mqtt.service;

import com.ruoyi.common.model.MqttMessage;
import com.ruoyi.system.service.IKaoqinRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

/**
 * MQTT消息监听器
 *
 * <p>通过Spring事件机制接收MQTT消息，可以添加自定义的业务逻辑来处理接收到的消息。
 * 可以创建多个不同的监听器来处理不同主题或类型的消息。</p>
 *
 * @author andy
 * @version 1.0.0
 * @since 2025-06-17
 */
@Slf4j
@Component
public class MqttMessageListener {

    @Autowired
    private IKaoqinRecordService kaoqinRecordService;


    /**
     * 处理接收到的MQTT消息
     *
     * @param message MQTT消息对象
     */
    @EventListener
    public void handleMqttMessage(MqttMessage message) {
        log.info("收到MQTT消息事件: 主题={}, 消息内容={}", message.getTopic(), message.getPayload());
        // TODO: 添加自定义的业务逻辑来处理消息
        /**
         * 返回值为
         {
         "filename":"文件名（id_name）",
         "time":"时间"
         }
         */


        // 例如：解析JSON消息内容，更新数据库，触发其他操作等

        // 可以根据主题进行不同的处理
        if (message.getTopic().equals("toServer_punchStat")) {
            kaoqinRecordService.faceDate(message);
        }
    }



    /**
     * 处理设备相关消息
     *
     * @param message MQTT消息
     */
    private void handleDeviceMessage(MqttMessage message) {
        // 设备消息处理逻辑
        log.debug("处理设备消息: {}", message.getPayload());
    }

    /**
     * 处理告警相关消息
     *
     * @param message MQTT消息
     */
    private void handleAlertMessage(MqttMessage message) {
        // 告警消息处理逻辑
        log.debug("处理告警消息: {}", message.getPayload());
    }
}
