WGShare.API/WGShare.API/BackgroudServices/AgoraDataService.cs

57 lines
2.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Hangfire;
using Hangfire.Server;
using Masuit.Tools;
using SqlSugar;
using WGShare.API.Helpers;
using WGShare.Domain.Entities;
namespace WGShare.API.BackgroudServices
{
public class OssCleanWorker : BackgroundService
{
private readonly ILogger<OssCleanWorker> _logger;
private readonly ISqlSugarClient _sugarClient;
private readonly OssHelper _ossHelper;
public OssCleanWorker(ILogger<OssCleanWorker> logger, ISqlSugarClient sugarClient, OssHelper ossHelper)
{
_logger = logger;
this._sugarClient = sugarClient;
this._ossHelper = ossHelper;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
RecurringJob.AddOrUpdate("DeleteOssFile", () => DeleteOssFile(), Cron.Daily());
}
public async Task DeleteOssFile()
{
await Console.Out.WriteLineAsync($@"开始清除过期文件,当前时间:{DateTime.Now}");
// 查找已删除未文件清理并过期180天的文件
var deleteFiles = await _sugarClient.Queryable<ShareFile>()
.Where(x => x.IsDelete == true && x.IsFileClean == false && SqlFunc.DateDiff(DateType.Day, x.ModifyTime, SqlFunc.GetDate()) > 180)
.ToListAsync();
if (deleteFiles.IsNullOrEmpty())
{
await Console.Out.WriteLineAsync($@"当前无可清除文件,退出本次操作,当前时间:{DateTime.Now}");
return;
}
await Console.Out.WriteLineAsync($@"本次清除文件数量:{deleteFiles.Count}");
await Console.Out.WriteLineAsync($@"本次清除文件路径:{string.Join(',', deleteFiles.Select(x => x.FileUrl))}");
if (_ossHelper.DeleteObjects(deleteFiles.Select(x => x.FileUrl).ToArray()))
{
await _sugarClient.Updateable<ShareFile>()
.SetColumns(x => x.IsFileClean == true)
.Where(x => deleteFiles.Select(a => a.Id).Contains(x.Id))
.ExecuteCommandAsync();
}
await Console.Out.WriteLineAsync($@"本次清除操作结束,当前时间:{DateTime.Now}");
}
}
}