LASAPlatform/OpenAuth.WebApi/Controllers/ServiceControllers/DroneDockController.cs

590 lines
21 KiB
C#
Raw Normal View History

using Infrastructure;
using Infrastructure.Cache;
using Infrastructure.Helpers;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.ServiceApp.DroneDocking;
using OpenAuth.App.ServiceApp.DroneDocking.Request;
2025-07-17 15:18:57 +08:00
using OpenAuth.App.ServiceApp.DroneDocking.Response;
using OpenAuth.App.ServiceApp.Response;
2025-07-17 15:18:57 +08:00
using OpenAuth.Repository.Domain;
2025-08-05 09:00:52 +08:00
using Org.BouncyCastle.Ocsp;
using System.Text;
using Newtonsoft.Json;
namespace OpenAuth.WebApi.Controllers.ServiceControllers
{
/// <summary>
/// 对接
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class DroneDockController: ControllerBase
{
private readonly DroneDockApp _app;
private EncryptionHelper _helper;
public DroneDockController(DroneDockApp app,EncryptionHelper helper)
{
_app = app;
_helper = helper;
}
/// <summary>
/// 无人机机场接口注册/更新
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public async Task<Response<string>> RegistService([FromBody] AirPortRegistReq req)
{
var result = new Response<string>();
try
{
result = await _app.RegistService(req);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
/// <summary>
/// 无人机机场设备注册/更新
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public async Task<Response<string>> AddDevice([FromBody] AddDeviceReq req)
{
var result = new Response<string>();
try
{
result = await _app.AddDevice(req);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
/// <summary>
/// 无人机机场设备授权
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public async Task<Response<string>> Authorization([FromBody] AuthorizationReq req)
{
var result = new Response<string>();
try
{
result = await _app.Authorization(req);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
2025-08-25 11:09:38 +08:00
[HttpPost]
[AllowAnonymous]
2025-08-25 11:09:38 +08:00
public async Task<Response<string>> Test(AirPortTaskReq req)
{
var result = new Response<string>();
try
{
2025-08-25 11:09:38 +08:00
result = await _app.Test(req);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
/// <summary>
/// 无人机任务添加
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
[Route("/zhcfzx/droneAirport/AddTask")]
[HttpPost]
[AllowAnonymous]
public async Task<ReciveData<string>> AddTask(string recivedata)
{
var result = new ReciveData<string>();
if(Request.Headers.TryGetValue("x-lc-token", out var tokenValue))
{
var tokenflag = _helper.Verify(tokenValue);
if (tokenflag)
{
// 获取请求头中的x-lc-secret
if (Request.Headers.TryGetValue("x-lc-secret", out var secretValue))
{
string secret = secretValue.ToString();
try
{
// 1. 从请求体中直接读取原始字符串(即 encryptedData
string req;
using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
{
req = await reader.ReadToEndAsync();
}
var data = await _app.AddTask(req, secret);
result.data = data.Result;
result.code=data.Code;
result.message = data.Message;
2025-08-25 11:09:38 +08:00
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
Response.Headers.Add("x-lc-secret", data.Secret);
}
catch (Exception ex)
{
2025-08-25 17:35:21 +08:00
result.code = 500;
result.message = "error";
2025-08-25 11:09:38 +08:00
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
}
return result;
}
else
{
throw new Exception("Missing required header: x-lc-secret");
}
}
else
{
throw new Exception("unauthorized");
}
}
else
{
throw new Exception("Missing required header: x-lc-token");
}
}
2025-07-07 13:59:05 +08:00
/// <summary>
/// 无人机任务更新
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
[Route("/zhcfzx/droneAirport/updateTask")]
[HttpPost]
[AllowAnonymous]
public async Task<ReciveData<string>> updateTask(string recivedata)
{
var result = new ReciveData<string>();
if (Request.Headers.TryGetValue("x-lc-token", out var tokenValue))
{
var tokenflag = _helper.Verify(tokenValue);
if (tokenflag)
{
// 获取请求头中的x-lc-secret
if (Request.Headers.TryGetValue("x-lc-secret", out var secretValue))
{
string secret = secretValue.ToString();
try
{
// 1. 从请求体中直接读取原始字符串(即 encryptedData
string req;
using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
{
req = await reader.ReadToEndAsync();
}
var data = await _app.UpdateTask(req, secret);
result.data = data.Result;
result.code = data.Code;
result.message = data.Message;
2025-08-25 11:09:38 +08:00
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
2025-07-07 13:59:05 +08:00
Response.Headers.Add("x-lc-secret", data.Secret);
}
catch (Exception ex)
{
result.code = 200;
result.message = "error";
2025-08-25 11:09:38 +08:00
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
2025-07-07 13:59:05 +08:00
}
return result;
}
else
{
throw new Exception("Missing required header: x-lc-secret");
}
}
else
{
throw new Exception("unauthorized");
}
}
else
{
throw new Exception("Missing required header: x-lc-token");
}
}
/// <summary>
/// 取消无人机任务
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
[Route("/zhcfzx/droneAirport/cancelTask")]
[HttpGet]
[AllowAnonymous]
public async Task<ReciveData<string>> cancelTask(string taskid)
{
var result = new ReciveData<string>();
if (Request.Headers.TryGetValue("x-lc-token", out var tokenValue))
{
var tokenflag = _helper.Verify(tokenValue);
if (tokenflag)
{
try
{
var data = await _app.CancelTask(taskid);
result.data = data.Result;
result.code = data.Code;
result.message = data.Message;
2025-08-25 11:09:38 +08:00
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
2025-07-07 13:59:05 +08:00
Response.Headers.Add("x-lc-secret", data.Secret);
}
catch (Exception ex)
{
result.code = 200;
result.message = "error";
2025-08-25 11:09:38 +08:00
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
2025-07-07 13:59:05 +08:00
}
return result;
}
else
{
throw new Exception("unauthorized");
}
}
else
{
throw new Exception("Missing required header: x-lc-token");
}
}
2025-07-08 15:17:24 +08:00
2025-08-27 14:20:52 +08:00
/// <summary>
/// 省任务获取无人机状态信息
/// </summary>
/// <param name="deviceid"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
2025-07-08 15:17:24 +08:00
[HttpGet]
[AllowAnonymous]
[Route("/zhcfzx/droneAirport/getDroneStatus")]
public async Task<ReciveData<string>> GetDroneStatus(string deviceid)
2025-07-08 15:17:24 +08:00
{
2025-08-26 09:54:05 +08:00
2025-07-08 15:17:24 +08:00
var result = new ReciveData<string>();
if (Request.Headers.TryGetValue("x-lc-token", out var tokenValue))
{
//var tokenflag = _helper.Verify(tokenValue);
var tokenflag = true;
2025-07-08 15:17:24 +08:00
if (tokenflag)
{
try
{
var inResult = await _app.GetDroneStatus(deviceid);
var response = new ResData();
if (inResult.code == 200)
{
string xLcSecret = _helper.getxseret();
// 转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(inResult));
var encryptedResData = _helper.Encrypt(bytes);
response.Result = encryptedResData;
response.Message = "获取无人机状态成功!";
response.Code = 200;
response.Secret = xLcSecret;
}
else
{
string xLcSecret = _helper.getxseret();
// 转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(" ");
var encryptedResData = _helper.Encrypt(bytes);
response.Result = encryptedResData;
response.Message = "获取无人机状态失败!";
response.Code = 500;
response.Secret = xLcSecret;
}
result.data = response.Result;
result.code = response.Code;
result.message = response.Message;
2025-08-25 11:09:38 +08:00
result.traceid = Guid.NewGuid().ToString();
Response.Headers.Add("x-lc-secret", response.Secret);
2025-07-08 15:17:24 +08:00
}
catch (Exception ex)
{
result.code = 200;
result.message = "error";
2025-08-25 11:09:38 +08:00
result.traceid = Guid.NewGuid().ToString();
2025-07-08 15:17:24 +08:00
}
return result;
}
else
{
throw new Exception("unauthorized");
}
}
else
{
throw new Exception("Missing required header: x-lc-token");
}
}
2025-07-08 15:17:24 +08:00
/// <summary>
/// 无人机任务进度查询
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
[Route("/zhcfzx/droneAirport/queryTaskStatus")]
[HttpPost]
[AllowAnonymous]
public async Task<ReciveData<string>> queryTaskStatus(string taskid)
{
var result = new ReciveData<string>();
if (Request.Headers.TryGetValue("x-lc-token", out var tokenValue))
{
var tokenflag = _helper.Verify(tokenValue);
if (tokenflag)
{
// 获取请求头中的x-lc-secret
if (Request.Headers.TryGetValue("x-lc-secret", out var secretValue))
{
string secret = secretValue.ToString();
try
{
// 1. 从请求体中直接读取原始字符串(即 encryptedData
string req;
using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
{
req = await reader.ReadToEndAsync();
}
var data = await _app.queryTaskStatus(req, secret);
result.data = data.Result;
result.code = data.Code;
result.message = data.Message;
2025-08-25 11:09:38 +08:00
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
2025-07-08 15:17:24 +08:00
Response.Headers.Add("x-lc-secret", data.Secret);
}
catch (Exception ex)
{
result.code = 200;
result.message = "error";
2025-08-25 11:09:38 +08:00
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
2025-07-08 15:17:24 +08:00
}
return result;
}
else
{
throw new Exception("Missing required header: x-lc-secret");
}
}
else
{
throw new Exception("unauthorized");
}
}
else
{
throw new Exception("Missing required header: x-lc-token");
}
}
2025-07-17 10:25:22 +08:00
/// <summary>
/// 校验token
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public Response<bool> VerifyToken(string token)
{
Response<bool> result= new Response<bool>();
try
{
var tokenflag = _helper.Verify(token);
if (tokenflag)
{
result.Message = "校验成功";
result.Result = true;
}
else
{
result.Message = "校验失败";
result.Result = false;
result.Code = 500;
}
return result ;
}
catch (Exception ex)
{
result.Code = 500;
result.Message = "error";
return result;
}
}
2025-07-17 15:18:57 +08:00
/// <summary>
/// 获取省对接任务列表
/// </summary>
/// <param name="keyWord">名称筛选</param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public async Task<Response<PageInfo<List<DroneDockRes>>>> GetDroneDockInfos(string keyWord, int page, int limit)
{
return await _app.GetDroneDockInfos(keyWord, page, limit);
}
/// <summary>
/// 前端任务获取
/// </summary>
/// <param name="taskid">执行任务id</param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public async Task<Response<DroneDockflightRes>> GetDroneDockflightInfos(string taskid)
{
return await _app.GetDroneDockflightInfos(taskid);
}
2025-07-31 10:18:30 +08:00
/// <summary>
/// 获取临时上传地址
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public async Task<Response<string>> getUploadFilePath([FromBody] AirPortUploadReq req)
{
var result = new Response<string>();
try
{
result = await _app.getUploadFilePath(req);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
2025-08-05 09:00:52 +08:00
[HttpPost]
[AllowAnonymous]
2025-08-20 10:35:42 +08:00
public async Task<Response<string>> UploadFile(AirPortUploadDbReq req) {
2025-08-05 09:00:52 +08:00
var result = new Response<string>();
try
{
2025-08-20 10:35:42 +08:00
result = await _app.UploadFile(req);
2025-08-05 09:00:52 +08:00
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
2025-07-31 10:18:30 +08:00
[HttpGet]
[AllowAnonymous]
[Route("/zhcfzx/droneAirport/getResult")]
public async Task<ReciveData<string>> getResult(string taskid)
{
var result = new ReciveData<string>();
if (Request.Headers.TryGetValue("x-lc-token", out var tokenValue))
{
var tokenflag = _helper.Verify(tokenValue);
if (tokenflag)
{
try
{
var data = await _app.getResult(taskid);
result.data = data.Result;
result.code = data.Code;
result.message = data.Message;
2025-08-25 11:09:38 +08:00
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
2025-07-31 10:18:30 +08:00
Response.Headers.Add("x-lc-secret", data.Secret);
}
catch (Exception ex)
{
result.code = 200;
result.message = "error";
2025-08-25 11:09:38 +08:00
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
2025-07-31 10:18:30 +08:00
}
return result;
}
else
{
throw new Exception("unauthorized");
}
}
else
{
throw new Exception("Missing required header: x-lc-token");
}
}
2025-08-20 09:22:43 +08:00
[HttpGet]
[AllowAnonymous]
public async Task<ReciveData<string>> dbupload (string taskid)
{
var result = new ReciveData<string>();
_app.InsertDb(taskid);
result.code = 200;
2025-08-20 10:35:42 +08:00
result.message = "success";
2025-08-20 09:22:43 +08:00
return result;
}
}
}