package com.tofly.common.service;

import com.alibaba.fastjson.JSONObject;

import com.tofly.common.entity.dto.FileInfoDto;
import com.tofly.common.entity.vo.FileInfo;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 文件上传自定义类
 * @author 20126
 */
public interface IFileInfoService {
    /**
     * 文件上传
     */
    List<FileInfo> saveFileList(List<MultipartFile> fileList, String filePathBean, String tableName);

    /**
     * 根据文件id列表删除远程文件略表
     * @param fileInfoList
     * @return
     */
    Boolean removeFileList(List<FileInfo> fileInfoList);

    /**
     * 获取当前最新文件集合
     *
     * @param fileInfoDto 文件相关查询属性
     * @return List
     */
    String getFileInfo(FileInfoDto fileInfoDto);


    /**
     * 文件上传更新操作方法，支持删除旧文件，添加新文件
     *
     * @param fileList  新上传的文件列表
     * @param newAnnex  修改编辑过的附件集合json字符串
     * @param oldAnnex  数据库中的附件集合json字符串
     * @param folder    上传路径文件夹
     * @param tableName 上传附件对应的数据库表名
     * @return 上传文件更新删除之后的新附件集合json字符串
     */
    String uploadFiles(List<MultipartFile> fileList, String newAnnex, String oldAnnex, String folder, String tableName);


    /**
     * 根据json转为数据集合
     * @param json 源json字符数据
     * @return 返回数据集合
     */
    default List<FileInfo> getFIleByJsonData(String json){
        if (StringUtils.hasText(json)){
            return JSONObject.parseArray(json,FileInfo.class);
        }else {
            return null;
        }
    }
}
