|
|
|
@ -131,16 +131,16 @@ namespace IoT.Shared.Services
|
|
|
|
|
}
|
|
|
|
|
this.Connection = new HubConnectionBuilder().WithUrl(url).Build();
|
|
|
|
|
this.Connection.Closed += ReConnect;
|
|
|
|
|
this.Connection.On(Methods.ServerToClient, (string method, string message, string fromConnectionId) => this.OnServerToClient(method, message, fromConnectionId));
|
|
|
|
|
this.Connection.On(Methods.ServerToClient, (string method, string message, string to, string from) => this.OnServerToClient(method, message, to, from));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ServerToClient(string method, string message, string fromConnectionId)
|
|
|
|
|
public void ServerToClient(string method, string message, string to, string from)
|
|
|
|
|
{
|
|
|
|
|
this.OnServerToClient(method, method, fromConnectionId);
|
|
|
|
|
this.OnServerToClient(method, method, to, from);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:不捕获常规异常类型", Justification = "<挂起>")]
|
|
|
|
|
public void ClientToServer(string method, object data, string fromConnectionId = null)
|
|
|
|
|
public void ClientToServer(string method, object data, string to, string from = null)
|
|
|
|
|
{
|
|
|
|
|
Task.Run(() =>
|
|
|
|
|
{
|
|
|
|
@ -148,7 +148,7 @@ namespace IoT.Shared.Services
|
|
|
|
|
{
|
|
|
|
|
if (this.Connection != null && this.Connection.State == HubConnectionState.Connected)
|
|
|
|
|
{
|
|
|
|
|
this.Connection.SendAsync(Methods.ClientToServer, method, data.ToJson(), fromConnectionId ?? this._cfg["sn"]);
|
|
|
|
|
this.Connection.SendAsync(Methods.ClientToServer, method, data.ToJson(), to, from ?? this._cfg["sn"]);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -212,7 +212,7 @@ namespace IoT.Shared.Services
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:不捕获常规异常类型", Justification = "<挂起>")]
|
|
|
|
|
public void OnServerToClient(string method, string message, string fromConnectionId)
|
|
|
|
|
public void OnServerToClient(string method, string message, string to, string from)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
@ -224,126 +224,126 @@ namespace IoT.Shared.Services
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditNodeModel>();
|
|
|
|
|
dataService.Edit<Node, EditNodeModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Edit{nameof(Device)}")//服务端编辑设备
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditDeviceModel>();
|
|
|
|
|
dataService.Edit<Device, EditDeviceModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Delete{nameof(Device)}")//服务端删除设备
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditDeviceModel>();
|
|
|
|
|
dataService.Delete<Device, EditDeviceModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Edit{nameof(Data)}")//服务端编辑数据
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditDataModel>();
|
|
|
|
|
dataService.Edit<Data, EditDataModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Delete{nameof(Data)}")//服务端删除数据
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditDataModel>();
|
|
|
|
|
dataService.Delete<Data, EditDataModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Edit{nameof(Command)}")//服务端编辑命令
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditCommandModel>();
|
|
|
|
|
dataService.Edit<Command, EditCommandModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Delete{nameof(Command)}")//服务端删除命令
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditCommandModel>();
|
|
|
|
|
dataService.Delete<Command, EditCommandModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Edit{nameof(Scene)}")//服务端编辑场景
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditSceneModel>();
|
|
|
|
|
dataService.Edit<Scene, EditSceneModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Delete{nameof(Scene)}")//服务端删除场景
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditSceneModel>();
|
|
|
|
|
dataService.Delete<Scene, EditSceneModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Edit{nameof(IoTTimer)}")
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditIoTTimerModel>();
|
|
|
|
|
dataService.Edit<IoTTimer, EditIoTTimerModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Delete{nameof(IoTTimer)}")
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditIoTTimerModel>();
|
|
|
|
|
dataService.Delete<IoTTimer, EditIoTTimerModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Edit{nameof(IoTTigger)}")
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditIoTTiggerModel>();
|
|
|
|
|
dataService.Edit<IoTTigger, EditIoTTiggerModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Delete{nameof(IoTTigger)}")
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditIoTTiggerModel>();
|
|
|
|
|
dataService.Delete<IoTTigger, EditIoTTiggerModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Edit{nameof(SceneCommand)}")
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditSceneCommandModel>();
|
|
|
|
|
dataService.Edit<SceneCommand, EditSceneCommandModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Delete{nameof(SceneCommand)}")
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditSceneCommandModel>();
|
|
|
|
|
dataService.Delete<SceneCommand, EditSceneCommandModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Edit{nameof(IoTTimerCommand)}")
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditIoTTimerCommandModel>();
|
|
|
|
|
dataService.Edit<IoTTimerCommand, EditIoTTimerCommandModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Delete{nameof(IoTTimerCommand)}")
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditIoTTimerCommandModel>();
|
|
|
|
|
dataService.Delete<IoTTimerCommand, EditIoTTimerCommandModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Edit{nameof(IoTTiggerCommand)}")
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditIoTTiggerCommandModel>();
|
|
|
|
|
dataService.Edit<IoTTiggerCommand, EditIoTTiggerCommandModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
else if (method == $"Delete{nameof(IoTTiggerCommand)}")
|
|
|
|
|
{
|
|
|
|
|
var model = message.FromJson<EditIoTTiggerCommandModel>();
|
|
|
|
|
dataService.Delete<IoTTiggerCommand, EditIoTTiggerCommandModel>(model);
|
|
|
|
|
this.ClientToServer(method, model);
|
|
|
|
|
this.ClientToServer(method, model, null);
|
|
|
|
|
}
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
else if (method == Methods.ExecApi)
|
|
|
|
|
{
|
|
|
|
|
var cfg = scope.ServiceProvider.GetService<IConfiguration>();
|
|
|
|
|
var port = cfg["server.urls"].Split(':')[2];
|
|
|
|
|
var url = $"http://localhost:{port}{message}";
|
|
|
|
|
var url = $"http://localhost:{port}{message.FromJson<string>()}";
|
|
|
|
|
var httpClient = scope.ServiceProvider.GetService<IHttpClientFactory>().CreateClient();
|
|
|
|
|
var result = httpClient.GetStringAsync(url).Result;
|
|
|
|
|
this.Connection.SendAsync(Methods.ClientToServer, Methods.ApiCallback, result, cfg["sn"]);
|
|
|
|
|
this.ClientToServer(Methods.ApiCallback, result, from);
|
|
|
|
|
}
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
else if (method == Methods.ExecScene)
|
|
|
|
|
{
|
|
|
|
|
var sceneId = message.FromJson<Guid>();
|
|
|
|
@ -435,13 +435,13 @@ namespace IoT.Shared.Services
|
|
|
|
|
var entities = query.ToList();
|
|
|
|
|
if (!string.IsNullOrEmpty(updateIdListMethod))
|
|
|
|
|
{
|
|
|
|
|
this.ClientToServer(updateIdListMethod, entities.Select(o => o.Id).ToList());
|
|
|
|
|
this.ClientToServer(updateIdListMethod, entities.Select(o => o.Id).ToList(), null);
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(updateEntityMethod))
|
|
|
|
|
{
|
|
|
|
|
foreach (var entity in entities)
|
|
|
|
|
{
|
|
|
|
|
this.ClientToServer(updateEntityMethod, entity);
|
|
|
|
|
this.ClientToServer(updateEntityMethod, entity, null);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|