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

import com.yhy.module.core.controller.admin.calcbaserate.vo.CalcBaseRateCatalogRespVO;
import com.yhy.module.core.controller.admin.calcbaserate.vo.CalcBaseRateCatalogSaveReqVO;
import java.util.List;
import javax.validation.Valid;

/**
 * 基数费率目录树 Service 接口
 *
 * @author yhy
 */
public interface CalcBaseRateCatalogService {

    /**
     * 创建基数费率目录树节点
     *
     * @param createReqVO 创建信息
     * @return 节点ID
     */
    Long createCalcBaseRateCatalog(@Valid CalcBaseRateCatalogSaveReqVO createReqVO);

    /**
     * 更新基数费率目录树节点
     *
     * @param updateReqVO 更新信息
     */
    void updateCalcBaseRateCatalog(@Valid CalcBaseRateCatalogSaveReqVO updateReqVO);

    /**
     * 删除基数费率目录树节点
     *
     * @param id 节点ID
     */
    void deleteCalcBaseRateCatalog(Long id);

    /**
     * 获取基数费率目录树节点
     *
     * @param id 节点ID
     * @return 节点信息
     */
    CalcBaseRateCatalogRespVO getCalcBaseRateCatalog(Long id);

    /**
     * 获取基数费率目录树（树形结构）
     *
     * @return 树形结构
     */
    List<CalcBaseRateCatalogRespVO> getCalcBaseRateCatalogTree();

    /**
     * 获取基数费率目录树（工作台项目指引使用）
     *
     * @return 树形结构
     */
    List<com.yhy.module.core.controller.admin.workbench.vo.calcbaserate.CalcBaseRateCatalogTreeRespVO> getCalcBaseRateCatalogTreeForWorkbench();
}
