package com.qmth.teachcloud.common.service;

import com.qmth.teachcloud.common.entity.BasicAttachment;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.List;
import java.util.Map;

/**
 * 试卷、题卡下载、预览等操作公共服务service
 */
public interface AttachmentCommonService {


    /**
     * 文件预览
     *
     * @param path 文件路径（json格式）
     * @return String
     */
    public String previewFile(String path);

    /**
     * 文件预览
     *
     * @param path 文件路径
     * @return String
     */
    public String previewFile(String path, String type, Boolean isExpire);

    /**
     * 文件预览
     *
     * @param attachmentId 附件ID
     * @return Map
     */
    public Map<String, String> previewFile(Long attachmentId, Boolean isExpire);


    /**
     * 下载文件
     *
     * @param rootPath     文件本地存储路径（支持多级）
     * @param fileName     保存本地文件名
     * @param attachmentId 附件表对象ID
     */
    public File downloadFile(String rootPath, String fileName, Long attachmentId) throws Exception;

    /**
     * 下载文件
     *
     * @param rootPath   文件本地存储路径（支持多级）
     * @param fileName   保存本地文件名
     * @param attachment 附件表对象
     */
    public File downloadFile(String rootPath, String fileName, BasicAttachment attachment) throws Exception;

    /**
     * 压缩指定文件集合
     *
     * @param response response对象
     * @param filePath 文件根目录（存储zip文件路径）
     * @param zipName  zip文件名
     * @param files    需要下载的文件集合
     */
    public void zipFiles(HttpServletResponse response, String filePath, String zipName, List<File> files);

    /**
     * 下载文件到本地并压缩返回
     *
     * @param response response对象
     * @param filePath 文件根目录
     * @param zipName  zip文件名
     */
    public void zipFiles(HttpServletResponse response, String filePath, String zipName);
}
