具备界面基础功能

This commit is contained in:
2026-01-01 22:40:32 +08:00
parent 0c86b4dad3
commit d039559402
81 changed files with 8333 additions and 1905 deletions

View File

@@ -0,0 +1,90 @@
namespace SHH.CameraDashboard;
public partial class CameraRepository
{
#region PtzControlAsync
/// <summary>
/// 发送 PTZ 控制指令
/// </summary>
public async Task<bool> PtzControlAsync(long cameraId, PtzControlDto payload)
{
var serviceNode = AppGlobal.UseServiceNode;
if (serviceNode == null) return false;
string requestUrl = $"http://{serviceNode.ServiceNodeIp}:{serviceNode.ServiceNodePort}{WebApiRoutes.Cameras.Ptz(cameraId.ToString())}";
try
{
string json = JsonHelper.Serialize(payload);
await WebApiService.Instance.PostAsync(requestUrl, json, "PTZ控制");
return true;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"PTZ控制失败: {ex.Message}");
return false;
}
}
#endregion
#region (Maintenance)
/// <summary>
/// [修正] 发送校时指令
/// 修正点:后端 [FromBody] DateTime 需要接收带双引号的标准 ISO 时间字符串
/// </summary>
public async Task<bool> SyncTimeAsync(long cameraId)
{
var serviceNode = AppGlobal.UseServiceNode;
if (serviceNode == null) return false;
string requestUrl = $"http://{serviceNode.ServiceNodeIp}:{serviceNode.ServiceNodePort}{WebApiRoutes.Cameras.Time(cameraId.ToString())}";
try
{
// 1. 获取当前时间,格式化为标准 ISO 8601 (yyyy-MM-ddTHH:mm:ss)
string timeStr = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
// 2. [关键] 手动构造 JSON Body必须包含双引号
// 例如发送的内容应该是: "2025-01-01T12:00:00"
string jsonBody = $"\"{timeStr}\"";
// 3. 发送请求
// 确保你的 WebApiService.PostAsync 会设置 Content-Type: application/json
await WebApiService.Instance.PostAsync(requestUrl, jsonBody, "设备校时");
return true;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"校时失败: {ex.Message}");
return false;
}
}
/// <summary>
/// 发送远程重启指令
/// 接口定义: [HttpPost("{id}/reboot")] public async Task<IActionResult> RebootDevice(long id)
/// 该接口没有 [FromBody] 参数Body 可以为空或空 JSON
/// </summary>
public async Task<bool> RebootCameraAsync(long cameraId)
{
var serviceNode = AppGlobal.UseServiceNode;
if (serviceNode == null) return false;
string requestUrl = $"http://{serviceNode.ServiceNodeIp}:{serviceNode.ServiceNodePort}{WebApiRoutes.Cameras.Reboot(cameraId.ToString())}";
try
{
await WebApiService.Instance.PostAsync(requestUrl, "{}", "远程重启");
return true;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"重启失败: {ex.Message}");
return false;
}
}
#endregion
}