package com.spot.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.spot.entity.ConfigSymbol;

import java.util.List;

/**
 * 交易对配置服务接口
 *
 * @author jean
 * @date 2026-05-06
 */
public interface ConfigSymbolService extends IService<ConfigSymbol> {

    /**
     * 获取所有开放交易的交易对（isOpen = 1）
     *
     * @return 开放交易的交易对列表
     */
    List<ConfigSymbol> getOpenSymbols();

    /**
     * 获取已开启且已发布的交易对列表（isOpen=1 且 publish=1），按 sort 升序
     * 支持按分类和标签过滤，传 null 则不过滤
     *
     * @param category 分类码，见 {@link com.spot.enums.SymbolCategoryEnum}，null 不过滤
     * @param label    标签码字符串，见 {@link com.spot.enums.SymbolTagEnum}，null 不过滤
     * @return 已发布交易对列表
     */
    List<ConfigSymbol> getPublishedSymbols(Integer category, String label);

    /**
     * 获取指定交易对配置（带本地缓存）
     *
     * @param symbol 交易对符号
     * @return 交易对配置，不存在返回null
     */
    ConfigSymbol getConfigSymbol(String symbol);

    /**
     * 获取所有交易对（管理员用，不过滤状态）
     */
    List<ConfigSymbol> getAllSymbols();
}
