Compare commits

..

No commits in common. "c71e58f254cd447cc8c7e791c4b4278c646a3d46" and "25383f7c0cc807b7d9886f461d1fc799623b6903" have entirely different histories.

40 changed files with 21965 additions and 1169 deletions

View File

@ -21,11 +21,10 @@
<PackageReference Update="Microsoft.AspNetCore.Http.Abstractions" Version="2.3.0"/>
<PackageReference Update="Microsoft.AspNetCore.Http.Features" Version="2.3.0"/>
<PackageReference Update="Microsoft.CSharp" Version="5.0.0"/>
<PackageReference Update="Microsoft.CodeAnalysis.Analyzers" Version="5.3.0" />
<PackageReference Update="Microsoft.CodeAnalysis.CSharp" Version="5.3.0" />
<PackageReference Update="Microsoft.CodeAnalysis.Common " Version="5.3.0" />
<PackageReference Update="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="5.3.0" />
<PackageReference Update="Microsoft.CodeAnalysis.Workspaces.Common" Version="5.3.0" />
<PackageReference Update="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0" />
<PackageReference Update="Microsoft.CodeAnalysis.CSharp" Version="5.0.0" />
<PackageReference Update="Microsoft.CodeAnalysis.Common " Version="5.0.0" />
<PackageReference Update="Microsoft.CodeAnalysis.Workspaces.Common" Version="5.0.0" />
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
</ItemGroup>
</Project>

View File

@ -4,10 +4,10 @@
<!--JiShe.ServicePro版本-->
<ServiceProVersion>1.0.5.40</ServiceProVersion>
<!--Volo Abp 版本-->
<VoloAbpVersion>10.1.1</VoloAbpVersion>
<VoloAbpVersion>10.0.2</VoloAbpVersion>
<!--Dotnet 组件 版本-->
<DotnetInfoVersion>10.0.5</DotnetInfoVersion>
<DotnetInfoVersion>10.0.2</DotnetInfoVersion>
<!--Dotnet 框架 版本-->
<DotnetTargetFrameworkVersion>net10.0</DotnetTargetFrameworkVersion>

View File

@ -63,9 +63,9 @@
<PackageReference Update="Savorboard.CAP.InMemoryMessageQueue" Version="8.2.1"/>
<!-- Swagger-->
<!--<PackageReference Update="Swashbuckle.AspNetCore.SwaggerUI" Version="9.0.4"/>-->
<PackageReference Update="Swashbuckle.AspNetCore" Version="10.1.5"/>
<PackageReference Update="Swashbuckle.AspNetCore.Annotations" Version="10.1.5"/>
<PackageReference Update="Swashbuckle.AspNetCore.SwaggerUI" Version="9.0.4"/>
<PackageReference Update="Swashbuckle.AspNetCore" Version="9.0.4"/>
<PackageReference Update="Swashbuckle.AspNetCore.Annotations" Version="9.0.4"/>
<!-- Serilog 日志-->
<PackageReference Update="Serilog" Version="4.3.0"/>
@ -111,7 +111,7 @@
<!-- Humanizer 中文格式包-->
<PackageReference Update="Humanizer.Core.zh-Hans" Version="2.14.1"/>
<PackageReference Update="Scriban" Version="6.6.0" />
<PackageReference Update="Scriban" Version="5.4.4" />
<PackageReference Update="Otp.NET" Version="1.4.0" />
<PackageReference Update="QRCoder" Version="1.6.0" />

View File

@ -264,46 +264,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.Domain.Sha
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.Domain", "JiShe.ServicePro\shared\JiShe.ServicePro.Domain\JiShe.ServicePro.Domain.csproj", "{0A541E29-090F-87B9-8C98-83FAA7AF0E78}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.TemplateManagement.Domain.Shared", "JiShe.ServicePro\modules\TemplateManagement\src\JiShe.ServicePro.TemplateManagement.Domain.Shared\JiShe.ServicePro.TemplateManagement.Domain.Shared.csproj", "{C6FD9406-C128-F970-DB4C-4DF3D2CEAA96}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.TemplateManagement.Domain", "JiShe.ServicePro\modules\TemplateManagement\src\JiShe.ServicePro.TemplateManagement.Domain\JiShe.ServicePro.TemplateManagement.Domain.csproj", "{5F1A2AD5-2C7B-3675-C18C-43CA06FAE05C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.OneNETManagement.Domain.Shared", "JiShe.ServicePro\modules\OneNETManagement\src\JiShe.ServicePro.OneNETManagement.Domain.Shared\JiShe.ServicePro.OneNETManagement.Domain.Shared.csproj", "{83F40CA2-B00D-A056-A920-525AFFD76FA7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.OneNETManagement.Domain", "JiShe.ServicePro\modules\OneNETManagement\src\JiShe.ServicePro.OneNETManagement.Domain\JiShe.ServicePro.OneNETManagement.Domain.csproj", "{A5585C65-378D-F06C-E463-910FA9D86BF5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.NotificationManagement.Domain.Shared", "JiShe.ServicePro\modules\NotificationManagement\src\JiShe.ServicePro.NotificationManagement.Domain.Shared\JiShe.ServicePro.NotificationManagement.Domain.Shared.csproj", "{1857A580-1862-4299-F196-CDF253CD9B40}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.NotificationManagement.Domain", "JiShe.ServicePro\modules\NotificationManagement\src\JiShe.ServicePro.NotificationManagement.Domain\JiShe.ServicePro.NotificationManagement.Domain.csproj", "{06998B3B-DFE4-080F-B679-CFEE5FE45F72}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.LanguageManagement.Domain.Shared", "JiShe.ServicePro\modules\LanguageManagement\src\JiShe.ServicePro.LanguageManagement.Domain.Shared\JiShe.ServicePro.LanguageManagement.Domain.Shared.csproj", "{BF91E40E-5703-2BB7-D67C-12640F22D35D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.LanguageManagement.Domain", "JiShe.ServicePro\modules\LanguageManagement\src\JiShe.ServicePro.LanguageManagement.Domain\JiShe.ServicePro.LanguageManagement.Domain.csproj", "{8EC3F1B8-0919-7052-3878-8F5E07BE4969}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.FileManagement.Domain", "JiShe.ServicePro\modules\FileManagement\src\JiShe.ServicePro.FileManagement.Domain\JiShe.ServicePro.FileManagement.Domain.csproj", "{C9C8F9C5-285B-11D2-709E-69B6AE6272DB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.FileManagement.Domain.Shared", "JiShe.ServicePro\modules\FileManagement\src\JiShe.ServicePro.FileManagement.Domain.Shared\JiShe.ServicePro.FileManagement.Domain.Shared.csproj", "{0799B9F8-0821-7FD0-4C25-71C4105AAC28}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.DynamicMenuManagement.Domain", "JiShe.ServicePro\modules\DynamicMenuManagement\src\JiShe.ServicePro.DynamicMenuManagement.Domain\JiShe.ServicePro.DynamicMenuManagement.Domain.csproj", "{D5453859-E05B-2A0B-A4EC-3FA789DBF719}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.DynamicMenuManagement.Domain.Shared", "JiShe.ServicePro\modules\DynamicMenuManagement\src\JiShe.ServicePro.DynamicMenuManagement.Domain.Shared\JiShe.ServicePro.DynamicMenuManagement.Domain.Shared.csproj", "{38145D89-6885-EDEE-3949-327C575F9A16}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.DeviceManagement.Domain.Shared", "JiShe.ServicePro\modules\DeviceManagement\src\JiShe.ServicePro.DeviceManagement.Domain.Shared\JiShe.ServicePro.DeviceManagement.Domain.Shared.csproj", "{52846756-6E82-0565-E219-6023F1FA4E29}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.DeviceManagement.Domain", "JiShe.ServicePro\modules\DeviceManagement\src\JiShe.ServicePro.DeviceManagement.Domain\JiShe.ServicePro.DeviceManagement.Domain.csproj", "{4A53D94C-66FF-C2A7-56C8-7EF2136B5538}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.DataDictionaryManagement.Domain.Shared", "JiShe.ServicePro\modules\DataDictionaryManagement\src\JiShe.ServicePro.DataDictionaryManagement.Domain.Shared\JiShe.ServicePro.DataDictionaryManagement.Domain.Shared.csproj", "{038FD838-9E6B-40A5-C2B7-036CFD25A715}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.DataDictionaryManagement.Domain", "JiShe.ServicePro\modules\DataDictionaryManagement\src\JiShe.ServicePro.DataDictionaryManagement.Domain\JiShe.ServicePro.DataDictionaryManagement.Domain.csproj", "{50CB80B4-B3FF-51F6-0FFA-60391FF2AF57}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.CTWingManagement.Domain.Shared", "JiShe.ServicePro\modules\CTWingManagement\src\JiShe.ServicePro.CTWingManagement.Domain.Shared\JiShe.ServicePro.CTWingManagement.Domain.Shared.csproj", "{275D7FF0-0D71-88B5-D050-E9B97D62C3B2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.CTWingManagement.Domain", "JiShe.ServicePro\modules\CTWingManagement\src\JiShe.ServicePro.CTWingManagement.Domain\JiShe.ServicePro.CTWingManagement.Domain.csproj", "{F730AD4A-AB34-4824-37B4-EC9FFD0D4154}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.BasicManagement.Domain.Shared", "JiShe.ServicePro\modules\BasicManagement\src\JiShe.ServicePro.BasicManagement.Domain.Shared\JiShe.ServicePro.BasicManagement.Domain.Shared.csproj", "{8223B0B3-2EAB-6523-1082-78022FA92ABB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.BasicManagement.Domain", "JiShe.ServicePro\modules\BasicManagement\src\JiShe.ServicePro.BasicManagement.Domain\JiShe.ServicePro.BasicManagement.Domain.csproj", "{1C24FFD0-A96C-8326-A3B8-E63FC93E7896}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -710,86 +670,6 @@ Global
{0A541E29-090F-87B9-8C98-83FAA7AF0E78}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A541E29-090F-87B9-8C98-83FAA7AF0E78}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A541E29-090F-87B9-8C98-83FAA7AF0E78}.Release|Any CPU.Build.0 = Release|Any CPU
{C6FD9406-C128-F970-DB4C-4DF3D2CEAA96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C6FD9406-C128-F970-DB4C-4DF3D2CEAA96}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C6FD9406-C128-F970-DB4C-4DF3D2CEAA96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C6FD9406-C128-F970-DB4C-4DF3D2CEAA96}.Release|Any CPU.Build.0 = Release|Any CPU
{5F1A2AD5-2C7B-3675-C18C-43CA06FAE05C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5F1A2AD5-2C7B-3675-C18C-43CA06FAE05C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5F1A2AD5-2C7B-3675-C18C-43CA06FAE05C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5F1A2AD5-2C7B-3675-C18C-43CA06FAE05C}.Release|Any CPU.Build.0 = Release|Any CPU
{83F40CA2-B00D-A056-A920-525AFFD76FA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83F40CA2-B00D-A056-A920-525AFFD76FA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{83F40CA2-B00D-A056-A920-525AFFD76FA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{83F40CA2-B00D-A056-A920-525AFFD76FA7}.Release|Any CPU.Build.0 = Release|Any CPU
{A5585C65-378D-F06C-E463-910FA9D86BF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A5585C65-378D-F06C-E463-910FA9D86BF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A5585C65-378D-F06C-E463-910FA9D86BF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5585C65-378D-F06C-E463-910FA9D86BF5}.Release|Any CPU.Build.0 = Release|Any CPU
{1857A580-1862-4299-F196-CDF253CD9B40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1857A580-1862-4299-F196-CDF253CD9B40}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1857A580-1862-4299-F196-CDF253CD9B40}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1857A580-1862-4299-F196-CDF253CD9B40}.Release|Any CPU.Build.0 = Release|Any CPU
{06998B3B-DFE4-080F-B679-CFEE5FE45F72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{06998B3B-DFE4-080F-B679-CFEE5FE45F72}.Debug|Any CPU.Build.0 = Debug|Any CPU
{06998B3B-DFE4-080F-B679-CFEE5FE45F72}.Release|Any CPU.ActiveCfg = Release|Any CPU
{06998B3B-DFE4-080F-B679-CFEE5FE45F72}.Release|Any CPU.Build.0 = Release|Any CPU
{BF91E40E-5703-2BB7-D67C-12640F22D35D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF91E40E-5703-2BB7-D67C-12640F22D35D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF91E40E-5703-2BB7-D67C-12640F22D35D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF91E40E-5703-2BB7-D67C-12640F22D35D}.Release|Any CPU.Build.0 = Release|Any CPU
{8EC3F1B8-0919-7052-3878-8F5E07BE4969}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8EC3F1B8-0919-7052-3878-8F5E07BE4969}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8EC3F1B8-0919-7052-3878-8F5E07BE4969}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8EC3F1B8-0919-7052-3878-8F5E07BE4969}.Release|Any CPU.Build.0 = Release|Any CPU
{C9C8F9C5-285B-11D2-709E-69B6AE6272DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C9C8F9C5-285B-11D2-709E-69B6AE6272DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C9C8F9C5-285B-11D2-709E-69B6AE6272DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C9C8F9C5-285B-11D2-709E-69B6AE6272DB}.Release|Any CPU.Build.0 = Release|Any CPU
{0799B9F8-0821-7FD0-4C25-71C4105AAC28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0799B9F8-0821-7FD0-4C25-71C4105AAC28}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0799B9F8-0821-7FD0-4C25-71C4105AAC28}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0799B9F8-0821-7FD0-4C25-71C4105AAC28}.Release|Any CPU.Build.0 = Release|Any CPU
{D5453859-E05B-2A0B-A4EC-3FA789DBF719}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D5453859-E05B-2A0B-A4EC-3FA789DBF719}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5453859-E05B-2A0B-A4EC-3FA789DBF719}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5453859-E05B-2A0B-A4EC-3FA789DBF719}.Release|Any CPU.Build.0 = Release|Any CPU
{38145D89-6885-EDEE-3949-327C575F9A16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{38145D89-6885-EDEE-3949-327C575F9A16}.Debug|Any CPU.Build.0 = Debug|Any CPU
{38145D89-6885-EDEE-3949-327C575F9A16}.Release|Any CPU.ActiveCfg = Release|Any CPU
{38145D89-6885-EDEE-3949-327C575F9A16}.Release|Any CPU.Build.0 = Release|Any CPU
{52846756-6E82-0565-E219-6023F1FA4E29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52846756-6E82-0565-E219-6023F1FA4E29}.Debug|Any CPU.Build.0 = Debug|Any CPU
{52846756-6E82-0565-E219-6023F1FA4E29}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52846756-6E82-0565-E219-6023F1FA4E29}.Release|Any CPU.Build.0 = Release|Any CPU
{4A53D94C-66FF-C2A7-56C8-7EF2136B5538}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A53D94C-66FF-C2A7-56C8-7EF2136B5538}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A53D94C-66FF-C2A7-56C8-7EF2136B5538}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A53D94C-66FF-C2A7-56C8-7EF2136B5538}.Release|Any CPU.Build.0 = Release|Any CPU
{038FD838-9E6B-40A5-C2B7-036CFD25A715}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{038FD838-9E6B-40A5-C2B7-036CFD25A715}.Debug|Any CPU.Build.0 = Debug|Any CPU
{038FD838-9E6B-40A5-C2B7-036CFD25A715}.Release|Any CPU.ActiveCfg = Release|Any CPU
{038FD838-9E6B-40A5-C2B7-036CFD25A715}.Release|Any CPU.Build.0 = Release|Any CPU
{50CB80B4-B3FF-51F6-0FFA-60391FF2AF57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{50CB80B4-B3FF-51F6-0FFA-60391FF2AF57}.Debug|Any CPU.Build.0 = Debug|Any CPU
{50CB80B4-B3FF-51F6-0FFA-60391FF2AF57}.Release|Any CPU.ActiveCfg = Release|Any CPU
{50CB80B4-B3FF-51F6-0FFA-60391FF2AF57}.Release|Any CPU.Build.0 = Release|Any CPU
{275D7FF0-0D71-88B5-D050-E9B97D62C3B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{275D7FF0-0D71-88B5-D050-E9B97D62C3B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{275D7FF0-0D71-88B5-D050-E9B97D62C3B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{275D7FF0-0D71-88B5-D050-E9B97D62C3B2}.Release|Any CPU.Build.0 = Release|Any CPU
{F730AD4A-AB34-4824-37B4-EC9FFD0D4154}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F730AD4A-AB34-4824-37B4-EC9FFD0D4154}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F730AD4A-AB34-4824-37B4-EC9FFD0D4154}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F730AD4A-AB34-4824-37B4-EC9FFD0D4154}.Release|Any CPU.Build.0 = Release|Any CPU
{8223B0B3-2EAB-6523-1082-78022FA92ABB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8223B0B3-2EAB-6523-1082-78022FA92ABB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8223B0B3-2EAB-6523-1082-78022FA92ABB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8223B0B3-2EAB-6523-1082-78022FA92ABB}.Release|Any CPU.Build.0 = Release|Any CPU
{1C24FFD0-A96C-8326-A3B8-E63FC93E7896}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C24FFD0-A96C-8326-A3B8-E63FC93E7896}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1C24FFD0-A96C-8326-A3B8-E63FC93E7896}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C24FFD0-A96C-8326-A3B8-E63FC93E7896}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -905,26 +785,6 @@ Global
{6DB1C8C3-E57A-005D-D1D0-2194F6AC6537} = {72493AF2-CDAA-40A7-98AB-B8AA2B05965E}
{E5AC94F3-2C4F-2CC3-743E-382CD92638E0} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{0A541E29-090F-87B9-8C98-83FAA7AF0E78} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
{C6FD9406-C128-F970-DB4C-4DF3D2CEAA96} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{5F1A2AD5-2C7B-3675-C18C-43CA06FAE05C} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
{83F40CA2-B00D-A056-A920-525AFFD76FA7} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{A5585C65-378D-F06C-E463-910FA9D86BF5} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
{1857A580-1862-4299-F196-CDF253CD9B40} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{06998B3B-DFE4-080F-B679-CFEE5FE45F72} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
{BF91E40E-5703-2BB7-D67C-12640F22D35D} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{8EC3F1B8-0919-7052-3878-8F5E07BE4969} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
{C9C8F9C5-285B-11D2-709E-69B6AE6272DB} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
{0799B9F8-0821-7FD0-4C25-71C4105AAC28} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{D5453859-E05B-2A0B-A4EC-3FA789DBF719} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
{38145D89-6885-EDEE-3949-327C575F9A16} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{52846756-6E82-0565-E219-6023F1FA4E29} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{4A53D94C-66FF-C2A7-56C8-7EF2136B5538} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
{038FD838-9E6B-40A5-C2B7-036CFD25A715} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{50CB80B4-B3FF-51F6-0FFA-60391FF2AF57} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
{275D7FF0-0D71-88B5-D050-E9B97D62C3B2} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{F730AD4A-AB34-4824-37B4-EC9FFD0D4154} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
{8223B0B3-2EAB-6523-1082-78022FA92ABB} = {D9FCBD0B-51A1-4527-83DC-ACA7B06F91F7}
{1C24FFD0-A96C-8326-A3B8-E63FC93E7896} = {73E6E64F-DA5A-437A-A147-B9CA9CCB038D}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F}

