using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Volo.Abp.BackgroundWorkers.Hangfire; using Volo.Abp.Data; using Yi.Framework.Rbac.Domain.Entities; using Yi.Framework.SqlSugarCore.Abstractions; namespace Yi.Abp.Application.Jobs { public class DemoResetJob : HangfireBackgroundWorkerBase { private ISqlSugarDbContext _dbContext; private ILogger _logger => LoggerFactory.CreateLogger(); private IDataSeeder _dataSeeder; private IConfiguration _configuration; public DemoResetJob(ISqlSugarDbContext dbContext, IDataSeeder dataSeeder, IConfiguration configuration) { _dbContext = dbContext; RecurringJobId = "重置demo环境"; //每天1点和13点进行重置demo环境 CronExpression = "0 0 1,13 * * ?"; _dataSeeder = dataSeeder; _configuration = configuration; } public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) { //开启演示环境重置功能 if (_configuration.GetSection("EnableDemoReset").Get()) { //定时任务,非常简单 _logger.LogWarning("演示环境正在还原!"); var db = _dbContext.SqlSugarClient.CopyNew(); 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 _dataSeeder.SeedAsync(); _logger.LogWarning("演示环境还原成功!"); } } } }