From 51575b9f2d97acc599b5bfd62c68acff96a50a43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Fri, 21 Apr 2023 23:44:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E8=B0=83=E5=BA=A6=EF=BC=8C=E7=B3=BB=E7=BB=9F=E6=AF=8F=E5=A4=A9?= =?UTF-8?q?12=E7=82=B9=E3=80=810=E7=82=B9=E9=87=8D=E7=BD=AE=E4=B8=80?= =?UTF-8?q?=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Data/DataSeeds/DataSeedExecuteHandler.cs | 27 +++++++++++ .../Yi.Framework.Infrastructure/Startup.cs | 3 ++ .../Rbac/Job/SystemDataJob.cs | 43 ++++++++++++++++++ Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs | 9 ++++ .../Yi.Furion.Web.Entry/yi-sqlsugar-dev.db | Bin 221184 -> 221184 bytes 5 files changed, 82 insertions(+) create mode 100644 Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/DataSeeds/DataSeedExecuteHandler.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Rbac/Job/SystemDataJob.cs 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 9760d2eeb21f291aed66e56325137a65bfb828b4..602627094d13664f947202a8c0aa5f73b5682664 100644 GIT binary patch delta 9932 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