package com.jwipc.sys.client;

import cn.hutool.core.lang.Pair;
import com.jwipc.api.dto.ESignFileResposeDTO;
import com.jwipc.sys.client.dto.FileResposeCDTO;
import com.jwipc.sys.client.dto.FileResposePreviewCDTO;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Collection;
import java.util.List;

/**
 * <p> </p>
 *
 * @author ZhangJie
 * @version 1.0
 * @since JDK 1.8
 */
public interface FileClient {

    /**
     * 创建一个空文件
     * @param fileName 文件名称
     * @return 文件
     */
    File createFile(String fileName);
    File createBarFile(String fileName);

    /**
     * 上传文件
     * @param file 文件
     * @return 文件信息
     */
    FileResposeCDTO uploadFile(File file);
    ESignFileResposeDTO uploadESignFile(File file);
    MultipartFile file2MultipartFile(File file);

    public FileResposeCDTO getFileInfo(Long fileId);

    public List<FileResposeCDTO> getFileInfos(Collection<? extends Serializable> idList);

    public FileResposeCDTO getFileForDownload(Long fileId);

    /**
     * 压缩文件zip
     *
     * @param zipFileName 文件名
     * @param idList      附件id
     * @return 压缩后的文件路径
     */
    public String zipFiles(String zipFileName, Collection<? extends Serializable> idList);

    /**
     * 获取文件，带文件预览绝对地址
     *
     * @param idList 文件id
     * @return
     * @throws UnsupportedEncodingException
     */
    public List<FileResposePreviewCDTO> getPreviewUrl(Collection<? extends Serializable> idList);


    public FileResposeCDTO saveSignFile(File file);

    /**
     * 生成日期路径的绝对路径
     * @return
     */
    Pair<String, String> getDefaultFileAbsolutePath();

    /**
     * 创建文件
     * @param file
     */
    FileResposeCDTO createMultipartFile(MultipartFile file);

    String getRootPath();
}
