using ce.autofac.extension;
using Infrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.Request;
using OpenAuth.App.ServiceApp.ShpGeo;
using OpenAuth.App.ServiceApp.ShpGeo.Request;
using OpenAuth.App.Shape.Request;
using OpenAuth.Repository.Domain;
namespace OpenAuth.WebApi.Controllers.ServiceControllers;
[Route("api/[controller]/[action]")]
[ApiController]
public class ShpGeoLayerController : ControllerBase
{
private readonly ShpGeoLayerApp _shpGeoLayerApp;
public ShpGeoLayerController(ShpGeoLayerApp shpGeoLayerApp)
{
this._shpGeoLayerApp = shpGeoLayerApp;
}
///
/// geo服务添加 / 云查询图层管理
///
///
///
[HttpPost]
public async Task> Add(ShpGeoLayerShpReq obj)
{
var result = new Response();
try
{
result = await _shpGeoLayerApp.Add(obj);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
///
/// 列表
///
///
///
[HttpGet]
public async Task>>> LoadPage([FromQuery] ShpGeoLayerReq req)
{
return await _shpGeoLayerApp.LoadPage(req);
}
[HttpGet]
public Response Get(string id)
{
var result = new Response();
try
{
result.Result = _shpGeoLayerApp.Get(id);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
///
/// 更新图层
///
///
///
[HttpPost]
public async Task> UpdateLayer(UpdateGeoLayerShpReq updateLayerReq)
{
var result = new Response();
try
{
result = await _shpGeoLayerApp.UpdateLayer(updateLayerReq);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
///
/// 删除图层
///
///
///
[HttpPost("{id}")]
public async Task> Delete(string id)
{
var result = new Response();
try
{
result = await _shpGeoLayerApp.Delete(id);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
///
/// 解析shp文件
///
/// zip文件相对路径
/// 表名
/// 空间参考
///
[HttpPost]
public async Task> ParseShpInfo(string zipFilePath, string tableName,
string srid)
{
var result = new Response();
if (string.IsNullOrEmpty(zipFilePath))
{
result.Code = 500;
result.Message = "未传文件路径";
return result;
}
try
{
result = await _shpGeoLayerApp.ParseShpInfo(zipFilePath, tableName, srid);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
///
/// 获取shp数据表中心坐标
///
///
///
[HttpGet]
public async Task> GetGeomData(string tableName)
{
return await _shpGeoLayerApp.GetGeomData(tableName);
}
[HttpPost]
public async Task> Test(string tableName, string serverName, string srid, string shpPath)
{
return await _shpGeoLayerApp.Test1(tableName, serverName, srid, shpPath);
//return await _shpGeoLayerApp.Test( tableName, serverName, srid, shpPath);
}
[HttpGet]
[AllowAnonymous]
public IActionResult QueryVectorTileByTable([FromQuery] QueryVectorTileByTableReq req)
{
var result = _shpGeoLayerApp.QueryVectorTileByTable(req);
return File(result, "application/octet-stream");
}
[HttpGet]
public dynamic GetDataTableRecord(string dataTable, string id)
{
return _shpGeoLayerApp.GetDataTableRecord(dataTable,id);
}
}