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.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 交易对配置实体类
 *
 * @author jean
 * @date 2026-05-06
 */
@Data
@TableName("config_symbol")
public class ConfigSymbol implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

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

    /**
     * 基准货币（如：BTC）
     */
    private String base;

    /**
     * 计价货币（如：USDT）
     */
    private String quote;

    /**
     * 是否开启：1-开启，2-关闭
     */
    private Integer isOpen;

    /**
     * Taker 手续费率
     */
    private BigDecimal takerFee;

    /**
     * Maker 手续费率
     */
    private BigDecimal makerFee;

    /**
     * 单用户委托单数量上限
     */
    private Integer maxOrdersPerUser;

    /**
     * 单日交易额上限（USDT）
     */
    private BigDecimal dailyVolumeLimit;

    /**
     * 开盘价
     */
    private BigDecimal openPrice;

    /**
     * 深度档位精度0
     */
    private Long depth0Pre;

    /**
     * 深度档位精度1
     */
    private Long depth1Pre;

    /**
     * 深度档位精度2
     */
    private Long depth2Pre;

    /**
     * 价格精度（小数位数）
     */
    private Integer pricePre;

    /**
     * 数量精度（小数位数）
     */
    private Integer volumePre;

    /**
     * 限价单最小价格
     */
    private BigDecimal limitPriceMin;

    /**
     * 限价单最小数量
     */
    private BigDecimal limitVolumeMin;

    /**
     * 市价买最小值
     */
    private BigDecimal marketBuyMin;

    /**
     * 市价卖最小值
     */
    private BigDecimal marketSellMin;

    /**
     * 交易对分类码，NULL 表示未分类
     * @see com.spot.enums.SymbolCategoryEnum
     * 取值：1-主流币，2-创新区，3-新币，4-观察区
     */
    private Integer category;

    /**
     * 交易对标签码（字符串），NULL 或空表示无标签
     * @see com.spot.enums.SymbolTagEnum
     * 取值：1-减半，2-上新，3-热门，4-ETF
     */
    private Integer label;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 描述
     */
    private String description;

    /**
     * 创建时间戳
     */
    private Long createTime;

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

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

    /**
     * 是否自定义：1-自定义，2-非自定义
     */
    private Integer customize;

    /**
     * 是否发布：1-已发布，2-未发布
     */
    private Integer publish;
}
