diff --git a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/DataSeeds/DataSeedExecuteHandler.cs b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/DataSeeds/DataSeedExecuteHandler.cs new file mode 100644 index 00000000..ccbe4dac --- /dev/null +++ b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/DataSeeds/DataSeedExecuteHandler.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Furion.DependencyInjection; + +namespace Yi.Framework.Infrastructure.Data.DataSeeds +{ + + public class DataSeedExecuteHandler : ISingleton + { + private IEnumerable _dataSeeds; + public DataSeedExecuteHandler(IEnumerable dataSeeds) + { + _dataSeeds = dataSeeds; + } + + public async Task Invoker() + { + foreach (var dataSeed in _dataSeeds) + { + await dataSeed.InvokerAsync(); + } + } + } +} diff --git a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Startup.cs b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Startup.cs index c5d439a9..1e0a0076 100644 --- a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Startup.cs +++ b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Startup.cs @@ -1,4 +1,5 @@ using Furion; +using Furion.Schedule; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; @@ -36,6 +37,8 @@ public class Startup : AppStartup { options.Filters.Add(); }); + + } public async void Configure(IApplicationBuilder app, IWebHostEnvironment env) diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Job/SystemDataJob.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Job/SystemDataJob.cs new file mode 100644 index 00000000..cdea9c8e --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Job/SystemDataJob.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Furion.Schedule; +using Microsoft.Extensions.Logging; +using SqlSugar; +using Yi.Framework.Infrastructure.Data.DataSeeds; +using Yi.Framework.Module.DictionaryManager.Entities; +using Yi.Furion.Core.Rbac.Entities; + +namespace Yi.Furion.Application.Rbac.Job +{ + public class SystemDataJob : IJob + { + private ISqlSugarClient _db; + private DataSeedExecuteHandler _dataSeedExecuteHandler; + private ILogger _logger; + public SystemDataJob(ISqlSugarClient sqlSugarClient, DataSeedExecuteHandler dataSeedExecuteHandler,ILogger logger) + { + _db = sqlSugarClient; + _dataSeedExecuteHandler= dataSeedExecuteHandler; + _logger= logger; + } + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + _db.DbMaintenance.TruncateTable(); + _db.DbMaintenance.TruncateTable(); + _db.DbMaintenance.TruncateTable(); + _db.DbMaintenance.TruncateTable(); + _db.DbMaintenance.TruncateTable(); + _db.DbMaintenance.TruncateTable(); + _db.DbMaintenance.TruncateTable(); + _db.DbMaintenance.TruncateTable(); + _db.DbMaintenance.TruncateTable(); + _db.DbMaintenance.TruncateTable(); + _db.DbMaintenance.TruncateTable(); + await _dataSeedExecuteHandler.Invoker(); + _logger.LogWarning("数据已经重置还原"); + } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs b/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs index 5a3c1f92..2f553bd2 100644 --- a/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs +++ b/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs @@ -1,9 +1,11 @@ using Furion; +using Furion.Schedule; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Yi.Framework.Infrastructure.Data.Json; +using Yi.Furion.Application.Rbac.Job; using Yi.Furion.Application.Rbac.SignalRHub; using Yi.Furion.Web.Core.Handlers; @@ -27,6 +29,13 @@ public class Startup : AppStartup services.AddHttpContextAccessor(); services.AddSignalR(); + + services.AddSchedule(options => + { + // 注册作业,并配置作业触发器 + //options.AddJob(Triggers.Daily()); // 表示每秒执行 + options.AddJob(Triggers.Cron("0 0 0,12 ? * ?")); // 表示每秒执行 + }); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) diff --git a/Yi.Furion.Net6/Yi.Furion.Web.Entry/yi-sqlsugar-dev.db b/Yi.Furion.Net6/Yi.Furion.Web.Entry/yi-sqlsugar-dev.db index 9760d2ee..60262709 100644 Binary files a/Yi.Furion.Net6/Yi.Furion.Web.Entry/yi-sqlsugar-dev.db and b/Yi.Furion.Net6/Yi.Furion.Web.Entry/yi-sqlsugar-dev.db differ