package xtools.boot.mq.base.utils;

import com.alibaba.fastjson2.JSONObject;
import xtools.boot.api.model.dto.log.LogTrack;
import xtools.boot.mq.base.model.dto.MessageDto;

import java.io.Serializable;

/**
 * <p>Title : MqMessageUtils</p>
 * <p>Description : MqMessageUtils</p>
 * <p>DevelopTools : Idea_x64_v2026.1</p>
 * <p>DevelopSystem : macOS Sequoia 15.7.5</p>
 * <p>Company : org.xujun</p>
 *
 * @author : XuJun
 * @version : 5.0.0
 * @date : 2026/2/11 19:56
 */
public class MqMessageUtils implements Serializable {


    /**
     * 消息包数据 Key
     */
    private static final String LOG = "log";
    private static final String DATA = "data";

    /**
     * 构建消息包
     *
     * @param data     消息内容
     * @param logTrack 日志追踪信息
     * @return java.lang.String
     **/
    public static JSONObject to(Object data, LogTrack logTrack) {
        return JSONObject.of(LOG, logTrack, DATA, data);
    }

    /**
     * 解析消息包
     *
     * @param message 消息包
     * @param clazz   消息内容类型
     * @return MessageDto<T>
     **/
    public static <T> MessageDto<T> from(String message, Class<T> clazz) {
        JSONObject msg = JSONObject.parseObject(message);
        LogTrack log = msg.getObject(LOG, LogTrack.class);
        T data = msg.getObject(DATA, clazz);
        return new MessageDto<>(log, data);
    }
}
