package com.market.model;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 资产/订单变动推送响应体
 *
 * @author system
 * @date 2026-05-07
 */
@Data
public class SpotAssetOrderChangeResp implements Serializable {

    /** 消息类型：asset=资产变动，order=订单变动 */
    private String type;

    /** 账户资产列表（type=asset 时填充） */
    private List<AccountAsset> accountList;

    /** 订单列表（type=order 时填充） */
    private List<OrderInfo> orderList;

    /** 订单总数 */
    private Long orderCount = 0L;

    /**
     * 账户资产信息
     */
    @Data
    public static class AccountAsset implements Serializable {

        /** 币种符号 */
        private String symbol;

        /** 可用余额 */
        private BigDecimal available;

        /** 冻结余额 */
        private BigDecimal frozen;

        /** 总余额 */
        private BigDecimal total;
    }

    /**
     * 订单信息
     */
    @Data
    public static class OrderInfo implements Serializable {

        /** 订单ID */
        private Long orderId;

        /** 交易对 */
        private String symbol;

        /** 买卖方向：BUY / SELL */
        private String side;

        /** 订单类型：1=限价，2=市价 */
        private Integer type;

        /** 委托价格 */
        private BigDecimal price;

        /** 委托数量 */
        private BigDecimal volume;

        /** 成交数量 */
        private BigDecimal dealVolume;

        /**
         * 订单状态
         * @see com.market.spot.enums.OrderStatus
         */
        private Integer status;
    }
}
