|
|
|
@ -14,15 +14,24 @@ namespace Video.DomainService |
|
|
|
{ |
|
|
|
{ |
|
|
|
private readonly ILogger<DahuaGeneralCtlService> _logger; |
|
|
|
private readonly ILogger<DahuaGeneralCtlService> _logger; |
|
|
|
private readonly IConfiguration _configuration; |
|
|
|
private readonly IConfiguration _configuration; |
|
|
|
private readonly HttpClient _http; |
|
|
|
// private readonly HttpClient _http; |
|
|
|
|
|
|
|
|
|
|
|
public DahuaGeneralCtlService(ILogger<DahuaGeneralCtlService> logger, IConfiguration configuration, HttpClient http) |
|
|
|
public DahuaGeneralCtlService(ILogger<DahuaGeneralCtlService> logger, IConfiguration configuration) |
|
|
|
{ |
|
|
|
{ |
|
|
|
_logger = logger; |
|
|
|
_logger = logger; |
|
|
|
_configuration = configuration; |
|
|
|
_configuration = configuration; |
|
|
|
_http = http; |
|
|
|
|
|
|
|
|
|
|
|
//_http = http; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 开发测试的时候,忽略证书 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
private static readonly HttpClient _http = new HttpClient(new HttpClientHandler |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
|
/// 获取公钥 |
|
|
|
/// 获取公钥 |
|
|
|
/// </summary> |
|
|
|
/// </summary> |
|
|
|
@ -58,6 +67,9 @@ namespace Video.DomainService |
|
|
|
catch (Exception ex) |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
{ |
|
|
|
_logger.LogWarning(ex, "大华平台获取公钥出错"); |
|
|
|
_logger.LogWarning(ex, "大华平台获取公钥出错"); |
|
|
|
|
|
|
|
result.Success = false; |
|
|
|
|
|
|
|
result.Code = "1001"; |
|
|
|
|
|
|
|
result.Msg = "获取大华公钥失败"; |
|
|
|
} |
|
|
|
} |
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -69,7 +81,7 @@ namespace Video.DomainService |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
public async Task<DaHApiResult<LoginResDto>> GetToken(LoginRequestDto dto) |
|
|
|
public async Task<DaHApiResult<LoginResDto>> GetToken(LoginRequestDto dto) |
|
|
|
{ |
|
|
|
{ |
|
|
|
DaHApiResult<LoginResDto> result = new() { Success = true, Code = "0" }; |
|
|
|
DaHApiResult<LoginResDto> result = new() { Success = true, Code = "0", Data = new LoginResDto { } }; |
|
|
|
if (dto is null) |
|
|
|
if (dto is null) |
|
|
|
{ |
|
|
|
{ |
|
|
|
result.Success = false; |
|
|
|
result.Success = false; |
|
|
|
@ -104,8 +116,9 @@ namespace Video.DomainService |
|
|
|
result.Msg = "获取大华登录令牌失败"; |
|
|
|
result.Msg = "获取大华登录令牌失败"; |
|
|
|
_logger.LogWarning("获取大华登录令牌失败,返回结果:{Result}", result); |
|
|
|
_logger.LogWarning("获取大华登录令牌失败,返回结果:{Result}", result); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
result = tokenInfo!; |
|
|
|
//固定的拼接方式 |
|
|
|
//固定的拼接方式 |
|
|
|
result.Data.AccessToken = string.Concat(tokenInfo!.Data.TokenType, " ", tokenInfo.Data.AccessToken); |
|
|
|
result.Data.AccessToken = string.Concat(tokenInfo?.Data.TokenType, " ", tokenInfo?.Data.AccessToken); |
|
|
|
} |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
{ |
|
|
|
@ -136,9 +149,7 @@ namespace Video.DomainService |
|
|
|
{ |
|
|
|
{ |
|
|
|
// 2) Token:优先入参,其次缓存/获取(建议返回完整的 "Bearer xxx") |
|
|
|
// 2) Token:优先入参,其次缓存/获取(建议返回完整的 "Bearer xxx") |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var token = string.IsNullOrWhiteSpace(dto.Token) |
|
|
|
var token = "12"; /*string.IsNullOrWhiteSpace(dto.Token) ? await GetCachedOrFetchTokenAsync(clientId) : dto.Token;*/ |
|
|
|
? await GetCachedOrFetchTokenAsync(clientId) |
|
|
|
|
|
|
|
: dto.Token; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/video/stream/record"; |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/video/stream/record"; |
|
|
|
|
|
|
|
|
|
|
|
@ -190,9 +201,7 @@ namespace Video.DomainService |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var token = string.IsNullOrWhiteSpace(dto.Token) |
|
|
|
var token = "11"; /*string.IsNullOrWhiteSpace(dto.Token) ? await GetCachedOrFetchTokenAsync(clientId) : dto.Token;*/ |
|
|
|
? await GetCachedOrFetchTokenAsync(clientId) // 建议用这个轻量封装;返回完整 "Bearer xxx" |
|
|
|
|
|
|
|
: dto.Token; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/SS/Record/QueryRecords"; |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/SS/Record/QueryRecords"; |
|
|
|
|
|
|
|
|
|
|
|
@ -487,9 +496,7 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
|
|
// 先用缓存里的 token,不足5分钟过期再刷新(按你之前的口径来) |
|
|
|
// 先用缓存里的 token,不足5分钟过期再刷新(按你之前的口径来) |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var clientId = _configuration["DahuaAuth:ClientId"]; |
|
|
|
var token = string.IsNullOrWhiteSpace(dto.Token) |
|
|
|
var token = await GetCachedOrFetchTokenAsync(clientId);// string.IsNullOrWhiteSpace(dto.Token) ? await GetCachedOrFetchTokenAsync(clientId) : dto.Token; |
|
|
|
? await GetCachedOrFetchTokenAsync(clientId) |
|
|
|
|
|
|
|
: dto.Token; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/video/stream/record"; |
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/video/stream/record"; |
|
|
|
|
|
|
|
|
|
|
|
|