package com.persagy.dmp.file.service;

import com.persagy.dmp.file.model.FileInfo;
import com.persagy.dmp.file.model.FileRequestData;
import com.persagy.dmp.file.model.UploadMes;

import java.util.List;

/**
 * 文件管理接口
 * @author Charlie Yu
 * @date 2021-05-15
 */
public interface IFileService {

    /**
     * 保存
     * @param vo
     * @return
     */
    FileInfo insertFile(FileInfo vo);

    /**
     * 保存
     * @param vo
     * @return
     */
    FileInfo updateFile(FileInfo vo);

    /**
     * 批量保存
     * @param voList
     * @return
     */
    List<FileInfo> batchInsert(List<FileInfo> voList);

    /**
     * 删除
     * @param vo
     */
    void deleteFile(FileInfo vo);

    /**
     * 通过id查询
     * @param id
     * @return
     */
    FileInfo load(String id);

    /**
     * 通过业务ID查询
     * @param businessId
     * @return
     */
    List<FileInfo> queryByBusinessId(String businessId);

    /***
     * Description: 初始化文件上传路径列表
     * @param requestData : 请求参数
     * @return : java.util.List<com.persagy.dmp.file.model.FileInfo>
     * @author : lijie
     * @date :2021/10/9 20:27
     * Update By lijie 2021/10/9 20:27
     */
    UploadMes initChunkUpload(FileRequestData requestData);
    /***
     * Description: 合并断点续传的文件
     * @param requestData : 请求参数
     * @return : com.persagy.dmp.file.model.FileInfo
     * @author : lijie
     * @date :2021/10/20 21:57
     * Update By lijie 2021/10/20 21:57
     */
    FileInfo composeFile(FileRequestData requestData);
    /***
     * Description: 单个文件上传
     * @param requestData : 请求参数
     * @return : com.persagy.dmp.file.domain.UploadMes
     * @author : lijie
     * @date :2021/10/22 19:29
     * Update By lijie 2021/10/22 19:29
     */
    UploadMes initSingleUpload(FileRequestData requestData);
    /***
     * Description: 根据Md5查询文件信息
     * @param fileMd5 : 文件md5值
     * @return : java.util.List<com.persagy.dmp.file.model.FileInfo>
     * @author : lijie
     * @date :2021/10/22 22:36
     * Update By lijie 2021/10/22 22:36
     */
    List<FileInfo> queryByFileMd5(String fileMd5);
    /***
     * Description: 初始化文件下载
     * @param requestData : 请求参数
     * @return : com.persagy.dmp.file.model.FileInfo
     * @author : lijie
     * @date :2021/10/23 13:18
     * Update By lijie 2021/10/23 13:18
     */
    FileInfo initFileDownload(FileRequestData requestData);
}
