Former-commit-id: bd21725dced04f3f9837a7e7ecae9e7159044118
TangShanKaiPing
wanggang 5 years ago
parent 83ae7421cd
commit 1c0e835914

@ -11,7 +11,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DynamicExpresso.Core" Version="2.3.1" /> <PackageReference Include="Jint" Version="2.11.58" />
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0"> <PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

@ -1,15 +1,15 @@
using Application.Domain.Entities; using Application.Domain.Entities;
using Cronos; using Cronos;
using CSScriptLib;
using Infrastructure.Data; using Infrastructure.Data;
using Infrastructure.Extensions; using Infrastructure.Extensions;
using Jint;
using Jint.Native;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq; using System.Linq;
namespace IoT.Shared.Areas.Admin.Controlls namespace IoT.Shared.Areas.Admin.Controlls
@ -264,12 +264,17 @@ namespace IoT.Shared.Areas.Admin.Controlls
try try
{ {
var data = this._dataRepo.ReadOnlyTable().FirstOrDefault(o => o.Id == dataId); var data = this._dataRepo.ReadOnlyTable().FirstOrDefault(o => o.Id == dataId);
var methodText = $"bool Valid(string name,string key,{data.Type.ToString().ToLower()} value,string description){{ return {condition};}}"; var value = data.Value;
Debug.WriteLine(methodText); var engine = new Engine().Execute($"function valid(value){{return {condition};}}");
dynamic method = CSScript.Evaluator.LoadMethod(methodText); var result = engine.Invoke("valid", value);
dynamic value = data.GetValue(); if (result == JsValue.True || result == JsValue.False)
var result = method.Valid(data.Name, data.Key, value, data.Description); {
return new JsonResult(true); return new JsonResult(true);
}
else
{
return new JsonResult($"±í´ïʽÔËËã½á¹ûÎÞЧ£º{result}");
}
} }
catch (Exception ex) catch (Exception ex)
{ {

@ -1,11 +1,12 @@
using Application.Domain.Entities; using Application.Domain.Entities;
using Application.Models; using Application.Models;
using CSScriptLib;
using Infrastructure.Data; using Infrastructure.Data;
using Infrastructure.Events; using Infrastructure.Events;
using Infrastructure.Extensions; using Infrastructure.Extensions;
using IoT.Shared.Services.IoTCenter; using IoT.Shared.Services.IoTCenter;
using IoTCenter.Application.Domain; using IoTCenter.Application.Domain;
using Jint;
using Jint.Native;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
@ -274,27 +275,27 @@ namespace IoTCenter.Services
var data = message.Data; var data = message.Data;
if (tigger.DataId == data.Id) if (tigger.DataId == data.Id)
{ {
var methodText = $"bool Valid(string name,string key,{data.Type.ToString().ToLower()} value,string description){{ return {tigger.Condition};}}";
try try
{ {
dynamic method = CSScript.Evaluator.LoadMethod(methodText); var condition = tigger.Condition;
dynamic value = data.GetValue(); var value = data.Value;
var result = method.Valid(data.Name, data.Key, value, data.Description); var engine = new Engine().Execute($"function valid(value){{return {condition};}}");
if (result) var result = engine.Invoke("valid", value);
if (result == JsValue.True)
{ {
this.TiggerHandle(tigger.Id); this.TiggerHandle(tigger.Id);
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
ex.PrintStack(); this._logger.LogError(ex.ToString());
} }
} }
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
ex.PrintStack(); this._logger.LogError(ex.ToString());
} }
} }
@ -392,11 +393,12 @@ namespace IoTCenter.Services
public void Handle(NodeClientConnectedEvent message) public void Handle(NodeClientConnectedEvent message)
{ {
var organ = this._organRepo.Table().FirstOrDefault(o => o.Number == message.OrganNumber); var organ = this._organRepo.Table().FirstOrDefault(o => o.Number == message.OrganNumber);
if(organ==null) if (organ == null)
{ {
organ = new Organ { organ = new Organ
Name=message.OrganNumber, {
Number= message.OrganNumber, Name = message.OrganNumber,
Number = message.OrganNumber,
Image = "/images/classroom.png" Image = "/images/classroom.png"
}; };
this._organRepo.Add(organ); this._organRepo.Add(organ);
@ -407,7 +409,7 @@ namespace IoTCenter.Services
var node = this._nodeRepo.Table().FirstOrDefault(o => o.Number == message.NodeNumber); var node = this._nodeRepo.Table().FirstOrDefault(o => o.Number == message.NodeNumber);
if (node != null) if (node != null)
{ {
this._organNodeRepo.Add(new OrganNode { NodeId=node.Id,OrganId=organ.Id }); this._organNodeRepo.Add(new OrganNode { NodeId = node.Id, OrganId = organ.Id });
this._organNodeRepo.SaveChanges(); this._organNodeRepo.SaveChanges();
} }
} }

@ -3,7 +3,7 @@
var name = settingSerice.GetSetting("name").Value; var name = settingSerice.GetSetting("name").Value;
var logo = settingSerice.GetSetting("logo").Value; var logo = settingSerice.GetSetting("logo").Value;
var copyright = settingSerice.GetSetting("copyright").Value; var copyright = settingSerice.GetSetting("copyright").Value;
var iosAppUrl = settingSerice.GetSetting("iosAppUrl").Value; //var iosAppUrl = settingSerice.GetSetting("iosAppUrl").Value;
} }
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>

