From 5cdb1c76a0b4afd635f6e3b46abe8b1766a1f764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=A4=A7=E7=9F=B3=E5=A4=B4?= Date: Wed, 15 May 2024 21:27:26 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E5=BC=95=E5=85=A5ZeroIoT?= =?UTF-8?q?=E6=BA=90=E7=A0=81=EF=BC=8C=E7=AE=80=E5=8C=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E4=B8=8E=E7=90=86=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitmodules | 3 - .../Areas/IoT/Controllers/DeviceController.cs | 98 ++ .../IoT/Controllers/DeviceDataController.cs | 225 +++ .../IoT/Controllers/DeviceGroupController.cs | 43 + .../Controllers/DeviceHistoryController.cs | 34 + .../IoT/Controllers/DeviceOnlineController.cs | 49 + .../Controllers/DevicePropertyController.cs | 122 ++ .../IoT/Controllers/ProductController.cs | 41 + Samples/IoTZero/Areas/IoT/IoTArea.cs | 13 + .../IoT/Views/Device/_List_Search.cshtml | 14 + .../IoT/Views/DeviceData/_List_Search.cshtml | 10 + .../DeviceData/_List_Toolbar_Custom.cshtml | 16 + .../DeviceGroup/_List_Toolbar_Batch.cshtml | 9 + .../Views/DeviceHistory/_List_Search.cshtml | 10 + .../Areas/IoT/Views/_ViewImports.cshtml | 9 + .../IoTZero/Areas/IoT/Views/_ViewStart.cshtml | 6 + Samples/IoTZero/Clients/ClientSetting.cs | 27 + Samples/IoTZero/Clients/HttpDevice.cs | 320 ++++ Samples/IoTZero/Common/ApiFilterAttribute.cs | 67 + Samples/IoTZero/Controllers/AppController.cs | 87 ++ .../IoTZero/Controllers/DeviceController.cs | 191 +++ .../IoTZero/Controllers/ThingController.cs | 159 ++ Samples/IoTZero/Entity/IoT.htm | 1299 +++++++++++++++++ Samples/IoTZero/Entity/Model.xml | 206 +++ Samples/IoTZero/Entity/xcodetool.exe | Bin 0 -> 1751340 bytes .../Entity/\344\272\247\345\223\201.Biz.cs" | 138 ++ .../Entity/\344\272\247\345\223\201.cs" | 293 ++++ .../Entity/\350\256\276\345\244\207.Biz.cs" | 279 ++++ .../Entity/\350\256\276\345\244\207.cs" | 502 +++++++ ...45\244\207\345\210\206\347\273\204.Biz.cs" | 181 +++ ...76\345\244\207\345\210\206\347\273\204.cs" | 292 ++++ ...45\244\207\345\216\206\345\217\262.Biz.cs" | 249 ++++ ...76\345\244\207\345\216\206\345\217\262.cs" | 221 +++ ...45\244\207\345\234\250\347\272\277.Biz.cs" | 284 ++++ ...76\345\244\207\345\234\250\347\272\277.cs" | 334 +++++ ...45\244\207\345\261\236\346\200\247.Biz.cs" | 194 +++ ...76\345\244\207\345\261\236\346\200\247.cs" | 274 ++++ ...45\244\207\346\225\260\346\215\256.Biz.cs" | 200 +++ ...76\345\244\207\346\225\260\346\215\256.cs" | 226 +++ Samples/IoTZero/IoTSetting.cs | 69 + Samples/IoTZero/IoTZero.csproj | 76 - Samples/IoTZero/Models/LoginInfo.cs | 37 + Samples/IoTZero/Models/LoginResponse.cs | 34 + Samples/IoTZero/Models/LogoutResponse.cs | 22 + Samples/IoTZero/Models/PingInfo.cs | 43 + Samples/IoTZero/Models/PingResponse.cs | 21 + Samples/IoTZero/Models/ThingSpecModel.cs | 13 + Samples/IoTZero/Models/UpgradeInfo.cs | 26 + Samples/IoTZero/Program.cs | 108 ++ Samples/IoTZero/Services/DataService.cs | 77 + .../IoTZero/Services/DeviceOnlineService.cs | 102 ++ Samples/IoTZero/Services/MyDeviceService.cs | 404 +++++ Samples/IoTZero/Services/QueueService.cs | 69 + Samples/IoTZero/Services/ShardTableService.cs | 115 ++ Samples/IoTZero/Services/ThingService.cs | 302 ++++ Samples/IoTZero/appsettings.json | 16 + Samples/ZeroIoT | 1 - 57 files changed, 8180 insertions(+), 80 deletions(-) delete mode 100644 .gitmodules create mode 100644 Samples/IoTZero/Areas/IoT/Controllers/DeviceController.cs create mode 100644 Samples/IoTZero/Areas/IoT/Controllers/DeviceDataController.cs create mode 100644 Samples/IoTZero/Areas/IoT/Controllers/DeviceGroupController.cs create mode 100644 Samples/IoTZero/Areas/IoT/Controllers/DeviceHistoryController.cs create mode 100644 Samples/IoTZero/Areas/IoT/Controllers/DeviceOnlineController.cs create mode 100644 Samples/IoTZero/Areas/IoT/Controllers/DevicePropertyController.cs create mode 100644 Samples/IoTZero/Areas/IoT/Controllers/ProductController.cs create mode 100644 Samples/IoTZero/Areas/IoT/IoTArea.cs create mode 100644 Samples/IoTZero/Areas/IoT/Views/Device/_List_Search.cshtml create mode 100644 Samples/IoTZero/Areas/IoT/Views/DeviceData/_List_Search.cshtml create mode 100644 Samples/IoTZero/Areas/IoT/Views/DeviceData/_List_Toolbar_Custom.cshtml create mode 100644 Samples/IoTZero/Areas/IoT/Views/DeviceGroup/_List_Toolbar_Batch.cshtml create mode 100644 Samples/IoTZero/Areas/IoT/Views/DeviceHistory/_List_Search.cshtml create mode 100644 Samples/IoTZero/Areas/IoT/Views/_ViewImports.cshtml create mode 100644 Samples/IoTZero/Areas/IoT/Views/_ViewStart.cshtml create mode 100644 Samples/IoTZero/Clients/ClientSetting.cs create mode 100644 Samples/IoTZero/Clients/HttpDevice.cs create mode 100644 Samples/IoTZero/Common/ApiFilterAttribute.cs create mode 100644 Samples/IoTZero/Controllers/AppController.cs create mode 100644 Samples/IoTZero/Controllers/DeviceController.cs create mode 100644 Samples/IoTZero/Controllers/ThingController.cs create mode 100644 Samples/IoTZero/Entity/IoT.htm create mode 100644 Samples/IoTZero/Entity/Model.xml create mode 100644 Samples/IoTZero/Entity/xcodetool.exe create mode 100644 "Samples/IoTZero/Entity/\344\272\247\345\223\201.Biz.cs" create mode 100644 "Samples/IoTZero/Entity/\344\272\247\345\223\201.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207.Biz.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207\345\210\206\347\273\204.Biz.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207\345\210\206\347\273\204.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207\345\216\206\345\217\262.Biz.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207\345\216\206\345\217\262.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207\345\234\250\347\272\277.Biz.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207\345\234\250\347\272\277.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207\345\261\236\346\200\247.Biz.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207\345\261\236\346\200\247.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207\346\225\260\346\215\256.Biz.cs" create mode 100644 "Samples/IoTZero/Entity/\350\256\276\345\244\207\346\225\260\346\215\256.cs" create mode 100644 Samples/IoTZero/IoTSetting.cs create mode 100644 Samples/IoTZero/Models/LoginInfo.cs create mode 100644 Samples/IoTZero/Models/LoginResponse.cs create mode 100644 Samples/IoTZero/Models/LogoutResponse.cs create mode 100644 Samples/IoTZero/Models/PingInfo.cs create mode 100644 Samples/IoTZero/Models/PingResponse.cs create mode 100644 Samples/IoTZero/Models/ThingSpecModel.cs create mode 100644 Samples/IoTZero/Models/UpgradeInfo.cs create mode 100644 Samples/IoTZero/Program.cs create mode 100644 Samples/IoTZero/Services/DataService.cs create mode 100644 Samples/IoTZero/Services/DeviceOnlineService.cs create mode 100644 Samples/IoTZero/Services/MyDeviceService.cs create mode 100644 Samples/IoTZero/Services/QueueService.cs create mode 100644 Samples/IoTZero/Services/ShardTableService.cs create mode 100644 Samples/IoTZero/Services/ThingService.cs create mode 100644 Samples/IoTZero/appsettings.json delete mode 160000 Samples/ZeroIoT diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 7d8b7f5..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "Samples/ZeroIoT"] - path = Samples/ZeroIoT - url = https://github.com/NewLifeX/ZeroIoT diff --git a/Samples/IoTZero/Areas/IoT/Controllers/DeviceController.cs b/Samples/IoTZero/Areas/IoT/Controllers/DeviceController.cs new file mode 100644 index 0000000..086cae9 --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Controllers/DeviceController.cs @@ -0,0 +1,98 @@ +using System.ComponentModel; +using IoT.Data; +using NewLife.Cube; +using NewLife.Log; +using NewLife.Web; +using XCode; +using XCode.Membership; + +namespace IoTZero.Areas.IoT.Controllers; + +[IoTArea] +//[DisplayName("设备管理")] +[Menu(80, true, Icon = "fa-mobile")] +public class DeviceController : EntityController +{ + private readonly ITracer _tracer; + + static DeviceController() + { + LogOnChange = true; + + ListFields.RemoveField("Secret", "Uuid", "ProvinceId", "IP", "Period", "Address", "Location", "Logins", "LastLogin", "LastLoginIP", "OnlineTime", "RegisterTime", "Remark", "AreaName"); + ListFields.RemoveCreateField(); + ListFields.RemoveUpdateField(); + + { + var df = ListFields.AddListField("history", "Online"); + df.DisplayName = "历史"; + df.Url = "/IoT/DeviceHistory?deviceId={Id}"; + } + + { + var df = ListFields.AddListField("property", "Online"); + df.DisplayName = "属性"; + df.Url = "/IoT/DeviceProperty?deviceId={Id}"; + } + + { + var df = ListFields.AddListField("data", "Online"); + df.DisplayName = "数据"; + df.Url = "/IoT/DeviceData?deviceId={Id}"; + } + } + + public DeviceController(ITracer tracer) => _tracer = tracer; + + protected override IEnumerable Search(Pager p) + { + var id = p["Id"].ToInt(-1); + if (id > 0) + { + var node = Device.FindById(id); + if (node != null) return new[] { node }; + } + + var productId = p["productId"].ToInt(-1); + var groupId = p["groupId"].ToInt(-1); + var enable = p["enable"]?.ToBoolean(); + + var start = p["dtStart"].ToDateTime(); + var end = p["dtEnd"].ToDateTime(); + + //// 如果没有指定产品和主设备,则过滤掉子设备 + //if (productId < 0 && parentId < 0) parentId = 0; + + return Device.Search(productId, groupId, enable, start, end, p["Q"], p); + } + + protected override Int32 OnInsert(Device entity) + { + var rs = base.OnInsert(entity); + + entity.Product?.Fix(); + return rs; + } + + protected override Int32 OnUpdate(Device entity) + { + var rs = base.OnUpdate(entity); + + entity.Product?.Fix(); + + return rs; + } + + protected override Int32 OnDelete(Device entity) + { + // 删除设备时需要顺便把设备属性删除 + var dpList = DeviceProperty.FindAllByDeviceId(entity.Id); + _ = dpList.Delete(); + + var rs = base.OnDelete(entity); + + entity.Product?.Fix(); + + return rs; + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Controllers/DeviceDataController.cs b/Samples/IoTZero/Areas/IoT/Controllers/DeviceDataController.cs new file mode 100644 index 0000000..ee684cb --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Controllers/DeviceDataController.cs @@ -0,0 +1,225 @@ +using IoT.Data; +using NewLife; +using NewLife.Algorithms; +using NewLife.Cube; +using NewLife.Cube.Charts; +using NewLife.Cube.Extensions; +using NewLife.Cube.ViewModels; +using NewLife.Data; +using NewLife.Web; +using XCode; +using XCode.Membership; + +namespace IoTZero.Areas.IoT.Controllers; + +[IoTArea] +[Menu(0, false)] +public class DeviceDataController : EntityController +{ + static DeviceDataController() + { + ListFields.RemoveField("Id"); + ListFields.AddListField("Value", null, "Kind"); + + { + var df = ListFields.GetField("Name") as ListField; + //df.DisplayName = "主题"; + df.Url = "/IoT/DeviceData?deviceId={DeviceId}&name={Name}"; + } + ListFields.TraceUrl("TraceId"); + } + + protected override IEnumerable Search(Pager p) + { + var deviceId = p["deviceId"].ToInt(-1); + var name = p["name"]; + + var start = p["dtStart"].ToDateTime(); + var end = p["dtEnd"].ToDateTime(); + + if (start.Year < 2000) + { + start = DateTime.Today; + p["dtStart"] = start.ToString("yyyy-MM-dd"); + p["dtEnd"] = start.ToString("yyyy-MM-dd"); + } + + if (deviceId > 0 && p.PageSize == 20 && !name.IsNullOrEmpty() && !name.StartsWithIgnoreCase("raw-", "channel-")) p.PageSize = 14400; + + var list = DeviceData.Search(deviceId, name, start, end, p["Q"], p); + + // 单一设备绘制曲线 + if (list.Count > 0 && deviceId > 0) + { + var list2 = list.Where(e => !e.Name.StartsWithIgnoreCase("raw-", "channel-") && e.Value.ToDouble(-1) >= 0).OrderBy(e => e.Id).ToList(); + + // 绘制曲线图 + if (list2.Count > 0) + { + var topics = list2.Select(e => e.Name).Distinct().ToList(); + var datax = list2.GroupBy(e => e.CreateTime).ToDictionary(e => e.Key, e => e.ToList()); + //var topics = list2.GroupBy(e => e.Topic).ToDictionary(e => e.Key, e => e.ToList()); + var chart = new ECharts + { + Height = 400, + }; + //chart.SetX(list2, _.CreateTime, e => e.CreateTime.ToString("mm:ss")); + + // 构建X轴 + var minT = datax.Keys.Min(); + var maxT = datax.Keys.Max(); + var step = p["sample"].ToInt(-1); + if (step > 0) + { + if (step <= 60) + { + minT = new DateTime(minT.Year, minT.Month, minT.Day, minT.Hour, minT.Minute, 0, minT.Kind); + maxT = new DateTime(maxT.Year, maxT.Month, maxT.Day, maxT.Hour, maxT.Minute, 0, maxT.Kind); + } + else + { + minT = new DateTime(minT.Year, minT.Month, minT.Day, minT.Hour, 0, 0, minT.Kind); + maxT = new DateTime(maxT.Year, maxT.Month, maxT.Day, maxT.Hour, 0, 0, maxT.Kind); + //step = 3600; + } + var times = new List(); + for (var dt = minT; dt <= maxT; dt = dt.AddSeconds(step)) + { + times.Add(dt); + } + + if (step < 60) + { + chart.XAxis = new + { + data = times.Select(e => e.ToString("HH:mm:ss")).ToArray(), + }; + } + else + { + chart.XAxis = new + { + data = times.Select(e => e.ToString("dd-HH:mm")).ToArray(), + }; + } + } + else + { + chart.XAxis = new + { + data = datax.Keys.Select(e => e.ToString("HH:mm:ss")).ToArray(), + }; + } + chart.SetY("数值"); + + var max = -9999.0; + var min = 9999.0; + var dps = DeviceProperty.FindAllByDeviceId(deviceId); + var sample = new AverageSampling(); + //var sample = new LTTBSampling(); + foreach (var item in topics) + { + var name2 = item; + + // 使用属性名 + var dp = dps.FirstOrDefault(e => e.Name == item); + if (dp != null && !dp.NickName.IsNullOrEmpty()) name2 = dp.NickName; + + var series = new Series + { + Name = name2, + Type = "line", + //Data = tps2.Select(e => Math.Round(e.Value)).ToArray(), + Smooth = true, + }; + + if (step > 0) + { + //var minD = minT.Date.ToInt(); + var tps = new List(); + foreach (var elm in datax) + { + // 可能该Topic在这个时刻没有数据,写入空 + var v = elm.Value.FirstOrDefault(e => e.Name == item); + if (v != null) + tps.Add(new TimePoint { Time = v.CreateTime.ToInt(), Value = v.Value.ToDouble() }); + } + + var tps2 = sample.Process(tps.ToArray(), step); + + series.Data = tps2.Select(e => Math.Round(e.Value, 2)).ToArray(); + + var m1 = tps2.Select(e => e.Value).Min(); + if (m1 < min) min = m1; + var m2 = tps2.Select(e => e.Value).Max(); + if (m2 > max) max = m2; + } + else + { + var list3 = new List(); + foreach (var elm in datax) + { + // 可能该Topic在这个时刻没有数据,写入空 + var v = elm.Value.FirstOrDefault(e => e.Name == item); + if (v != null) + list3.Add(v.Value); + else + list3.Add('-'); + } + series.Data = list3; + + var m1 = list3.Where(e => e + "" != "-").Select(e => e.ToDouble()).Min(); + if (m1 < min) min = m1; + var m2 = list3.Where(e => e + "" != "-").Select(e => e.ToDouble()).Max(); + if (m2 > max) max = m2; + } + + // 单一曲线,显示最大最小和平均 + if (topics.Count == 1) + { + name = name2; + series["markPoint"] = new + { + data = new[] { + new{ type="max",name="Max"}, + new{ type="min",name="Min"}, + } + }; + series["markLine"] = new + { + data = new[] { + new{ type="average",name="Avg"}, + } + }; + } + + // 降采样策略 lttb/average/max/min/sum + series["sampling"] = "lttb"; + series["symbol"] = "none"; + + // 开启动画 + series["animation"] = true; + + chart.Add(series); + } + chart.SetTooltip(); + chart.YAxis = new + { + name = "数值", + type = "value", + min = Math.Ceiling(min) - 1, + max = Math.Ceiling(max), + }; + ViewBag.Charts = new[] { chart }; + + // 减少数据显示,避免卡页面 + list = list.Take(100).ToList(); + + var ar = Device.FindById(deviceId); + if (ar != null) ViewBag.Title = topics.Count == 1 ? $"{name} - {ar}数据" : $"{ar}数据"; + } + } + + return list; + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Controllers/DeviceGroupController.cs b/Samples/IoTZero/Areas/IoT/Controllers/DeviceGroupController.cs new file mode 100644 index 0000000..ddb050d --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Controllers/DeviceGroupController.cs @@ -0,0 +1,43 @@ +using IoT.Data; +using Microsoft.AspNetCore.Mvc; +using NewLife.Cube; +using NewLife.Web; +using XCode.Membership; + +namespace IoTZero.Areas.IoT.Controllers; + +/// 设备分组。物联网平台支持建立设备分组,分组中可包含不同产品下的设备。通过设备组来进行跨产品管理设备。 +[Menu(50, true, Icon = "fa-table")] +[IoTArea] +public class DeviceGroupController : EntityController +{ + static DeviceGroupController() + { + LogOnChange = true; + + ListFields.RemoveField("UpdateUserId", "UpdateIP"); + ListFields.RemoveCreateField().RemoveRemarkField(); + } + + /// 高级搜索。列表页查询、导出Excel、导出Json、分享页等使用 + /// 分页器。包含分页排序参数,以及Http请求参数 + /// + protected override IEnumerable Search(Pager p) + { + var name = p["name"]; + var parentid = p["parentid"].ToInt(-1); + + var start = p["dtStart"].ToDateTime(); + var end = p["dtEnd"].ToDateTime(); + + return DeviceGroup.Search(name, parentid, start, end, p["Q"], p); + } + + [EntityAuthorize(PermissionFlags.Update)] + public ActionResult Refresh() + { + DeviceGroup.Refresh(); + + return JsonRefresh("成功!", 1); + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Controllers/DeviceHistoryController.cs b/Samples/IoTZero/Areas/IoT/Controllers/DeviceHistoryController.cs new file mode 100644 index 0000000..1da5870 --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Controllers/DeviceHistoryController.cs @@ -0,0 +1,34 @@ +using IoT.Data; +using NewLife.Cube; +using NewLife.Web; +using XCode.Membership; + +namespace IoTZero.Areas.IoT.Controllers; + +[IoTArea] +[Menu(60, true)] +public class DeviceHistoryController : ReadOnlyEntityController +{ + protected override IEnumerable Search(Pager p) + { + var deviceId = p["deviceId"].ToInt(-1); + var action = p["action"]; + + var start = p["dtStart"].ToDateTime(); + var end = p["dtEnd"].ToDateTime(); + + //if (start.Year < 2000) + //{ + // start = new DateTime(DateTime.Today.Year, 1, 1); + // p["dtStart"] = start.ToString("yyyy-MM-dd"); + //} + + if (start.Year < 2000) + { + using var split = DeviceHistory.Meta.CreateShard(DateTime.Today); + return DeviceHistory.Search(deviceId, action, start, end, p["Q"], p); + } + else + return DeviceHistory.Search(deviceId, action, start, end, p["Q"], p); + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Controllers/DeviceOnlineController.cs b/Samples/IoTZero/Areas/IoT/Controllers/DeviceOnlineController.cs new file mode 100644 index 0000000..140afa0 --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Controllers/DeviceOnlineController.cs @@ -0,0 +1,49 @@ +using IoT.Data; +using NewLife.Cube; +using NewLife.Cube.ViewModels; +using NewLife.Web; +using XCode.Membership; + +namespace IoTZero.Areas.IoT.Controllers; + +/// 设备在线 +[Menu(70, true, Icon = "fa-table")] +[IoTArea] +public class DeviceOnlineController : EntityController +{ + static DeviceOnlineController() + { + //LogOnChange = true; + + //ListFields.RemoveField("Id", "Creator"); + ListFields.RemoveCreateField().RemoveRemarkField(); + + { + var df = ListFields.GetField("DeviceName") as ListField; + df.Url = "/IoT/Device?Id={DeviceId}"; + } + { + var df = ListFields.AddListField("property", "Pings"); + df.DisplayName = "属性"; + df.Url = "/IoT/DeviceProperty?deviceId={DeviceId}"; + } + { + var df = ListFields.AddListField("data", "Pings"); + df.DisplayName = "数据"; + df.Url = "/IoT/DeviceData?deviceId={DeviceId}"; + } + } + + /// 高级搜索。列表页查询、导出Excel、导出Json、分享页等使用 + /// 分页器。包含分页排序参数,以及Http请求参数 + /// + protected override IEnumerable Search(Pager p) + { + var productId = p["productId"].ToInt(-1); + + var start = p["dtStart"].ToDateTime(); + var end = p["dtEnd"].ToDateTime(); + + return DeviceOnline.Search(null, productId, start, end, p["Q"], p); + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Controllers/DevicePropertyController.cs b/Samples/IoTZero/Areas/IoT/Controllers/DevicePropertyController.cs new file mode 100644 index 0000000..3ba846d --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Controllers/DevicePropertyController.cs @@ -0,0 +1,122 @@ +using System.ComponentModel; +using IoT.Data; +using IoTZero.Services; +using Microsoft.AspNetCore.Mvc; +using NewLife; +using NewLife.Cube; +using NewLife.Cube.Extensions; +using NewLife.Cube.ViewModels; +using NewLife.IoT; +using NewLife.IoT.ThingModels; +using NewLife.Serialization; +using NewLife.Web; +using XCode.Membership; + +namespace IoTZero.Areas.IoT.Controllers; + +[IoTArea] +[Menu(0, false)] +public class DevicePropertyController : EntityController +{ + private readonly ThingService _thingService; + + static DevicePropertyController() + { + LogOnChange = true; + + ListFields.RemoveField("UnitName", "Length", "Rule", "Readonly", "Locked", "Timestamp", "FunctionId", "Remark"); + ListFields.RemoveCreateField(); + + ListFields.TraceUrl("TraceId"); + + { + var df = ListFields.GetField("DeviceName") as ListField; + df.Url = "/IoT/Device?Id={DeviceId}"; + } + { + var df = ListFields.GetField("Name") as ListField; + df.Url = "/IoT/DeviceData?deviceId={DeviceId}&name={Name}"; + } + { + var df = ListFields.AddDataField("Value", "Unit") as ListField; + } + { + var df = ListFields.AddDataField("Switch", "Enable") as ListField; + df.DisplayName = "翻转"; + df.Url = "/IoT/DeviceProperty/Switch?id={Id}"; + df.DataAction = "action"; + df.DataVisible = e => (e as DeviceProperty).Type.EqualIgnoreCase("bool"); + } + } + + public DevicePropertyController(ThingService thingService) => _thingService = thingService; + + protected override Boolean Valid(DeviceProperty entity, DataObjectMethodType type, Boolean post) + { + var fs = type switch + { + DataObjectMethodType.Insert => AddFormFields, + DataObjectMethodType.Update => EditFormFields, + _ => null, + }; + + if (fs != null) + { + var df = fs.FirstOrDefault(e => e.Name == "Type"); + if (df != null) + { + // 基础类型,加上所有产品类型 + var dic = new Dictionary(TypeHelper.GetIoTTypes(true), StringComparer.OrdinalIgnoreCase); + + if (!entity.Type.IsNullOrEmpty() && !dic.ContainsKey(entity.Type)) dic[entity.Type] = entity.Type; + df.DataSource = e => dic; + } + } + + return base.Valid(entity, type, post); + } + + protected override IEnumerable Search(Pager p) + { + var deviceId = p["deviceId"].ToInt(-1); + var name = p["name"]; + + var start = p["dtStart"].ToDateTime(); + var end = p["dtEnd"].ToDateTime(); + + return DeviceProperty.Search(deviceId, name, start, end, p["Q"], p); + } + + [EntityAuthorize(PermissionFlags.Insert)] + public async Task Switch(Int32 id) + { + var msg = ""; + var entity = DeviceProperty.FindById(id); + if (entity != null && entity.Enable) + { + var value = entity.Value.ToBoolean(); + value = !value; + entity.Value = value + ""; + entity.Update(); + + var model = new PropertyModel { Name = entity.Name, Value = value }; + + // 执行远程调用 + var dp = entity; + if (dp != null) + { + var input = new + { + model.Name, + model.Value, + }; + + var rs = await _thingService.InvokeServiceAsync(entity.Device, "SetProperty", input.ToJson(), DateTime.Now.AddSeconds(5), 5000); + if (rs != null && rs.Status >= ServiceStatus.已完成) + msg = $"{rs.Status} {rs.Data}"; + } + } + + return JsonRefresh("成功!" + msg, 1000); + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Controllers/ProductController.cs b/Samples/IoTZero/Areas/IoT/Controllers/ProductController.cs new file mode 100644 index 0000000..ec5857c --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Controllers/ProductController.cs @@ -0,0 +1,41 @@ +using IoT.Data; +using NewLife.Cube; +using NewLife.Web; + +namespace IoTZero.Areas.IoT.Controllers; + +[IoTArea] +[Menu(30, true, Icon = "fa-product-hunt")] +public class ProductController : EntityController +{ + static ProductController() + { + LogOnChange = true; + + ListFields.RemoveField("Secret", "DataFormat", "DynamicRegister", "FixedDeviceCode", "AuthType", "WhiteIP", "Remark"); + ListFields.RemoveCreateField(); + + { + var df = ListFields.AddListField("Log"); + df.DisplayName = "日志"; + df.Url = "/Admin/Log?category=产品&linkId={Id}"; + } + } + + protected override IEnumerable Search(Pager p) + { + var id = p["Id"].ToInt(-1); + if (id > 0) + { + var entity = Product.FindById(id); + if (entity != null) return new[] { entity }; + } + + var code = p["code"]; + + var start = p["dtStart"].ToDateTime(); + var end = p["dtEnd"].ToDateTime(); + + return Product.Search(code, start, end, p["Q"], p); + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/IoTArea.cs b/Samples/IoTZero/Areas/IoT/IoTArea.cs new file mode 100644 index 0000000..39c4fe5 --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/IoTArea.cs @@ -0,0 +1,13 @@ +using System.ComponentModel; +using NewLife; +using NewLife.Cube; + +namespace IoTZero.Areas.IoT; + +[DisplayName("设备管理")] +public class IoTArea : AreaBase +{ + public IoTArea() : base(nameof(IoTArea).TrimEnd("Area")) { } + + static IoTArea() => RegisterArea(); +} \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Views/Device/_List_Search.cshtml b/Samples/IoTZero/Areas/IoT/Views/Device/_List_Search.cshtml new file mode 100644 index 0000000..eadaed2 --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Views/Device/_List_Search.cshtml @@ -0,0 +1,14 @@ +@using NewLife; +@using NewLife.Web; +@using NewLife.Cube; +@using XCode; +@using IoT.Data; +@{ + var fact = ViewBag.Factory as IEntityFactory; + var page = ViewBag.Page as Pager; +} +
+ + @Html.ForDropDownList("productId", Product.FindAllWithCache(), page["productId"], "全部", true) +
+@await Html.PartialAsync("_DateRange") \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Views/DeviceData/_List_Search.cshtml b/Samples/IoTZero/Areas/IoT/Views/DeviceData/_List_Search.cshtml new file mode 100644 index 0000000..730699b --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Views/DeviceData/_List_Search.cshtml @@ -0,0 +1,10 @@ +@using NewLife; +@using NewLife.Web; +@using NewLife.Cube; +@using XCode; +@using IoT.Data; +@{ + var fact = ViewBag.Factory as IEntityFactory; + var page = ViewBag.Page as Pager; +} +@await Html.PartialAsync("_DateRange") \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Views/DeviceData/_List_Toolbar_Custom.cshtml b/Samples/IoTZero/Areas/IoT/Views/DeviceData/_List_Toolbar_Custom.cshtml new file mode 100644 index 0000000..5115a96 --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Views/DeviceData/_List_Toolbar_Custom.cshtml @@ -0,0 +1,16 @@ +@using NewLife; +@using NewLife.Web; +@using NewLife.Cube; +@using XCode; +@using IoT.Data; +@{ + var fact = ViewBag.Factory as IEntityFactory; + var page = ViewBag.Page as Pager; + var url = page.GetBaseUrl(true, true, false, new[] { "sample" }); +} +
+ 原始数据   + 每分钟   + 每15钟   + 每小时   +
diff --git a/Samples/IoTZero/Areas/IoT/Views/DeviceGroup/_List_Toolbar_Batch.cshtml b/Samples/IoTZero/Areas/IoT/Views/DeviceGroup/_List_Toolbar_Batch.cshtml new file mode 100644 index 0000000..897a0ec --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Views/DeviceGroup/_List_Toolbar_Batch.cshtml @@ -0,0 +1,9 @@ +@using NewLife.Common; +@{ + var user = ViewBag.User as IUser ?? User.Identity as IUser; + var fact = ViewBag.Factory as IEntityFactory; + var set = ViewBag.PageSetting as PageSetting; +} + \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Views/DeviceHistory/_List_Search.cshtml b/Samples/IoTZero/Areas/IoT/Views/DeviceHistory/_List_Search.cshtml new file mode 100644 index 0000000..730699b --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Views/DeviceHistory/_List_Search.cshtml @@ -0,0 +1,10 @@ +@using NewLife; +@using NewLife.Web; +@using NewLife.Cube; +@using XCode; +@using IoT.Data; +@{ + var fact = ViewBag.Factory as IEntityFactory; + var page = ViewBag.Page as Pager; +} +@await Html.PartialAsync("_DateRange") \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Views/_ViewImports.cshtml b/Samples/IoTZero/Areas/IoT/Views/_ViewImports.cshtml new file mode 100644 index 0000000..e8fcb7a --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Views/_ViewImports.cshtml @@ -0,0 +1,9 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@using NewLife +@using NewLife.Cube +@using NewLife.Cube.Extensions +@using NewLife.Reflection +@using NewLife.Web +@using XCode +@using XCode.Membership +@using IoT.Data \ No newline at end of file diff --git a/Samples/IoTZero/Areas/IoT/Views/_ViewStart.cshtml b/Samples/IoTZero/Areas/IoT/Views/_ViewStart.cshtml new file mode 100644 index 0000000..ab02818 --- /dev/null +++ b/Samples/IoTZero/Areas/IoT/Views/_ViewStart.cshtml @@ -0,0 +1,6 @@ +@{ + var theme = CubeSetting.Current.Theme; + if (String.IsNullOrEmpty(theme)) theme = "ACE"; + + Layout = "~/Views/" + theme + "/_Layout.cshtml"; +} \ No newline at end of file diff --git a/Samples/IoTZero/Clients/ClientSetting.cs b/Samples/IoTZero/Clients/ClientSetting.cs new file mode 100644 index 0000000..749f03d --- /dev/null +++ b/Samples/IoTZero/Clients/ClientSetting.cs @@ -0,0 +1,27 @@ +using System.ComponentModel; +using NewLife.Configuration; + +namespace IoTEdge; + +/// 配置 +[Config("IoTClient")] +public class ClientSetting : Config +{ + #region 属性 + /// 服务端地址。IoT服务平台地址 + [Description("服务端地址。IoT服务平台地址")] + public String Server { get; set; } = "http://localhost:1880"; + + /// 设备证书。在一机一密时手工填写,一型一密时自动下发 + [Description("设备证书。在一机一密时手工填写,一型一密时自动下发")] + public String DeviceCode { get; set; } + + /// 设备密钥。在一机一密时手工填写,一型一密时自动下发 + [Description("设备密钥。在一机一密时手工填写,一型一密时自动下发")] + public String DeviceSecret { get; set; } + + /// 产品证书。用于一型一密验证,对一机一密无效 + [Description("产品证书。用于一型一密验证,对一机一密无效")] + public String ProductKey { get; set; } = "EdgeGateway"; + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/Clients/HttpDevice.cs b/Samples/IoTZero/Clients/HttpDevice.cs new file mode 100644 index 0000000..05a2ef0 --- /dev/null +++ b/Samples/IoTZero/Clients/HttpDevice.cs @@ -0,0 +1,320 @@ +using System.Diagnostics; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.WebSockets; +using NewLife; +using NewLife.Caching; +using NewLife.IoT.Models; +using NewLife.IoT.ThingModels; +using NewLife.Log; +using NewLife.Remoting; +using NewLife.Security; +using NewLife.Serialization; +using NewLife.Threading; + +namespace IoTEdge; + +/// Http协议设备 +public class HttpDevice : DisposeBase +{ + #region 属性 + /// 服务器地址 + public String Server { get; set; } + + /// 设备编码。从IoT管理平台获取(需提前分配),或者本地提交后动态注册 + public String DeviceCode { get; set; } + + /// 密钥。设备密钥或产品密钥,分别用于一机一密和一型一密,从IoT管理平台获取 + public String DeviceSecret { get; set; } + + /// 产品编码。从IoT管理平台获取 + public String ProductKey { get; set; } + + /// 密码散列提供者。避免密码明文提交 + public IPasswordProvider PasswordProvider { get; set; } = new SaltPasswordProvider { Algorithm = "md5", SaltTime = 60 }; + + /// 收到命令时触发 + public event EventHandler Received; + + private readonly ClientSetting _setting; + private ApiHttpClient _client; + private Int32 _delay; + #endregion + + #region 构造 + public HttpDevice() { } + + public HttpDevice(ClientSetting setting) + { + _setting = setting; + + Server = setting.Server; + DeviceCode = setting.DeviceCode; + DeviceSecret = setting.DeviceSecret; + ProductKey = setting.ProductKey; + } + + protected override void Dispose(Boolean disposing) + { + base.Dispose(disposing); + + StopTimer(); + } + #endregion + + #region 登录注销 + /// + /// 登录 + /// + /// + /// + public async Task LoginAsync() + { + var client = new ApiHttpClient(Server) + { + Tracer = Tracer, + Log = XTrace.Log, + }; + + var info = new LoginInfo + { + Code = DeviceCode, + Secret = DeviceSecret.IsNullOrEmpty() ? null : PasswordProvider.Hash(DeviceSecret), + ProductKey = ProductKey, + }; + var rs = await client.PostAsync("Device/Login", info); + client.Token = rs.Token; + + if (!rs.Code.IsNullOrEmpty() && !rs.Secret.IsNullOrEmpty()) + { + WriteLog("下发证书:{0}/{1}", rs.Code, rs.Secret); + DeviceCode = rs.Code; + DeviceSecret = rs.Secret; + + _setting.DeviceCode = rs.Code; + _setting.DeviceSecret = rs.Secret; + _setting.Save(); + } + + _client = client; + + StartTimer(); + } + + /// 注销 + /// + /// + public async Task LogoutAsync(String reason) => await _client.PostAsync("Device/Logout", new { reason }); + #endregion + + #region 心跳&长连接 + /// 心跳 + /// + public virtual async Task PingAsync() + { + if (Tracer != null) DefaultSpan.Current = null; + + using var span = Tracer?.NewSpan("Ping"); + try + { + var info = GetHeartInfo(); + + var rs = await _client.PostAsync("Device/Ping", info); + + var dt = rs.Time.ToDateTime(); + if (dt.Year > 2000) + { + // 计算延迟 + var ts = DateTime.UtcNow - dt; + var ms = (Int32)ts.TotalMilliseconds; + _delay = (_delay + ms) / 2; + } + + var svc = _client.Services.FirstOrDefault(); + if (svc != null && _client.Token != null && (_websocket == null || _websocket.State != WebSocketState.Open)) + { + var url = svc.Address.ToString().Replace("http://", "ws://").Replace("https://", "wss://"); + var uri = new Uri(new Uri(url), "/Device/Notify"); + var client = new ClientWebSocket(); + client.Options.SetRequestHeader("Authorization", "Bearer " + _client.Token); + await client.ConnectAsync(uri, default); + + _websocket = client; + + _source = new CancellationTokenSource(); + _ = Task.Run(() => DoPull(client, _source.Token)); + } + + // 令牌 + if (rs is PingResponse pr && !pr.Token.IsNullOrEmpty()) + _client.Token = pr.Token; + } + catch (Exception ex) + { + span?.SetError(ex, null); + + throw; + } + } + + /// 获取心跳信息 + public PingInfo GetHeartInfo() + { + var mi = MachineInfo.GetCurrent(); + mi.Refresh(); + + var properties = IPGlobalProperties.GetIPGlobalProperties(); + var connections = properties.GetActiveTcpConnections(); + + var mcs = NetHelper.GetMacs().Select(e => e.ToHex("-")).OrderBy(e => e).Join(","); + var driveInfo = new DriveInfo(Path.GetPathRoot(".".GetFullPath())); + var ip = NetHelper.GetIPs().Where(ip => ip.IsIPv4() && !IPAddress.IsLoopback(ip) && ip.GetAddressBytes()[0] != 169).Join(); + var ext = new PingInfo + { + Memory = mi.Memory, + AvailableMemory = mi.AvailableMemory, + TotalSize = (UInt64)driveInfo.TotalSize, + AvailableFreeSpace = (UInt64)driveInfo.AvailableFreeSpace, + CpuRate = (Single)Math.Round(mi.CpuRate, 4), + Temperature = mi.Temperature, + Battery = mi.Battery, + Uptime = Environment.TickCount / 1000, + + IP = ip, + + Time = DateTime.UtcNow.ToLong(), + Delay = _delay, + }; + // 开始时间 Environment.TickCount 很容易溢出,导致开机24天后变成负数。 + // 后来在 netcore3.0 增加了Environment.TickCount64 + // 现在借助 Stopwatch 来解决 + if (Stopwatch.IsHighResolution) ext.Uptime = (Int32)(Stopwatch.GetTimestamp() / Stopwatch.Frequency); + + return ext; + } + + private TimerX _timer; + /// 开始心跳定时器 + protected virtual void StartTimer() + { + if (_timer == null) + lock (this) + _timer ??= new TimerX(async s => await PingAsync(), null, 3_000, 60_000, "Device") { Async = true }; + } + + /// 停止心跳定时器 + protected void StopTimer() + { + if (_websocket != null && _websocket.State == WebSocketState.Open) + _websocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "finish", default).Wait(); + _source?.Cancel(); + + _websocket = null; + + _timer.TryDispose(); + _timer = null; + } + + private WebSocket _websocket; + private CancellationTokenSource _source; + private ICache _cache = new MemoryCache(); + + private async Task DoPull(WebSocket socket, CancellationToken cancellationToken) + { + DefaultSpan.Current = null; + try + { + var buf = new Byte[4 * 1024]; + while (!cancellationToken.IsCancellationRequested && socket.State == WebSocketState.Open) + { + var data = await socket.ReceiveAsync(new ArraySegment(buf), cancellationToken); + var model = buf.ToStr(null, 0, data.Count).ToJsonEntity(); + if (model != null && _cache.Add($"cmd:{model.Id}", model, 3600)) + { + // 建立追踪链路 + using var span = Tracer?.NewSpan("service:" + model.Name, model); + span?.Detach(model.TraceId); + try + { + if (model.Expire.Year < 2000 || model.Expire > DateTime.Now) + await OnReceiveCommand(model); + else + await ServiceReply(new ServiceReplyModel { Id = model.Id, Status = ServiceStatus.取消 }); + } + catch (Exception ex) + { + span?.SetError(ex, null); + } + } + } + } + catch (Exception ex) + { + XTrace.WriteException(ex); + } + + if (socket.State == WebSocketState.Open) await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "finish", default); + } + #endregion + + #region 服务 + /// + /// 触发收到命令的动作 + /// + /// + protected virtual async Task OnReceiveCommand(ServiceModel model) + { + var e = new ServiceEventArgs { Model = model }; + Received?.Invoke(this, e); + + if (e.Reply != null) await ServiceReply(e.Reply); + } + + /// 上报服务调用结果 + /// + /// + public virtual async Task ServiceReply(ServiceReplyModel model) => await _client.PostAsync("Thing/ServiceReply", model); + #endregion + + public async Task PostDataAsync() + { + if (Tracer != null) DefaultSpan.Current = null; + + using var span = Tracer?.NewSpan("PostData"); + try + { + var items = new List + { + new DataModel + { + Time = DateTime.UtcNow.ToLong(), + Name = "TestValue", + Value = Rand.Next(0, 100) + "" + } + }; + + var data = new DataModels { DeviceCode = DeviceCode, Items = items.ToArray() }; + + await _client.PostAsync("Thing/PostData", data); + } + catch (Exception ex) + { + span?.SetError(ex, null); + + throw; + } + } + + #region 日志 + /// 链路追踪 + public ITracer Tracer { get; set; } + + /// 日志 + public ILog Log { get; set; } + + /// 写日志 + /// + /// + public void WriteLog(String format, params Object[] args) => Log?.Info(format, args); + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/Common/ApiFilterAttribute.cs b/Samples/IoTZero/Common/ApiFilterAttribute.cs new file mode 100644 index 0000000..44e4af4 --- /dev/null +++ b/Samples/IoTZero/Common/ApiFilterAttribute.cs @@ -0,0 +1,67 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; +using NewLife; +using NewLife.Log; +using NewLife.Serialization; + +namespace IoTZero.Common; + +/// 统一Api过滤处理 +public sealed class ApiFilterAttribute : ActionFilterAttribute +{ + /// 执行前,验证模型 + /// + public override void OnActionExecuting(ActionExecutingContext context) + { + if (!context.ModelState.IsValid) + throw new ApplicationException(context.ModelState.Values.First(p => p.Errors.Count > 0).Errors[0].ErrorMessage); + + // 访问令牌 + var request = context.HttpContext.Request; + var token = request.Query["Token"] + ""; + if (token.IsNullOrEmpty()) token = (request.Headers["Authorization"] + "").TrimStart("Bearer "); + if (token.IsNullOrEmpty()) token = request.Headers["X-Token"] + ""; + if (token.IsNullOrEmpty()) token = request.Cookies["Token"] + ""; + context.HttpContext.Items["Token"] = token; + if (!context.ActionArguments.ContainsKey("token")) context.ActionArguments.Add("token", token); + + base.OnActionExecuting(context); + } + + /// 执行后,包装结果和异常 + /// + public override void OnActionExecuted(ActionExecutedContext context) + { + var traceId = DefaultSpan.Current?.TraceId; + + if (context.Result != null) + if (context.Result is ObjectResult obj) + { + //context.Result = new JsonResult(new { code = obj.StatusCode ?? 0, data = obj.Value }); + var rs = new { code = obj.StatusCode ?? 0, data = obj.Value, traceId }; + context.Result = new ContentResult + { + Content = rs.ToJson(false, true, true), + ContentType = "application/json", + StatusCode = 200 + }; + } + else if (context.Result is EmptyResult) + context.Result = new JsonResult(new { code = 0, data = new { }, traceId }); + else if (context.Exception != null && !context.ExceptionHandled) + { + var ex = context.Exception.GetTrue(); + if (ex is NewLife.Remoting.ApiException aex) + context.Result = new JsonResult(new { code = aex.Code, data = aex.Message, traceId }); + else + context.Result = new JsonResult(new { code = 500, data = ex.Message, traceId }); + + context.ExceptionHandled = true; + + // 输出异常日志 + if (XTrace.Debug) XTrace.WriteException(ex); + } + + base.OnActionExecuted(context); + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Controllers/AppController.cs b/Samples/IoTZero/Controllers/AppController.cs new file mode 100644 index 0000000..74f75c5 --- /dev/null +++ b/Samples/IoTZero/Controllers/AppController.cs @@ -0,0 +1,87 @@ +using IoT.Data; +using IoTZero.Services; +using Microsoft.AspNetCore.Mvc; +using NewLife; +using NewLife.IoT.Models; +using NewLife.IoT.ThingModels; +using NewLife.Log; +using NewLife.Remoting; +using NewLife.Remoting.Extensions; + +namespace IoTZero.Controllers; + +/// 物模型Api控制器。用于应用系统调用 +[ApiFilter] +[ApiController] +[Route("[controller]")] +public class AppController : BaseController +{ + private readonly MyDeviceService _deviceService; + private readonly ThingService _thingService; + private readonly ITracer _tracer; + private IDictionary _args; + + #region 构造 + /// + /// 实例化应用管理服务 + /// + /// + /// + /// + /// + public AppController(IServiceProvider serviceProvider, MyDeviceService deviceService, ThingService thingService, ITracer tracer) : base(serviceProvider) + { + _deviceService = deviceService; + _thingService = thingService; + _tracer = tracer; + } + #endregion + + #region 物模型 + /// 获取设备属性 + /// 设备编号 + /// 设备编码 + /// + [HttpGet(nameof(GetProperty))] + public PropertyModel[] GetProperty(Int32 deviceId, String deviceCode) + { + var dv = Device.FindById(deviceId) ?? Device.FindByCode(deviceCode); + if (dv == null) return null; + + return _thingService.QueryProperty(dv, null); + } + + /// 设置设备属性 + /// 数据 + /// + [HttpPost(nameof(SetProperty))] + public Task SetProperty(DevicePropertyModel model) + { + var dv = Device.FindByCode(model.DeviceCode); + if (dv == null) return null; + + throw new NotImplementedException(); + } + + /// 调用设备服务 + /// 服务 + /// + [HttpPost(nameof(InvokeService))] + public async Task InvokeService(ServiceRequest service) + { + Device dv = null; + if (service.DeviceId > 0) dv = Device.FindById(service.DeviceId); + if (dv == null) + { + if (!service.DeviceCode.IsNullOrWhiteSpace()) + dv = Device.FindByCode(service.DeviceCode); + else + throw new ArgumentNullException(nameof(service.DeviceCode)); + } + + if (dv == null) throw new ArgumentException($"找不到该设备:DeviceId={service.DeviceId},DeviceCode={service.DeviceCode}"); + + return await _thingService.InvokeServiceAsync(dv, service.ServiceName, service.InputData, service.Expire, service.Timeout); + } + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/Controllers/DeviceController.cs b/Samples/IoTZero/Controllers/DeviceController.cs new file mode 100644 index 0000000..e4481fe --- /dev/null +++ b/Samples/IoTZero/Controllers/DeviceController.cs @@ -0,0 +1,191 @@ +using IoT.Data; +using IoTZero.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using NewLife.Http; +using NewLife.IoT.Drivers; +using NewLife.IoT.Models; +using NewLife.IoT.ThingModels; +using NewLife.Log; +using NewLife.Remoting; +using NewLife.Remoting.Extensions; +using WebSocket = System.Net.WebSockets.WebSocket; + +namespace IoTZero.Controllers; + +/// 设备控制器 +[ApiFilter] +[ApiController] +[Route("[controller]")] +public class DeviceController : BaseController +{ + /// 当前设备 + public Device Device => App as Device; + + private readonly QueueService _queue; + private readonly MyDeviceService _deviceService; + private readonly ThingService _thingService; + private readonly ITracer _tracer; + + #region 构造 + /// 实例化设备控制器 + /// + /// + /// + /// + /// + public DeviceController(IServiceProvider serviceProvider, QueueService queue, MyDeviceService deviceService, ThingService thingService, ITracer tracer) : base(serviceProvider) + { + _queue = queue; + _deviceService = deviceService; + _thingService = thingService; + _tracer = tracer; + } + + #endregion + + #region 登录 + /// 设备登录 + /// + /// + [AllowAnonymous] + [HttpPost(nameof(Login))] + public LoginResponse Login(LoginInfo model) => _deviceService.Login(model, "Http", UserHost); + + /// 设备注销 + /// 注销原因 + /// + [HttpGet(nameof(Logout))] + public LogoutResponse Logout(String reason) + { + var device = Device; + if (device != null) _deviceService.Logout(device, reason, "Http", UserHost); + + return new LogoutResponse + { + Name = device?.Name, + Token = null, + }; + } + #endregion + + #region 心跳 + /// 设备心跳 + /// + /// + [HttpPost(nameof(Ping))] + public PingResponse Ping(PingInfo model) + { + var rs = new PingResponse + { + Time = model.Time, + ServerTime = DateTime.UtcNow.ToLong(), + }; + + var device = Device; + if (device != null) + { + rs.Period = device.Period; + + var olt = _deviceService.Ping(device, model, Token, UserHost); + + // 令牌有效期检查,10分钟内到期的令牌,颁发新令牌。 + // 这里将来由客户端提交刷新令牌,才能颁发新的访问令牌。 + var tm = _deviceService.ValidAndIssueToken(device.Code, Token); + if (tm != null) + { + rs.Token = tm.AccessToken; + + //_deviceService.WriteHistory(device, "刷新令牌", true, tm.ToJson(), UserHost); + } + } + + return rs; + } + + [HttpGet(nameof(Ping))] + public PingResponse Ping() => new() { Time = 0, ServerTime = DateTime.UtcNow.ToLong(), }; + #endregion + + #region 升级 + /// 升级检查 + /// + [HttpGet(nameof(Upgrade))] + public UpgradeInfo Upgrade() + { + var device = Device ?? throw new ApiException(402, "节点未登录"); + + throw new NotImplementedException(); + } + #endregion + + #region 设备通道 + /// 获取设备信息,包括主设备和子设备 + /// + [HttpGet(nameof(GetDevices))] + public DeviceModel[] GetDevices() => throw new NotImplementedException(); + + /// 设备上线。驱动打开后调用,子设备发现,或者上报主设备/子设备的默认参数模版 + /// + /// 有些设备驱动具备扫描发现子设备能力,通过该方法上报设备。 + /// 主设备或子设备,也可通过该方法上报驱动的默认参数模版。 + /// 根据需要,驱动内可能多次调用该方法。 + /// + /// 设备信息集合。可传递参数模版 + /// 返回上报信息对应的反馈,如果新增子设备,则返回子设备信息 + [HttpPost(nameof(SetOnline))] + public IDeviceInfo[] SetOnline(DeviceModel[] devices) => throw new NotImplementedException(); + + /// 设备下线。驱动内子设备变化后调用 + /// + /// 根据需要,驱动内可能多次调用该方法。 + /// + /// 设备编码集合。用于子设备离线 + /// 返回上报信息对应的反馈,如果新增子设备,则返回子设备信息 + [HttpPost(nameof(SetOffline))] + public IDeviceInfo[] SetOffline(String[] devices) => throw new NotImplementedException(); + + /// 获取设备点位表 + /// 设备编码 + /// + [HttpGet(nameof(GetPoints))] + public PointModel[] GetPoints(String deviceCode) => throw new NotImplementedException(); + + /// 提交驱动信息。客户端把自己的驱动信息提交到平台 + /// + /// + [HttpPost(nameof(PostDriver))] + public Int32 PostDriver(DriverInfo[] drivers) => throw new NotImplementedException(); + #endregion + + #region 下行通知 + /// 下行通知 + /// + [HttpGet("/Device/Notify")] + public async Task Notify() + { + if (HttpContext.WebSockets.IsWebSocketRequest) + { + using var socket = await HttpContext.WebSockets.AcceptWebSocketAsync(); + + await Handle(socket, Token); + } + else + { + HttpContext.Response.StatusCode = 400; + } + } + + private async Task Handle(WebSocket socket, String token) + { + var device = Device ?? throw new InvalidOperationException("未登录!"); + + _deviceService.WriteHistory(device, "WebSocket连接", true, socket.State + "", UserHost); + + var source = new CancellationTokenSource(); + var queue = _queue.GetQueue(device.Code); + _ = Task.Run(() => socket.ConsumeAndPushAsync(queue, onProcess: null, source)); + await socket.WaitForClose(null, source); + } + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/Controllers/ThingController.cs b/Samples/IoTZero/Controllers/ThingController.cs new file mode 100644 index 0000000..725f14b --- /dev/null +++ b/Samples/IoTZero/Controllers/ThingController.cs @@ -0,0 +1,159 @@ +using IoT.Data; +using IoTZero.Services; +using Microsoft.AspNetCore.Mvc; +using NewLife; +using NewLife.IoT.Models; +using NewLife.IoT.ThingModels; +using NewLife.IoT.ThingSpecification; +using NewLife.Remoting.Extensions; + +namespace IoTZero.Controllers; + +/// 物模型控制器 +[ApiFilter] +[ApiController] +[Route("[controller]")] +public class ThingController : BaseController +{ + /// 当前设备 + public Device Device => App as Device; + + private readonly QueueService _queue; + private readonly ThingService _thingService; + + #region 构造 + /// 实例化物模型控制器 + /// + /// + /// + public ThingController(IServiceProvider serviceProvider, QueueService queue, ThingService thingService) : base(serviceProvider) + { + _queue = queue; + _thingService = thingService; + } + + #endregion + + #region 设备属性 + /// 上报设备属性 + /// 属性集合 + /// + [HttpPost(nameof(PostProperty))] + public Int32 PostProperty(PropertyModels model) => throw new NotImplementedException(); + + /// 批量上报设备属性,融合多个子设备数据批量上传 + /// 属性集合 + /// + [HttpPost(nameof(PostProperties))] + public Int32 PostProperties(PropertyModels[] models) => throw new NotImplementedException(); + + /// 获取设备属性 + /// 设备编码 + /// + [HttpGet(nameof(GetProperty))] + public PropertyModel[] GetProperty(String deviceCode) => throw new NotImplementedException(); + + /// 设备数据上报 + /// 模型 + /// + [HttpPost(nameof(PostData))] + public Int32 PostData(DataModels model) + { + var device = GetDevice(model.DeviceCode); + + return _thingService.PostData(device, model, "PostData", UserHost); + } + + /// 批量设备数据上报,融合多个子设备数据批量上传 + /// 模型 + /// + [HttpPost(nameof(PostDatas))] + public Int32 PostDatas(DataModels[] models) => throw new NotImplementedException(); + #endregion + + #region 设备事件 + /// 设备事件上报 + /// 模型 + /// + [HttpPost(nameof(PostEvent))] + public Int32 PostEvent(EventModels model) => throw new NotImplementedException(); + + /// 批量设备事件上报,融合多个子设备数据批量上传 + /// 模型 + /// + [HttpPost(nameof(PostEvents))] + public Int32 PostEvents(EventModels[] models) => throw new NotImplementedException(); + #endregion + + #region 设备服务 + /// 设备端响应服务调用 + /// 服务 + /// + [HttpPost(nameof(ServiceReply))] + public Int32 ServiceReply(ServiceReplyModel model) => throw new NotImplementedException(); + #endregion + + #region 物模型 + /// 获取设备所属产品的物模型 + /// 设备编码 + /// + [HttpGet(nameof(GetSpecification))] + public ThingSpec GetSpecification(String deviceCode) => throw new NotImplementedException(); + + /// 上报物模型 + /// + /// + [HttpPost(nameof(PostSpecification))] + public IPoint[] PostSpecification(ThingSpecModel model) => throw new NotImplementedException(); + #endregion + + #region 设备影子 + /// 上报设备影子 + /// + /// 设备影子是一个JSON文档,用于存储设备上报状态、应用程序期望状态信息。 + /// 每个设备有且只有一个设备影子,设备可以通过MQTT获取和设置设备影子来同步状态,该同步可以是影子同步给设备,也可以是设备同步给影子。 + /// 使用设备影子机制,设备状态变更,只需同步状态给设备影子一次,应用程序请求获取设备状态,不论应用程序请求数量,和设备是否联网在线,都可从设备影子中获取设备当前状态,实现应用程序与设备解耦。 + /// + /// 数据 + /// + [HttpPost(nameof(PostShadow))] + public Int32 PostShadow(ShadowModel model) => throw new NotImplementedException(); + + /// 获取设备影子 + /// 设备编码 + /// + [HttpGet(nameof(GetShadow))] + public String GetShadow(String deviceCode) => throw new NotImplementedException(); + #endregion + + #region 配置 + /// 设备端查询配置信息 + /// 设备编码 + /// + [HttpGet(nameof(GetConfig))] + public IDictionary GetConfig(String deviceCode) => throw new NotImplementedException(); + #endregion + + #region 辅助 + + /// + /// 查找子设备 + /// + /// + /// + protected Device GetDevice(String deviceCode) + { + var dv = Device; + if (dv == null) return null; + + if (deviceCode.IsNullOrEmpty() || dv.Code == deviceCode) return dv; + + var child = Device.FindByCode(deviceCode); + + //dv = dv.Childs.FirstOrDefault(e => e.Code == deviceCode); + if (child == null || child.Id != dv.Id) throw new Exception($"非法设备编码,[{deviceCode}]并非当前登录设备[{Device}]的子设备"); + + return child; + } + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/Entity/IoT.htm b/Samples/IoTZero/Entity/IoT.htm new file mode 100644 index 0000000..9841b83 --- /dev/null +++ b/Samples/IoTZero/Entity/IoT.htm @@ -0,0 +1,1299 @@ + +

产品(Product)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称显示名类型长度精度主键允许空备注
Id编号Int32AIN
Name名称String50
Code编码String50UQProductKey
Enable启用BooleanN开发中/已发布
DeviceCount设备数量Int32N
CreateUser创建人String50
CreateUserId创建者Int32N
CreateTime创建时间DateTime
CreateIP创建地址String50
UpdateUser更新人String50
UpdateUserId更新者Int32N
UpdateTime更新时间DateTime
UpdateIP更新地址String50
Remark描述String500
+

+

设备(Device)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称显示名类型长度精度主键允许空备注
Id编号Int32AIN
Name名称String50
Code编码String50UQ设备唯一证书DeviceName,用于设备认证,在注册时由系统生成
Secret密钥String50设备密钥DeviceSecret,用于设备认证,注册时由系统生成
ProductId产品Int32N
GroupId分组Int32N
Enable启用BooleanN
Online在线BooleanN
Version版本String50
IP本地IPString200
Uuid唯一标识String200硬件标识,或其它能够唯一区分设备的标记
Location位置String50场地安装位置,或者经纬度
Period心跳周期Int32N默认60秒
PollingTime采集间隔Int32N默认1000ms
Logins登录次数Int32N
LastLogin最后登录DateTime
LastLoginIP最后IPString50最后的公网IP地址
OnlineTime在线时长Int32N总时长,每次下线后累加,单位,秒
RegisterTime激活时间DateTime
CreateUserId创建者Int32N
CreateTime创建时间DateTime
CreateIP创建地址String50
UpdateUserId更新者Int32N
UpdateTime更新时间DateTime
UpdateIP更新地址String50
Remark描述String500
+

+

设备分组(DeviceGroup)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称显示名类型长度精度主键允许空备注
Id编号Int32AIN
Name名称String50
ParentId父级Int32N
Sort排序Int32N
Devices设备总数Int32N
Activations激活设备Int32N
Onlines当前在线Int32N
CreateUserId创建者Int32N
CreateTime创建时间DateTime
CreateIP创建地址String50
UpdateUserId更新者Int32N
UpdateTime更新时间DateTime
UpdateIP更新地址String50
Remark描述String500
+

+

设备在线(DeviceOnline)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称显示名类型长度精度主键允许空备注
Id编号Int32AIN
SessionId会话String50UQ
ProductId产品Int32N
DeviceId设备Int32N
Name名称String50
IP本地IPString200
GroupPath分组String50
Pings心跳Int32N
Delay延迟Int32N网络延迟,单位ms
Offset偏移Int32N客户端时间减服务端时间,单位s
LocalTime本地时间DateTime
Token令牌String200
Creator创建者String50服务端设备
CreateTime创建时间DateTime
CreateIP创建地址String50
UpdateTime更新时间DateTime
Remark备注String500
+

+

设备历史(DeviceHistory)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称显示名类型长度精度主键允许空备注
Id编号Int64PKN
DeviceId设备Int32N
Name名称String50
Action操作String50
Success成功BooleanN
TraceId追踪String50用于记录调用链追踪标识,在APM查找调用链
Creator创建者String50服务端设备
CreateTime创建时间DateTime
CreateIP创建地址String50
Remark内容String2000
+

+

设备属性(DeviceProperty)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称显示名类型长度精度主键允许空备注
Id编号Int32AIN
DeviceId设备Int32N
Name名称String50
NickName昵称String50
Type类型String50
Value数值String设备上报数值
Unit单位String50
Enable启用BooleanN
TraceId追踪String50用于记录调用链追踪标识,在APM查找调用链
CreateTime创建时间DateTime
CreateIP创建地址String50
UpdateTime更新时间DateTime
UpdateIP更新地址String50
+

+

设备数据(DeviceData)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称显示名类型长度精度主键允许空备注
Id编号Int64PKN
DeviceId设备Int32N
Name名称String50MQTT的Topic,或者属性名
Kind类型String50数据来源,如PostProperty/PostData/MqttPostData
Value数值String2000
Timestamp时间戳Int64N设备生成数据时的UTC毫秒
TraceId追踪标识String50用于记录调用链追踪标识,在APM查找调用链
Creator创建者String50服务端设备
CreateTime创建时间DateTime
CreateIP创建地址String50
+

diff --git a/Samples/IoTZero/Entity/Model.xml b/Samples/IoTZero/Entity/Model.xml new file mode 100644 index 0000000..5f49e3b --- /dev/null +++ b/Samples/IoTZero/Entity/Model.xml @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+
\ No newline at end of file diff --git a/Samples/IoTZero/Entity/xcodetool.exe b/Samples/IoTZero/Entity/xcodetool.exe new file mode 100644 index 0000000000000000000000000000000000000000..51c2c0b8d0a66eaff08440c9c911bdab444d9965 GIT binary patch literal 1751340 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�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

MXMraD#m|>o>THUSh#$k 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

yi{>$n$Aj3UoZ33u21dI&+h#0Y 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 U%2<>9{QZFfA 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�*5sKk{9u4h7vP@Wsq1Ri!+Y| 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

u9up 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

>GS+GU89j3=GMY1aQNvso$9}Opl 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 z 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�&8lblLh zj`ho9d`UV>vXkEnytjeSxDu2yYpy<%ia4pVWpPeoNrYdz)P(v%bf zk<5x8X)MC9-?$K55kPoE>J|s94|wK_<1Y3pc%F*54&|d@q5K=eSE$40=of{z3&93s zcMB6d{*XDeK@(2f2rzF0`hx2Tu z=!JuSqrU7~sr(mGhNTY$pD#F9WbnT?3CmvnreSQX@ z12$d{2#4I{iDV4hKG!*Y?O8YSwgGaoxea4?jv54c&AD=xwGmD7`n@lWT7R>JJlCIH@raFg z;r$I~d);pge*bQ}FiUf{#Bw4WszMQt_Ol)$0isLB>I|^iGI~~b_`q}4Zj+*3{?9Xi z|Ll)Pxl^6GZ+vd=&P|WJe1h{mdXkoV6)ZDXHN~S)VHvKPjgJUT_H|eCuN2!r%-gWmWCu8FWhU* z!AtrQYE=*B&R`IjzwYt&-Kae%O3i1v=a;+H!BMs_@IJSMBc(zt4_iYF8g6cN2&e1o zcFCkr-DxH&s=Gt9=i1mkaZcTGlZ;VPK=s`6Kcrf0qZsBW)7Mon9_pHeGPR<^>ol0>X}I0`;~F^Qf#KgZ zgfLiFIwBpGE8)-pOcyp^xUNyqcXN^2AKpuFqun2$weaau>Or#)TT`tUCEKpJe0vwS zQE1fh=;3-9E721l^3wZ3z3DQhI{#PO+|}xXHhm@Y`MV}ecIYa)Y^cl3cS9PVTqgsanga3-{l@bjKfWD-AP3ZY|gwsj+xRIv8h!N^c0}Y**(^wLKPdN!f5=?9$xG zF3HtmW*b})qTlxT1{Ou7_dK{|?_YfNS8sj(`q2$s?RV{NL^V@30!^R#)nKvyO>9Jsrb7b&r3&C%oR{fhLCYUeG4JaP__ql=cbsF!2S3 z7E(SFVEn_Y%KCOl;bG!$mGZAV%&MvHq~ZzPis)?cS%XjSbe)+;!^GEGe1rP)q>8=3 z+pAf4qmt{D{Mk^yf1t(Bs=Ct)vrCn6dTrKm`r7bt1MMACd;EUaevb&Cn<{=y2>E_q zm!+t#)0&@ISxrq%y@~*OMF9O_p0G3|{EZ$|X~*dmdCF;;q0E{9^564>w}u3d2`7;2 zL&|^C!{oQ~6kpv?uUlP?$=CO?z^>YaI*{KFdNp}DK0eijd%HJ!D!vqiGAJ2U-PqyK7KOPY+BO>N&% zEe#R~_5^LKFnAybYUZ~l|E(3nhzJ@>bN8=8(wCWvi2)xxvcfl){@BOzN}+K{iXHw9V_ye zn%S4uxtf|w`FrW5^@6OsRDYBzoQhyeHR{{}H7sWAIDLDa6Su!yuc;h=zJ2oV1XsvLZj_d2!h+JFeT<&Hy+FNZ+>*cOq9qzck{gh-v zeT{^ZlfY0{T>B}Fr~On*sZ`r>z2Ii6naf?P%BoDMuD++WzO{Sy8lR{ZC0R11l_=9b z{{C6B^+&_hU%j8|F4eW4QvW@(>Q}@z{zAv~UG3w~WHmX_jlaNy&zWr*b?WE%3u3dz z#`>E2Mpx4@+%f*Fu+~(X#fV$!L&??jwCbtOr--_HIvvB^TvCU@GNau*Te$TFYda?Y zqvk_1RK|48yg6BpV?=3!JRf;-gP(RklxS^~7&$*W~A#LY0O_VTJ19-EWFIp!msS$eF2y;&btYq_)tY zZZ>JLqCt|HlBO;FYvuIN57t5?zUJ<84FSHDC+pQ+h2hqR!PYZW{xJ3rW{T%UAt>n`l{lC6>PF8!llVsqZ_@ze#253FC zwzk$Aq=<4(W&obW^k;U*`0x0MzSh%+*F8GMKULrCkXBD>>h;#>5K#WD0Vyo3b-ETW zwLG(RjQ_b$pZvbkAtHYDO)fqCVNJJI4b^Q=8g$l8Nexc*z^U+8$LVL7v+;k<>f3s~ zIMI_ZFWKT(obe~DV*e{@suz#et0x`;`8NKA8Vyx_eZFRPO$kx`1;6-cPDR;YK*l$E z+@5~XgZ+;G`-hFLu2EV{YinbpR;n67QxkcU2PAM*^m&joK2`5^w4Y}6FwQ@N0zJ>` zMULnpNwY3B_2wYzXR~$BAT>{x!#qjo)_0Xk5@tQLJb8d0h)?rd)7af8f!^qsm+tP_ zz0y-OsbWU`G?nT)CPYHOdNiM&Ck2Oo*n=>n*V_8tTEHMGNp`KsH7X*0_KD(Wgs!mP zs`na%R%>_bRV6LRlmA)RR@L2lM0F6hUsv}b2DNxFe`KBkteq{nHd|Z-iah)rCsCf$ zj>oNMM^70(Rozid`YUOnS|56ndNmSAeArQ`IJo_=3zp`^&pyg$|l65F&EP42WDH0(yVRmyTIZr3!cp-?F>0*wohpr!P+DyMc_e0o)X0z0ui?0l=jH>>Iw`DyG%T)DLg$})?1h)kM{esMniI4FA@s}Hg1lrCT=QvhspE>^Rj){g=*rqHn z=-K#Z{R%y~Gst`i8RWs_e^ZT;*%KS}i|DW?rTCnB=_Ni3x%cgw+4ZG0S(Zs`HZ+F9 zR^d-oyvxt=PZ>kr6{gyn`77l&`?~U6S|G8-TF6stX1CVNZnVnDwZea+C*b*2MyU^)^zDS1GoPB(Iy4dRNEfi+(+wG6zEWq7o9zzZ4h(@~QWKye3L$FeOCu7ydfQS6PDMS*u~?ePLo_*o`#qFI%aBJy-KS@)b=-M(BBQq^c@ zDZB{D%k+QAHEl7ZRZkvRQ)*)U)_=Z1>-sT2+EyvQajx<~`_0b-YzZEQA8aDLg8pJ- zsWxD%gVn*Wq#;Fp)r=mu|4TA;oL+DLXInCH+~=O`nBf0D<)r39Q#N%-b+=DUsO$QR z3ZMsVfV3Ba@U=F#bhl_YEiFuGij8Vz{ObTC%*n`uAR z6E`f)@AGVmzM$%r*o_TIbcrb^lgY-XZtIpxqulNJ?{IgGhzqiOzQz;no^F8}%${yb zx+f;x(_M3wmjYV%gnbEU2!A+W$uAzmo@U>#ejv@KPMYQnxJmJ;Q<}@1WrkZ}6!rOe zU(2v|jOyydu=aF*Fe3IZsQdbPewM72?sC5-`^F_KUiWg`-q?D%a#OF{1{H&ic4gYI z_QLyGE7|M$)}EE#o$m-J+1;dNf%V3#k@{7wUPVG{V3Bwpl^xCv03XyUq7|k_8j)tY z`PmLzbd z9uPF!gfFZ4Cn+fzA&T!fCTJ+UW8!&X=*wUuJn2;p`;z?jsuY^DkRj8FmM)TFYc-c> zlTcn1J(xI=h3#eVLNn#n`IDj_&G{$&mWST3pn4Vjq+V1rKaA*@CR5#zevwzGmxaNA z;d`pxv%2i7&Ot8EN{m~OZ9c<;>FsjIdpcAq%|~4xSbe}=y_6^E99ZO38Y7}JC z*cv@G+N?;%+O(`um7d}ySk=6&Kg#LU^aSGciJBe6%;XgdOHF>DP@Mh`2JVx6H}=9e z^w!Yfx2kq;8xehJ61!wN5G8#?otgaC97YdXeHj!J38`J~<{5Dt75+|Mxu-ye;X>^Q z^{YxPzC#_SUlfsOnE)kI*9)X$;!_Zk4ZmJuoU*f&(Hu~q5%l_*nx%>`HEY3{JfL;T zqrvCO%Edr?{pfqk$m`XnLsDY0H{h%n8R|%@AMYq)Q!RH_@8wN1^|C&UuwEUb zVj!#6am!3~G>1Bx^E!a+&8N?>)gw))3XbN4l5;?dA*;0p*@O83`Bt;4fOU27c9qf3 zo%)%fRv;M4C8739@_tdq7QlQCr#3TNml+KhX)*WXF9b2Su+*$(AV19P`YlhhbQry2 zDUyu99w_N9J10acd#zptiIJtTR3nD=w4q1!YO6Zor;rE6EGdCzkabKw+X|b10fnbc z`(7oefW6NZ&vi_Ewnw{7UzaKxQu#(d?c;x2H2WzrEyAmszC*mk9%vJ)JC*=FsC%6hc0oj_3kt+ll~w8g_LSp!>F`6c9CdR1YN zqpAW&$uNY`S1Dd_Aqzncz_DXFYsLPU=s92w9u%w}91mAQ2sAVPsX!aD)#Z~x&X;^s z8lYzHbKV^CC40$#KGjufQ29_;Mg=g@>URgK^?78$@1hL|s9x(1bv_GgkNa;~`t?!X3hk8_D zKrrmh5(~0l@K$Ou)+eQrc1(_TOm0H>_{~0rJ|`1MX|@2Tq}6J%79b4!&oa0fd+13W z^}95XSl^+O0-wf0-8t>?><#d-LSvF|@FyaM|QiU7^i++1%HbeE$KbSp*UV0OsPYYR^Ap`Qhy~#hqRxIkWhen9O ztj3oxKBdxWpT$Ao&dPek| zei1n-_Si`w)-?77tu@Ws$*92TgRS~e7C6L)r+sv{Uw~N1o|lnVy)hR#i2g$PO=Fn) zJRqI2s%py_Go{GSLCy%6i4c_RNY{4@2JqKK$LL3yP(f2zS?kS8O~ zraq#TqgmGNsi#>&wCh$^P$b#PDMv4UCE;aGZaJUmYGpC3Y4p4HSHz9&6R)TaZArVd zfV?30KAq4D08=kYp7WRI-}KMF>7QTl&o3-4H6y8m{Ye#LUzG*Lo4{yD|Mk|Dq=D4; z`gN}YHY|gHdA(txORAQDBvGiyBSxJm*C*3cmuv)iGq;y6N!$0k0>geR8k(r-u90zj zqDvCxD+TM9e76(dQJwnRt^Y820kBl&=VWZutx2j<-pHU%c5Knd@i3On~$$^y|`qmwZg+p=v>qmgI#$0`%KCm3+I?oAI6`2^k7$ecLyl z`4TcrH!-r-pX#4INXTK}YBo2dmtZ+C)jR+Y@ZNShl-WrOuA2mw-|Q zITYho%Acc@`lruRP-Y7+0_BgucC9?`nP@D{_N4{kBWak#xh1iQ`s0gxEQ&6qliGk1 zHL#vtAne7G?t3KFO(sXNxOlK)$N2U?qhHCm zvPVYi5F_!;`h}V&VOy&zQ6>LBaqj|M<#pZrep>>u5n_Y3!G=UQN{UkvV_O38YDfY$ zPRt2Th>cUXb&f5hjnN3NfJn?~+`AtLi5LeQzre;Zq+mm015QlL(+)lEz3Hvp;f(9v z>z_dYp%KGnrp7P=33u&=g*Qs zgL5pCie?!MB$zyE*pQmoT$|D41Y7|49(DWn?+3QtO)+?1OW^Ye7$PCQ3m7U?N>%7d zA(1qV7RcNGoHw{qIXHdYrRFdV@IV=rO12j0M&`IedZO)EsAL69A7?9VK~i{|FgdKn zvJtWndW0_9FSIEWN<bdXH#`@>X?yD!~J;R7(s7Mx0u~o-P05(#Rb4Sdusv zkZ~4B-Nh8-f~Kac6u$k3Ru2y5=m_oJ+?#e&G^9Qv58 zRSbrx;cskEZvT;{jp9^#PcMERTxP#Fq|TP^q6XztiG@ohK@~3florxhrlODYqI29X z>sPmKBfD9-se#*vNsKfhvqIF=#gACt!X=yDiXTaviGo6jH6Bot&54Wl1_fnywylX~ zs}vS8wldw86{;UBwEP73#n52SHsx*P;0d zm9aJOB)jeyY!*M`%_!UjVxYM($P#xc1!hWdV+wZ(sf8cV2Q@N#Q#3682h+xl6Zt{! zund-^g;}%@3(*WlNLs0(me6vQ3J?gH89;Ya6WqW?B5W?2(OB4&=8wVFT&Mj6{xO8u zh9Hn1ZorvNUDMHgqt7W!w^wf?Wl9Xzc10T5T~qmebh)zK-=M7$)?1h|QC#zwn)=Bs zzE~D1qSO^4Z2YkZ$jc5(+G1;eejX+F!bT+Dy`{-tPyO8bDe+q29){C#n12hNVe;IY zzOH^#WmZDpf&qKVLLSoZNFf3O030kI=GH=9Ly8C$)Nd@wDG+``3}w@97!g=E<|jr9 z9<*Rkj_1vlF-9jN7P_!L!?rYxu^#zgt@yq09&+f%-)WZ`kjo>JWK zLm!fagLSjwTpT-OjcXw-v17J01?pTciQI{sBn9|y;Wb0kYhX$XWf@#D;$~?BQSx+) z+6>p1i|q^e6AG@Hnd2J0K&D??H>gR8C=6e#k?A1XK1>UlWyiCK9S@_^?8j=mX1o?H ztUk!2Fp7+st(k+}vxUU%wC#i96ceRT?*dxm1u8f6PQ~K&O(v0=%NF$vLIUYV1pYWHj@T}< zX!f!JV$=?3wU}dU6TNq_9F+aH$|*V8W^(B}Ef9XB$!*CrVgSvuc`Jn!=QUv#TbHT5U*Y_6o)YB0$DE` z^zk@snm8V-RtuV#gk_o$&n&Z*&y{%%-s`Lbsuwg@ry8oD zoH(hzHpxV-6LaGxQ#31n+&CNuID($fg5yf4{IcOnH1U^4(y&kmm2_87s!YKWM1_nh zBN(C*@m_6_8(JAe;&9N7p^T^cv)IHwwg!QviQhq%aawV?rs;j6yZ#y|nW{tI&?rg( zEm$;TSJ{#ud)H>fnu76R=1L}Iyor1p+?pmXr83t@ zk?xfzpbE2A?z(L6CTwfj3$mHPKoqPYx+mLvA5+QxM)WYfUyd70$gsLE)Q``m?qOxT z#Dq4C1)W}vz4Ig()|+aG#Wj5|g3KR{;h8A?Y~q{hL{>o*3ix8v`!2VKBch}bXf#C` zadD)U`oJ_Ca6b_e-N%wEgven*b>mn*rDbdvnncbiS_H*i5wifaA2!2drHTY?L7qh&h{Q5vH$278=y0Na-50vYNoL`re2dt z@nE*_D2f)?W$zw_S=c1UOi)@4f_!Pu(H}Od7_pJGcoOpXCyv_t2q?NbHA%B^7`YiT zO9moJGLWz54I?tOsib0JADPRN`Y@vO5lKP6kMImYF!*U8s;&HKN4$528k2rWhhjqIK6epEXa9WcHw)+jg!nC_sl}tBObI+N5%pbNLq#CDI|_ovy_Dayh?alo6!_u%~%#UR7F}t7h3o&_FQ34lVFM-zG}q0-|N#qgrcD@%G%*d zRm%5z3n#3Iy9BTh>!sXtrRkf(oDV~B9+XBI5>L+==~}=*hzf?9vhjqYRAQ3j9?V8D z|6)B-A4CwGRb|5Ot8*rpVh04s!=8F^VP#fW41I?F(OdWpl!~Kff!Was_lqgk`e25- z6@T16Du5O+&s)Wc+;N{G)r*x>F(iwo9!@g%Cp(?gYgo?eP zm*fp+W^iefirm-O=8^+2vgfL6s*)~MN;(!H&7;N|vTVFBG4GPbc(Pt%Er4-^4hpP; zfMi**#ALP|yVOn*;gT3}au}YK$$5kozhjRf_z`>VwWrPEJ8Tx;amf1%ZnZ4QCl>@r zkayLKab?K}lfx=oMuCmRyQC}37Ed-7Ph%6zO3&A-zW1tosv)7I-7cbZWgdZ5FXvKl?2TG>4{B~E+=$DSf;ymyl^L$`j9rFR*hIlIhjkO<~#C&jg zGc1?hZfYiI(-p+ds0au)fj$q1C9G>k|IW6wknuN&|HZ8}&=I?dHnCi^=lAUSnmvDN z&$sM(#GWtO^A}n=JQe4qv>oSSiwM(;iHx`V^s#*|vV+xcT*0fWasnum*1qbH;&!d@ z!Ya!%C?GHi571%3zX$+G6AW2Q(t-;1iKGj5F<%Pf2|tQRqC&WBgYWn;!ORJerM=BB z+l950U2vrw>b!)EY#ZVh?>R4q9C~v;BU!`5DHZ-6_A-lqn=O`sq_H?`(BtHX0UET< z@`lAn?-%GDiCc-oy2&YHmJIN)ttsxx7GB5}_t3JR*wDgH=ueR1v}UQIyvQhQm&R8CvXk%^H@q_k@6j!X-aca%r5l?m&vzLg7*+ zFDo+znAUm6_bEYZ3mno~D+g&~@La`GxMU<>xL}YJKc`8*aLI7ZLN2WDDgm-`2|m%0 zH`G$2xn|OR!`$^Fqv|JXyzY1ta4g!Plh?PF)UA~2gDx(f1(LQjcf1wQpm$6R0Ro-U zN&0(4VMQ4i8T)p!k;S3T64)_`Sr~WakBT8%|K=Kt|0w%J=FK<-bX&lvsyQCAxg@Q) zME)pTDNd?XYWNS?p9tMsq(={1_a4RyOZyfDwzITTXtz4#4})q#Wf-Ry2mgTed@93y zp6%V5$y|xx2!9?u0mhE3v9xSj{QqZXIX(ET3SKV&h{_ zs!CB-mX}y>MgkT%MUB=f-D6aB{ycU(Nz<$bwN&jdrERm`Z=!&}G4lu??f6}J?U+8(39>^@>VJBDYv zmZ?~8;X;OtXl$*=50V-gywnoE!M_#TBC-K&9|V(tDOPLBayBh>zedLt=_e}BK z2ce#X$O;F|p!{m|Zb!8)f5;{Xyd2tNvZ!?ei?gHVy&_z?LSZcVlztNPaAV)(q>dn` zk+nM17Kj|ot-V46etNhW#@ca3?Idl3R2AVxj!BACQ5B!3uJRiI=@F?bK2Kfc*Om{% zRh(9AZ$7*b+b|o51;*=Cb*KKAVI~c4MNetb>RLxkJmfG4O3|E&@H4)gtJ=>I!Qg4s55N*M-Ssah!CLh??glex=bb;Ur86Xg9a5lj`$61q%ohnEx z8wLma#vy}wF%BWuL^BG~$dOSE(w3JI=$1Oc1USoR+YcndP%6_?*i`h%lRd()N0td_ zBDpL>4Fc<@@qi`GD4*cQr@x$9seW5YN#wR^0u%~X!LFd)@p zO-4RAK-FQ+2EKcyz@H2d$BX2>dDJ1{O%q`6(eabf0rVc_m(~f9mTYMmVw+6TO)e?E z&b-3p`g)isdyh8yj=y>}?Dw-%T!S(MxTplv0DDTS2twK2ujc`A5fj2{6vjz4th%)h z$67$ln^kZuSQFu4qA(4U zFWZN*HGhGDdx4+2MmOWwk&Tc9Y7FBWgP_xv?mS1K$gGUnzS+#RVcKm*I;WK;P~{Jg zL+l_$*x!|O?~`*gqKT?jWV~loYK|i*LYwl|<~-A;!xjnwLgl@XEiI;n1{djRpl~C* zNHOSu=TdW%U4rErp&1#*UF>uN*m=xpQ>6Z3Z34jtu|tE1O>kWp0}W{Fo0IoO01y>R z2u9%ZGfX$wx6nFx;k)2U>^z;7DJ`Q=tx+O_r74diVLpD zxsWYhV6+isX9l1n1UqaUjle`WjW9KuVdI>#_*HL#TR=_aAcx{zkKk$HDI@aUJ#M;I z0M-$u7EplU6_jz*$tnbc7-I);1mxP5Dz7?(&}`od+H0l6!WpBKUqTKooLN(8q3}w1 zYJ2{$4HD?zx>@}sJrpZ6Z9vK(3Ih+aTH2$Nj9pba(uScd%^LgeGWV*Wiesgwz*XMpZc)zk^m}#jQ{9Rjg0viPxs{m;wqT5$?hmCPy|^> z;HV7**%pz7oHJu`ZmHpZ4K@n6O~jKh0K61XraPUK-k2i}x7&qL>YR&<$|sqFm|`ZQ zkb)(!Dzb&AT}r}+CyQY_StxS!;iUERhsHH39h7&Ea?6;m*k3hL1*6h2LCGfB1_=Ab zx|oa3>-(}u)96lWlHvu%87j%lWSqJ!Pyu${wb)spj zjhhL5VrIsboWB`yDNH8x2?tHMr4ASX%dUXOVk*tOJb|k!m(eU7l%MsDgcZYlGiF7` z7nJIQ^eyUM8ATf3i@Px(1A;a_8kiFOVyVPd&GyK+E8IhbmC2xfs+p$Mq3Akho->VV z@)tlAtg+OLLeJ3d{e~rz^sdbBTDGhErs*I=zuXR$>O^s@L;H-I3rv74SD9fomuJ$b zZM9F7td8ipndl5_vwiHC85jiU7ARY~eHd|;j<$#vO%(rzQE#@=CJ&OSGMdG>`}V6S z5vjyBNzMpwga^TaNx*7sPL{`|Ti`YF5?MZVBZ1SawkOKms}#T7fvH( zQ?rk(dNEYy2pu*v{=w?A?*K?*ratJelfJ1fsX!)wSc{yz1{&#mPV^04l4pP~sZ2@~ z)H+mf2j=)=FhA=(-Pn7+vG+n^!13obzY8+^PEeT!O6fD%lJ2P(b_m4@Tkrv%7Jw4s zI16USU0cj5(*l}QwwZ%)&l|SCTDyPFm0QD%C|!9*=+wsE*HdG4;gTGP!LoB@3*Lf3 zy0qcG{suLrmKy^44q>+_lyRF12*X?_ix6QrBa4o4jY8ca$JvYkE(bXL;Tk4=_WfR&Gm2l~EF(N)^I&}O{veFlqUpH=& zisU$1-=Sa9;Q?Z7j7Uu@m@(9TR_;wAk)XYg$y{=?ne)!bT!%4U-}m8uFxR+Sf|;17HOkU1 z;bQyY;({R)%j;$qfzK{bLCY%d#XsW6jMgdyv(t*8k0HRnw+dr zj7mz)*SV}4x(B+8U41_`5P~CMI4p#70DD>e37%K4b zvps#NmQkskag5PA0V3JLSP2)spEEgAnhf;PFoM#ZbmpB%RSd(>+=?10!aKzY)Q z+b+a4t}3DfOV=1YyiH{@+!&4JI8*OWX7Fn4{l~`Mx9e%Yop5673VDT;rWMcxBW(-> zY37~|xZ8<(pls4h2Q7&M6>rvP?WAyl)074?l*unxB--?Pja>v_DeNqucKT|P?TX?| zIBg&grl-+5zbWctCccm9WBCv9KB~2I!pP3-!_x%oo6ALG3 z>?hemZ?^bU_Lgkv@W>!hRdJsY>`(03YavhRx`12cEFIR`iV?LqY@T4IV)V*NLGv8T zC{0LxKlOFNaK;WGYUSkcX`Z%Y54K&U@Hjws#H~_2%fv59Ee&aw!x#!%5~K*tsXcQ0 zr6i@E+c-LgilfE3LD$IFjO-H15mwjQFXq%;z>w|x7oMb`Q%!KNx0#QJ0no+G)X5>p z0FR3%(FY`;t@Re+h?}5d<6k1PtktqdiN!#PXJQ_k?T@m^z!MoTC?l8^ILcbvxT8@E z2KjUd{B;{*h1YRq!{SZLI+kBN&o_;$*AP&dtOUa;GHWbDqh2dN?(J#ZF;#uG{n06I zlO4`kJZ1KO=zVozmZ7J`xM)AJ4GP9lVJ2T}hws8BNLMZHWlN_?oz_YkV%H^7+AF@I zR#rt#-0Z>CswSK|w?lJbBbw`zF@cugZmiO5o|-8^ikYf;(Znb5L|T(AEtQLbYsw2+3uS!k>m;4I0L(wrNHot`Rj~b!e&i z1IgZ{BR{xyLc54|PvJ4|z>nTXtwxl;2oDVy|`*+U4Vniw)gFdHEnCev-U zpTL%E|4f^eZ=}6~I)F7Zlu0XLV%iRHoru!VF8#c+D)%SHvHPY0U<&}HlyH~`)1JXo zXr-cRl}LZ|M@5ja0HaJR3clluhneU+WaL{qpDoGG*F+V=(IborwO&Nn-@>tGuVt@v zNc2N#FF)ER*!FU_iDpnqxDsO7a5GZ~7C^LWmQ#WD=j1XIhvm{W(s4EE=_bJk8J1#~ zJ6p%$WSV#rON8Y%EOa$Swsc6NjS}lMkMa(v9b5Ol((CDpDV5G!VpA;@=hSS!?yF;S zrgDI6Odacb!~n4>dW?GoSRKO*SWWaV#6wy?u_*~dB`8o^7|5zPc-sw#o?-FjGAPh& zf%=!=QW1Ky9^gO$7((gHH89B~3Q^cy(p0UAC%4wHn6zqamovhaIF92qH^4KM2)6fY zmD0Zq7h(F3?-uuk6slVBdMgGdk84GogQLNCSH2^Q5-5ve)NsooDF#wSxu3Dqr*`s2 z@RE|_6Mlu*&%zlIl%^*2^e{izrUF-XOK`WLV1z1o85P=^)xEDK?HFQB%oB!nw}ixi zkjwh_5_nM<%qxjVI#=Q0KIltKw4~HIdu`Tv9wkf)&>TQpz(=WaQ-lBzFzRf9z$smK za&bi5GCxD4le-{hl_hFaq7flN^PLu_vVs%Y%!>5Fabry8{j5qgTD;CmFaXrnWw++P zsr#Tt)&Sf;fW&FiPRa;?Kwlz_#BZ5EU<{{{hrw3`z74u+f1G|);Um4)aY@k?$7KPd zE33h}EEuRJFv+ZfLr8Q4lbxkg?8DB%8eQFTGqf|75VAPmO!9Cq{swDdlef8b_<8D^-2m2w;A={Wfllnb6%nA9FXOb5cPf)eFfNLq&T9WjNJ|q zVy})G?I3q`YY@0ZI!VoT06dTjx=zJ$omLVpKU0^;stVkAjOi8>5TN5%v?Zqb#EqEC zH#V@kkf;-2YP??;l5oVh0>UCikEBT>$6rlf;(uJ#!dG*E4>4yv@^x)GyUy74Cc=#8 zn1h~{sgoTvxK0k=mLZS0%_lumH4#;!LmpUJ zevg1+BUwis`qv2>kw6{+RrJ^cuH8meFxbU3Z+eFOIfiPNO3&|C)$`cz4(~eN?EO({ z-u31AbHV|s*>2^N3}yx=R*IF8?YC1oOD>MDnbjkr@l-z@tM!An>(dEc>$SH{Qh)rG8A^`zeq(3j< z?8?dh`-Bo2WRAcoNu-r00z|A;Q-BN#;#ZC2KZ%Pog;o`(04pA}Xj#sOC*Dxq6w<}S zVE0Dg1No&*aB8L6#1zU@$F!x_ZR6gjGK9DKU+>ccu&kvZLf=&g86_gxhT+l_)(5jD zHOu5rHX=&HSAt@nUr@f(zz&5#e!*4GgsofqCtsavl-a#k5^mrh3qlKdL4W6jV1Xj* z9uP=9piil})5+hHLUt5;c74CC<_ohHBC`d6b+Lk_js3~z3cLhg!wDw{nX*^)8BYPy ze=XJMkjLzE65rHNZ-@*Z1E_{(h&)s6I|w#|stBDX=VJ&+A#@06d@IRasYYhfv))e`a{Mg!k<5ZVhhJ*|HMLx&Pcxb$EeUD8Zwr!HKCWM|yH*Vk0?QxcZCRrkM zKHh2XNL|mpc2zkKOdmJCQa0?!M~YyrN_FT8&_yzxH1+EWc*^ci*My{-4AR0h!mRNZ z+5e${7VTD)?zEsGPqKs|Z2rIJP8yOdBc7Wruvxg@f`4jv%iP7Cvm_R2F$&vG zadv1LRvpei>tj5H6X20sbx#n@(YnG3gb!*ZjGBIwGB#Q`74K~ljm10QVMCs3EdB`W znYu8?6E8+wJUJqTQI>RMjs3e=Iq{@$KU6WU7HdBvO2%eUUw`Dh1{^e0ddcXpv44+c z+hgW>{f`(uHriXPpMw#Qq>SJ!$PYJNA}kd67ETFLYQ-hPmliAZesQhRkPjk_-^L*%u+HhAbHy;T!M`Y>Q^74mDKSoSML@B%BO z1dbS%i)2jJ7AkE-X2qItc&SM^42-ES^4hZIkotwK)+@9*0vPo5EVmn#d?u|DcCfLN zLIiSc0GS(cLM8>sO7+SZbV|eYG|qS3xXE6JtY>HFY<{J>Y6Dv84%JsaqX_QU3x=(Z zGJYLVRVBGNJq4wN!IYJWg{C!%xGEdbE25+mHS=0}Mg+tnJ5;ka z)gAky7BDB{-UNFU6i!asKLXZDu*hO3!~Kd{w6#{07ZU^TuucKiWRCoidDK%OQDu%) zRMjkI-o`%VW;2%3pW{7$L@N}89mFXUy)^DRhES_td=(n<*x^P zW5xQT#^T#x-FFJalwOYo790YD5Zz4?oS18I<6)LV3;EY)aIh6?e&ZH>s~n^^eg#N( zRe>aHFplq_1IFgfbbl1G=g;6t(MfX5+Z_5Ff_J+z50amHeHecy-`h-xde-0o7tP z{!aR;CZYaa6QsKq2~`NFe;40EOLLa4p8X@pPIdrxo)eB{H-*{DVqy|%Vv0c*3HEF< z;Y&VYoGY&ws-~DAwKT<23#HqHgV7<|=m!KYA21Tl%gQDg-uR@Lc3T?k<($U*_orX` z<17C4_3M80nRMx<_fMK|+p^CVnxmOfG$tQKQ&Le>R})3@-*)@bHm<&lQv9E|^uK@j zzn%QEspIc_aowYx*Z#?^e_8)O{^YIBKYnY~!ma0K-tUwh__;lKK)AOF?Ee|PQ5n_fP+?V0~$^4|AeeD zIaT_H%%?te{eS48%bMl!FeSX@6Pp_Xb{(XP-`Tx8AiKE~AqrxARKD_M5|5SdUD(g+_YuKPpACk zA9pND9saW?e)RpPzVT1F{rj(e^!TOj#}|G6vHag%_3FdJJx8vXw*DJm`q%w4-rM?j zi%)*zpT~fbXbi}S#t1uOICd9}QQ#Ox536K7#_0jRqA^_J!N(r;n4m|49uxJ*=rLK3 ztR7SKxKfXQ<ONDc9m?{GQ>}SKane^L;e>Bl5LS!sm$p zSoCF5wuE$_29O+;f0S5-&kEt!@dfls%q(jAn8mat;hysSyq(3c_mmCHEv+kDrx-+JYp{EqVy*X+g(xSW<$ET#1_c6VWoxtfju+-iB|{l9++8W zS#JvbCG&^GZi-@Wc7?H*dkO3T5aDa`3UZ6@!~vO45V|o^Z(C)my94$j)-vTLgH;)F z(JC^DMNPSb8oI2MN?^ln#H=T9bM*PB;SP#Y*QkM$Zwg88rIyW5dHrVzSO++{D1omM zRChB>uPw6I9DmLASG&LF`D^}2;NlvmRYM#H1~7znZ_0A8H=-GF%4yYYivultb%e4v zEH%dK{JUWVxY_Yh}Lf;Mv1nlOGQXMQ6=!ocLoWA z(?l}LrqrUAguq5eSa(%J5~pOabwycWL^LblL~~tH+AH6vhN;Iz&w?tKU^BbQ0!8FW zzlicSS=(}y@h+4^L^UbIoohX*u_!tmE%K1?p=lg{^vQlO|q@)NJWzwgKSQMEO&RXFux<+YL|*w=FCGtCFx; z59vF7g_Asr{nA(GkA%{ww#N2RtTZiKwCRGhEu|b;exwJV3gFuT0`|*#NY`Dk?~+)$ z{WWzH6*7xQsadX{ld5n5S5ZwZj#nmngzy zRp=N!8uZY2O}H#p=|M0Gzu?L!$Zrk|K^y>AoL@GjT-$k+n&g^c_1T9;@K}9zn^IhJ z@xHj&8c3oxKPJpMUTKxp zVJAis*CE>!nQA2l!)Wc_vO}yLVCxa~dm2mX{nG3TKz@)^+x&60&9P&qsy-UpBil@e zs{lUB4Y9G-_BYV0RlWB)yRbSdq>@YrspNq&_g*=K6CDDB9HBQM9X*vHE6;V^x1HEgx z*_I$fuS&#dx2ck8V#S#W7w06oCYp_fuy7R2LbAoCD?`D-OYn~rETA40crWVl{ZJ;F zxdb!Z0jchyO=t()L9DTc6UsBhV@ITi+PXt1+p#20$hC$Qr%n>890L>Ge8jQoJyuKqzQ7txaXpog!5=>xLpCtI4wdGvm zZ+70S49yN*-y2D1%v9lT#%VG7SG_t7-FGobV*m_|=&FqMk4q04XySe904CPbT4BtU znsT9%B}~PBIi$$%$JZbCDK_syjb;|Lynk{`Y%(U0HDU}LN6b} zKABQ8ZCYl$EG}r*>}hDU6qd%S6-_WITe~*;6ozS1ono|sp++qId}IiY z!g+t4u1zFql)~gZ|EPIu6iK^hQXaFnJiO}p{5C0Z3BK$KN=;=~*tLrw+Ah{wA%`n$ zpW72?XHhvG~Pc6eOltdw8Sn9RHW?nEy67K%>^2m2i}My z<)~>;GP}|jpKd+0cq9geD+M=T5coq}O__=Q0UOy{Gslnc9Ub9&US`uEM+TpKY#uCP z=8>tkae1D$aFPNuVyqN6#Dek{9I|%`(DmvW2!|Lx@?r|J)Ir}?4Rvi~fA%OmB@HS0OVOm{XLTIVdj3{0J>H@3qt;t}DubOKJO29yBX(lV> znjya86=b8!9zQwEfRBIB8xjEw89=VXb#k*KFVw`|3=oWo zJ;c$SnaNc_cxPlNtu{`BojKVltm?}RW zOcfHZIc!AgOCchI@W~KXhN6E28R&p;=e{jmAPO&&ObJWnf z%Tp7Y`A!SVIqlHlu8-Z5gC$iG83!aO45mk*U~WmG`F8qA_PPo$_S*<4_H!l_nXaGp zoCh2*(1jpQgg7!8rvYqWo6%(HSm}bIfXMxhE}6fnE%qH*z0JamZ$r{%EqOiTkultJ z#7Emywj}2xllUHy8D?M=2a=nZIwXdJerv!v4RN#MD|JmY;}Az!{%xwW47w*y-*J7D z3UKhrYL#uNCN+~G-1d!D%VnE!OKbI1Zd1v^J7>T1$dSzskjE=MVul1dXDIev=MD0izteK&`@X@w`G)aW(i>m*V+V zh}=pj8abiFQE^;Otm2A!CTVt$t0}wSmjwAhD>O;cnrM9o3oCU^GV1q>e1irt=A1a2iA%aweEtn)aGsj&rrU1hBz^P^CJ75EY=XGMNPy9+2y77GXc9v5 z;xVvivrKT>L{v^j^(lvgPlsD31~g?_t}6lF7!X57a+$wU2IVe?au?>W4@r;`IJ|&+W<3H!U_uCQ{lz+R)_5Wnz`zA zy}o7A%yqOl(lv1qvybjzIH9jgjAh1P+KQ-hF9VfE?KRJ0Ao6W(ta_}Sda3_(z~@M?`Xo)k)2AEHVSG`uup#8XM(1RY~|BW6Y#fQ3aa z;kQvy9HYjg(WEly(maK~j=v!%l>@-ph5bb7@_Tiaf|=W9I8dj;%h1dxG3?uZ0v;8q z7v5mae9hbZnm!K*fS6ZKz$IZu?uKSA_>!OQO3V#&b?gCr6&TZ!rE zDHeush>nayn;w{z2uLY-b#Vk^&ON6P%&7h0b}K4=Jr;(uF6YuL5&u< zs7N;DROkQ;di!;B+=q*u>_P;d}jwy2QR%G z9Ny1Gm!%gQl9!A#*38#y)c1@1wZtj6wW{A+Lr|vDh}O8#F`PE){>8iSUkrEcK0Mm> zY1SCu?dh5d65G?2jwIEnhFgKZ@B)8f;IV5vX=y71*d~gp-Br zz(84GQOwT^{Cms3*t0K&gRy2dkG|m}ge`{ac+#Jle+ekIJWHx7SmG5diKD7U#FBXQ ziAtBy(0Ft#3C;9g7R7os7p-)@(;=3#-NK67#dPrjzlofrp5=2C(x=;aYhFS+v>Bb3 zr{o={ESc?`71JMz=}#iLdJV%mA`wpeB{b;`cjgKbIfzuna^rN6X7ECO@Um^W5`c!lFC12A05~E9kT`9p}C#WETb6wIWS6AT0oOdxII?G8q+eOB>;Eqqp-a^e zaZg} zBk!inaUVLaN)(zt#u7tHgbDj3#y4*z_HZ>lA<1ieBL8u>S+kW72ja%FAQmdWbVi_$ z4Vu6;OD)LG(s-0w9PAd_uO33L1&-um`ED9OD~us+3DA0}WHdayp;lcA)gnvg7RJ1H zd!}Y`v*a3@g?%!y+{XilE3Nd3^b(0{Am`sURxr`2+w(NB*bYM=1R(gD{wR)52s#90 zn>E*5GAa&1F(IcjS5#}DLM)@nG9U>B-%ysze5(Q;WDuyJo5oE|B5tqQhSCgMGG9{q3?@_tnZ75U_)xek2ENo&=spJ z_te+JvNSr~%XH)Soo1T&`n)$hi43J!^AUY((qf*ln&&fG&XElLP6j^ePMA(cvyZ4! ziJLO?G%6iVN!qAoo8JPs12hR>Hzdtvnn`Jh$8nDktXMV&$3V|a8RDT_Nj)B)yR5B+ zlScFqs73)+4;s?iB7@#UDEyOyTjHJjYr!VQsC1NWFU}IWuR;*jIpB)cR?n6INT%4W z0%Eu1?D3#jC2&n>%nIG>bvEgf6V@}8Ox#l)C$*UI2AxZ`MVcf%R7SEH2~d-QodU;oQug%3+!WgOQw}VSmBV zM>xaL)Ue`9`NPu$obokWvcpNT$)bulf~o$37N}JjO>B|Q|AM<_;)1vUuUWiAZ+6zK5l0x6kHu;<31|}uiAs$Fw>NWG)sKRbYbR3t;O8H1k6?C zf#-*qebg2zdqC;(NnlPEWqtx3Rb*^WxL~8pBkQ8auD+~!a znY+0!!9vYhD-M8G;mZO`PQCGJDDz^J#36z`V9&aX%8XC|QKG3zrc;@=xlfd7o58Ns z>6(O2X@&qw=+w4An2i`v?Dc?mi!qD1 z(yFiHGMdMr7O6$3P4U!pJ=@q=X}0vXR!L?8jNP5U8C8uhK(lGO#?{wM(x%3429e|y zL@CipxNv;BO@42NNl;raqH67>+q{PpdZUf#&Hsi>?tm68$WHbX z(pklrYc&oKz3f#w>L_|$a~4aZ;$7na6N2f|+J)n3 zw%(zQB9*oHNQEN<&r2#0-83mGQn~xbN95;vwbDr=@a^_IO+GS)*Y+z#h{7AxgJ~Ow zH;tzF8eqa$2xi_lE(^1*@jW!yxfN8D)}2emu9VCAdNMX8lYqHUo zQiT8~OqNJ8Jy7@U&me=0mm93@_tz<>WV6Fl)AC0ULDUW4l~q@h=4Jp3n;l$uVlBw; zuVgz~+Z<_UATWG%99WQvi7Q~!94mw1iJ~d8g^3kjS6Gc&q zwF7;kEg&w%d#svhhm*EhnE(Jg6daoAsKMJK%`iTD5$AzL>2mNbAdt$X_tu zdR|2kzu4m!18ay!1?^Ewc+ptBvc+W~o7fK7!pkVTsNqBsy|_Z+61`2ExMu^m4OXoa z8NZa(?=FabJj}uhKA?hGo-t#w+;imtAKWbZ^BjGZQaID@Sd<} z3u5VhYD^23DSD*zsL`W#Y>VwU@Wj5ng?nvUkg?#)xHBYZydOsmiQqeUF;Y_ceTrGB z$DLzZQhZ4*P2f44m?#myPLKP>t0axGCd+eRV%q&=XOCl|ViP-shKdiv1Xb~Bnjlkz z%8S&`liMxyY|)di-6@YneBL1iBc zD;lt0$-AF;wm&IhqPb@2$)y!~He1Ngd1?!j5U5GdvGyFVaCS5GoN6I6^el9#7t$8| z8GGJg&p*(UT|PZG>B%mf;m;WgS0l)xTC0=AywdTeuv&Jgh87V4M6DWxekSfQ`k z^M@8~m9amg>YI`(LcnYbUTn`L_G}%K4h8dBTJn^dVpvc(stjvX$q{_t__Wg|s+=@w z$0p^MT4760hYJ2rIptjcZax&F?ZHg@G^H?Q2fdR=$tCv)3A(%L$wy;c9(7uu_> zy|v98^IPZGJH*eMGjDEt+g!zkgt+AEYH!P}p1ZoMWA(hwIc@V=7tLF^x_y4U?Xa2l- z9qkJ{7R|}6=~ys-&b+pcuFm;$J3Bi&=6AK`7Io&<%*nNO<`&J(QS!W2GUYnj7A)$R z-?^Zzbzek}Yr5vpr(BVx%sQR z=C^h%>dV<9m&7Hfty*<}Tt3cVDg&lL}wRf(b)4FEfoHcXXR)f>I9Sb_=wXd1i zHm`lo{CRUhX4{%YopV|{TNmW!$=R`bVaMvuxovG-9UYx*i#podR(G{8nAuCC67i@G`l`n*M*i#pqKi{^E#S<^Lt(V_)&7tLS2 zX#T?1+}ySWo$cUx(Sr64a6tj&Sg>FXRkn4tt)5GYxt+9h&YJmA^odk7{rXScyz2Iz zjtyNMo4aOzHn({Tr1+69&bht~BF#+s_~wrFxi4+p{P|_wTQ;rh*!C&Bjmpv-=V>PC zd-!0H+x8>I5I=1Ang-%6R{Mk{6bIx^h zTIbAd{#5QuE4tSZk>8t&@?RTx^u)k}$1a|Fe)#bhFP{DGKb+e&@W}CjU4>h>-Ts*s zf0r-t?C#0Q@r8A_=Qe*aw;A`RH+OWdQ{c*tTYB!@oZIq+b$C`S%Wb%~dxOG2uK9Xz7Mecvp9Q4)5dk{a-Cug*Dn4< zuIJ_rTi53{cTmxOGEMrNl+vu8(~5rj47neSGuA z^)1V9g^{gmUa#lu<{LL|ggQ1fZ^`vot7k>goK$pOb;&p1*OS{Iy1aJrZMlxFfQZ%W za%$R~1^2W?(Y2}QgVk9+-q9(fU%Pn4Mr8mg-MKAFP6Mw?MJ?57Z_jN};X>N-4O?=X zE5I*W7)9NwsH-|Pz;9ib+j8yV+qZ4$$*sSx(o0*e`$TR-ZgY3%b;~OtF1EZ1QO9`Z zkCJe7cT&^!sc2SpO)E7RsbfQD?j4Z*s^oWU>gwppCA|fw7eVZ6t-U;u7p7Q6WBA=qJU$wbo!;_7+r9uk2uy-+S5eN3^+;V^#Nh8uLzg=F;X0>ED`LzZ&$f?cQ|# z(#^S!YZtHV*u2H)t(|lgxG$e>Med8ab?s_pJG8kt6)kYMmv!`XEbZ(Bk1IO1HhQPuCIqIvI@IS?+uZQiItlZd+;&q(=h_O5wYAT?2R8FdTC1!#-} zNAqu(@vXTY#@*7bJsWRdi)><}X}*Z_W2xx(E)U+a)kzya+Ij8bQQ*y8=KVlJ;Bc?@UFv|JzHScXzAipLlrO-r2FPV{?L7D;Qzz z#&;`tWk=`dJMPV0`}>;_kUriG)oS|FblI8f{$e!^o77-JLo^{3)s=gXlwZhOU~T#I zi|!cM-ya;0AC5fPiQNN_e>b@McMN|G$4?g$I#Z%vot9u+-EVv); zFQ3{K%6a_2z*D8+eS1O`PahuKA6NI%+45Hoc=*Lvjtx9=IxgzK@V-MK{m%Tr{+*Sg z9_=sZ&qa|WS?ACLkM$vgx=>d>^KcYhg+*;5cvgjTyVoQi7gd208xdQ-ux?ZsAvfi! z!j##?+NwZ_$w8VWt|~&QU7W276c(4=IHxM)%2d=C3&2&ubeL|~;$8?tfx8hPC&JMz z++seMinf1Vu2nS?m#$m4@k_UEUDwmSX&slv)Qn%g0a*YN>xxLGW$Ld=HXXU1WLof! zDvg*imyJoiYm5Y5l@_UXW&TyQ|9Z(%<0(yi$)){|eAGtS?YW*FCV(iyl6r!L3>|xU z@cc2uos0k6FDB#*J zb6HX15`{Lz@mi=wW9+F#N+u3p*}dTpx;I31;T_F@q~f^$)ZMXx@Mv7@7!mu4+{Rlv zwycfD#SX0irp9?);FNH6H$Y9ScxU5{@&`e&;I3s+Ibm6DOXucpQ+oU+5VIq`QRd==CH z$Uy%~1O1N;e&;M*?HqIPiS6Y*55h9a$HmK7w$fMSQ>RFL@yu7fgyG%?p_lUhGvz(- zQ{Z{yQ{yfY&DRp$`{0HLWH`8Z#rJ~L|bRIK5Rq^9a}vopkIV zL(-$@n4x1Q%I6>TjI~YS@+&2x1|C2p*jYaG1YI@s?AL~New)DZ?&Hkt<=(@DUp)2A!DpXl zXxh}=z}OP%d>94B7Z{?2-`df=E*fLcm?3)j#?{D6QQfWnj+v;%N#h!gvFC_9x1qA2 zgX+RN`W-|AI??h}4X=?y?E)-NDMokRZv#bD9r-`OBDJ)0lxw)DXN3OSmoB}%eEK`( z-6u4bjQfxht^Y5+h zH`CspRJ76CSnmA}j3uGs;rz~l2abBw&?`?ukAdy%`Kl9jbuK5~!L!>3o_yuv**`_Y z2whhKpE^tlNCm??UqoQA)zgdwPexIWn&n+SV|1k^#R0Pwy}T=m-k*x5Kz|rhgFc-tQ}-%Cvty3-7J09XD(ZDnMV(4(;Awe(+I|?N^>g zkpKX-U| zEQ2}snHYP+bSwfNqx_@MzUbc#)^7%Z|0NY|bxH&?K3ox32KF6?3u~VI_TxyO!crB| z2p@iO2O^DSc@P;1j5%{3dS$QN#udmlTsklQZoGToslzT!#X_;M<~!~d2OYt(MW|yG zIvQ91YXJSt;CX2(T0C4jGW;Mu+b@ci}dMuATt?++Y!Xz(lF9X$K62Zp6U z%wjpEj+^7hbCB zjagHaPFzv`0KBJ?W^~8?PhsXa(?6z&Fe%=*h628st)#LtHRlK-{g7km)@{pHdnDTN z?#;O_Eq|g3)t+b_0(O#abkiGra`Z~8nldhw`)?Jv)DG4#1IJDd966Y1U)Z78x_(1g ztG@V+^0`OjSm`pCZ|KV1XVdePKh|R7{^mcfTA$tT8WJ=x)p-mpUSRpy*Ds!bI7VC5 za@fF#qOrC|#S?7-%l8RdYMJV2=tODg_@hxYFBP>8z5H;w?~HBo6~%w|Jd=bB9e=*O z`>?pl*}X%@4wd(a*RY`6hbrJ-;^5)(&If(D0PE8redOtjXPzDW>hbb7O4?~1!^3;?T27wW;T0uo7jL(= z>j#d1Yw+2xMNwBOx?2V9&og@sKl%z9I8|Uc^la2h`$wgrvZ3$xl7687n*)zMpJ1e& z?RGpDPd(@n;Fo;|n7~Y5#+G+IHh@B{{{VWlfu|2sRp^S|?+icwd=%Z7iax@&@5Qr+ zD4v>0K(e9Z-*60gpyMH_vz3NWA=WU%G;8!NUszWzJmG_k8${O`CF?f$@lP?b!F>6&t@4{8q$=?|?sTUdLAc#ZwQUGaEefN?=J}DQXz* zdC=L(;JL>J4-}%PnW@m-R9mfVixZ#)^-Xj55c}pe%a{G~^seW&Hd;+6Gue9QA6hk& z1nV3Dl)9>>?$!=AY&WM&H%^lT9a_7z&?x3=`gQ_GrycD7t|<@6m;9SbzIYn1ixW6B zLDiUrecM)JU95bx=)o7x8t<2Q>~2soxW7<7RV;t?6}nMNkZ+$Yzx4IN=h1+pff(~i zj0Jw3w5FgRdf)|=nC+X$gl2}p0MTXvEUX;5j z3J0p#m@ZV*A9ioDqTVHmgMD_lZF!(%AHQNFMkYO5yK;4dA=HzcdCrok2UoE7hYq z8>+=jKHITwYpyPiwZSfVVMOXT#wj`49HV~AF}^C1L-6c_)aSdpsPAxtk5=Cx1Os#0 zk|}h~9QcUA(iYgz2Y=lRW?JS{#HKKkXYI}RwT(*xs-of7SZokICq&QD&QW^&%FVgX zZke=PL5o(U$7!A>jSU2Jwy{w70uSZN6!n<1XM+{XYbMT zLo@-t1!`nIl%os%fZJ8jp&u%HizBCb6{VSiUl(j-w0` zA3zBtKC}#ysu(NR{ne0E5-(pCMq(UYl_Rc>=``&*fW!-nqcl&4p)vIx`W^wpBpwLc zHr{;BaRq&ytNB5!=H%grUmo}>d)gZCu7pp5d|>qNLD%7P((PN#Ql}0f#lj39-T<5X z*riRYa?R`GtHRZ`5wvE#+~Br`L$91?84yLcrlMP_Ll_?v!AfB1%3G_$%g3H@6%4wS z@>ic`opABY1MEv93A2DA3oVMG&uSXP!Ya4C>o-`cW5gCPrUk2F#C0*hwT>J*{>f5rcgf2ER8~?_V(O;zdVr@iHHIjBoYm76=~+O zjsvqlwf&B%o_2IRZOx>$?X4ZqG3(hL5sC+PK7eY<%XRnYd@|AsyCqXEpJGJGb?a?o zMP;M?Hf%0TMRVOv*}nh7=8tgj&|a-vOq549WvUq2A`Fvk&*0ye+wdlG+C}@2T(j;5 zh9Dd(9BDm}*=3`>j6*M$OS^6PP`C7pY$tCfCv??6?HUM zX<*L|JyVFI=90`en5JGng(_dTL-rPGQEUT87GGRh0oaSz2?R~EN)g6?CnUlq0^_jjAgX^_j z9ov3MGGlcz@RmedC78P6N1UOs*V`TA_29the=*%V64ns`MO{X4KVM63g8Nw~=|3q*av za!C^BubIt-c-z`w!D-z7cfDY|UZEDERTbiOokJ8+=Xg`~tHNJDo3RhqUdHU>_Ehw# z>JVzijuB-#0ht3R~I0cn>IZ=f1&$zJF@*6K(+`3v+ z?HaN0Qe@TQrfYolTF8W`-MfcgK`7Le7W4`OAxLKoDueEwJZZ#o#!=ua`FKCAE)KNP zm3%ooCMY1HKY->EX~9F`&|oynsz6dhvTJzNJD97tzeeJJvK;LCCHPBt`ehO&Jl%$4%uQ`ITrI?pPZ%kpik1MQ z)wsS|mu@y_gR~}$b++TH!evBS%L%YitIe-|t$YSK5)pCC?Hf1u)D46H3t8T|aYLOm zmRM3Uy98gIeip@r>C{4)v#eKo>Cz~Y;Y!)u8sg?qXPONJT}{aF!Lvhs-zlGXD6vIx zWqI5Wo3&dH0{1iSYY%Cegg0A#wXYN302eg#-1Mejf$+#xMOk8H~F*g38bD z89s<@xh(UmL#S;y4-_xK&M}43;5xn=bG7O;Fm=>kgWq}#+1Har5nQsKLtpE=?VQzb zq(~Qo&2Tk}a;fMZ?=v7|q@!+dqmN*{bWR61FP?veC}7rvy!&yVEFAK|GtUe>^)yi< zEGA7V!8|tJ7TU-dSiZ$i$Nd(nvlcphZp7sMi+&*w-kET>RFhBz?+dZR_ zdGC(wA(%T#V|{WliatN0xBl=yvRduYBz)yp%AH~-+QvxM+uA0%+P8=_5UNZ~z)8Gy zgc#|YNxw3sEvKAS3Ck||?dXk}7nK<|oA&NW)MsGQwKAG8*%~z^a776nhj2aO2#bn_ zYB3__i~WzAj6}m@i;A!XrV!L--{d?VEthN?e&sq12J%79Ts-<41FC?ZP*i2E*&up+?I-N6=wE4$jOUg8z2A&-it3kkN^a)4$uTMk5kV;8{To{eYPq%_VvN9p73+pj?I9XxI~H` z+}ZD1G_S^!jR?0@2g{kE3bC1uLtIET86>^zrZ`R;w84Zb-}+ z9FyK*U>h_J?0+th;;CchuN)QeA4GtOqM>V}=pW9$^8Pe_p?7!@aX6*8k4$G+WB%Pv3ScBkJPW{KeD#ADdWjfeJX4M+(6phdtwqXLgWk zXjiHHbc=`b$-l(M-3`k;PeWg+5-j`I%!{0ApkT*-RKX`O<3qpSQfKt4gIkdZZ; z=k-*U+2g4H)IzhXN^*-! zejU4`f|E5JT;BZ^dRo{wTRH)4S8TWmJ%C(1{~bY5)n~$p8RR)e96KV`XA01>tdne; z!%%-n2YF&fGpZcbWm%j)M#VZk4Sc;o>lO7v9&0oV z^lqZ(ISq(08%mJ4Vsv)Hg@=(cSS--JzErz-YG+b~14W(nQI4pB&&nuXp(6fT8qJ(YWcXi`V zo~fQYL1N1fFKq%buU*(>#f8s707wWFSAAW(Su`w3F()V?+6Ix-PVQ;@7;uGnKpwKk z1h5H}V+akfh4-FHD#*pn1#Fo2!$+%LeMhKxaX+J7yS#b&YOE~II3N)xW-+x38Gy;!Juo6Q(urrB;{b$PH*BVRjT|2+a$Kst` zyZAh*R@bgR0~Pb6*N&2@ItGB%vLX&!#}7vC+^fa5Y%!g4ZQEtCLQ{TeOOk&K6d(>Y!bjbXY3aP_Ms@xfZ8U0p#6{vn!M&LS8{r2y^{eOKtd1YVPAv9X zhezbnmiJUWxCIi3*=iHJVdfh9O&o0>Xto1ybuB_xN?LDK@r-pTukGlI_N7^QC?uOn zpgcu^>e3mE?M}3h6YzHiVgZ4&^jdK+9_i&NV#Po7;yQ}b_IUo`tW9a-r#yXSDjzmspUMoNE`Jk=%e!U%V=yCj>tU9rAyvVQ5*CuTGzRUu>Q< z*;f?3;&T>wZE{!I*zuREPrv12C4Cq&ZR&-yGp~*FJnl?VD7Ao%&rI)AVr6~ToW<3# zsb|klpWPn%=O&-3rBSf4;@N`DryXqHEKwKyfgx+#H|xpqQ!Gu2S(cX~gT_y42X<0K ziJ`z-FmFAO@g#ff^fja z_}9c(m|rR;QG$HfAPcHu5~i71n{tY0iXA|nk|W5|v9q<8pPoMR0Wh6<^!uwdT2PI@$U&70k^ zV*Tj4^`nbt-@D5a;Ha*&XVg6}@>D&(06!J`js%FS~O#^K^80 zrg(et?1+{PJ~lMFqg3Lwc(&aDPS5dMyyvQ^kr2Jo~}n_5HIu?jI%#Xn2GAb*4`mrWUC^_woQE&Ha#>wDpl{78|z{`h3)l!s1WY6Ar4_S6TueQx;(Zl4<{ zBi!*%IvLRJhEE^{p~y0xgT{fYmTVd2cfbsv$Qrb`8Ld6g^)6ik)304QICJnw2-NQv z&)3GEyEgf5(*D9|HOBjMc?n7;n*3ZF6*B>uM0VjFpx$UY*RPqYDAysLaTLnLP5l^Q zT&M;qrHsd*E=0j#-**O9^^Nk=+6@fVw|ecsVC445m2w=iW942mRL5!CvaX&#p<$!C zMq3Lt9i>MS;mS**`{PH=4^UleJ0%F@W%*QxUs?Jo10c-ViTA5pCes&5dpkYZIZ7c< zbVs_yR{Re(B7JuwBeVb#RxfPz7Jjf1J5C~;L8=q)%WORMJcq;c_I=v8^H_dZhxyW3 z*3Wk6=LG*l^Np?efHObvJ9Y{(hkvji813WQ`J-a8vBn=VP(;T~-<@|3e7AGe2rzB< zbk&GPdG@TlD6wh3TsKjW2XX4zmY!I zTAw}33Op6RvVxU;-;tf_JPCeqi%HPdiS=?$ystt(E%PSu=@hF09<_t1V+3E3s>bPo z5&*z@b8W{K5UebtOjfZwhY8ph>;Q5Z7_B$jiiNHkp^w};35EKf@AM6KtcUnI7I)xP z?Z^UR&W-G?{!~Xi)2VO8ig|c8Iu#C>+3g<79955X_w>%2zo6}7Fh-u}Ues;~x0z!V zbLVPxodV{Z8wI?*;{sTDX~?`0a@0Db_Zvy={c~p5CZ4a3y>ZRZq&OyIx)3}FVPG|= z2ViG+++5$+^3~dMFw~nmY>K7#?LfOF?|l%Sg-+o`^^cW#JZSI_CbE}WOI7I50Z z=1=7mZfiSJG*SJ@PC>`Sihsgwww~FqCoN?8vc#qaul^qDS*p5xZxiRpA(HpX z4?aRa3MPGTcIo(RG5;reeC7i|V2ybECxu`Fps;$5$AYF+zWO<+_1t>~%IuEMcFa~S z1vcP;w`Sj1f?6tC&a{$#&6-7Zr)PlH)#GpC9dr64KNJIcIz4O~{eubQhg*N?PfYM%5_1Fujre!qNy2W0N%Z;ne zdrR*+=On7k8=uPy{}Osq6E)Jza87^*1EBMff|=h^@bYF})Q(6KRNs9QGq%`)WdR4| zK4X|uv0tqLIY~F{_B+Bv<@jX}AH+Fv)u+DOQw!b*O}2Hogr*s zsJHzIH)$oEQ=`W8qxT!)Btm#54Wm6T>KNbO8-hQ|H!(;p?33Pp(wc-_vk--)Jb;D1 z677WkAgyO|FA=Kbu4k}aZ#WyXtRzUQJaUeQt0yl_Z#k1ZzCr0YPKzg5n17ZAgJ*5a z8I+K)Z&QY6?eK0EVE1FFE^M%!R#BjtwV!rq7e`e)xQlj=v)dolqFc%b7(*fxIm6~7 zM9``}`0@+5)jVPGVh3F;;}_A@;?H=#&ve`|xVi(3Slqp+Bbs~r`PGZN8?jFV2Xs;A zilYEFwOwyb@7xVg34d7`1sKV7KQ;~?;}Vs%5$;7!&w6zdV;9bPjn(~!s=FqW%7GIx zb5@gq%_gZj*8y>v(EsC6M+?XWw@w+Wb8ft)V(T>Q#!}nI#vwRCZXfb4IRaCcdTaFb@A0d@cHQWPIXB)I?|yo5M_mkvvh-*YguKauI+k#9 z^=EZ3JjNG1<#i1AkFFmc?1;-2kS{Fh7B<1x-_sM{85&sKq03w5H0&!GD(@1i-^huG zznz@mhaQT;cR)%r$M;|!k(H{;F*=v7f3)A0Ja|-hS-!^V?@)^ zI&d;*0)^+Ol<+Rjz3efeY&HB@o1K$mUq^tN;ImtYh&#?26kR!#{A`8AA#m~iO z#i`jdj6*j`L)a|5AaIYJCP-mtuj_np2rp&`NQGcaFNkMEda9!DCtecP?meZI$HSg! zUFQS+&?BAp>%+8JO~DxxmEH6wAT6DLY~W$*)XU^6a3|d%QpW2;gibUaPA5Io#63ke z>q;2VgMm2(9$wr5jO#nmBXx8@_X_kx1qMI!N&jgv;Mt7~EVyCc$SSz)&&Yn~)Hi%9 z!n5P1fPl8gX{3#2_6#(#B>mIm%6U^AMx^e9NP!cfE`??A3TGUlKUc^=BV?#R8bS&@ zjB<0ew>OZ?xWClSf}Hk2)E@58nVLLqy-3_<@4M3{$w@j~y)vfbl<$vij}cgN7=uKX z@q@&RZurE*1QG3=3e5~X4fE#O|8bYD2Zqzk&!ky_{4^}V)k^N zpWDMtQ**m+o7>$xw|h|!H$^Szd}4I%nj0l?S_kLu9a0~D`oZUG@CDp^RUiD;TW^(q zNj#Be6U>#_Y3!rJITms!?R@FF8~I}2;NwGI#OGDsP0!q}g>!or@PB%8_0FqL_#rdQ zfxvF0>k`U-YR!~AWmhl~fA;x%7c6QwKk=6Sh8@nqRdpj_sd{rM7>1YdGfdvwt<7_* zR@=$t7;Kyz75Bytu!%HkhwXmqITy|C>d~CHabH%u4Y$sD?cyE)9y+BpoS$LNZk_YI zdEGswLrz#lddSSnXK(n#l8%R~V`I~=ZnV!Fs6sD}Z94ms9K|1O+{6D{=tvHQv3Jn8 zYRBK4-ikl&rzEHz;e7AB-kz>HM3yw-ApU7w4`eA;Hy$RjR6^#Nw^Axf^iOskTTZh( zO(Z&{Rv?kG26$b-HIq4nF>h`UFyk6C?#U{zs%7)F=ik*eTag0^X4vZbsX@>kWX~;c z3qN$S|A0W zM%8Mc+;Yx^C-Q$W*mWuff#Po?_!F--*0JMz&oM z%>XseU<6wew?CI5Z8(^?({Okf65pf)b-6ZXlp0ugs3P!(^_nH%YJSDm*sd zwV(?q5gR<1a$T&r)uXG zr&y#p7p6Jq^>i0YcF0lD!str4?2a#`LWA5oExo%Sz1!QffOpejMIo3Pm%cyAq+Xe_ zbE2@l{37(TsB2OEMW^RQN*FIX9W|w6(IfTn8?~)h(z%jL?L4)}i6)X+uv8^JDN3c9 zqcqoiEt0tw#4%UL-XiLjRuzUF1Yd5#nckY0-sCr+SHq@EfGY@U`MhaqCdRiU_w=DR{q1BMn{DlP2y>6C)cLs2UTajl#+cWJGl( z1xTjL(PybQ0N+)0fb;0(T?BvAI6WF?L1#CAYn)w^wOuJb=pLA23t12mqo4jj^#(Kh zpa2rcMQAWXe~! z_?&`_;##U`>dQI>6I*k}rO-w)JJ@;m3#h-GDNpkGpF*UpthESks^~ z(2EqHK@vFn6CMQ<_ERiG%Zz%$>gDHW_A7-Orw@s>t{zDi{(X0Mn@fYBfz?*O^U%S_8G3$CPac|u>aLq0b%Wh9Q!XI2UvZw5 z60exWNx(@P2x)rl;>ALE@Utn?qY=Ay0!H)f^CWBwB2Nbj*h%~i7#b&a8JsVW>%3$2 zYE6Fe9jcS*Vk-x<0dGD~GO~hupdg&_sCniPChXfY@7w~{D(1J(Cj5zaDrt*M2<0i% zVQP*DK}I2x7l(d^V}zradVia_K+9ATA*evgu``H606E{snoS$dY}Kzxs*%aatwJma zhd=R%rf*@e4s8N;L5W{C@2qXxkM07W=Yk?Ww3^^lUCUhq5Y1cE))KkwKr*CI|H>9H86%Q#`nibH%qu}xKq>qR(SiVHr>gW>#BM-|9 z{0*UNz%DiKBwN`XjZf~GzM>>i=NA{mtcR~~TY_rmWkwO%yo`TF$-U_CepkEA3^uPd z1SxCnmIN0wKmIy48kSmtk;u`MGaenJ9lW#0to%dgo=~-o$e=n|8vv4O-CH`0RqR>gM;RzOTBdnU_w? zyoNS|GS8aw&T7r|!It-N33vhS7aNJpC+pIRQr2dx7mh-IKCW$TQJ*{&WSt-OHU^ogtBy+~qw zi+c6=K05kEK@UVvt`wveY6;N5ca>L)dDIza6D^bCLRPE{sva#*%F26QRvrbX8!$b8 zF=-hhSNj|cgZuHJ%e6$1CidR?Iy}e>p-EVod-QR`>m%RkTeW`uS{;rv{6I@CfrzBr z+8z$%?E(nR!}s(cTFp+_qg-ApfmFx)@}2-u?U}La<_`#!U7L(_#h}KfXByc`20)K2 z22YVr&o^N+8RI@O;@?Id9vxWyjgH0KWFGxnYTMpW`jN%1jwo0bThvHWV@W@91^-vW+qgkG7urZGCd);BPE_t5b2!GTe! z?^4L4tAx+tM&aFU-6f@@h6QsE8ovB_)IxI+^uqhe4+%kJYwb#i+uy&)6nx z%iGo&kU-jmyk&8H$>~X}v1V#%2U>MFM?AEj;KP}XyMs;XHZK984Rfr%`VM~KgtI4h zp!PwvZrEGQxMEOu(|a!p`o{exNj_s2oH+H!@)4y0=(HXM8QM(~tEZuh*Ztsdf4|9D z_ny47z5b~#Gu3UTZN_MZw3K^QG!$oMC$V8bu`|Y#j;>VtmxPbuiDsNZnqJ{70*dJr z!k~#`hBqZP>V=B2M10!E>T!}TlEcRm5%9mT3{*_?#!EWuL-4;N?t9TROIO*B4CTwm z7-Byz(@>>~_DWHl-2jXi_KzP-70lzCX|$!9Nz#1HW9M|wjKk6iL>zRFO?1;`Q-}5+C$-614 zslalzr(vs)rE1{u!m*^ zDN_27g1JqLun)CKXI?&{QYX*{ex))bEg=dG^zq#IXs*(45?*l;V$iEods-$CjyGH3 zjNSavh^^1*t9wW!3ws^KX4sOqWlTA(43+4T&N<1Mp%eI%-O7}%WD?HDK#>y|CP_xU z-fqopgpo6e`p)2-(o<{;hSQP}u>7W8Jz<1t%ck?)_MLPuT=OVquy-U4e)pTztCy$t zzES8J#bpydW`ElZmT($NuPfYnb4&arjb4iNu;A+0d9+#t{OCZxDrSse<|~P#*vKip z)-tW!@Jwr0n=#mv*+`+bCXCZgKhU}S@xh^CE@2DAYS?Wytc7q+vBuywAh2U;dkMcQ zIW_54gI66=MMF@eNSapkq7BJA3bK}$+Jhz{*Hq#givQ#&ko`Rgv^4R1?+Qr~EW#Z% zvlBpNcMgYvzTA+J-NK14#rT1kS%}-!Ru|d^if{fQCg$6Y++FfMg6w8bEU@v9B?&q~ z^Kd>Zo1e9Fr&$hWEiH>jpYSzY&6}4cg-=sHNmqmx@KogjaOyuKfC&E(_{rzI$BIvKBY>c# z)W+r|S)m94-Xzu2s)EMY9hVgp{t{dMQ~O_jC|5wnT?r&n?xmZUO8!;;cpyr}pozTy zg*~{(k~=W538Hdb2A17OY!bGKN|rwHJ#-&zFEF#vmM~yx^)mfz>ZPR@$J9N-Mz$Jc zG(OO@?S(<;CPibcPc9`Vhm{dk-Xc={aK|XQo{z4N5OGpn?1>M4l9n5XFWr1>TnoB< zy7~g;xQAtZ#SRMunR)dhjdz>ZL^ga@6AT^Or}6+FKAhQd-{44J+y>wBwq!*T^d(x6 zppPWJ>2s;27p@|+h(drAG!77a>sRp=oB{vtb+rP|7oILAvP*yIiu=BL*8>mEd3ZJE z_b7VKH*Wb%_rm$Tw|3v!{h3?lblrHPU5}h40bR)hJlh*Dv52J0hVIt7-0LpFgp>LQ zhJx-U3GR@|NiZ%+!A`jFV{O=hm1lNg7H8I;2F05mb<EtBBFl)rs`$Ml(F)$^PDD~v{1^XAj3hT^HGo_K+ODaeJWx?*jcyaA}b4#*G@elg)wvDHu>lJ#Ep zbuN|f-K+p5ByYa(M+pP*DPb!_|0E1TI{Ejd6Mm(Oo-TQeC<&)PPM){nD1%Nc71 zmNT`Tho?8b6kkPimJ^3`VBuIVgN+BUihva|>e|Jl>XfwqP;K%RPrJh1w!1N~3xFv1N`j&-n8oBoOYXHnUVYPP~6@)v5FVo~5h zkr?4LA-Rd~?OQiOltk_ocZAA5TSvv}QUrd!<;c{oExuBhg=DvO3;rd92>4)ln0e@{ae6ZxnWn3-Rs2X6D?h_bCiZp^weo}*AlCHOcIE9vH^l1LC3U@vzKiBa zf@ZX>OHw`J8_T$5$`MXLyxGnTiFY4;TVt6K>neyWd)n_ zV{{a28l(lOq>Lo=$JB^nrS2kR3ua}vxx-+5&h)lllPP4M>haxvAWabQf60RIsF_NF z3kzhqys{|{pn37#D-0G;peGPGkkkSClBG8zt#vXyiR2~T;$|>Or=xC?>;std+llPY1 z{*s-3g~w{oZJvJiG@ln94B<&!Zrud9`H_T3(qzZyzc4g3IH$XZ6kzOLvh$;9tRmp_ z|9DY%iZAVFlvWnnGGfD7%T(J>2fnoE1bpbGZtWbwq`62%yd$VAzwy90$|Mio$J4s4 zWx7ZjwLX1y)6}uaCgMq1c(hY}h8}BrK!;cWTr=(zBeoY3+{xcXVY>+FH@KLF*20F!Ah2uZ0 zuK19YgHXXD8wRqQA3or;7$3pqcZmcSS0I`aXx<3hTInHe6< zttEd57Q!aUn%7$w_h?;Vv!R;Gi#&d`_M!$v>yi%g@=5bd!@XrKvYZNkm(R4JB$*St zZ)mjPqlQy1c4eom&!D!C_91U`2Bdi`STt`@R}YY9q>nlrtvY%t0rzD7!*$@q$F{q@ zHM{BJAycXzLIdBpk5JytHxKAnoJ@xf=z*B5 zoFS7k{K0m#5Z0s_l0l7H7W@eVrg`2%Me(C7z^h6xgojS=#L7+^PfL6kzJo`&34%S5 zZEr%V+hL}8S~_5mMhGcHG#JYc|=&us#ZRMemA zT-N{Sdh$6!KgjH%C)k4#q#;gUSTyFUUsC-#dqK-CyJK2LtGhI_lGop#8hG8`H~NG$ zMcpGOZ*vNBM*&PE6CLvd zks9y9xzJ9HzOIBz+#>kGqbW;b`3N}yS)fIxoKvqhZmn&98y4(45D3SSZ0fZFkxX+B zEMI!hoSv@Uh28UddT%U4qFW)#x;joNSknJegX1kSv?+}#Du^QGF^v#;yfK1eZV6|i z3M&k`3#pDK$QGA%N?wXI|HO5}FmDf64Y%ilktT-?Q74jT6TTix(k4UGKp6oS>Tzi2 zYLf(F@4c0<=5>cI>?x!#m5J4|^DFD-E~Eavn8iUc_3$}Qn@Z(-VlKl7%{#4bgUn9w6&d4k{idE=h^T zDt4B^Q!M^iLy?2&9ALK>@rw#0IwiOit@Ei`OZ`c=?H!tvBtNS;Nm=bLs4pBTMi{5} zQkYd%jaCfaH9R~tY?F&KN=6Q;43u&^$lh4jf&D|GgG)XlAEkxqnPza_yA@xPFIaO} z84eN=M?Swtm#*lCKsW9Y%g#(aOe7(iK24w0ts1%o0psn|GmyoK!SW0|n|#_%4zUaR zXoetU!nH0M-SEh4qZe+Ed3oZ}u1iMGhO1q^J7JO%R~vSi5L zEC$o-Ne}UhuZGM;a2I^%b{W0e5M~8Os05uq$gBM zy_Y}NoB?Fn4$-e3FixN2nv5-cC9e}n0U;WvL+x~8k0nTWPbZ9%mflU2;-XA1Em1oq zbMn6ptsiwASoV!DyA1ZOXhY?xNH|5|3Qhr~+6jO*tPiLpz{55W_?`=xZ!>Sc z2twLqWC}mlhLEkV+98V~npj|52m!k3lSp|emdo@i$E9*2iq@^7SuxO8uH*A7p}lzz zZ6-E^BGi3P{~8jjI;F*{Ka(~ShA;y*8O4|zWmY@$+H+hY!}E!faUq77ZiwR5aW~R# ziPdobFlNB5?Y(u`;VE>qjZ}drl}PiTb;j-l$%EsqTb|?HeX$!H}n6s~E+l zz1(`G)duKtXd?93`Xa>ujKNB3P9k?u<@E9)lgVt$P{1w~40w{IPmr6c4$sOM&p$hF z$}Tu7h@eL)=c_(-B=|&8OB;?8wt|tRL9y@jZ%$)zHf$*6R>xH$=mu(} z?oGVm{@AI+$rNWcB3h61LuLloco`4%=b`=S4^GuiAFf?^5ii61-g(^%dg(VJFT=!h zVV-hIjep$7*{ZW`FaQ^(5u0^FIJ~v6l?15CG5tTnLr(1FkVwp4A-C#$!#=iXGS?^6@bPA(h;Skj)`9!OC>JlGE#j1ZWU z2=lu@M||_dIComOT2vlxZXh|Zb;U5r5Ii1Eu|^~h&vISq#Y${Rztk|4xQ0i#l-(_` zMVgC!+cGYP2i7T*K){MF=J;k1K2GgwJR*KeT&J!@Ngo?~AD_SjLr>nfel6Eb$!2ZT ztO|zI%<3apt|7C=k80uY*AxA#z7@QUWf^1?3G%b=QbG-P&54uxllrq;q*G|Salr%oUFk5oP19c~$Q%cB|I0i`&-A*+z>4y*q z*A2cGPXh}bKqwN4%Q-cf-pkQ#IdPmw(6#$D9Y&OIVv2T$N!Me( zd@q$BfyQRr>35Eb<|C{66E;THh@ns5_b#$=*n)8G=tZk;=1cf9sji!&5L#4)Q%9v| zZ^u?$~%s{pL!h=p=lgYqHPDI_uwtTh&t<4nso=bGG$p)s^yz?wB}=3lXNc~0J> z#3ibl;%-B@hCjFXv5C6kfjgFd>8?laS#j@OKiN9M{nV04KSCde6;BTK4-3hxHauf)sve=A(88>{x2`e%JC12mwe^H zyBC35WVkP0awma-1@rh)dSlp-s$0ElP#x`*0)yKE{BEy$*q}=04Cq5whdeXJ6)Fw_ z8PaixzUWF~9BEoO3y{DF6T+Kt>_>|sXD_Y97C;+d+;me4QrW$9;sQ23P6=)6#G#pe zW4=9P>aF+5BXSp`>P}kYC}WprQl&d4sasQwpCW%ZVSki4!zsHW7cX&?;LqkIPBS5A zsuVo5I87@$wud$*W)8)PrW}FhDY}&>VNHQ-dolsa6l1Wlk+d&gYa2cs@t~5g-PN`h z)_j%qea3G5Q|N>y<=_s+s+NT*PgffBi;3BlD;)&n$Ovqc`JnHd-jtEq+Oe>Hr?2u2 z2S;3CW(lQNsQ1GIQp5t4Ir(DktomHz@@QF{q>&eA#^61;C{;&61M}3opmG2F=FE@e zlnkr^U_Q8(Xw+G!mg;g0q| ze3;TdN?k)*rdM%AE0SBHeRR#1u@^#WbA<h4Mq)06>|MS=BGksqmh`-?`Eds{^M4>i@Gd)2hYUsHK z?l!gNkecRwa>^JS)G?&&|B#;OzFhj&zq)SQM}H(vFga?Yt-LR8EQB>~GMj-d6Y2bfqaCEXy}$H1LXw9n&N#M{#&Up0E_42`L2O#PT5lpE68cGj1!C&f@G#Y8i zlFq+{S1tcSgN5jU(GKvZxTSlqr*M625lR%m!}AW zj(^WBLp24RO(iB{&5GW_6)=~%#paZu=6X0zNV=oE+55#zqKgsFJGa(lLXIywnBHb( z*Uq1+o~&E60w9j57e=x%w>_LcKYeVITM3~|#~mIVOyeJDE_#^1Lcpp( z`^8HN6uUXSpRWO74zn5~z|H&v5iVX*ynAz-SJU}KPNoJRrVvGXDuK)WO=ZaKIwdmQ zrrVs=?_}G4!_+PIs~6tq4$i=}g`M;vR7QmQJtC8`iv$?~b~YOb)}7;4glm^~!hduS zA6}}HER?L6Gj1{pQf}n7ZG4nGsnN4j{3Pc96koBHyxhqAVz~=d{Nm-BiPz)dNoEC8 zuy`OIF4Y>4xa2S=snZm&y7_(G{TrQ9i`EU+RRp{@pT0x)4=!F3{~!lw@-Z~r^y}>n zUvfhuvJ1#Yeu9=NS5d+zb1M55OuuCn7V*&Neoi#L64&pVRDlu7ZX1klbOd-hI}qe2 z313G^KC-;z`*mf!GgAP#`;l5%Vq@$wRqPQeligy*!PT9Ct<-`xeaS#t!vXEwbwwHGsLyTbBWk7p{I7swm$ zp>rAa;qFMm2MhocNbzH*A%NQxx*xFoYNIITC2he$$g%MRl~A*=Hp(GYWhw;KweASv zZ<-MPWhG=m*P^ytD(}Y`kZ>GWhqB|~D*PQKa@oU??e%biKCxr! z%C6!RvjaXf+4`8#+X|K|7N4&MY26nR_GjByN}>wgOvh<=RS43uN?H_2*$HK}wVr@= z;#BqWUhO1e4Za_Xa^s`!vJG9jM;g)rL!8nqW0r|tc0U849u}-VasOO` z+Ef9c7FjPHQ$k*3Qv@>Y^vn&x>8-m{%r_QQ{)!tAOdModsOF{>)TkU@xWnMyQC`Z zvp!$lhBB5Y6v&P>UXt&aGyFfwe0~pRO_%}1ime@T`5`YoP z9(7KoT!++#ybOf$J2`S+YzxuPu%f^~G36NqpKDl`8XT0I_$=m!MLuhR6-myH zz02Y`_o9-|Rs!lc)t!7E!{C2;Y~b3$Qt4kN{&fb^i^SL)LbTtsEdD*pTj;4A!kPMr}f5)D#|8& z7@ckSI$0mCyg#tf{ZW{w{(@Q5bfeEDdcot#nSM*nRJ2kMAs3)&R(eUDqn)_=kEMDF zA`#oJwk$kH@Gq&13^k7D%O+M~5cpeZb2LnvM43xQ*OcQ6PiXhL4egSc?k_XQ!KcJ!ShM`wxRV zN69kCIxouFtQy=A`AAm&ZN_V&s9|uV!3?Q9i&<%cWHyB6l`6ioQ?Cq2*=q;s_$z7> zY<9m{+jjy_xiJ@91n?f13oc@{#mEtMm2(Cd?p9$=`5hPA3TUn#vi%Z(oxc1o+y!T> zga=`xHuPZ3ucw5TN_SzR{tcNgTOg-FmFIEpDf2K%Vy64W_c=fZ0i23g*tR?`d@O9{ z;Put;v&(`j*Xx0Fp<}BI<76pw5V@W zOve-V636N3C50t1&m5x^4QD5Hb>dB};QaSZAHE|f=ZwmgQ`X6Ucxiu%5C*KpKB)4< z?;5b8L&Uyh+Q@Ysgbfo#LlC%B&re*pJL zw)vueHJ>kCKQcPBR_!cvj?B<7A1ipTTr%sSA2EM$5(`xgv|7J2#+@VsFnQ~5>Ik5z zm1eMpXd%^0d4}MDb-=5!%+)85iZtT9KkPyo-JMdSxC&%pmOD{gZnHi(L_dtv^Fgj$3sNNB~(DAckCafW7Y zt;>d3c^Bt<&%c;39JbI9^GP@Z~=&iE(nRr84@?^%nBkLkgu($zmL zOoT8{b^LjS_35$_u@;ZTn? z#^i4^tFBKZs&|JS(~T@*?J$MU21ok_29^05X|KAzqV%&%KKLM~#is8|zxt6jhiI~| z^JC^DPdWPMt~RxnF)M-8$yHG^Nfu9nupLg}g_bEA6;L7_?y*HjrFBiv7W8L@(nBGO z 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 literal 0 HcmV?d00001 diff --git "a/Samples/IoTZero/Entity/\344\272\247\345\223\201.Biz.cs" "b/Samples/IoTZero/Entity/\344\272\247\345\223\201.Biz.cs" new file mode 100644 index 0000000..c4a792a --- /dev/null +++ "b/Samples/IoTZero/Entity/\344\272\247\345\223\201.Biz.cs" @@ -0,0 +1,138 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using NewLife; +using NewLife.Common; +using NewLife.Data; +using NewLife.Log; +using NewLife.Net; +using XCode; +using XCode.Membership; + +namespace IoT.Data; + +public partial class Product : Entity +{ + #region 对象操作 + static Product() + { + // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx + //var df = Meta.Factory.AdditionalFields; + //df.Add(nameof(DeviceCount)); + + // 过滤器 UserModule、TimeModule、IPModule + Meta.Modules.Add(); + Meta.Modules.Add(); + Meta.Modules.Add(); + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 自动编码 + if (Code.IsNullOrEmpty()) Code = PinYin.GetFirst(Name); + CheckExist(nameof(Code)); + } + + /// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + [EditorBrowsable(EditorBrowsableState.Never)] + protected override void InitData() + { + // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + if (Meta.Session.Count > 0) return; + + if (XTrace.Debug) XTrace.WriteLine("开始初始化Product[产品]数据……"); + + var entity = new Product + { + Name = "边缘网关", + Code = "EdgeGateway", + Enable = true, + }; + entity.Insert(); + + if (XTrace.Debug) XTrace.WriteLine("完成初始化Product[产品]数据!"); + } + #endregion + + #region 扩展属性 + #endregion + + #region 扩展查询 + /// 根据编号查找 + /// 编号 + /// 实体对象 + public static Product FindById(Int32 id) + { + if (id <= 0) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + + /// 根据编码查找 + /// 编码 + /// 实体对象 + public static Product FindByCode(String code) + { + if (code.IsNullOrEmpty()) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Code.EqualIgnoreCase(code)); + + return Find(_.Code == code); + } + #endregion + + #region 高级查询 + /// 高级查询 + /// 编码。ProductKey + /// 更新时间开始 + /// 更新时间结束 + /// 关键字 + /// 分页参数信息。可携带统计和数据权限扩展查询等信息 + /// 实体列表 + public static IList Search(String code, DateTime start, DateTime end, String key, PageParameter page) + { + var exp = new WhereExpression(); + + if (!code.IsNullOrEmpty()) exp &= _.Code == code; + exp &= _.UpdateTime.Between(start, end); + if (!key.IsNullOrEmpty()) exp &= _.Name.Contains(key) | _.Code.Contains(key) | _.CreateUser.Contains(key) | _.CreateIP.Contains(key) | _.UpdateUser.Contains(key) | _.UpdateIP.Contains(key) | _.Remark.Contains(key); + + return FindAll(exp, page); + } + + // Select Count(Id) as Id,Category From Product Where CreateTime>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20 + //static readonly FieldCache _CategoryCache = new FieldCache(nameof(Category)) + //{ + //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty + //}; + + ///// 获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + ///// + //public static IDictionary GetCategoryList() => _CategoryCache.FindAllName(); + #endregion + + #region 业务操作 + /// 更新设备所属产品下辖设备数量 + public void Fix() + { + DeviceCount = Device.FindAllByProductId(Id).Count; + + Update(); + } + #endregion +} diff --git "a/Samples/IoTZero/Entity/\344\272\247\345\223\201.cs" "b/Samples/IoTZero/Entity/\344\272\247\345\223\201.cs" new file mode 100644 index 0000000..4967f94 --- /dev/null +++ "b/Samples/IoTZero/Entity/\344\272\247\345\223\201.cs" @@ -0,0 +1,293 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace IoT.Data; + +/// 产品。设备的集合,通常指一组具有相同功能的设备。物联网平台为每个产品颁发全局唯一的ProductKey。 +[Serializable] +[DataObject] +[Description("产品。设备的集合,通常指一组具有相同功能的设备。物联网平台为每个产品颁发全局唯一的ProductKey。")] +[BindIndex("IU_Product_Code", true, "Code")] +[BindTable("Product", Description = "产品。设备的集合,通常指一组具有相同功能的设备。物联网平台为每个产品颁发全局唯一的ProductKey。", ConnName = "IoT", DbType = DatabaseType.None)] +public partial class Product +{ + #region 属性 + private Int32 _Id; + /// 编号 + [DisplayName("编号")] + [Description("编号")] + [DataObjectField(true, true, false, 0)] + [BindColumn("Id", "编号", "")] + public Int32 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private String _Name; + /// 名称 + [DisplayName("名称")] + [Description("名称")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Name", "名称", "", Master = true)] + public String Name { get => _Name; set { if (OnPropertyChanging("Name", value)) { _Name = value; OnPropertyChanged("Name"); } } } + + private String _Code; + /// 编码。ProductKey + [DisplayName("编码")] + [Description("编码。ProductKey")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Code", "编码。ProductKey", "")] + public String Code { get => _Code; set { if (OnPropertyChanging("Code", value)) { _Code = value; OnPropertyChanged("Code"); } } } + + private Boolean _Enable; + /// 启用。开发中/已发布 + [DisplayName("启用")] + [Description("启用。开发中/已发布")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Enable", "启用。开发中/已发布", "")] + public Boolean Enable { get => _Enable; set { if (OnPropertyChanging("Enable", value)) { _Enable = value; OnPropertyChanged("Enable"); } } } + + private Int32 _DeviceCount; + /// 设备数量 + [DisplayName("设备数量")] + [Description("设备数量")] + [DataObjectField(false, false, false, 0)] + [BindColumn("DeviceCount", "设备数量", "")] + public Int32 DeviceCount { get => _DeviceCount; set { if (OnPropertyChanging("DeviceCount", value)) { _DeviceCount = value; OnPropertyChanged("DeviceCount"); } } } + + private String _CreateUser; + /// 创建人 + [Category("扩展")] + [DisplayName("创建人")] + [Description("创建人")] + [DataObjectField(false, false, true, 50)] + [BindColumn("CreateUser", "创建人", "")] + public String CreateUser { get => _CreateUser; set { if (OnPropertyChanging("CreateUser", value)) { _CreateUser = value; OnPropertyChanged("CreateUser"); } } } + + private Int32 _CreateUserId; + /// 创建者 + [Category("扩展")] + [DisplayName("创建者")] + [Description("创建者")] + [DataObjectField(false, false, false, 0)] + [BindColumn("CreateUserId", "创建者", "")] + public Int32 CreateUserId { get => _CreateUserId; set { if (OnPropertyChanging("CreateUserId", value)) { _CreateUserId = value; OnPropertyChanged("CreateUserId"); } } } + + private DateTime _CreateTime; + /// 创建时间 + [Category("扩展")] + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreateTime", "创建时间", "")] + public DateTime CreateTime { get => _CreateTime; set { if (OnPropertyChanging("CreateTime", value)) { _CreateTime = value; OnPropertyChanged("CreateTime"); } } } + + private String _CreateIP; + /// 创建地址 + [Category("扩展")] + [DisplayName("创建地址")] + [Description("创建地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("CreateIP", "创建地址", "")] + public String CreateIP { get => _CreateIP; set { if (OnPropertyChanging("CreateIP", value)) { _CreateIP = value; OnPropertyChanged("CreateIP"); } } } + + private String _UpdateUser; + /// 更新人 + [Category("扩展")] + [DisplayName("更新人")] + [Description("更新人")] + [DataObjectField(false, false, true, 50)] + [BindColumn("UpdateUser", "更新人", "")] + public String UpdateUser { get => _UpdateUser; set { if (OnPropertyChanging("UpdateUser", value)) { _UpdateUser = value; OnPropertyChanged("UpdateUser"); } } } + + private Int32 _UpdateUserId; + /// 更新者 + [Category("扩展")] + [DisplayName("更新者")] + [Description("更新者")] + [DataObjectField(false, false, false, 0)] + [BindColumn("UpdateUserId", "更新者", "")] + public Int32 UpdateUserId { get => _UpdateUserId; set { if (OnPropertyChanging("UpdateUserId", value)) { _UpdateUserId = value; OnPropertyChanged("UpdateUserId"); } } } + + private DateTime _UpdateTime; + /// 更新时间 + [Category("扩展")] + [DisplayName("更新时间")] + [Description("更新时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("UpdateTime", "更新时间", "")] + public DateTime UpdateTime { get => _UpdateTime; set { if (OnPropertyChanging("UpdateTime", value)) { _UpdateTime = value; OnPropertyChanged("UpdateTime"); } } } + + private String _UpdateIP; + /// 更新地址 + [Category("扩展")] + [DisplayName("更新地址")] + [Description("更新地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("UpdateIP", "更新地址", "")] + public String UpdateIP { get => _UpdateIP; set { if (OnPropertyChanging("UpdateIP", value)) { _UpdateIP = value; OnPropertyChanged("UpdateIP"); } } } + + private String _Remark; + /// 描述 + [Category("扩展")] + [DisplayName("描述")] + [Description("描述")] + [DataObjectField(false, false, true, 500)] + [BindColumn("Remark", "描述", "")] + public String Remark { get => _Remark; set { if (OnPropertyChanging("Remark", value)) { _Remark = value; OnPropertyChanged("Remark"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get => name switch + { + "Id" => _Id, + "Name" => _Name, + "Code" => _Code, + "Enable" => _Enable, + "DeviceCount" => _DeviceCount, + "CreateUser" => _CreateUser, + "CreateUserId" => _CreateUserId, + "CreateTime" => _CreateTime, + "CreateIP" => _CreateIP, + "UpdateUser" => _UpdateUser, + "UpdateUserId" => _UpdateUserId, + "UpdateTime" => _UpdateTime, + "UpdateIP" => _UpdateIP, + "Remark" => _Remark, + _ => base[name] + }; + set + { + switch (name) + { + case "Id": _Id = value.ToInt(); break; + case "Name": _Name = Convert.ToString(value); break; + case "Code": _Code = Convert.ToString(value); break; + case "Enable": _Enable = value.ToBoolean(); break; + case "DeviceCount": _DeviceCount = value.ToInt(); break; + case "CreateUser": _CreateUser = Convert.ToString(value); break; + case "CreateUserId": _CreateUserId = value.ToInt(); break; + case "CreateTime": _CreateTime = value.ToDateTime(); break; + case "CreateIP": _CreateIP = Convert.ToString(value); break; + case "UpdateUser": _UpdateUser = Convert.ToString(value); break; + case "UpdateUserId": _UpdateUserId = value.ToInt(); break; + case "UpdateTime": _UpdateTime = value.ToDateTime(); break; + case "UpdateIP": _UpdateIP = Convert.ToString(value); break; + case "Remark": _Remark = Convert.ToString(value); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 关联映射 + #endregion + + #region 字段名 + /// 取得产品字段信息的快捷方式 + public partial class _ + { + /// 编号 + public static readonly Field Id = FindByName("Id"); + + /// 名称 + public static readonly Field Name = FindByName("Name"); + + /// 编码。ProductKey + public static readonly Field Code = FindByName("Code"); + + /// 启用。开发中/已发布 + public static readonly Field Enable = FindByName("Enable"); + + /// 设备数量 + public static readonly Field DeviceCount = FindByName("DeviceCount"); + + /// 创建人 + public static readonly Field CreateUser = FindByName("CreateUser"); + + /// 创建者 + public static readonly Field CreateUserId = FindByName("CreateUserId"); + + /// 创建时间 + public static readonly Field CreateTime = FindByName("CreateTime"); + + /// 创建地址 + public static readonly Field CreateIP = FindByName("CreateIP"); + + /// 更新人 + public static readonly Field UpdateUser = FindByName("UpdateUser"); + + /// 更新者 + public static readonly Field UpdateUserId = FindByName("UpdateUserId"); + + /// 更新时间 + public static readonly Field UpdateTime = FindByName("UpdateTime"); + + /// 更新地址 + public static readonly Field UpdateIP = FindByName("UpdateIP"); + + /// 描述 + public static readonly Field Remark = FindByName("Remark"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得产品字段名称的快捷方式 + public partial class __ + { + /// 编号 + public const String Id = "Id"; + + /// 名称 + public const String Name = "Name"; + + /// 编码。ProductKey + public const String Code = "Code"; + + /// 启用。开发中/已发布 + public const String Enable = "Enable"; + + /// 设备数量 + public const String DeviceCount = "DeviceCount"; + + /// 创建人 + public const String CreateUser = "CreateUser"; + + /// 创建者 + public const String CreateUserId = "CreateUserId"; + + /// 创建时间 + public const String CreateTime = "CreateTime"; + + /// 创建地址 + public const String CreateIP = "CreateIP"; + + /// 更新人 + public const String UpdateUser = "UpdateUser"; + + /// 更新者 + public const String UpdateUserId = "UpdateUserId"; + + /// 更新时间 + public const String UpdateTime = "UpdateTime"; + + /// 更新地址 + public const String UpdateIP = "UpdateIP"; + + /// 描述 + public const String Remark = "Remark"; + } + #endregion +} diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207.Biz.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207.Biz.cs" new file mode 100644 index 0000000..add4f96 --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207.Biz.cs" @@ -0,0 +1,279 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Common; +using NewLife.Data; +using NewLife.IoT.Models; +using NewLife.Log; +using NewLife.Remoting; +using XCode; +using XCode.Cache; +using XCode.Membership; + +namespace IoT.Data; + +public partial class Device : Entity +{ + #region 对象操作 + static Device() + { + // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx + var df = Meta.Factory.AdditionalFields; + df.Add(nameof(Logins)); + df.Add(nameof(OnlineTime)); + + // 过滤器 UserModule、TimeModule、IPModule + Meta.Modules.Add(); + Meta.Modules.Add(); + Meta.Modules.Add(); + + var sc = Meta.SingleCache; + sc.Expire = 20 * 60; + sc.MaxEntity = 200_000; + sc.FindSlaveKeyMethod = k => Find(_.Code == k); + sc.GetSlaveKeyMethod = e => e.Code; + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + if (ProductId <= 0) throw new ApiException(500, "产品Id错误"); + + var product = Product.FindById(ProductId); + if (product == null) throw new ApiException(500, "产品Id错误"); + + var len = _.IP.Length; + if (len > 0 && !IP.IsNullOrEmpty() && IP.Length > len) IP = IP[..len]; + + len = _.Uuid.Length; + if (len > 0 && !Uuid.IsNullOrEmpty() && Uuid.Length > len) Uuid = Uuid[..len]; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 自动编码 + if (Code.IsNullOrEmpty()) Code = PinYin.GetFirst(Name); + CheckExist(nameof(Code)); + + if (Period <= 0) Period = 60; + if (PollingTime == 0) PollingTime = 1000; + } + + /// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + [EditorBrowsable(EditorBrowsableState.Never)] + protected override void InitData() + { + // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + if (Meta.Session.Count > 0) return; + + if (XTrace.Debug) XTrace.WriteLine("开始初始化Device[设备]数据……"); + + var entity = new Device + { + Name = "测试设备", + Code = "abc", + Secret = "abc", + ProductId = 1, + GroupId = 1, + Enable = true, + }; + entity.Insert(); + + if (XTrace.Debug) XTrace.WriteLine("完成初始化Device[设备]数据!"); + } + #endregion + + #region 扩展属性 + /// 产品 + [XmlIgnore, IgnoreDataMember, ScriptIgnore] + public Product Product => Extends.Get(nameof(Product), k => Product.FindById(ProductId)); + + /// 产品 + [Map(nameof(ProductId), typeof(Product), "Id")] + public String ProductName => Product?.Name; + + /// 设备属性。借助扩展属性缓存 + [XmlIgnore, IgnoreDataMember] + public IList Properties => Extends.Get(nameof(Properties), k => DeviceProperty.FindAllByDeviceId(Id)); + #endregion + + #region 扩展查询 + /// 根据编号查找 + /// 编号 + /// 实体对象 + public static Device FindById(Int32 id) + { + if (id <= 0) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + + /// 根据编码查找 + /// 编码 + /// 实体对象 + public static Device FindByCode(String code) + { + if (code.IsNullOrEmpty()) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Code.EqualIgnoreCase(code)); + + //return Find(_.Code == code); + return Meta.SingleCache.GetItemWithSlaveKey(code) as Device; + } + + /// 根据产品查找 + /// 产品 + /// 实体列表 + public static IList FindAllByProductId(Int32 productId) + { + if (productId <= 0) return new List(); + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.ProductId == productId); + + return FindAll(_.ProductId == productId); + } + + /// 根据唯一标识查找 + /// 唯一标识 + /// 实体列表 + public static IList FindAllByUuid(String uuid) + { + if (uuid.IsNullOrEmpty()) return new List(); + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.Uuid.EqualIgnoreCase(uuid)); + + return FindAll(_.Uuid == uuid); + } + #endregion + + #region 高级查询 + /// 高级查询 + /// 产品 + /// + /// + /// 更新时间开始 + /// 更新时间结束 + /// 关键字 + /// 分页参数信息。可携带统计和数据权限扩展查询等信息 + /// 实体列表 + public static IList Search(Int32 productId, Int32 groupId, Boolean? enable, DateTime start, DateTime end, String key, PageParameter page) + { + var exp = new WhereExpression(); + + if (productId >= 0) exp &= _.ProductId == productId; + if (groupId >= 0) exp &= _.GroupId == groupId; + if (enable != null) exp &= _.Enable == enable; + exp &= _.UpdateTime.Between(start, end); + if (!key.IsNullOrEmpty()) exp &= _.Name.Contains(key) | _.Code.Contains(key) | _.Uuid.Contains(key) | _.Location.Contains(key) | _.CreateIP.Contains(key) | _.UpdateIP.Contains(key) | _.Remark.Contains(key); + + return FindAll(exp, page); + } + + // Select Count(Id) as Id,Uuid From Device Where CreateTime>'2020-01-24 00:00:00' Group By Uuid Order By Id Desc limit 20 + static readonly FieldCache _UuidCache = new FieldCache(nameof(Uuid)) + { + //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty + }; + + /// 获取唯一标识列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + /// + public static IDictionary GetUuidList() => _UuidCache.FindAllName(); + + /// + /// 根据设备分组来分组 + /// + /// + public static IList SearchGroupByGroup() + { + var selects = _.Id.Count(); + selects &= _.Enable.SumCase(1, "Activations"); + selects &= _.Online.SumCase(1, "Onlines"); + selects &= _.GroupId; + + return FindAll(_.GroupId.GroupBy(), null, selects, 0, 0); + } + #endregion + + #region 业务操作 + + /// 登录并保存信息 + /// + /// + public void Login(LoginInfo di, String ip) + { + var dv = this; + + if (di != null) dv.Fill(di); + + // 如果节点本地IP为空,而来源IP是局域网,则直接取用 + if (dv.IP.IsNullOrEmpty()) dv.IP = ip; + + dv.Online = true; + dv.Logins++; + dv.LastLogin = DateTime.Now; + dv.LastLoginIP = ip; + + if (dv.CreateIP.IsNullOrEmpty()) dv.CreateIP = ip; + dv.UpdateIP = ip; + + dv.Save(); + } + + /// 设备上线 + /// + /// + public void SetOnline(String ip, String reason) + { + var dv = this; + + if (!dv.Online && dv.Enable) + { + dv.Online = true; + dv.Update(); + + if (!reason.IsNullOrEmpty()) + DeviceHistory.Create(dv, "上线", true, $"设备上线。{reason}", null, ip, null); + } + } + + /// + /// 注销 + /// + public void Logout() + { + Online = false; + + Update(); + } + + /// 填充 + /// + public void Fill(LoginInfo di) + { + var dv = this; + + if (dv.Name.IsNullOrEmpty()) dv.Name = di.Name; + if (!di.Version.IsNullOrEmpty()) dv.Version = di.Version; + + if (!di.IP.IsNullOrEmpty()) dv.IP = di.IP; + if (!di.UUID.IsNullOrEmpty()) dv.Uuid = di.UUID; + } + #endregion +} diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207.cs" new file mode 100644 index 0000000..4c4d8c3 --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207.cs" @@ -0,0 +1,502 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace IoT.Data; + +/// 设备。归属于某个产品下的具体设备。物联网平台为设备颁发产品内唯一的证书DeviceName。设备可以直接连接物联网平台,也可以作为子设备通过网关连接物联网平台。 +[Serializable] +[DataObject] +[Description("设备。归属于某个产品下的具体设备。物联网平台为设备颁发产品内唯一的证书DeviceName。设备可以直接连接物联网平台,也可以作为子设备通过网关连接物联网平台。")] +[BindIndex("IU_Device_Code", true, "Code")] +[BindIndex("IX_Device_ProductId", false, "ProductId")] +[BindIndex("IX_Device_Uuid", false, "Uuid")] +[BindIndex("IX_Device_UpdateTime", false, "UpdateTime")] +[BindTable("Device", Description = "设备。归属于某个产品下的具体设备。物联网平台为设备颁发产品内唯一的证书DeviceName。设备可以直接连接物联网平台,也可以作为子设备通过网关连接物联网平台。", ConnName = "IoT", DbType = DatabaseType.None)] +public partial class Device +{ + #region 属性 + private Int32 _Id; + /// 编号 + [DisplayName("编号")] + [Description("编号")] + [DataObjectField(true, true, false, 0)] + [BindColumn("Id", "编号", "")] + public Int32 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private String _Name; + /// 名称 + [DisplayName("名称")] + [Description("名称")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Name", "名称", "", Master = true)] + public String Name { get => _Name; set { if (OnPropertyChanging("Name", value)) { _Name = value; OnPropertyChanged("Name"); } } } + + private String _Code; + /// 编码。设备唯一证书DeviceName,用于设备认证,在注册时由系统生成 + [DisplayName("编码")] + [Description("编码。设备唯一证书DeviceName,用于设备认证,在注册时由系统生成")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Code", "编码。设备唯一证书DeviceName,用于设备认证,在注册时由系统生成", "")] + public String Code { get => _Code; set { if (OnPropertyChanging("Code", value)) { _Code = value; OnPropertyChanged("Code"); } } } + + private String _Secret; + /// 密钥。设备密钥DeviceSecret,用于设备认证,注册时由系统生成 + [DisplayName("密钥")] + [Description("密钥。设备密钥DeviceSecret,用于设备认证,注册时由系统生成")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Secret", "密钥。设备密钥DeviceSecret,用于设备认证,注册时由系统生成", "")] + public String Secret { get => _Secret; set { if (OnPropertyChanging("Secret", value)) { _Secret = value; OnPropertyChanged("Secret"); } } } + + private Int32 _ProductId; + /// 产品 + [DisplayName("产品")] + [Description("产品")] + [DataObjectField(false, false, false, 0)] + [BindColumn("ProductId", "产品", "")] + public Int32 ProductId { get => _ProductId; set { if (OnPropertyChanging("ProductId", value)) { _ProductId = value; OnPropertyChanged("ProductId"); } } } + + private Int32 _GroupId; + /// 分组 + [DisplayName("分组")] + [Description("分组")] + [DataObjectField(false, false, false, 0)] + [BindColumn("GroupId", "分组", "")] + public Int32 GroupId { get => _GroupId; set { if (OnPropertyChanging("GroupId", value)) { _GroupId = value; OnPropertyChanged("GroupId"); } } } + + private Boolean _Enable; + /// 启用 + [DisplayName("启用")] + [Description("启用")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Enable", "启用", "")] + public Boolean Enable { get => _Enable; set { if (OnPropertyChanging("Enable", value)) { _Enable = value; OnPropertyChanged("Enable"); } } } + + private Boolean _Online; + /// 在线 + [DisplayName("在线")] + [Description("在线")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Online", "在线", "")] + public Boolean Online { get => _Online; set { if (OnPropertyChanging("Online", value)) { _Online = value; OnPropertyChanged("Online"); } } } + + private String _Version; + /// 版本 + [DisplayName("版本")] + [Description("版本")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Version", "版本", "")] + public String Version { get => _Version; set { if (OnPropertyChanging("Version", value)) { _Version = value; OnPropertyChanged("Version"); } } } + + private String _IP; + /// 本地IP + [DisplayName("本地IP")] + [Description("本地IP")] + [DataObjectField(false, false, true, 200)] + [BindColumn("IP", "本地IP", "")] + public String IP { get => _IP; set { if (OnPropertyChanging("IP", value)) { _IP = value; OnPropertyChanged("IP"); } } } + + private String _Uuid; + /// 唯一标识。硬件标识,或其它能够唯一区分设备的标记 + [DisplayName("唯一标识")] + [Description("唯一标识。硬件标识,或其它能够唯一区分设备的标记")] + [DataObjectField(false, false, true, 200)] + [BindColumn("Uuid", "唯一标识。硬件标识,或其它能够唯一区分设备的标记", "")] + public String Uuid { get => _Uuid; set { if (OnPropertyChanging("Uuid", value)) { _Uuid = value; OnPropertyChanged("Uuid"); } } } + + private String _Location; + /// 位置。场地安装位置,或者经纬度 + [Category("登录信息")] + [DisplayName("位置")] + [Description("位置。场地安装位置,或者经纬度")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Location", "位置。场地安装位置,或者经纬度", "")] + public String Location { get => _Location; set { if (OnPropertyChanging("Location", value)) { _Location = value; OnPropertyChanged("Location"); } } } + + private Int32 _Period; + /// 心跳周期。默认60秒 + [Category("参数设置")] + [DisplayName("心跳周期")] + [Description("心跳周期。默认60秒")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Period", "心跳周期。默认60秒", "")] + public Int32 Period { get => _Period; set { if (OnPropertyChanging("Period", value)) { _Period = value; OnPropertyChanged("Period"); } } } + + private Int32 _PollingTime; + /// 采集间隔。默认1000ms + [Category("参数设置")] + [DisplayName("采集间隔")] + [Description("采集间隔。默认1000ms")] + [DataObjectField(false, false, false, 0)] + [BindColumn("PollingTime", "采集间隔。默认1000ms", "")] + public Int32 PollingTime { get => _PollingTime; set { if (OnPropertyChanging("PollingTime", value)) { _PollingTime = value; OnPropertyChanged("PollingTime"); } } } + + private Int32 _Logins; + /// 登录次数 + [Category("登录信息")] + [DisplayName("登录次数")] + [Description("登录次数")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Logins", "登录次数", "")] + public Int32 Logins { get => _Logins; set { if (OnPropertyChanging("Logins", value)) { _Logins = value; OnPropertyChanged("Logins"); } } } + + private DateTime _LastLogin; + /// 最后登录 + [Category("登录信息")] + [DisplayName("最后登录")] + [Description("最后登录")] + [DataObjectField(false, false, true, 0)] + [BindColumn("LastLogin", "最后登录", "")] + public DateTime LastLogin { get => _LastLogin; set { if (OnPropertyChanging("LastLogin", value)) { _LastLogin = value; OnPropertyChanged("LastLogin"); } } } + + private String _LastLoginIP; + /// 最后IP。最后的公网IP地址 + [Category("登录信息")] + [DisplayName("最后IP")] + [Description("最后IP。最后的公网IP地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("LastLoginIP", "最后IP。最后的公网IP地址", "")] + public String LastLoginIP { get => _LastLoginIP; set { if (OnPropertyChanging("LastLoginIP", value)) { _LastLoginIP = value; OnPropertyChanged("LastLoginIP"); } } } + + private Int32 _OnlineTime; + /// 在线时长。总时长,每次下线后累加,单位,秒 + [Category("登录信息")] + [DisplayName("在线时长")] + [Description("在线时长。总时长,每次下线后累加,单位,秒")] + [DataObjectField(false, false, false, 0)] + [BindColumn("OnlineTime", "在线时长。总时长,每次下线后累加,单位,秒", "")] + public Int32 OnlineTime { get => _OnlineTime; set { if (OnPropertyChanging("OnlineTime", value)) { _OnlineTime = value; OnPropertyChanged("OnlineTime"); } } } + + private DateTime _RegisterTime; + /// 激活时间 + [Category("登录信息")] + [DisplayName("激活时间")] + [Description("激活时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("RegisterTime", "激活时间", "")] + public DateTime RegisterTime { get => _RegisterTime; set { if (OnPropertyChanging("RegisterTime", value)) { _RegisterTime = value; OnPropertyChanged("RegisterTime"); } } } + + private Int32 _CreateUserId; + /// 创建者 + [Category("扩展")] + [DisplayName("创建者")] + [Description("创建者")] + [DataObjectField(false, false, false, 0)] + [BindColumn("CreateUserId", "创建者", "")] + public Int32 CreateUserId { get => _CreateUserId; set { if (OnPropertyChanging("CreateUserId", value)) { _CreateUserId = value; OnPropertyChanged("CreateUserId"); } } } + + private DateTime _CreateTime; + /// 创建时间 + [Category("扩展")] + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreateTime", "创建时间", "")] + public DateTime CreateTime { get => _CreateTime; set { if (OnPropertyChanging("CreateTime", value)) { _CreateTime = value; OnPropertyChanged("CreateTime"); } } } + + private String _CreateIP; + /// 创建地址 + [Category("扩展")] + [DisplayName("创建地址")] + [Description("创建地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("CreateIP", "创建地址", "")] + public String CreateIP { get => _CreateIP; set { if (OnPropertyChanging("CreateIP", value)) { _CreateIP = value; OnPropertyChanged("CreateIP"); } } } + + private Int32 _UpdateUserId; + /// 更新者 + [Category("扩展")] + [DisplayName("更新者")] + [Description("更新者")] + [DataObjectField(false, false, false, 0)] + [BindColumn("UpdateUserId", "更新者", "")] + public Int32 UpdateUserId { get => _UpdateUserId; set { if (OnPropertyChanging("UpdateUserId", value)) { _UpdateUserId = value; OnPropertyChanged("UpdateUserId"); } } } + + private DateTime _UpdateTime; + /// 更新时间 + [Category("扩展")] + [DisplayName("更新时间")] + [Description("更新时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("UpdateTime", "更新时间", "")] + public DateTime UpdateTime { get => _UpdateTime; set { if (OnPropertyChanging("UpdateTime", value)) { _UpdateTime = value; OnPropertyChanged("UpdateTime"); } } } + + private String _UpdateIP; + /// 更新地址 + [Category("扩展")] + [DisplayName("更新地址")] + [Description("更新地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("UpdateIP", "更新地址", "")] + public String UpdateIP { get => _UpdateIP; set { if (OnPropertyChanging("UpdateIP", value)) { _UpdateIP = value; OnPropertyChanged("UpdateIP"); } } } + + private String _Remark; + /// 描述 + [Category("扩展")] + [DisplayName("描述")] + [Description("描述")] + [DataObjectField(false, false, true, 500)] + [BindColumn("Remark", "描述", "")] + public String Remark { get => _Remark; set { if (OnPropertyChanging("Remark", value)) { _Remark = value; OnPropertyChanged("Remark"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get => name switch + { + "Id" => _Id, + "Name" => _Name, + "Code" => _Code, + "Secret" => _Secret, + "ProductId" => _ProductId, + "GroupId" => _GroupId, + "Enable" => _Enable, + "Online" => _Online, + "Version" => _Version, + "IP" => _IP, + "Uuid" => _Uuid, + "Location" => _Location, + "Period" => _Period, + "PollingTime" => _PollingTime, + "Logins" => _Logins, + "LastLogin" => _LastLogin, + "LastLoginIP" => _LastLoginIP, + "OnlineTime" => _OnlineTime, + "RegisterTime" => _RegisterTime, + "CreateUserId" => _CreateUserId, + "CreateTime" => _CreateTime, + "CreateIP" => _CreateIP, + "UpdateUserId" => _UpdateUserId, + "UpdateTime" => _UpdateTime, + "UpdateIP" => _UpdateIP, + "Remark" => _Remark, + _ => base[name] + }; + set + { + switch (name) + { + case "Id": _Id = value.ToInt(); break; + case "Name": _Name = Convert.ToString(value); break; + case "Code": _Code = Convert.ToString(value); break; + case "Secret": _Secret = Convert.ToString(value); break; + case "ProductId": _ProductId = value.ToInt(); break; + case "GroupId": _GroupId = value.ToInt(); break; + case "Enable": _Enable = value.ToBoolean(); break; + case "Online": _Online = value.ToBoolean(); break; + case "Version": _Version = Convert.ToString(value); break; + case "IP": _IP = Convert.ToString(value); break; + case "Uuid": _Uuid = Convert.ToString(value); break; + case "Location": _Location = Convert.ToString(value); break; + case "Period": _Period = value.ToInt(); break; + case "PollingTime": _PollingTime = value.ToInt(); break; + case "Logins": _Logins = value.ToInt(); break; + case "LastLogin": _LastLogin = value.ToDateTime(); break; + case "LastLoginIP": _LastLoginIP = Convert.ToString(value); break; + case "OnlineTime": _OnlineTime = value.ToInt(); break; + case "RegisterTime": _RegisterTime = value.ToDateTime(); break; + case "CreateUserId": _CreateUserId = value.ToInt(); break; + case "CreateTime": _CreateTime = value.ToDateTime(); break; + case "CreateIP": _CreateIP = Convert.ToString(value); break; + case "UpdateUserId": _UpdateUserId = value.ToInt(); break; + case "UpdateTime": _UpdateTime = value.ToDateTime(); break; + case "UpdateIP": _UpdateIP = Convert.ToString(value); break; + case "Remark": _Remark = Convert.ToString(value); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 关联映射 + /// 分组 + [XmlIgnore, IgnoreDataMember, ScriptIgnore] + public DeviceGroup Group => Extends.Get(nameof(Group), k => DeviceGroup.FindById(GroupId)); + + /// 分组 + [Map(nameof(GroupId), typeof(DeviceGroup), "Id")] + public String GroupPath => Group?.Name; + + #endregion + + #region 字段名 + /// 取得设备字段信息的快捷方式 + public partial class _ + { + /// 编号 + public static readonly Field Id = FindByName("Id"); + + /// 名称 + public static readonly Field Name = FindByName("Name"); + + /// 编码。设备唯一证书DeviceName,用于设备认证,在注册时由系统生成 + public static readonly Field Code = FindByName("Code"); + + /// 密钥。设备密钥DeviceSecret,用于设备认证,注册时由系统生成 + public static readonly Field Secret = FindByName("Secret"); + + /// 产品 + public static readonly Field ProductId = FindByName("ProductId"); + + /// 分组 + public static readonly Field GroupId = FindByName("GroupId"); + + /// 启用 + public static readonly Field Enable = FindByName("Enable"); + + /// 在线 + public static readonly Field Online = FindByName("Online"); + + /// 版本 + public static readonly Field Version = FindByName("Version"); + + /// 本地IP + public static readonly Field IP = FindByName("IP"); + + /// 唯一标识。硬件标识,或其它能够唯一区分设备的标记 + public static readonly Field Uuid = FindByName("Uuid"); + + /// 位置。场地安装位置,或者经纬度 + public static readonly Field Location = FindByName("Location"); + + /// 心跳周期。默认60秒 + public static readonly Field Period = FindByName("Period"); + + /// 采集间隔。默认1000ms + public static readonly Field PollingTime = FindByName("PollingTime"); + + /// 登录次数 + public static readonly Field Logins = FindByName("Logins"); + + /// 最后登录 + public static readonly Field LastLogin = FindByName("LastLogin"); + + /// 最后IP。最后的公网IP地址 + public static readonly Field LastLoginIP = FindByName("LastLoginIP"); + + /// 在线时长。总时长,每次下线后累加,单位,秒 + public static readonly Field OnlineTime = FindByName("OnlineTime"); + + /// 激活时间 + public static readonly Field RegisterTime = FindByName("RegisterTime"); + + /// 创建者 + public static readonly Field CreateUserId = FindByName("CreateUserId"); + + /// 创建时间 + public static readonly Field CreateTime = FindByName("CreateTime"); + + /// 创建地址 + public static readonly Field CreateIP = FindByName("CreateIP"); + + /// 更新者 + public static readonly Field UpdateUserId = FindByName("UpdateUserId"); + + /// 更新时间 + public static readonly Field UpdateTime = FindByName("UpdateTime"); + + /// 更新地址 + public static readonly Field UpdateIP = FindByName("UpdateIP"); + + /// 描述 + public static readonly Field Remark = FindByName("Remark"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得设备字段名称的快捷方式 + public partial class __ + { + /// 编号 + public const String Id = "Id"; + + /// 名称 + public const String Name = "Name"; + + /// 编码。设备唯一证书DeviceName,用于设备认证,在注册时由系统生成 + public const String Code = "Code"; + + /// 密钥。设备密钥DeviceSecret,用于设备认证,注册时由系统生成 + public const String Secret = "Secret"; + + /// 产品 + public const String ProductId = "ProductId"; + + /// 分组 + public const String GroupId = "GroupId"; + + /// 启用 + public const String Enable = "Enable"; + + /// 在线 + public const String Online = "Online"; + + /// 版本 + public const String Version = "Version"; + + /// 本地IP + public const String IP = "IP"; + + /// 唯一标识。硬件标识,或其它能够唯一区分设备的标记 + public const String Uuid = "Uuid"; + + /// 位置。场地安装位置,或者经纬度 + public const String Location = "Location"; + + /// 心跳周期。默认60秒 + public const String Period = "Period"; + + /// 采集间隔。默认1000ms + public const String PollingTime = "PollingTime"; + + /// 登录次数 + public const String Logins = "Logins"; + + /// 最后登录 + public const String LastLogin = "LastLogin"; + + /// 最后IP。最后的公网IP地址 + public const String LastLoginIP = "LastLoginIP"; + + /// 在线时长。总时长,每次下线后累加,单位,秒 + public const String OnlineTime = "OnlineTime"; + + /// 激活时间 + public const String RegisterTime = "RegisterTime"; + + /// 创建者 + public const String CreateUserId = "CreateUserId"; + + /// 创建时间 + public const String CreateTime = "CreateTime"; + + /// 创建地址 + public const String CreateIP = "CreateIP"; + + /// 更新者 + public const String UpdateUserId = "UpdateUserId"; + + /// 更新时间 + public const String UpdateTime = "UpdateTime"; + + /// 更新地址 + public const String UpdateIP = "UpdateIP"; + + /// 描述 + public const String Remark = "Remark"; + } + #endregion +} diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\210\206\347\273\204.Biz.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\210\206\347\273\204.Biz.cs" new file mode 100644 index 0000000..ef5fe95 --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\210\206\347\273\204.Biz.cs" @@ -0,0 +1,181 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using NewLife.Log; +using NewLife.Model; +using NewLife.Reflection; +using NewLife.Remoting; +using NewLife.Threading; +using NewLife.Web; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; +using XCode.Membership; +using XCode.Shards; + +namespace IoT.Data; + +public partial class DeviceGroup : Entity +{ + #region 对象操作 + static DeviceGroup() + { + // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx + //var df = Meta.Factory.AdditionalFields; + //df.Add(nameof(ParentId)); + + // 过滤器 UserModule、TimeModule、IPModule + Meta.Modules.Add(); + Meta.Modules.Add(); + Meta.Modules.Add(); + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + if (Name.IsNullOrEmpty()) throw new ApiException(500, "名称不能为空"); + } + + /// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + [EditorBrowsable(EditorBrowsableState.Never)] + protected override void InitData() + { + // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + if (Meta.Session.Count > 0) return; + + if (XTrace.Debug) XTrace.WriteLine("开始初始化DeviceGroup[设备分组]数据……"); + + var entity = new DeviceGroup + { + Name = "默认分组", + ParentId = 0, + Devices = 0, + Activations = 0, + Onlines = 0, + }; + entity.Insert(); + + if (XTrace.Debug) XTrace.WriteLine("完成初始化DeviceGroup[设备分组]数据!"); + } + #endregion + + #region 扩展属性 + #endregion + + #region 扩展查询 + /// 根据编号查找 + /// 编号 + /// 实体对象 + public static DeviceGroup FindById(Int32 id) + { + if (id <= 0) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + + /// 根据父级、名称查找 + /// 父级 + /// 名称 + /// 实体对象 + public static DeviceGroup FindByParentIdAndName(Int32 parentId, String name) + { + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.ParentId == parentId && e.Name.EqualIgnoreCase(name)); + + return Find(_.ParentId == parentId & _.Name == name); + } + + /// 根据名称查找 + /// 名称 + /// 实体列表 + public static IList FindAllByName(String name) + { + if (name.IsNullOrEmpty()) return new List(); + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.Name.EqualIgnoreCase(name)); + + return FindAll(_.Name == name); + } + #endregion + + #region 高级查询 + /// 高级查询 + /// 名称 + /// 父级 + /// 更新时间开始 + /// 更新时间结束 + /// 关键字 + /// 分页参数信息。可携带统计和数据权限扩展查询等信息 + /// 实体列表 + public static IList Search(String name, Int32 parentId, DateTime start, DateTime end, String key, PageParameter page) + { + var exp = new WhereExpression(); + + if (!name.IsNullOrEmpty()) exp &= _.Name == name; + if (parentId >= 0) exp &= _.ParentId == parentId; + exp &= _.UpdateTime.Between(start, end); + if (!key.IsNullOrEmpty()) exp &= _.Name.Contains(key) | _.CreateIP.Contains(key) | _.UpdateIP.Contains(key) | _.Remark.Contains(key); + + return FindAll(exp, page); + } + + // Select Count(Id) as Id,Category From DeviceGroup Where CreateTime>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20 + //static readonly FieldCache _CategoryCache = new FieldCache(nameof(Category)) + //{ + //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty + //}; + + ///// 获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + ///// + //public static IDictionary GetCategoryList() => _CategoryCache.FindAllName(); + #endregion + + #region 业务操作 + + public static Int32 Refresh() + { + var count = 0; + var groups = FindAll(); + var list = Device.SearchGroupByGroup(); + foreach (var item in list) + { + var gb = groups.FirstOrDefault(e => e.Id == item.GroupId); + if (gb != null) + { + gb.Devices = item.Id; + gb.Activations = item["Activations"].ToInt(); + gb.Onlines = item["Onlines"].ToInt(); + count += gb.Update(); + } + } + + return count; + } + #endregion +} diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\210\206\347\273\204.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\210\206\347\273\204.cs" new file mode 100644 index 0000000..cac90b5 --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\210\206\347\273\204.cs" @@ -0,0 +1,292 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace IoT.Data; + +/// 设备分组。物联网平台支持建立设备分组,分组中可包含不同产品下的设备。通过设备组来进行跨产品管理设备。 +[Serializable] +[DataObject] +[Description("设备分组。物联网平台支持建立设备分组,分组中可包含不同产品下的设备。通过设备组来进行跨产品管理设备。")] +[BindIndex("IU_DeviceGroup_ParentId_Name", true, "ParentId,Name")] +[BindIndex("IX_DeviceGroup_Name", false, "Name")] +[BindTable("DeviceGroup", Description = "设备分组。物联网平台支持建立设备分组,分组中可包含不同产品下的设备。通过设备组来进行跨产品管理设备。", ConnName = "IoT", DbType = DatabaseType.None)] +public partial class DeviceGroup +{ + #region 属性 + private Int32 _Id; + /// 编号 + [DisplayName("编号")] + [Description("编号")] + [DataObjectField(true, true, false, 0)] + [BindColumn("Id", "编号", "")] + public Int32 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private String _Name; + /// 名称 + [DisplayName("名称")] + [Description("名称")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Name", "名称", "", Master = true)] + public String Name { get => _Name; set { if (OnPropertyChanging("Name", value)) { _Name = value; OnPropertyChanged("Name"); } } } + + private Int32 _ParentId; + /// 父级 + [DisplayName("父级")] + [Description("父级")] + [DataObjectField(false, false, false, 0)] + [BindColumn("ParentId", "父级", "")] + public Int32 ParentId { get => _ParentId; set { if (OnPropertyChanging("ParentId", value)) { _ParentId = value; OnPropertyChanged("ParentId"); } } } + + private Int32 _Sort; + /// 排序 + [DisplayName("排序")] + [Description("排序")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Sort", "排序", "")] + public Int32 Sort { get => _Sort; set { if (OnPropertyChanging("Sort", value)) { _Sort = value; OnPropertyChanged("Sort"); } } } + + private Int32 _Devices; + /// 设备总数 + [DisplayName("设备总数")] + [Description("设备总数")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Devices", "设备总数", "")] + public Int32 Devices { get => _Devices; set { if (OnPropertyChanging("Devices", value)) { _Devices = value; OnPropertyChanged("Devices"); } } } + + private Int32 _Activations; + /// 激活设备 + [DisplayName("激活设备")] + [Description("激活设备")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Activations", "激活设备", "")] + public Int32 Activations { get => _Activations; set { if (OnPropertyChanging("Activations", value)) { _Activations = value; OnPropertyChanged("Activations"); } } } + + private Int32 _Onlines; + /// 当前在线 + [DisplayName("当前在线")] + [Description("当前在线")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Onlines", "当前在线", "")] + public Int32 Onlines { get => _Onlines; set { if (OnPropertyChanging("Onlines", value)) { _Onlines = value; OnPropertyChanged("Onlines"); } } } + + private Int32 _CreateUserId; + /// 创建者 + [Category("扩展")] + [DisplayName("创建者")] + [Description("创建者")] + [DataObjectField(false, false, false, 0)] + [BindColumn("CreateUserId", "创建者", "")] + public Int32 CreateUserId { get => _CreateUserId; set { if (OnPropertyChanging("CreateUserId", value)) { _CreateUserId = value; OnPropertyChanged("CreateUserId"); } } } + + private DateTime _CreateTime; + /// 创建时间 + [Category("扩展")] + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreateTime", "创建时间", "")] + public DateTime CreateTime { get => _CreateTime; set { if (OnPropertyChanging("CreateTime", value)) { _CreateTime = value; OnPropertyChanged("CreateTime"); } } } + + private String _CreateIP; + /// 创建地址 + [Category("扩展")] + [DisplayName("创建地址")] + [Description("创建地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("CreateIP", "创建地址", "")] + public String CreateIP { get => _CreateIP; set { if (OnPropertyChanging("CreateIP", value)) { _CreateIP = value; OnPropertyChanged("CreateIP"); } } } + + private Int32 _UpdateUserId; + /// 更新者 + [Category("扩展")] + [DisplayName("更新者")] + [Description("更新者")] + [DataObjectField(false, false, false, 0)] + [BindColumn("UpdateUserId", "更新者", "")] + public Int32 UpdateUserId { get => _UpdateUserId; set { if (OnPropertyChanging("UpdateUserId", value)) { _UpdateUserId = value; OnPropertyChanged("UpdateUserId"); } } } + + private DateTime _UpdateTime; + /// 更新时间 + [Category("扩展")] + [DisplayName("更新时间")] + [Description("更新时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("UpdateTime", "更新时间", "")] + public DateTime UpdateTime { get => _UpdateTime; set { if (OnPropertyChanging("UpdateTime", value)) { _UpdateTime = value; OnPropertyChanged("UpdateTime"); } } } + + private String _UpdateIP; + /// 更新地址 + [Category("扩展")] + [DisplayName("更新地址")] + [Description("更新地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("UpdateIP", "更新地址", "")] + public String UpdateIP { get => _UpdateIP; set { if (OnPropertyChanging("UpdateIP", value)) { _UpdateIP = value; OnPropertyChanged("UpdateIP"); } } } + + private String _Remark; + /// 描述 + [Category("扩展")] + [DisplayName("描述")] + [Description("描述")] + [DataObjectField(false, false, true, 500)] + [BindColumn("Remark", "描述", "")] + public String Remark { get => _Remark; set { if (OnPropertyChanging("Remark", value)) { _Remark = value; OnPropertyChanged("Remark"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get => name switch + { + "Id" => _Id, + "Name" => _Name, + "ParentId" => _ParentId, + "Sort" => _Sort, + "Devices" => _Devices, + "Activations" => _Activations, + "Onlines" => _Onlines, + "CreateUserId" => _CreateUserId, + "CreateTime" => _CreateTime, + "CreateIP" => _CreateIP, + "UpdateUserId" => _UpdateUserId, + "UpdateTime" => _UpdateTime, + "UpdateIP" => _UpdateIP, + "Remark" => _Remark, + _ => base[name] + }; + set + { + switch (name) + { + case "Id": _Id = value.ToInt(); break; + case "Name": _Name = Convert.ToString(value); break; + case "ParentId": _ParentId = value.ToInt(); break; + case "Sort": _Sort = value.ToInt(); break; + case "Devices": _Devices = value.ToInt(); break; + case "Activations": _Activations = value.ToInt(); break; + case "Onlines": _Onlines = value.ToInt(); break; + case "CreateUserId": _CreateUserId = value.ToInt(); break; + case "CreateTime": _CreateTime = value.ToDateTime(); break; + case "CreateIP": _CreateIP = Convert.ToString(value); break; + case "UpdateUserId": _UpdateUserId = value.ToInt(); break; + case "UpdateTime": _UpdateTime = value.ToDateTime(); break; + case "UpdateIP": _UpdateIP = Convert.ToString(value); break; + case "Remark": _Remark = Convert.ToString(value); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 关联映射 + #endregion + + #region 字段名 + /// 取得设备分组字段信息的快捷方式 + public partial class _ + { + /// 编号 + public static readonly Field Id = FindByName("Id"); + + /// 名称 + public static readonly Field Name = FindByName("Name"); + + /// 父级 + public static readonly Field ParentId = FindByName("ParentId"); + + /// 排序 + public static readonly Field Sort = FindByName("Sort"); + + /// 设备总数 + public static readonly Field Devices = FindByName("Devices"); + + /// 激活设备 + public static readonly Field Activations = FindByName("Activations"); + + /// 当前在线 + public static readonly Field Onlines = FindByName("Onlines"); + + /// 创建者 + public static readonly Field CreateUserId = FindByName("CreateUserId"); + + /// 创建时间 + public static readonly Field CreateTime = FindByName("CreateTime"); + + /// 创建地址 + public static readonly Field CreateIP = FindByName("CreateIP"); + + /// 更新者 + public static readonly Field UpdateUserId = FindByName("UpdateUserId"); + + /// 更新时间 + public static readonly Field UpdateTime = FindByName("UpdateTime"); + + /// 更新地址 + public static readonly Field UpdateIP = FindByName("UpdateIP"); + + /// 描述 + public static readonly Field Remark = FindByName("Remark"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得设备分组字段名称的快捷方式 + public partial class __ + { + /// 编号 + public const String Id = "Id"; + + /// 名称 + public const String Name = "Name"; + + /// 父级 + public const String ParentId = "ParentId"; + + /// 排序 + public const String Sort = "Sort"; + + /// 设备总数 + public const String Devices = "Devices"; + + /// 激活设备 + public const String Activations = "Activations"; + + /// 当前在线 + public const String Onlines = "Onlines"; + + /// 创建者 + public const String CreateUserId = "CreateUserId"; + + /// 创建时间 + public const String CreateTime = "CreateTime"; + + /// 创建地址 + public const String CreateIP = "CreateIP"; + + /// 更新者 + public const String UpdateUserId = "UpdateUserId"; + + /// 更新时间 + public const String UpdateTime = "UpdateTime"; + + /// 更新地址 + public const String UpdateIP = "UpdateIP"; + + /// 描述 + public const String Remark = "Remark"; + } + #endregion +} diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\216\206\345\217\262.Biz.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\216\206\345\217\262.Biz.cs" new file mode 100644 index 0000000..9ce53ae --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\216\206\345\217\262.Biz.cs" @@ -0,0 +1,249 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Caching; +using NewLife.Data; +using NewLife.Log; +using NewLife.Model; +using NewLife.Reflection; +using NewLife.Threading; +using NewLife.Web; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; +using XCode.Membership; +using XCode.Shards; + +namespace IoT.Data; + +public partial class DeviceHistory : Entity +{ + #region 对象操作 + static DeviceHistory() + { + // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx + //var df = Meta.Factory.AdditionalFields; + //df.Add(nameof(DeviceId)); + // 按天分表 + //Meta.ShardPolicy = new TimeShardPolicy(nameof(Id), Meta.Factory) + //{ + // TablePolicy = "{{0}}_{{1:yyyyMMdd}}", + // Step = TimeSpan.FromDays(1), + //}; + + // 过滤器 UserModule、TimeModule、IPModule + Meta.Modules.Add(); + Meta.Modules.Add(); + Meta.Modules.Add(); + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 在新插入数据或者修改了指定字段时进行修正 + //if (isNew && !Dirtys[nameof(CreateTime)]) CreateTime = DateTime.Now; + //if (isNew && !Dirtys[nameof(CreateIP)]) CreateIP = ManageProvider.UserHost; + } + + ///// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + //[EditorBrowsable(EditorBrowsableState.Never)] + //protected override void InitData() + //{ + // // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + // if (Meta.Session.Count > 0) return; + + // if (XTrace.Debug) XTrace.WriteLine("开始初始化DeviceHistory[设备历史]数据……"); + + // var entity = new DeviceHistory(); + // entity.Id = 0; + // entity.DeviceId = 0; + // entity.Name = "abc"; + // entity.Action = "abc"; + // entity.Success = true; + // entity.TraceId = "abc"; + // entity.Creator = "abc"; + // entity.CreateTime = DateTime.Now; + // entity.CreateIP = "abc"; + // entity.Remark = "abc"; + // entity.Insert(); + + // if (XTrace.Debug) XTrace.WriteLine("完成初始化DeviceHistory[设备历史]数据!"); + //} + + ///// 已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert + ///// + //public override Int32 Insert() + //{ + // return base.Insert(); + //} + + ///// 已重载。在事务保护范围内处理业务,位于Valid之后 + ///// + //protected override Int32 OnDelete() + //{ + // return base.OnDelete(); + //} + #endregion + + #region 扩展属性 + /// 设备 + [XmlIgnore, IgnoreDataMember, ScriptIgnore] + public Device Device => Extends.Get(nameof(Device), k => Device.FindById(DeviceId)); + + /// 设备 + [Map(nameof(DeviceId), typeof(Device), "Id")] + public String DeviceName => Device?.Name; + #endregion + + #region 扩展查询 + /// 根据编号查找 + /// 编号 + /// 实体对象 + public static DeviceHistory FindById(Int64 id) + { + if (id <= 0) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + + /// 根据设备、编号查找 + /// 设备 + /// 编号 + /// 实体列表 + public static IList FindAllByDeviceIdAndId(Int32 deviceId, Int64 id) + { + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.DeviceId == deviceId && e.Id == id); + + return FindAll(_.DeviceId == deviceId & _.Id == id); + } + + /// 根据设备查找 + /// 设备 + /// 实体列表 + public static IList FindAllByDeviceId(Int32 deviceId) + { + if (deviceId <= 0) return new List(); + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.DeviceId == deviceId); + + return FindAll(_.DeviceId == deviceId); + } + + /// 根据设备、操作查找 + /// 设备 + /// 操作 + /// 实体列表 + public static IList FindAllByDeviceIdAndAction(Int32 deviceId, String action) + { + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.DeviceId == deviceId && e.Action.EqualIgnoreCase(action)); + + return FindAll(_.DeviceId == deviceId & _.Action == action); + } + #endregion + + #region 高级查询 + /// 高级查询 + /// 设备 + /// 操作 + /// 创建时间开始 + /// 创建时间结束 + /// 关键字 + /// 分页参数信息。可携带统计和数据权限扩展查询等信息 + /// 实体列表 + public static IList Search(Int32 deviceId, String action, DateTime start, DateTime end, String key, PageParameter page) + { + var exp = new WhereExpression(); + + if (deviceId >= 0) exp &= _.DeviceId == deviceId; + if (!action.IsNullOrEmpty()) exp &= _.Action == action; + exp &= _.CreateTime.Between(start, end); + if (!key.IsNullOrEmpty()) exp &= _.Name.Contains(key) | _.Action.Contains(key) | _.TraceId.Contains(key) | _.Creator.Contains(key) | _.CreateIP.Contains(key) | _.Remark.Contains(key); + + return FindAll(exp, page); + } + + // Select Count(Id) as Id,Category From DeviceHistory Where CreateTime>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20 + //static readonly FieldCache _CategoryCache = new FieldCache(nameof(Category)) + //{ + //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty + //}; + + ///// 获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + ///// + //public static IDictionary GetCategoryList() => _CategoryCache.FindAllName(); + #endregion + + #region 业务操作 + /// 删除指定日期之前的数据 + /// + /// + public static Int32 DeleteBefore(DateTime date) => Delete(_.Id < Meta.Factory.Snow.GetId(date)); + + /// 创建日志 + /// + /// + /// + /// + /// + /// + /// + /// + public static DeviceHistory Create(Device device, String action, Boolean success, String remark, String creator, String ip, String traceId) + { + if (device == null) device = new Device(); + + if (creator.IsNullOrEmpty()) creator = Environment.MachineName; + if (traceId.IsNullOrEmpty()) traceId = DefaultSpan.Current?.TraceId; + var history = new DeviceHistory + { + DeviceId = device.Id, + Name = device.Name, + Action = action, + Success = success, + + Remark = remark, + + TraceId = traceId, + Creator = creator, + CreateTime = DateTime.Now, + CreateIP = ip, + }; + + history.SaveAsync(); + + return history; + } + + private static readonly Lazy> NameCache = new(() => new FieldCache(__.Action)); + /// 获取所有分类名称 + /// + public static IDictionary FindAllAction() => NameCache.Value.FindAllName(); + #endregion +} \ No newline at end of file diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\216\206\345\217\262.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\216\206\345\217\262.cs" new file mode 100644 index 0000000..71b3976 --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\216\206\345\217\262.cs" @@ -0,0 +1,221 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace IoT.Data; + +/// 设备历史。记录设备上线下线等操作 +[Serializable] +[DataObject] +[Description("设备历史。记录设备上线下线等操作")] +[BindIndex("IX_DeviceHistory_DeviceId_Id", false, "DeviceId,Id")] +[BindIndex("IX_DeviceHistory_DeviceId_Action_Id", false, "DeviceId,Action,Id")] +[BindTable("DeviceHistory", Description = "设备历史。记录设备上线下线等操作", ConnName = "IoT", DbType = DatabaseType.None)] +public partial class DeviceHistory +{ + #region 属性 + private Int64 _Id; + /// 编号 + [DisplayName("编号")] + [Description("编号")] + [DataObjectField(true, false, false, 0)] + [BindColumn("Id", "编号", "")] + public Int64 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private Int32 _DeviceId; + /// 设备 + [DisplayName("设备")] + [Description("设备")] + [DataObjectField(false, false, false, 0)] + [BindColumn("DeviceId", "设备", "")] + public Int32 DeviceId { get => _DeviceId; set { if (OnPropertyChanging("DeviceId", value)) { _DeviceId = value; OnPropertyChanged("DeviceId"); } } } + + private String _Name; + /// 名称 + [DisplayName("名称")] + [Description("名称")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Name", "名称", "", Master = true)] + public String Name { get => _Name; set { if (OnPropertyChanging("Name", value)) { _Name = value; OnPropertyChanged("Name"); } } } + + private String _Action; + /// 操作 + [DisplayName("操作")] + [Description("操作")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Action", "操作", "")] + public String Action { get => _Action; set { if (OnPropertyChanging("Action", value)) { _Action = value; OnPropertyChanged("Action"); } } } + + private Boolean _Success; + /// 成功 + [DisplayName("成功")] + [Description("成功")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Success", "成功", "")] + public Boolean Success { get => _Success; set { if (OnPropertyChanging("Success", value)) { _Success = value; OnPropertyChanged("Success"); } } } + + private String _TraceId; + /// 追踪。用于记录调用链追踪标识,在APM查找调用链 + [DisplayName("追踪")] + [Description("追踪。用于记录调用链追踪标识,在APM查找调用链")] + [DataObjectField(false, false, true, 50)] + [BindColumn("TraceId", "追踪。用于记录调用链追踪标识,在APM查找调用链", "")] + public String TraceId { get => _TraceId; set { if (OnPropertyChanging("TraceId", value)) { _TraceId = value; OnPropertyChanged("TraceId"); } } } + + private String _Creator; + /// 创建者。服务端设备 + [DisplayName("创建者")] + [Description("创建者。服务端设备")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Creator", "创建者。服务端设备", "")] + public String Creator { get => _Creator; set { if (OnPropertyChanging("Creator", value)) { _Creator = value; OnPropertyChanged("Creator"); } } } + + private DateTime _CreateTime; + /// 创建时间 + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreateTime", "创建时间", "")] + public DateTime CreateTime { get => _CreateTime; set { if (OnPropertyChanging("CreateTime", value)) { _CreateTime = value; OnPropertyChanged("CreateTime"); } } } + + private String _CreateIP; + /// 创建地址 + [DisplayName("创建地址")] + [Description("创建地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("CreateIP", "创建地址", "")] + public String CreateIP { get => _CreateIP; set { if (OnPropertyChanging("CreateIP", value)) { _CreateIP = value; OnPropertyChanged("CreateIP"); } } } + + private String _Remark; + /// 内容 + [DisplayName("内容")] + [Description("内容")] + [DataObjectField(false, false, true, 2000)] + [BindColumn("Remark", "内容", "")] + public String Remark { get => _Remark; set { if (OnPropertyChanging("Remark", value)) { _Remark = value; OnPropertyChanged("Remark"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get => name switch + { + "Id" => _Id, + "DeviceId" => _DeviceId, + "Name" => _Name, + "Action" => _Action, + "Success" => _Success, + "TraceId" => _TraceId, + "Creator" => _Creator, + "CreateTime" => _CreateTime, + "CreateIP" => _CreateIP, + "Remark" => _Remark, + _ => base[name] + }; + set + { + switch (name) + { + case "Id": _Id = value.ToLong(); break; + case "DeviceId": _DeviceId = value.ToInt(); break; + case "Name": _Name = Convert.ToString(value); break; + case "Action": _Action = Convert.ToString(value); break; + case "Success": _Success = value.ToBoolean(); break; + case "TraceId": _TraceId = Convert.ToString(value); break; + case "Creator": _Creator = Convert.ToString(value); break; + case "CreateTime": _CreateTime = value.ToDateTime(); break; + case "CreateIP": _CreateIP = Convert.ToString(value); break; + case "Remark": _Remark = Convert.ToString(value); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 关联映射 + #endregion + + #region 字段名 + /// 取得设备历史字段信息的快捷方式 + public partial class _ + { + /// 编号 + public static readonly Field Id = FindByName("Id"); + + /// 设备 + public static readonly Field DeviceId = FindByName("DeviceId"); + + /// 名称 + public static readonly Field Name = FindByName("Name"); + + /// 操作 + public static readonly Field Action = FindByName("Action"); + + /// 成功 + public static readonly Field Success = FindByName("Success"); + + /// 追踪。用于记录调用链追踪标识,在APM查找调用链 + public static readonly Field TraceId = FindByName("TraceId"); + + /// 创建者。服务端设备 + public static readonly Field Creator = FindByName("Creator"); + + /// 创建时间 + public static readonly Field CreateTime = FindByName("CreateTime"); + + /// 创建地址 + public static readonly Field CreateIP = FindByName("CreateIP"); + + /// 内容 + public static readonly Field Remark = FindByName("Remark"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得设备历史字段名称的快捷方式 + public partial class __ + { + /// 编号 + public const String Id = "Id"; + + /// 设备 + public const String DeviceId = "DeviceId"; + + /// 名称 + public const String Name = "Name"; + + /// 操作 + public const String Action = "Action"; + + /// 成功 + public const String Success = "Success"; + + /// 追踪。用于记录调用链追踪标识,在APM查找调用链 + public const String TraceId = "TraceId"; + + /// 创建者。服务端设备 + public const String Creator = "Creator"; + + /// 创建时间 + public const String CreateTime = "CreateTime"; + + /// 创建地址 + public const String CreateIP = "CreateIP"; + + /// 内容 + public const String Remark = "Remark"; + } + #endregion +} diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\234\250\347\272\277.Biz.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\234\250\347\272\277.Biz.cs" new file mode 100644 index 0000000..fdd13af --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\234\250\347\272\277.Biz.cs" @@ -0,0 +1,284 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using NewLife.IoT.Models; +using NewLife.Log; +using NewLife.Model; +using NewLife.Reflection; +using NewLife.Serialization; +using NewLife.Threading; +using NewLife.Web; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; +using XCode.Membership; +using XCode.Shards; + +namespace IoT.Data; + +public partial class DeviceOnline : Entity +{ + #region 对象操作 + static DeviceOnline() + { + // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx + //var df = Meta.Factory.AdditionalFields; + //df.Add(nameof(ProductId)); + + // 过滤器 UserModule、TimeModule、IPModule + Meta.Modules.Add(); + Meta.Modules.Add(); + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 在新插入数据或者修改了指定字段时进行修正 + //if (isNew && !Dirtys[nameof(CreateTime)]) CreateTime = DateTime.Now; + //if (!Dirtys[nameof(UpdateTime)]) UpdateTime = DateTime.Now; + //if (isNew && !Dirtys[nameof(CreateIP)]) CreateIP = ManageProvider.UserHost; + + // 检查唯一索引 + // CheckExist(isNew, nameof(SessionId)); + } + + ///// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + //[EditorBrowsable(EditorBrowsableState.Never)] + //protected override void InitData() + //{ + // // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + // if (Meta.Session.Count > 0) return; + + // if (XTrace.Debug) XTrace.WriteLine("开始初始化DeviceOnline[设备在线]数据……"); + + // var entity = new DeviceOnline(); + // entity.SessionId = "abc"; + // entity.ProductId = 0; + // entity.DeviceId = 0; + // entity.Name = "abc"; + // entity.IP = "abc"; + // entity.GroupPath = "abc"; + // entity.Pings = 0; + // entity.Delay = 0; + // entity.Offset = 0; + // entity.LocalTime = DateTime.Now; + // entity.Token = "abc"; + // entity.Creator = "abc"; + // entity.CreateTime = DateTime.Now; + // entity.CreateIP = "abc"; + // entity.UpdateTime = DateTime.Now; + // entity.Remark = "abc"; + // entity.Insert(); + + // if (XTrace.Debug) XTrace.WriteLine("完成初始化DeviceOnline[设备在线]数据!"); + //} + + ///// 已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert + ///// + //public override Int32 Insert() + //{ + // return base.Insert(); + //} + + ///// 已重载。在事务保护范围内处理业务,位于Valid之后 + ///// + //protected override Int32 OnDelete() + //{ + // return base.OnDelete(); + //} + #endregion + + #region 扩展属性 + /// 产品 + [XmlIgnore, IgnoreDataMember, ScriptIgnore] + public Product Product => Extends.Get(nameof(Product), k => Product.FindById(ProductId)); + + /// 产品 + [Map(nameof(ProductId), typeof(Product), "Id")] + public String ProductName => Product?.Name; + /// 设备 + [XmlIgnore, IgnoreDataMember, ScriptIgnore] + public Device Device => Extends.Get(nameof(Device), k => Device.FindById(DeviceId)); + + /// 设备 + [Map(nameof(DeviceId), typeof(Device), "Id")] + public String DeviceName => Device?.Name; + #endregion + + #region 扩展查询 + /// 根据编号查找 + /// 编号 + /// 实体对象 + public static DeviceOnline FindById(Int32 id) + { + if (id <= 0) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + + /// 根据会话查找 + /// 会话 + /// 实体对象 + public static DeviceOnline FindBySessionId(String sessionId) + { + if (sessionId.IsNullOrEmpty()) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.SessionId.EqualIgnoreCase(sessionId)); + + return Find(_.SessionId == sessionId); + } + + /// 根据产品查找 + /// 产品 + /// 实体列表 + public static IList FindAllByProductId(Int32 productId) + { + if (productId <= 0) return new List(); + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.ProductId == productId); + + return FindAll(_.ProductId == productId); + } + #endregion + + #region 高级查询 + /// 高级查询 + /// 会话 + /// 产品 + /// 更新时间开始 + /// 更新时间结束 + /// 关键字 + /// 分页参数信息。可携带统计和数据权限扩展查询等信息 + /// 实体列表 + public static IList Search(String sessionId, Int32 productId, DateTime start, DateTime end, String key, PageParameter page) + { + var exp = new WhereExpression(); + + if (!sessionId.IsNullOrEmpty()) exp &= _.SessionId == sessionId; + if (productId >= 0) exp &= _.ProductId == productId; + exp &= _.UpdateTime.Between(start, end); + if (!key.IsNullOrEmpty()) exp &= _.SessionId.Contains(key) | _.Name.Contains(key) | _.IP.Contains(key) | _.GroupPath.Contains(key) | _.Token.Contains(key) | _.Creator.Contains(key) | _.CreateIP.Contains(key) | _.Remark.Contains(key); + + return FindAll(exp, page); + } + + // Select Count(Id) as Id,Category From DeviceOnline Where CreateTime>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20 + //static readonly FieldCache _CategoryCache = new FieldCache(nameof(Category)) + //{ + //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty + //}; + + ///// 获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + ///// + //public static IDictionary GetCategoryList() => _CategoryCache.FindAllName(); + #endregion + + #region 业务操作 + /// 根据编码查询或添加 + /// + /// + public static DeviceOnline GetOrAdd(String sessionid) => GetOrAdd(sessionid, FindBySessionId, k => new DeviceOnline { SessionId = k }); + + /// 删除过期,指定过期时间 + /// 超时时间,秒 + /// + public static IList ClearExpire(TimeSpan expire) + { + if (Meta.Count == 0) return null; + + // 10分钟不活跃将会被删除 + var exp = _.UpdateTime < DateTime.Now.Subtract(expire); + var list = FindAll(exp, null, null, 0, 0); + list.Delete(); + + return list; + } + + /// 更新并保存在线状态 + /// + /// + /// + public void Save(LoginInfo di, PingInfo pi, String token) + { + var olt = this; + + // di不等于空,登录时调用; + // pi不为空,客户端发ping消息是调用; + // 两个都是空,收到mqtt协议ping报文时调用 + if (di != null) + { + olt.Fill(di); + olt.LocalTime = di.Time.ToDateTime().ToLocalTime(); + } + else if (pi != null) + { + olt.Fill(pi); + } + + olt.Token = token; + olt.Pings++; + + // 5秒内直接保存 + if (olt.CreateTime.AddSeconds(5) > DateTime.Now) + olt.Save(); + else + olt.SaveAsync(); + } + + /// 填充节点信息 + /// + public void Fill(LoginInfo di) + { + var online = this; + + online.LocalTime = di.Time.ToDateTime().ToLocalTime(); + online.IP = di.IP; + } + + /// 填充在线节点信息 + /// + private void Fill(PingInfo inf) + { + var olt = this; + + if (inf.Delay > 0) olt.Delay = inf.Delay; + + var dt = inf.Time.ToDateTime().ToLocalTime(); + if (dt.Year > 2000) + { + olt.LocalTime = dt; + olt.Offset = (Int32)Math.Round((dt - DateTime.Now).TotalSeconds); + } + + if (!inf.IP.IsNullOrEmpty()) olt.IP = inf.IP; + olt.Remark = inf.ToJson(); + } + #endregion +} diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\234\250\347\272\277.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\234\250\347\272\277.cs" new file mode 100644 index 0000000..23168ac --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\234\250\347\272\277.cs" @@ -0,0 +1,334 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace IoT.Data; + +/// 设备在线 +[Serializable] +[DataObject] +[Description("设备在线")] +[BindIndex("IU_DeviceOnline_SessionId", true, "SessionId")] +[BindIndex("IX_DeviceOnline_ProductId", false, "ProductId")] +[BindIndex("IX_DeviceOnline_UpdateTime", false, "UpdateTime")] +[BindTable("DeviceOnline", Description = "设备在线", ConnName = "IoT", DbType = DatabaseType.None)] +public partial class DeviceOnline +{ + #region 属性 + private Int32 _Id; + /// 编号 + [DisplayName("编号")] + [Description("编号")] + [DataObjectField(true, true, false, 0)] + [BindColumn("Id", "编号", "")] + public Int32 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private String _SessionId; + /// 会话 + [DisplayName("会话")] + [Description("会话")] + [DataObjectField(false, false, true, 50)] + [BindColumn("SessionId", "会话", "")] + public String SessionId { get => _SessionId; set { if (OnPropertyChanging("SessionId", value)) { _SessionId = value; OnPropertyChanged("SessionId"); } } } + + private Int32 _ProductId; + /// 产品 + [DisplayName("产品")] + [Description("产品")] + [DataObjectField(false, false, false, 0)] + [BindColumn("ProductId", "产品", "")] + public Int32 ProductId { get => _ProductId; set { if (OnPropertyChanging("ProductId", value)) { _ProductId = value; OnPropertyChanged("ProductId"); } } } + + private Int32 _DeviceId; + /// 设备 + [DisplayName("设备")] + [Description("设备")] + [DataObjectField(false, false, false, 0)] + [BindColumn("DeviceId", "设备", "")] + public Int32 DeviceId { get => _DeviceId; set { if (OnPropertyChanging("DeviceId", value)) { _DeviceId = value; OnPropertyChanged("DeviceId"); } } } + + private String _Name; + /// 名称 + [DisplayName("名称")] + [Description("名称")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Name", "名称", "", Master = true)] + public String Name { get => _Name; set { if (OnPropertyChanging("Name", value)) { _Name = value; OnPropertyChanged("Name"); } } } + + private String _IP; + /// 本地IP + [DisplayName("本地IP")] + [Description("本地IP")] + [DataObjectField(false, false, true, 200)] + [BindColumn("IP", "本地IP", "")] + public String IP { get => _IP; set { if (OnPropertyChanging("IP", value)) { _IP = value; OnPropertyChanged("IP"); } } } + + private String _GroupPath; + /// 分组 + [DisplayName("分组")] + [Description("分组")] + [DataObjectField(false, false, true, 50)] + [BindColumn("GroupPath", "分组", "")] + public String GroupPath { get => _GroupPath; set { if (OnPropertyChanging("GroupPath", value)) { _GroupPath = value; OnPropertyChanged("GroupPath"); } } } + + private Int32 _Pings; + /// 心跳 + [DisplayName("心跳")] + [Description("心跳")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Pings", "心跳", "")] + public Int32 Pings { get => _Pings; set { if (OnPropertyChanging("Pings", value)) { _Pings = value; OnPropertyChanged("Pings"); } } } + + private Int32 _Delay; + /// 延迟。网络延迟,单位ms + [DisplayName("延迟")] + [Description("延迟。网络延迟,单位ms")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Delay", "延迟。网络延迟,单位ms", "")] + public Int32 Delay { get => _Delay; set { if (OnPropertyChanging("Delay", value)) { _Delay = value; OnPropertyChanged("Delay"); } } } + + private Int32 _Offset; + /// 偏移。客户端时间减服务端时间,单位s + [DisplayName("偏移")] + [Description("偏移。客户端时间减服务端时间,单位s")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Offset", "偏移。客户端时间减服务端时间,单位s", "")] + public Int32 Offset { get => _Offset; set { if (OnPropertyChanging("Offset", value)) { _Offset = value; OnPropertyChanged("Offset"); } } } + + private DateTime _LocalTime; + /// 本地时间 + [DisplayName("本地时间")] + [Description("本地时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("LocalTime", "本地时间", "")] + public DateTime LocalTime { get => _LocalTime; set { if (OnPropertyChanging("LocalTime", value)) { _LocalTime = value; OnPropertyChanged("LocalTime"); } } } + + private String _Token; + /// 令牌 + [DisplayName("令牌")] + [Description("令牌")] + [DataObjectField(false, false, true, 200)] + [BindColumn("Token", "令牌", "")] + public String Token { get => _Token; set { if (OnPropertyChanging("Token", value)) { _Token = value; OnPropertyChanged("Token"); } } } + + private String _Creator; + /// 创建者。服务端设备 + [DisplayName("创建者")] + [Description("创建者。服务端设备")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Creator", "创建者。服务端设备", "")] + public String Creator { get => _Creator; set { if (OnPropertyChanging("Creator", value)) { _Creator = value; OnPropertyChanged("Creator"); } } } + + private DateTime _CreateTime; + /// 创建时间 + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreateTime", "创建时间", "")] + public DateTime CreateTime { get => _CreateTime; set { if (OnPropertyChanging("CreateTime", value)) { _CreateTime = value; OnPropertyChanged("CreateTime"); } } } + + private String _CreateIP; + /// 创建地址 + [DisplayName("创建地址")] + [Description("创建地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("CreateIP", "创建地址", "")] + public String CreateIP { get => _CreateIP; set { if (OnPropertyChanging("CreateIP", value)) { _CreateIP = value; OnPropertyChanged("CreateIP"); } } } + + private DateTime _UpdateTime; + /// 更新时间 + [DisplayName("更新时间")] + [Description("更新时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("UpdateTime", "更新时间", "")] + public DateTime UpdateTime { get => _UpdateTime; set { if (OnPropertyChanging("UpdateTime", value)) { _UpdateTime = value; OnPropertyChanged("UpdateTime"); } } } + + private String _Remark; + /// 备注 + [DisplayName("备注")] + [Description("备注")] + [DataObjectField(false, false, true, 500)] + [BindColumn("Remark", "备注", "")] + public String Remark { get => _Remark; set { if (OnPropertyChanging("Remark", value)) { _Remark = value; OnPropertyChanged("Remark"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get => name switch + { + "Id" => _Id, + "SessionId" => _SessionId, + "ProductId" => _ProductId, + "DeviceId" => _DeviceId, + "Name" => _Name, + "IP" => _IP, + "GroupPath" => _GroupPath, + "Pings" => _Pings, + "Delay" => _Delay, + "Offset" => _Offset, + "LocalTime" => _LocalTime, + "Token" => _Token, + "Creator" => _Creator, + "CreateTime" => _CreateTime, + "CreateIP" => _CreateIP, + "UpdateTime" => _UpdateTime, + "Remark" => _Remark, + _ => base[name] + }; + set + { + switch (name) + { + case "Id": _Id = value.ToInt(); break; + case "SessionId": _SessionId = Convert.ToString(value); break; + case "ProductId": _ProductId = value.ToInt(); break; + case "DeviceId": _DeviceId = value.ToInt(); break; + case "Name": _Name = Convert.ToString(value); break; + case "IP": _IP = Convert.ToString(value); break; + case "GroupPath": _GroupPath = Convert.ToString(value); break; + case "Pings": _Pings = value.ToInt(); break; + case "Delay": _Delay = value.ToInt(); break; + case "Offset": _Offset = value.ToInt(); break; + case "LocalTime": _LocalTime = value.ToDateTime(); break; + case "Token": _Token = Convert.ToString(value); break; + case "Creator": _Creator = Convert.ToString(value); break; + case "CreateTime": _CreateTime = value.ToDateTime(); break; + case "CreateIP": _CreateIP = Convert.ToString(value); break; + case "UpdateTime": _UpdateTime = value.ToDateTime(); break; + case "Remark": _Remark = Convert.ToString(value); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 关联映射 + #endregion + + #region 字段名 + /// 取得设备在线字段信息的快捷方式 + public partial class _ + { + /// 编号 + public static readonly Field Id = FindByName("Id"); + + /// 会话 + public static readonly Field SessionId = FindByName("SessionId"); + + /// 产品 + public static readonly Field ProductId = FindByName("ProductId"); + + /// 设备 + public static readonly Field DeviceId = FindByName("DeviceId"); + + /// 名称 + public static readonly Field Name = FindByName("Name"); + + /// 本地IP + public static readonly Field IP = FindByName("IP"); + + /// 分组 + public static readonly Field GroupPath = FindByName("GroupPath"); + + /// 心跳 + public static readonly Field Pings = FindByName("Pings"); + + /// 延迟。网络延迟,单位ms + public static readonly Field Delay = FindByName("Delay"); + + /// 偏移。客户端时间减服务端时间,单位s + public static readonly Field Offset = FindByName("Offset"); + + /// 本地时间 + public static readonly Field LocalTime = FindByName("LocalTime"); + + /// 令牌 + public static readonly Field Token = FindByName("Token"); + + /// 创建者。服务端设备 + public static readonly Field Creator = FindByName("Creator"); + + /// 创建时间 + public static readonly Field CreateTime = FindByName("CreateTime"); + + /// 创建地址 + public static readonly Field CreateIP = FindByName("CreateIP"); + + /// 更新时间 + public static readonly Field UpdateTime = FindByName("UpdateTime"); + + /// 备注 + public static readonly Field Remark = FindByName("Remark"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得设备在线字段名称的快捷方式 + public partial class __ + { + /// 编号 + public const String Id = "Id"; + + /// 会话 + public const String SessionId = "SessionId"; + + /// 产品 + public const String ProductId = "ProductId"; + + /// 设备 + public const String DeviceId = "DeviceId"; + + /// 名称 + public const String Name = "Name"; + + /// 本地IP + public const String IP = "IP"; + + /// 分组 + public const String GroupPath = "GroupPath"; + + /// 心跳 + public const String Pings = "Pings"; + + /// 延迟。网络延迟,单位ms + public const String Delay = "Delay"; + + /// 偏移。客户端时间减服务端时间,单位s + public const String Offset = "Offset"; + + /// 本地时间 + public const String LocalTime = "LocalTime"; + + /// 令牌 + public const String Token = "Token"; + + /// 创建者。服务端设备 + public const String Creator = "Creator"; + + /// 创建时间 + public const String CreateTime = "CreateTime"; + + /// 创建地址 + public const String CreateIP = "CreateIP"; + + /// 更新时间 + public const String UpdateTime = "UpdateTime"; + + /// 备注 + public const String Remark = "Remark"; + } + #endregion +} diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\261\236\346\200\247.Biz.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\261\236\346\200\247.Biz.cs" new file mode 100644 index 0000000..9af67e4 --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\261\236\346\200\247.Biz.cs" @@ -0,0 +1,194 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; +using System.Web; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using NewLife.Log; +using NewLife.Model; +using NewLife.Reflection; +using NewLife.Threading; +using NewLife.Web; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; +using XCode.Membership; +using XCode.Shards; + +namespace IoT.Data; + +public partial class DeviceProperty : Entity +{ + #region 对象操作 + static DeviceProperty() + { + // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx + //var df = Meta.Factory.AdditionalFields; + //df.Add(nameof(DeviceId)); + + // 过滤器 UserModule、TimeModule、IPModule + Meta.Modules.Add(); + Meta.Modules.Add(); + Meta.Modules.Add(); + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 在新插入数据或者修改了指定字段时进行修正 + //if (isNew && !Dirtys[nameof(CreateTime)]) CreateTime = DateTime.Now; + //if (!Dirtys[nameof(UpdateTime)]) UpdateTime = DateTime.Now; + //if (isNew && !Dirtys[nameof(CreateIP)]) CreateIP = ManageProvider.UserHost; + //if (!Dirtys[nameof(UpdateIP)]) UpdateIP = ManageProvider.UserHost; + + // 检查唯一索引 + // CheckExist(isNew, nameof(DeviceId), nameof(Name)); + } + + ///// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + //[EditorBrowsable(EditorBrowsableState.Never)] + //protected override void InitData() + //{ + // // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + // if (Meta.Session.Count > 0) return; + + // if (XTrace.Debug) XTrace.WriteLine("开始初始化DeviceProperty[设备属性]数据……"); + + // var entity = new DeviceProperty(); + // entity.DeviceId = 0; + // entity.Name = "abc"; + // entity.NickName = "abc"; + // entity.Type = "abc"; + // entity.Value = "abc"; + // entity.Unit = "abc"; + // entity.Enable = true; + // entity.TraceId = "abc"; + // entity.CreateTime = DateTime.Now; + // entity.CreateIP = "abc"; + // entity.UpdateTime = DateTime.Now; + // entity.UpdateIP = "abc"; + // entity.Insert(); + + // if (XTrace.Debug) XTrace.WriteLine("完成初始化DeviceProperty[设备属性]数据!"); + //} + + ///// 已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert + ///// + //public override Int32 Insert() + //{ + // return base.Insert(); + //} + + ///// 已重载。在事务保护范围内处理业务,位于Valid之后 + ///// + //protected override Int32 OnDelete() + //{ + // return base.OnDelete(); + //} + #endregion + + #region 扩展属性 + /// 设备 + [XmlIgnore, IgnoreDataMember, ScriptIgnore] + public Device Device => Extends.Get(nameof(Device), k => Device.FindById(DeviceId)); + + /// 设备 + [Map(nameof(DeviceId), typeof(Device), "Id")] + public String DeviceName => Device?.Name; + #endregion + + #region 扩展查询 + /// 根据编号查找 + /// 编号 + /// 实体对象 + public static DeviceProperty FindById(Int32 id) + { + if (id <= 0) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + + /// 根据设备、名称查找 + /// 设备 + /// 名称 + /// 实体对象 + public static DeviceProperty FindByDeviceIdAndName(Int32 deviceId, String name) + { + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.DeviceId == deviceId && e.Name.EqualIgnoreCase(name)); + + return Find(_.DeviceId == deviceId & _.Name == name); + } + + /// 根据设备查找 + /// 设备 + /// 实体对象 + public static IList FindAllByDeviceId(Int32 deviceId) + { + var list = new List(); + if (deviceId <= 0) return list; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.DeviceId == deviceId); + + return FindAll(_.DeviceId == deviceId); + } + #endregion + + #region 高级查询 + /// 高级查询 + /// 设备 + /// 名称 + /// 更新时间开始 + /// 更新时间结束 + /// 关键字 + /// 分页参数信息。可携带统计和数据权限扩展查询等信息 + /// 实体列表 + public static IList Search(Int32 deviceId, String name, DateTime start, DateTime end, String key, PageParameter page) + { + var exp = new WhereExpression(); + + if (deviceId >= 0) exp &= _.DeviceId == deviceId; + if (!name.IsNullOrEmpty()) exp &= _.Name == name; + exp &= _.UpdateTime.Between(start, end); + if (!key.IsNullOrEmpty()) exp &= _.Name.Contains(key) | _.NickName.Contains(key) | _.Type.Contains(key) | _.Value.Contains(key) | _.Unit.Contains(key) | _.TraceId.Contains(key) | _.CreateIP.Contains(key) | _.UpdateIP.Contains(key); + + return FindAll(exp, page); + } + + // Select Count(Id) as Id,Category From DeviceProperty Where CreateTime>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20 + //static readonly FieldCache _CategoryCache = new FieldCache(nameof(Category)) + //{ + //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty + //}; + + ///// 获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + ///// + //public static IDictionary GetCategoryList() => _CategoryCache.FindAllName(); + #endregion + + #region 业务操作 + #endregion +} diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\261\236\346\200\247.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\261\236\346\200\247.cs" new file mode 100644 index 0000000..69a6b06 --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\345\261\236\346\200\247.cs" @@ -0,0 +1,274 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace IoT.Data; + +/// 设备属性。设备的功能模型之一,一般用于描述设备运行时的状态,如环境监测设备所读取的当前环境温度等。一个设备有多个属性,名值表 +[Serializable] +[DataObject] +[Description("设备属性。设备的功能模型之一,一般用于描述设备运行时的状态,如环境监测设备所读取的当前环境温度等。一个设备有多个属性,名值表")] +[BindIndex("IU_DeviceProperty_DeviceId_Name", true, "DeviceId,Name")] +[BindIndex("IX_DeviceProperty_UpdateTime", false, "UpdateTime")] +[BindTable("DeviceProperty", Description = "设备属性。设备的功能模型之一,一般用于描述设备运行时的状态,如环境监测设备所读取的当前环境温度等。一个设备有多个属性,名值表", ConnName = "IoT", DbType = DatabaseType.None)] +public partial class DeviceProperty +{ + #region 属性 + private Int32 _Id; + /// 编号 + [DisplayName("编号")] + [Description("编号")] + [DataObjectField(true, true, false, 0)] + [BindColumn("Id", "编号", "")] + public Int32 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private Int32 _DeviceId; + /// 设备 + [DisplayName("设备")] + [Description("设备")] + [DataObjectField(false, false, false, 0)] + [BindColumn("DeviceId", "设备", "")] + public Int32 DeviceId { get => _DeviceId; set { if (OnPropertyChanging("DeviceId", value)) { _DeviceId = value; OnPropertyChanged("DeviceId"); } } } + + private String _Name; + /// 名称 + [DisplayName("名称")] + [Description("名称")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Name", "名称", "", Master = true)] + public String Name { get => _Name; set { if (OnPropertyChanging("Name", value)) { _Name = value; OnPropertyChanged("Name"); } } } + + private String _NickName; + /// 昵称 + [DisplayName("昵称")] + [Description("昵称")] + [DataObjectField(false, false, true, 50)] + [BindColumn("NickName", "昵称", "")] + public String NickName { get => _NickName; set { if (OnPropertyChanging("NickName", value)) { _NickName = value; OnPropertyChanged("NickName"); } } } + + private String _Type; + /// 类型 + [DisplayName("类型")] + [Description("类型")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Type", "类型", "")] + public String Type { get => _Type; set { if (OnPropertyChanging("Type", value)) { _Type = value; OnPropertyChanged("Type"); } } } + + private String _Value; + /// 数值。设备上报数值 + [DisplayName("数值")] + [Description("数值。设备上报数值")] + [DataObjectField(false, false, true, -1)] + [BindColumn("Value", "数值。设备上报数值", "")] + public String Value { get => _Value; set { if (OnPropertyChanging("Value", value)) { _Value = value; OnPropertyChanged("Value"); } } } + + private String _Unit; + /// 单位 + [DisplayName("单位")] + [Description("单位")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Unit", "单位", "")] + public String Unit { get => _Unit; set { if (OnPropertyChanging("Unit", value)) { _Unit = value; OnPropertyChanged("Unit"); } } } + + private Boolean _Enable; + /// 启用 + [DisplayName("启用")] + [Description("启用")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Enable", "启用", "")] + public Boolean Enable { get => _Enable; set { if (OnPropertyChanging("Enable", value)) { _Enable = value; OnPropertyChanged("Enable"); } } } + + private String _TraceId; + /// 追踪。用于记录调用链追踪标识,在APM查找调用链 + [Category("扩展")] + [DisplayName("追踪")] + [Description("追踪。用于记录调用链追踪标识,在APM查找调用链")] + [DataObjectField(false, false, true, 50)] + [BindColumn("TraceId", "追踪。用于记录调用链追踪标识,在APM查找调用链", "")] + public String TraceId { get => _TraceId; set { if (OnPropertyChanging("TraceId", value)) { _TraceId = value; OnPropertyChanged("TraceId"); } } } + + private DateTime _CreateTime; + /// 创建时间 + [Category("扩展")] + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreateTime", "创建时间", "")] + public DateTime CreateTime { get => _CreateTime; set { if (OnPropertyChanging("CreateTime", value)) { _CreateTime = value; OnPropertyChanged("CreateTime"); } } } + + private String _CreateIP; + /// 创建地址 + [Category("扩展")] + [DisplayName("创建地址")] + [Description("创建地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("CreateIP", "创建地址", "")] + public String CreateIP { get => _CreateIP; set { if (OnPropertyChanging("CreateIP", value)) { _CreateIP = value; OnPropertyChanged("CreateIP"); } } } + + private DateTime _UpdateTime; + /// 更新时间 + [Category("扩展")] + [DisplayName("更新时间")] + [Description("更新时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("UpdateTime", "更新时间", "")] + public DateTime UpdateTime { get => _UpdateTime; set { if (OnPropertyChanging("UpdateTime", value)) { _UpdateTime = value; OnPropertyChanged("UpdateTime"); } } } + + private String _UpdateIP; + /// 更新地址 + [Category("扩展")] + [DisplayName("更新地址")] + [Description("更新地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("UpdateIP", "更新地址", "")] + public String UpdateIP { get => _UpdateIP; set { if (OnPropertyChanging("UpdateIP", value)) { _UpdateIP = value; OnPropertyChanged("UpdateIP"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get => name switch + { + "Id" => _Id, + "DeviceId" => _DeviceId, + "Name" => _Name, + "NickName" => _NickName, + "Type" => _Type, + "Value" => _Value, + "Unit" => _Unit, + "Enable" => _Enable, + "TraceId" => _TraceId, + "CreateTime" => _CreateTime, + "CreateIP" => _CreateIP, + "UpdateTime" => _UpdateTime, + "UpdateIP" => _UpdateIP, + _ => base[name] + }; + set + { + switch (name) + { + case "Id": _Id = value.ToInt(); break; + case "DeviceId": _DeviceId = value.ToInt(); break; + case "Name": _Name = Convert.ToString(value); break; + case "NickName": _NickName = Convert.ToString(value); break; + case "Type": _Type = Convert.ToString(value); break; + case "Value": _Value = Convert.ToString(value); break; + case "Unit": _Unit = Convert.ToString(value); break; + case "Enable": _Enable = value.ToBoolean(); break; + case "TraceId": _TraceId = Convert.ToString(value); break; + case "CreateTime": _CreateTime = value.ToDateTime(); break; + case "CreateIP": _CreateIP = Convert.ToString(value); break; + case "UpdateTime": _UpdateTime = value.ToDateTime(); break; + case "UpdateIP": _UpdateIP = Convert.ToString(value); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 关联映射 + #endregion + + #region 字段名 + /// 取得设备属性字段信息的快捷方式 + public partial class _ + { + /// 编号 + public static readonly Field Id = FindByName("Id"); + + /// 设备 + public static readonly Field DeviceId = FindByName("DeviceId"); + + /// 名称 + public static readonly Field Name = FindByName("Name"); + + /// 昵称 + public static readonly Field NickName = FindByName("NickName"); + + /// 类型 + public static readonly Field Type = FindByName("Type"); + + /// 数值。设备上报数值 + public static readonly Field Value = FindByName("Value"); + + /// 单位 + public static readonly Field Unit = FindByName("Unit"); + + /// 启用 + public static readonly Field Enable = FindByName("Enable"); + + /// 追踪。用于记录调用链追踪标识,在APM查找调用链 + public static readonly Field TraceId = FindByName("TraceId"); + + /// 创建时间 + public static readonly Field CreateTime = FindByName("CreateTime"); + + /// 创建地址 + public static readonly Field CreateIP = FindByName("CreateIP"); + + /// 更新时间 + public static readonly Field UpdateTime = FindByName("UpdateTime"); + + /// 更新地址 + public static readonly Field UpdateIP = FindByName("UpdateIP"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得设备属性字段名称的快捷方式 + public partial class __ + { + /// 编号 + public const String Id = "Id"; + + /// 设备 + public const String DeviceId = "DeviceId"; + + /// 名称 + public const String Name = "Name"; + + /// 昵称 + public const String NickName = "NickName"; + + /// 类型 + public const String Type = "Type"; + + /// 数值。设备上报数值 + public const String Value = "Value"; + + /// 单位 + public const String Unit = "Unit"; + + /// 启用 + public const String Enable = "Enable"; + + /// 追踪。用于记录调用链追踪标识,在APM查找调用链 + public const String TraceId = "TraceId"; + + /// 创建时间 + public const String CreateTime = "CreateTime"; + + /// 创建地址 + public const String CreateIP = "CreateIP"; + + /// 更新时间 + public const String UpdateTime = "UpdateTime"; + + /// 更新地址 + public const String UpdateIP = "UpdateIP"; + } + #endregion +} diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207\346\225\260\346\215\256.Biz.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\346\225\260\346\215\256.Biz.cs" new file mode 100644 index 0000000..84fcc8e --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\346\225\260\346\215\256.Biz.cs" @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using XCode; +using XCode.Membership; +using XCode.Shards; + +namespace IoT.Data; + +public partial class DeviceData : Entity +{ + #region 对象操作 + static DeviceData() + { + Meta.Table.DataTable.InsertOnly = true; + + // 按天分表 + Meta.ShardPolicy = new TimeShardPolicy(nameof(Id), Meta.Factory) + { + TablePolicy = "{0}_{1:yyyyMMdd}", + Step = TimeSpan.FromDays(1), + }; + + // 过滤器 UserModule、TimeModule、IPModule + Meta.Modules.Add(); + Meta.Modules.Add(); + Meta.Modules.Add(); + } + + /// 验证并修补数据,通过抛出异常的方式提示验证失败。 + /// 是否插入 + public override void Valid(Boolean isNew) + { + // 如果没有脏数据,则不需要进行任何处理 + if (!HasDirty) return; + + // 建议先调用基类方法,基类方法会做一些统一处理 + base.Valid(isNew); + + // 在新插入数据或者修改了指定字段时进行修正 + //if (isNew && !Dirtys[nameof(CreateTime)]) CreateTime = DateTime.Now; + //if (isNew && !Dirtys[nameof(CreateIP)]) CreateIP = ManageProvider.UserHost; + } + + ///// 首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法 + //[EditorBrowsable(EditorBrowsableState.Never)] + //protected override void InitData() + //{ + // // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用 + // if (Meta.Session.Count > 0) return; + + // if (XTrace.Debug) XTrace.WriteLine("开始初始化DeviceData[设备数据]数据……"); + + // var entity = new DeviceData(); + // entity.Id = 0; + // entity.DeviceId = 0; + // entity.Name = "abc"; + // entity.Kind = "abc"; + // entity.Value = "abc"; + // entity.Timestamp = 0; + // entity.TraceId = "abc"; + // entity.Creator = "abc"; + // entity.CreateTime = DateTime.Now; + // entity.CreateIP = "abc"; + // entity.Insert(); + + // if (XTrace.Debug) XTrace.WriteLine("完成初始化DeviceData[设备数据]数据!"); + //} + + ///// 已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert + ///// + //public override Int32 Insert() + //{ + // return base.Insert(); + //} + + ///// 已重载。在事务保护范围内处理业务,位于Valid之后 + ///// + //protected override Int32 OnDelete() + //{ + // return base.OnDelete(); + //} + #endregion + + #region 扩展属性 + /// 设备 + [XmlIgnore, IgnoreDataMember, ScriptIgnore] + public Device Device => Extends.Get(nameof(Device), k => Device.FindById(DeviceId)); + + /// 设备 + [Map(nameof(DeviceId), typeof(Device), "Id")] + public String DeviceName => Device?.Name; + #endregion + + #region 扩展查询 + /// 根据编号查找 + /// 编号 + /// 实体对象 + public static DeviceData FindById(Int64 id) + { + if (id <= 0) return null; + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id); + + // 单对象缓存 + return Meta.SingleCache[id]; + + //return Find(_.Id == id); + } + + /// 根据设备、编号查找 + /// 设备 + /// 编号 + /// 实体列表 + public static IList FindAllByDeviceIdAndId(Int32 deviceId, Int64 id) + { + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.DeviceId == deviceId && e.Id == id); + + return FindAll(_.DeviceId == deviceId & _.Id == id); + } + + /// 根据设备查找 + /// 设备 + /// 实体列表 + public static IList FindAllByDeviceId(Int32 deviceId) + { + if (deviceId <= 0) return new List(); + + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.DeviceId == deviceId); + + return FindAll(_.DeviceId == deviceId); + } + + /// 根据设备、名称查找 + /// 设备 + /// 名称 + /// 实体列表 + public static IList FindAllByDeviceIdAndName(Int32 deviceId, String name) + { + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.DeviceId == deviceId && e.Name.EqualIgnoreCase(name)); + + return FindAll(_.DeviceId == deviceId & _.Name == name); + } + + /// 根据设备、类型查找 + /// 设备 + /// 类型 + /// 实体列表 + public static IList FindAllByDeviceIdAndKind(Int32 deviceId, String kind) + { + // 实体缓存 + if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.DeviceId == deviceId && e.Kind.EqualIgnoreCase(kind)); + + return FindAll(_.DeviceId == deviceId & _.Kind == kind); + } + #endregion + + #region 高级查询 + /// 高级查询 + /// 设备 + /// 名称。MQTT的Topic,或者属性名 + /// 创建时间开始 + /// 创建时间结束 + /// 关键字 + /// 分页参数信息。可携带统计和数据权限扩展查询等信息 + /// 实体列表 + public static IList Search(Int32 deviceId, String name, DateTime start, DateTime end, String key, PageParameter page) + { + var exp = new WhereExpression(); + + if (deviceId >= 0) exp &= _.DeviceId == deviceId; + if (!name.IsNullOrEmpty()) exp &= _.Name == name; + exp &= _.CreateTime.Between(start, end); + if (!key.IsNullOrEmpty()) exp &= _.Name.Contains(key) | _.Value.Contains(key) | _.TraceId.Contains(key) | _.Creator.Contains(key) | _.CreateIP.Contains(key); + + return FindAll(exp, page); + } + + // Select Count(Id) as Id,Category From DeviceData Where CreateTime>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20 + //static readonly FieldCache _CategoryCache = new FieldCache(nameof(Category)) + //{ + //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty + //}; + + ///// 获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择 + ///// + //public static IDictionary GetCategoryList() => _CategoryCache.FindAllName(); + #endregion + + #region 业务操作 + #endregion +} \ No newline at end of file diff --git "a/Samples/IoTZero/Entity/\350\256\276\345\244\207\346\225\260\346\215\256.cs" "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\346\225\260\346\215\256.cs" new file mode 100644 index 0000000..3576208 --- /dev/null +++ "b/Samples/IoTZero/Entity/\350\256\276\345\244\207\346\225\260\346\215\256.cs" @@ -0,0 +1,226 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Runtime.Serialization; +using System.Web.Script.Serialization; +using System.Xml.Serialization; +using NewLife; +using NewLife.Data; +using XCode; +using XCode.Cache; +using XCode.Configuration; +using XCode.DataAccessLayer; + +namespace IoT.Data; + +/// 设备数据。设备采集原始数据,按天分表存储 +[Serializable] +[DataObject] +[Description("设备数据。设备采集原始数据,按天分表存储")] +[BindIndex("IX_DeviceData_DeviceId_Id", false, "DeviceId,Id")] +[BindIndex("IX_DeviceData_DeviceId_Name_Id", false, "DeviceId,Name,Id")] +[BindIndex("IX_DeviceData_DeviceId_Kind_Id", false, "DeviceId,Kind,Id")] +[BindTable("DeviceData", Description = "设备数据。设备采集原始数据,按天分表存储", ConnName = "IoT", DbType = DatabaseType.None)] +public partial class DeviceData +{ + #region 属性 + private Int64 _Id; + /// 编号 + [DisplayName("编号")] + [Description("编号")] + [DataObjectField(true, false, false, 0)] + [BindColumn("Id", "编号", "")] + public Int64 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } } + + private Int32 _DeviceId; + /// 设备 + [DisplayName("设备")] + [Description("设备")] + [DataObjectField(false, false, false, 0)] + [BindColumn("DeviceId", "设备", "")] + public Int32 DeviceId { get => _DeviceId; set { if (OnPropertyChanging("DeviceId", value)) { _DeviceId = value; OnPropertyChanged("DeviceId"); } } } + + private String _Name; + /// 名称。MQTT的Topic,或者属性名 + [DisplayName("名称")] + [Description("名称。MQTT的Topic,或者属性名")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Name", "名称。MQTT的Topic,或者属性名", "", Master = true)] + public String Name { get => _Name; set { if (OnPropertyChanging("Name", value)) { _Name = value; OnPropertyChanged("Name"); } } } + + private String _Kind; + /// 类型。数据来源,如PostProperty/PostData/MqttPostData + [DisplayName("类型")] + [Description("类型。数据来源,如PostProperty/PostData/MqttPostData")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Kind", "类型。数据来源,如PostProperty/PostData/MqttPostData", "")] + public String Kind { get => _Kind; set { if (OnPropertyChanging("Kind", value)) { _Kind = value; OnPropertyChanged("Kind"); } } } + + private String _Value; + /// 数值 + [DisplayName("数值")] + [Description("数值")] + [DataObjectField(false, false, true, 2000)] + [BindColumn("Value", "数值", "")] + public String Value { get => _Value; set { if (OnPropertyChanging("Value", value)) { _Value = value; OnPropertyChanged("Value"); } } } + + private Int64 _Timestamp; + /// 时间戳。设备生成数据时的UTC毫秒 + [DisplayName("时间戳")] + [Description("时间戳。设备生成数据时的UTC毫秒")] + [DataObjectField(false, false, false, 0)] + [BindColumn("Timestamp", "时间戳。设备生成数据时的UTC毫秒", "")] + public Int64 Timestamp { get => _Timestamp; set { if (OnPropertyChanging("Timestamp", value)) { _Timestamp = value; OnPropertyChanged("Timestamp"); } } } + + private String _TraceId; + /// 追踪标识。用于记录调用链追踪标识,在APM查找调用链 + [Category("扩展")] + [DisplayName("追踪标识")] + [Description("追踪标识。用于记录调用链追踪标识,在APM查找调用链")] + [DataObjectField(false, false, true, 50)] + [BindColumn("TraceId", "追踪标识。用于记录调用链追踪标识,在APM查找调用链", "")] + public String TraceId { get => _TraceId; set { if (OnPropertyChanging("TraceId", value)) { _TraceId = value; OnPropertyChanged("TraceId"); } } } + + private String _Creator; + /// 创建者。服务端设备 + [Category("扩展")] + [DisplayName("创建者")] + [Description("创建者。服务端设备")] + [DataObjectField(false, false, true, 50)] + [BindColumn("Creator", "创建者。服务端设备", "")] + public String Creator { get => _Creator; set { if (OnPropertyChanging("Creator", value)) { _Creator = value; OnPropertyChanged("Creator"); } } } + + private DateTime _CreateTime; + /// 创建时间 + [Category("扩展")] + [DisplayName("创建时间")] + [Description("创建时间")] + [DataObjectField(false, false, true, 0)] + [BindColumn("CreateTime", "创建时间", "")] + public DateTime CreateTime { get => _CreateTime; set { if (OnPropertyChanging("CreateTime", value)) { _CreateTime = value; OnPropertyChanged("CreateTime"); } } } + + private String _CreateIP; + /// 创建地址 + [Category("扩展")] + [DisplayName("创建地址")] + [Description("创建地址")] + [DataObjectField(false, false, true, 50)] + [BindColumn("CreateIP", "创建地址", "")] + public String CreateIP { get => _CreateIP; set { if (OnPropertyChanging("CreateIP", value)) { _CreateIP = value; OnPropertyChanged("CreateIP"); } } } + #endregion + + #region 获取/设置 字段值 + /// 获取/设置 字段值 + /// 字段名 + /// + public override Object this[String name] + { + get => name switch + { + "Id" => _Id, + "DeviceId" => _DeviceId, + "Name" => _Name, + "Kind" => _Kind, + "Value" => _Value, + "Timestamp" => _Timestamp, + "TraceId" => _TraceId, + "Creator" => _Creator, + "CreateTime" => _CreateTime, + "CreateIP" => _CreateIP, + _ => base[name] + }; + set + { + switch (name) + { + case "Id": _Id = value.ToLong(); break; + case "DeviceId": _DeviceId = value.ToInt(); break; + case "Name": _Name = Convert.ToString(value); break; + case "Kind": _Kind = Convert.ToString(value); break; + case "Value": _Value = Convert.ToString(value); break; + case "Timestamp": _Timestamp = value.ToLong(); break; + case "TraceId": _TraceId = Convert.ToString(value); break; + case "Creator": _Creator = Convert.ToString(value); break; + case "CreateTime": _CreateTime = value.ToDateTime(); break; + case "CreateIP": _CreateIP = Convert.ToString(value); break; + default: base[name] = value; break; + } + } + } + #endregion + + #region 关联映射 + #endregion + + #region 字段名 + /// 取得设备数据字段信息的快捷方式 + public partial class _ + { + /// 编号 + public static readonly Field Id = FindByName("Id"); + + /// 设备 + public static readonly Field DeviceId = FindByName("DeviceId"); + + /// 名称。MQTT的Topic,或者属性名 + public static readonly Field Name = FindByName("Name"); + + /// 类型。数据来源,如PostProperty/PostData/MqttPostData + public static readonly Field Kind = FindByName("Kind"); + + /// 数值 + public static readonly Field Value = FindByName("Value"); + + /// 时间戳。设备生成数据时的UTC毫秒 + public static readonly Field Timestamp = FindByName("Timestamp"); + + /// 追踪标识。用于记录调用链追踪标识,在APM查找调用链 + public static readonly Field TraceId = FindByName("TraceId"); + + /// 创建者。服务端设备 + public static readonly Field Creator = FindByName("Creator"); + + /// 创建时间 + public static readonly Field CreateTime = FindByName("CreateTime"); + + /// 创建地址 + public static readonly Field CreateIP = FindByName("CreateIP"); + + static Field FindByName(String name) => Meta.Table.FindByName(name); + } + + /// 取得设备数据字段名称的快捷方式 + public partial class __ + { + /// 编号 + public const String Id = "Id"; + + /// 设备 + public const String DeviceId = "DeviceId"; + + /// 名称。MQTT的Topic,或者属性名 + public const String Name = "Name"; + + /// 类型。数据来源,如PostProperty/PostData/MqttPostData + public const String Kind = "Kind"; + + /// 数值 + public const String Value = "Value"; + + /// 时间戳。设备生成数据时的UTC毫秒 + public const String Timestamp = "Timestamp"; + + /// 追踪标识。用于记录调用链追踪标识,在APM查找调用链 + public const String TraceId = "TraceId"; + + /// 创建者。服务端设备 + public const String Creator = "Creator"; + + /// 创建时间 + public const String CreateTime = "CreateTime"; + + /// 创建地址 + public const String CreateIP = "CreateIP"; + } + #endregion +} diff --git a/Samples/IoTZero/IoTSetting.cs b/Samples/IoTZero/IoTSetting.cs new file mode 100644 index 0000000..988b3d7 --- /dev/null +++ b/Samples/IoTZero/IoTSetting.cs @@ -0,0 +1,69 @@ +using System.ComponentModel; +using NewLife; +using NewLife.Configuration; +using NewLife.Security; +using XCode.Configuration; + +namespace IoTZero; + +/// 配置 +[Config("IoTZero")] +public class IoTSetting : Config +{ + #region 静态 + static IoTSetting() => Provider = new DbConfigProvider { UserId = 0, Category = "IoTServer" }; + #endregion + + #region 属性 + ///// MQTT服务端口。默认1883 + //[Description("MQTT服务端口。默认1883")] + //public Int32 MqttPort { get; set; } = 1883; + + ///// MQTT证书地址。设置了才启用安全连接,默认为空 + //[Description("MQTT证书地址。设置了才启用安全连接,默认为空")] + //public String MqttCertPath { get; set; } + + ///// MMQTT证书密码 + //[Description("MQTT证书密码")] + //public String MqttCertPassword { get; set; } + #endregion + + #region 设备管理 + /// 令牌密钥。用于生成JWT令牌的算法和密钥,如HS256:ABCD1234 + [Description("令牌密钥。用于生成JWT令牌的算法和密钥,如HS256:ABCD1234")] + [Category("设备管理")] + public String TokenSecret { get; set; } + + /// 令牌有效期。默认2*3600秒 + [Description("令牌有效期。默认2*3600秒")] + [Category("设备管理")] + public Int32 TokenExpire { get; set; } = 2 * 3600; + + /// 会话超时。默认600秒 + [Description("会话超时。默认600秒")] + [Category("设备管理")] + public Int32 SessionTimeout { get; set; } = 600; + + /// 自动注册。允许客户端自动注册,默认true + [Description("自动注册。允许客户端自动注册,默认true")] + [Category("设备管理")] + public Boolean AutoRegister { get; set; } = true; + #endregion + + #region 数据存储 + /// 历史数据保留时间。默认30天 + [Description("历史数据保留时间。默认30天")] + [Category("数据存储")] + public Int32 DataRetention { get; set; } = 30; + #endregion + + #region 方法 + /// 加载时触发 + protected override void OnLoaded() + { + if (TokenSecret.IsNullOrEmpty() || TokenSecret.Split(':').Length != 2) TokenSecret = $"HS256:{Rand.NextString(16)}"; + + base.OnLoaded(); + } + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/IoTZero.csproj b/Samples/IoTZero/IoTZero.csproj index aa8edb3..6b553c9 100644 --- a/Samples/IoTZero/IoTZero.csproj +++ b/Samples/IoTZero/IoTZero.csproj @@ -18,59 +18,6 @@ latest - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PreserveNewest - - - @@ -83,27 +30,4 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Samples/IoTZero/Models/LoginInfo.cs b/Samples/IoTZero/Models/LoginInfo.cs new file mode 100644 index 0000000..9b98f11 --- /dev/null +++ b/Samples/IoTZero/Models/LoginInfo.cs @@ -0,0 +1,37 @@ +using System; + +namespace NewLife.IoT.Models +{ + /// 节点登录信息 + public class LoginInfo + { + #region 属性 + /// 设备编码 + public String Code { get; set; } + + /// 设备密钥 + public String Secret { get; set; } + + /// 产品证书 + public String ProductKey { get; set; } + + /// 产品密钥 + public String ProductSecret { get; set; } + + /// 名称。可用于标识设备的名称 + public String Name { get; set; } + + /// 版本 + public String Version { get; set; } + + /// 本地IP地址 + public String IP { get; set; } + + /// 唯一标识 + public String UUID { get; set; } + + /// 本地UTC时间 + public Int64 Time { get; set; } + #endregion + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Models/LoginResponse.cs b/Samples/IoTZero/Models/LoginResponse.cs new file mode 100644 index 0000000..4778d71 --- /dev/null +++ b/Samples/IoTZero/Models/LoginResponse.cs @@ -0,0 +1,34 @@ +using System; + +namespace NewLife.IoT.Models +{ + /// 设备登录响应 + public class LoginResponse + { + #region 属性 + /// 产品 + public String ProductKey { get; set; } + + /// 节点编码 + public String Code { get; set; } + + /// 节点密钥 + public String Secret { get; set; } + + /// 名称 + public String Name { get; set; } + + /// 令牌 + public String Token { get; set; } + + /// 服务器时间 + public Int64 Time { get; set; } + + ///// 设备通道 + //public String Channels { get; set; } + + /// 客户端唯一标识 + public String ClientId { get; set; } + #endregion + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Models/LogoutResponse.cs b/Samples/IoTZero/Models/LogoutResponse.cs new file mode 100644 index 0000000..b5aaca3 --- /dev/null +++ b/Samples/IoTZero/Models/LogoutResponse.cs @@ -0,0 +1,22 @@ +using System; + +namespace NewLife.IoT.Models +{ + /// 设备注销响应 + public class LogoutResponse + { + #region 属性 + /// 节点编码 + public String Code { get; set; } + + /// 节点密钥 + public String Secret { get; set; } + + /// 名称 + public String Name { get; set; } + + /// 令牌 + public String Token { get; set; } + #endregion + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Models/PingInfo.cs b/Samples/IoTZero/Models/PingInfo.cs new file mode 100644 index 0000000..d1b6c6b --- /dev/null +++ b/Samples/IoTZero/Models/PingInfo.cs @@ -0,0 +1,43 @@ +using System; + +namespace NewLife.IoT.Models +{ + /// 心跳信息 + public class PingInfo + { + #region 属性 + /// 内存大小 + public UInt64 Memory { get; set; } + + /// 可用内存大小 + public UInt64 AvailableMemory { get; set; } + + /// 磁盘大小。应用所在盘 + public UInt64 TotalSize { get; set; } + + /// 磁盘可用空间。应用所在盘 + public UInt64 AvailableFreeSpace { get; set; } + + /// CPU使用率 + public Single CpuRate { get; set; } + + /// 温度 + public Double Temperature { get; set; } + + /// 电量 + public Double Battery { get; set; } + + /// 本地IP + public String IP { get; set; } + + /// 开机时间,单位s + public Int32 Uptime { get; set; } + + /// 本地UTC时间。ms毫秒 + public Int64 Time { get; set; } + + /// 延迟。ms毫秒 + public Int32 Delay { get; set; } + #endregion + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Models/PingResponse.cs b/Samples/IoTZero/Models/PingResponse.cs new file mode 100644 index 0000000..ec717a5 --- /dev/null +++ b/Samples/IoTZero/Models/PingResponse.cs @@ -0,0 +1,21 @@ +using System; +using NewLife.IoT.ThingModels; + +namespace NewLife.IoT.Models +{ + /// 心跳响应 + public class PingResponse + { + /// 本地时间。ms毫秒 + public Int64 Time { get; set; } + + /// 服务器时间 + public Int64 ServerTime { get; set; } + + /// 心跳周期。单位秒 + public Int32 Period { get; set; } + + /// 令牌。现有令牌即将过期时,颁发新的令牌 + public String Token { get; set; } + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Models/ThingSpecModel.cs b/Samples/IoTZero/Models/ThingSpecModel.cs new file mode 100644 index 0000000..8c354f0 --- /dev/null +++ b/Samples/IoTZero/Models/ThingSpecModel.cs @@ -0,0 +1,13 @@ +using NewLife.IoT.ThingSpecification; + +namespace NewLife.IoT.Models; + +/// 物模型上报 +public class ThingSpecModel +{ + /// 设备编码 + public String DeviceCode { get; set; } + + /// 物模型 + public ThingSpec Spec { get; set; } +} diff --git a/Samples/IoTZero/Models/UpgradeInfo.cs b/Samples/IoTZero/Models/UpgradeInfo.cs new file mode 100644 index 0000000..29a56d6 --- /dev/null +++ b/Samples/IoTZero/Models/UpgradeInfo.cs @@ -0,0 +1,26 @@ +namespace NewLife.IoT.Models; + +/// 更新响应 +public class UpgradeInfo +{ + /// 版本号 + public String Version { get; set; } + + /// 更新源,Url地址 + public String Source { get; set; } + + /// 文件哈希 + public String FileHash { get; set; } + + /// 文件大小 + public Int64 FileSize { get; set; } + + /// 更新后要执行的命令 + public String Executor { get; set; } + + /// 是否强制更新,不需要用户同意 + public Boolean Force { get; set; } + + /// 描述 + public String Description { get; set; } +} \ No newline at end of file diff --git a/Samples/IoTZero/Program.cs b/Samples/IoTZero/Program.cs new file mode 100644 index 0000000..1b6d71b --- /dev/null +++ b/Samples/IoTZero/Program.cs @@ -0,0 +1,108 @@ +using IoTZero; +using IoTZero.Services; +using NewLife.Caching; +using NewLife.Cube; +using NewLife.Log; +using NewLife.Reflection; +using NewLife.Security; +using XCode; + +// 日志输出到控制台,并拦截全局异常 +XTrace.UseConsole(); + +var builder = WebApplication.CreateBuilder(args); +var services = builder.Services; + +// 配置星尘。借助StarAgent,或者读取配置文件 config/star.config 中的服务器地址、应用标识、密钥 +var star = services.AddStardust(null); + +// 把数据目录指向上层,例如部署到 /root/iot/edge/,这些目录放在 /root/iot/ +var set = NewLife.Setting.Current; +if (set.IsNew) +{ + set.LogPath = "../Log"; + set.DataPath = "../Data"; + set.BackupPath = "../Backup"; + set.Save(); +} +var set2 = CubeSetting.Current; +if (set2.IsNew) +{ + set2.AvatarPath = "../Avatars"; + set2.UploadPath = "../Uploads"; + set2.Save(); +} +var set3 = XCodeSetting.Current; +if (set3.IsNew) +{ + set3.ShowSQL = false; + set3.EntityCacheExpire = 60; + set3.SingleCacheExpire = 60; + set3.Save(); +} + +// 系统设置 +services.AddSingleton(IoTSetting.Current); + +// 逐个注册每一个用到的服务,必须做到清晰明了 +services.AddSingleton(new SaltPasswordProvider { Algorithm = "md5" }); + +services.AddSingleton(); +services.AddSingleton(); +services.AddSingleton(); +services.AddSingleton(); + +services.AddHttpClient("hc", e => e.Timeout = TimeSpan.FromSeconds(5)); + +services.AddSingleton(); + +// 后台服务 +services.AddHostedService(); +services.AddHostedService(); + +// 启用接口响应压缩 +services.AddResponseCompression(); + +services.AddControllersWithViews(); + +// 引入魔方 +services.AddCube(); + +var app = builder.Build(); + +// 预热数据层,执行反向工程建表等操作 +EntityFactory.InitConnection("Membership"); +EntityFactory.InitConnection("Log"); +EntityFactory.InitConnection("Cube"); +EntityFactory.InitConnection("IoT"); + +// 使用Cube前添加自己的管道 +if (app.Environment.IsDevelopment()) + app.UseDeveloperExceptionPage(); +else + app.UseExceptionHandler("/CubeHome/Error"); + +app.UseResponseCompression(); + +app.UseWebSockets(new WebSocketOptions() +{ + KeepAliveInterval = TimeSpan.FromSeconds(60), +}); + +// 使用魔方 +app.UseCube(app.Environment); + +app.UseAuthorization(); + +app.MapControllerRoute( + name: "default", + pattern: "{controller=CubeHome}/{action=Index}/{id?}"); + +app.RegisterService("AlarmServer", null, app.Environment.EnvironmentName); + +// 反射查找并调用客户端测试,该代码仅用于测试,实际项目中不要这样做 +var clientType = "IoTZero.Clients.ClientTest".GetTypeEx(); +var test = clientType?.GetMethodEx("Main").As>(); +if (test != null) _ = Task.Run(() => test(app.Services)); + +app.Run(); diff --git a/Samples/IoTZero/Services/DataService.cs b/Samples/IoTZero/Services/DataService.cs new file mode 100644 index 0000000..db92b39 --- /dev/null +++ b/Samples/IoTZero/Services/DataService.cs @@ -0,0 +1,77 @@ +using IoT.Data; +using NewLife; +using NewLife.IoT.ThingModels; +using NewLife.Log; + +namespace IoTZero.Services; + +/// 数据服务 +public class DataService +{ + private readonly ITracer _tracer; + + /// 实例化数据服务 + /// + public DataService(ITracer tracer) => _tracer = tracer; + + #region 方法 + /// + /// 插入设备原始数据,异步批量操作 + /// + /// 设备 + /// 传感器 + /// + /// + /// + /// + /// + /// + public DeviceData AddData(Int32 deviceId, Int32 sensorId, Int64 time, String name, String value, String kind, String ip) + { + if (value.IsNullOrEmpty()) return null; + + using var span = _tracer?.NewSpan("thing:AddData", new { deviceId, time, name, value }); + + /* + * 使用采集时间来生成雪花Id,数据存储序列即业务时间顺序。 + * 在历史数据查询和统计分析时,一马平川,再也不必考虑边界溢出问题。 + * 数据延迟上传可能会导致插入历史数据,从而影响蚂蚁实时计算,可通过补偿定时批计算修正。 + * 实际应用中,更多通过消息队列来驱动实时计算。 + */ + + // 取客户端采集时间,较大时间差时取本地时间 + var t = time.ToDateTime().ToLocalTime(); + if (t.Year < 2000 || t.AddDays(1) < DateTime.Now) t = DateTime.Now; + + var snow = DeviceData.Meta.Factory.Snow; + + var traceId = DefaultSpan.Current?.TraceId; + + var entity = new DeviceData + { + Id = snow.NewId(t, sensorId), + DeviceId = deviceId, + Name = name, + Value = value, + Kind = kind, + + Timestamp = time, + TraceId = traceId, + Creator = Environment.MachineName, + CreateTime = DateTime.Now, + CreateIP = ip, + }; + + var rs = entity.SaveAsync() ? 1 : 0; + + return entity; + } + + /// 添加事件 + /// + /// + /// + /// + public void AddEvent(Int32 deviceId, EventModel model, String ip) => throw new NotImplementedException(); + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/Services/DeviceOnlineService.cs b/Samples/IoTZero/Services/DeviceOnlineService.cs new file mode 100644 index 0000000..f69a407 --- /dev/null +++ b/Samples/IoTZero/Services/DeviceOnlineService.cs @@ -0,0 +1,102 @@ +using IoT.Data; +using NewLife; +using NewLife.Log; +using NewLife.Threading; + +namespace IoTZero.Services; + +/// 节点在线服务 +public class DeviceOnlineService : IHostedService +{ + #region 属性 + private TimerX _timer; + private readonly MyDeviceService _deviceService; + private readonly IoTSetting _setting; + private readonly ITracer _tracer; + #endregion + + #region 构造 + /// + /// 实例化节点在线服务 + /// + /// + /// + /// + public DeviceOnlineService(MyDeviceService deviceService, IoTSetting setting, ITracer tracer) + { + _deviceService = deviceService; + _setting = setting; + _tracer = tracer; + } + #endregion + + #region 方法 + /// + /// 开始服务 + /// + /// + /// + public Task StartAsync(CancellationToken cancellationToken) + { + _timer = new TimerX(CheckOnline, null, 5_000, 30_000) { Async = true }; + + return Task.CompletedTask; + } + + /// + /// 停止服务 + /// + /// + /// + public Task StopAsync(CancellationToken cancellationToken) + { + _timer.TryDispose(); + + return Task.CompletedTask; + } + + private void CheckOnline(Object state) + { + // 节点超时 + if (_setting.SessionTimeout > 0) + { + using var span = _tracer?.NewSpan(nameof(CheckOnline)); + + var rs = DeviceOnline.ClearExpire(TimeSpan.FromSeconds(_setting.SessionTimeout)); + if (rs != null) + { + foreach (var olt in rs) + { + var device = olt?.Device; + var msg = $"[{device}]登录于{olt.CreateTime.ToFullString()},最后活跃于{olt.UpdateTime.ToFullString()}"; + _deviceService.WriteHistory(device, "超时下线", true, msg, olt.CreateIP); + + _deviceService.RemoveOnline(olt.DeviceId, olt.CreateIP); + + if (device != null) + { + // 计算在线时长 + if (olt.CreateTime.Year > 2000 && olt.UpdateTime.Year > 2000) + { + device.OnlineTime += (Int32)(olt.UpdateTime - olt.CreateTime).TotalSeconds; + device.Logout(); + } + + CheckOffline(device, "超时下线"); + } + } + } + } + } + + /// + /// 检查离线 + /// + /// + /// + public static void CheckOffline(Device node, String reason) + { + //todo 下线告警 + } + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/Services/MyDeviceService.cs b/Samples/IoTZero/Services/MyDeviceService.cs new file mode 100644 index 0000000..f6ca961 --- /dev/null +++ b/Samples/IoTZero/Services/MyDeviceService.cs @@ -0,0 +1,404 @@ +using System.Reflection; +using IoT.Data; +using NewLife; +using NewLife.Caching; +using NewLife.IoT.Models; +using NewLife.Log; +using NewLife.Remoting; +using NewLife.Security; +using NewLife.Serialization; +using NewLife.Web; + +namespace IoTZero.Services; + +/// 设备服务 +public class MyDeviceService +{ + /// 节点引用,令牌无效时使用 + public Device Current { get; set; } + + private readonly ICache _cache; + private readonly IPasswordProvider _passwordProvider; + private readonly DataService _dataService; + private readonly IoTSetting _setting; + private readonly ITracer _tracer; + + /// + /// 实例化设备服务 + /// + /// + /// + /// + /// + /// + public MyDeviceService(IPasswordProvider passwordProvider, DataService dataService, ICacheProvider cacheProvider, IoTSetting setting, ITracer tracer) + { + _passwordProvider = passwordProvider; + _dataService = dataService; + _cache = cacheProvider.InnerCache; + _setting = setting; + _tracer = tracer; + } + + #region 登录 + /// + /// 设备登录验证,内部支持动态注册 + /// + /// 登录信息 + /// 登录来源 + /// 远程IP + /// + /// + public LoginResponse Login(LoginInfo inf, String source, String ip) + { + var code = inf.Code; + var secret = inf.Secret; + + var dv = Device.FindByCode(code); + Current = dv; + + var autoReg = false; + if (dv == null) + { + if (inf.ProductKey.IsNullOrEmpty()) throw new ApiException(98, "找不到设备,且产品证书为空,无法登录"); + + dv = AutoRegister(null, inf, ip); + autoReg = true; + } + else + { + if (!dv.Enable) throw new ApiException(99, "禁止登录"); + + // 校验唯一编码,防止客户端拷贝配置 + var uuid = inf.UUID; + if (!uuid.IsNullOrEmpty() && !dv.Uuid.IsNullOrEmpty() && uuid != dv.Uuid) + WriteHistory(dv, source + "登录校验", false, $"新旧唯一标识不一致!(新){uuid}!={dv.Uuid}(旧)", ip); + + // 登录密码未设置或者未提交,则执行动态注册 + if (dv == null || !dv.Secret.IsNullOrEmpty() + && (secret.IsNullOrEmpty() || !_passwordProvider.Verify(dv.Secret, secret))) + { + if (inf.ProductKey.IsNullOrEmpty()) throw new ApiException(98, "设备验证失败,且产品证书为空,无法登录"); + + dv = AutoRegister(dv, inf, ip); + autoReg = true; + } + } + + //if (dv != null && !dv.Enable) throw new ApiException(99, "禁止登录"); + + Current = dv ?? throw new ApiException(12, "节点鉴权失败"); + + dv.Login(inf, ip); + + // 设置令牌 + var tm = IssueToken(dv.Code, _setting); + + // 在线记录 + var olt = GetOnline(dv, ip) ?? CreateOnline(dv, ip); + olt.Save(inf, null, tm.AccessToken); + + //SetChildOnline(dv, ip); + + // 登录历史 + WriteHistory(dv, source + "设备鉴权", true, $"[{dv.Name}/{dv.Code}]鉴权成功 " + inf.ToJson(false, false, false), ip); + + var rs = new LoginResponse + { + Name = dv.Name, + Token = tm.AccessToken, + Time = DateTime.UtcNow.ToLong(), + }; + + // 动态注册的设备不可用时,不要发令牌,只发证书 + if (!dv.Enable) rs.Token = null; + + // 动态注册,下发节点证书 + if (autoReg) rs.Secret = dv.Secret; + + rs.Code = dv.Code; + + return rs; + } + + /// 设置设备在线,同时检查在线表 + /// + /// + /// + public void SetDeviceOnline(Device dv, String ip, String reason) + { + // 如果已上线,则不需要埋点 + var tracer = _tracer; + //if (dv.Online) tracer = null; + using var span = tracer?.NewSpan(nameof(SetDeviceOnline), new { dv.Name, dv.Code, ip, reason }); + + var olt = GetOnline(dv, ip) ?? CreateOnline(dv, ip); + + dv.SetOnline(ip, reason); + + // 避免频繁更新心跳数 + if (olt.UpdateTime.AddSeconds(60) < DateTime.Now) + olt.Save(null, null, null); + } + + /// 自动注册 + /// + /// + /// + /// + /// + public Device AutoRegister(Device device, LoginInfo inf, String ip) + { + // 全局开关,是否允许自动注册新产品 + if (!_setting.AutoRegister) throw new ApiException(12, "禁止自动注册"); + + // 验证产品,即使产品不给自动注册,也会插入一个禁用的设备 + var product = Product.FindByCode(inf.ProductKey); + if (product == null || !product.Enable) + throw new ApiException(13, $"无效产品[{inf.ProductKey}]!"); + //if (!product.Secret.IsNullOrEmpty() && !_passwordProvider.Verify(product.Secret, inf.ProductSecret)) + // throw new ApiException(13, $"非法产品[{product}]!"); + + //// 检查白名单 + //if (!product.IsMatchWhiteIP(ip)) throw new ApiException(13, "非法来源,禁止注册"); + + var code = inf.Code; + if (code.IsNullOrEmpty()) code = Rand.NextString(8); + + device ??= new Device + { + Code = code, + CreateIP = ip, + CreateTime = DateTime.Now, + Secret = Rand.NextString(8), + }; + + // 如果未打开动态注册,则把节点修改为禁用 + device.Enable = true; + + if (device.Name.IsNullOrEmpty()) device.Name = inf.Name; + + device.ProductId = product.Id; + //device.Secret = Rand.NextString(16); + device.UpdateIP = ip; + device.UpdateTime = DateTime.Now; + + device.Save(); + + // 更新产品设备总量避免界面无法及时获取设备数量信息 + device.Product.Fix(); + + WriteHistory(device, "动态注册", true, inf.ToJson(false, false, false), ip); + + return device; + } + + /// 注销 + /// 设备 + /// 注销原因 + /// 登录来源 + /// 远程IP + /// + public Device Logout(Device device, String reason, String source, String ip) + { + var olt = GetOnline(device, ip); + if (olt != null) + { + var msg = $"{reason} [{device}]]登录于{olt.CreateTime.ToFullString()},最后活跃于{olt.UpdateTime.ToFullString()}"; + WriteHistory(device, source + "设备下线", true, msg, ip); + olt.Delete(); + + var sid = $"{device.Id}@{ip}"; + _cache.Remove($"DeviceOnline:{sid}"); + + // 计算在线时长 + if (olt.CreateTime.Year > 2000) + { + device.OnlineTime += (Int32)(DateTime.Now - olt.CreateTime).TotalSeconds; + device.Logout(); + } + + //DeviceOnlineService.CheckOffline(device, "注销"); + } + + return device; + } + #endregion + + #region 心跳 + /// + /// 心跳 + /// + /// + /// + /// + /// + /// + public DeviceOnline Ping(Device device, PingInfo inf, String token, String ip) + { + if (inf != null && !inf.IP.IsNullOrEmpty()) device.IP = inf.IP; + + // 自动上线 + if (device != null && !device.Online) device.SetOnline(ip, "心跳"); + + device.UpdateIP = ip; + device.SaveAsync(); + + var olt = GetOnline(device, ip) ?? CreateOnline(device, ip); + olt.Name = device.Name; + olt.GroupPath = device.GroupPath; + olt.ProductId = device.ProductId; + olt.Save(null, inf, token); + + return olt; + } + + /// + /// + /// + /// + protected virtual DeviceOnline GetOnline(Device device, String ip) + { + var sid = $"{device.Id}@{ip}"; + var olt = _cache.Get($"DeviceOnline:{sid}"); + if (olt != null) + { + _cache.SetExpire($"DeviceOnline:{sid}", TimeSpan.FromSeconds(600)); + return olt; + } + + return DeviceOnline.FindBySessionId(sid); + } + + /// 检查在线 + /// + /// + /// + protected virtual DeviceOnline CreateOnline(Device device, String ip) + { + var sid = $"{device.Id}@{ip}"; + var olt = DeviceOnline.GetOrAdd(sid); + olt.ProductId = device.ProductId; + olt.DeviceId = device.Id; + olt.Name = device.Name; + olt.IP = device.IP; + olt.CreateIP = ip; + + olt.Creator = Environment.MachineName; + + _cache.Set($"DeviceOnline:{sid}", olt, 600); + + return olt; + } + + /// 删除在线 + /// + /// + /// + public Int32 RemoveOnline(Int32 deviceId, String ip) + { + var sid = $"{deviceId}@{ip}"; + + return _cache.Remove($"DeviceOnline:{sid}"); + } + #endregion + + #region 辅助 + /// + /// 颁发令牌 + /// + /// + /// + /// + public TokenModel IssueToken(String name, IoTSetting set) + { + // 颁发令牌 + var ss = set.TokenSecret.Split(':'); + var jwt = new JwtBuilder + { + Issuer = Assembly.GetEntryAssembly().GetName().Name, + Subject = name, + Id = Rand.NextString(8), + Expire = DateTime.Now.AddSeconds(set.TokenExpire), + + Algorithm = ss[0], + Secret = ss[1], + }; + + return new TokenModel + { + AccessToken = jwt.Encode(null), + TokenType = jwt.Type ?? "JWT", + ExpireIn = set.TokenExpire, + RefreshToken = jwt.Encode(null), + }; + } + + /// + /// 解码令牌,并验证有效性 + /// + /// + /// + /// + /// + public Device DecodeToken(String token, String tokenSecret) + { + //if (token.IsNullOrEmpty()) throw new ArgumentNullException(nameof(token)); + if (token.IsNullOrEmpty()) throw new ApiException(402, "节点未登录"); + + // 解码令牌 + var ss = tokenSecret.Split(':'); + var jwt = new JwtBuilder + { + Algorithm = ss[0], + Secret = ss[1], + }; + + var rs = jwt.TryDecode(token, out var message); + var node = Device.FindByCode(jwt.Subject); + Current = node; + if (!rs) throw new ApiException(403, $"非法访问 {message}"); + + return node; + } + + /// + /// 验证并颁发令牌 + /// + /// + /// + /// + public TokenModel ValidAndIssueToken(String deviceCode, String token) + { + if (token.IsNullOrEmpty()) return null; + + // 令牌有效期检查,10分钟内过期者,重新颁发令牌 + var ss = _setting.TokenSecret.Split(':'); + var jwt = new JwtBuilder + { + Algorithm = ss[0], + Secret = ss[1], + }; + var rs = jwt.TryDecode(token, out var message); + if (!rs || jwt == null) return null; + + if (DateTime.Now.AddMinutes(10) > jwt.Expire) return IssueToken(deviceCode, _setting); + + return null; + } + + /// + /// 写设备历史 + /// + /// + /// + /// + /// + /// + public void WriteHistory(Device device, String action, Boolean success, String remark, String ip) + { + var traceId = DefaultSpan.Current?.TraceId; + var hi = DeviceHistory.Create(device ?? Current, action, success, remark, Environment.MachineName, ip, traceId); + } + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/Services/QueueService.cs b/Samples/IoTZero/Services/QueueService.cs new file mode 100644 index 0000000..b6acae7 --- /dev/null +++ b/Samples/IoTZero/Services/QueueService.cs @@ -0,0 +1,69 @@ +using NewLife.Caching; +using NewLife.Caching.Queues; +using NewLife.IoT.ThingModels; +using NewLife.Log; +using NewLife.Serialization; + +namespace IoTZero.Services; + +/// 队列服务 +public class QueueService +{ + #region 属性 + private readonly ICacheProvider _cacheProvider; + private readonly ITracer _tracer; + #endregion + + #region 构造 + /// + /// 实例化队列服务 + /// + public QueueService(ICacheProvider cacheProvider, ITracer tracer) + { + _cacheProvider = cacheProvider; + _tracer = tracer; + } + #endregion + + #region 命令队列 + /// + /// 获取指定设备的命令队列 + /// + /// + /// + public IProducerConsumer GetQueue(String deviceCode) + { + var q = _cacheProvider.GetQueue($"cmd:{deviceCode}"); + if (q is QueueBase qb) qb.TraceName = "ServiceQueue"; + + return q; + } + + /// + /// 向指定设备发送命令 + /// + /// + /// + /// + public Int32 Publish(String deviceCode, ServiceModel model) + { + using var span = _tracer?.NewSpan(nameof(Publish), $"{deviceCode} {model.ToJson()}"); + + var q = GetQueue(deviceCode); + return q.Add(model.ToJson()); + } + + /// + /// 获取指定设备的服务响应队列 + /// + /// + /// + public IProducerConsumer GetReplyQueue(Int64 serviceLogId) => throw new NotImplementedException(); + + /// + /// 发送消息到服务响应队列 + /// + /// + public void PublishReply(ServiceReplyModel model) => throw new NotImplementedException(); + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/Services/ShardTableService.cs b/Samples/IoTZero/Services/ShardTableService.cs new file mode 100644 index 0000000..af8bc41 --- /dev/null +++ b/Samples/IoTZero/Services/ShardTableService.cs @@ -0,0 +1,115 @@ +using IoT.Data; +using NewLife; +using NewLife.Log; +using NewLife.Threading; +using XCode.DataAccessLayer; +using XCode.Shards; + +namespace IoTZero.Services; + +/// 分表管理 +public class ShardTableService : IHostedService +{ + private readonly IoTSetting _setting; + private readonly ITracer _tracer; + private TimerX _timer; + + /// + /// 实例化分表管理服务 + /// + /// + /// + public ShardTableService(IoTSetting setting, ITracer tracer) + { + _setting = setting; + _tracer = tracer; + } + + /// + /// 开始服务 + /// + /// + /// + public Task StartAsync(CancellationToken cancellationToken) + { + // 每小时执行 + _timer = new TimerX(DoShardTable, null, 5_000, 3600 * 1000) { Async = true }; + + return Task.CompletedTask; + } + + /// + /// 停止服务 + /// + /// + /// + public Task StopAsync(CancellationToken cancellationToken) + { + _timer.TryDispose(); + + return Task.CompletedTask; + } + + private void DoShardTable(Object state) + { + var set = _setting; + if (set.DataRetention <= 0) return; + + // 保留数据的起点 + var today = DateTime.Today; + var endday = today.AddDays(-set.DataRetention); + + XTrace.WriteLine("检查数据分表,保留数据起始日期:{0:yyyy-MM-dd}", endday); + + using var span = _tracer?.NewSpan("ShardTable", $"{endday.ToFullString()}"); + try + { + // 所有表 + var dal = DeviceData.Meta.Session.Dal; + var tnames = dal.Tables.Select(e => e.TableName).ToArray(); + var policy = DeviceData.Meta.ShardPolicy as TimeShardPolicy; + + // 删除旧数据 + for (var dt = today.AddYears(-1); dt < endday; dt = dt.AddDays(1)) + { + var name = policy.Shard(dt).TableName; + if (name.EqualIgnoreCase(tnames)) + { + try + { + dal.Execute($"Drop Table {name}"); + } + catch { } + } + } + + // 新建今天明天的表 + var ts = new List(); + { + var table = DeviceData.Meta.Table.DataTable.Clone() as IDataTable; + table.TableName = policy.Shard(today).TableName; + ts.Add(table); + } + { + var table = DeviceData.Meta.Table.DataTable.Clone() as IDataTable; + table.TableName = policy.Shard(today.AddDays(1)).TableName; + ts.Add(table); + } + + if (ts.Count > 0) + { + XTrace.WriteLine("创建或更新数据表[{0}]:{1}", ts.Count, ts.Join(",", e => e.TableName)); + + //dal.SetTables(ts.ToArray()); + dal.Db.CreateMetaData().SetTables(Migration.On, ts.ToArray()); + } + } + catch (Exception ex) + { + span?.SetError(ex, null); + throw; + } + + XTrace.WriteLine("检查数据表完成"); + } +} \ No newline at end of file diff --git a/Samples/IoTZero/Services/ThingService.cs b/Samples/IoTZero/Services/ThingService.cs new file mode 100644 index 0000000..48ba707 --- /dev/null +++ b/Samples/IoTZero/Services/ThingService.cs @@ -0,0 +1,302 @@ +using IoT.Data; +using NewLife; +using NewLife.Caching; +using NewLife.Data; +using NewLife.IoT.ThingModels; +using NewLife.Log; +using NewLife.Security; + +namespace IoTZero.Services; + +/// 物模型服务 +public class ThingService +{ + private readonly DataService _dataService; + private readonly QueueService _queueService; + private readonly MyDeviceService _deviceService; + private readonly ICacheProvider _cacheProvider; + private readonly IoTSetting _setting; + private readonly ITracer _tracer; + static Snowflake _snowflake = new(); + + /// + /// 实例化物模型服务 + /// + /// + /// + /// + /// + /// + /// + /// + /// + public ThingService(DataService dataService, QueueService queueService, MyDeviceService deviceService, ICacheProvider cacheProvider, IoTSetting setting, ITracer tracer) + { + _dataService = dataService; + _queueService = queueService; + _deviceService = deviceService; + _cacheProvider = cacheProvider; + _setting = setting; + _tracer = tracer; + } + + #region 数据存储 + /// 上报数据 + /// + /// + /// + /// + /// + public Int32 PostData(Device device, DataModels model, String kind, String ip) + { + var rs = 0; + foreach (var item in model.Items) + { + var property = BuildDataPoint(device, item.Name, item.Value, item.Time, ip); + if (property != null) + { + UpdateProperty(property); + + SaveHistory(device, property, item.Time, kind, ip); + + rs++; + } + } + + // 自动上线 + if (device != null) _deviceService.SetDeviceOnline(device, ip, kind); + + //todo 触发指定设备的联动策略 + + return rs; + } + + /// 设备属性上报 + /// 设备 + /// 属性名 + /// 数值 + /// 时间戳 + /// IP地址 + /// + public DeviceProperty BuildDataPoint(Device device, String name, Object value, Int64 timestamp, String ip) + { + using var span = _tracer?.NewSpan(nameof(BuildDataPoint), $"{device.Id}-{name}-{value}"); + + var entity = GetProperty(device, name); + if (entity == null) + { + var key = $"{device.Id}###{name}"; + entity = DeviceProperty.GetOrAdd(key, + k => DeviceProperty.FindByDeviceIdAndName(device.Id, name), + k => new DeviceProperty + { + DeviceId = device.Id, + Name = name, + NickName = name, + Enable = true, + + CreateTime = DateTime.Now, + CreateIP = ip + }); + } + + // 检查是否锁定 + if (!entity.Enable) + { + _tracer?.NewError($"{nameof(BuildDataPoint)}-NotEnable", new { name, entity.Enable }); + return null; + } + + //todo 检查数据是否越界 + + //todo 修正数字精度,小数点位数 + + entity.Name = name; + entity.Value = value?.ToString(); + + var now = DateTime.Now; + entity.TraceId = DefaultSpan.Current?.TraceId; + entity.UpdateTime = now; + entity.UpdateIP = ip; + + return entity; + } + + /// 更新属性 + /// + /// + public Boolean UpdateProperty(DeviceProperty property) + { + if (property == null) return false; + + //todo 如果短时间内数据没有变化(无脏数据),则不需要保存属性 + //var hasDirty = (property as IEntity).Dirtys[nameof(property.Value)]; + + // 新属性直接更新,其它异步更新 + if (property.Id == 0) + property.Insert(); + else + property.SaveAsync(); + + return true; + } + + /// 保存历史数据,写入属性表、数据表、分段数据表 + /// + /// + /// + /// + /// + public void SaveHistory(Device device, DeviceProperty property, Int64 timestamp, String kind, String ip) + { + using var span = _tracer?.NewSpan("thing:SaveHistory", new { deviceName = device.Name, property.Name, property.Value, property.Type }); + try + { + // 记录数据流水,使用经过处理的属性数值字段 + var id = 0L; + var data = _dataService.AddData(property.DeviceId, property.Id, timestamp, property.Name, property.Value, kind, ip); + if (data != null) id = data.Id; + + //todo 存储分段数据 + + //todo 推送队列 + } + catch (Exception ex) + { + span?.SetError(ex, property); + + throw; + } + } + + /// 获取设备属性对象,长时间缓存,便于加速属性保存 + /// + /// + /// + private DeviceProperty GetProperty(Device device, String name) + { + var key = $"DeviceProperty:{device.Id}:{name}"; + if (_cacheProvider.InnerCache.TryGetValue(key, out var property)) return property; + + using var span = _tracer?.NewSpan(nameof(GetProperty), $"{device.Id}-{name}"); + + //var entity = device.Properties.FirstOrDefault(e => e.Name.EqualIgnoreCase(name)); + var entity = DeviceProperty.FindByDeviceIdAndName(device.Id, name); + if (entity != null) + _cacheProvider.InnerCache.Set(key, entity, 600); + + return entity; + } + #endregion + + #region 属性功能 + /// 获取设备属性 + /// 设备 + /// 属性名集合 + /// + public PropertyModel[] GetProperty(Device device, String[] names) + { + var list = new List(); + foreach (var item in device.Properties) + { + // 转换得到的属性是只读,不会返回到设备端,可以人为取消只读,此时返回设备端。 + if (item.Enable && (names == null || names.Length == 0 || item.Name.EqualIgnoreCase(names))) + { + list.Add(new PropertyModel { Name = item.Name, Value = item.Value }); + + item.SaveAsync(); + } + } + + return list.ToArray(); + } + + /// 查询设备属性。应用端调用 + /// 设备编码 + /// 属性名集合 + /// + public PropertyModel[] QueryProperty(Device device, String[] names) + { + var list = new List(); + foreach (var item in device.Properties) + { + // 如果未指定属性名,则返回全部 + if (item.Enable && (names == null || names.Length == 0 || item.Name.EqualIgnoreCase(names))) + list.Add(new PropertyModel { Name = item.Name, Value = item.Value }); + } + + return list.ToArray(); + } + #endregion + + #region 事件 + /// 设备事件上报 + /// + /// + /// + /// + public Int32 PostEvent(Device device, EventModel[] events, String ip) => throw new NotImplementedException(); + + /// 设备事件上报 + /// + /// + /// + public void PostEvent(Device device, EventModel @event, String ip) => throw new NotImplementedException(); + #endregion + + #region 服务调用 + /// 调用服务 + /// + /// + /// + /// + /// + /// + public ServiceModel InvokeService(Device device, String command, String argument, DateTime expire) + { + var traceId = DefaultSpan.Current?.TraceId; + + var log = new ServiceModel + { + Id = Rand.Next(), + Name = command, + InputData = argument, + Expire = expire, + TraceId = traceId, + }; + + return log; + } + + ///// 服务响应 + ///// + ///// + ///// + ///// + //public DeviceServiceLog ServiceReply(Device device, ServiceReplyModel model) => throw new NotImplementedException(); + + /// 异步调用服务,并等待响应 + /// + /// + /// + /// + /// + /// + public async Task InvokeServiceAsync(Device device, String command, String argument, DateTime expire, Int32 timeout) + { + var model = InvokeService(device, command, argument, expire); + + _queueService.Publish(device.Code, model); + + var reply = new ServiceReplyModel { Id = model.Id }; + + // 挂起等待。借助redis队列,等待响应 + if (timeout > 1000) + { + throw new NotImplementedException(); + } + + return reply; + } + #endregion +} \ No newline at end of file diff --git a/Samples/IoTZero/appsettings.json b/Samples/IoTZero/appsettings.json new file mode 100644 index 0000000..4898adc --- /dev/null +++ b/Samples/IoTZero/appsettings.json @@ -0,0 +1,16 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*", + "Urls": "http://*:1880", + "ConnectionStrings": { + "IoT": "Data Source=..\\Data\\IoT.db;Provider=Sqlite", + "IoTData": "Data Source=..\\Data\\IoTData.db;ShowSql=false;Provider=Sqlite", + "Membership": "Data Source=..\\Data\\Membership.db;Provider=Sqlite" + } +} diff --git a/Samples/ZeroIoT b/Samples/ZeroIoT deleted file mode 160000 index a00ae3a..0000000 --- a/Samples/ZeroIoT +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a00ae3aa4d90c20a4cea76e216aa1e91cb5aa46c From d2f1b2ebcf6e2f19fa3de63cdd877c16671aa583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=A4=A7=E7=9F=B3=E5=A4=B4?= Date: Thu, 16 May 2024 00:11:31 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E7=AB=AFHttp=E8=BF=9E=E9=80=9A=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E9=80=9A=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/BaseController.cs | 13 +-- .../Common/OAuthController.cs | 58 +++++++++++-- .../Models/IAppInfo.cs | 25 ++++++ .../Models/IAppProvider.cs | 19 ----- .../NewLife.Remoting.Extensions.csproj | 2 +- .../Services/TokenService.cs | 83 ++----------------- NewLife.Remoting/NewLife.Remoting.csproj | 2 +- .../IoTZero/Controllers/DeviceController.cs | 13 ++- .../IoTZero/Controllers/ThingController.cs | 14 +++- Samples/IoTZero/IoTSetting.cs | 3 +- Samples/IoTZero/IoTZero.csproj | 10 +-- Samples/IoTZero/Program.cs | 78 +++++++++-------- Samples/Zero.RpcServer/Zero.RpcServer.csproj | 4 +- Test/Test.csproj | 2 +- XUnitTest/XUnitTest.csproj | 2 +- 15 files changed, 168 insertions(+), 160 deletions(-) create mode 100644 NewLife.Remoting.Extensions/Models/IAppInfo.cs delete mode 100644 NewLife.Remoting.Extensions/Models/IAppProvider.cs diff --git a/NewLife.Remoting.Extensions/Common/BaseController.cs b/NewLife.Remoting.Extensions/Common/BaseController.cs index ad5eb27..30c0a37 100644 --- a/NewLife.Remoting.Extensions/Common/BaseController.cs +++ b/NewLife.Remoting.Extensions/Common/BaseController.cs @@ -8,7 +8,6 @@ using NewLife.Remoting.Extensions.Services; using NewLife.Serialization; using NewLife.Web; -using static NewLife.Remoting.ApiHttpClient; using IWebFilter = Microsoft.AspNetCore.Mvc.Filters.IActionFilter; namespace NewLife.Remoting.Extensions; @@ -25,16 +24,13 @@ public abstract class BaseController : ControllerBase, IWebFilter /// 令牌 public String? Token { get; private set; } - /// 应用信息 - public IAppInfo App { get; set; } = null!; - /// 令牌对象 public JwtBuilder Jwt { get; set; } = null!; /// 用户主机 public String UserHost => HttpContext.GetUserHost(); - private IDictionary? _args; + private IDictionary? _args; private readonly TokenService _tokenService; private readonly ITokenSetting _setting; #endregion @@ -81,11 +77,10 @@ void IWebFilter.OnActionExecuting(ActionExecutingContext context) /// protected virtual Boolean OnAuthorize(String token) { - var (jwt, app) = _tokenService.DecodeToken(token, _setting.TokenSecret); - App = app; + var jwt = _tokenService.DecodeToken(token, _setting.TokenSecret); Jwt = jwt; - return app != null; + return jwt != null; } void IWebFilter.OnActionExecuted(ActionExecutedContext context) @@ -113,6 +108,6 @@ private void WriteError(Exception ex, ActionContext context) /// /// /// - protected virtual void WriteLog(String action, Boolean success, String message) => App.WriteLog(action, success, message, UserHost, Jwt?.Id); + protected virtual void WriteLog(String action, Boolean success, String message) => XTrace.WriteLine($"[{action}]{message}"); #endregion } \ No newline at end of file diff --git a/NewLife.Remoting.Extensions/Common/OAuthController.cs b/NewLife.Remoting.Extensions/Common/OAuthController.cs index ce9f5ad..fad21af 100644 --- a/NewLife.Remoting.Extensions/Common/OAuthController.cs +++ b/NewLife.Remoting.Extensions/Common/OAuthController.cs @@ -8,13 +8,14 @@ namespace NewLife.Remoting.Extensions; /// OAuth服务。向应用提供验证服务 [Route("[controller]/[action]")] -public class OAuthController : ControllerBase +public abstract class OAuthController : ControllerBase where TApp : IAppInfo { private readonly TokenService _tokenService; private readonly ITokenSetting _setting; /// 实例化 /// + /// public OAuthController(TokenService tokenService, ITokenSetting setting) { _tokenService = tokenService; @@ -40,7 +41,9 @@ public TokenModel Token([FromBody] TokenInModel model) // 密码模式 if (model.grant_type == "password") { - var app = _tokenService.Authorize(model.UserName, model.Password, set.AutoRegister, ip); + if (model.UserName.IsNullOrEmpty()) throw new ArgumentNullException(nameof(model.UserName)); + + var app = Authorize(model.UserName, model.Password, set.AutoRegister, ip); var tokenModel = _tokenService.IssueToken(app.Name, set.TokenSecret, set.TokenExpire, clientId); @@ -51,12 +54,14 @@ public TokenModel Token([FromBody] TokenInModel model) // 刷新令牌 else if (model.grant_type == "refresh_token") { + if (model.refresh_token.IsNullOrEmpty()) throw new ArgumentNullException(nameof(model.refresh_token)); + var (jwt, ex) = _tokenService.DecodeTokenWithError(model.refresh_token, set.TokenSecret); // 验证应用 - var app = _tokenService.Provider.FindByName(jwt?.Subject); + var app = FindByName(jwt?.Subject); if (app == null || !app.Enable) - ex ??= new ApiException(403, $"无效应用[{jwt.Subject}]"); + ex ??= new ApiException(ApiCode.Forbidden, $"无效应用[{jwt.Subject}]"); if (clientId.IsNullOrEmpty()) clientId = jwt.Id; @@ -77,13 +82,48 @@ public TokenModel Token([FromBody] TokenInModel model) } catch (Exception ex) { - var app = _tokenService.Provider.FindByName(model.UserName); + var app = FindByName(model.UserName!); app?.WriteLog("Authorize", false, ex.ToString(), ip, clientId); throw; } } + /// 验证应用密码,不存在时新增 + /// + /// + /// + /// + /// + protected TApp Authorize(String username, String? password, Boolean autoRegister, String? ip = null) + { + if (username.IsNullOrEmpty()) throw new ArgumentNullException(nameof(username)); + //if (password.IsNullOrEmpty()) throw new ArgumentNullException(nameof(password)); + + // 查找应用 + var app = FindByName(username); + // 查找或创建应用,避免多线程创建冲突 + app ??= Register(username, password, autoRegister, ip); + if (app == null) throw new ApiException(ApiCode.NotFound, $"[{username}]无效!"); + + //// 检查黑白名单 + //if (!app.ValidSource(ip)) + // throw new ApiException(ApiCode.Forbidden, $"应用[{username}]禁止{ip}访问!"); + + // 检查应用有效性 + if (!app.Enable) throw new ApiException(ApiCode.Forbidden, $"[{username}]已禁用!"); + //if (!app.Secret.IsNullOrEmpty() && password != app.Secret) throw new ApiException(401, $"非法访问应用[{username}]!"); + if (!OnAuthorize(app, password, ip)) throw new ApiException(ApiCode.Unauthorized, $"非法访问[{username}]!"); + + return app; + } + + protected abstract TApp FindByName(String username); + + protected abstract TApp Register(String username, String? password, Boolean autoRegister, String? ip = null); + + protected abstract Boolean OnAuthorize(TApp app, String? password, String? ip = null); + /// 根据令牌获取应用信息,同时也是验证令牌是否有效 /// /// @@ -91,19 +131,21 @@ public TokenModel Token([FromBody] TokenInModel model) public Object Info(String token) { var set = _setting; - var (_, app) = _tokenService.DecodeToken(token, set.TokenSecret); + var jwt = _tokenService.DecodeToken(token, set.TokenSecret); + var name = jwt?.Subject; + var app = name.IsNullOrEmpty() ? default : FindByName(name); if (app is IModel model) return new { Id = model["Id"], - app.Name, + Name = name, DisplayName = model["DisplayName"], Category = model["Category"], }; else return new { - app.Name, + Name = name, }; } } \ No newline at end of file diff --git a/NewLife.Remoting.Extensions/Models/IAppInfo.cs b/NewLife.Remoting.Extensions/Models/IAppInfo.cs new file mode 100644 index 0000000..89320f0 --- /dev/null +++ b/NewLife.Remoting.Extensions/Models/IAppInfo.cs @@ -0,0 +1,25 @@ +namespace NewLife.Remoting.Extensions.Models; + +/// 应用信息接口 +public interface IAppInfo +{ + /// 名称 + String Name { get; } + + /// 启用 + Boolean Enable { get; } + + /// 验证授权 + /// + /// + /// + Boolean Authorize(String? password, String? ip = null); + + /// 写日志 + /// + /// + /// + /// + /// + void WriteLog(String action, Boolean success, String message, String? ip, String? clientId); +} \ No newline at end of file diff --git a/NewLife.Remoting.Extensions/Models/IAppProvider.cs b/NewLife.Remoting.Extensions/Models/IAppProvider.cs deleted file mode 100644 index 94ccf37..0000000 --- a/NewLife.Remoting.Extensions/Models/IAppProvider.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace NewLife.Remoting.Extensions.Models; - -public interface IAppInfo -{ - String Name { get; } - - Boolean Enable { get; } - - Boolean Authorize(String password, String? ip = null); - - void WriteLog(String action, Boolean success, String message, String? ip, String? clientId); -} - -public interface IAppProvider -{ - IAppInfo? FindByName(String? name); - - IAppInfo? Register(String username, String password, Boolean autoRegister, String? ip = null); -} diff --git a/NewLife.Remoting.Extensions/NewLife.Remoting.Extensions.csproj b/NewLife.Remoting.Extensions/NewLife.Remoting.Extensions.csproj index e0cb246..1c49381 100644 --- a/NewLife.Remoting.Extensions/NewLife.Remoting.Extensions.csproj +++ b/NewLife.Remoting.Extensions/NewLife.Remoting.Extensions.csproj @@ -2,7 +2,7 @@ Library - net5.0;net6.0;net7.0;net8.0 + net6.0;net7.0;net8.0 RPC服务扩展 RPC远程过程调用,二进制封装,提供高吞吐低延迟的高性能RPC框架 新生命开发团队 diff --git a/NewLife.Remoting.Extensions/Services/TokenService.cs b/NewLife.Remoting.Extensions/Services/TokenService.cs index 102da2d..8fa6795 100644 --- a/NewLife.Remoting.Extensions/Services/TokenService.cs +++ b/NewLife.Remoting.Extensions/Services/TokenService.cs @@ -1,5 +1,4 @@ using System.Reflection; -using NewLife.Remoting.Extensions.Models; using NewLife.Security; using NewLife.Web; @@ -8,44 +7,11 @@ namespace NewLife.Remoting.Extensions.Services; /// 应用服务 public class TokenService { - #region 公共 - /// 应用信息提供者 - public IAppProvider? Provider { get; set; } - #endregion - - /// 验证应用密码,不存在时新增 - /// - /// - /// - /// - /// - public IAppInfo Authorize(String username, String password, Boolean autoRegister, String? ip = null) - { - if (username.IsNullOrEmpty()) throw new ArgumentNullException(nameof(username)); - //if (password.IsNullOrEmpty()) throw new ArgumentNullException(nameof(password)); - if (Provider == null) throw new ArgumentNullException(nameof(Provider)); - - // 查找应用 - var app = Provider.FindByName(username); - // 查找或创建应用,避免多线程创建冲突 - app ??= Provider.Register(username, password, autoRegister, ip); - - //// 检查黑白名单 - //if (!app.ValidSource(ip)) - // throw new ApiException(403, $"应用[{username}]禁止{ip}访问!"); - - // 检查应用有效性 - if (!app.Enable) throw new ApiException(403, $"应用[{username}]已禁用!"); - //if (!app.Secret.IsNullOrEmpty() && password != app.Secret) throw new ApiException(401, $"非法访问应用[{username}]!"); - if (!app.Authorize(password, ip)) throw new ApiException(401, $"非法访问应用[{username}]!"); - - return app; - } - /// 颁发令牌 /// /// /// + /// /// public TokenModel IssueToken(String name, String secret, Int32 expire, String? id = null) { @@ -55,7 +21,7 @@ public TokenModel IssueToken(String name, String secret, Int32 expire, String? i var ss = secret.Split(':'); var jwt = new JwtBuilder { - Issuer = Assembly.GetEntryAssembly().GetName().Name, + Issuer = Assembly.GetEntryAssembly()?.GetName().Name, Subject = name, Id = id, Expire = DateTime.Now.AddSeconds(expire), @@ -66,10 +32,10 @@ public TokenModel IssueToken(String name, String secret, Int32 expire, String? i return new TokenModel { - AccessToken = jwt.Encode(null), + AccessToken = jwt.Encode(null!), TokenType = jwt.Type ?? "JWT", ExpireIn = expire, - RefreshToken = jwt.Encode(null), + RefreshToken = jwt.Encode(null!), }; } @@ -112,7 +78,7 @@ public TokenModel IssueToken(String name, String secret, Int32 expire, String? i }; Exception? ex = null; - if (!jwt.TryDecode(token, out var message)) ex = new ApiException(403, $"[{jwt.Subject}]非法访问 {message}"); + if (!jwt.TryDecode(token, out var message)) ex = new ApiException(ApiCode.Forbidden, $"[{jwt.Subject}]非法访问 {message}"); return (jwt, ex); } @@ -121,10 +87,9 @@ public TokenModel IssueToken(String name, String secret, Int32 expire, String? i /// /// /// - public (JwtBuilder, IAppInfo) DecodeToken(String token, String tokenSecret) + public JwtBuilder DecodeToken(String token, String tokenSecret) { if (token.IsNullOrEmpty()) throw new ArgumentNullException(nameof(token)); - if (Provider == null) throw new ArgumentNullException(nameof(Provider)); // 解码令牌 var ss = tokenSecret.Split(':'); @@ -134,40 +99,8 @@ public TokenModel IssueToken(String name, String secret, Int32 expire, String? i Secret = ss[1], }; if (!jwt.TryDecode(token, out var message) || jwt.Subject.IsNullOrEmpty()) - throw new ApiException(403, $"非法访问[{jwt.Subject}],{message}"); - - // 验证应用 - var app = Provider.FindByName(jwt.Subject) - ?? throw new ApiException(403, $"无效应用[{jwt.Subject}]"); - if (!app.Enable) throw new ApiException(403, $"已停用应用[{jwt.Subject}]"); - - return (jwt, app); - } - - /// 解码令牌 - /// - /// - /// - public (IAppInfo?, Exception?) TryDecodeToken(String token, String tokenSecret) - { - if (token.IsNullOrEmpty()) throw new ArgumentNullException(nameof(token)); - if (Provider == null) throw new ArgumentNullException(nameof(Provider)); - - // 解码令牌 - var ss = tokenSecret.Split(':'); - var jwt = new JwtBuilder - { - Algorithm = ss[0], - Secret = ss[1], - }; - - Exception? ex = null; - if (!jwt.TryDecode(token, out var message)) ex = new ApiException(403, $"非法访问 {message}"); - - // 验证应用 - var app = Provider.FindByName(jwt.Subject); - if ((app == null || !app.Enable) && ex == null) ex = new ApiException(401, $"无效应用[{jwt.Subject}]"); + throw new ApiException(ApiCode.Forbidden, $"非法访问[{jwt.Subject}],{message}"); - return (app, ex); + return jwt; } } \ No newline at end of file diff --git a/NewLife.Remoting/NewLife.Remoting.csproj b/NewLife.Remoting/NewLife.Remoting.csproj index 7631dd6..cd36604 100644 --- a/NewLife.Remoting/NewLife.Remoting.csproj +++ b/NewLife.Remoting/NewLife.Remoting.csproj @@ -50,7 +50,7 @@ - + diff --git a/Samples/IoTZero/Controllers/DeviceController.cs b/Samples/IoTZero/Controllers/DeviceController.cs index e4481fe..31242b7 100644 --- a/Samples/IoTZero/Controllers/DeviceController.cs +++ b/Samples/IoTZero/Controllers/DeviceController.cs @@ -20,7 +20,7 @@ namespace IoTZero.Controllers; public class DeviceController : BaseController { /// 当前设备 - public Device Device => App as Device; + public Device Device { get; set; } private readonly QueueService _queue; private readonly MyDeviceService _deviceService; @@ -42,6 +42,17 @@ public DeviceController(IServiceProvider serviceProvider, QueueService queue, My _tracer = tracer; } + protected override Boolean OnAuthorize(String token) + { + if (!base.OnAuthorize(token) || Jwt == null) return false; + + var dv = Device.FindByCode(Jwt.Subject); + if (dv == null || !dv.Enable) throw new ApiException(ApiCode.Forbidden, "无效设备!"); + + Device = dv; + + return true; + } #endregion #region 登录 diff --git a/Samples/IoTZero/Controllers/ThingController.cs b/Samples/IoTZero/Controllers/ThingController.cs index 725f14b..77011a1 100644 --- a/Samples/IoTZero/Controllers/ThingController.cs +++ b/Samples/IoTZero/Controllers/ThingController.cs @@ -5,6 +5,7 @@ using NewLife.IoT.Models; using NewLife.IoT.ThingModels; using NewLife.IoT.ThingSpecification; +using NewLife.Remoting; using NewLife.Remoting.Extensions; namespace IoTZero.Controllers; @@ -16,7 +17,7 @@ namespace IoTZero.Controllers; public class ThingController : BaseController { /// 当前设备 - public Device Device => App as Device; + public Device Device { get; set; } private readonly QueueService _queue; private readonly ThingService _thingService; @@ -32,6 +33,17 @@ public ThingController(IServiceProvider serviceProvider, QueueService queue, Thi _thingService = thingService; } + protected override Boolean OnAuthorize(String token) + { + if (!base.OnAuthorize(token) || Jwt == null) return false; + + var dv = Device.FindByCode(Jwt.Subject); + if (dv == null || !dv.Enable) throw new ApiException(ApiCode.Forbidden, "无效设备!"); + + Device = dv; + + return true; + } #endregion #region 设备属性 diff --git a/Samples/IoTZero/IoTSetting.cs b/Samples/IoTZero/IoTSetting.cs index 988b3d7..4d34d69 100644 --- a/Samples/IoTZero/IoTSetting.cs +++ b/Samples/IoTZero/IoTSetting.cs @@ -1,6 +1,7 @@ using System.ComponentModel; using NewLife; using NewLife.Configuration; +using NewLife.Remoting.Extensions.Models; using NewLife.Security; using XCode.Configuration; @@ -8,7 +9,7 @@ namespace IoTZero; /// 配置 [Config("IoTZero")] -public class IoTSetting : Config +public class IoTSetting : Config, ITokenSetting { #region 静态 static IoTSetting() => Provider = new DbConfigProvider { UserId = 0, Category = "IoTServer" }; diff --git a/Samples/IoTZero/IoTZero.csproj b/Samples/IoTZero/IoTZero.csproj index 6b553c9..8de791f 100644 --- a/Samples/IoTZero/IoTZero.csproj +++ b/Samples/IoTZero/IoTZero.csproj @@ -19,11 +19,11 @@ - - - - - + + + + + diff --git a/Samples/IoTZero/Program.cs b/Samples/IoTZero/Program.cs index 1b6d71b..3050729 100644 --- a/Samples/IoTZero/Program.cs +++ b/Samples/IoTZero/Program.cs @@ -4,6 +4,8 @@ using NewLife.Cube; using NewLife.Log; using NewLife.Reflection; +using NewLife.Remoting.Extensions.Models; +using NewLife.Remoting.Extensions.Services; using NewLife.Security; using XCode; @@ -13,45 +15,28 @@ var builder = WebApplication.CreateBuilder(args); var services = builder.Services; +InitConfig(); + // 配置星尘。借助StarAgent,或者读取配置文件 config/star.config 中的服务器地址、应用标识、密钥 var star = services.AddStardust(null); -// 把数据目录指向上层,例如部署到 /root/iot/edge/,这些目录放在 /root/iot/ -var set = NewLife.Setting.Current; -if (set.IsNew) -{ - set.LogPath = "../Log"; - set.DataPath = "../Data"; - set.BackupPath = "../Backup"; - set.Save(); -} -var set2 = CubeSetting.Current; -if (set2.IsNew) -{ - set2.AvatarPath = "../Avatars"; - set2.UploadPath = "../Uploads"; - set2.Save(); -} -var set3 = XCodeSetting.Current; -if (set3.IsNew) -{ - set3.ShowSQL = false; - set3.EntityCacheExpire = 60; - set3.SingleCacheExpire = 60; - set3.Save(); -} - // 系统设置 -services.AddSingleton(IoTSetting.Current); +var set = IoTSetting.Current; +services.AddSingleton(set); // 逐个注册每一个用到的服务,必须做到清晰明了 -services.AddSingleton(new SaltPasswordProvider { Algorithm = "md5" }); - services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); +// 注册Remoting所必须的服务 +services.AddSingleton(); +services.AddSingleton(set); + +// 注册密码提供者,用于通信过程中保护密钥,避免明文传输 +services.AddSingleton(new SaltPasswordProvider { Algorithm = "md5", SaltTime = 60 }); + services.AddHttpClient("hc", e => e.Timeout = TimeSpan.FromSeconds(5)); services.AddSingleton(); @@ -70,19 +55,14 @@ var app = builder.Build(); -// 预热数据层,执行反向工程建表等操作 -EntityFactory.InitConnection("Membership"); -EntityFactory.InitConnection("Log"); -EntityFactory.InitConnection("Cube"); -EntityFactory.InitConnection("IoT"); - // 使用Cube前添加自己的管道 if (app.Environment.IsDevelopment()) app.UseDeveloperExceptionPage(); else app.UseExceptionHandler("/CubeHome/Error"); -app.UseResponseCompression(); +if (Environment.GetEnvironmentVariable("__ASPNETCORE_BROWSER_TOOLS") is null) + app.UseResponseCompression(); app.UseWebSockets(new WebSocketOptions() { @@ -106,3 +86,31 @@ if (test != null) _ = Task.Run(() => test(app.Services)); app.Run(); + +void InitConfig() +{ + // 把数据目录指向上层,例如部署到 /root/iot/edge/,这些目录放在 /root/iot/ + var set = NewLife.Setting.Current; + if (set.IsNew) + { + set.LogPath = "../Log"; + set.DataPath = "../Data"; + set.BackupPath = "../Backup"; + set.Save(); + } + var set2 = CubeSetting.Current; + if (set2.IsNew) + { + set2.AvatarPath = "../Avatars"; + set2.UploadPath = "../Uploads"; + set2.Save(); + } + var set3 = XCodeSetting.Current; + if (set3.IsNew) + { + set3.ShowSQL = false; + set3.EntityCacheExpire = 60; + set3.SingleCacheExpire = 60; + set3.Save(); + } +} \ No newline at end of file diff --git a/Samples/Zero.RpcServer/Zero.RpcServer.csproj b/Samples/Zero.RpcServer/Zero.RpcServer.csproj index b6ff9b9..a3622f8 100644 --- a/Samples/Zero.RpcServer/Zero.RpcServer.csproj +++ b/Samples/Zero.RpcServer/Zero.RpcServer.csproj @@ -20,9 +20,9 @@ - + - + diff --git a/Test/Test.csproj b/Test/Test.csproj index a018cd7..ff270fe 100644 --- a/Test/Test.csproj +++ b/Test/Test.csproj @@ -10,7 +10,7 @@ - + diff --git a/XUnitTest/XUnitTest.csproj b/XUnitTest/XUnitTest.csproj index debf0aa..d34a408 100644 --- a/XUnitTest/XUnitTest.csproj +++ b/XUnitTest/XUnitTest.csproj @@ -12,7 +12,7 @@ - + From 31f07624d9763d5e13d8cac8d66090b388a72b2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=A4=A7=E7=9F=B3=E5=A4=B4?= Date: Thu, 16 May 2024 23:26:43 +0800 Subject: [PATCH 3/5] =?UTF-8?q?[fix]=E4=BF=AE=E6=AD=A3websockt=E8=B0=83?= =?UTF-8?q?=E7=94=A8ApiServer=E6=8E=A5=E5=8F=A3=E6=97=B6=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=BF=9E=E7=BB=AD=E8=AF=B7=E6=B1=82=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NewLife.Remoting/ApiMessage.cs | 4 ++++ NewLife.Remoting/Http/WebSocketServerCodec.cs | 6 ++++-- NewLife.Remoting/NewLife.Remoting.csproj | 2 +- Samples/Zero.RpcServer/Program.cs | 7 ++----- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/NewLife.Remoting/ApiMessage.cs b/NewLife.Remoting/ApiMessage.cs index 90cb6dd..bbe6986 100644 --- a/NewLife.Remoting/ApiMessage.cs +++ b/NewLife.Remoting/ApiMessage.cs @@ -13,4 +13,8 @@ public class ApiMessage /// 数据。请求参数或响应内容 public Packet? Data { get; set; } + + /// 已重载。友好表示该消息 + /// + public override String ToString() => Code > 0 ? $"{Action}[{Code}]" : Action; } \ No newline at end of file diff --git a/NewLife.Remoting/Http/WebSocketServerCodec.cs b/NewLife.Remoting/Http/WebSocketServerCodec.cs index ee0b247..375520d 100644 --- a/NewLife.Remoting/Http/WebSocketServerCodec.cs +++ b/NewLife.Remoting/Http/WebSocketServerCodec.cs @@ -71,8 +71,10 @@ public override Boolean Close(IHandlerContext context, String reason) var msg = new WebSocketMessage(); if (msg.Read(pk)) message = msg.Payload; } - - ss["isWs"] = false; + else + { + ss["isWs"] = false; + } return base.Read(context, message); } diff --git a/NewLife.Remoting/NewLife.Remoting.csproj b/NewLife.Remoting/NewLife.Remoting.csproj index cd36604..65731fb 100644 --- a/NewLife.Remoting/NewLife.Remoting.csproj +++ b/NewLife.Remoting/NewLife.Remoting.csproj @@ -1,6 +1,6 @@  - net45;net461;netstandard2.0;netstandard2.1;net5.0;net6.0;net7.0;net8.0 + net45;net461;netstandard2.0;netstandard2.1 RPC远程过程调用 RPC远程过程调用,二进制封装,提供高吞吐低延迟的高性能RPC框架 新生命开发团队 diff --git a/Samples/Zero.RpcServer/Program.cs b/Samples/Zero.RpcServer/Program.cs index 36b2472..a6b5fe0 100644 --- a/Samples/Zero.RpcServer/Program.cs +++ b/Samples/Zero.RpcServer/Program.cs @@ -1,8 +1,5 @@ -using System.Diagnostics; -using NewLife; -using NewLife.Caching; +using NewLife.Caching; using NewLife.Caching.Services; -using NewLife.Configuration; using NewLife.Log; using NewLife.Model; using NewLife.Remoting; @@ -23,7 +20,7 @@ // 引入Redis,用于消息队列和缓存,单例,带性能跟踪。一般使用上面的ICacheProvider替代 //services.AddRedis("127.0.0.1:6379", "123456", 3, 5000); -var port = 12345; +var port = 8080; // 实例化RPC服务端,指定端口,同时在Tcp/Udp/IPv4/IPv6上监听 var server = new ApiServer(port) From 6b4714391ae81887cf0ffa89631551a97037b082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=A4=A7=E7=9F=B3=E5=A4=B4?= Date: Fri, 17 May 2024 00:18:00 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E5=9F=BA=E7=B1=BB=E6=9D=A5=E7=AE=80=E5=8C=96IoT?= =?UTF-8?q?=E7=9A=84Http=E5=AE=A2=E6=88=B7=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NewLife.Remoting/Clients/ClientBase.cs | 2 +- NewLife.Remoting/Clients/HttpClientBase.cs | 34 ++- NewLife.Remoting/IApiHandler.cs | 4 +- NewLife.Remoting/NewLife.Remoting.csproj | 2 +- NewLife.Remoting/Services/ICommandClient.cs | 3 +- Samples/IoTZero/Clients/ClientTest.cs | 2 +- Samples/IoTZero/Clients/HttpDevice.cs | 282 +++--------------- .../IoTZero/Controllers/DeviceController.cs | 2 +- Samples/IoTZero/Models/LoginInfo.cs | 51 ++-- Samples/IoTZero/Models/PingInfo.cs | 59 ++-- Samples/IoTZero/Services/MyDeviceService.cs | 10 +- 11 files changed, 129 insertions(+), 322 deletions(-) diff --git a/NewLife.Remoting/Clients/ClientBase.cs b/NewLife.Remoting/Clients/ClientBase.cs index aaf0ff2..e7b16a0 100644 --- a/NewLife.Remoting/Clients/ClientBase.cs +++ b/NewLife.Remoting/Clients/ClientBase.cs @@ -329,7 +329,7 @@ public virtual LoginRequest BuildLoginRequest() } /// 获取心跳信息 - public PingRequest BuildPingRequest() + public virtual PingRequest BuildPingRequest() { var request = new PingRequest { diff --git a/NewLife.Remoting/Clients/HttpClientBase.cs b/NewLife.Remoting/Clients/HttpClientBase.cs index 2a1736c..1807c36 100644 --- a/NewLife.Remoting/Clients/HttpClientBase.cs +++ b/NewLife.Remoting/Clients/HttpClientBase.cs @@ -1,10 +1,9 @@ -using NewLife.Caching; +using System.Diagnostics.CodeAnalysis; +using NewLife.Caching; using NewLife.Log; using NewLife.Remoting.Models; using NewLife.Threading; using NewLife.Serialization; -using System.Net.Http; -using System.Diagnostics.CodeAnalysis; #if NETCOREAPP using System.Net.WebSockets; @@ -50,6 +49,11 @@ public HttpClientBase(String urls) : this() } } } + + /// 新增服务点 + /// + /// + public void AddService(String name, String url) => _client.Add(name, new Uri(url)); #endregion #region 方法 @@ -232,14 +236,7 @@ private async Task DoPull(WebSocket socket, CancellationToken cancellationToken) { var data = await socket.ReceiveAsync(new ArraySegment(buf), cancellationToken); var txt = buf.ToStr(null, 0, data.Count); - if (txt.StartsWithIgnoreCase("Pong")) - { - } - else - { - var model = txt.ToJsonEntity(); - if (model != null) await ReceiveCommand(model); - } + await OnReceive(txt); } } catch (Exception ex) @@ -251,6 +248,21 @@ private async Task DoPull(WebSocket socket, CancellationToken cancellationToken) } #endif + /// 收到服务端主动下发消息。默认转为CommandModel命令处理 + /// + /// + protected virtual async Task OnReceive(String message) + { + if (message.StartsWithIgnoreCase("Pong")) + { + } + else + { + var model = message.ToJsonEntity(); + if (model != null) await ReceiveCommand(model); + } + } + async Task ReceiveCommand(CommandModel model) { if (model == null) return; diff --git a/NewLife.Remoting/IApiHandler.cs b/NewLife.Remoting/IApiHandler.cs index e20fd8c..233fd77 100644 --- a/NewLife.Remoting/IApiHandler.cs +++ b/NewLife.Remoting/IApiHandler.cs @@ -46,10 +46,10 @@ public class ApiHandler : IApiHandler if (action.IsNullOrEmpty()) action = "Api/Info"; var manager = (Host as ApiServer)?.Manager; - var api = manager?.Find(action) ?? throw new ApiException(404, $"无法找到名为[{action}]的服务!"); + var api = manager?.Find(action) ?? throw new ApiException(ApiCode.NotFound, $"无法找到名为[{action}]的服务!"); // 全局共用控制器,或者每次创建对象实例 - var controller = manager.CreateController(api) ?? throw new ApiException(403, $"无法创建名为[{api.Name}]的服务!"); + var controller = manager.CreateController(api) ?? throw new ApiException(ApiCode.Forbidden, $"无法创建名为[{api.Name}]的服务!"); if (controller is IApi capi) capi.Session = session; if (session is INetSession ss) api.LastSession = ss.Remote + ""; diff --git a/NewLife.Remoting/NewLife.Remoting.csproj b/NewLife.Remoting/NewLife.Remoting.csproj index 65731fb..cd36604 100644 --- a/NewLife.Remoting/NewLife.Remoting.csproj +++ b/NewLife.Remoting/NewLife.Remoting.csproj @@ -1,6 +1,6 @@  - net45;net461;netstandard2.0;netstandard2.1 + net45;net461;netstandard2.0;netstandard2.1;net5.0;net6.0;net7.0;net8.0 RPC远程过程调用 RPC远程过程调用,二进制封装,提供高吞吐低延迟的高性能RPC框架 新生命开发团队 diff --git a/NewLife.Remoting/Services/ICommandClient.cs b/NewLife.Remoting/Services/ICommandClient.cs index 222db0e..1fed0f4 100644 --- a/NewLife.Remoting/Services/ICommandClient.cs +++ b/NewLife.Remoting/Services/ICommandClient.cs @@ -133,7 +133,8 @@ public static async Task ExecuteCommand(this ICommandClient c { //WriteLog("OnCommand {0}", model.ToJson()); - if (!client.Commands.TryGetValue(model.Command, out var d)) throw new ApiException(400, $"找不到服务[{model.Command}]"); + if (!client.Commands.TryGetValue(model.Command, out var d)) + throw new ApiException(ApiCode.NotFound, $"找不到服务[{model.Command}]"); if (d is Func> func1) return await func1(model.Argument); //if (d is Func> func2) return await func2(model.Argument); diff --git a/Samples/IoTZero/Clients/ClientTest.cs b/Samples/IoTZero/Clients/ClientTest.cs index 5143895..e94d63b 100644 --- a/Samples/IoTZero/Clients/ClientTest.cs +++ b/Samples/IoTZero/Clients/ClientTest.cs @@ -26,7 +26,7 @@ public static async Task Main(IServiceProvider serviceProvider) Log = XTrace.Log, }; - await device.LoginAsync(); + await device.Login(); _device = device; } diff --git a/Samples/IoTZero/Clients/HttpDevice.cs b/Samples/IoTZero/Clients/HttpDevice.cs index 05a2ef0..bdb25f9 100644 --- a/Samples/IoTZero/Clients/HttpDevice.cs +++ b/Samples/IoTZero/Clients/HttpDevice.cs @@ -1,281 +1,90 @@ -using System.Diagnostics; -using System.Net; -using System.Net.NetworkInformation; -using System.Net.WebSockets; -using NewLife; -using NewLife.Caching; +using NewLife; using NewLife.IoT.Models; using NewLife.IoT.ThingModels; using NewLife.Log; -using NewLife.Remoting; +using NewLife.Remoting.Clients; +using NewLife.Remoting.Models; using NewLife.Security; -using NewLife.Serialization; -using NewLife.Threading; +using LoginResponse = NewLife.Remoting.Models.LoginResponse; namespace IoTEdge; /// Http协议设备 -public class HttpDevice : DisposeBase +public class HttpDevice : HttpClientBase { #region 属性 - /// 服务器地址 - public String Server { get; set; } - - /// 设备编码。从IoT管理平台获取(需提前分配),或者本地提交后动态注册 - public String DeviceCode { get; set; } - - /// 密钥。设备密钥或产品密钥,分别用于一机一密和一型一密,从IoT管理平台获取 - public String DeviceSecret { get; set; } - /// 产品编码。从IoT管理平台获取 public String ProductKey { get; set; } - /// 密码散列提供者。避免密码明文提交 - public IPasswordProvider PasswordProvider { get; set; } = new SaltPasswordProvider { Algorithm = "md5", SaltTime = 60 }; - - /// 收到命令时触发 - public event EventHandler Received; - private readonly ClientSetting _setting; - private ApiHttpClient _client; - private Int32 _delay; #endregion #region 构造 - public HttpDevice() { } + public HttpDevice() => Prefix = "Device/"; - public HttpDevice(ClientSetting setting) + public HttpDevice(ClientSetting setting) : base(setting.Server) { + Prefix = "Device/"; + _setting = setting; - Server = setting.Server; - DeviceCode = setting.DeviceCode; - DeviceSecret = setting.DeviceSecret; ProductKey = setting.ProductKey; } - - protected override void Dispose(Boolean disposing) - { - base.Dispose(disposing); - - StopTimer(); - } #endregion #region 登录注销 - /// - /// 登录 - /// - /// - /// - public async Task LoginAsync() + public override LoginRequest BuildLoginRequest() { - var client = new ApiHttpClient(Server) - { - Tracer = Tracer, - Log = XTrace.Log, - }; + var request = base.BuildLoginRequest(); - var info = new LoginInfo + return new LoginInfo { - Code = DeviceCode, - Secret = DeviceSecret.IsNullOrEmpty() ? null : PasswordProvider.Hash(DeviceSecret), + Code = request.Code, + Secret = request.Secret, + Version = request.Version, + ClientId = request.ClientId, + ProductKey = ProductKey, + //ProductSecret = _setting.DeviceSecret, }; - var rs = await client.PostAsync("Device/Login", info); - client.Token = rs.Token; + } - if (!rs.Code.IsNullOrEmpty() && !rs.Secret.IsNullOrEmpty()) - { - WriteLog("下发证书:{0}/{1}", rs.Code, rs.Secret); - DeviceCode = rs.Code; - DeviceSecret = rs.Secret; + public override async Task Login() + { + var rs = await base.Login(); + if (Logined && !rs.Secret.IsNullOrEmpty()) + { _setting.DeviceCode = rs.Code; _setting.DeviceSecret = rs.Secret; _setting.Save(); } - _client = client; - - StartTimer(); + return rs; } - - /// 注销 - /// - /// - public async Task LogoutAsync(String reason) => await _client.PostAsync("Device/Logout", new { reason }); #endregion - #region 心跳&长连接 - /// 心跳 - /// - public virtual async Task PingAsync() - { - if (Tracer != null) DefaultSpan.Current = null; - - using var span = Tracer?.NewSpan("Ping"); - try - { - var info = GetHeartInfo(); - - var rs = await _client.PostAsync("Device/Ping", info); - - var dt = rs.Time.ToDateTime(); - if (dt.Year > 2000) - { - // 计算延迟 - var ts = DateTime.UtcNow - dt; - var ms = (Int32)ts.TotalMilliseconds; - _delay = (_delay + ms) / 2; - } - - var svc = _client.Services.FirstOrDefault(); - if (svc != null && _client.Token != null && (_websocket == null || _websocket.State != WebSocketState.Open)) - { - var url = svc.Address.ToString().Replace("http://", "ws://").Replace("https://", "wss://"); - var uri = new Uri(new Uri(url), "/Device/Notify"); - var client = new ClientWebSocket(); - client.Options.SetRequestHeader("Authorization", "Bearer " + _client.Token); - await client.ConnectAsync(uri, default); - - _websocket = client; - - _source = new CancellationTokenSource(); - _ = Task.Run(() => DoPull(client, _source.Token)); - } - - // 令牌 - if (rs is PingResponse pr && !pr.Token.IsNullOrEmpty()) - _client.Token = pr.Token; - } - catch (Exception ex) - { - span?.SetError(ex, null); - - throw; - } - } - - /// 获取心跳信息 - public PingInfo GetHeartInfo() + #region 心跳 + public override PingRequest BuildPingRequest() { - var mi = MachineInfo.GetCurrent(); - mi.Refresh(); - - var properties = IPGlobalProperties.GetIPGlobalProperties(); - var connections = properties.GetActiveTcpConnections(); + var request = base.BuildPingRequest(); - var mcs = NetHelper.GetMacs().Select(e => e.ToHex("-")).OrderBy(e => e).Join(","); - var driveInfo = new DriveInfo(Path.GetPathRoot(".".GetFullPath())); - var ip = NetHelper.GetIPs().Where(ip => ip.IsIPv4() && !IPAddress.IsLoopback(ip) && ip.GetAddressBytes()[0] != 169).Join(); - var ext = new PingInfo + return new PingInfo { - Memory = mi.Memory, - AvailableMemory = mi.AvailableMemory, - TotalSize = (UInt64)driveInfo.TotalSize, - AvailableFreeSpace = (UInt64)driveInfo.AvailableFreeSpace, - CpuRate = (Single)Math.Round(mi.CpuRate, 4), - Temperature = mi.Temperature, - Battery = mi.Battery, - Uptime = Environment.TickCount / 1000, - - IP = ip, - - Time = DateTime.UtcNow.ToLong(), - Delay = _delay, }; - // 开始时间 Environment.TickCount 很容易溢出,导致开机24天后变成负数。 - // 后来在 netcore3.0 增加了Environment.TickCount64 - // 现在借助 Stopwatch 来解决 - if (Stopwatch.IsHighResolution) ext.Uptime = (Int32)(Stopwatch.GetTimestamp() / Stopwatch.Frequency); - - return ext; } - private TimerX _timer; - /// 开始心跳定时器 - protected virtual void StartTimer() - { - if (_timer == null) - lock (this) - _timer ??= new TimerX(async s => await PingAsync(), null, 3_000, 60_000, "Device") { Async = true }; - } - - /// 停止心跳定时器 - protected void StopTimer() - { - if (_websocket != null && _websocket.State == WebSocketState.Open) - _websocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "finish", default).Wait(); - _source?.Cancel(); - - _websocket = null; - - _timer.TryDispose(); - _timer = null; - } - - private WebSocket _websocket; - private CancellationTokenSource _source; - private ICache _cache = new MemoryCache(); - - private async Task DoPull(WebSocket socket, CancellationToken cancellationToken) + public override Task CommandReply(CommandReplyModel model) => InvokeAsync("Thing/ServiceReply", new ServiceReplyModel { - DefaultSpan.Current = null; - try - { - var buf = new Byte[4 * 1024]; - while (!cancellationToken.IsCancellationRequested && socket.State == WebSocketState.Open) - { - var data = await socket.ReceiveAsync(new ArraySegment(buf), cancellationToken); - var model = buf.ToStr(null, 0, data.Count).ToJsonEntity(); - if (model != null && _cache.Add($"cmd:{model.Id}", model, 3600)) - { - // 建立追踪链路 - using var span = Tracer?.NewSpan("service:" + model.Name, model); - span?.Detach(model.TraceId); - try - { - if (model.Expire.Year < 2000 || model.Expire > DateTime.Now) - await OnReceiveCommand(model); - else - await ServiceReply(new ServiceReplyModel { Id = model.Id, Status = ServiceStatus.取消 }); - } - catch (Exception ex) - { - span?.SetError(ex, null); - } - } - } - } - catch (Exception ex) - { - XTrace.WriteException(ex); - } - - if (socket.State == WebSocketState.Open) await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "finish", default); - } + Id = model.Id, + Status = (ServiceStatus)model.Status, + Data = model.Data, + }); #endregion - #region 服务 - /// - /// 触发收到命令的动作 - /// - /// - protected virtual async Task OnReceiveCommand(ServiceModel model) - { - var e = new ServiceEventArgs { Model = model }; - Received?.Invoke(this, e); - - if (e.Reply != null) await ServiceReply(e.Reply); - } - - /// 上报服务调用结果 - /// + #region 数据 + /// 上传数据 /// - public virtual async Task ServiceReply(ServiceReplyModel model) => await _client.PostAsync("Thing/ServiceReply", model); - #endregion - public async Task PostDataAsync() { if (Tracer != null) DefaultSpan.Current = null; @@ -285,17 +94,16 @@ public async Task PostDataAsync() { var items = new List { - new DataModel - { + new() { Time = DateTime.UtcNow.ToLong(), Name = "TestValue", Value = Rand.Next(0, 100) + "" } }; - var data = new DataModels { DeviceCode = DeviceCode, Items = items.ToArray() }; + var data = new DataModels { DeviceCode = Code, Items = items.ToArray() }; - await _client.PostAsync("Thing/PostData", data); + await InvokeAsync("Thing/PostData", data); } catch (Exception ex) { @@ -304,17 +112,5 @@ public async Task PostDataAsync() throw; } } - - #region 日志 - /// 链路追踪 - public ITracer Tracer { get; set; } - - /// 日志 - public ILog Log { get; set; } - - /// 写日志 - /// - /// - public void WriteLog(String format, params Object[] args) => Log?.Info(format, args); #endregion } \ No newline at end of file diff --git a/Samples/IoTZero/Controllers/DeviceController.cs b/Samples/IoTZero/Controllers/DeviceController.cs index 31242b7..df04991 100644 --- a/Samples/IoTZero/Controllers/DeviceController.cs +++ b/Samples/IoTZero/Controllers/DeviceController.cs @@ -124,7 +124,7 @@ public PingResponse Ping(PingInfo model) [HttpGet(nameof(Upgrade))] public UpgradeInfo Upgrade() { - var device = Device ?? throw new ApiException(402, "节点未登录"); + var device = Device ?? throw new ApiException(ApiCode.Unauthorized, "节点未登录"); throw new NotImplementedException(); } diff --git a/Samples/IoTZero/Models/LoginInfo.cs b/Samples/IoTZero/Models/LoginInfo.cs index 9b98f11..41f2cf4 100644 --- a/Samples/IoTZero/Models/LoginInfo.cs +++ b/Samples/IoTZero/Models/LoginInfo.cs @@ -1,37 +1,36 @@ -using System; +using NewLife.Remoting.Models; -namespace NewLife.IoT.Models +namespace NewLife.IoT.Models; + +/// 节点登录信息 +public class LoginInfo : LoginRequest { - /// 节点登录信息 - public class LoginInfo - { - #region 属性 - /// 设备编码 - public String Code { get; set; } + #region 属性 + ///// 设备编码 + //public String Code { get; set; } - /// 设备密钥 - public String Secret { get; set; } + ///// 设备密钥 + //public String Secret { get; set; } - /// 产品证书 - public String ProductKey { get; set; } + /// 产品证书 + public String ProductKey { get; set; } - /// 产品密钥 - public String ProductSecret { get; set; } + /// 产品密钥 + public String ProductSecret { get; set; } - /// 名称。可用于标识设备的名称 - public String Name { get; set; } + /// 名称。可用于标识设备的名称 + public String Name { get; set; } - /// 版本 - public String Version { get; set; } + ///// 版本 + //public String Version { get; set; } - /// 本地IP地址 - public String IP { get; set; } + /// 本地IP地址 + public String IP { get; set; } - /// 唯一标识 - public String UUID { get; set; } + /// 唯一标识 + public String UUID { get; set; } - /// 本地UTC时间 - public Int64 Time { get; set; } - #endregion - } + /// 本地UTC时间 + public Int64 Time { get; set; } + #endregion } \ No newline at end of file diff --git a/Samples/IoTZero/Models/PingInfo.cs b/Samples/IoTZero/Models/PingInfo.cs index d1b6c6b..0b72a3d 100644 --- a/Samples/IoTZero/Models/PingInfo.cs +++ b/Samples/IoTZero/Models/PingInfo.cs @@ -1,43 +1,42 @@ -using System; +using NewLife.Remoting.Models; -namespace NewLife.IoT.Models +namespace NewLife.IoT.Models; + +/// 心跳信息 +public class PingInfo : PingRequest { - /// 心跳信息 - public class PingInfo - { - #region 属性 - /// 内存大小 - public UInt64 Memory { get; set; } + #region 属性 + /// 内存大小 + public UInt64 Memory { get; set; } - /// 可用内存大小 - public UInt64 AvailableMemory { get; set; } + /// 可用内存大小 + public UInt64 AvailableMemory { get; set; } - /// 磁盘大小。应用所在盘 - public UInt64 TotalSize { get; set; } + /// 磁盘大小。应用所在盘 + public UInt64 TotalSize { get; set; } - /// 磁盘可用空间。应用所在盘 - public UInt64 AvailableFreeSpace { get; set; } + /// 磁盘可用空间。应用所在盘 + public UInt64 AvailableFreeSpace { get; set; } - /// CPU使用率 - public Single CpuRate { get; set; } + /// CPU使用率 + public Single CpuRate { get; set; } - /// 温度 - public Double Temperature { get; set; } + /// 温度 + public Double Temperature { get; set; } - /// 电量 - public Double Battery { get; set; } + /// 电量 + public Double Battery { get; set; } - /// 本地IP - public String IP { get; set; } + /// 本地IP + public String IP { get; set; } - /// 开机时间,单位s - public Int32 Uptime { get; set; } + /// 开机时间,单位s + public Int32 Uptime { get; set; } - /// 本地UTC时间。ms毫秒 - public Int64 Time { get; set; } + /// 本地UTC时间。ms毫秒 + public Int64 Time { get; set; } - /// 延迟。ms毫秒 - public Int32 Delay { get; set; } - #endregion - } + /// 延迟。ms毫秒 + public Int32 Delay { get; set; } + #endregion } \ No newline at end of file diff --git a/Samples/IoTZero/Services/MyDeviceService.cs b/Samples/IoTZero/Services/MyDeviceService.cs index f6ca961..ddeca6b 100644 --- a/Samples/IoTZero/Services/MyDeviceService.cs +++ b/Samples/IoTZero/Services/MyDeviceService.cs @@ -60,14 +60,14 @@ public LoginResponse Login(LoginInfo inf, String source, String ip) var autoReg = false; if (dv == null) { - if (inf.ProductKey.IsNullOrEmpty()) throw new ApiException(98, "找不到设备,且产品证书为空,无法登录"); + if (inf.ProductKey.IsNullOrEmpty()) throw new ApiException(ApiCode.NotFound, "找不到设备,且产品证书为空,无法登录"); dv = AutoRegister(null, inf, ip); autoReg = true; } else { - if (!dv.Enable) throw new ApiException(99, "禁止登录"); + if (!dv.Enable) throw new ApiException(ApiCode.Forbidden, "禁止登录"); // 校验唯一编码,防止客户端拷贝配置 var uuid = inf.UUID; @@ -78,7 +78,7 @@ public LoginResponse Login(LoginInfo inf, String source, String ip) if (dv == null || !dv.Secret.IsNullOrEmpty() && (secret.IsNullOrEmpty() || !_passwordProvider.Verify(dv.Secret, secret))) { - if (inf.ProductKey.IsNullOrEmpty()) throw new ApiException(98, "设备验证失败,且产品证书为空,无法登录"); + if (inf.ProductKey.IsNullOrEmpty()) throw new ApiException(ApiCode.Unauthorized, "设备验证失败,且产品证书为空,无法登录"); dv = AutoRegister(dv, inf, ip); autoReg = true; @@ -344,7 +344,7 @@ public TokenModel IssueToken(String name, IoTSetting set) public Device DecodeToken(String token, String tokenSecret) { //if (token.IsNullOrEmpty()) throw new ArgumentNullException(nameof(token)); - if (token.IsNullOrEmpty()) throw new ApiException(402, "节点未登录"); + if (token.IsNullOrEmpty()) throw new ApiException(ApiCode.Unauthorized, "节点未登录"); // 解码令牌 var ss = tokenSecret.Split(':'); @@ -357,7 +357,7 @@ public Device DecodeToken(String token, String tokenSecret) var rs = jwt.TryDecode(token, out var message); var node = Device.FindByCode(jwt.Subject); Current = node; - if (!rs) throw new ApiException(403, $"非法访问 {message}"); + if (!rs) throw new ApiException(ApiCode.Forbidden, $"非法访问 {message}"); return node; } From bf5b945b3b5bde17b2b77cb64aa3541b68820473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=9F=B3=E5=A4=B4?= Date: Sat, 18 May 2024 09:49:24 +0800 Subject: [PATCH 5/5] =?UTF-8?q?ReceiveCommand=E5=A2=9E=E5=8A=A0=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NewLife.Remoting/Clients/ClientBase.cs | 10 +++-- NewLife.Remoting/Clients/HttpClientBase.cs | 52 +--------------------- 2 files changed, 8 insertions(+), 54 deletions(-) diff --git a/NewLife.Remoting/Clients/ClientBase.cs b/NewLife.Remoting/Clients/ClientBase.cs index e7b16a0..bbfa6ac 100644 --- a/NewLife.Remoting/Clients/ClientBase.cs +++ b/NewLife.Remoting/Clients/ClientBase.cs @@ -289,7 +289,7 @@ public virtual LoginRequest BuildLoginRequest() { foreach (var model in rs.Commands) { - await ReceiveCommand(model); + await ReceiveCommand(model, "Pong"); } } } @@ -385,7 +385,11 @@ protected virtual void StopTimer() /// protected virtual Task OnPing(Object state) => Ping(); - async Task ReceiveCommand(CommandModel model) + /// 收到命令 + /// + /// + /// + protected async Task ReceiveCommand(CommandModel model, String source) { if (model == null) return; @@ -399,7 +403,7 @@ async Task ReceiveCommand(CommandModel model) { //todo 有效期判断可能有隐患,现在只是假设服务器和客户端在同一个时区,如果不同,可能会出现问题 var now = GetNow(); - XTrace.WriteLine("Got Command: {0}", model.ToJson()); + XTrace.WriteLine("[{0}] Got Command: {1}", source, model.ToJson()); if (model.Expire.Year < 2000 || model.Expire > now) { // 延迟执行 diff --git a/NewLife.Remoting/Clients/HttpClientBase.cs b/NewLife.Remoting/Clients/HttpClientBase.cs index 1807c36..5bc82b4 100644 --- a/NewLife.Remoting/Clients/HttpClientBase.cs +++ b/NewLife.Remoting/Clients/HttpClientBase.cs @@ -2,7 +2,6 @@ using NewLife.Caching; using NewLife.Log; using NewLife.Remoting.Models; -using NewLife.Threading; using NewLife.Serialization; #if NETCOREAPP @@ -259,56 +258,7 @@ protected virtual async Task OnReceive(String message) else { var model = message.ToJsonEntity(); - if (model != null) await ReceiveCommand(model); - } - } - - async Task ReceiveCommand(CommandModel model) - { - if (model == null) return; - - // 去重,避免命令被重复执行 - if (!_cache.Add($"cmd:{model.Id}", model, 3600)) return; - - // 建立追踪链路 - using var span = Tracer?.NewSpan("cmd:" + model.Command, model); - if (model.TraceId != null) span?.Detach(model.TraceId); - try - { - //todo 有效期判断可能有隐患,现在只是假设服务器和客户端在同一个时区,如果不同,可能会出现问题 - //WriteLog("Got Service: {0}", model.ToJson()); - var now = GetNow(); - if (model.Expire.Year < 2000 || model.Expire > now) - { - // 延迟执行 - var ts = model.StartTime - now; - if (ts.TotalMilliseconds > 0) - { - TimerX.Delay(s => - { - _ = OnReceiveCommand(model); - }, (Int32)ts.TotalMilliseconds); - - var reply = new CommandReplyModel - { - Id = model.Id, - Status = CommandStatus.处理中, - Data = $"已安排计划执行 {model.StartTime.ToFullString()}" - }; - await CommandReply(reply); - } - else - await OnReceiveCommand(model); - } - else - { - var rs = new CommandReplyModel { Id = model.Id, Status = CommandStatus.取消 }; - await CommandReply(rs); - } - } - catch (Exception ex) - { - span?.SetError(ex, null); + if (model != null) await ReceiveCommand(model, "WebSocket"); } } #endregion