83 lines
2.8 KiB
C#
83 lines
2.8 KiB
C#
using AlibabaCloud.SDK.Vod20170321;
|
|
using Coravel.Invocable;
|
|
using Microsoft.AspNetCore.Http;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using UserCenter.Model.Enum;
|
|
using VideoAnalysisCore.Common;
|
|
using VideoAnalysisCore.Model;
|
|
using VideoAnalysisCore.Model.Dto;
|
|
using VideoAnalysisCore.Model.Interface;
|
|
using VideoAnalysisCore.Model.蓝鲸智库;
|
|
using Yitter.IdGenerator;
|
|
|
|
namespace VideoAnalysisCore.Job
|
|
{
|
|
/// <summary>
|
|
/// 下载视频的任务文件清理任务
|
|
/// </summary>
|
|
public class TaskFileClearJob : IInvocable
|
|
{
|
|
private readonly Repository<VideoTask> videotaskDB;
|
|
|
|
public TaskFileClearJob(Repository<VideoTask> videotaskDB)
|
|
{
|
|
this.videotaskDB = videotaskDB;
|
|
}
|
|
public void DeleteOldCompletedTaskCaches()
|
|
{
|
|
try
|
|
{
|
|
var startTime = -1;
|
|
var timeSpan = startTime - 999;
|
|
// 计算 2 天前的时间
|
|
DateTime twoDaysAgo = DateTime.Now.AddDays(startTime);
|
|
DateTime endDaysAgo = DateTime.Now.AddDays(timeSpan);
|
|
|
|
// 查询 2 天前任务执行完成的记录
|
|
var completedTasks = videotaskDB.AsQueryable()
|
|
.Where(t => (
|
|
//筛选 结束任务 或者 错误任务
|
|
t.LastEnum == Model.Enum.RedisChannelEnum.结束任务 ||
|
|
t.ErrorMessage != null
|
|
)
|
|
&& t.EndTime < twoDaysAgo
|
|
&& t.EndTime > endDaysAgo)
|
|
.ToList();
|
|
|
|
// 遍历查询结果,删除缓存文件
|
|
foreach (var task in completedTasks)
|
|
{
|
|
var path = task.Id.ToString().LocalPath();
|
|
if (!string.IsNullOrEmpty(path) && Directory.Exists(path))
|
|
{
|
|
try
|
|
{
|
|
Directory.Delete(path, true);
|
|
Console.WriteLine($"已删除缓存文件: {task.LocalMediaPath}");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine($"删除缓存文件 {task.Id} 时出错: {ex.Message}");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine($"清理缓存时出错: {ex.Message}");
|
|
}
|
|
}
|
|
public async Task Invoke()
|
|
{
|
|
Console.WriteLine($"{DateTime.Now} 执行=>{this.GetType().FullName}");
|
|
|
|
DeleteOldCompletedTaskCaches();
|
|
}
|
|
}
|
|
}
|