View File

@ -36,6 +36,7 @@ global using Microsoft.Extensions.Logging;
global using Microsoft.Extensions.Logging.Abstractions;
global using Microsoft.Extensions.Options;
global using Microsoft.IdentityModel.Tokens;
global using Microsoft.OpenApi.Models;
global using JiShe.IoT;
global using Serilog;
global using StackExchange.Redis;

View File

@ -1,11 +1,9 @@
using Google.Protobuf.Compiler;
using Hangfire.Redis.StackExchange;
using JiShe.ServicePro.FreeRedisProvider;
using JiShe.ServicePro.SwaggerConfigs;
using Medallion.Threading;
using Medallion.Threading.Redis;
using Microsoft.CodeAnalysis;
using Microsoft.OpenApi;
using Volo.Abp.BlobStoring;
using Volo.Abp.BlobStoring.FileSystem;
@ -147,7 +145,102 @@ public partial class IoTHttpApiHostModule
private void ConfigureSwaggerServices(ServiceConfigurationContext context)
{
context.Services.AddJiSheServiceProAggregateSwagger(context.Services.GetConfiguration());
context.Services.AddSwaggerGen(
options =>
{
// 文件下载类型
options.MapType<FileContentResult>(() => new OpenApiSchema() { Type = "file" });
options.SwaggerDoc("AbpPro", new OpenApiInfo { Title = "AbpPro API", Version = "v1" });
var configuration = context.Services.GetConfiguration();
var groupNames = EnumExtensions.GetEnumTypeValueNameList<SwaggerGroupEnum>();
var excludeSwaggerGroups = configuration.GetSection("ExcludeSwaggerGroup").Get<List<string>>() ?? new List<string>();
groupNames.ForEach(group =>
{
if (!excludeSwaggerGroups.Where(e => e == group.Key).Any())
{
options.SwaggerDoc(group.Key,
new OpenApiInfo { Title = group.Value, Version = "v1" });
}
});
options.DocInclusionPredicate((docName, description) =>
{
if (docName == "AbpPro")
{
return true;
}
return description.GroupName == docName;
});
//options.EnableAnnotations(enableAnnotationsForInheritance: true, enableAnnotationsForPolymorphism: true); // 启用注解
options.DocumentFilter<HiddenAbpDefaultApiFilter>();
options.SchemaFilter<EnumSchemaFilter>();
// 加载所有xml注释这里会导致swagger加载有点缓慢
var xmlPaths = Directory.GetFiles(AppContext.BaseDirectory, "*.xml");
foreach (var xml in xmlPaths)
{
options.IncludeXmlComments(xml, true);
}
// 加载 模块引入的xml注释
// 加载所有xml注释这里会导致swagger加载有点缓慢
var modulePath = Path.Combine(AppContext.BaseDirectory, "moduleSwagger");
if (Directory.Exists(modulePath))
{
var xmlModulePaths = Directory.GetFiles(modulePath, "*.xml");
foreach (var xml in xmlModulePaths)
{
options.IncludeXmlComments(xml, true);
}
}
options.AddSecurityDefinition(JwtBearerDefaults.AuthenticationScheme,
new OpenApiSecurityScheme()
{
Description = "直接在下框输入JWT生成的Token",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.Http,
Scheme = JwtBearerDefaults.AuthenticationScheme,
BearerFormat = "JWT"
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme, Id = "Bearer"
}
},
new List<string>()
}
});
options.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme()
{
Type = SecuritySchemeType.ApiKey,
In = ParameterLocation.Header,
Name = "Accept-Language",
Description = "多语言设置系统预设语言有zh-Hans、en默认为zh-Hans",
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{ Type = ReferenceType.SecurityScheme, Id = "ApiKey" }
},
Array.Empty<string>()
}
});
});
}

