package cn.bunny.services.service.financial;

import cn.bunny.dao.dto.financial.budgetCategory.BudgetCategoryAddDto;
import cn.bunny.dao.dto.financial.budgetCategory.BudgetCategoryDto;
import cn.bunny.dao.dto.financial.budgetCategory.BudgetCategoryUpdateDto;
import cn.bunny.dao.entity.financial.BudgetCategory;
import cn.bunny.dao.pojo.result.PageResult;
import cn.bunny.dao.vo.financial.admin.BudgetCategoryParentVo;
import cn.bunny.dao.vo.financial.admin.BudgetCategoryVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.validation.Valid;

import java.util.List;

/**
 * <p>
 * 预算分类表 服务类
 * </p>
 *
 * @author Bunny
 * @since 2024-11-11 15:36:57
 */
public interface BudgetCategoryService extends IService<BudgetCategory> {

    /**
     * * 获取预算分类表列表
     *
     * @return 预算分类表返回列表
     */
    PageResult<BudgetCategoryVo> getBudgetCategoryList(Page<BudgetCategory> pageParams, BudgetCategoryDto dto);

    /**
     * * 添加预算分类表
     *
     * @param dto 添加表单
     */
    void addBudgetCategory(@Valid BudgetCategoryAddDto dto);

    /**
     * * 更新预算分类表
     *
     * @param dto 更新表单
     */
    void updateBudgetCategory(@Valid BudgetCategoryUpdateDto dto);

    /**
     * * 删除|批量删除预算分类表类型
     *
     * @param ids 删除id列表
     */
    void deleteBudgetCategory(List<Long> ids);

    /**
     * 返回所有父级对象
     *
     * @return 父级列表
     */
    List<BudgetCategoryParentVo> getAllParentList();
}
