package com.ycwl.basic.pricing.service;

import com.ycwl.basic.pricing.entity.PriceProductConfig;
import com.ycwl.basic.pricing.entity.PriceTierConfig;

import java.util.List;

/**
 * 商品配置管理服务接口
 */
public interface IProductConfigService {
    
    /**
     * 根据商品类型获取基础配置（兼容旧接口）
     * 
     * @param productType 商品类型
     * @return 商品配置列表
     */
    List<PriceProductConfig> getProductConfig(String productType);
    
    /**
     * 根据商品类型和商品ID获取精确配置
     * 
     * @param productType 商品类型
     * @param productId 具体商品ID
     * @return 商品配置
     */
    PriceProductConfig getProductConfig(String productType, String productId);
    
    /**
     * 根据商品类型、商品ID和数量获取阶梯价格配置
     * 
     * @param productType 商品类型
     * @param productId 具体商品ID
     * @param quantity 数量
     * @return 阶梯价格配置
     */
    PriceTierConfig getTierConfig(String productType, String productId, Integer quantity);
    
    /**
     * 获取所有启用的商品配置
     * 
     * @return 商品配置列表
     */
    List<PriceProductConfig> getActiveProductConfigs();
    
    /**
     * 获取所有商品配置（仅启用的）
     * 
     * @return 商品配置列表
     */
    List<PriceProductConfig> getAllProductConfigs();
    
    /**
     * 根据商品类型获取所有阶梯配置
     * 
     * @param productType 商品类型
     * @return 阶梯配置列表
     */
    List<PriceTierConfig> getTierConfigs(String productType);
    
    /**
     * 根据商品类型和商品ID获取所有阶梯配置
     * 
     * @param productType 商品类型
     * @param productId 具体商品ID
     * @return 阶梯配置列表
     */
    List<PriceTierConfig> getTierConfigs(String productType, String productId);
    
    /**
     * 获取所有启用的阶梯配置
     * 
     * @return 阶梯配置列表
     */
    List<PriceTierConfig> getAllTierConfigs();
    
    // ==================== 管理端接口（包含禁用的配置） ====================
    
    /**
     * 获取所有商品配置（包含禁用的）- 管理端使用
     * 
     * @return 商品配置列表
     */
    List<PriceProductConfig> getAllProductConfigsForAdmin();
    
    /**
     * 获取所有阶梯配置（包含禁用的）- 管理端使用
     * 
     * @return 阶梯配置列表
     */
    List<PriceTierConfig> getAllTierConfigsForAdmin();
    
    /**
     * 根据商品类型获取所有阶梯配置（包含禁用的）- 管理端使用
     * 
     * @param productType 商品类型
     * @return 阶梯配置列表
     */
    List<PriceTierConfig> getTierConfigsForAdmin(String productType);
    
    /**
     * 根据商品类型和商品ID获取所有阶梯配置（包含禁用的）- 管理端使用
     * 
     * @param productType 商品类型
     * @param productId 具体商品ID
     * @return 阶梯配置列表
     */
    List<PriceTierConfig> getTierConfigsForAdmin(String productType, String productId);
}