package com.yh.saas.plugin.clouddisk.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.yh.saas.plugin.clouddisk.entity.DataManagerFileInfo;

import java.util.List;

/**
 * <p>
 * 资料管理 - Service层
 * </p>
 *
 * @author ZhangMingYu
 * @since 2019年11月18日15:50:25
 */
public interface IDataManagerFileService extends IService<DataManagerFileInfo> {

    /**
     * 资料管理 - 新增保存文件
     *
     * @param files               文件集合
     * @param dataManagerFileInfo 文件参数
     */
    void saveFile(List<String> files, DataManagerFileInfo dataManagerFileInfo);

    /**
     * 资料管理 - 删除文件
     *
     * @param dataManagerFileInfos 删除文件id 集合
     */
    void removeAll(List<DataManagerFileInfo> dataManagerFileInfos);

    /**
     * 资料管理 - 分页查询文件
     *
     * @param dataManagerFileInfo 查询参数
     * @return 返回文件集合
     */
    Page<DataManagerFileInfo> findFileUnderFolder(DataManagerFileInfo dataManagerFileInfo);

    /**
     * 资料管理 - 批量下载文件
     *
     * @param fileUrls 文件url集合
     * @param zipName  压缩包名称
     */
    void downFile(List<String> fileUrls, String zipName);

    /**
     * 资料管理 - 重命名
     *
     * @param fileId   文件主键id
     * @param fileName 新文件名称
     */
    void fileRename(String fileId, String fileName);

    /**
     * 资料管理 - 查询资料管理全部文件类型
     *
     * @return 文件类型集合
     */
    List<String> findFileType(String compId);

    /**
     * 资料管理 - 修改
     *
     * @param dataManagerFileInfo 修改对象 fileId 必传
     */
    void transferFolder(DataManagerFileInfo dataManagerFileInfo);

    /**
     * 资料管理 - 根据文件夹id删除文件
     *
     * @param folderId 文件夹id
     */
    void removeFolderFile(String folderId);

    /**
     * 根据公司更新整个租户的云盘大小
     *
     * @param compId 公司id
     */
    void updateRedisCloudDiskSize(String compId);
}
