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 { }); } } }