Former-commit-id: a983d13dcbfc083461b04c25333d15a1bdf0c1f2
TangShanKaiPing
wanggang 5 years ago
parent ec107c8ee3
commit 54f6ee4ffe

@ -64,3 +64,19 @@
## 物联网移动APP
主要提供设备查看和控制功能
## 其他
Docker容器内访问宿主机开发环境下网络需要修改.vs/projects/config/applicationhost.conf,添加
host.docker.internal绑定
```
<site name="UserCenter" id="2">
<application path="/" applicationPool="UserCenter AppPool">
<virtualDirectory path="/" physicalPath="D:\1.0\ZHXY\projects\UserCenter" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8010:localhost" />
<binding protocol="http" bindingInformation="*:8010:host.docker.internal" />
</bindings>
</site>
```

@ -1,25 +0,0 @@
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md

@ -4,6 +4,7 @@ obj
log
portainer
mysql
redis/data
influxdb
srs/objs

@ -5,15 +5,10 @@
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Deterministic>false</Deterministic>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\Version.cs" Link="Version.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.9" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Infrastructure\Infrastructure.csproj" />
<ProjectReference Include="..\IoT.Shared\IoT.Shared.csproj" />

@ -1,5 +1,5 @@
{
"AppSettings": {
"database": "sqlite"
"database": "mysql"
}
}

@ -0,0 +1,23 @@
{
"AppSettings": {
"database": "mysql"
},
"ConnectionStrings": {
"postgresql": "User ID=root;Host=postgresql;Port=26257;Database=iotcenter;CommandTimeout=120",
"mysql": "Server=mysql;Port=3306;Database=iotcenter;Uid=root;Pwd=root;",
"redis": "redis:6379,allowAdmin=true",
"srs": "http://srs:1985",
"JobServer": "http://jobserver/JobServer",
"JobCallBack": "http://iotcenter/IoTCenter/api/v1/Api/ExecTimer"
},
"influxdb": {
"url": "http://influxdb:8086",
"usr": "admin",
"pwd": "admin"
},
"logserver": {
"influxdb": {
"address": "http://influxdb"
}
}
}

