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

import com.yhy.module.core.controller.admin.quota.vo.QuotaRateFieldLabelRespVO;
import com.yhy.module.core.controller.admin.quota.vo.QuotaRateFieldLabelSaveReqVO;
import com.yhy.module.core.dal.dataobject.quota.QuotaRateFieldLabelDO;
import java.util.List;
import javax.validation.Valid;

/**
 * 定额费率字段标签字典 Service 接口
 *
 * @author yhy
 */
public interface QuotaRateFieldLabelService {

    /**
     * 创建字段标签
     *
     * @param createReqVO 创建信息
     * @return 标签ID
     */
    Long createFieldLabel(@Valid QuotaRateFieldLabelSaveReqVO createReqVO);

    /**
     * 更新字段标签
     *
     * @param updateReqVO 更新信息
     */
    void updateFieldLabel(@Valid QuotaRateFieldLabelSaveReqVO updateReqVO);

    /**
     * 删除字段标签
     *
     * @param id 标签ID
     */
    void deleteFieldLabel(Long id);

    /**
     * 获取字段标签
     *
     * @param id 标签ID
     * @return 字段标签
     */
    QuotaRateFieldLabelDO getFieldLabel(Long id);

    /**
     * 获取字段标签列表
     *
     * @param catalogItemId 模式节点ID
     * @return 字段标签列表
     */
    List<QuotaRateFieldLabelRespVO> getFieldLabelList(Long catalogItemId);

    /**
     * 交换排序
     *
     * @param labelId1 标签ID1
     * @param labelId2 标签ID2
     */
    void swapSort(Long labelId1, Long labelId2);

    /**
     * 验证字段标签存在
     *
     * @param id 标签ID
     * @return 字段标签
     */
    QuotaRateFieldLabelDO validateFieldLabelExists(Long id);

}
