package com.erp.tenant.service;

import com.erp.common.core.model.PageResponse;
import com.erp.tenant.entity.PricePlan;

import java.util.List;

/**
 * 价格方案服务接口
 */
public interface PricePlanService {
    
    /**
     * 分页查询价格方案列表
     *
     * @param periodType 周期类型（可选）
     * @param isActive   状态（可选）
     * @param page       页码
     * @param pageSize   每页记录数
     * @return 分页响应
     */
    PageResponse<PricePlan> listPricePlans(String periodType, Boolean isActive, Integer page, Integer pageSize);
    
    /**
     * 获取价格方案详情
     *
     * @param id 价格方案ID
     * @return 价格方案
     */
    PricePlan getPricePlanById(Long id);
    
    /**
     * 创建价格方案
     *
     * @param pricePlan 价格方案
     * @return 创建的价格方案
     */
    PricePlan createPricePlan(PricePlan pricePlan);
    
    /**
     * 更新价格方案
     *
     * @param id        价格方案ID
     * @param pricePlan 价格方案
     * @return 更新后的价格方案
     */
    PricePlan updatePricePlan(Long id, PricePlan pricePlan);
    
    /**
     * 删除价格方案
     *
     * @param id 价格方案ID
     */
    void deletePricePlan(Long id);
    
    /**
     * 切换价格方案状态
     *
     * @param id 价格方案ID
     * @return 切换后的状态
     */
    boolean togglePricePlanStatus(Long id);
    
    /**
     * 设置默认价格方案
     *
     * @param id 价格方案ID
     */
    void setDefaultPricePlan(Long id);
    
    /**
     * 获取所有启用的价格方案
     *
     * @return 价格方案列表
     */
    List<PricePlan> getActivePricePlans();
}