View File

@ -88,13 +88,39 @@ namespace JiShe.IoT
}
app.UseAuthorization();
app.UseJiSheServiceProSwaggerUI(configuration,"/swagger/AbpPro/swagger.json", "AbpPro",true);
app.UseSwagger();
app.UseAbpSwaggerUI(options =>
{
var groupNames = System.EnumExtensions.GetEnumTypeValueNameList<SwaggerGroupEnum>();
var excludeSwaggerGroups = configuration.GetSection("ExcludeSwaggerGroup").Get<List<string>>() ?? new List<string>();
groupNames.ForEach(attr =>
{
if (!excludeSwaggerGroups.Where(e => e == attr.Key).Any())
{
options.SwaggerEndpoint($"/swagger/{attr.Key}/swagger.json", attr.Value);
}
});
options.SwaggerEndpoint("/swagger/AbpPro/swagger.json", "AbpPro API");
options.DocExpansion(DocExpansion.None);
options.DefaultModelsExpandDepth(-1);
});
app.UseAuditing();
app.UseAbpSerilogEnrichers();
app.UseUnitOfWork();
app.UseConfiguredEndpoints(endpoints =>
{
endpoints.MapHealthChecks("/health");
// endpoints.MapHangfireDashboard("/hangfire", new DashboardOptions()
// {
// Authorization = new[] { new CustomHangfireAuthorizeFilter() },
// IgnoreAntiforgeryToken = true
// });
});
if (configuration.GetValue("Consul:Enabled", false))

View File

@ -47,15 +47,15 @@ public class Program
//options.Limits.MaxConcurrentConnections = 1000;//限制并发连接数,默认无限制
});
builder.WebHost.UseUrls($"http://+:20500");
builder.WebHost.UseUrls($"http://+:10500");
var app = builder.Build();
await app.InitializeApplicationAsync();
await app.RunAsync();
return 0;
}
catch (Exception ex)
catch (Exception)
{
throw ex;
throw;
}
finally
{

View File

@ -1,15 +0,0 @@
using JiShe.ServicePro.Dto;
namespace JiShe.IoT.BusinessSystemAggregation
{
/// <summary>
/// 业务系统调用设备服务请求参数
/// </summary>
public class CallDeviceServiceRequestInfoDto: ReceiveCommandInfoDto
{
/// <summary>
/// 服务名称
/// </summary>
public string ServiceName { get; set; }
}
}

View File

@ -1,6 +1,5 @@
using JiShe.ServicePro;
using JiShe.ServicePro.ApacheIoTDB.Provider.Model;
using Microsoft.AspNetCore.Authorization;
using System;
using System.Collections.Generic;
using System.Linq;
@ -48,11 +47,5 @@ namespace JiShe.IoT.BusinessSystemAggregation
/// <param name="input"></param>
/// <returns></returns>
Task<HttpDataResult> BatchCreateDeviceInfoAsync(OpenApiRequest input);
/// <summary>
/// 接收业务系统调用设备服务信息Msg 字段为 CallDeviceServiceRequestInfoDto 实体
/// </summary>
Task<HttpDataResult<Dictionary<string, object>>> CallDeviceServiceToOneNETForApiAsync(OpenApiRequest input);
}
}

View File

@ -1,26 +0,0 @@
using JiShe.ServicePro.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
namespace JiShe.IoT.DeviceAggregation
{
/// <summary>
/// 调用设备服务入参
/// </summary>
public class CallDeviceServiceForApiInput : IdInput
{
/// <summary>
/// 服务名称
/// </summary>
[Required]
public string ServiceName { get; set; }
/// <summary>
/// 服务参数
/// </summary>
[Required]
public Dictionary<string, object> ServiceParams { get; set; }
}
}

View File

@ -106,12 +106,5 @@ namespace JiShe.IoT.DeviceAggregation
/// <param name="input"></param>
/// <returns></returns>
Task<bool> BindingDeviceThingModel(BindingDeviceThingModelInput input);
/// <summary>
/// 调用OneNET平台设备服务
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<Dictionary<string, object>> CallDeviceServiceToOneNETForApiAsync(CallDeviceServiceForApiInput input);
}
}

View File

@ -1,6 +1,5 @@
using JiShe.IoT.IoTPlatformAggregation.Dto;
using JiShe.ServicePro.Commons;
using JiShe.ServicePro.IoTDBManagement.TableModels;
using System;
using System.Collections.Generic;
using System.Linq;
@ -46,13 +45,5 @@ namespace JiShe.IoT.IoTPlatformAggregation
/// <returns></returns>
Task<object> UpdateIoTPlatformProductThingModelInfoAsync(UpdateIoTPlatformProductThingModelInfoInput input
);
/// <summary>
/// OneNET 数据日志处理重新处理
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task IoTPlatformDataLogReHandlerAsync(QueryOneNETReceiveMessageInput input
);
}
}

View File

@ -96,7 +96,7 @@ namespace JiShe.IoT.BusinessSystemAggregation
}
List<DeviceTelemetryCommandTypeEnum> actionTypes = new List<DeviceTelemetryCommandTypeEnum>() {
DeviceTelemetryCommandTypeEnum.OperateService,
DeviceTelemetryCommandTypeEnum.OperateBreaker,
DeviceTelemetryCommandTypeEnum.RoutineOperationSet,
};
@ -136,7 +136,7 @@ namespace JiShe.IoT.BusinessSystemAggregation
var tempPlatformThingModelInfo = platformThingModelInfo.Where(d => d.IoTPlatformRawFieldName == item.Key).FirstOrDefault();
if (tempPlatformThingModelInfo == null)
{
_logger.LogError($"业务系统推送指令时设备{deviceInfo.DeviceAddress}平台端物模型信息不存在属性标识符{item.Key}。");
_logger.LogError($"业务系统推送指令时设备设备{deviceInfo.DeviceAddress}平台端物模型信息不存在属性标识符{item.Key}。");
messageBody.Commands.RemoveAll(d => d.Key == item.Key);
continue;
}
@ -213,14 +213,14 @@ namespace JiShe.IoT.BusinessSystemAggregation
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("获取数据失败,设备属性值不能为空", -102, ResponeResultEnum.Fail);
}
var restrictionKey = string.Format(RedisConst.CacheDeviceOpenApiRestrictionKey, nameof(ReceiveGetCommandInfoAsync), messageBody.DeviceAddress);
var openApiDeviceRequest = FreeRedisProvider.Instance.Get(restrictionKey);
var restrictionKey = string.Format(RedisConst.CacheDeviceOpenApiRestrictionKey,nameof(ReceiveGetCommandInfoAsync), messageBody.DeviceAddress);
var openApiDeviceRequest = FreeRedisProvider.Instance.Get(restrictionKey);
if (openApiDeviceRequest != null)
{
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("获取数据失败,设备请求被限制", -103, ResponeResultEnum.Fail);
}
FreeRedisProvider.Instance.Set(restrictionKey, "1", TimeSpan.FromSeconds(5));
FreeRedisProvider.Instance.Set(restrictionKey,"1",TimeSpan.FromSeconds(5));
//限定来源类型必须为业务系统
if (messageBody.SourceType != DeviceTelemetrySourceTypeEnum.BusinessSystem)
@ -278,7 +278,7 @@ namespace JiShe.IoT.BusinessSystemAggregation
messageBody.Commands.RemoveAll(d => d.Key == item.Key);
continue;
}
commands.Add(tempPlatformThingModelInfo.IoTPlatformRawFieldName, item.Key);
commands.Add(tempPlatformThingModelInfo.IoTPlatformRawFieldName,item.Key);
}
if (commands == null || commands.Count <= 0)
@ -616,141 +616,5 @@ namespace JiShe.IoT.BusinessSystemAggregation
!deviceAddress.Contains("*") &&
!deviceAddress.Contains("~");
}
/// <summary>
/// 接收业务系统调用设备服务信息Msg 字段为 CallDeviceServiceRequestInfoDto 实体
/// </summary>
[AllowAnonymous]
public async Task<HttpDataResult<Dictionary<string, object>>> CallDeviceServiceToOneNETForApiAsync(OpenApiRequest input)
{
try
{
var handleResult = HandleOpenApiRequest<CallDeviceServiceRequestInfoDto>(input, serverApplicationOptions);
if (handleResult.Success == false)
{
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("获取数据失败,签名校验异常", -101);
}
var messageBody = handleResult.Data;
if (messageBody == null || messageBody.Commands == null || messageBody.Commands.Count <= 0 || string.IsNullOrWhiteSpace(messageBody.DeviceAddress) || string.IsNullOrWhiteSpace(messageBody.ServiceName))
{
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("服务调用失败,服务调用参数不能为空", -102, ResponeResultEnum.Fail);
}
var restrictionKey = string.Format(RedisConst.CacheDeviceOpenApiRestrictionKey, nameof(ReceiveGetCommandInfoAsync), messageBody.DeviceAddress);
var openApiDeviceRequest = FreeRedisProvider.Instance.Get(restrictionKey);
if (openApiDeviceRequest != null)
{
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("服务调用失败,设备请求被限制", -103, ResponeResultEnum.Fail);
}
FreeRedisProvider.Instance.Set(restrictionKey, "1", TimeSpan.FromSeconds(5));
//限定来源类型必须为业务系统
if (messageBody.SourceType != DeviceTelemetrySourceTypeEnum.BusinessSystem)
{
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("服务调用失败来源类型错误业务系统传固定值2", -104, ResponeResultEnum.Fail);
}
//限定操作类型必须为设备服务调用类型
if (messageBody.TelemetryCommandType != DeviceTelemetryCommandTypeEnum.OperateService)
{
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("服务调用失败,指令操作类型错误", -105, ResponeResultEnum.Fail);
}
var deviceInfo = await deviceAppService.FindByDeviceAddressAsync(messageBody.DeviceAddress);
if (deviceInfo == null)
{
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("设备不存在", -106, ResponeResultEnum.Fail);
}
//将指令存储IoTDB数据库和Redis发布通道
if (deviceInfo.IoTPlatform == IoTPlatformTypeEnum.OneNET)
{
//获取设备对应的平台端物模型信息,校验前端传入的属性标识集合是否存在不合法的属性标识符
var platformThingModelInfo = await platformThingModelInfoAppService.FindByPlatformProductIdAsync(new IdInput<string>() { Id = deviceInfo.IoTPlatformProductId });
if (platformThingModelInfo == null)
{
return HttpDataResultExtensions.Failed<Dictionary<string, object>>($"业务系统设备服务调时,{deviceInfo.DeviceAddress}的平台端物模型信息不存在。", -107, ResponeResultEnum.Fail);
}
Dictionary<string, string> commands = new Dictionary<string, string>();
foreach (var item in messageBody.Commands)
{
var tempPlatformThingModelInfo = platformThingModelInfo.Where(d => d.StandardFieldName == item.Key).FirstOrDefault();
if (tempPlatformThingModelInfo == null)
{
_logger.LogError($"业务系统设备服务调时{deviceInfo.DeviceAddress}平台端物模型信息不存在属性标识符{item.Key}。");
messageBody.Commands.RemoveAll(d => d.Key == item.Key);
continue;
}
//排除指令
if (exitCommands.Contains(tempPlatformThingModelInfo.StandardFieldName.ToLowerInvariant()))
{
_logger.LogError($"业务系统设备服务调时{deviceInfo.DeviceAddress}平台端物模型属性标识符{item.Key}是升级指令操作,被禁止。");
messageBody.Commands.RemoveAll(d => d.Key == item.Key);
continue;
}
commands.Add(tempPlatformThingModelInfo.IoTPlatformRawFieldName, item.Key);
}
if (commands == null || commands.Count <= 0)
{
_logger.LogError($"业务系统设备服务调时{deviceInfo.DeviceAddress}未匹配到具体数据模型,被禁止。");
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("业务系统设备服务调失败,未匹配到具体数据模型", -108);
}
var packetTaskInfo = GetDeviceTelemetryPacketTaskInfo(ioTDBOptions, input, deviceInfo.Adapt<DeviceCacheInfos>(), commands.Serialize());
//数据写入遥测任务数据存储通道
await ioTDBDataChannelManageService.DeviceTelemetryTaskWriterAsync(DataChannelManage.DeviceTelemetryTaskDataChannel.Writer, (DistributedMessageCenterConst.OneNETCommandIssuedEventName, packetTaskInfo));
var queryResult = await CallDeviceServiceToOneNET(deviceInfo, new CallDeviceServiceForApiInput()
{
ServiceParams = messageBody.Commands,
ServiceName = messageBody.ServiceName,
});
if (queryResult == null || queryResult.Count <= 0)
{
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("业务系统设备服务调失败OneNET平台未返回数据", -109);
}
Dictionary<string, object> result = new Dictionary<string, object>();
foreach (var item in commands)
{
result.Add(item.Value, queryResult[item.Key]);
}
return HttpDataResultExtensions.Success<Dictionary<string, object>>(result);
}
else if (deviceInfo.IoTPlatform == IoTPlatformTypeEnum.CTWing)
{
//await redisPubSubService.PublishReliableAsync(DistributedMessageCenterConst.CTWingAepCommandIssuedEventName, input);
}
else
{
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("指令处理失败,当前设备平台类型异常", -110);
}
return HttpDataResultExtensions.Success<Dictionary<string, object>>("指令下发成功");
}
catch (UserFriendlyException ex)
{
_logger.LogError(ex, "接收业务系统指令信息时发生异常");
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("设备属性数据获取失败,发送异常", -111);
}
catch (Exception ex)
{
_logger.LogError(ex, "接收业务系统指令信息时发生异常");
return HttpDataResultExtensions.Failed<Dictionary<string, object>>("设备属性数据获取失败,发送异常", -112);
}
}
}
}

