|
|
|
|
@ -45,7 +45,7 @@ namespace Video.DomainService |
|
|
|
|
// 1) 参数校验 + 早退 |
|
|
|
|
if (dto == null || string.IsNullOrWhiteSpace(dto.Data.ChannelId)) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("录像请求失败:通道ID不能为空"); |
|
|
|
|
_logger.LogError("录像请求失败:通道ID不能为空"); |
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1007", Msg = "通道ID不能为空" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -114,7 +114,6 @@ namespace Video.DomainService |
|
|
|
|
// 0) 参数校验 + 早退(按需增加更多必填校验) |
|
|
|
|
if (dto == null) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("查询录像信息失败:请求参数不能为空"); |
|
|
|
|
return new DaHApiResult<RecordsResDto> { Success = false, Code = "1009", Msg = "请求参数不能为空" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -122,7 +121,6 @@ namespace Video.DomainService |
|
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
if (!_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("查询普通录像信息列表:token无效"); |
|
|
|
|
return new DaHApiResult<RecordsResDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
} |
|
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/SS/Record/QueryRecords"; |
|
|
|
|
@ -144,14 +142,12 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("查询录像信息 HTTP 失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
return new DaHApiResult<RecordsResDto> { Success = false, Code = "1008", Msg = $"HTTP错误 {(int)resp.StatusCode}" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<RecordsResDto>>(body); |
|
|
|
|
if (result == null || !result.Success) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("查询录像信息业务失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<RecordsResDto> { Success = false, Code = "1008", Msg = "查询录像信息失败" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -175,7 +171,6 @@ namespace Video.DomainService |
|
|
|
|
{ |
|
|
|
|
if (dto == null) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("通道分页查询失败:请求参数不能为空"); |
|
|
|
|
return new DaHApiResult<PageInfoDto> { Success = false, Code = "1009", Msg = "请求参数不能为空" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -183,7 +178,6 @@ namespace Video.DomainService |
|
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
if (!_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("通道分页查询失败:token无效"); |
|
|
|
|
return new DaHApiResult<PageInfoDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -206,14 +200,12 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("通道分页查询 HTTP 失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
return new DaHApiResult<PageInfoDto> { Success = false, Code = "1007", Msg = $"HTTP错误 {(int)resp.StatusCode}" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<PageInfoDto>>(body); |
|
|
|
|
if (result == null || !result.Success) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("通道分页查询业务失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<PageInfoDto> { Success = false, Code = "1007", Msg = $"通道分页查询失败" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -378,7 +370,6 @@ namespace Video.DomainService |
|
|
|
|
// 参数校验 + 早退 |
|
|
|
|
if (dto == null || string.IsNullOrWhiteSpace(dto.Data.ChannelId)) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("录像请求失败:通道ID不能为空"); |
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1007", Msg = "通道ID不能为空" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -387,7 +378,6 @@ namespace Video.DomainService |
|
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
if (!_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("rtsp录像回放:token无效"); |
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -424,7 +414,6 @@ namespace Video.DomainService |
|
|
|
|
var resultRecord = JsonSerializer.Deserialize<DaHApiResult<RecordDataResDto>>(bodys); |
|
|
|
|
if (resultRecord == null || !resultRecord.Success) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("查询普通录像信息: {Body}", bodys); |
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1008", Msg = "查询普通录像信息" }; |
|
|
|
|
} |
|
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/admin/API/SS/Playback/StartPlaybackByTime"; |
|
|
|
|
@ -450,14 +439,12 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("录像请求 HTTP 失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1008", Msg = $"HTTP错误 {(int)resp.StatusCode}" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<UrlDataDto>>(body); |
|
|
|
|
if (result == null || !result.Success) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("录像请求业务失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1008", Msg = "录像请求失败" }; |
|
|
|
|
} |
|
|
|
|
result.Data!.Url = UrlHostReplacer.ReplaceHost( |
|
|
|
|
@ -487,7 +474,6 @@ namespace Video.DomainService |
|
|
|
|
{ |
|
|
|
|
if (dto == null || dto.Data == null) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("实时流请求失败:请求参数不能为空"); |
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1005", Msg = "请求参数不能为空" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -496,7 +482,6 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
if (!_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("rtsp实时预览接口方式:token无效"); |
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -522,15 +507,12 @@ namespace Video.DomainService |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("实时流请求 HTTP 失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
|
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1014", Msg = $"HTTP错误 {(int)resp.StatusCode}" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<UrlDataDto>>(body); |
|
|
|
|
if (result == null || !result.Success) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("实时流请求业务反序列化失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1013", Msg = "实时流请求业务反序列化失败" }; |
|
|
|
|
} |
|
|
|
|
result.Data!.Url = UrlHostReplacer.ReplaceHost( |
|
|
|
|
@ -544,7 +526,7 @@ namespace Video.DomainService |
|
|
|
|
catch (Exception ex) |
|
|
|
|
{ |
|
|
|
|
_logger.LogError(ex, $"大华实时流请求出错{ex.Message}"); |
|
|
|
|
_logger.LogWarning($"{ex.Message}"); |
|
|
|
|
|
|
|
|
|
return new DaHApiResult<UrlDataDto> { Success = false, Code = "1012", Msg = $"实时流请求失败{ex.Message}" }; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -561,7 +543,6 @@ namespace Video.DomainService |
|
|
|
|
var token = await _tokenProviderService.GetTokenAsync(clientId!); |
|
|
|
|
if (!_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("下载:token无效"); |
|
|
|
|
return "下载地址无效"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -587,7 +568,6 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
if (!_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("抓拍接口方式:token无效"); |
|
|
|
|
return new DaHApiResult<SnapshotResDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -610,20 +590,16 @@ namespace Video.DomainService |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("抓拍 失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
|
|
|
|
|
return new DaHApiResult<SnapshotResDto> { Success = false, Code = "1014", Msg = $"抓拍错误 {(int)resp.StatusCode}" }; |
|
|
|
|
} |
|
|
|
|
var outer = JsonSerializer.Deserialize<DaHApiResult<string>>(body); |
|
|
|
|
if (outer == null || !outer.Success || outer.Data == null) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("抓拍请求业务失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<SnapshotResDto> { Success = false, Code = "1013", Msg = "抓拍请求失败" }; |
|
|
|
|
} |
|
|
|
|
var result = JsonSerializer.Deserialize<SnapResponseVO>(outer.Data); |
|
|
|
|
if (result == null) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("抓拍请求业务反序列化失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<SnapshotResDto> { Success = false, Code = "1013", Msg = "抓拍反序列化失败" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -654,7 +630,6 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
if (!_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("控制云台镜头接口方式:token无效"); |
|
|
|
|
return new DaHApiResult<CameraControlResDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -676,20 +651,16 @@ namespace Video.DomainService |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("控制云台镜头失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
|
|
|
|
|
return new DaHApiResult<CameraControlResDto> { Success = false, Code = "1014", Msg = $"控制云台镜头错误 {(int)resp.StatusCode}" }; |
|
|
|
|
} |
|
|
|
|
var outer = JsonSerializer.Deserialize<DaHApiResult<CameraControlResDto>>(body); |
|
|
|
|
if (outer == null || !outer.Success || outer.Data == null) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("控制云台镜头请求业务失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<CameraControlResDto> { Success = false, Code = "1013", Msg = "控制云台镜头请求失败" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (outer.Data == null) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("控制云台镜头请求业务反序列化失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<CameraControlResDto> { Success = false, Code = "1013", Msg = "控制云台镜头反序列化失败" }; |
|
|
|
|
} |
|
|
|
|
apiResult.Data = outer.Data; |
|
|
|
|
@ -717,7 +688,6 @@ namespace Video.DomainService |
|
|
|
|
|
|
|
|
|
if (!_tokenProviderService.IsTokenValid(token)) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("云台方向控制接口方式:token无效"); |
|
|
|
|
return new DaHApiResult<CameraControlResDto> { Success = false, Code = "1009", Msg = "token无效" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -739,20 +709,16 @@ namespace Video.DomainService |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("云台方向控制失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
|
|
|
|
|
return new DaHApiResult<CameraControlResDto> { Success = false, Code = "1014", Msg = $"云台方向控制错误 {(int)resp.StatusCode}" }; |
|
|
|
|
} |
|
|
|
|
var outer = JsonSerializer.Deserialize<DaHApiResult<CameraControlResDto>>(body); |
|
|
|
|
if (outer == null || !outer.Success || outer.Data == null) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("云台方向控制请求业务失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<CameraControlResDto> { Success = false, Code = "1013", Msg = "云台方向控制请求失败" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (outer.Data == null) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("云台方向控制请求业务反序列化失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<CameraControlResDto> { Success = false, Code = "1013", Msg = "云台方向控制反序列化失败" }; |
|
|
|
|
} |
|
|
|
|
apiResult.Data = outer.Data; |
|
|
|
|
|