@ -58,8 +58,8 @@
"ConnectionStrings": {
"postgresql": "User ID=root;Host=localhost;Port=26257;Database=iotcenter;CommandTimeout=120",
"sqlite": "Data Source=iotcenter.db",
"mysql": "Server=127.0.0.1;Port=3306;Database=iotcenter;Uid=root;Pwd=root;",
"redis": "127.0.0.1:6379,allowAdmin=true",
"mysql": "Server=localhost;Port=3306;Database=iotcenter;Uid=root;Pwd=root;",
"redis": "localhost:6379,allowAdmin=true",
"srs": "http://localhost:1985",
"JobServer": "http://localhost/JobServer",
"JobCallBack": "http://localhost/IoTCenter/api/v1/Api/ExecTimer"

@ -1,332 +1,356 @@
CREATE TABLE "iot_Category" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Category" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NULL,
"Image" TEXT NULL
CREATE TABLE `iot_Category` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NULL,
`Image` longtext CHARACTER SET utf8mb4 NULL,
CONSTRAINT `PK_iot_Category` PRIMARY KEY (`Id`)
);
CREATE TABLE "iot_LiveRecord" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_LiveRecord" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"DeviceNumber" TEXT NOT NULL,
"DeviceName" TEXT NULL,
"Name" TEXT NULL,
"Value" TEXT NULL
CREATE TABLE `iot_LiveRecord` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`DeviceNumber` longtext CHARACTER SET utf8mb4 NOT NULL,
`DeviceName` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Value` longtext CHARACTER SET utf8mb4 NULL,
CONSTRAINT `PK_iot_LiveRecord` PRIMARY KEY (`Id`)
);
CREATE TABLE "iot_Node" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Node" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"OrganName" TEXT NULL,
"OrganNumber" TEXT NOT NULL,
"CategoryName" TEXT NULL,
"CategoryNumber" TEXT NOT NULL,
"Name" TEXT NULL,
"Number" TEXT NOT NULL,
"IsOnline" INTEGER NOT NULL,
"Image" TEXT NULL,
"Version" TEXT NULL,
"DisplayOrder" INTEGER NOT NULL,
"Hidden" INTEGER NOT NULL
CREATE TABLE `iot_Node` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`OrganName` longtext CHARACTER SET utf8mb4 NULL,
`OrganNumber` longtext CHARACTER SET utf8mb4 NOT NULL,
`CategoryName` longtext CHARACTER SET utf8mb4 NULL,
`CategoryNumber` longtext CHARACTER SET utf8mb4 NOT NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`IsOnline` tinyint(1) NOT NULL,
`Image` longtext CHARACTER SET utf8mb4 NULL,
`Version` longtext CHARACTER SET utf8mb4 NULL,
`DisplayOrder` int NOT NULL,
`Hidden` tinyint(1) NOT NULL,
CONSTRAINT `PK_iot_Node` PRIMARY KEY (`Id`)
);
CREATE TABLE "iot_NodeCategory" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_NodeCategory" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NULL,
"Template" TEXT NULL,
"DisplayOrder" INTEGER NOT NULL
CREATE TABLE `iot_NodeCategory` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` varchar(255) CHARACTER SET utf8mb4 NULL,
`Number` longtext CHARACTER SET utf8mb4 NULL,
`Template` longtext CHARACTER SET utf8mb4 NULL,
`DisplayOrder` int NOT NULL,
CONSTRAINT `PK_iot_NodeCategory` PRIMARY KEY (`Id`)
);
CREATE TABLE "iot_Organ" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Organ" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NOT NULL,
"Image" TEXT NULL
CREATE TABLE `iot_Organ` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`Image` longtext CHARACTER SET utf8mb4 NULL,
CONSTRAINT `PK_iot_Organ` PRIMARY KEY (`Id`)
);
CREATE TABLE "iot_PermissionCategory" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_PermissionCategory" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NULL,
"Path" TEXT NULL,
"ParentId" TEXT NULL,
CONSTRAINT "FK_iot_PermissionCategory_iot_PermissionCategory_ParentId" FOREIGN KEY ("ParentId") REFERENCES "iot_PermissionCategory" ("Id") ON DELETE SET NULL
CREATE TABLE `iot_PermissionCategory` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NULL,
`Path` longtext CHARACTER SET utf8mb4 NULL,
`ParentId` char(36) NULL,
CONSTRAINT `PK_iot_PermissionCategory` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_PermissionCategory_iot_PermissionCategory_ParentId` FOREIGN KEY (`ParentId`) REFERENCES `iot_PermissionCategory` (`Id`) ON DELETE SET NULL
);
CREATE TABLE "iot_Role" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Role" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NOT NULL,
"IsReadOnly" INTEGER NOT NULL
CREATE TABLE `iot_Role` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`IsReadOnly` tinyint(1) NOT NULL,
CONSTRAINT `PK_iot_Role` PRIMARY KEY (`Id`)
);
CREATE TABLE "iot_Setting" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Setting" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NOT NULL,
"Value" TEXT NULL,
"Type" INTEGER NOT NULL
CREATE TABLE `iot_Setting` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NOT NULL,
`Value` longtext CHARACTER SET utf8mb4 NULL,
`Type` int NOT NULL,
CONSTRAINT `PK_iot_Setting` PRIMARY KEY (`Id`)
);
CREATE TABLE "iot_User" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_User" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"UserName" TEXT NOT NULL,
"NickName" TEXT NULL,
"Avatar" TEXT NULL,
"SecurityStamp" TEXT NULL,
"PasswordHash" TEXT NULL,
"Email" TEXT NULL
CREATE TABLE `iot_User` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`UserName` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`NickName` longtext CHARACTER SET utf8mb4 NULL,
`Avatar` longtext CHARACTER SET utf8mb4 NULL,
`SecurityStamp` longtext CHARACTER SET utf8mb4 NULL,
`PasswordHash` longtext CHARACTER SET utf8mb4 NULL,
`Email` varchar(255) CHARACTER SET utf8mb4 NULL,
CONSTRAINT `PK_iot_User` PRIMARY KEY (`Id`)
);
CREATE TABLE "iot_Product" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Product" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NOT NULL,
"Image" TEXT NULL,
"Path" TEXT NULL,
"ApiJson" TEXT NULL,
"DisplayOrder" INTEGER NOT NULL,
"CategoryId" TEXT NOT NULL,
CONSTRAINT "FK_iot_Product_iot_Category_CategoryId" FOREIGN KEY ("CategoryId") REFERENCES "iot_Category" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_Product` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`Image` longtext CHARACTER SET utf8mb4 NULL,
`Path` longtext CHARACTER SET utf8mb4 NULL,
`ApiJson` longtext CHARACTER SET utf8mb4 NULL,
`DisplayOrder` int NOT NULL,
`CategoryId` char(36) NOT NULL,
CONSTRAINT `PK_iot_Product` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_Product_iot_Category_CategoryId` FOREIGN KEY (`CategoryId`) REFERENCES `iot_Category` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_Scene" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Scene" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NOT NULL,
"Image" TEXT NOT NULL,
"Hidden" INTEGER NOT NULL,
"DisplayOrder" INTEGER NOT NULL,
"NodeId" TEXT NULL,
CONSTRAINT "FK_iot_Scene_iot_Node_NodeId" FOREIGN KEY ("NodeId") REFERENCES "iot_Node" ("Id") ON DELETE RESTRICT
CREATE TABLE `iot_Scene` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NOT NULL,
`Image` longtext CHARACTER SET utf8mb4 NOT NULL,
`Hidden` tinyint(1) NOT NULL,
`DisplayOrder` int NOT NULL,
`NodeId` char(36) NULL,
CONSTRAINT `PK_iot_Scene` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_Scene_iot_Node_NodeId` FOREIGN KEY (`NodeId`) REFERENCES `iot_Node` (`Id`) ON DELETE RESTRICT
);
CREATE TABLE "iot_NodeCategoryNode" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_NodeCategoryNode" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"CategoryId" TEXT NOT NULL,
"NodeId" TEXT NOT NULL,
CONSTRAINT "FK_iot_NodeCategoryNode_iot_NodeCategory_CategoryId" FOREIGN KEY ("CategoryId") REFERENCES "iot_NodeCategory" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_iot_NodeCategoryNode_iot_Node_NodeId" FOREIGN KEY ("NodeId") REFERENCES "iot_Node" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_NodeCategoryNode` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`CategoryId` char(36) NOT NULL,
`NodeId` char(36) NOT NULL,
CONSTRAINT `PK_iot_NodeCategoryNode` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_NodeCategoryNode_iot_NodeCategory_CategoryId` FOREIGN KEY (`CategoryId`) REFERENCES `iot_NodeCategory` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_iot_NodeCategoryNode_iot_Node_NodeId` FOREIGN KEY (`NodeId`) REFERENCES `iot_Node` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_OrganNode" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_OrganNode" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"OrganId" TEXT NOT NULL,
"NodeId" TEXT NOT NULL,
CONSTRAINT "FK_iot_OrganNode_iot_Node_NodeId" FOREIGN KEY ("NodeId") REFERENCES "iot_Node" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_iot_OrganNode_iot_Organ_OrganId" FOREIGN KEY ("OrganId") REFERENCES "iot_Organ" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_OrganNode` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`OrganId` char(36) NOT NULL,
`NodeId` char(36) NOT NULL,
CONSTRAINT `PK_iot_OrganNode` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_OrganNode_iot_Node_NodeId` FOREIGN KEY (`NodeId`) REFERENCES `iot_Node` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_iot_OrganNode_iot_Organ_OrganId` FOREIGN KEY (`OrganId`) REFERENCES `iot_Organ` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_Permission" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Permission" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NULL,
"CategoryId" TEXT NULL,
CONSTRAINT "FK_iot_Permission_iot_PermissionCategory_CategoryId" FOREIGN KEY ("CategoryId") REFERENCES "iot_PermissionCategory" ("Id") ON DELETE SET NULL
CREATE TABLE `iot_Permission` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NULL,
`CategoryId` char(36) NULL,
CONSTRAINT `PK_iot_Permission` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_Permission_iot_PermissionCategory_CategoryId` FOREIGN KEY (`CategoryId`) REFERENCES `iot_PermissionCategory` (`Id`) ON DELETE SET NULL
);
CREATE TABLE "iot_UserRole" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_UserRole" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"UserId" TEXT NOT NULL,
"RoleId" TEXT NOT NULL,
CONSTRAINT "FK_iot_UserRole_iot_Role_RoleId" FOREIGN KEY ("RoleId") REFERENCES "iot_Role" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_iot_UserRole_iot_User_UserId" FOREIGN KEY ("UserId") REFERENCES "iot_User" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_UserRole` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`UserId` char(36) NOT NULL,
`RoleId` char(36) NOT NULL,
CONSTRAINT `PK_iot_UserRole` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_UserRole_iot_Role_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `iot_Role` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_iot_UserRole_iot_User_UserId` FOREIGN KEY (`UserId`) REFERENCES `iot_User` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_Api" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Api" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Path" TEXT NULL,
"Command" TEXT NULL,
"Method" TEXT NULL,
"ProductId" TEXT NOT NULL,
CONSTRAINT "FK_iot_Api_iot_Product_ProductId" FOREIGN KEY ("ProductId") REFERENCES "iot_Product" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_Api` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` varchar(255) CHARACTER SET utf8mb4 NULL,
`Path` longtext CHARACTER SET utf8mb4 NULL,
`Command` longtext CHARACTER SET utf8mb4 NULL,
`Method` longtext CHARACTER SET utf8mb4 NULL,
`ProductId` char(36) NOT NULL,
CONSTRAINT `PK_iot_Api` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_Api_iot_Product_ProductId` FOREIGN KEY (`ProductId`) REFERENCES `iot_Product` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_Device" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Device" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NOT NULL,
"Gateway" TEXT NULL,
"DisplayName" TEXT NOT NULL,
"Tag" TEXT NULL,
"IsOnline" INTEGER NOT NULL,
"Icon" TEXT NULL,
"Ip" TEXT NULL,
"UserName" TEXT NULL,
"Password" TEXT NULL,
"ConnectId" TEXT NULL,
"DisplayOrder" INTEGER NOT NULL,
"Disabled" INTEGER NOT NULL,
"ProductId" TEXT NOT NULL,
"NodeId" TEXT NOT NULL,
CONSTRAINT "FK_iot_Device_iot_Node_NodeId" FOREIGN KEY ("NodeId") REFERENCES "iot_Node" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_iot_Device_iot_Product_ProductId" FOREIGN KEY ("ProductId") REFERENCES "iot_Product" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_Device` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`Gateway` longtext CHARACTER SET utf8mb4 NULL,
`DisplayName` longtext CHARACTER SET utf8mb4 NOT NULL,
`Tag` longtext CHARACTER SET utf8mb4 NULL,
`IsOnline` tinyint(1) NOT NULL,
`Icon` longtext CHARACTER SET utf8mb4 NULL,
`Ip` longtext CHARACTER SET utf8mb4 NULL,
`UserName` longtext CHARACTER SET utf8mb4 NULL,
`Password` longtext CHARACTER SET utf8mb4 NULL,
`ConnectId` longtext CHARACTER SET utf8mb4 NULL,
`DisplayOrder` int NOT NULL,
`Disabled` tinyint(1) NOT NULL,
`ProductId` char(36) NOT NULL,
`NodeId` char(36) NOT NULL,
CONSTRAINT `PK_iot_Device` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_Device_iot_Node_NodeId` FOREIGN KEY (`NodeId`) REFERENCES `iot_Node` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_iot_Device_iot_Product_ProductId` FOREIGN KEY (`ProductId`) REFERENCES `iot_Product` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_SceneTimer" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_SceneTimer" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Cron" TEXT NULL,
"Disabled" INTEGER NOT NULL,
"SceneId" TEXT NOT NULL,
CONSTRAINT "FK_iot_SceneTimer_iot_Scene_SceneId" FOREIGN KEY ("SceneId") REFERENCES "iot_Scene" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_SceneTimer` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Cron` longtext CHARACTER SET utf8mb4 NULL,
`Disabled` tinyint(1) NOT NULL,
`SceneId` char(36) NOT NULL,
CONSTRAINT `PK_iot_SceneTimer` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_SceneTimer_iot_Scene_SceneId` FOREIGN KEY (`SceneId`) REFERENCES `iot_Scene` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_RolePermission" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_RolePermission" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"RoleId" TEXT NOT NULL,
"PermissionId" TEXT NOT NULL,
"IsReadOnly" INTEGER NOT NULL,
CONSTRAINT "FK_iot_RolePermission_iot_Permission_PermissionId" FOREIGN KEY ("PermissionId") REFERENCES "iot_Permission" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_iot_RolePermission_iot_Role_RoleId" FOREIGN KEY ("RoleId") REFERENCES "iot_Role" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_RolePermission` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`RoleId` char(36) NOT NULL,
`PermissionId` char(36) NOT NULL,
`IsReadOnly` tinyint(1) NOT NULL,
CONSTRAINT `PK_iot_RolePermission` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_RolePermission_iot_Permission_PermissionId` FOREIGN KEY (`PermissionId`) REFERENCES `iot_Permission` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_iot_RolePermission_iot_Role_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `iot_Role` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_Parameter" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Parameter" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Type" TEXT NULL,
"Name" TEXT NULL,
"Description" TEXT NULL,
"Required" INTEGER NOT NULL,
"Maxinum" TEXT NULL,
"Minimum" TEXT NULL,
"ApiId" TEXT NOT NULL,
CONSTRAINT "FK_iot_Parameter_iot_Api_ApiId" FOREIGN KEY ("ApiId") REFERENCES "iot_Api" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_Parameter` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Type` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Description` longtext CHARACTER SET utf8mb4 NULL,
`Required` tinyint(1) NOT NULL,
`Maxinum` longtext CHARACTER SET utf8mb4 NULL,
`Minimum` longtext CHARACTER SET utf8mb4 NULL,
`ApiId` char(36) NOT NULL,
CONSTRAINT `PK_iot_Parameter` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_Parameter_iot_Api_ApiId` FOREIGN KEY (`ApiId`) REFERENCES `iot_Api` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_Command" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Command" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"DisplayOrder" INTEGER NOT NULL,
"Disabled" INTEGER NOT NULL,
"Delay" INTEGER NOT NULL,
"QueryString" TEXT NULL,
"ApiId" TEXT NOT NULL,
"DeviceId" TEXT NOT NULL,
CONSTRAINT "FK_iot_Command_iot_Api_ApiId" FOREIGN KEY ("ApiId") REFERENCES "iot_Api" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_iot_Command_iot_Device_DeviceId" FOREIGN KEY ("DeviceId") REFERENCES "iot_Device" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_Command` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`DisplayOrder` int NOT NULL,
`Disabled` tinyint(1) NOT NULL,
`Delay` int NOT NULL,
`QueryString` longtext CHARACTER SET utf8mb4 NULL,
`ApiId` char(36) NOT NULL,
`DeviceId` char(36) NOT NULL,
CONSTRAINT `PK_iot_Command` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_Command_iot_Api_ApiId` FOREIGN KEY (`ApiId`) REFERENCES `iot_Api` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_iot_Command_iot_Device_DeviceId` FOREIGN KEY (`DeviceId`) REFERENCES `iot_Device` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_Data" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_Data" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Key" TEXT NOT NULL,
"Value" TEXT NULL,
"Name" TEXT NULL,
"Type" INTEGER NOT NULL,
"Unit" TEXT NULL,
"Description" TEXT NULL,
"Timestamp" INTEGER NOT NULL,
"Hidden" INTEGER NOT NULL,
"DeviceId" TEXT NOT NULL,
CONSTRAINT "FK_iot_Data_iot_Device_DeviceId" FOREIGN KEY ("DeviceId") REFERENCES "iot_Device" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_Data` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Key` longtext CHARACTER SET utf8mb4 NOT NULL,
`Value` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Type` int NOT NULL,
`Unit` longtext CHARACTER SET utf8mb4 NULL,
`Description` longtext CHARACTER SET utf8mb4 NULL,
`Timestamp` bigint NOT NULL,
`Hidden` tinyint(1) NOT NULL,
`DeviceId` char(36) NOT NULL,
CONSTRAINT `PK_iot_Data` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_Data_iot_Device_DeviceId` FOREIGN KEY (`DeviceId`) REFERENCES `iot_Device` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_SceneCommand" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_SceneCommand" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"SceneId" TEXT NOT NULL,
"CommandId" TEXT NOT NULL,
CONSTRAINT "FK_iot_SceneCommand_iot_Command_CommandId" FOREIGN KEY ("CommandId") REFERENCES "iot_Command" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_iot_SceneCommand_iot_Scene_SceneId" FOREIGN KEY ("SceneId") REFERENCES "iot_Scene" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_SceneCommand` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`SceneId` char(36) NOT NULL,
`CommandId` char(36) NOT NULL,
CONSTRAINT `PK_iot_SceneCommand` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_SceneCommand_iot_Command_CommandId` FOREIGN KEY (`CommandId`) REFERENCES `iot_Command` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_iot_SceneCommand_iot_Scene_SceneId` FOREIGN KEY (`SceneId`) REFERENCES `iot_Scene` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "iot_SceneTigger" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_SceneTigger" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Condition" TEXT NULL,
"Disabled" INTEGER NOT NULL,
"DataId" TEXT NOT NULL,
"SceneId" TEXT NOT NULL,
CONSTRAINT "FK_iot_SceneTigger_iot_Data_DataId" FOREIGN KEY ("DataId") REFERENCES "iot_Data" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_iot_SceneTigger_iot_Scene_SceneId" FOREIGN KEY ("SceneId") REFERENCES "iot_Scene" ("Id") ON DELETE CASCADE
CREATE TABLE `iot_SceneTigger` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Condition` longtext CHARACTER SET utf8mb4 NULL,
`Disabled` tinyint(1) NOT NULL,
`DataId` char(36) NOT NULL,
`SceneId` char(36) NOT NULL,
CONSTRAINT `PK_iot_SceneTigger` PRIMARY KEY (`Id`),
CONSTRAINT `FK_iot_SceneTigger_iot_Data_DataId` FOREIGN KEY (`DataId`) REFERENCES `iot_Data` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_iot_SceneTigger_iot_Scene_SceneId` FOREIGN KEY (`SceneId`) REFERENCES `iot_Scene` (`Id`) ON DELETE CASCADE
);
CREATE UNIQUE INDEX "IX_iot_Api_ProductId_Name" ON "iot_Api" ("ProductId", "Name");
CREATE UNIQUE INDEX `IX_iot_Api_ProductId_Name` ON `iot_Api` (`ProductId`, `Name`);
CREATE UNIQUE INDEX "IX_iot_Category_Number" ON "iot_Category" ("Number");
CREATE UNIQUE INDEX `IX_iot_Category_Number` ON `iot_Category` (`Number`);
CREATE INDEX "IX_iot_Command_ApiId" ON "iot_Command" ("ApiId");
CREATE INDEX `IX_iot_Command_ApiId` ON `iot_Command` (`ApiId`);
CREATE INDEX "IX_iot_Command_DeviceId" ON "iot_Command" ("DeviceId");
CREATE INDEX `IX_iot_Command_DeviceId` ON `iot_Command` (`DeviceId`);
CREATE INDEX "IX_iot_Data_DeviceId" ON "iot_Data" ("DeviceId");
CREATE INDEX `IX_iot_Data_DeviceId` ON `iot_Data` (`DeviceId`);
CREATE INDEX "IX_iot_Device_NodeId" ON "iot_Device" ("NodeId");
CREATE INDEX `IX_iot_Device_NodeId` ON `iot_Device` (`NodeId`);
CREATE UNIQUE INDEX "IX_iot_Device_Number" ON "iot_Device" ("Number");
CREATE UNIQUE INDEX `IX_iot_Device_Number` ON `iot_Device` (`Number`);
CREATE INDEX "IX_iot_Device_ProductId" ON "iot_Device" ("ProductId");
CREATE INDEX `IX_iot_Device_ProductId` ON `iot_Device` (`ProductId`);
CREATE UNIQUE INDEX "IX_iot_Node_Number" ON "iot_Node" ("Number");
CREATE UNIQUE INDEX `IX_iot_Node_Number` ON `iot_Node` (`Number`);
CREATE UNIQUE INDEX "IX_iot_NodeCategory_Name" ON "iot_NodeCategory" ("Name");
CREATE UNIQUE INDEX `IX_iot_NodeCategory_Name` ON `iot_NodeCategory` (`Name`);
CREATE INDEX "IX_iot_NodeCategoryNode_NodeId" ON "iot_NodeCategoryNode" ("NodeId");
CREATE INDEX `IX_iot_NodeCategoryNode_NodeId` ON `iot_NodeCategoryNode` (`NodeId`);
CREATE UNIQUE INDEX "IX_iot_NodeCategoryNode_CategoryId_NodeId" ON "iot_NodeCategoryNode" ("CategoryId", "NodeId");
CREATE UNIQUE INDEX `IX_iot_NodeCategoryNode_CategoryId_NodeId` ON `iot_NodeCategoryNode` (`CategoryId`, `NodeId`);
CREATE UNIQUE INDEX "IX_iot_Organ_Number" ON "iot_Organ" ("Number");
CREATE UNIQUE INDEX `IX_iot_Organ_Number` ON `iot_Organ` (`Number`);
CREATE INDEX "IX_iot_OrganNode_NodeId" ON "iot_OrganNode" ("NodeId");
CREATE INDEX `IX_iot_OrganNode_NodeId` ON `iot_OrganNode` (`NodeId`);
CREATE UNIQUE INDEX "IX_iot_OrganNode_OrganId_NodeId" ON "iot_OrganNode" ("OrganId", "NodeId");
CREATE UNIQUE INDEX `IX_iot_OrganNode_OrganId_NodeId` ON `iot_OrganNode` (`OrganId`, `NodeId`);
CREATE INDEX "IX_iot_Parameter_ApiId" ON "iot_Parameter" ("ApiId");
CREATE INDEX `IX_iot_Parameter_ApiId` ON `iot_Parameter` (`ApiId`);
CREATE INDEX "IX_iot_Permission_CategoryId" ON "iot_Permission" ("CategoryId");
CREATE INDEX `IX_iot_Permission_CategoryId` ON `iot_Permission` (`CategoryId`);
CREATE UNIQUE INDEX "IX_iot_Permission_Number" ON "iot_Permission" ("Number");
CREATE UNIQUE INDEX `IX_iot_Permission_Number` ON `iot_Permission` (`Number`);
CREATE UNIQUE INDEX "IX_iot_PermissionCategory_Number" ON "iot_PermissionCategory" ("Number");
CREATE UNIQUE INDEX `IX_iot_PermissionCategory_Number` ON `iot_PermissionCategory` (`Number`);
CREATE INDEX "IX_iot_PermissionCategory_ParentId" ON "iot_PermissionCategory" ("ParentId");
CREATE INDEX `IX_iot_PermissionCategory_ParentId` ON `iot_PermissionCategory` (`ParentId`);
CREATE INDEX "IX_iot_Product_CategoryId" ON "iot_Product" ("CategoryId");
CREATE INDEX `IX_iot_Product_CategoryId` ON `iot_Product` (`CategoryId`);
CREATE UNIQUE INDEX "IX_iot_Product_Number" ON "iot_Product" ("Number");
CREATE UNIQUE INDEX `IX_iot_Product_Number` ON `iot_Product` (`Number`);
CREATE UNIQUE INDEX "IX_iot_Role_Name" ON "iot_Role" ("Name");
CREATE UNIQUE INDEX `IX_iot_Role_Name` ON `iot_Role` (`Name`);
CREATE INDEX "IX_iot_RolePermission_PermissionId" ON "iot_RolePermission" ("PermissionId");
CREATE INDEX `IX_iot_RolePermission_PermissionId` ON `iot_RolePermission` (`PermissionId`);
CREATE UNIQUE INDEX "IX_iot_RolePermission_RoleId_PermissionId" ON "iot_RolePermission" ("RoleId", "PermissionId");
CREATE UNIQUE INDEX `IX_iot_RolePermission_RoleId_PermissionId` ON `iot_RolePermission` (`RoleId`, `PermissionId`);
CREATE INDEX "IX_iot_Scene_NodeId" ON "iot_Scene" ("NodeId");
CREATE INDEX `IX_iot_Scene_NodeId` ON `iot_Scene` (`NodeId`);
CREATE INDEX "IX_iot_SceneCommand_CommandId" ON "iot_SceneCommand" ("CommandId");
CREATE INDEX `IX_iot_SceneCommand_CommandId` ON `iot_SceneCommand` (`CommandId`);
CREATE INDEX "IX_iot_SceneCommand_SceneId" ON "iot_SceneCommand" ("SceneId");
CREATE INDEX `IX_iot_SceneCommand_SceneId` ON `iot_SceneCommand` (`SceneId`);
CREATE INDEX "IX_iot_SceneTigger_DataId" ON "iot_SceneTigger" ("DataId");
CREATE INDEX `IX_iot_SceneTigger_DataId` ON `iot_SceneTigger` (`DataId`);
CREATE INDEX "IX_iot_SceneTigger_SceneId" ON "iot_SceneTigger" ("SceneId");
CREATE INDEX `IX_iot_SceneTigger_SceneId` ON `iot_SceneTigger` (`SceneId`);
CREATE INDEX "IX_iot_SceneTimer_SceneId" ON "iot_SceneTimer" ("SceneId");
CREATE INDEX `IX_iot_SceneTimer_SceneId` ON `iot_SceneTimer` (`SceneId`);
CREATE UNIQUE INDEX "IX_iot_User_Email" ON "iot_User" ("Email");
CREATE UNIQUE INDEX `IX_iot_User_Email` ON `iot_User` (`Email`);
CREATE UNIQUE INDEX "IX_iot_User_UserName" ON "iot_User" ("UserName");
CREATE UNIQUE INDEX `IX_iot_User_UserName` ON `iot_User` (`UserName`);
CREATE INDEX "IX_iot_UserRole_RoleId" ON "iot_UserRole" ("RoleId");
CREATE INDEX `IX_iot_UserRole_RoleId` ON `iot_UserRole` (`RoleId`);
CREATE UNIQUE INDEX "IX_iot_UserRole_UserId_RoleId" ON "iot_UserRole" ("UserId", "RoleId");
CREATE UNIQUE INDEX `IX_iot_UserRole_UserId_RoleId` ON `iot_UserRole` (`UserId`, `RoleId`);

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -7,15 +7,18 @@ using IoT.Shared;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Extensions.Configuration;
namespace IoTNode
{
public class DbConfig : IDbConfig
{
private readonly IConfiguration _cfg;
private readonly IEncryptionService _encryptionService;
public DbConfig(IEncryptionService encryptionService)
public DbConfig(IConfiguration cfg, IEncryptionService encryptionService)
{
this._cfg = cfg;
this._encryptionService = encryptionService;
}
@ -78,7 +81,7 @@ namespace IoTNode
var stream = "localhost";
set.Add(new Setting { Name = "debug", Value = "false" });
set.Add(new Setting { Name = "notify:enabled", Value = "true" });
set.Add(new Setting { Name = "notify:host", Value = $"http://{host}:8011" });
set.Add(new Setting { Name = "notify:host", Value = $"http://{host}/IoTCenter" });
set.Add(new Setting { Name = "timer.seconds", Value = "180" });
set.Add(new Setting { Name = "onvif.timer", Value = "1" });
set.Add(new Setting { Name = "onvif.speed", Value = "0.2" });
@ -95,11 +98,11 @@ namespace IoTNode
db.Set<Node>().Add(new Node
{
Id = $"nodeid-{sn}".ToGuid(),
OrganName = "默认机构名称",
OrganNumber = "默认机构编号",
CategoryName = "默认分类名称",
CategoryNumber = "默认分类编号",
Name = "节点",
OrganName = this._cfg.GetValue("seed:OrganName", "默认机构名称"),
OrganNumber = this._cfg.GetValue("seed:OrganNumber", "默认机构编号"),
CategoryName = this._cfg.GetValue("seed:CategoryName", "默认分类名称"),
CategoryNumber = this._cfg.GetValue("seed:CategoryNumber", "默认分类编号"),
Name = this._cfg.GetValue("seed:NodeName", "节点"),
Number = sn,
IsOnline = true,
Version = Helper.Instance.GetVersion(),

@ -405,7 +405,7 @@ namespace IoTNode.DeviceServices.Onvif
process.Exited += (s, e) =>
{
var _process = s as Process;
this._logger.LogDebug($"ffmpeg processes list:{_list.Count},exit:{_process.ExitCode},args:{arguments}");
this._logger.LogDebug($"ffmpeg processes list:{_list.Count},exit:{_process?.ExitCode},args:{arguments}");
if (_process != null)
{
Thread.Sleep(3000);

@ -6,8 +6,6 @@
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Deterministic>false</Deterministic>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
@ -18,7 +16,6 @@
<PackageReference Include="Hangfire.AspNetCore" Version="1.7.11" />
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
<PackageReference Include="Hangfire.MySqlStorage" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.9" />
<PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />

@ -1,9 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

@ -0,0 +1,5 @@
{
"ConnectionStrings": {
"HangfireConnection": "Server=mysql;Port=3306;Database=jobserver;Uid=root;Pwd=root;Allow User Variables=True;"
}
}

@ -1,9 +1,5 @@
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
"AppSettings": {
"database": "sqlite"
}
}

@ -0,0 +1,11 @@
{
"ConnectionStrings": {
"postgresql": "User ID=root;Host=localhost;Port=26257;Database=iotdb;",
"sqlite": "Data Source=studycenter.db",
"mysql": "Server=mysql;Port=3306;Database=studycenter;Uid=root;Pwd=root;"
},
"AppSettings": {
"database": "mysql",
"cache": "memory"
}
}

@ -9,7 +9,7 @@
"ConnectionStrings": {
"postgresql": "User ID=root;Host=localhost;Port=26257;Database=iotdb;",
"sqlite": "Data Source=studycenter.db",
"mysql": "Server=127.0.0.1;Port=3306;Database=studycenter;Uid=root;Pwd=root;"
"mysql": "Server=localhost;Port=3306;Database=studycenter;Uid=root;Pwd=root;"
},
"AppSettings": {
"database": "sqlite",

@ -5,8 +5,6 @@
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Deterministic>false</Deterministic>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\Version.cs" Link="Version.cs" />
@ -14,7 +12,6 @@
<ItemGroup>
<PackageReference Include="AspNet.Security.OAuth.GitHub" Version="3.1.1" />
<PackageReference Include="AspNet.Security.OAuth.QQ" Version="3.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.8" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Infrastructure\Infrastructure.csproj" />

@ -0,0 +1,10 @@
{
"AppSettings": {
"database": "mysql"
},
"ConnectionStrings": {
"postgresql": "User ID=root;Host=postgresql;Port=26257;Database=usercenter;CommandTimeout=120",
"mysql": "Server=mysql;Port=3306;Database=usercenter;Uid=root;Pwd=root;",
"redis": "redis:6379,allowAdmin=true"
}
}

@ -47,8 +47,8 @@
"ConnectionStrings": {
"postgresql": "User ID=root;Host=localhost;Port=26257;Database=usercenter;CommandTimeout=120",
"sqlite": "Data Source=usercenter.db",
"mysql": "Server=127.0.0.1;Port=3306;Database=usercenter;Uid=root;Pwd=root;",
"redis": "127.0.0.1:6379,allowAdmin=true"
"mysql": "Server=localhost;Port=3306;Database=usercenter;Uid=root;Pwd=root;",
"redis": "localhost:6379,allowAdmin=true"
},
"AppSettings": {
"database": "mysql",

@ -1,178 +1,190 @@
CREATE TABLE "uc_Department" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_Department" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NOT NULL,
"Path" TEXT NULL,
"ParentId" TEXT NULL,
CONSTRAINT "FK_uc_Department_uc_Department_ParentId" FOREIGN KEY ("ParentId") REFERENCES "uc_Department" ("Id") ON DELETE RESTRICT
CREATE TABLE `uc_Department` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`Path` longtext CHARACTER SET utf8mb4 NULL,
`ParentId` char(36) NULL,
CONSTRAINT `PK_uc_Department` PRIMARY KEY (`Id`),
CONSTRAINT `FK_uc_Department_uc_Department_ParentId` FOREIGN KEY (`ParentId`) REFERENCES `uc_Department` (`Id`) ON DELETE RESTRICT
);
CREATE TABLE "uc_Organ" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_Organ" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NOT NULL,
"Path" TEXT NULL,
"ParentId" TEXT NULL,
"Contact" TEXT NULL,
CONSTRAINT "FK_uc_Organ_uc_Organ_ParentId" FOREIGN KEY ("ParentId") REFERENCES "uc_Organ" ("Id") ON DELETE RESTRICT
CREATE TABLE `uc_Organ` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`Path` longtext CHARACTER SET utf8mb4 NULL,
`ParentId` char(36) NULL,
`Contact` longtext CHARACTER SET utf8mb4 NULL,
CONSTRAINT `PK_uc_Organ` PRIMARY KEY (`Id`),
CONSTRAINT `FK_uc_Organ_uc_Organ_ParentId` FOREIGN KEY (`ParentId`) REFERENCES `uc_Organ` (`Id`) ON DELETE RESTRICT
);
CREATE TABLE "uc_PermissionCategory" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_PermissionCategory" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NULL,
"Path" TEXT NULL,
"ParentId" TEXT NULL,
CONSTRAINT "FK_uc_PermissionCategory_uc_PermissionCategory_ParentId" FOREIGN KEY ("ParentId") REFERENCES "uc_PermissionCategory" ("Id") ON DELETE SET NULL
CREATE TABLE `uc_PermissionCategory` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NULL,
`Path` longtext CHARACTER SET utf8mb4 NULL,
`ParentId` char(36) NULL,
CONSTRAINT `PK_uc_PermissionCategory` PRIMARY KEY (`Id`),
CONSTRAINT `FK_uc_PermissionCategory_uc_PermissionCategory_ParentId` FOREIGN KEY (`ParentId`) REFERENCES `uc_PermissionCategory` (`Id`) ON DELETE SET NULL
);
CREATE TABLE "uc_Role" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_Role" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"IsReadOnly" INTEGER NOT NULL
CREATE TABLE `uc_Role` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` varchar(255) CHARACTER SET utf8mb4 NULL,
`IsReadOnly` tinyint(1) NOT NULL,
CONSTRAINT `PK_uc_Role` PRIMARY KEY (`Id`)
);
CREATE TABLE "uc_Setting" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_Setting" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NOT NULL,
"Value" TEXT NULL,
"Type" INTEGER NOT NULL
CREATE TABLE `uc_Setting` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NOT NULL,
`Value` longtext CHARACTER SET utf8mb4 NULL,
`Type` int NOT NULL,
CONSTRAINT `PK_uc_Setting` PRIMARY KEY (`Id`)
);
CREATE TABLE "uc_Site" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_Site" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Icon" TEXT NULL,
"Description" TEXT NULL,
"Key" TEXT NULL,
"Home" TEXT NULL,
"Login" TEXT NULL,
"Logout" TEXT NULL
CREATE TABLE `uc_Site` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` varchar(255) CHARACTER SET utf8mb4 NULL,
`Icon` longtext CHARACTER SET utf8mb4 NULL,
`Description` longtext CHARACTER SET utf8mb4 NULL,
`Key` longtext CHARACTER SET utf8mb4 NULL,
`Home` longtext CHARACTER SET utf8mb4 NULL,
`Login` longtext CHARACTER SET utf8mb4 NULL,
`Logout` longtext CHARACTER SET utf8mb4 NULL,
CONSTRAINT `PK_uc_Site` PRIMARY KEY (`Id`)
);
CREATE TABLE "uc_User" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_User" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"UserName" TEXT NOT NULL,
"SecurityStamp" TEXT NULL,
"PasswordHash" TEXT NULL,
"PasswordConfirmed" INTEGER NOT NULL,
"Email" TEXT NOT NULL,
"EmailConfirmed" INTEGER NOT NULL,
"PhoneNumber" TEXT NULL,
"PhoneNumberConfirmed" INTEGER NOT NULL,
"PayPassword" TEXT NULL,
"PayPasswordConfirmed" INTEGER NOT NULL,
"RealName" TEXT NULL,
"IdCardNumber" TEXT NULL,
"IdentityConfirmed" INTEGER NOT NULL,
"NickName" TEXT NULL,
"Avatar" TEXT NULL,
"FaceImage" TEXT NULL,
"Sex" INTEGER NOT NULL,
"Birthday" TEXT NULL,
"AvailBalance" TEXT NOT NULL,
"FrozenBlance" TEXT NOT NULL,
"Point" INTEGER NOT NULL,
"LockoutEnabled" INTEGER NOT NULL,
"AccessFailedCount" INTEGER NOT NULL,
"LockoutEnd" TEXT NULL,
"RowVersion" TEXT NULL
CREATE TABLE `uc_User` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`UserName` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`SecurityStamp` longtext CHARACTER SET utf8mb4 NULL,
`PasswordHash` longtext CHARACTER SET utf8mb4 NULL,
`PasswordConfirmed` tinyint(1) NOT NULL,
`Email` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`EmailConfirmed` tinyint(1) NOT NULL,
`PhoneNumber` varchar(255) CHARACTER SET utf8mb4 NULL,
`PhoneNumberConfirmed` tinyint(1) NOT NULL,
`PayPassword` longtext CHARACTER SET utf8mb4 NULL,
`PayPasswordConfirmed` tinyint(1) NOT NULL,
`RealName` longtext CHARACTER SET utf8mb4 NULL,
`IdCardNumber` longtext CHARACTER SET utf8mb4 NULL,
`IdentityConfirmed` tinyint(1) NOT NULL,
`NickName` varchar(255) CHARACTER SET utf8mb4 NULL,
`Avatar` longtext CHARACTER SET utf8mb4 NULL,
`FaceImage` longtext CHARACTER SET utf8mb4 NULL,
`Sex` int NOT NULL,
`Birthday` datetime(6) NULL,
`AvailBalance` decimal(65,30) NOT NULL,
`FrozenBlance` decimal(65,30) NOT NULL,
`Point` bigint NOT NULL,
`LockoutEnabled` tinyint(1) NOT NULL,
`AccessFailedCount` int NOT NULL,
`LockoutEnd` datetime(6) NULL,
`RowVersion` longtext CHARACTER SET utf8mb4 NULL,
CONSTRAINT `PK_uc_User` PRIMARY KEY (`Id`)
);
CREATE TABLE "uc_Permission" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_Permission" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NULL,
"CategoryId" TEXT NULL,
CONSTRAINT "FK_uc_Permission_uc_PermissionCategory_CategoryId" FOREIGN KEY ("CategoryId") REFERENCES "uc_PermissionCategory" ("Id") ON DELETE SET NULL
CREATE TABLE `uc_Permission` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`Name` longtext CHARACTER SET utf8mb4 NULL,
`Number` varchar(255) CHARACTER SET utf8mb4 NULL,
`CategoryId` char(36) NULL,
CONSTRAINT `PK_uc_Permission` PRIMARY KEY (`Id`),
CONSTRAINT `FK_uc_Permission_uc_PermissionCategory_CategoryId` FOREIGN KEY (`CategoryId`) REFERENCES `uc_PermissionCategory` (`Id`) ON DELETE SET NULL
);
CREATE TABLE "uc_OrganUser" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_OrganUser" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"UserId" TEXT NOT NULL,
"OrganId" TEXT NOT NULL,
CONSTRAINT "FK_uc_OrganUser_uc_Organ_OrganId" FOREIGN KEY ("OrganId") REFERENCES "uc_Organ" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_uc_OrganUser_uc_User_UserId" FOREIGN KEY ("UserId") REFERENCES "uc_User" ("Id") ON DELETE CASCADE
CREATE TABLE `uc_OrganUser` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`UserId` char(36) NOT NULL,
`OrganId` char(36) NOT NULL,
CONSTRAINT `PK_uc_OrganUser` PRIMARY KEY (`Id`),
CONSTRAINT `FK_uc_OrganUser_uc_Organ_OrganId` FOREIGN KEY (`OrganId`) REFERENCES `uc_Organ` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_uc_OrganUser_uc_User_UserId` FOREIGN KEY (`UserId`) REFERENCES `uc_User` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "uc_UserDepartment" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_UserDepartment" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"UserId" TEXT NOT NULL,
"DepartmentId" TEXT NOT NULL,
CONSTRAINT "FK_uc_UserDepartment_uc_Department_DepartmentId" FOREIGN KEY ("DepartmentId") REFERENCES "uc_Department" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_uc_UserDepartment_uc_User_UserId" FOREIGN KEY ("UserId") REFERENCES "uc_User" ("Id") ON DELETE CASCADE
CREATE TABLE `uc_UserDepartment` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`UserId` char(36) NOT NULL,
`DepartmentId` char(36) NOT NULL,
CONSTRAINT `PK_uc_UserDepartment` PRIMARY KEY (`Id`),
CONSTRAINT `FK_uc_UserDepartment_uc_Department_DepartmentId` FOREIGN KEY (`DepartmentId`) REFERENCES `uc_Department` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_uc_UserDepartment_uc_User_UserId` FOREIGN KEY (`UserId`) REFERENCES `uc_User` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "uc_UserRole" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_UserRole" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"UserId" TEXT NOT NULL,
"RoleId" TEXT NOT NULL,
CONSTRAINT "FK_uc_UserRole_uc_Role_RoleId" FOREIGN KEY ("RoleId") REFERENCES "uc_Role" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_uc_UserRole_uc_User_UserId" FOREIGN KEY ("UserId") REFERENCES "uc_User" ("Id") ON DELETE CASCADE
CREATE TABLE `uc_UserRole` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`UserId` char(36) NOT NULL,
`RoleId` char(36) NOT NULL,
CONSTRAINT `PK_uc_UserRole` PRIMARY KEY (`Id`),
CONSTRAINT `FK_uc_UserRole_uc_Role_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `uc_Role` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_uc_UserRole_uc_User_UserId` FOREIGN KEY (`UserId`) REFERENCES `uc_User` (`Id`) ON DELETE CASCADE
);
CREATE TABLE "uc_RolePermission" (
"Id" TEXT NOT NULL CONSTRAINT "PK_uc_RolePermission" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"RoleId" TEXT NOT NULL,
"PermissionId" TEXT NOT NULL,
"IsReadOnly" INTEGER NOT NULL,
CONSTRAINT "FK_uc_RolePermission_uc_Permission_PermissionId" FOREIGN KEY ("PermissionId") REFERENCES "uc_Permission" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_uc_RolePermission_uc_Role_RoleId" FOREIGN KEY ("RoleId") REFERENCES "uc_Role" ("Id") ON DELETE CASCADE
CREATE TABLE `uc_RolePermission` (
`Id` char(36) NOT NULL,
`IsDeleted` longtext CHARACTER SET utf8mb4 NULL,
`RoleId` char(36) NOT NULL,
`PermissionId` char(36) NOT NULL,
`IsReadOnly` tinyint(1) NOT NULL,
CONSTRAINT `PK_uc_RolePermission` PRIMARY KEY (`Id`),
CONSTRAINT `FK_uc_RolePermission_uc_Permission_PermissionId` FOREIGN KEY (`PermissionId`) REFERENCES `uc_Permission` (`Id`) ON DELETE CASCADE,
CONSTRAINT `FK_uc_RolePermission_uc_Role_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `uc_Role` (`Id`) ON DELETE CASCADE
);
CREATE UNIQUE INDEX "IX_uc_Department_Number" ON "uc_Department" ("Number");
CREATE UNIQUE INDEX `IX_uc_Department_Number` ON `uc_Department` (`Number`);
CREATE INDEX "IX_uc_Department_ParentId" ON "uc_Department" ("ParentId");
CREATE INDEX `IX_uc_Department_ParentId` ON `uc_Department` (`ParentId`);
CREATE UNIQUE INDEX "IX_uc_Organ_Number" ON "uc_Organ" ("Number");
CREATE UNIQUE INDEX `IX_uc_Organ_Number` ON `uc_Organ` (`Number`);
CREATE INDEX "IX_uc_Organ_ParentId" ON "uc_Organ" ("ParentId");
CREATE INDEX `IX_uc_Organ_ParentId` ON `uc_Organ` (`ParentId`);
CREATE INDEX "IX_uc_OrganUser_OrganId" ON "uc_OrganUser" ("OrganId");
CREATE INDEX `IX_uc_OrganUser_OrganId` ON `uc_OrganUser` (`OrganId`);
CREATE UNIQUE INDEX "IX_uc_OrganUser_UserId_OrganId" ON "uc_OrganUser" ("UserId", "OrganId");
CREATE UNIQUE INDEX `IX_uc_OrganUser_UserId_OrganId` ON `uc_OrganUser` (`UserId`, `OrganId`);
CREATE INDEX "IX_uc_Permission_CategoryId" ON "uc_Permission" ("CategoryId");
CREATE INDEX `IX_uc_Permission_CategoryId` ON `uc_Permission` (`CategoryId`);
CREATE UNIQUE INDEX "IX_uc_Permission_Number" ON "uc_Permission" ("Number");
CREATE UNIQUE INDEX `IX_uc_Permission_Number` ON `uc_Permission` (`Number`);
CREATE UNIQUE INDEX "IX_uc_PermissionCategory_Number" ON "uc_PermissionCategory" ("Number");
CREATE UNIQUE INDEX `IX_uc_PermissionCategory_Number` ON `uc_PermissionCategory` (`Number`);
CREATE INDEX "IX_uc_PermissionCategory_ParentId" ON "uc_PermissionCategory" ("ParentId");
CREATE INDEX `IX_uc_PermissionCategory_ParentId` ON `uc_PermissionCategory` (`ParentId`);
CREATE UNIQUE INDEX "IX_uc_Role_Name" ON "uc_Role" ("Name");
CREATE UNIQUE INDEX `IX_uc_Role_Name` ON `uc_Role` (`Name`);
CREATE INDEX "IX_uc_RolePermission_PermissionId" ON "uc_RolePermission" ("PermissionId");
CREATE INDEX `IX_uc_RolePermission_PermissionId` ON `uc_RolePermission` (`PermissionId`);
CREATE UNIQUE INDEX "IX_uc_RolePermission_RoleId_PermissionId" ON "uc_RolePermission" ("RoleId", "PermissionId");
CREATE UNIQUE INDEX `IX_uc_RolePermission_RoleId_PermissionId` ON `uc_RolePermission` (`RoleId`, `PermissionId`);
CREATE UNIQUE INDEX "IX_uc_Site_Name" ON "uc_Site" ("Name");
CREATE UNIQUE INDEX `IX_uc_Site_Name` ON `uc_Site` (`Name`);
CREATE UNIQUE INDEX "IX_uc_User_Email" ON "uc_User" ("Email");
CREATE UNIQUE INDEX `IX_uc_User_Email` ON `uc_User` (`Email`);
CREATE UNIQUE INDEX "IX_uc_User_NickName" ON "uc_User" ("NickName");
CREATE UNIQUE INDEX `IX_uc_User_NickName` ON `uc_User` (`NickName`);
CREATE UNIQUE INDEX "IX_uc_User_PhoneNumber" ON "uc_User" ("PhoneNumber");
CREATE UNIQUE INDEX `IX_uc_User_PhoneNumber` ON `uc_User` (`PhoneNumber`);
CREATE UNIQUE INDEX "IX_uc_User_UserName" ON "uc_User" ("UserName");
CREATE UNIQUE INDEX `IX_uc_User_UserName` ON `uc_User` (`UserName`);
CREATE INDEX "IX_uc_UserDepartment_DepartmentId" ON "uc_UserDepartment" ("DepartmentId");
CREATE INDEX `IX_uc_UserDepartment_DepartmentId` ON `uc_UserDepartment` (`DepartmentId`);
CREATE UNIQUE INDEX "IX_uc_UserDepartment_UserId_DepartmentId" ON "uc_UserDepartment" ("UserId", "DepartmentId");
CREATE UNIQUE INDEX `IX_uc_UserDepartment_UserId_DepartmentId` ON `uc_UserDepartment` (`UserId`, `DepartmentId`);
CREATE INDEX "IX_uc_UserRole_RoleId" ON "uc_UserRole" ("RoleId");
CREATE INDEX `IX_uc_UserRole_RoleId` ON `uc_UserRole` (`RoleId`);
CREATE UNIQUE INDEX "IX_uc_UserRole_UserId_RoleId" ON "uc_UserRole" ("UserId", "RoleId");
CREATE UNIQUE INDEX `IX_uc_UserRole_UserId_RoleId` ON `uc_UserRole` (`UserId`, `RoleId`);

@ -1,4 +1,4 @@
using System.Reflection;
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0.521")]
[assembly: AssemblyInformationalVersion("1.0.0.522")]

@ -3,12 +3,9 @@
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.4" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.9" />
</ItemGroup>
</Project>

@ -3,12 +3,9 @@
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.4" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.9" />
</ItemGroup>
</Project>

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
<PropertyGroup Label="Globals">
<ProjectVersion>2.1</ProjectVersion>
<DockerTargetOS>Linux</DockerTargetOS>
<ProjectGuid>db048e66-3411-41f6-86f7-a8f73a9f806a</ProjectGuid>
<DockerLaunchAction>LaunchBrowser</DockerLaunchAction>
<DockerServiceUrl>{Scheme}://localhost:{ServicePort}</DockerServiceUrl>
<DockerServiceName>webmvc</DockerServiceName>
</PropertyGroup>
<ItemGroup>
<None Include="docker-compose.override.yml">
<DependentUpon>docker-compose.yml</DependentUpon>
</None>
<None Include="docker-compose.yml" />
<None Include=".dockerignore" />
</ItemGroup>
</Project>

@ -1,36 +0,0 @@
version: '3.4'
services:
webmvc:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"
usercenter:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"
iotcenter:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"
jobserver:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"
webspa:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"

@ -1,83 +0,0 @@
version: "3.4"
services:
portainer:
image: portainer/portainer:1.23.2
ports:
- 9000:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/data:/data
mysql:
image: mysql:8.0
restart: always
hostname: mysql
environment:
MYSQL_ROOT_PASSWORD: root
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./mysql:/var/lib/mysql
influxdb:
image: influxdb:1.8
restart: always
hostname: influxdb
environment:
TZ: "Asia/Shanghai"
INFLUXDB_ADMIN_ENABLED: "true"
INFLUXDB_ADMIN_USER: admin
INFLUXDB_ADMIN_PASSWORD: admin
volumes:
- ./influxdb:/var/lib/influxdb
srs:
image: ossrs/srs:v4.0.23
environment:
TZ: "Asia/Shanghai"
restart: always
ports:
- 1935:1935
- 1985:1985
volumes:
- ./srs/conf/srs.conf:/usr/local/srs/conf/srs.conf
- ./log/srs:/usr/local/srs/objs/log
- ./srs/objs/nginx/html/video:/usr/local/srs/objs/nginx/html/video
usercenter:
image: ${DOCKER_REGISTRY-}usercenter
build:
context: .
dockerfile: UserCenter/Dockerfile
iotcenter:
image: ${DOCKER_REGISTRY-}iotcenter
build:
context: .
dockerfile: IoTCenter/Dockerfile
jobserver:
image: ${DOCKER_REGISTRY-}jobserver
build:
context: .
dockerfile: JobServer/Dockerfile
webmvc:
image: ${DOCKER_REGISTRY-}webmvc
build:
context: .
dockerfile: WebMVC/Dockerfile
webspa:
image: ${DOCKER_REGISTRY-}webspa
build:
context: .
dockerfile: WebSPA/Dockerfile
nginx:
image: nginx:1.18
restart: always
environment:
TZ: "Asia/Shanghai"
ports:
- 80:80
- 443:443
depends_on:
- webmvc
- usercenter
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/edusoa.key:/etc/nginx/edusoa.key
- ./nginx/edusoa.pem:/etc/nginx/edusoa.pem
- ./log/nginx:/var/log/nginx

@ -1,27 +0,0 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA5vvS8tFXCO/L7gPl/x8iqkJBjWM9MsvNHTkiqJa7gP1CA1bO
qp4yVtVUdikiz8bmFchgfZHUs7QhZC3KM0araAFwym/SgAN4/STO+Mj9EHqVJqlu
k6kwZHTF77sZDppbyCEARf0ev5cGKQ44V0xHROOywdHbn0gTLX+Pz+4giPA5lQt+
hxAL7dYDpumY3H0ZSO/+bn4YFCTHPdIkEqVJ0ifhCR/FR/x+GxAvosU29IV0/Vdj
X1YFq6Si4jMMNlJwgAwkdXTMOlaLe3fKv4X59aIHcBZecv7FukAm4WSPgHKrvwnv
wHDQsV3qRqtxUQzvVbuqTaowaMrK+OeBgASRLQIDAQABAoIBAG65mM29fDNUgDWA
uOgrTLrBOBtGzzdiatjvYqXeW9Phk5t2KWuwmgD2Ep7x6TYg6nrWqyqGlafvWXJk
YOFjpxccWa0xHX8wKvduhajM8ELOAGGgJtmx6Pi+4YOh9MkDRawR5cenJu5Avzs/
DdMLRb7ISBCRQO6B5m+RDqdmR0JcvJVhg/8EFd/P4VLRVRiUx5kfA0KSLpGFNJ8b
aYxiHkW/4DIjlRBqa6ClZYjxQqek683h7S9aInB4gLgrA9fGSQ8+mPyvCSaANP79
Npo0uN9v3ecdC97uDTRdhhxRmXYcXLL3VI17X6YE6YekarLVfHJWpl8coN2ALmZJ
5vWqeyECgYEA9mSwyr9HB7Iemx7jeJHo79pqWoflqqdYSf35jz6GOSZCkROocLzI
hVeXXwM1Gb882fRB0GUM+vsX9ypNP4jtelsBHt1CcPmdNYylN9C2+u4R9EPZC6BW
KiEsTJUmAWEK8poKa/DZBi/NS+wNyWUgkpwsFr9XbOzuPaMOVIldjDcCgYEA7/1T
hSpZ9WdIDhdavjr7roBD0/90G4Q8gBUlf/g04c0Xp9FzXDQdH1S0zeYbp+yqbWE9
P+pic35UVlB58WvtM4IjAoD9Leae58TSh0TER66jU9lssS9obWyH3sfpXswcRpyW
oOlX7bJ8N8YAAhXGCVlAGrZj+VAtB5QaIIQJg7sCgYEAy2ULXBLSO9QZ18uD03//
XiBbMyiDuoAyLcJuRIVEn+CpisFDhu0QSqKn3lLzfrGTNgigW7tPH9AvVGWjJxON
ljeRkTztH/2ufQoBSTYOFs54G7/2Z9aPym9f9kgY+4J0Wxg2CizjumuzeTz/lITa
gqxQ6OZC8TQU5uS3a6mJg7kCgYAp/443NrMphBqTBLlHozDaV+4G0qSyEBE6ZPj8
DSbMAUVLhBcJIsGZ8wv1IHjkiUFGBQdgARebmJcPx+OfQUDwi6yuyn4EI2DZtJMX
QwyKcuB4Uwt3cpF23NBmR1vq0BN+s/aUUGGn4l1ksUzdEIxopGrYgeS7A7Htqphr
6k9z8wKBgBwcnQJIY2g0cxkt6Idn2Ck2cn0UV0UMH78YqN4FE9LmkFlKw7eE7FiB
MH4hAVqSAJ64AKEv5Jt6MZamHPPmSj7A6Tj8F1KbJcGZvCpyfo1b76/LRKd1uzAV
CkjdHPp+tLywydadCRuHxtbSpLF9N91hIMDpdvLzQ3qclhT6GjtF
-----END RSA PRIVATE KEY-----

@ -1,91 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIG2DCCBcCgAwIBAgIQDVAa3KQd3HqHhEcYxvwUETANBgkqhkiG9w0BAQsFADBf
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMR4wHAYDVQQDExVHZW9UcnVzdCBDTiBSU0EgQ0EgRzEw
HhcNMTkwODAyMDAwMDAwWhcNMjEwODAxMTIwMDAwWjCBkjELMAkGA1UEBhMCQ04x
DzANBgNVBAgMBuWQieaelzEPMA0GA1UEBwwG6ZW/5pilMTMwMQYDVQQKDCrkuJzl
jJfluIjlpKfnkIbmg7Pova/ku7bogqHku73mnInpmZDlhazlj7gxFTATBgNVBAsM
DFRlYWNoICZTdHVkeTEVMBMGA1UEAwwMKi5lZHVzb2EuY29tMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5vvS8tFXCO/L7gPl/x8iqkJBjWM9MsvNHTki
qJa7gP1CA1bOqp4yVtVUdikiz8bmFchgfZHUs7QhZC3KM0araAFwym/SgAN4/STO
+Mj9EHqVJqluk6kwZHTF77sZDppbyCEARf0ev5cGKQ44V0xHROOywdHbn0gTLX+P
z+4giPA5lQt+hxAL7dYDpumY3H0ZSO/+bn4YFCTHPdIkEqVJ0ifhCR/FR/x+GxAv
osU29IV0/VdjX1YFq6Si4jMMNlJwgAwkdXTMOlaLe3fKv4X59aIHcBZecv7FukAm
4WSPgHKrvwnvwHDQsV3qRqtxUQzvVbuqTaowaMrK+OeBgASRLQIDAQABo4IDWjCC
A1YwHwYDVR0jBBgwFoAUkZ9eMRWuEJ+tYMH3wcyqSDQvDCYwHQYDVR0OBBYEFCfR
yJ1xXm33YNyzOHnTZM2dFccPMCMGA1UdEQQcMBqCDCouZWR1c29hLmNvbYIKZWR1
c29hLmNvbTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsG
AQUFBwMCMHUGA1UdHwRuMGwwNKAyoDCGLmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNv
bS9HZW9UcnVzdENOUlNBQ0FHMS5jcmwwNKAyoDCGLmh0dHA6Ly9jcmw0LmRpZ2lj
ZXJ0LmNvbS9HZW9UcnVzdENOUlNBQ0FHMS5jcmwwTAYDVR0gBEUwQzA3BglghkgB
hv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ
UzAIBgZngQwBAgIwbwYIKwYBBQUHAQEEYzBhMCEGCCsGAQUFBzABhhVodHRwOi8v
b2NzcC5kY29jc3AuY24wPAYIKwYBBQUHMAKGMGh0dHA6Ly9jcmwuZGlnaWNlcnQt
Y24uY29tL0dlb1RydXN0Q05SU0FDQUcxLmNydDAJBgNVHRMEAjAAMIIBfQYKKwYB
BAHWeQIEAgSCAW0EggFpAWcAdgC72d+8H4pxtZOUI5eqkntHOFeVCqtS6BqQlmQ2
jh7RhQAAAWxQXW/EAAAEAwBHMEUCIQDZhWuvn5hItpDiryuFo0ed2a6qCyu+6Nzj
hoFpYvhLLwIgNL7a0HNsWdPORihBATnbip942aQ+Wvz1N07/qQ3OJD8AdgCHdb/n
WXz4jEOZX73zbv9WjUdWNv9KtWDBtOr/XqCDDwAAAWxQXXBiAAAEAwBHMEUCIQCl
yTwBdNkJQMilIoRQrQOvbvihB4uvLMlssZknLmFsHAIgXt1Vn/ETW1xdyvzQH+vx
nrYdPP4NfmL7lU+tpa5tbDEAdQBElGUusO7Or8RAB9io/ijA2uaCvtjLMbU/0zOW
tbaBqAAAAWxQXW95AAAEAwBGMEQCICkw8IA+wHkgV10OkfsbEVYFVEpA13+Z3aYb
2mH89UA+AiAFyKjBvB+2kqFojAAPmUp8rgkgkY/f39MzCl4NOmmunjANBgkqhkiG
9w0BAQsFAAOCAQEAdsJDXde74RTRXW7ZEa7FQuaQKZFQkEKUPtRTr2RqGAPr1eqq
DmccPGeIAtvQnkOLIN4B0TQxxzniNhkMHTDOWbvzBmMtWjA4h7rH/eu4rKEE4d6E
zDXqMDAGrV1v8TmfGS7joCAqCBFLOifal8h7MivyMT5hjokTqi4pM+qDt1A+DHj+
PtDFnNu/3XvYt64saJEtoAdyqT3Tbk8BR8OTzpXPlk5no/qP9p6lX/UoaJ06tasi
crni8LSYPbaBYT/HbFSzWtwAe5Azn9p9sGSQHgVb2Z4ryCDAwAXZJuy/GfCCvs4w
Jj9sK+F9aHBzU9PnudLr/vLS6w6BJPpg9E00qw==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFGjCCBAKgAwIBAgIQCgRw0Ja8ihLIkKbfgm7sSzANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0xOTA2MjAxMjI3NThaFw0yOTA2MjAxMjI3NThaMF8xCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xHjAcBgNVBAMTFUdlb1RydXN0IENOIFJTQSBDQSBHMTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBALFJ+j1KeZVG4jzgQob23lQ8PJUNhY31ufZihuUx
hYc6HSU4Lw0fxfA43a9DpJl74M3E6F1ZRBOfJ+dWnaiyYD0PxRIQd4wJisti4Uad
vz61IYY/oQ/Elxk/X7GFDquYuxCSyBdHtTVMXCxFSvQ2C/7jWZFDfGGKKNoQSiJy
wDe8iiHbUOakLMmXmOTZyWJnFdR/TH5YNTiMKCNUPHAleG4IigGxDyL/gbwrdDNi
bDA4lUNhD0xNvPjQ8BNKqm5HWDvirUuHdC+4hpi0GJO34O3iiRV16YmWTuVFNboU
LDZ0+PQtctJnatpuZKPGyKX6jCpPvzzPw/EhNDlpEdrYHZMCAwEAAaOCAc4wggHK
MB0GA1UdDgQWBBSRn14xFa4Qn61gwffBzKpINC8MJjAfBgNVHSMEGDAWgBQD3lA1
VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYB
BQUHAwEGCCsGAQUFBwMCMA8GA1UdEwEB/wQFMAMBAf8wMQYIKwYBBQUHAQEEJTAj
MCEGCCsGAQUFBzABhhVodHRwOi8vb2NzcC5kY29jc3AuY24wRAYDVR0fBD0wOzA5
oDegNYYzaHR0cDovL2NybC5kaWdpY2VydC1jbi5jb20vRGlnaUNlcnRHbG9iYWxS
b290Q0EuY3JsMIHOBgNVHSAEgcYwgcMwgcAGBFUdIAAwgbcwKAYIKwYBBQUHAgEW
HGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwgYoGCCsGAQUFBwICMH4MfEFu
eSB1c2Ugb2YgdGhpcyBDZXJ0aWZpY2F0ZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNl
IG9mIHRoZSBSZWx5aW5nIFBhcnR5IEFncmVlbWVudCBsb2NhdGVkIGF0IGh0dHBz
Oi8vd3d3LmRpZ2ljZXJ0LmNvbS9ycGEtdWEwDQYJKoZIhvcNAQELBQADggEBABfg
eXrxIrtlixBv+KMDeqKxtNJbZiLDzJBkGCd4HI63X5eS6BElJBn6mI9eYVrr7qOL
Tp7WiO02Sf1Yrpaz/ePSjZ684o89UAGpxOfbgVSMvo/a07n/220jUWLxzaJhQNLu
lACXwwWsxYf8twP8glkoIHnUUNTlhsyyl1ZzvVC4bDpI4hC6QkJGync1MNqYSMj8
tZbhQNw3HdSmcTO0Nc/J/pK2VZc6fFbKBgspmzdHc6jMKG2t4lisXEysS3wPcg0a
Nfr1Odl5+myh3MnMK08f6pTXvduLz+QZiIh8IYL+Z6QWgTZ9e2jnV8juumX1I8Ge
7cZdtNnTCB8hFfwGLUA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
-----END CERTIFICATE-----

@ -1,103 +0,0 @@
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
types {
application/vnd.android.package-archive apk;
application/iphone pxl ipa;
text/plain plist;
}
sendfile on;
keepalive_timeout 65;
# Docker DNS
#resolver 127.0.0.11;
upstream go-fastdfs {
server 10.10.24.104:8180;
ip_hash;
}
server {
listen 80;
listen 443 ssl;
server_name iot.edusoa.com;
#ssl on;
ssl_certificate edusoa.pem;
ssl_certificate_key edusoa.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM;
ssl_prefer_server_ciphers on;
location / {
if ($http_user_agent ~* "(mobile|android|ipad|iphone|ipod|tablet)") {
proxy_pass http://webspa;
break;
}
proxy_pass http://webmvc/;
}
location ^~ /dfs/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://minio/;
}
location ^~ /live/ {
proxy_pass http://srs:8080/live/;
}
location ^~ /video/ {
proxy_pass http://srs:8080/video/;
}
location ^~ /UserCenter/ {
proxy_pass http://usercenter/UserCenter/;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ^~ /IoTCenter/ {
proxy_pass http://iotcenter/IoTCenter/;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ^~ /IoTCenter/hub {
proxy_pass http://iotcenter/IoTCenter/hub;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location ^~ /JobServer/ {
proxy_pass http://jobserver/JobServer/;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

@ -19,7 +19,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
NuGet.config = NuGet.config
lib\package.json = lib\package.json
..\README.md = ..\README.md
Version.cs = Version.cs
EndProjectSection
@ -42,8 +41,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebSPA", "WebSPA\WebSPA.csp
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JobServer", "JobServer\JobServer.csproj", "{6E2766D8-9ECF-469E-8662-A20F673E52CC}"
EndProject
Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{DB048E66-3411-41F6-86F7-A8F73A9F806A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -162,18 +159,6 @@ Global
{6E2766D8-9ECF-469E-8662-A20F673E52CC}.Release|iPhone.Build.0 = Release|Any CPU
{6E2766D8-9ECF-469E-8662-A20F673E52CC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{6E2766D8-9ECF-469E-8662-A20F673E52CC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Debug|iPhone.Build.0 = Debug|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Release|Any CPU.Build.0 = Release|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Release|iPhone.ActiveCfg = Release|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Release|iPhone.Build.0 = Release|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{DB048E66-3411-41F6-86F7-A8F73A9F806A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -190,7 +175,7 @@ Global
{6E2766D8-9ECF-469E-8662-A20F673E52CC} = {E1681DC3-9AC2-4FF6-B3DE-37EF826E6F8A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
BuildVersion_StartDate = 2000/1/1
SolutionGuid = {0B7095FB-5E70-4EF8-805A-CB4A91AE4B0A}
BuildVersion_StartDate = 2000/1/1
EndGlobalSection
EndGlobal

@ -1,65 +0,0 @@
listen 1935;
max_connections 1000;
srs_log_tank file;
srs_log_file ./objs/log/srs.log;
daemon off;
http_api {
enabled on;
listen 1985;
raw_api {
enabled on;
allow_reload on;
allow_query on;
allow_update on;
}
}
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
stats {
network 0;
disk sda sdb xvda xvdb;
}
vhost __defaultVhost__ {
transcode live {
enabled off;
ffmpeg ./objs/ffmpeg/bin/ffmpeg;
engine snapshot {
enabled on;
iformat flv;
vfilter {
vf fps=1;
}
vcodec png;
vparams {
vframes 1;
}
acodec an;
oformat image2;
output ./objs/nginx/html/[app]/[stream].png;
}
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
hls {
enabled on;
hls_fragment 3;
hls_window 10;
hls_path ./objs/nginx/html;
hls_m3u8_file [app]/[stream].m3u8;
hls_ts_file [app]/[stream]-[seq].ts;
}
dvr {
enabled on;
dvr_apply none;
dvr_path ./objs/nginx/html/video/[app].[stream].[timestamp].mp4;
}
http_hooks {
enabled on;
on_dvr http://iotcenter/IoTCenter/api/v1/Srs/OnDvr;
}
}

@ -1,5 +1,6 @@
portainer/data
mysql
redis/data
influxdb
srs/objs
log

@ -0,0 +1,3 @@
{
"git.ignoreLimitWarning": true
}

@ -1,5 +1,15 @@
#docker-compose up -d
version: "3.8"
services:
mysql:
ports:
- 3306:3306
redis:
ports:
- 6379:6379
influxdb:
ports:
- 8086:8086
webmvc:
image: nginx:1.18
restart: always
@ -15,4 +25,8 @@ services:
TZ: "Asia/Shanghai"
volumes:
- ../../../../projects/WebSPA/wwwroot:/usr/share/nginx/html
- ./log/webspa:/var/log/nginx
- ./log/webspa:/var/log/nginx
nginx:
volumes:
- ./nginx/nginx.development.conf:/etc/nginx/nginx.conf
#network_mode: host

@ -0,0 +1,59 @@
#docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
version: "3.8"
services:
usercenter:
image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal
restart: always
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=Docker
command: bash -c "chmod +x /UserCenter/UserCenter && cd /UserCenter && ./UserCenter"
depends_on:
- mysql
volumes:
- ./apps/UserCenter:/UserCenter
iotcenter:
image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal
restart: always
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=Docker
command: bash -c "chmod +x /IoTCenter/IoTCenter && cd /IoTCenter && ./IoTCenter"
depends_on:
- mysql
volumes:
- ./apps/IotCenter:/IoTCenter
jobserver:
image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal
restart: always
environment:
- TZ=Asia/Shanghai
- ASPNETCORE_ENVIRONMENT=Docker
command: bash -c "sleep 3 && chmod +x /JobServer/JobServer && cd /JobServer && ./JobServer"
depends_on:
- mysql
volumes:
- ./apps/JobServer:/JobServer
webmvc:
image: nginx:1.18
restart: always
environment:
TZ: "Asia/Shanghai"
volumes:
- ./apps/WebMVC/wwwroot:/usr/share/nginx/html
- ./log/webmvc:/var/log/nginx
webspa:
image: nginx:1.18
restart: always
environment:
TZ: "Asia/Shanghai"
volumes:
- ./apps/WebSPA/wwwroot:/usr/share/nginx/html
- ./log/webspa:/var/log/nginx
nginx:
depends_on:
- webmvc
- webspa
- usercenter
- iotcenter
- jobserver

@ -11,12 +11,15 @@ services:
mysql:
image: mysql:8.0
restart: always
hostname: mysql
environment:
MYSQL_ROOT_PASSWORD: root
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=jobserver
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./mysql:/var/lib/mysql
redis:
image: redis:6.0
restart: always
influxdb:
image: influxdb:1.8
restart: always
@ -40,52 +43,6 @@ services:
- ./srs/conf/srs.conf:/usr/local/srs/conf/srs.conf
- ./log/srs:/usr/local/srs/objs/log
- ./srs/objs/nginx/html/video:/usr/local/srs/objs/nginx/html/video
usercenter:
image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal
restart: always
environment:
TZ: "Asia/Shanghai"
command: bash -c "chmod +x /UserCenter/UserCenter && cd /UserCenter && ./UserCenter"
depends_on:
- mysql
volumes:
- ./UserCenter:/UserCenter
iotcenter:
image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal
restart: always
environment:
TZ: "Asia/Shanghai"
command: bash -c "chmod +x /IoTCenter/IoTCenter && cd /IoTCenter && ./IoTCenter"
depends_on:
- mysql
volumes:
- ./IotCenter:/IoTCenter
jobserver:
image: mcr.microsoft.com/dotnet/core/runtime-deps:3.1-focal
restart: always
environment:
TZ: "Asia/Shanghai"
command: bash -c "sleep 3 && chmod +x /JobServer/JobServer && cd /JobServer && ./JobServer"
depends_on:
- mysql
volumes:
- ./JobServer:/JobServer
webmvc:
image: nginx:1.18
restart: always
environment:
TZ: "Asia/Shanghai"
volumes:
- ./WebMVC/wwwroot:/usr/share/nginx/html
- ./log/webmvc:/var/log/nginx
webspa:
image: nginx:1.18
restart: always
environment:
TZ: "Asia/Shanghai"
volumes:
- ./WebSPA/wwwroot:/usr/share/nginx/html
- ./log/webspa:/var/log/nginx
nginx:
image: nginx:1.18
restart: always
@ -94,11 +51,6 @@ services:
ports:
- 80:80
- 443:443
depends_on:
- webmvc
- webspa
- usercenter
- iotcenter
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/edusoa.key:/etc/nginx/edusoa.key

@ -7,97 +7,73 @@ worker_processes 1;
#pid logs/nginx.pid;
events {
worker_connections 1024;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
types {
application/vnd.android.package-archive apk;
application/iphone pxl ipa;
text/plain plist;
}
sendfile on;
keepalive_timeout 65;
# Docker DNS
#resolver 127.0.0.11;
upstream go-fastdfs {
server 10.10.24.104:8180;
ip_hash;
}
server {
listen 80;
listen 443 ssl;
server_name iot.edusoa.com;
#ssl on;
ssl_certificate edusoa.pem;
ssl_certificate_key edusoa.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM;
ssl_prefer_server_ciphers on;
location / {
if ($http_user_agent ~* "(mobile|android|ipad|iphone|ipod|tablet)") {
proxy_pass http://webspa;
break;
}
proxy_pass http://webmvc/;
}
location ^~ /dfs/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://minio/;
}
location ^~ /live/ {
proxy_pass http://srs:8080/live/;
}
location ^~ /video/ {
proxy_pass http://srs:8080/video/;
}
location ^~ /UserCenter/ {
proxy_pass http://usercenter/UserCenter/;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
http {
include mime.types;
default_type application/octet-stream;
location ^~ /IoTCenter/ {
proxy_pass http://iotcenter/IoTCenter/;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
sendfile on;
location ^~ /IoTCenter/hub {
proxy_pass http://iotcenter/IoTCenter/hub;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
keepalive_timeout 65;
location ^~ /JobServer/ {
proxy_pass http://jobserver/JobServer/;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
upstream go-fastdfs {
server 10.10.24.104:8180;
ip_hash;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
server {
listen 0.0.0.0:80;
server_name localhost;
location / {
#proxy_set_header Host $host:$server_port;
if ($http_user_agent ~* "(mobile|android|ipad|iphone|ipod|tablet)") {
proxy_pass http://webspa;
break;
}
proxy_pass http://webmvc/;
}
location ^~ /dfs/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://go-fastdfs/;
}
location ^~ /live/ {
proxy_pass http://srs:8080/live/;
}
location ^~ /video/ {
proxy_pass http://srs:8080/video/;
}
location ^~ /UserCenter/ {
proxy_pass http://usercenter/UserCenter/;
}
location ^~ /IoTCenter/ {
proxy_pass http://iotcenter/IoTCenter/;
}
location ^~ /IoTCenter/hub {
proxy_pass http://iotcenter/IoTCenter/hub;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location ^~ /JobServer/ {
proxy_pass http://jobserver/JobServer/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
}

@ -0,0 +1,79 @@
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream go-fastdfs {
server 10.10.24.104:8180;
ip_hash;
}
server {
listen 0.0.0.0:80;
server_name localhost;
location / {
#proxy_set_header Host $host:$server_port;
if ($http_user_agent ~* "(mobile|android|ipad|iphone|ipod|tablet)") {
proxy_pass http://host.docker.internal:5002;
break;
}
proxy_pass http://host.docker.internal:5001/;
}
location ^~ /dfs/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://go-fastdfs/;
}
location ^~ /live/ {
proxy_pass http://host.docker.internal:8080/live/;
}
location ^~ /video/ {
proxy_pass http://host.docker.internal:8080/video/;
}
location ^~ /UserCenter/ {
proxy_pass http://host.docker.internal:8010/UserCenter/;
}
location ^~ /IoTCenter/ {
proxy_pass http://host.docker.internal:8011/IoTCenter/;
}
location ^~ /IoTCenter/hub {
proxy_pass http://host.docker.internal:8011/IoTCenter/hub;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location ^~ /JobServer/ {
proxy_pass http://host.docker.internal:8013/JobServer/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Loading…
Cancel
Save