@ -1,14 +1,14 @@
using Application.Domain.Entities; using Application.Domain.Entities;
using CSScriptLib;
using Hangfire; using Hangfire;
using Infrastructure.Application.Entites.Settings; using Infrastructure.Application.Entites.Settings;
using Infrastructure.Events; using Infrastructure.Events;
using Infrastructure.Extensions;
using IoT.Shared.Services; using IoT.Shared.Services;
using IoTNode.DeviceServices.Onvif; using IoTNode.DeviceServices.Onvif;
using Jint;
using Jint.Native;
using Microsoft.Extensions.Logging;
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
namespace IoTNode.Services namespace IoTNode.Services
{ {
@ -77,22 +77,19 @@ namespace IoTNode.Services
{ {
try try
{ {
this._logger.LogInformation($"Debug>call tigger handler when data update at {DateTime.Now.ToLongDateString()} ");
foreach (var tigger in this._sceneTiggerService.GetSceneTiggers()) foreach (var tigger in this._sceneTiggerService.GetSceneTiggers())
{ {
var data = message.Data; var data = message.Data;
if (tigger.DataId == data.Id) if (tigger.DataId == data.Id)
{ {
this._logger.LogInformation($"Debug>match tigger at {DateTime.Now.ToLongDateString()} ");
var methodText = $"bool Valid(string name,string key,{data.Type.ToString().ToLower()} value,string description){{ return {tigger.Condition};}}";
try try
{ {
dynamic method = CSScript.Evaluator.LoadMethod(methodText); var condition = tigger.Condition;
dynamic value = data.GetValue(); var value = data.Value;
var result = method.Valid(data.Name, data.Key, value, data.Description); var engine = new Engine().Execute($"function valid(value){{return {condition};}}");
if (result) var result = engine.Invoke("valid", value);
if (result == JsValue.True)
{ {
this._logger.LogInformation($"Debug>match contdation at {DateTime.Now.ToLongDateString()} ");
this._job.TiggerHandle(tigger.Id); this._job.TiggerHandle(tigger.Id);
} }
} }

@ -1,4 +1,4 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("1.0.0.*")] [assembly: AssemblyVersion("1.0.0.*")]
[assembly: AssemblyInformationalVersion("1.0.0.509")] [assembly: AssemblyInformationalVersion("1.0.0.510")]
Loading…
Cancel
Save