Merge pull request '修改了一些东西' (#22) from dev_lx into main

Reviewed-on: #22
pull/23/head
刘鑫 2 months ago
commit 85a6bac9e6
  1. 11
      WeiCloud.Fusion/Common.SharedService/Common.Shared.Application/DaHua/RequestDto/DahuaVideoQueryDto.cs
  2. 64
      WeiCloud.Fusion/VideoService/Video.API/Controllers/DaHua/VideoManageController.cs
  3. 2
      WeiCloud.Fusion/VideoService/Video.DomainService/Dahvision/DahuaGeneralCtlService.cs

@ -1,7 +1,4 @@
using System; using System.Text.Json.Serialization;
using System.Collections.Generic;
using System.Text;
using System.Text.Json.Serialization;
namespace Common.Shared.Application.DaHua namespace Common.Shared.Application.DaHua
{ {
@ -324,20 +321,20 @@ namespace Common.Shared.Application.DaHua
/// 注意:月份、日期、时间无前导零 /// 注意:月份、日期、时间无前导零
/// </summary> /// </summary>
[JsonPropertyName("starttime")] [JsonPropertyName("starttime")]
public DateTime Starttime { get; set; } public required string Starttime { get; set; }
/// <summary> /// <summary>
/// 结束时间,格式:yyyy_M_d_HH_mm_ss(如:2023_3_23_18_48_36) /// 结束时间,格式:yyyy_M_d_HH_mm_ss(如:2023_3_23_18_48_36)
/// 注意:月份、日期、时间无前导零 /// 注意:月份、日期、时间无前导零
/// </summary> /// </summary>
[JsonPropertyName("endtime")] [JsonPropertyName("endtime")]
public DateTime Endtime { get; set; } public required string Endtime { get; set; }
/// <summary> /// <summary>
/// 录像回放类型:2-设备录像,3-中心录像 /// 录像回放类型:2-设备录像,3-中心录像
/// </summary> /// </summary>
[JsonPropertyName("videoType")] [JsonPropertyName("videoType")]
public string VideoType { get; set; } public required string VideoType { get; set; }
/// <summary> /// <summary>
/// 鉴权 Token(access_token),来自认证接口 /// 鉴权 Token(access_token),来自认证接口

@ -1,4 +1,5 @@
using Common.Shared.Application.DaHua; using Common.Shared.Application.DaHua;
using Common.Shared.DomainService;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Video.DomainService; using Video.DomainService;
using WeiCloud.Core.BaseModels; using WeiCloud.Core.BaseModels;
@ -15,6 +16,7 @@ namespace Video.API.Controllers.DaHua
private readonly ILogger<VideoManageController> _logger; private readonly ILogger<VideoManageController> _logger;
private readonly IDahuaGeneralCtlService _dahGeneralCtlService; private readonly IDahuaGeneralCtlService _dahGeneralCtlService;
private readonly IConfiguration _configuration; private readonly IConfiguration _configuration;
private readonly ITokenProviderService _tokenProviderService;
/// <summary> /// <summary>
/// 构造 /// 构造
@ -22,11 +24,12 @@ namespace Video.API.Controllers.DaHua
/// <param name="logger"></param> /// <param name="logger"></param>
/// <param name="dahGeneralCtlService"></param> /// <param name="dahGeneralCtlService"></param>
/// <param name="configuration"></param> /// <param name="configuration"></param>
public VideoManageController(ILogger<VideoManageController> logger, IDahuaGeneralCtlService dahGeneralCtlService, IConfiguration configuration) public VideoManageController(ILogger<VideoManageController> logger, IDahuaGeneralCtlService dahGeneralCtlService, IConfiguration configuration, ITokenProviderService tokenProviderService)
{ {
_logger = logger; _logger = logger;
_dahGeneralCtlService = dahGeneralCtlService; _dahGeneralCtlService = dahGeneralCtlService;
_configuration = configuration; _configuration = configuration;
_tokenProviderService = tokenProviderService;
} }
#region 大华视频处理 #region 大华视频处理
@ -91,40 +94,47 @@ namespace Video.API.Controllers.DaHua
/// </summary> /// </summary>
/// <param name="dto"></param> /// <param name="dto"></param>
/// <returns></returns> /// <returns></returns>
[HttpGet("download/dh")] [HttpPost("download/dh")]
public async Task<string> DownloadVideoAsync(PlayDownloadReqDto dto) public async Task<IActionResult> DownloadVideoAsync(PlayDownloadReqDto dto)
{ {
var clientId = _configuration["DahuaAuth:ClientId"];
var token = await _tokenProviderService.GetTokenAsync(clientId!);
if (!_tokenProviderService.IsTokenValid(token))
{
_logger.LogWarning("通道分页查询失败:token无效");
return StatusCode(500, new { success = false, message = "下载失败" });
}
var remoteUrl = var remoteUrl =
$"https://{_configuration["DahHost"]}/evo-apigw/evo-httpnode/vod/cam/download.mp4" + $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/evo-httpnode/vod/cam/download.mp4" +
$"?vcuid={dto.Vcuid}" + $"?vcuid={dto.Vcuid}" +
$"&subtype=1" + $"&subtype=1" +
$"&starttime={dto.Starttime:yyyy_MM_dd_HH_mm_ss}" + $"&starttime={dto.Starttime:yyyy_MM_dd_HH_mm_ss}" +
$"&endtime={dto.Endtime:yyyy_MM_dd_HH_mm_ss}" + $"&endtime={dto.Endtime:yyyy_MM_dd_HH_mm_ss}" +
$"&videoType={dto.VideoType}" + $"&videoType={dto.VideoType}" +
$"&token={dto.Token}" + $"&token={token}" +
$"&recordType={dto.RecordType}"; $"&recordType={dto.RecordType}";
return await Task.FromResult(remoteUrl); // return await Task.FromResult(remoteUrl);
//try try
//{ {
// var handler = new HttpClientHandler var handler = new HttpClientHandler
// { {
// ServerCertificateCustomValidationCallback = (_, _, _, _) => true ServerCertificateCustomValidationCallback = (_, _, _, _) => true
// }; };
// using var http = new HttpClient(handler); using var http = new HttpClient(handler);
// var resp = await http.GetAsync(remoteUrl, HttpCompletionOption.ResponseHeadersRead); var resp = await http.GetAsync(remoteUrl, HttpCompletionOption.ResponseHeadersRead);
// resp.EnsureSuccessStatusCode(); resp.EnsureSuccessStatusCode();
// var stream = await resp.Content.ReadAsStreamAsync(); var stream = await resp.Content.ReadAsStreamAsync();
// var contentType = "video/mp4"; var contentType = "video/mp4";
// return File(stream, contentType, "video.mp4"); return File(stream, contentType, "video.mp4");
//} }
//catch (Exception ex) catch (Exception ex)
//{ {
// return StatusCode(500, new { success = false, message = "下载失败", error = ex.Message }); return StatusCode(500, new { success = false, message = "下载失败", error = ex.Message });
//} }
} }
/// <summary> /// <summary>

@ -496,7 +496,7 @@ namespace Video.DomainService
{ {
url = dto.IpAddress; url = dto.IpAddress;
} }
return url + $"/evo-apigw/evo-httpnode/vod/cam/download.mp4?vcuid={dto.Vcuid}&subtype={dto.Subtype}&starttime={dto.StartTime}endtime={dto.EndTime}&videoType={dto.VideoType}&token={token}&recordType={dto.RecordType}"; return $"https://" + url + $" /evo-apigw/evo-httpnode/vod/cam/download.mp4?vcuid={dto.Vcuid}&subtype={dto.Subtype}&starttime={dto.StartTime}endtime={dto.EndTime}&videoType={dto.VideoType}&token={token}&recordType={dto.RecordType}";
} }
} }
} }
Loading…
Cancel
Save