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

import com.yhy.module.core.controller.admin.quota.vo.QuotaRateFieldRespVO;
import com.yhy.module.core.controller.admin.quota.vo.QuotaRateFieldSaveReqVO;
import com.yhy.module.core.dal.dataobject.quota.QuotaRateFieldDO;

import java.util.List;

/**
 * 定额费率字段绑定 Service 接口
 */
public interface QuotaRateFieldService {

    /**
     * 创建或更新字段绑定
     */
    Long saveRateField(QuotaRateFieldSaveReqVO saveReqVO);

    /**
     * 删除字段绑定
     */
    void deleteRateField(Long id);

    /**
     * 删除费率项的所有字段绑定
     */
    void deleteByRateItemId(Long rateItemId);

    /**
     * 获取字段绑定
     */
    QuotaRateFieldDO getRateField(Long id);

    /**
     * 获取费率项的字段绑定列表
     */
    List<QuotaRateFieldRespVO> getRateFieldList(Long rateItemId);

    /**
     * 更新字段绑定
     */
    void updateBinding(Long rateItemId, Integer fieldIndex, Long[] bindingIds);

    /**
     * 批量保存字段绑定
     */
    void batchSaveRateFields(Long rateItemId, List<QuotaRateFieldSaveReqVO> fields);

    /**
     * 验证绑定范围（只能绑定当前定额专业下的节点）
     */
    void validateBindingRange(Long catalogItemId, Long[] bindingIds);
}