View File

@ -638,60 +638,6 @@ namespace JiShe.IoT.DeviceAggregation
}
/// <summary>
/// 调用OneNET平台设备服务
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<Dictionary<string, object>> CallDeviceServiceToOneNETForApiAsync(CallDeviceServiceForApiInput input)
{
try
{
if (string.IsNullOrWhiteSpace(input.ServiceName) || input.ServiceParams == null || input.ServiceParams.Count <= 0)
{
throw new UserFriendlyException($"服务名称参数异常");
}
var deviceInfo = await deviceAppService.FindByIdAsync(input);
if (deviceInfo == null)
{
throw new UserFriendlyException($"设备不存在");
}
//数据写入遥测任务数据存储通道
var commandRequest = new OpenApiRequest()
{
Message = input.Serialize(),
};
var packetTaskInfo = GetDeviceTelemetryPacketTaskInfo(ioTDBOptions, commandRequest, deviceInfo.Adapt<DeviceCacheInfos>(), input.Serialize());
packetTaskInfo.TelemetryType = (int)DeviceTelemetryCommandTypeEnum.GetAttributeData;
if (deviceInfo.IoTPlatform == IoTPlatformTypeEnum.OneNET)
{
await ioTDBDataChannelManageService.DeviceTelemetryTaskWriterAsync(DataChannelManage.DeviceTelemetryTaskDataChannel.Writer, (DistributedMessageCenterConst.OneNETUpgradeCommandIssuedEventName, packetTaskInfo));
return await CallDeviceServiceToOneNET(deviceInfo, input);
}
else if (deviceInfo.IoTPlatform == IoTPlatformTypeEnum.CTWing)
{
//await redisPubSubService.PublishReliableAsync(DistributedMessageCenterConst.CTWingAepCommandIssuedEventName,commandRequest);
//return true;
throw new UserFriendlyException($"发送设备指令信息失败CTWing暂未实现。");
}
else
{
throw new UserFriendlyException($"发送设备指令信息失败,未找到对应的产品配置信息。");
}
}
catch (Exception)
{
throw;
}
}
#region CTWing
/// <summary>
/// CTWing 设备创建

View File

@ -10,7 +10,6 @@ using JiShe.ServicePro.FreeSqlProvider;
using JiShe.ServicePro.IoTDBManagement;
using JiShe.ServicePro.OneNETManagement;
using JiShe.ServicePro.OneNETManagement.Subscribers;
using JiShe.ServicePro.PulsarProvider;
using JiShe.ServicePro.TemplateManagement;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
@ -31,7 +30,6 @@ namespace JiShe.IoT
typeof(ServiceProFreeRedisProviderModule),
typeof(CTWingManagementApplicationModule),
typeof(OneNETManagementApplicationModule),
typeof(ServiceProPulsarProviderModule),
typeof(JiSheServiceProEMQXProviderModule),
typeof(DeviceManagementApplicationModule)
)]

View File

@ -34,12 +34,12 @@ namespace JiShe.IoT
{
protected readonly ILogger<IoTDeviceBasicAppService> logger;
protected readonly IDeviceAppService deviceAppService;
protected readonly IOneNETProductService oneNETProductService;
protected readonly IOneNETDeviceService oneNETDeviceService;
protected readonly IReliableRedisPubSubService redisPubSubService;
protected readonly IIoTDBDataChannelManageService ioTDBDataChannelManageService;
protected readonly IoTDBOptions ioTDBOptions;
protected readonly ServerApplicationOptions serverApplicationOptions;
protected readonly IOneNETProductService oneNETProductService;
protected readonly IDeviceThingModelManagementAppService deviceThingModelService;
protected readonly IIoTPlatformThingModelInfoAppService platformThingModelInfoAppService;
protected readonly IDeviceUpgradeRecordService deviceUpgradeRecordService;
@ -802,70 +802,6 @@ namespace JiShe.IoT
throw;
}
}
/// <summary>
/// 调用OneNET平台设备服务
/// </summary>
/// <param name="deviceInfo"></param>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
protected async Task<Dictionary<string, object>> CallDeviceServiceToOneNET(DeviceManagementInfoDto deviceInfo, CallDeviceServiceForApiInput input)
{
try
{
//检查下设备是否在线
var deviceOnlineStatus = await oneNETDeviceService.DeviceInfoDetailAsync(new DeviceInfoDetailInput()
{
DeviceName = deviceInfo.IoTPlatformDeviceOpenInfo,
OneNETAccountId = deviceInfo.IoTPlatformAccountId,
ProductId = deviceInfo.IoTPlatformProductId,
});
if (deviceOnlineStatus == null || deviceOnlineStatus.Code != ResponeResultEnum.Success)
{
throw new UserFriendlyException("获取平台设备信息失败");
}
if (deviceOnlineStatus.Data.Status != 1)
{
throw new UserFriendlyException("设备不在线");
}
var deviceDataResult = await oneNETDeviceService.CallDeviceService(new CallDeviceServiceRequestInput()
{
DeviceName = deviceInfo.IoTPlatformDeviceOpenInfo,
OneNETAccountId = deviceInfo.IoTPlatformAccountId,
ProductId = deviceInfo.IoTPlatformProductId,
ThingModelIdentifier = input.ServiceName,
ServiceParams = input.ServiceParams
});
if (deviceDataResult == null || deviceDataResult.Success == false || deviceDataResult.Data == null)
{
throw new UserFriendlyException($"设备{deviceInfo.DeviceName}获取数据失败");
}
//调用平台设备服务
var platformThingModelInfo = await platformThingModelInfoAppService.FindByPlatformProductIdAsync(new IdInput<string>() { Id = deviceInfo.IoTPlatformProductId });
if (platformThingModelInfo == null || platformThingModelInfo.Count <= 0)
{
return deviceDataResult.Data;
}
List<string> updateKeys = new List<string>()
{
ThingModelFixedTypeConst.FIRMWARE_VERSION.ToLowerInvariant(),
ThingModelFixedTypeConst.ReadingMode.ToLowerInvariant()
};
return deviceDataResult.Data;
}
catch (Exception ex)
{
throw;
}
}
#endregion
#region CTWing

View File

@ -7,12 +7,8 @@ using JiShe.ServicePro.CTWingManagement.CTWingProducts;
using JiShe.ServicePro.DeviceManagement.ThingModels;
using JiShe.ServicePro.Enums;
using JiShe.ServicePro.FreeRedisProvider;
using JiShe.ServicePro.IoTDBManagement.TableModels;
using JiShe.ServicePro.IoTDBManagement.TreeModels;
using JiShe.ServicePro.OneNET.Provider.ReceiveModels;
using JiShe.ServicePro.OneNETManagement.OneNETAccounts;
using JiShe.ServicePro.OneNETManagement.OneNETProducts;
using JiShe.ServicePro.OneNETManagement.Subscribers;
using Microsoft.AspNetCore.DataProtection.KeyManagement;
using Microsoft.Extensions.Logging;
using System;
@ -35,9 +31,6 @@ namespace JiShe.IoT.IoTPlatformAggregation
private readonly ICTWingAccountService _ctwingAccountService;
private readonly IOneNETAccountService _oneNETAccountService;
private readonly IIoTPlatformThingModelInfoAppService _ioTPlatformThingModelInfoAppService;
private readonly IOneNETPulsarServiceSubscriptionService _oneNETPulsarServiceSubscriptionService;
private readonly ITableModelService _tableModelService;
public IoTPlatformAggregationService(ILogger<IoTPlatformAggregationService> logger,
@ -45,8 +38,6 @@ namespace JiShe.IoT.IoTPlatformAggregation
IOneNETProductService oneNetProductService,
ICTWingAccountService ctwingAccountService,
IOneNETAccountService oneNETAccountService,
IOneNETPulsarServiceSubscriptionService oneNETPulsarServiceSubscriptionService,
ITableModelService tableModelService,
IIoTPlatformThingModelInfoAppService ioTPlatformThingModelInfoAppService)
{
_logger = logger;
@ -55,8 +46,6 @@ namespace JiShe.IoT.IoTPlatformAggregation
_ctwingAccountService = ctwingAccountService;
_oneNETAccountService = oneNETAccountService;
_ioTPlatformThingModelInfoAppService = ioTPlatformThingModelInfoAppService;
_oneNETPulsarServiceSubscriptionService = oneNETPulsarServiceSubscriptionService;
_tableModelService = tableModelService;
}
/// <summary>
@ -360,37 +349,5 @@ namespace JiShe.IoT.IoTPlatformAggregation
throw;
}
}
/// <summary>
/// OneNET 数据日志处理重新处理
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task IoTPlatformDataLogReHandlerAsync(QueryOneNETReceiveMessageInput input)
{
try
{
var oneNETDataLoglist = await _tableModelService.OneNETLogInfoPageAsync(input);
if (oneNETDataLoglist == null || oneNETDataLoglist.Items == null || oneNETDataLoglist.Items.Count <= 0)
{
_logger.LogError($"{nameof(IoTPlatformDataLogReHandlerAsync)}OneNET数据日志处理重新处理失败未获取到数据");
return;
}
foreach (var item in oneNETDataLoglist.Items)
{
string topicName = string.Equals(item.MessageType, IoTDBDataTypeConst.Data, StringComparison.OrdinalIgnoreCase) ? DistributedMessageCenterConst.OneNETThingModelPropertyChangeReceivedEventName : DistributedMessageCenterConst.OneNETThingModelEventChangeReceivedEventName;
var tempOneNETReceiveBasicModel = item.RawMessage.Deserialize<OneNETReceiveBasicModel>();
await _oneNETPulsarServiceSubscriptionService.OneNETReceiveThingModelHandlerAsync(topicName, item.IoTDataType, tempOneNETReceiveBasicModel, true);
}
}
catch (Exception)
{
throw;
}
}
}
}

