package com.spot.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 现货订单实体类
 *
 * @author jean
 * @date 2026-05-06
 */
@Data
@TableName("ex_order")
public class ExOrder {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    private Integer userId;

    /**
     * 买卖方向：BUY-买入，SELL-卖出
     * @see com.spot.enums.OrderSide
     */
    private String side;

    /**
     * 委托价格（限价单）
     */
    private BigDecimal price;

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

    /**
     * 剩余未成交数量
     */
    private BigDecimal remainingVolume;

    /**
     * 挂单手续费率（Maker）
     */
    private Double feeRateMaker;

    /**
     * 吃单手续费率（Taker）
     */
    private Double feeRateTaker;

    /**
     * 累计手续费
     */
    private BigDecimal fee;

    /**
     * 手续费币种
     */
    private String feeCoin;

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

    /**
     * 累计成交金额
     */
    private BigDecimal dealMoney;

    /**
     * 成交均价
     */
    private BigDecimal avgPrice;

    /**
     * 订单状态：0-初始化，1-新建，2-已成交，3-部分成交，4-已撤单，5-撤单中，6-已过期
     * @see com.spot.enums.OrderStatus
     */
    private Integer status;

    /**
     * 订单类型：1-限价单，2-市价单，3-止损单
     * @see com.spot.enums.OrderType
     */
    private Integer type;

    /**
     * 创建时间
     */
    private LocalDateTime ctime;

    /**
     * 更新时间
     */
    private LocalDateTime mtime;

    /**
     * 订单来源：1-web，2-app，3-api
     */
    private Integer source;

    /**
     * 交易对符号（如：BTCUSDT）
     */
    private String symbol;

    /**
     * 退款数量（小额剩余退回用户的数量）
     */
    private BigDecimal refundVolume;
}
