From e94a8bbfd2d453a6a95a7f447020841f1566d535 Mon Sep 17 00:00:00 2001
From: lq1405 <2769838458@qq.com>
Date: Sun, 13 Oct 2024 22:09:08 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=9D=E5=A7=8B=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
LMS.Repository/DB/User.cs | 7 +-
LMS.service/.config/dotnet-tools.json | 12 +
.../DatabaseConfiguration.cs | 100 +++++++
.../RsaConfigurattions.cs | 6 +-
.../Configuration/ServiceConfiguration.cs | 3 +-
LMS.service/Controllers/UserController.cs | 3 +-
LMS.service/Program.cs | 2 +
SQL/Structure/Structure.sql | 281 ++++++++++++++++++
8 files changed, 405 insertions(+), 9 deletions(-)
create mode 100644 LMS.service/.config/dotnet-tools.json
create mode 100644 LMS.service/Configuration/InitConfiguration/DatabaseConfiguration.cs
rename LMS.service/Configuration/{ => InitConfiguration}/RsaConfigurattions.cs (96%)
create mode 100644 SQL/Structure/Structure.sql
diff --git a/LMS.Repository/DB/User.cs b/LMS.Repository/DB/User.cs
index 9ecffd5..1611f26 100644
--- a/LMS.Repository/DB/User.cs
+++ b/LMS.Repository/DB/User.cs
@@ -1,4 +1,5 @@
using LMS.Repository.User;
+using LMS.Tools.Extensions;
using Microsoft.AspNetCore.Identity;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
@@ -33,13 +34,13 @@ namespace LMS.Repository.Models.DB
public string? Options { get; set; } = "{}";
[Column(TypeName = "datetime")]
- public DateTime CreatedDate { get; set; } = DateTime.Now;
+ public DateTime CreatedDate { get; set; } = BeijingTimeExtension.GetBeijingTime();
[Column(TypeName = "datetime")]
- public DateTime UpdatedDate { get; set; } = DateTime.Now;
+ public DateTime UpdatedDate { get; set; } = BeijingTimeExtension.GetBeijingTime();
[Column(TypeName = "datetime")]
- public DateTime LastLoginDate { get; set; } = DateTime.Now;
+ public DateTime LastLoginDate { get; set; } = BeijingTimeExtension.GetBeijingTime();
public string? LastLoginIp { get; set; } = "";
diff --git a/LMS.service/.config/dotnet-tools.json b/LMS.service/.config/dotnet-tools.json
new file mode 100644
index 0000000..40d4373
--- /dev/null
+++ b/LMS.service/.config/dotnet-tools.json
@@ -0,0 +1,12 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "dotnet-ef": {
+ "version": "8.0.10",
+ "commands": [
+ "dotnet-ef"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/LMS.service/Configuration/InitConfiguration/DatabaseConfiguration.cs b/LMS.service/Configuration/InitConfiguration/DatabaseConfiguration.cs
new file mode 100644
index 0000000..939339d
--- /dev/null
+++ b/LMS.service/Configuration/InitConfiguration/DatabaseConfiguration.cs
@@ -0,0 +1,100 @@
+using LMS.DAO;
+using LMS.Repository.Models.DB;
+using LMS.Tools.Extensions;
+using Microsoft.AspNetCore.Identity;
+using Microsoft.EntityFrameworkCore;
+using static LMS.Common.Enums.ResponseCodeEnum;
+
+namespace LMS.service.Configuration.InitConfiguration;
+
+///
+/// 检查数据库中的一些操作
+///
+///
+public class DatabaseConfiguration(IServiceProvider serviceProvider) : IHostedService
+{
+ private readonly IServiceProvider _serviceProvider = serviceProvider;
+ public async Task StartAsync(CancellationToken cancellationToken)
+ {
+ using var scope = _serviceProvider.CreateScope();
+ var dbContext = scope.ServiceProvider.GetRequiredService();
+ var userManager = scope.ServiceProvider.GetRequiredService>();
+ var roleManager = scope.ServiceProvider.GetRequiredService>();
+ using var transaction = await dbContext.Database.BeginTransactionAsync(cancellationToken);
+ try
+ {
+ // 判断数据库中是不是超级管理员,没有创建一个
+ // 要是没有用户,默认没有
+ User? user = await dbContext.Users.FirstOrDefaultAsync(x => x.UserName == "admin", cancellationToken: cancellationToken);
+ if (user != null)
+ {
+ return;
+ }
+ User admin = new()
+ {
+ UserName = "admin",
+ NickName = "admin",
+ Email = "admin@admin.com",
+ AllDeviceCount = 1,
+ AgentPercent = 0.50,
+ FreeCount = 10,
+ CreatedDate = BeijingTimeExtension.GetBeijingTime(),
+ UpdatedDate = BeijingTimeExtension.GetBeijingTime(),
+ };
+ var result = await userManager.CreateAsync(admin, "Admin123.");
+ if (!result.Succeeded)
+ {
+ foreach (var s in result.Errors)
+ {
+ Console.WriteLine(s.Description);
+ return;
+ }
+ }
+
+ List roleNames =
+ [
+ "Super Admin",
+ "Admin",
+ "Agent User",
+ "VIP User",
+ "Simple User"
+ ];
+
+ for (int i = 0; i < roleNames.Count; i++)
+ {
+ // 开始添加一些默认数据。添加角色
+ if (await roleManager.FindByNameAsync(roleNames[i]) == null)
+ {
+ var indentiyResult = await roleManager.CreateAsync(new Role
+ {
+ Name = roleNames[i],
+ CreatedUserId = admin.Id,
+ UpdatedUserId = admin.Id,
+ CreatedTime = BeijingTimeExtension.GetBeijingTime(),
+ UpdatedTime = BeijingTimeExtension.GetBeijingTime(),
+ Remark = string.Empty,
+ });
+ Console.WriteLine(indentiyResult.Succeeded);
+ }
+ }
+ // 判断判断admin是不是超级管理员,不是的话,添加
+ if (!await userManager.IsInRoleAsync(admin, "Super Admin"))
+ {
+ await userManager.AddToRoleAsync(admin, "Super Admin");
+ }
+ await transaction.CommitAsync(cancellationToken);
+ }
+ catch (Exception ex)
+ {
+ await transaction.RollbackAsync(cancellationToken);
+ // 根据需要处理异常,例如终止应用程序
+ Console.WriteLine(ex.Message);
+ Environment.Exit(1);
+ }
+ }
+
+ public Task StopAsync(CancellationToken cancellationToken)
+ {
+ return Task.CompletedTask;
+ }
+}
diff --git a/LMS.service/Configuration/RsaConfigurattions.cs b/LMS.service/Configuration/InitConfiguration/RsaConfigurattions.cs
similarity index 96%
rename from LMS.service/Configuration/RsaConfigurattions.cs
rename to LMS.service/Configuration/InitConfiguration/RsaConfigurattions.cs
index ffcf458..f42f210 100644
--- a/LMS.service/Configuration/RsaConfigurattions.cs
+++ b/LMS.service/Configuration/InitConfiguration/RsaConfigurattions.cs
@@ -1,16 +1,14 @@
-
-using LMS.Common.RSAKey;
+using LMS.Common.RSAKey;
using LMS.DAO;
using LMS.Repository.DB;
using LMS.Tools.Extensions;
using Microsoft.EntityFrameworkCore;
-namespace LMS.service.Configuration
+namespace LMS.service.Configuration.InitConfiguration
{
public class RsaConfigurattions(IServiceProvider serviceProvider) : IHostedService
{
private readonly IServiceProvider _serviceProvider = serviceProvider;
-
public async Task StartAsync(CancellationToken cancellationToken)
{
using var scope = _serviceProvider.CreateScope();
diff --git a/LMS.service/Configuration/ServiceConfiguration.cs b/LMS.service/Configuration/ServiceConfiguration.cs
index e60bf00..2b33663 100644
--- a/LMS.service/Configuration/ServiceConfiguration.cs
+++ b/LMS.service/Configuration/ServiceConfiguration.cs
@@ -2,7 +2,7 @@
using LMS.DAO.PermissionDAO;
using LMS.DAO.RoleDAO;
using LMS.DAO.UserDAO;
-using LMS.service.Configuration;
+using LMS.service.Configuration.InitConfiguration;
using LMS.service.Service;
using LMS.service.Service.PermissionService;
using LMS.service.Service.RoleService;
@@ -16,6 +16,7 @@ namespace Lai_server.Configuration
{
// 注入Service
services.AddScoped();
+ services.AddScoped();
// 注入DDL
services.AddScoped();
diff --git a/LMS.service/Controllers/UserController.cs b/LMS.service/Controllers/UserController.cs
index 701791c..37278ec 100644
--- a/LMS.service/Controllers/UserController.cs
+++ b/LMS.service/Controllers/UserController.cs
@@ -199,7 +199,7 @@ namespace LMS.service.Controllers
}
#endregion
- #region 将用户升级为代理
+ #region 将用户升级为代理
[HttpPost]
[Authorize]
@@ -208,6 +208,7 @@ namespace LMS.service.Controllers
long requestUserId = ConvertExtension.ObjectToLong(HttpContext.Items["UserId"] ?? 0);
return await _loginService.EnableAgent(requestUserId);
}
+
#endregion
#region 获取用户的代理信息
diff --git a/LMS.service/Program.cs b/LMS.service/Program.cs
index 6e49b1a..0c38641 100644
--- a/LMS.service/Program.cs
+++ b/LMS.service/Program.cs
@@ -2,6 +2,7 @@ using Lai_server.Configuration;
using LMS.DAO;
using LMS.Repository.Models.DB;
using LMS.service.Configuration;
+using LMS.service.Configuration.InitConfiguration;
using LMS.service.Extensions.Middleware;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
@@ -70,6 +71,7 @@ builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerService();
builder.Services.AddHostedService();
+builder.Services.AddHostedService();
var app = builder.Build();
diff --git a/SQL/Structure/Structure.sql b/SQL/Structure/Structure.sql
new file mode 100644
index 0000000..51e9344
--- /dev/null
+++ b/SQL/Structure/Structure.sql
@@ -0,0 +1,281 @@
+/*
+ Navicat Premium Dump SQL
+
+ Source Server : 亿速云(国内)
+ Source Server Type : MySQL
+ Source Server Version : 80018 (8.0.18)
+ Source Host : yisurds-66dc0b453c05d4.rds.ysydb1.com:14080
+ Source Schema : LMS_TEST
+
+ Target Server Type : MySQL
+ Target Server Version : 80018 (8.0.18)
+ File Encoding : 65001
+
+ Date: 13/10/2024 21:05:08
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for ApiEndpoints
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `ApiEndpoints` (
+ `Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ `HttpMethod` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'Http请求方式',
+ `Path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'Http请求地址',
+ `CreateTime` datetime NOT NULL COMMENT '创建时间',
+ `RequiredPermissionIds` json NOT NULL COMMENT '需要的权限ID',
+ `CreatedId` bigint(20) NOT NULL COMMENT '创建者ID',
+ `UpdatedId` bigint(20) NOT NULL COMMENT '更新者ID',
+ PRIMARY KEY (`Id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for AspNetRoleClaims
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `AspNetRoleClaims` (
+ `Id` int(11) NOT NULL AUTO_INCREMENT,
+ `RoleId` bigint(20) NOT NULL,
+ `ClaimType` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ `ClaimValue` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ PRIMARY KEY (`Id`) USING BTREE,
+ INDEX `IX_AspNetRoleClaims_RoleId`(`RoleId` ASC) USING BTREE,
+ CONSTRAINT `FK_AspNetRoleClaims_AspNetRoles_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `AspNetRoles` (`Id`) ON DELETE CASCADE ON UPDATE RESTRICT
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for AspNetRoles
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `AspNetRoles` (
+ `Id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `Name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `NormalizedName` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `ConcurrencyStamp` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ `CreatedUserId` bigint(20) NOT NULL,
+ `UpdatedUserId` bigint(20) NOT NULL,
+ `CreatedTime` datetime NOT NULL,
+ `UpdatedTime` datetime NOT NULL,
+ `Remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ PRIMARY KEY (`Id`) USING BTREE,
+ UNIQUE INDEX `RoleNameIndex`(`NormalizedName` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for AspNetUserClaims
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `AspNetUserClaims` (
+ `Id` int(11) NOT NULL AUTO_INCREMENT,
+ `UserId` bigint(20) NOT NULL,
+ `ClaimType` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ `ClaimValue` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ PRIMARY KEY (`Id`) USING BTREE,
+ INDEX `IX_AspNetUserClaims_UserId`(`UserId` ASC) USING BTREE,
+ CONSTRAINT `FK_AspNetUserClaims_AspNetUsers_UserId` FOREIGN KEY (`UserId`) REFERENCES `AspNetUsers` (`Id`) ON DELETE CASCADE ON UPDATE RESTRICT
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for AspNetUserLogins
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `AspNetUserLogins` (
+ `LoginProvider` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ `ProviderKey` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ `ProviderDisplayName` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ `UserId` bigint(20) NOT NULL,
+ PRIMARY KEY (`LoginProvider`, `ProviderKey`) USING BTREE,
+ INDEX `IX_AspNetUserLogins_UserId`(`UserId` ASC) USING BTREE,
+ CONSTRAINT `FK_AspNetUserLogins_AspNetUsers_UserId` FOREIGN KEY (`UserId`) REFERENCES `AspNetUsers` (`Id`) ON DELETE CASCADE ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for AspNetUserRoles
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `AspNetUserRoles` (
+ `UserId` bigint(20) NOT NULL,
+ `RoleId` bigint(20) NOT NULL,
+ PRIMARY KEY (`UserId`, `RoleId`) USING BTREE,
+ INDEX `IX_AspNetUserRoles_RoleId`(`RoleId` ASC) USING BTREE,
+ CONSTRAINT `FK_AspNetUserRoles_AspNetRoles_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `AspNetRoles` (`Id`) ON DELETE CASCADE ON UPDATE RESTRICT,
+ CONSTRAINT `FK_AspNetUserRoles_AspNetUsers_UserId` FOREIGN KEY (`UserId`) REFERENCES `AspNetUsers` (`Id`) ON DELETE CASCADE ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for AspNetUserTokens
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `AspNetUserTokens` (
+ `UserId` bigint(20) NOT NULL,
+ `LoginProvider` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ `Value` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ PRIMARY KEY (`UserId`, `LoginProvider`, `Name`) USING BTREE,
+ CONSTRAINT `FK_AspNetUserTokens_AspNetUsers_UserId` FOREIGN KEY (`UserId`) REFERENCES `AspNetUsers` (`Id`) ON DELETE CASCADE ON UPDATE RESTRICT
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for AspNetUsers
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `AspNetUsers` (
+ `Id` bigint(20) NOT NULL AUTO_INCREMENT,
+ `NickName` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ `CreatedDate` datetime NOT NULL,
+ `UpdatedDate` datetime NOT NULL,
+ `LastLoginDate` datetime NOT NULL,
+ `LastLoginIp` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ `LastLoginDevice` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ `UserName` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `NormalizedUserName` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `Email` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `NormalizedEmail` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `EmailConfirmed` tinyint(1) NOT NULL,
+ `PasswordHash` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ `SecurityStamp` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ `ConcurrencyStamp` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ `PhoneNumber` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL,
+ `PhoneNumberConfirmed` tinyint(1) NOT NULL,
+ `TwoFactorEnabled` tinyint(1) NOT NULL,
+ `LockoutEnd` datetime(6) NULL DEFAULT NULL,
+ `LockoutEnabled` tinyint(1) NULL DEFAULT NULL,
+ `AccessFailedCount` int(11) NULL DEFAULT NULL,
+ `FreeCount` bigint(20) NOT NULL DEFAULT 5 COMMENT '免费修改机器码的次数',
+ `AgentPercent` double NOT NULL DEFAULT 0.5 COMMENT '代理分成的百分比',
+ `AllDeviceCount` bigint(10) NOT NULL DEFAULT 1 COMMENT '可用的机器码数量(买了几次)',
+ `Options` json NULL,
+ `ParentId` bigint(20) NULL DEFAULT NULL,
+ `AffiliateCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ PRIMARY KEY (`Id`) USING BTREE,
+ UNIQUE INDEX `UserNameIndex`(`NormalizedUserName` ASC) USING BTREE,
+ INDEX `EmailIndex`(`NormalizedEmail` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for Machine
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `Machine` (
+ `Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'ID',
+ `MachineId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户电脑的机器码',
+ `CreateTime` datetime NOT NULL COMMENT '创建时间',
+ `UpdateTime` datetime NOT NULL COMMENT '更新时间',
+ `DeactivationTime` datetime NULL DEFAULT NULL COMMENT '停用时间',
+ `Status` int(11) NOT NULL COMMENT '状态 (激活/冻结)',
+ `CreateId` bigint(20) NOT NULL COMMENT '创建者ID',
+ `UpdateId` bigint(20) NOT NULL COMMENT '更新者ID',
+ `UseStatus` int(11) NOT NULL COMMENT '使用状态(使用/永久)',
+ `Remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '备注',
+ `UserID` bigint(20) NOT NULL COMMENT '机器码所属ID',
+ PRIMARY KEY (`Id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for Permission
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `Permission` (
+ `Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '权限的ID',
+ `UserId` bigint(20) NULL DEFAULT NULL COMMENT '用户的ID',
+ `MachineId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '机器码的ID(是ID,不是机器码)',
+ `RoleId` bigint(20) NULL DEFAULT NULL COMMENT '角色ID',
+ `PermissionTypeIds` json NULL COMMENT '权限类型的ID(子权限)',
+ `PermissionCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '权限对应的Code',
+ `CreateUserId` bigint(20) NOT NULL COMMENT '创建人ID',
+ `UpdateUserId` bigint(20) NOT NULL COMMENT '更新人ID',
+ `CreateTime` datetime NOT NULL COMMENT '创建时间',
+ `UpdateTime` datetime NOT NULL COMMENT '更新时间',
+ `Remark` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '备注',
+ `Type` int(11) NOT NULL COMMENT '对应的类型\r\n对应 User,Role,Machine\r\n设置对应的type 检查对应的属性数据是不是存在\r\n',
+ PRIMARY KEY (`Id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for PermissionType
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `PermissionType` (
+ `Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '权限ID',
+ `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '权限的名字',
+ `Code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '表示权限的代码',
+ `Type` int(11) NOT NULL COMMENT '权限的分类(user和machine,role,prompt,permission,自定义)',
+ `CreateUserId` bigint(20) NOT NULL COMMENT '创建者ID',
+ `CreateTime` datetime NOT NULL COMMENT '创建时间',
+ `UpdateUserId` bigint(20) NOT NULL COMMENT '更新者ID',
+ `UpdateTime` datetime NOT NULL COMMENT '更新权限类型的时间',
+ `Remark` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '权限的描述',
+ PRIMARY KEY (`Id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for Prompt
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `Prompt` (
+ `Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'ID',
+ `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '提示词预设的名称',
+ `PromptTypeId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '提示词的类型ID',
+ `PromptTypeCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '提示词的类型编码',
+ `PromptString` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '提示词预设字符串',
+ `Version` int(11) NOT NULL COMMENT '当前版本',
+ `Status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '状态',
+ `Description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '提示词的描述',
+ `CreateUserId` bigint(20) NOT NULL COMMENT '创建者',
+ `CreateTime` datetime NOT NULL COMMENT '创建时间',
+ `UpdateUserId` bigint(20) NOT NULL COMMENT '更新者',
+ `UpdateTime` datetime NOT NULL COMMENT '更新时间',
+ `Remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`Id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '存放提示词的表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for PromptType
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `PromptType` (
+ `Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'ID',
+ `Code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '提示词类型编码',
+ `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '提示词类型名称',
+ `Remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '提示词类型描述',
+ `Status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '提示词类型状态',
+ `IsDeleted` tinyint(1) NOT NULL COMMENT '是否删除',
+ `CreateUserId` bigint(20) NOT NULL COMMENT '创建用户ID',
+ `CreateTime` datetime NOT NULL COMMENT '创建时间',
+ `UpdateUserId` bigint(20) NOT NULL COMMENT '更新者ID',
+ `UpdateTime` datetime NOT NULL COMMENT '更新时间',
+ PRIMARY KEY (`Id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '提示词类型的库' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for RefreshTokens
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `RefreshTokens` (
+ `Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'ID ',
+ `UserId` bigint(20) NOT NULL COMMENT '用户ID\r\n',
+ `Token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '刷新token',
+ `Expiration` datetime NOT NULL COMMENT '到期时间',
+ `Revoked` bit(1) NOT NULL COMMENT '是不是失效',
+ `CreatedTime` datetime NOT NULL COMMENT '创建时间',
+ `LastCheckIp` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '上次校验IP',
+ `DeviceInfo` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '设备信息,浏览器信息等',
+ PRIMARY KEY (`Id` DESC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for RsaKeys
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `RsaKeys` (
+ `Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'ID 主键',
+ `PublicKey` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '公钥',
+ `EncryptedPrivateKey` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '加密后的私钥',
+ `EncryptionKey` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '加密私钥的随机字符串',
+ `EncryptionIV` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '加密私钥的IV',
+ `KeyVersion` int(11) NOT NULL COMMENT 'Key的版本',
+ `CreatedTime` datetime NOT NULL COMMENT '创建时间',
+ `LastUsed` datetime NULL DEFAULT NULL COMMENT '上次使用的时间',
+ `UseCount` int(11) NOT NULL DEFAULT 0 COMMENT '使用的次数',
+ `ExpirationTime` datetime NOT NULL COMMENT '到期时间',
+ PRIMARY KEY (`Id`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'RSA密钥存储表' ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Table structure for __EFMigrationsHistory
+-- ----------------------------
+CREATE TABLE IF NOT EXISTS `__EFMigrationsHistory` (
+ `MigrationId` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ `ProductVersion` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+ PRIMARY KEY (`MigrationId`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+SET FOREIGN_KEY_CHECKS = 1;