View File

@ -1,4 +1,3 @@
using JiShe.ServicePro.PulsarProvider;
using Volo.Abp.Localization;
namespace JiShe.IoT.DbMigrator

View File

@ -1,37 +1,42 @@
{
"App": {
"SelfUrl": "http://localhost:44315",
"CorsOrigins": "https://*.IoT.com,http://localhost:4200,http://localhost:3100,http://localhost:80,http://10.10.10.104:4200"
},
"ConnectionStrings": {
"Default": "Host=47.110.53.196;Port=35432;Database=jisheiotprodb68;Username=postgres;Password=JiShe!aqG#5kGgh&0;Encoding=UTF8;Pooling=true;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=100;"
//"Default": "Data Source=192.168.111.174;Port=13306;Database=JiSheIoTProDB386;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;TreatTinyAsBoolean=false;SslMode=None;Pooling=true;"
"Default": "Host=192.168.111.174;Port=5432;Database=jisheiotprodb;Username=postgres;Password=JiShe!aqG#5kGgh&0;Encoding=UTF8;Pooling=true;Pooling=true;Minimum Pool Size=5;Maximum Pool Size=100;"
},
"Hangfire": {
"Redis": {
"Host": "47.110.53.196:30712,password=1q3J@BGf!yhTaD46nS#",
"DB": "2"
}
"IoTDBOptions": {
"UserName": "root",
"Password": "Lixiao@1980",
//"TreeModelClusterList": [ "192.168.111.174:6667", "47.110.60.222:6667", "47.110.62.104:6667" ],
//"TableModelClusterList": [ "192.168.111.174:6667", "47.110.60.222:6667", "47.110.62.104:6667" ],
"TreeModelClusterList": [ "192.168.111.174:30710" ],
"TableModelClusterList": [ "192.168.111.174:30710" ],
"PoolSize": 32,
"DataBaseName": "jisheiotdata",
"OpenDebugMode": false,
"UseTableSessionPoolByDefault": false
},
"Redis": {
"Configuration": "47.110.53.196:30712,password=1q3J@BGf!yhTaD46nS#,defaultdatabase=5"
"FreeRedisOptions": {
"ConnectionString": "192.168.111.42:30712,password=1q3J@BGf!yhTaD46nS#,abortConnect=false,connectTimeout=30000,allowAdmin=true,maxPoolSize=500,defaultdatabase=14",
"UseDistributedCache": true
},
"Kafka": {
"BootstrapServers": "47.110.62.104:9094,47.110.53.196:9094,47.110.60.222:9094",
"EnableFilter": true,
"EnableAuthorization": false,
"SaslUserName": "lixiao",
"SaslPassword": "lixiao@1980",
"KafkaReplicationFactor": 3,
"NumPartitions": 30,
"TaskThreadCount": -1
"ServerApplicationOptions": {
"ServerTagName": "JiSheCollectBus10",
"FirstCollectionTime": "2025-04-28 15:07:00",
"AutomaticVerificationTime": "16:07:00",
"AutomaticTerminalVersionTime": "17:07:00",
"AutomaticTelematicsModuleTime": "17:30:00",
"AutomaticDayFreezeTime": "02:30:00",
"AutomaticMonthFreezeTime": "03:30:00",
"DefaultProtocolPlugin": "T37612012ProtocolPlugin",
"VerifySignatureToken": "SIcPQnpMgaFDmNlIjNmzq5smshz7cKrh",
"DistributedMessage": 2
},
"Pulsar": {
"ServiceUrl": "pulsar://47.110.53.196:9093", //pulsar+ssl://iot-north-mq.heclouds.com:6651 pulsar://47.110.53.196:26974
"WebUrl": "http://47.110.53.196:9094",
"ServiceUrl": "pulsar://47.110.60.222:9093",
"WebUrl": "http://47.110.60.222:9094",
"UserName": "admin",
"TenantName": "1YMVZZkAkRArjxSD8457",
"Namespace": "OneNET",
"MessageTTL": 3600,
"PulsarSecretKey": "0fd7afb8b0d04e6abc4fdfdac2190a79",
"PulsarSubscriptionCustomName": "sub",
"EnableTls": false,
@ -44,78 +49,10 @@
"DefaultPartitions": 16,
"DefaultBundles": 16,
"EnableAutoCreation": true, //Topic
"TopicMode": "Static", //DynamicStatic
"TopicMode": "Static", //Dynamic
"EnableTopicTypeFilter": true, //Topic
"AllowedTopicTypes": [ "Static" ], //Topic
"AllowedClusters": [ "pulsar-cluster-1" ], //
"AdminRoles": [ "admin" ],
"EnableConsumerIdleCleanup": true,
"ConsumerIdleCleanupMinutes": 120,
"EnableProducerIdleCleanup": true,
"ProducerIdleCleanupMinutes": 60
},
"IoTDBOptions": {
"UserName": "root",
"Password": "Li#xiao@198!0",
//"TreeModelClusterList": [ "47.110.53.196:6667", "47.110.60.222:6667", "47.110.62.104:6667" ],
//"TableModelClusterList": [ "47.110.53.196:6667", "47.110.60.222:6667", "47.110.62.104:6667" ],
"TreeModelClusterList": [ "47.110.53.196:30710" ],
"TableModelClusterList": [ "47.110.53.196:30710" ],
"PoolSize": 32,
"DataBaseName": "jisheiotdata",
"OpenDebugMode": true,
"UseTableSessionPoolByDefault": false,
"BatchInsertSize": 1000
},
"ServerApplicationOptions": {
"ServerTagName": "JiSheCollectBus12",
"FirstCollectionTime": "2025-04-28 15:07:00",
"AutomaticVerificationTime": "16:07:00",
"AutomaticTerminalVersionTime": "17:07:00",
"AutomaticTelematicsModuleTime": "17:30:00",
"AutomaticDayFreezeTime": "02:30:00",
"AutomaticMonthFreezeTime": "03:30:00",
"DefaultProtocolPlugin": "T37612012ProtocolPlugin",
"SignatureToken": "SIcPQnpMgaFDmNlIjNmzq5smshz7cKrh",
"AesSecurityKey": "RPTEIGCA1KvDEXS1",
"IsAesEncrypted": false,
"DistributedMessage": 2,
"SnowflakeWorkerId": 1,
"DownloadDeviceFirmwareBasicUrl": "http://121.42.175.177:32580/Aggregation/Device/DownloadFirmware?Id=",
"MQTTServerType": 1
},
"Jwt": {
"Audience": "JiShe.IoT",
"SecurityKey": "dzehzRz9a8asdfaf43ghVD@d#fasdfaf567sdadfasdf=",
"Issuer": "JiShe.IoT",
"ExpirationTime": 2
},
"Cap": {
"RabbitMq": {
"HostName": "localhost",
"UserName": "admin",
"Password": "1q2w3E*",
"Port": 5672
}
},
"FreeRedisOptions": {
"ConnectionString": "47.110.53.196:30712,password=1q3J@BGf!yhTaD46nS#,abortConnect=false,connectTimeout=30000,allowAdmin=true,maxPoolSize=500,defaultdatabase=14",
"UseDistributedCache": true
},
"FreeSqlProviderOptions": {
"UsePrepayDB": false,
"UseEnergyDB": false,
"PrintLog": false,
"DataType": 1
},
"OneNETSecureReceiveOptions": {
"OneNETVerifySignatureToken": "SIcPQnpMgaFDmNlIjNmzq5smshz7cKrh",
"OneNETAesKey": "RPTEIGCA1KvDEXS1"
},
"DataChannelOptions": {
"DefaultBatchSize": 10000,
"TelemetryBatchSize": 10000,
"EmptyWaitmilliseconds": 500,
"TimeoutMilliseconds": 500
"AdminRoles": [ "admin" ]
}
}

View File

@ -10,18 +10,9 @@ using JiShe.ServicePro.TemplateManagement;
namespace JiShe.IoT
{
[DependsOn(
typeof(BasicManagementDomainSharedModule),
typeof(NotificationManagementDomainSharedModule),
typeof(DataDictionaryManagementDomainSharedModule),
typeof(LanguageManagementDomainSharedModule),
typeof(TemplateManagementDomainSharedModule),
typeof(DynamicMenuManagementDomainSharedModule),
typeof(FileManagementDomainSharedModule),
typeof(ServiceProDomainSharedModule),
typeof(IoTDBManagementDomainSharedModule),
typeof(CTWingManagementDomainSharedModule),
typeof(OneNETManagementDomainSharedModule),
typeof(ServiceProCoreModule),
typeof(DeviceManagementDomainSharedModule)
typeof(ServiceProCoreModule)
)]
public class IoTDomainSharedModule : AbpModule
{

View File

@ -1,50 +1,32 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>$(DotnetTargetFrameworkVersion)</TargetFramework>
<RootNamespace>JiShe.IoT</RootNamespace>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>$(DotnetTargetFrameworkVersion)</TargetFramework>
<RootNamespace>JiShe.IoT</RootNamespace>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Include="Localization\IoT\*.json" />
<Content Remove="Localization\IoT\*.json" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Localization\IoT\*.json" />
<Content Remove="Localization\IoT\*.json" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Debug'" Label="Debug">
<ProjectReference Include="..\..\JiShe.ServicePro\modules\BasicManagement\src\JiShe.ServicePro.BasicManagement.Domain.Shared\JiShe.ServicePro.BasicManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\CTWingManagement\src\JiShe.ServicePro.CTWingManagement.Domain.Shared\JiShe.ServicePro.CTWingManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\DataDictionaryManagement\src\JiShe.ServicePro.DataDictionaryManagement.Domain.Shared\JiShe.ServicePro.DataDictionaryManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\DeviceManagement\src\JiShe.ServicePro.DeviceManagement.Domain.Shared\JiShe.ServicePro.DeviceManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\DynamicMenuManagement\src\JiShe.ServicePro.DynamicMenuManagement.Domain.Shared\JiShe.ServicePro.DynamicMenuManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\FileManagement\src\JiShe.ServicePro.FileManagement.Domain.Shared\JiShe.ServicePro.FileManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\IoTDBManagement\src\JiShe.ServicePro.IoTDBManagement.Domain.Shared\JiShe.ServicePro.IoTDBManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\LanguageManagement\src\JiShe.ServicePro.LanguageManagement.Domain.Shared\JiShe.ServicePro.LanguageManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\NotificationManagement\src\JiShe.ServicePro.NotificationManagement.Domain.Shared\JiShe.ServicePro.NotificationManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\TemplateManagement\src\JiShe.ServicePro.TemplateManagement.Domain.Shared\JiShe.ServicePro.TemplateManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\OneNETManagement\src\JiShe.ServicePro.OneNETManagement.Domain.Shared\JiShe.ServicePro.OneNETManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\frameworks\src\JiShe.ServicePro.Core\JiShe.ServicePro.Core.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\shared\JiShe.ServicePro.Shared.DynamicAnalyzerEngine\JiShe.ServicePro.Shared.DynamicAnalyzerEngine.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\shared\JiShe.ServicePro.Domain.Shared\JiShe.ServicePro.Domain.Shared.csproj" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Release'" Label="Release">
<PackageReference Include="JiShe.ServicePro.BasicManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.NotificationManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.DataDictionaryManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.LanguageManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.TemplateManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.DynamicMenuManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.FileManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.IoTDBManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.DeviceManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.Core" />
<PackageReference Include="JiShe.ServicePro.CTWingManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.OneNETManagement.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.Core" />
<PackageReference Include="JiShe.ServicePro.Shared.DynamicAnalyzerEngine" />
<PackageReference Include="JiShe.ServicePro.Domain.Shared" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Core" />
</ItemGroup>
</Project>

View File

@ -1,3 +1,4 @@
using JiShe.ServicePro;
using JiShe.ServicePro.CTWingManagement;
using JiShe.ServicePro.DeviceManagement;
using JiShe.ServicePro.DynamicMenuManagement;
@ -11,18 +12,8 @@ namespace JiShe.IoT
{
[DependsOn(
typeof(IoTDomainSharedModule),
typeof(BasicManagementDomainModule),
typeof(NotificationManagementDomainModule),
typeof(DataDictionaryManagementDomainModule),
typeof(LanguageManagementDomainModule),
typeof(TemplateManagementDomainModule),
typeof(FileManagementDomainModule),
typeof(IoTDBManagementDomainModule),
typeof(DynamicMenuManagementDomainModule),
typeof(CTWingManagementDomainModule),
typeof(OneNETManagementDomainModule),
typeof(ServiceProFreeSqlProviderModule),
typeof(DeviceManagementDomainModule)
typeof(ServiceProDomainModule)
)]
public class IoTDomainModule : AbpModule
{

View File

@ -1,45 +1,26 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>$(DotnetTargetFrameworkVersion)</TargetFramework>
<RootNamespace>JiShe.IoT</RootNamespace>
<PropertyGroup>
<TargetFramework>$(DotnetTargetFrameworkVersion)</TargetFramework>
<RootNamespace>JiShe.IoT</RootNamespace>
<NoWarn>$(NoWarn);1591;1570</NoWarn>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
</PropertyGroup>
</PropertyGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Debug'" Label="Debug">
<ProjectReference Include="..\..\JiShe.ServicePro\modules\BasicManagement\src\JiShe.ServicePro.BasicManagement.Domain\JiShe.ServicePro.BasicManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\CTWingManagement\src\JiShe.ServicePro.CTWingManagement.Domain\JiShe.ServicePro.CTWingManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\DataDictionaryManagement\src\JiShe.ServicePro.DataDictionaryManagement.Domain\JiShe.ServicePro.DataDictionaryManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\DeviceManagement\src\JiShe.ServicePro.DeviceManagement.Domain\JiShe.ServicePro.DeviceManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\DynamicMenuManagement\src\JiShe.ServicePro.DynamicMenuManagement.Domain\JiShe.ServicePro.DynamicMenuManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\FileManagement\src\JiShe.ServicePro.FileManagement.Domain\JiShe.ServicePro.FileManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\IoTDBManagement\src\JiShe.ServicePro.IoTDBManagement.Domain\JiShe.ServicePro.IoTDBManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\LanguageManagement\src\JiShe.ServicePro.LanguageManagement.Domain\JiShe.ServicePro.LanguageManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\NotificationManagement\src\JiShe.ServicePro.NotificationManagement.Domain\JiShe.ServicePro.NotificationManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\TemplateManagement\src\JiShe.ServicePro.TemplateManagement.Domain\JiShe.ServicePro.TemplateManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\modules\OneNETManagement\src\JiShe.ServicePro.OneNETManagement.Domain\JiShe.ServicePro.OneNETManagement.Domain.csproj" />
<ProjectReference Include="..\..\JiShe.ServicePro\shared\JiShe.ServicePro.Domain\JiShe.ServicePro.Domain.csproj" />
<ProjectReference Include="..\JiShe.IoT.Domain.Shared\JiShe.IoT.Domain.Shared.csproj" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Release'" Label="Release">
<PackageReference Include="JiShe.ServicePro.BasicManagement.Domain" />
<PackageReference Include="JiShe.ServicePro.NotificationManagement.Domain" />
<PackageReference Include="JiShe.ServicePro.DataDictionaryManagement.Domain" />
<PackageReference Include="JiShe.ServicePro.LanguageManagement.Domain" />
<PackageReference Include="JiShe.ServicePro.TemplateManagement.Domain" />
<PackageReference Include="JiShe.ServicePro.DynamicMenuManagement.Domain" />
<PackageReference Include="JiShe.ServicePro.FileManagement.Domain" />
<PackageReference Include="JiShe.IoT.Domain.Shared" />
<PackageReference Include="JiShe.ServicePro.Domain" />
<PackageReference Include="JiShe.ServicePro.IoTDBManagement.Domain" />
<PackageReference Include="JiShe.ServicePro.DeviceManagement.Domain" />
<PackageReference Include="JiShe.ServicePro.CTWingManagement.Domain" />
<PackageReference Include="JiShe.ServicePro.OneNETManagement.Domain" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\JiShe.IoT.Domain.Shared\JiShe.IoT.Domain.Shared.csproj" />
</ItemGroup>
</Project>

View File

@ -89,7 +89,6 @@ namespace JiShe.IoT.EntityFrameworkCore
public DbSet<OneNETAccountInfos> OneNETAccountInfo { get; set; }
public DbSet<OneNETProductInfos> OneNETProductInfo { get; set; }
public DbSet<ResourcePermissionGrant> ResourcePermissionGrants { get; set; }
public IoTDbContext(DbContextOptions<IoTDbContext> options)
: base(options)

View File

@ -7,9 +7,9 @@
<ItemGroup>
<ProjectReference Include="..\JiShe.IoT.Domain\JiShe.IoT.Domain.csproj" />
<PackageReference Include="Volo.Abp.EntityFrameworkCore.PostgreSql" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="5.3.0" />
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="5.3.0" />
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="5.3.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="5.0.0" />
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="5.0.0" />
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="5.0.0" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Debug'" Label="Debug">

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,5 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
using Newtonsoft.Json.Linq;
#nullable disable
@ -398,10 +397,8 @@ namespace JiShe.IoT.Migrations
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
GroupName = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: true),
GroupName = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: false),
Name = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: false),
ResourceName = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
ManagementPermissionName = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: true),
ParentName = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: true),
DisplayName = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: false),
IsEnabled = table.Column<bool>(type: "boolean", nullable: false),
@ -415,23 +412,6 @@ namespace JiShe.IoT.Migrations
table.PrimaryKey("PK_AbpPermissions", x => x.Id);
});
migrationBuilder.CreateTable(
name: "AbpResourcePermissionGrants",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
TenantId = table.Column<Guid>(type: "uuid", nullable: true),
Name = table.Column<string>(type: "character varying(128)", maxLength: 128, nullable: false),
ProviderName = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false),
ProviderKey = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false),
ResourceName = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: false),
ResourceKey = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AbpResourcePermissionGrants", x => x.Id);
});
migrationBuilder.CreateTable(
name: "AbpRoles",
columns: table => new
@ -599,7 +579,6 @@ namespace JiShe.IoT.Migrations
ShouldChangePasswordOnNextLogin = table.Column<bool>(type: "boolean", nullable: false),
EntityVersion = table.Column<int>(type: "integer", nullable: false),
LastPasswordChangeTime = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: true),
LastSignInTime = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: true),
ExtraProperties = table.Column<string>(type: "text", nullable: false),
ConcurrencyStamp = table.Column<string>(type: "character varying(40)", maxLength: 40, nullable: false),
CreationTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
@ -756,12 +735,11 @@ namespace JiShe.IoT.Migrations
LastOnlineTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: true, comment: "最后在线时间"),
LastOfflineTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: true, comment: "最后离线时间"),
DeviceSource = table.Column<int>(type: "integer", nullable: false, comment: "设备来源类型"),
IsNeedConfigDeviceModel = table.Column<bool>(type: "boolean", nullable: false, comment: "是否需要配置设备模型"),
IsNeedConfigDevicMdoel = table.Column<bool>(type: "boolean", nullable: false, comment: "是否需要配置设备模型"),
DeviceThingModelDataId = table.Column<Guid>(type: "uuid", nullable: true, comment: "设备物模型数据Id"),
FirmwareVersion = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true, comment: "固件版本"),
UpgradeDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true, comment: "升级日期"),
SubDeviceCapacity = table.Column<int>(type: "integer", nullable: false, defaultValue: 64, comment: "子设备容量"),
ReadingMode = table.Column<int>(type: "integer", nullable: false, defaultValue: 1, comment: "抄读模式"),
ConcurrencyStamp = table.Column<string>(type: "character varying(40)", maxLength: 40, nullable: false),
CreationTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
CreatorId = table.Column<Guid>(type: "uuid", nullable: true),
@ -794,7 +772,6 @@ namespace JiShe.IoT.Migrations
CommandName = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: false, comment: "指令名称"),
IssueCommand = table.Column<string>(type: "character varying(512)", maxLength: 512, nullable: false, comment: "完整的单个下发指令"),
PropertyArray = table.Column<string>(type: "character varying(1024)", maxLength: 1024, nullable: false, comment: "指令设备端物模型的属性名称集合,JSON格式字符串数组"),
IsEnable = table.Column<bool>(type: "boolean", nullable: false, comment: "是否启用"),
ConcurrencyStamp = table.Column<string>(type: "character varying(40)", maxLength: 40, nullable: false),
CreationTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
CreatorId = table.Column<Guid>(type: "uuid", nullable: true),
@ -939,17 +916,15 @@ namespace JiShe.IoT.Migrations
FiledType = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: false, comment: "物联网平台中对应产品物模型属性或者事件类型"),
IoTPlatformRawFieldName = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false, comment: "物联网平台中对应的产品物模型属性或者事件名称"),
IoTPlatformRawFieldDataType = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: true, comment: "物联网平台中对应的产品物模型属性或者事件数据类型"),
IoTPlatformRawFieldExtension = table.Column<JToken>(type: "jsonb", nullable: true, comment: "物联网平台中对应产品物模型标识符扩展,结构体或者数组的时候,是参数的名称与长度的键值对,其他类型就是长度或者值范围"),
StandardFieldName = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false, comment: "管理后台产品标准的物模型属性或者事件名称"),
StandardFieldValueType = table.Column<string>(type: "character varying(20)", maxLength: 20, nullable: false, comment: "标准物模型字段值类型"),
StandardFieldDisplayName = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false, comment: "管理后台产品标准的物模型属性或者事件名称"),
StandardFieldFieldExtension = table.Column<JToken>(type: "jsonb", nullable: true, comment: "标准物模型字段标识符扩展,数组或者结构体时候的参数或者元素名称集合"),
IsValueNeedConvert = table.Column<bool>(type: "boolean", nullable: false, comment: "是否需要值类型转换"),
IsSpecialIdentifier = table.Column<bool>(type: "boolean", nullable: false, comment: "是否是特殊物模型标识符"),
IoTPlatformRawFieldExtension = table.Column<string>(type: "text", nullable: true, comment: "物联网平台中对应产品物模型标识符扩展,结构体或者数组的时候,是参数的名称与长度的键值对,其他类型就是长度或者值范围"),
IsOperableIdentifier = table.Column<bool>(type: "boolean", nullable: false, comment: "是否可操作物模型标识符"),
AccessMode = table.Column<string>(type: "character varying(10)", maxLength: 10, nullable: false, defaultValue: "r", comment: "物模型标识符访问模式"),
IdentifierType = table.Column<int>(type: "integer", nullable: false, comment: "物模型标识符类型"),
CallServiceOperateCommand = table.Column<string>(type: "text", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "character varying(40)", maxLength: 40, nullable: false),
CreationTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
CreatorId = table.Column<Guid>(type: "uuid", nullable: true),
@ -1069,10 +1044,6 @@ namespace JiShe.IoT.Migrations
CommunicationAddress = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true, comment: "通讯服务地址"),
CommunicationAddressTLS = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true, comment: "TLS通讯服务地址"),
ThingModelInfos = table.Column<string>(type: "text", nullable: true, comment: "平台物模型信息"),
IsNeedPushData = table.Column<bool>(type: "boolean", nullable: false, defaultValue: false, comment: "是否需要推送数据"),
DataPushType = table.Column<int>(type: "integer", nullable: true, comment: "数据推送类型, 1-HttpPost2-ReisSubscription"),
DataPushServer = table.Column<string>(type: "text", nullable: true, comment: "数据推送服务地址信息例如HTTP地址http://192.168.1.1:8080Redis订阅地址192.168.1.1:6379"),
DataPushInfo = table.Column<string>(type: "text", nullable: true, comment: "数据推送信息,HTTP推送就是推送路径Redis推送主题或者key"),
ConcurrencyStamp = table.Column<string>(type: "character varying(40)", maxLength: 40, nullable: false),
CreationTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
CreatorId = table.Column<Guid>(type: "uuid", nullable: true),
@ -1242,7 +1213,6 @@ namespace JiShe.IoT.Migrations
Description = table.Column<string>(type: "character varying(1024)", maxLength: 1024, nullable: true),
IsEnabled = table.Column<bool>(type: "boolean", nullable: false),
ExtendedAttribute = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
ExtendedAttributeValue = table.Column<string>(type: "character varying(2048)", maxLength: 2048, nullable: true),
CreationTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
CreatorId = table.Column<Guid>(type: "uuid", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
@ -1396,46 +1366,6 @@ namespace JiShe.IoT.Migrations
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AbpUserPasskeys",
columns: table => new
{
CredentialId = table.Column<byte[]>(type: "bytea", maxLength: 1024, nullable: false),
TenantId = table.Column<Guid>(type: "uuid", nullable: true),
UserId = table.Column<Guid>(type: "uuid", nullable: false),
Data = table.Column<string>(type: "jsonb", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AbpUserPasskeys", x => x.CredentialId);
table.ForeignKey(
name: "FK_AbpUserPasskeys_AbpUsers_UserId",
column: x => x.UserId,
principalTable: "AbpUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AbpUserPasswordHistories",
columns: table => new
{
UserId = table.Column<Guid>(type: "uuid", nullable: false),
Password = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: false),
TenantId = table.Column<Guid>(type: "uuid", nullable: true),
CreatedAt = table.Column<DateTimeOffset>(type: "timestamp with time zone", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AbpUserPasswordHistories", x => new { x.UserId, x.Password });
table.ForeignKey(
name: "FK_AbpUserPasswordHistories_AbpUsers_UserId",
column: x => x.UserId,
principalTable: "AbpUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AbpUserRoles",
columns: table => new
@ -1637,15 +1567,9 @@ namespace JiShe.IoT.Migrations
column: "GroupName");
migrationBuilder.CreateIndex(
name: "IX_AbpPermissions_ResourceName_Name",
name: "IX_AbpPermissions_Name",
table: "AbpPermissions",
columns: new[] { "ResourceName", "Name" },
unique: true);
migrationBuilder.CreateIndex(
name: "IX_AbpResourcePermissionGrants_TenantId_Name_ResourceName_Reso~",
table: "AbpResourcePermissionGrants",
columns: new[] { "TenantId", "Name", "ResourceName", "ResourceKey", "ProviderName", "ProviderKey" },
column: "Name",
unique: true);
migrationBuilder.CreateIndex(
@ -1730,11 +1654,6 @@ namespace JiShe.IoT.Migrations
table: "AbpUserOrganizationUnits",
columns: new[] { "UserId", "OrganizationUnitId" });
migrationBuilder.CreateIndex(
name: "IX_AbpUserPasskeys_UserId",
table: "AbpUserPasskeys",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_AbpUserRoles_RoleId_UserId",
table: "AbpUserRoles",
@ -2041,9 +1960,6 @@ namespace JiShe.IoT.Migrations
migrationBuilder.DropTable(
name: "AbpPermissions");
migrationBuilder.DropTable(
name: "AbpResourcePermissionGrants");
migrationBuilder.DropTable(
name: "AbpRoleClaims");
@ -2074,12 +1990,6 @@ namespace JiShe.IoT.Migrations
migrationBuilder.DropTable(
name: "AbpUserOrganizationUnits");
migrationBuilder.DropTable(
name: "AbpUserPasskeys");
migrationBuilder.DropTable(
name: "AbpUserPasswordHistories");
migrationBuilder.DropTable(
name: "AbpUserRoles");

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace JiShe.IoT.Migrations
{
/// <inheritdoc />
public partial class updatedevicethingmodel : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "IsEnable",
table: "ServiceProDeviceThingModelCommandInfo",
type: "boolean",
nullable: false,
defaultValue: false,
comment: "是否启用");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "IsEnable",
table: "ServiceProDeviceThingModelCommandInfo");
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace JiShe.IoT.Migrations
{
/// <inheritdoc />
public partial class updatedeviceinfo20260128 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<int>(
name: "ReadingMode",
table: "ServiceProDeviceInfo",
type: "integer",
nullable: false,
defaultValue: 1,
comment: "抄读模式");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "ReadingMode",
table: "ServiceProDeviceInfo");
}
}
}

View File

@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace JiShe.IoT.Migrations
{
/// <inheritdoc />
public partial class updatedeviceinfo202601281007 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "IsNeedConfigDevicMdoel",
table: "ServiceProDeviceInfo",
newName: "IsNeedConfigDeviceModel");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.RenameColumn(
name: "IsNeedConfigDeviceModel",
table: "ServiceProDeviceInfo",
newName: "IsNeedConfigDevicMdoel");
}
}
}

