import request from '@/utils/request'

// 获取地图列表
export function getMapList(params) {
  return request({
    url: '/v1/map/list',
    baseURL: '/pns',
    method: 'get',
    params
  })
}

// 获取当前地图
export function getCurrentMap(params) {
  return request({
    url: '/v1/map/using',
    method: 'get',
    params
  })
}

// 获取地图缩略图
export function getMapThumbnail(params) {
  return request({
    url: `/v1/map/thumbnail?map=${params}`,
    baseURL: '/pns',
    method: 'get',
    responseType: 'blob'
  })
}

// 地图重命名
export function renameMap(data) {
  return request({
    url: '/v1/map/rename',
    method: 'post',
    baseURL: '/pns',
    data
  })
}

// 删除地图工程
export function deleteMap(data) {
  return request({
    url: '/v1/map/delete',
    method: 'delete',
    baseURL: '/pns',
    data
  })
}

// 地图工程下载前压缩
export function compressMapExport(data) {
  return request({
    url: '/v1/map/export/compress',
    method: 'post',
    baseURL: '/pns',
    data,
    timeout: 120000 // 设置120秒超时，用于大地图压缩
  })
}

// 下载地图工程压缩包
export function downloadMapExport(params) {
  return request({
    url: '/v1/map/export',
    method: 'get',
    baseURL: '/pns',
    params,
    responseType: 'blob',
    timeout: 60000 // 设置60秒超时，用于大文件下载
  })
}

// 导入地图工程
export function importMap(data) {
  return request({
    url: '/v1/map/import',
    method: 'post',
    baseURL: '/pns',
    data
  })
}

// 地图工程组件列表
export function getMapComponents(params) {
  return request({
    url: '/v1/map/components',
    method: 'get',
    baseURL: '/pns',
    params
  })
}

// 地图工程任意文件获取
export function getMapFile(mapName, folderName, fileName) {
  return request({
    url: `/v1/map/file/${mapName}/${folderName}/${fileName}`,
    method: 'get'
  })
}

// 获取路网数据 (GeoJSON格式)
export function getRoadMapGeoJson(mapName) {
  return request({
    url: '/v1/roadmap/geojson',
    baseURL: '/pns',
    method: 'get',
    params: { map: mapName }
  })
}

// 保存路网数据 (GeoJSON格式)
export function saveRoadMapGeoJson(data) {
  return request({
    url: '/v1/roadmap/geojson',
    baseURL: '/pns',
    method: 'post',
    data,
    headers: {
      'Content-Type': 'application/json'
    }
  })
}

// 获取点云数据 (用于实时显示激光点云)
export function getPointcloud() {
  return request({
    url: '/v1/sensor/pointcloud/3d',
    baseURL: '/pns',
    method: 'get',
    responseType: 'arraybuffer'
  })
}