Blame view

Yi.Abp.Net8/src/Yi.Abp.Web/Jobs/DemoResetJob.cs 2.07 KB
515fceeb   “wangming”   框架初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  using Volo.Abp.BackgroundWorkers.Hangfire;
  using Volo.Abp.Data;
  using Yi.Framework.Rbac.Domain.Entities;
  using Yi.Framework.SqlSugarCore.Abstractions;
  
  namespace Yi.Abp.Web.Jobs
  {
      public class DemoResetJob  : HangfireBackgroundWorkerBase
      {
          private ISqlSugarDbContext _dbContext;
          private ILogger<DemoResetJob> _logger => LoggerFactory.CreateLogger<DemoResetJob>();
          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<bool>())
              {
                  //定时任务,非常简单
                  _logger.LogWarning("演示环境正在还原!");
                  var db = _dbContext.SqlSugarClient.CopyNew();
                  db.DbMaintenance.TruncateTable<UserAggregateRoot>();
                  db.DbMaintenance.TruncateTable<UserRoleEntity>();
                  db.DbMaintenance.TruncateTable<RoleAggregateRoot>();
                  db.DbMaintenance.TruncateTable<RoleMenuEntity>();
                  db.DbMaintenance.TruncateTable<MenuAggregateRoot>();
                  db.DbMaintenance.TruncateTable<RoleDeptEntity>();
                  db.DbMaintenance.TruncateTable<DeptAggregateRoot>();
                  db.DbMaintenance.TruncateTable<PostAggregateRoot>();
                  db.DbMaintenance.TruncateTable<UserPostEntity>();
  
                  //删除种子数据
                  await _dataSeeder.SeedAsync();
                  _logger.LogWarning("演示环境还原成功!");
  
              }
  
          }
      }
  }