using System.Text;
using Infrastructure;
using Infrastructure.Helpers;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using OpenAuth.App.ServiceApp.Request;
using OpenAuth.WebApi.Model.RabbitMQService;
namespace OpenAuth.WebApi.Controllers.ServiceControllers
{
///
/// 大华ai接口
///
[Route("api/[controller]/[action]")]
[ApiController]
public class DaHuaAiController : ControllerBase
{
private readonly string ak = "e3d019924e7f40089bcffba4";
private readonly string sk = "cf83a12caa155b994eb34fa9";
private readonly string baseUrl = "https://123.132.248.154:6405";
private readonly RabbitMqListenerService _listener;
public DaHuaAiController(RabbitMqListenerService listener)
{
_listener = listener;
}
private async Task> PostJsonAsync(string path, object body)
{
var handler = new HttpClientHandler
{
// 忽略服务器证书
ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true
};
var headers = DHHeaderUtil.BuildHeader(ak, sk, "POST", path);
var url = $"{baseUrl}{path}";
using var httpClient = new HttpClient(handler);
foreach (var kv in headers)
{
httpClient.DefaultRequestHeaders.Add(kv.Key, kv.Value);
}
var jsonBody = JsonConvert.SerializeObject(body ?? new { });
var content = new StringContent(jsonBody, Encoding.UTF8, "application/json");
try
{
var response = await httpClient.PostAsync(url, content);
var responseContent = await response.Content.ReadAsStringAsync();
return new Response { Result = responseContent };
}
catch (Exception ex)
{
return new Response { Result = ex.Message };
}
}
///
/// 分页查询车辆分析
///
///
///
///
[HttpPost]
[AllowAnonymous]
public Task> GetTasksList(int page, int limit)
{
return PostJsonAsync($"/processing/analysis/vehicle/tasks?start={page}&limit={limit}", new
{
channelIds = new[] { "sdhc" }
});
}
[HttpPost]
[AllowAnonymous]
[Obsolete]
public async Task> GetTasksList1(int page, int limit)
{
var handler = new HttpClientHandler();
// 忽略服务器证书
handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true;
// 假设 DHHeaderUtil 返回 Dictionary
string ak = "e3d019924e7f40089bcffba4";
string sk = "cf83a12caa155b994eb34fa9";
var headers = DHHeaderUtil.BuildHeader(ak, sk, "POST", $"/processing/analysis/vehicle/tasks?start={page}&limit={limit}");
// 要请求的 URL
var url = $"https://123.132.248.154:6405/processing/analysis/vehicle/tasks?start={page}&limit={limit}";
// 请求体(JSON)
var data = new
{
channelIds = new[]
{
"sdhc"
}
};
var jsonBody = JsonConvert.SerializeObject(data);
using var httpClient = new HttpClient(handler);
// 添加请求头
// 只把非 Content-Type 的头加到 request
foreach (var kv in headers)
{
if (kv.Key.Equals("Content-Type", StringComparison.OrdinalIgnoreCase))
continue;
httpClient.DefaultRequestHeaders.Add(kv.Key, kv.Value);
}
// 创建 HttpContent
var content = new StringContent(jsonBody, Encoding.UTF8, "application/json");
try
{
var response = await httpClient.PostAsync(url, content);
var responseContent = await response.Content.ReadAsStringAsync();
return new Response()
{
Result = responseContent
};
}
catch (Exception ex)
{
return new Response()
{
Result = ex.Message
};
}
}
///
/// 获取算法列表
///
///
///
///
[HttpPost]
[AllowAnonymous]
public Task> GetsupportList(int page, int limit)
{
return PostJsonAsync($"/processing/engine/algorithms/support?currentPage={page}&pageSize={limit}", new { });
}
///
/// 查询算法参数描述文件接口
///
///
///
///
///
[HttpPost]
[AllowAnonymous]
public Task> Getconfig(string version, int functionType, string algorithmCode)
{
return PostJsonAsync("/processing/engine/algorithms/isd/config/get", new
{
version,
functionType,
algorithmCode
});
}
///
/// 创建行为场景分析任务
///
/// 参数详见文档7.1.3.3. 创建行为场景分析任务
///
[HttpPost]
[AllowAnonymous]
public async Task> CreateTasks(DaHuaTaskInfo data)
{
await _listener.AddQueueBindingAsync("processing_event1", "topic", $"event.behaviorAlarm.1.{data.channelId}");
return await PostJsonAsync("/processing/behavior/realtime/tasks", data);
}
///
/// 模拟添加队列
///
///
[HttpPost]
[AllowAnonymous]
public async void AddQueueBinding(string channelId)
{
await _listener.AddQueueBindingAsync("processing_event", "topic", $"event.trafficJunction.1.{channelId}");
}
///
/// 删除行为场景分析任务
///
/// 行为场景分析任务id
///
[HttpPost]
[AllowAnonymous]
public Task> DeleteTasks(string taskId)
{
return PostJsonAsync($"/processing/behavior/realtime/tasks/{taskId}", new { });
}
///
/// 查看场景认知通用分析任务列表
///
///
///
/// 分析类型,仅支持0:智能分析
///
[HttpPost]
[AllowAnonymous]
public Task> GetTasks(int page, int limit, int analysisType)
{
return PostJsonAsync($"/processing/behavior/realtime/tasks?currentPage={page}&pageSize={limit}&analysisType={analysisType}", new { });
}
///
/// 获取智能流播放地址
///
/// taskId
/// 智能流类型,当前仅支持2: 行为
/// 行为场景智能流仅支持type=1
///
[HttpPost]
[AllowAnonymous]
public Task> GetChannel(string id, int streamType, int type)
{
return PostJsonAsync($"/processing/inner/play/channel/{id}?streamType={streamType}&type={type}", new { });
}
}
}