View File

@ -0,0 +1,52 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace JiShe.IoT.Migrations
{
/// <inheritdoc />
public partial class alertOneNETProduct20260310 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "DataPushInfo",
table: "ServiceProOneNETProductInfo",
type: "text",
nullable: true,
comment: "数据推送信息,HTTP推送就是推送地址Reist推送主题或者key");
migrationBuilder.AddColumn<int>(
name: "DataPushType",
table: "ServiceProOneNETProductInfo",
type: "integer",
nullable: true,
comment: "数据推送类型, 1-HttpPost2-ReisSubscription");
migrationBuilder.AddColumn<bool>(
name: "IsNeedPushData",
table: "ServiceProOneNETProductInfo",
type: "boolean",
nullable: false,
defaultValue: false,
comment: "是否需要推送数据");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "DataPushInfo",
table: "ServiceProOneNETProductInfo");
migrationBuilder.DropColumn(
name: "DataPushType",
table: "ServiceProOneNETProductInfo");
migrationBuilder.DropColumn(
name: "IsNeedPushData",
table: "ServiceProOneNETProductInfo");
}
}
}

View File

@ -5,7 +5,6 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Newtonsoft.Json.Linq;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using Volo.Abp.EntityFrameworkCore;
@ -14,8 +13,8 @@ using Volo.Abp.EntityFrameworkCore;
namespace JiShe.IoT.Migrations
{
[DbContext(typeof(IoTDbContext))]
[Migration("20260320152205_InitialCreate")]
partial class InitialCreate
[Migration("20260311060722_alterOneNETProductInfos20260311")]
partial class alterOneNETProductInfos20260311
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -23,7 +22,7 @@ namespace JiShe.IoT.Migrations
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql)
.HasAnnotation("ProductVersion", "10.0.5")
.HasAnnotation("ProductVersion", "10.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@ -536,10 +535,6 @@ namespace JiShe.IoT.Migrations
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<string>("ExtendedAttributeValue")
.HasMaxLength(2048)
.HasColumnType("character varying(2048)");
b.Property<bool>("IsEnabled")
.HasColumnType("boolean");
@ -1566,9 +1561,6 @@ namespace JiShe.IoT.Migrations
.HasDefaultValue("r")
.HasComment("物模型标识符访问模式");
b.Property<string>("CallServiceOperateCommand")
.HasColumnType("text");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
@ -1622,8 +1614,8 @@ namespace JiShe.IoT.Migrations
.HasColumnType("character varying(64)")
.HasComment("物联网平台中对应的产品物模型属性或者事件数据类型");
b.Property<JToken>("IoTPlatformRawFieldExtension")
.HasColumnType("jsonb")
b.Property<string>("IoTPlatformRawFieldExtension")
.HasColumnType("text")
.HasComment("物联网平台中对应产品物模型标识符扩展,结构体或者数组的时候,是参数的名称与长度的键值对,其他类型就是长度或者值范围");
b.Property<string>("IoTPlatformRawFieldName")
@ -1680,10 +1672,6 @@ namespace JiShe.IoT.Migrations
.HasColumnType("character varying(64)")
.HasComment("管理后台产品标准的物模型属性或者事件名称");
b.Property<JToken>("StandardFieldFieldExtension")
.HasColumnType("jsonb")
.HasComment("标准物模型字段标识符扩展,数组或者结构体时候的参数或者元素名称集合");
b.Property<string>("StandardFieldName")
.IsRequired()
.HasMaxLength(64)
@ -3534,9 +3522,6 @@ namespace JiShe.IoT.Migrations
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("timestamp with time zone");
b.Property<DateTimeOffset?>("LastSignInTime")
.HasColumnType("timestamp with time zone");
b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
@ -3732,47 +3717,6 @@ namespace JiShe.IoT.Migrations
b.ToTable("AbpUserOrganizationUnits", (string)null);
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasskey", b =>
{
b.Property<byte[]>("CredentialId")
.HasMaxLength(1024)
.HasColumnType("bytea");
b.Property<Guid?>("TenantId")
.HasColumnType("uuid")
.HasColumnName("TenantId");
b.Property<Guid>("UserId")
.HasColumnType("uuid");
b.HasKey("CredentialId");
b.HasIndex("UserId");
b.ToTable("AbpUserPasskeys", (string)null);
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasswordHistory", b =>
{
b.Property<Guid>("UserId")
.HasColumnType("uuid");
b.Property<string>("Password")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property<Guid?>("TenantId")
.HasColumnType("uuid")
.HasColumnName("TenantId");
b.HasKey("UserId", "Password");
b.ToTable("AbpUserPasswordHistories", (string)null);
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b =>
{
b.Property<Guid>("UserId")
@ -3937,16 +3881,13 @@ namespace JiShe.IoT.Migrations
.HasColumnName("ExtraProperties");
b.Property<string>("GroupName")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<bool>("IsEnabled")
.HasColumnType("boolean");
b.Property<string>("ManagementPermissionName")
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<byte>("MultiTenancySide")
.HasColumnType("smallint");
@ -3963,10 +3904,6 @@ namespace JiShe.IoT.Migrations
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<string>("ResourceName")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<string>("StateCheckers")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
@ -3975,7 +3912,7 @@ namespace JiShe.IoT.Migrations
b.HasIndex("GroupName");
b.HasIndex("ResourceName", "Name")
b.HasIndex("Name")
.IsUnique();
b.ToTable("AbpPermissions", (string)null);
@ -4040,48 +3977,6 @@ namespace JiShe.IoT.Migrations
b.ToTable("AbpPermissionGroups", (string)null);
});
modelBuilder.Entity("Volo.Abp.PermissionManagement.ResourcePermissionGrant", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uuid");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<string>("ProviderKey")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)");
b.Property<string>("ProviderName")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)");
b.Property<string>("ResourceKey")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<string>("ResourceName")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<Guid?>("TenantId")
.HasColumnType("uuid")
.HasColumnName("TenantId");
b.HasKey("Id");
b.HasIndex("TenantId", "Name", "ResourceName", "ResourceKey", "ProviderName", "ProviderKey")
.IsUnique();
b.ToTable("AbpResourcePermissionGrants", (string)null);
});
modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b =>
{
b.Property<Guid>("Id")
@ -4327,62 +4222,6 @@ namespace JiShe.IoT.Migrations
.IsRequired();
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasskey", b =>
{
b.HasOne("Volo.Abp.Identity.IdentityUser", null)
.WithMany("Passkeys")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.OwnsOne("Volo.Abp.Identity.IdentityPasskeyData", "Data", b1 =>
{
b1.Property<byte[]>("IdentityUserPasskeyCredentialId");
b1.Property<byte[]>("AttestationObject");
b1.Property<byte[]>("ClientDataJson");
b1.Property<DateTimeOffset>("CreatedAt");
b1.Property<bool>("IsBackedUp");
b1.Property<bool>("IsBackupEligible");
b1.Property<bool>("IsUserVerified");
b1.Property<string>("Name");
b1.Property<byte[]>("PublicKey");
b1.Property<long>("SignCount");
b1.PrimitiveCollection<string>("Transports");
b1.HasKey("IdentityUserPasskeyCredentialId");
b1.ToTable("AbpUserPasskeys");
b1
.ToJson("Data")
.HasColumnType("jsonb");
b1.WithOwner()
.HasForeignKey("IdentityUserPasskeyCredentialId");
});
b.Navigation("Data");
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasswordHistory", b =>
{
b.HasOne("Volo.Abp.Identity.IdentityUser", null)
.WithMany("PasswordHistories")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b =>
{
b.HasOne("Volo.Abp.Identity.IdentityRole", null)
@ -4468,10 +4307,6 @@ namespace JiShe.IoT.Migrations
b.Navigation("OrganizationUnits");
b.Navigation("Passkeys");
b.Navigation("PasswordHistories");
b.Navigation("Roles");
b.Navigation("Tokens");

View File

@ -0,0 +1,51 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace JiShe.IoT.Migrations
{
/// <inheritdoc />
public partial class alterOneNETProductInfos20260311 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "DataPushInfo",
table: "ServiceProOneNETProductInfo",
type: "text",
nullable: true,
comment: "数据推送信息,HTTP推送就是推送路径Redis推送主题或者key",
oldClrType: typeof(string),
oldType: "text",
oldNullable: true,
oldComment: "数据推送信息,HTTP推送就是推送地址Reist推送主题或者key");
migrationBuilder.AddColumn<string>(
name: "DataPushServer",
table: "ServiceProOneNETProductInfo",
type: "text",
nullable: true,
comment: "数据推送服务地址信息例如HTTP地址http://192.168.1.1:8080Redis订阅地址192.168.1.1:6379");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "DataPushServer",
table: "ServiceProOneNETProductInfo");
migrationBuilder.AlterColumn<string>(
name: "DataPushInfo",
table: "ServiceProOneNETProductInfo",
type: "text",
nullable: true,
comment: "数据推送信息,HTTP推送就是推送地址Reist推送主题或者key",
oldClrType: typeof(string),
oldType: "text",
oldNullable: true,
oldComment: "数据推送信息,HTTP推送就是推送路径Redis推送主题或者key");
}
}
}

