package com.market.model;

import com.market.utils.SpotConstant;

import java.util.Map;

/**
 * 前端发来的基础消息（旧协议：event=sub/unsub/req）
 *
 * @author system
 * @date 2026-05-07
 */
public class SpotBaseMessage {

    /**
     * 操作：sub / unsub / req / sub_batch / unsub_batch
     */
    private String event;

    /** 参数 */
    private Map<String, Object> params;

    /** Pong 响应（心跳） */
    private Long pong;

    /**
     * 获取订阅 channel（从 params.channel 中提取）
     *
     * @return channel 名（小写），不存在时返回 null
     */
    public String getChannel() {
        if (params != null && params.containsKey(SpotConstant.PARAM_FIELD_CHANNEL)) {
            Object channel = params.get(SpotConstant.PARAM_FIELD_CHANNEL);
            return channel != null ? channel.toString().toLowerCase() : null;
        }
        return null;
    }

    /**
     * 获取币种（从 params.cb_id 中提取）
     *
     * @return 币种（小写），不存在时返回 null
     */
    public String getSymbol() {
        if (params != null && params.containsKey(SpotConstant.PARAM_FIELD_CB_ID)) {
            Object cbId = params.get(SpotConstant.PARAM_FIELD_CB_ID);
            return cbId != null ? cbId.toString().toLowerCase() : null;
        }
        return null;
    }

    public String getEvent() { return event; }
    public void setEvent(String event) { this.event = event; }
    public Map<String, Object> getParams() { return params; }
    public void setParams(Map<String, Object> params) { this.params = params; }
    public Long getPong() { return pong; }
    public void setPong(Long pong) { this.pong = pong; }
}
