|
|
|
|
using zzz;
|
|
|
|
|
using zzz.Common;
|
|
|
|
|
using zzz.Common.LogHelper;
|
|
|
|
|
using zzz.Model.Entity;
|
|
|
|
|
using zzz.Services.Sys.OperateLogs;
|
|
|
|
|
using zzz.Services.Sys.TasksQzs;
|
|
|
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
using Quartz;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 这里要注意下,命名空间和程序集是一样的,不然反射不到
|
|
|
|
|
/// </summary>
|
|
|
|
|
namespace zzz.Tasks
|
|
|
|
|
{
|
|
|
|
|
public class Job_Blogs_Quartz : JobBase, IJob
|
|
|
|
|
{
|
|
|
|
|
public ILogger<Job_Blogs_Quartz> _logger = null;
|
|
|
|
|
private readonly IOperateLogServices _operateLogServices;
|
|
|
|
|
private readonly IHostEnvironment _environment;
|
|
|
|
|
|
|
|
|
|
public Job_Blogs_Quartz(
|
|
|
|
|
ILogger<Job_Blogs_Quartz> logger,
|
|
|
|
|
IOperateLogServices operateLogServices,
|
|
|
|
|
IHostEnvironment environment,
|
|
|
|
|
ITasksQzServices tasksQzServices
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
|
|
|
|
_operateLogServices = operateLogServices;
|
|
|
|
|
_environment = environment;
|
|
|
|
|
_tasksQzServices = tasksQzServices;
|
|
|
|
|
}
|
|
|
|
|
public async Task Execute(IJobExecutionContext context)
|
|
|
|
|
{
|
|
|
|
|
var executeLog = await ExecuteJob(context, async () => await Run(context));
|
|
|
|
|
}
|
|
|
|
|
public async Task Run(IJobExecutionContext context)
|
|
|
|
|
{
|
|
|
|
|
//var list = await _blogArticleServices.Query();
|
|
|
|
|
// 也可以通过数据库配置,获取传递过来的参数
|
|
|
|
|
//JobDataMap data = context.JobDetail.JobDataMap;
|
|
|
|
|
//int jobId = data.GetInt("JobParam");
|
|
|
|
|
ConsoleHelper.WriteColorLine("执行任务具体XXXXXXXXXXX", ConsoleColor.Red);
|
|
|
|
|
|
|
|
|
|
_logger.LogInformation("执行任务具体XXXXXXXXXXX!");
|
|
|
|
|
|
|
|
|
|
// 可以直接获取 JobDetail 的值
|
|
|
|
|
var jobKey = context.JobDetail.Key;
|
|
|
|
|
var jobId = jobKey.Name;
|
|
|
|
|
// 也可以通过数据库配置,获取传递过来的参数
|
|
|
|
|
JobDataMap data = context.JobDetail.JobDataMap;
|
|
|
|
|
|
|
|
|
|
List<LogInfo> excLogs = new List<LogInfo>();
|
|
|
|
|
|
|
|
|
|
var exclogContent = LogLock.ReadLog(Path.Combine(_environment.ContentRootPath, "Log"), $"GlobalExceptionLogs_{DateTime.Now.ToString("yyyMMdd")}.log", Encoding.UTF8);
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(exclogContent))
|
|
|
|
|
{
|
|
|
|
|
excLogs = exclogContent.Split("--------------------------------")
|
|
|
|
|
.Where(d => !string.IsNullOrEmpty(d) && d != "\n" && d != "\r\n")
|
|
|
|
|
.Select(d => new LogInfo
|
|
|
|
|
{
|
|
|
|
|
Datetime = (d.Split("|")[0]).Split(',')[0].ObjToDate(),
|
|
|
|
|
Content = d.Split("|")[1]?.Replace("\r\n", "<br>"),
|
|
|
|
|
LogColor = "EXC",
|
|
|
|
|
Import = 9,
|
|
|
|
|
}).ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var filterDatetime = DateTime.Now.AddHours(-1);
|
|
|
|
|
excLogs = excLogs.Where(d => d.Datetime >= filterDatetime).ToList();
|
|
|
|
|
|
|
|
|
|
var operateLogs = new List<OperateLog>() { };
|
|
|
|
|
excLogs.ForEach(m =>
|
|
|
|
|
{
|
|
|
|
|
operateLogs.Add(new OperateLog()
|
|
|
|
|
{
|
|
|
|
|
LogTime = m.Datetime,
|
|
|
|
|
Description = m.Content,
|
|
|
|
|
IPAddress = m.IP,
|
|
|
|
|
UserId = 0,
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (operateLogs.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
//await _operateLogServices.Add(operateLogs);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|