View File

@ -4,7 +4,6 @@ using JiShe.IoT.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Newtonsoft.Json.Linq;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using Volo.Abp.EntityFrameworkCore;
@ -20,7 +19,7 @@ namespace JiShe.IoT.Migrations
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql)
.HasAnnotation("ProductVersion", "10.0.5")
.HasAnnotation("ProductVersion", "10.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@ -533,10 +532,6 @@ namespace JiShe.IoT.Migrations
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<string>("ExtendedAttributeValue")
.HasMaxLength(2048)
.HasColumnType("character varying(2048)");
b.Property<bool>("IsEnabled")
.HasColumnType("boolean");
@ -1563,9 +1558,6 @@ namespace JiShe.IoT.Migrations
.HasDefaultValue("r")
.HasComment("物模型标识符访问模式");
b.Property<string>("CallServiceOperateCommand")
.HasColumnType("text");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.IsRequired()
@ -1619,8 +1611,8 @@ namespace JiShe.IoT.Migrations
.HasColumnType("character varying(64)")
.HasComment("物联网平台中对应的产品物模型属性或者事件数据类型");
b.Property<JToken>("IoTPlatformRawFieldExtension")
.HasColumnType("jsonb")
b.Property<string>("IoTPlatformRawFieldExtension")
.HasColumnType("text")
.HasComment("物联网平台中对应产品物模型标识符扩展,结构体或者数组的时候,是参数的名称与长度的键值对,其他类型就是长度或者值范围");
b.Property<string>("IoTPlatformRawFieldName")
@ -1677,10 +1669,6 @@ namespace JiShe.IoT.Migrations
.HasColumnType("character varying(64)")
.HasComment("管理后台产品标准的物模型属性或者事件名称");
b.Property<JToken>("StandardFieldFieldExtension")
.HasColumnType("jsonb")
.HasComment("标准物模型字段标识符扩展,数组或者结构体时候的参数或者元素名称集合");
b.Property<string>("StandardFieldName")
.IsRequired()
.HasMaxLength(64)
@ -3531,9 +3519,6 @@ namespace JiShe.IoT.Migrations
b.Property<DateTimeOffset?>("LastPasswordChangeTime")
.HasColumnType("timestamp with time zone");
b.Property<DateTimeOffset?>("LastSignInTime")
.HasColumnType("timestamp with time zone");
b.Property<bool>("LockoutEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
@ -3729,47 +3714,6 @@ namespace JiShe.IoT.Migrations
b.ToTable("AbpUserOrganizationUnits", (string)null);
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasskey", b =>
{
b.Property<byte[]>("CredentialId")
.HasMaxLength(1024)
.HasColumnType("bytea");
b.Property<Guid?>("TenantId")
.HasColumnType("uuid")
.HasColumnName("TenantId");
b.Property<Guid>("UserId")
.HasColumnType("uuid");
b.HasKey("CredentialId");
b.HasIndex("UserId");
b.ToTable("AbpUserPasskeys", (string)null);
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasswordHistory", b =>
{
b.Property<Guid>("UserId")
.HasColumnType("uuid");
b.Property<string>("Password")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<DateTimeOffset>("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property<Guid?>("TenantId")
.HasColumnType("uuid")
.HasColumnName("TenantId");
b.HasKey("UserId", "Password");
b.ToTable("AbpUserPasswordHistories", (string)null);
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b =>
{
b.Property<Guid>("UserId")
@ -3934,16 +3878,13 @@ namespace JiShe.IoT.Migrations
.HasColumnName("ExtraProperties");
b.Property<string>("GroupName")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<bool>("IsEnabled")
.HasColumnType("boolean");
b.Property<string>("ManagementPermissionName")
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<byte>("MultiTenancySide")
.HasColumnType("smallint");
@ -3960,10 +3901,6 @@ namespace JiShe.IoT.Migrations
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<string>("ResourceName")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<string>("StateCheckers")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
@ -3972,7 +3909,7 @@ namespace JiShe.IoT.Migrations
b.HasIndex("GroupName");
b.HasIndex("ResourceName", "Name")
b.HasIndex("Name")
.IsUnique();
b.ToTable("AbpPermissions", (string)null);
@ -4037,48 +3974,6 @@ namespace JiShe.IoT.Migrations
b.ToTable("AbpPermissionGroups", (string)null);
});
modelBuilder.Entity("Volo.Abp.PermissionManagement.ResourcePermissionGrant", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uuid");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("character varying(128)");
b.Property<string>("ProviderKey")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)");
b.Property<string>("ProviderName")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)");
b.Property<string>("ResourceKey")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<string>("ResourceName")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("character varying(256)");
b.Property<Guid?>("TenantId")
.HasColumnType("uuid")
.HasColumnName("TenantId");
b.HasKey("Id");
b.HasIndex("TenantId", "Name", "ResourceName", "ResourceKey", "ProviderName", "ProviderKey")
.IsUnique();
b.ToTable("AbpResourcePermissionGrants", (string)null);
});
modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b =>
{
b.Property<Guid>("Id")
@ -4324,62 +4219,6 @@ namespace JiShe.IoT.Migrations
.IsRequired();
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasskey", b =>
{
b.HasOne("Volo.Abp.Identity.IdentityUser", null)
.WithMany("Passkeys")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.OwnsOne("Volo.Abp.Identity.IdentityPasskeyData", "Data", b1 =>
{
b1.Property<byte[]>("IdentityUserPasskeyCredentialId");
b1.Property<byte[]>("AttestationObject");
b1.Property<byte[]>("ClientDataJson");
b1.Property<DateTimeOffset>("CreatedAt");
b1.Property<bool>("IsBackedUp");
b1.Property<bool>("IsBackupEligible");
b1.Property<bool>("IsUserVerified");
b1.Property<string>("Name");
b1.Property<byte[]>("PublicKey");
b1.Property<long>("SignCount");
b1.PrimitiveCollection<string>("Transports");
b1.HasKey("IdentityUserPasskeyCredentialId");
b1.ToTable("AbpUserPasskeys");
b1
.ToJson("Data")
.HasColumnType("jsonb");
b1.WithOwner()
.HasForeignKey("IdentityUserPasskeyCredentialId");
});
b.Navigation("Data");
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserPasswordHistory", b =>
{
b.HasOne("Volo.Abp.Identity.IdentityUser", null)
.WithMany("PasswordHistories")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b =>
{
b.HasOne("Volo.Abp.Identity.IdentityRole", null)
@ -4465,10 +4304,6 @@ namespace JiShe.IoT.Migrations
b.Navigation("OrganizationUnits");
b.Navigation("Passkeys");
b.Navigation("PasswordHistories");
b.Navigation("Roles");
b.Navigation("Tokens");

View File

@ -6,7 +6,6 @@ using JiShe.ServicePro;
using JiShe.ServicePro.Commons;
using JiShe.ServicePro.Core;
using JiShe.ServicePro.DeviceManagement.DeviceInfos;
using JiShe.ServicePro.IoTDBManagement.TableModels;
namespace JiShe.IoT.Controllers
{
@ -70,18 +69,5 @@ namespace JiShe.IoT.Controllers
return await _iotPlatformAggregationService.UpdateIoTPlatformProductThingModelInfoAsync(input);
}
/// <summary>
/// OneNET数据日志处理重新处理
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost(nameof(IoTPlatformDataLogReHandlerAsync))]
[SwaggerOperation(summary: "OneNET数据日志处理重新处理", Tags = new[] { "AggregationIoTPlatform" })]
public async Task IoTPlatformDataLogReHandlerAsync(QueryOneNETReceiveMessageInput input)
{
await _iotPlatformAggregationService.IoTPlatformDataLogReHandlerAsync(input);
}
}
}