import { defHttp } from '/@/utils/http/axios';

const api = {
  user: '/mock/api/user',
  role: '/mock/api/role',
  service: '/mock/api/service',
  permission: '/mock/api/permission',
  permissionNoPager: '/mock/api/permission/no-pager',
};

//post
export function postAction(url, parameter, timeout: 120000) {
  return defHttp.post(
    {
      url: url,
      method: 'post',
      data: parameter,
      timeout: timeout ? timeout : 1000 * 120,
    },
    { isTransformResponse: false, successMessageMode: 'none' }
  );
}

//post
export function postActionBlob(url, parameter) {
  return defHttp.request({
    url: url,
    method: 'post',
    data: parameter,
    headers: {
      'Content-Type': 'application/json',
    },
    responseType: 'blob',
  });
}

//post
export function postAction3(url, parameter) {
  return defHttp.request({
    url: url,
    method: 'post',
    data: parameter,
    timeout: 1000 * 120,
    headers: {
      'Content-Type': 'application/json',
    },
  });
}

export function postActionForm(url, parameter, timeout: 120000) {
  return defHttp.post(
    {
      url: url,
      params: parameter,
      timeout: timeout,
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    },
    { isTransformResponse: false, successMessageMode: 'none' }
  );
}

export function postAction5(url, parameter, timeout) {
  return defHttp.request({
    url: url,
    method: 'post',
    data: parameter,
    timeout: timeout ? timeout : 1000 * 120,
    headers: {
      'Content-Type': 'application/json',
    },
  });
}

//post method= {post | put}
export function httpAction(url, parameter, method) {
  return defHttp.request(
    {
      url: url,
      method: method,
      data: parameter,
    },
    { isTransformResponse: false, successMessageMode: 'none' }
  );
}

//put
export function putAction(url, parameter) {
  return defHttp.request(
    {
      url: url,
      method: 'put',
      data: parameter,
    },
    { isTransformResponse: false, successMessageMode: 'none' }
  );
}

//get
export function getAction(url, parameter) {
  return defHttp.get(
    {
      url: url,
      method: 'get',
      params: parameter,
      timeout: 1000 * 180,
    },
    { isTransformResponse: false, successMessageMode: 'none' }
  );
}

//deleteAction
export function deleteAction(url, parameter) {
  return defHttp.request({
    url: url,
    method: 'delete',
    params: parameter,
  });
}

export function getUserList(parameter) {
  return defHttp.request({
    url: api.user,
    method: 'get',
    params: parameter,
  });
}

export function getRoleList(parameter) {
  return defHttp.request({
    url: api.role,
    method: 'get',
    params: parameter,
  });
}

export function getServiceList(parameter) {
  return defHttp.request({
    url: api.service,
    method: 'get',
    params: parameter,
  });
}

export function getPermissions(parameter) {
  return defHttp.request({
    url: api.permissionNoPager,
    method: 'get',
    params: parameter,
  });
}

// id == 0 add     post
// id != 0 update  put
export function saveService(parameter) {
  return defHttp.request({
    url: api.service,
    method: parameter.id == 0 ? 'post' : 'put',
    data: parameter,
  });
}

/**
 * 下载文件 用于excel导出
 * @param url
 * @param parameter
 * @returns {*}
 */
export function downFile(url, parameter) {
  return defHttp.request({
    url: url,
    params: parameter,
    method: 'get',
    responseType: 'blob',
  });
}

/**
 * 文件上传 用于富文本上传图片
 * @param url
 * @param parameter
 * @returns {*}
 */
export function uploadAction(url, parameter) {
  return defHttp.request({
    url: url,
    data: parameter,
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data', // 文件上传
    },
  });
}

/**
 * 获取文件服务访问路径
 * @param avatar
 * @param subStr
 * @returns {*}
 */
export function getFileAccessHttpUrl(avatar, subStr) {
  if (!subStr) subStr = 'http';
  try {
    if (avatar && avatar.startsWith(subStr)) {
      return avatar;
    } else {
      if (avatar && avatar.length > 0 && avatar.indexOf('[') == -1) {
        return window._CONFIG['staticDomainURL'] + '/' + avatar;
      }
    }
  } catch (err) {
    return;
  }
}
