using YD_YiLu.Api.WebSockets; namespace YD_YiLu.Api.Services { public class DeviceCommandService { private readonly ICameraDeviceSocketRegistry _registry; public DeviceCommandService(ICameraDeviceSocketRegistry registry) { _registry = registry; } #region 通用发送 private async Task Send(string sn, string request, object data, CancellationToken ct) { if (!_registry.TryGet(sn, out var socket)) return false; await DeviceWebSocketSender.SendAsync(socket, request, data, ct); return true; } #endregion // ================================ // 1️⃣ 信息提醒 // ================================ public Task Remind(string sn, int type, string msg, CancellationToken ct) { return Send(sn, "station:remind", new { remindType = type, remindMessage = msg, time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }, ct); } // ================================ // 2️⃣ 控制设备(重启/关机) // ================================ public Task Control(string sn, int code, string type, CancellationToken ct) { return Send(sn, "station:control", new { controlCode = code, controlType = type, time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }, ct); } // ================================ // 3️⃣ 推送APK更新 // ================================ public Task PushApk(string sn, string version, int force, string url, string hardware, CancellationToken ct) { return Send(sn, "apk:version:download", new { versionNumber = version, needForcedUpdating = force, updateUrl = url, hardwareType = hardware, time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }, ct); } // ================================ // 4️⃣ 获取现场截图 // ================================ public Task GetPicture(string sn, int courseId, CancellationToken ct) { return Send(sn, "station:intercept:picture", new { remindType = 1, courseId = courseId }, ct); } // ================================ // 5️⃣ 获取默认标定 // ================================ public Task GetDefaultCalibration(string sn, int courseId, CancellationToken ct) { return Send(sn, "station:default:calibration", new { remindType = 1, courseId = courseId }, ct); } // ================================ // 6️⃣ 推送最新标定 // ================================ public Task UpdateCalibration(string sn, string calibrationJson, int courseId, CancellationToken ct) { return Send(sn, "station:update:calibration", new { calibrationJson = calibrationJson, courseId = courseId }, ct); } } }