package com.yhy.module.core.service.quota;

import com.yhy.module.core.controller.admin.quota.vo.QuotaFeeItemSaveReqVO;
import com.yhy.module.core.controller.admin.quota.vo.QuotaFeeItemWithRateRespVO;
import com.yhy.module.core.dal.dataobject.quota.QuotaFeeItemDO;
import java.util.List;
import javax.validation.Valid;

/**
 * 定额取费项 Service 接口
 */
public interface QuotaFeeItemService {

    /**
     * 创建取费项
     */
    Long createFeeItem(@Valid QuotaFeeItemSaveReqVO createReqVO);

    /**
     * 更新取费项
     */
    void updateFeeItem(@Valid QuotaFeeItemSaveReqVO updateReqVO);

    /**
     * 删除取费项
     */
    void deleteFeeItem(Long id);

    /**
     * 获取取费项详情
     */
    QuotaFeeItemDO getFeeItem(Long id);

    /**
     * 获取取费项列表
     */
    List<QuotaFeeItemDO> getFeeItemList(Long catalogItemId);

    /**
     * 获取取费项与费率项合并列表
     * 
     * 将费率项树的一级节点与取费项进行一对一关联展示
     * 
     * @param catalogItemId 模式节点ID
     * @return 合并后的列表
     */
    List<QuotaFeeItemWithRateRespVO> getFeeItemWithRateList(Long catalogItemId);

    /**
     * 交换排序
     */
    void swapSort(Long nodeId1, Long nodeId2);

    /**
     * 验证取费项是否存在
     */
    void validateFeeItemExists(Long id);
}
