package org.dromara.system.service;

import org.dromara.system.domain.vo.FileInfoVo;
import org.dromara.system.domain.bo.FileInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;

import java.util.Collection;
import java.util.List;

/**
 * 文件信息Service接口
 *
 * @author Lion Li
 * @date 2024-01-01
 */
public interface IFileInfoService {

    /**
     * 查询文件信息
     */
    FileInfoVo queryById(Long id);

    /**
     * 查询文件信息列表
     */
    TableDataInfo<FileInfoVo> queryPageList(FileInfoBo bo, PageQuery pageQuery);

    /**
     * 查询文件信息列表
     */
    List<FileInfoVo> queryList(FileInfoBo bo);

    /**
     * 新增文件信息
     */
    Boolean insertByBo(FileInfoBo bo);

    /**
     * 修改文件信息
     */
    Boolean updateByBo(FileInfoBo bo);

    /**
     * 校验并批量删除文件信息信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 根据分类ID查询文件列表
     */
    List<FileInfoVo> queryByCategoryId(Long categoryId);

    /**
     * 根据文件类型查询文件列表
     */
    List<FileInfoVo> queryByType(String type);

    /**
     * 更新文件下载次数
     */
    Boolean updateDownloadCount(Long id);

    /**
     * 更新文件查看次数
     */
    Boolean updateViewCount(Long id);

    /**
     * 下载文件
     */
    void downloadFile(Long id, jakarta.servlet.http.HttpServletResponse response) throws java.io.IOException;
}
