package cn.ey.biz.module.system.service.category;

import cn.ey.biz.common.pojo.PageResult;
import cn.ey.biz.module.system.controller.admin.category.vo.CategoryAppCreateReqVO;
import cn.ey.biz.module.system.controller.admin.category.vo.CategoryAppExportReqVO;
import cn.ey.biz.module.system.controller.admin.category.vo.CategoryAppPageReqVO;
import cn.ey.biz.module.system.controller.admin.category.vo.CategoryAppUpdateReqVO;
import cn.ey.biz.module.system.dal.dataobject.category.CategoryAppDO;

import java.util.*;
import javax.validation.*;

/**
 * 字典分类应用 Service 接口
 *
 */
public interface CategoryAppService {

    /**
     * 创建字典分类应用
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createCategoryApp(@Valid CategoryAppCreateReqVO createReqVO);

    /**
     * 更新字典分类应用
     *
     * @param updateReqVO 更新信息
     */
    void updateCategoryApp(@Valid CategoryAppUpdateReqVO updateReqVO);

    /**
     * 删除字典分类应用
     *
     * @param id 编号
     */
    void deleteCategoryApp(Long id);

    /**
     * 获得字典分类应用
     *
     * @param id 编号
     * @return 字典分类应用
     */
    CategoryAppDO getCategoryApp(Long id);

    /**
     * 获得字典分类应用列表
     *
     * @param ids 编号
     * @return 字典分类应用列表
     */
    List<CategoryAppDO> getCategoryAppList(Collection<Long> ids);

    /**
     * 获得字典分类应用分页
     *
     * @param pageReqVO 分页查询
     * @return 字典分类应用分页
     */
    PageResult<CategoryAppDO> getCategoryAppPage(CategoryAppPageReqVO pageReqVO);

    /**
     * 获得字典分类应用列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 字典分类应用列表
     */
    List<CategoryAppDO> getCategoryAppList(CategoryAppExportReqVO exportReqVO);

}
