import OSS from 'ali-oss'
import { Message } from 'element-ui'
import request from '@/utils/httpRequest'

export default class OSSSerive {
  saveMsg (param) {
    return request({
      url: '/oss/file/saveMsg',
      method: 'post',
      data: param
    })
  }
  findFileList (attachmentId) {
    return request({
      url: '/oss/file/findFileList',
      method: 'get',
      params: {attachmentId: attachmentId}
    })
  }
  getTemporaryUrl (url) {
    return request({
      url: '/oss/file/getTemporaryUrl',
      method: 'get',
      params: {url: url}
    })
  }
  deleteMsgById (id) {
    return request({
      url: '/oss/file/deleteMsgById',
      method: 'get',
      params: {id: id}
    })
  }
  downLoadAttach (url) {
    return request({
      url: '/oss/file/downLoadAttach',
      method: 'get',
      responseType: 'blob',
      params: {file: url}
    })
  }
}

export const client = new OSS({
  region: 'oss-cn-hangzhou', // oss地址
  accessKeyId: 'LTAI5tQDWoM9c1WyJNPs86rX', // 通过阿里云控制台创建的AccessKey ID。
  accessKeySecret: '84dDIx4edT1n78KUOqqSmDZ35pchJv', // 通过阿里云控制台创建的AccessKey Secret。
  bucket: 'xg-pg', // 仓库名字
  useFetch: true, // 支持上传大于100KB的文件
  secure: false // 返回的url为https
})

export const headers = {
  // 指定该Object被下载时网页的缓存行为。
  'Cache-Control': 'no-cache',
  // 指定该Object被下载时的名称。
  'Content-Disposition': 'inline',
  // 指定该Object被下载时的内容编码格式。
  'Content-Encoding': 'UTF-8',
  // 指定过期时间。
  Expires: 'Wed, 08 Jul 2023 16:57:01 GMT',
  // 指定Object的存储类型。
  'x-oss-storage-class': 'Standard',
  // 指定Object的访问权限。
  // 'x-oss-object-acl': 'private',
  // 设置Object的标签，可同时设置多个标签。
  'x-oss-tagging': 'Tag1=1&Tag2=2',
  // 指定CopyObject操作时是否覆盖同名目标Object。此处设置为true，表示禁止覆盖同名Object。
  'x-oss-forbid-overwrite': 'true'
  // 'secure': 'true'
}

export function onChange (file, files) {
  console.log(file, 'file', files, 'Filest')
  return files
}

export function handleUploadSuccess (response, file, fileS) {
  console.log(response, file, fileS, 'response, file, fileList')
}

export function handleRemove (e, files) {
  return files
}

export function fileName (file) {
  console.log('文件名称处理')
  const tmpcnt = file.file.name.lastIndexOf('.')
  let fileName = file.file.name.substring(0, tmpcnt)
  // 将单引号‘’都转换成'，将双引号“”都转换成"
  fileName = fileName.replace(/’|‘/g, '\'').replace(/“|”/g, '')
  // 将中括号【】转换成[]，将大括号｛｝转换成{}
  fileName = fileName.replace(/【/g, '(').replace(/】/g, ')').replace(/｛/g, '(').replace(/｝/g, ')')
  fileName = fileName.replace(/\[/g, '(').replace(/]/g, ')').replace(/{/g, '(').replace(/}/g, ')')
  // 将逗号，转换成,，将：转换成:
  fileName = fileName.replace(/，/g, ',').replace(/：/g, ':')
  // 将中文——转换为英文-
  fileName = fileName.replace(/—/g, '-')
  fileName = fileName.replace(/……/g, '')
  fileName = fileName.replace(/±/g, '')
  fileName = fileName.replace(/#/g, '')
  fileName = fileName.replace(/%/g, '')
  fileName = fileName.replace(/Π/g, '')
  fileName = fileName.replace(/π/g, '')
  fileName = fileName.replace(/·/g, '.')
  console.log('文件名处理结果', fileName)
  return fileName
}

export function beforeAvatarUpload (file) {
  // 文件大小校验
  const isLt2M = file.size / 1024 / 1024 < 300
  if (!isLt2M) {
    this.$message.error('文件大小不能超过 300M !')
  }
  return isLt2M
}

export function exnameFix (file, isShow, names) {
  console.log('格式校验')
  const tmpcnt = file.name.lastIndexOf('.')
  const exname = file.name.substring(tmpcnt + 1) // 获取后缀名
  if (names.indexOf(exname) < 0) {
    if (isShow === '1') {
      Message.error('不支持的格式!')
    }
    return false
  }
  return true
}

export function httpRequest (file, name, type) { // 阿里云OSS上传
  console.log('开始上传')
  // 判断扩展名
  const tmpcnt = file.file.name.lastIndexOf('.') // 获取.的下标
  const exname = file.file.name.substring(tmpcnt + 1) // 获取后缀名
  console.log(exname, '后缀名')
  const now = new Date()
  const year = now.getFullYear()
  const month = now.getMonth() + 1
  const day = now.getDate() > 10 ? now.getDate() : '0' + now.getDate()
  const filePath = '/attachment-file/assess/' + type + '/' + year + '/' + month + '/' + day + '/' + now.getTime()
  console.log(filePath, '文件存储路径')
  const fileName = filePath + name + '.' + exname
  console.log(fileName, '文件名')
  client.put(
    fileName,
    file.file,
    {
      headers
    }
  ).then(res => {
    console.log(res, 'res---header ')
    file.file.url = fileName
  }).catch(err => {
    console.log(err, 'err')
  })
}
