package com.seer.teach.netty.im.handler.mq;

import com.seer.teach.common.dto.mq.MqDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * MqCommond主题接口处理类
 * <p>
 * MqCommond主题接口处理类
 * </p>
 *
 * @author Captain
 * @version 1.0
 * @since 2025-07-16 19:55
 */
public interface ImBusinessHandler<T extends MqDTO> {
    /**
     * 处理指定消息体
     *
     * @param messageBody 消息 JSON 字符串或纯文本
     */
    void handle(T messageBody,String device);


    /*泛型类型绑定*/
    Class<T> getType();

    /**
     * 返回对应处理的 tag
     */
    String getTag();


    /**
     * 包装方法：带日志的 handle
     */
    default void handleWithLog(T messageBody, String device) {
        Logger log = LoggerFactory.getLogger(getClass());
        log.info("\n====== MQ 收到指令 ======\n" +
                        "设备       : {}\n" +
                        "Tag        : {}\n" +
                        "======================",
                device, getTag());
        handle(messageBody, device);
    }
}