package com.ycwl.basic.pricing.service;

import com.github.pagehelper.PageInfo;
import com.ycwl.basic.pricing.dto.BundleConfigFilterRequest;
import com.ycwl.basic.pricing.dto.ProductItem;
import com.ycwl.basic.pricing.entity.PriceBundleConfig;

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

/**
 * 一口价套餐服务接口
 */
public interface IPriceBundleService {
    
    /**
     * 检查商品是否适用一口价
     * 
     * @param products 商品列表
     * @return 是否适用
     */
    boolean isBundleApplicable(List<ProductItem> products);
    
    /**
     * 获取一口价价格
     * 
     * @param products 商品列表
     * @return 一口价价格，如果不适用则返回null
     */
    BigDecimal getBundlePrice(List<ProductItem> products);
    
    /**
     * 获取适用的一口价配置
     * 
     * @param products 商品列表
     * @return 适用的一口价配置，如果不适用则返回null
     */
    PriceBundleConfig getBundleConfig(List<ProductItem> products);
    
    /**
     * 获取所有启用的一口价配置
     * 
     * @return 一口价配置列表
     */
    List<PriceBundleConfig> getActiveBundles();
    
    /**
     * 获取所有一口价配置（仅启用的）
     * 
     * @return 一口价配置列表
     */
    List<PriceBundleConfig> getAllBundles();
    
    // ==================== 管理端接口（包含禁用的配置） ====================
    
    /**
     * 获取所有一口价配置（包含禁用的）- 管理端使用
     * 
     * @return 一口价配置列表
     */
    List<PriceBundleConfig> getAllBundlesForAdmin();
    
    /**
     * 分页查询一口价配置（包含禁用的）- 管理端使用
     * 
     * @param request 筛选请求参数
     * @return 分页结果
     */
    PageInfo<PriceBundleConfig> pageBundleConfigsForAdmin(BundleConfigFilterRequest request);
}