|
|
|
|
@ -75,12 +75,21 @@ class CameraMonitoringController extends Controller
|
|
|
|
|
$health->fill([
|
|
|
|
|
'status' => $r['healthStatus'] ?? ($r['pushStatus'] ?? ($r['sdkStatus'] ?? 'UNKNOWN')),
|
|
|
|
|
'sdk_status' => $r['sdkStatus'] ?? null,
|
|
|
|
|
'tcp_reachable' => array_key_exists('tcpReachable', $r) ? $r['tcpReachable'] : null,
|
|
|
|
|
'last_pdc_at' => $r['lastPdcAt'] ?? null,
|
|
|
|
|
'pdc_count' => $r['pdcCount'] ?? 0,
|
|
|
|
|
'push_age_seconds' => ($r['pushAgeSeconds'] ?? -1) >= 0 ? $r['pushAgeSeconds'] : null,
|
|
|
|
|
'last_tcp_error' => $r['networkReason'] ?? null,
|
|
|
|
|
'reconnect_attempts' => $r['autoReconnectFailures'] ?? 0,
|
|
|
|
|
'observed_at' => now(),
|
|
|
|
|
])->save();
|
|
|
|
|
// 设备已重新登录在线时,页面刷新也应同步关闭同场馆的遗留告警。
|
|
|
|
|
if (($r['sdkStatus'] ?? null) === 'ONLINE' && $camera->venue_id) {
|
|
|
|
|
CameraAlert::query()
|
|
|
|
|
->where('venue_id', $camera->venue_id)
|
|
|
|
|
->whereIn('status', ['OPEN', 'ACKNOWLEDGED'])
|
|
|
|
|
->update(['status' => 'RESOLVED', 'recovered_at' => now()]);
|
|
|
|
|
}
|
|
|
|
|
$health->setAttribute('last_pdc_at_source', $r['lastPdcAt'] ?? null);
|
|
|
|
|
$camera->setRelation('health', $health);
|
|
|
|
|
});
|
|
|
|
|
|