import { fileHttpUtils } from "../utils/http/fileHttpUtils";
import { toolUtils } from "@/utils/toolUtils";

export default class FileController {
  static http = new fileHttpUtils();

  /**
   * 上传文件
   * @param params 格式如下：
   * {
   *    uploadProgressCall 上传进度回调函数，函数参数为object，格式如下:{uploadedTotal:1},uploadedTotal总共上传了多少字节,是所有文件上传的字节数总和
   *    oneUploadedCall 每上传完一个后的回调函数，函数参数为object，格式如下:{fileName:'文件名称'}
   *    userId:'不传时，默认会取vuex中user.id',
   *    files 数组或者object，示例
   *    {
   *      groupCode:'不传时，默认会取vuex中selectProject.groupCode',
   *      projectId:'不传时，默认会取vuex中selectProject.id',
   *      fileName:'文件名称',
   *      fileBucket:'存储空间名称，可以不传',
   *      file:文件信息，假设有一个input type为file id为txtFile的标签，那么file为document.getElementById('txtFile').files[0]
   *    }
   * }
   */
  static async uploadFiles(params) {
    return await this.http.uploadFiles(params);
  }

  /**
   * 根据文件ID获取图片的预览地址
   * @param fileId 文件ID
   */
  static getImgViewUrl(fileId: string) { 
    var viewUrl = toolUtils.getBaseHttpUrl((window as any).__systemConf.imgServiceUrl, '/common/image_get');
    return viewUrl + '?systemId=dev&key=' + fileId;
  };

  /**
   * 根据文件ID获取文件(包括图片)的下载地址
   * @param _paramobj 格式如下：
   *  {
   *    fileId:'文件ID',
   *    userId:'用户ID，不传时将取vuex中的user.id',
   *    groupCode:'集团编码，不传时将取vuex中的selectProject.groupCode',
   *    projectId:'项目ID，不传时将取vuex中的selectProject.id',
   *    appId:'应用ID，暂时没用',
   *  }
   */
  static async getFileDownUrl(_paramobj: any) { 
    return await this.http.postRequest('file/initFileDownload', _paramobj);
  };
}
