using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using ZR.Model;
using ZR.Model.System.Dto;
using ZR.Model.System;
using Infrastructure.Extensions;
using Infrastructure.Attribute;
using ZR.Admin.WebApi.Filters;
using ZR.Common;
using Infrastructure.Enums;
using ZR.Service.System.IService;
using Infrastructure;
namespace ZR.Admin.WebApi.Controllers.System
{
///
/// 任务日志
///
[Verify]
[Route("/monitor/jobLog")]
public class TasksLogController : BaseController
{
private readonly ISysTasksLogService tasksLogService;
public TasksLogController(ISysTasksLogService tasksLogService)
{
this.tasksLogService = tasksLogService;
}
///
/// 查询日志
///
///
///
///
[HttpGet("list")]
public IActionResult GetList([FromQuery] PagerInfo pager, [FromQuery] TasksLogQueryDto queryDto)
{
queryDto.BeginTime = DateTimeHelper.GetBeginTime(queryDto.BeginTime, -7);
queryDto.EndTime = DateTimeHelper.GetBeginTime(queryDto.EndTime, 7);
var predicate = Expressionable.Create().And(it => it.CreateTime >= queryDto.BeginTime && it.CreateTime <= queryDto.EndTime);
predicate = predicate.AndIF(queryDto.JobName.IfNotEmpty(), m => m.JobName.Contains(queryDto.JobName));
predicate = predicate.AndIF(queryDto.JobGroup.IfNotEmpty(), m => m.JobGroup == queryDto.JobGroup);
predicate = predicate.AndIF(queryDto.Status.IfNotEmpty(), m => m.Status == queryDto.Status);
predicate = predicate.AndIF(queryDto.JobId.IfNotEmpty(), m => m.JobId == queryDto.JobId);
var response = tasksLogService.GetPages(predicate.ToExpression(), pager, m => m.CreateTime, OrderByType.Desc);
return SUCCESS(response, TIME_FORMAT_FULL);
}
///
/// 删除定时任务调用日志
///
///
///
[HttpDelete("{jobIds}")]
[ActionPermissionFilter(Permission = "PRIV_JOBLOG_DELETE")]
[Log(Title = "删除任务日志", BusinessType = BusinessType.DELETE)]
public IActionResult Delete(string jobIds)
{
long[] jobIdArr = Tools.SpitLongArrary(jobIds);
int result = tasksLogService.Delete(jobIdArr);
return ToResponse(ToJson(result, result));
}
///
/// 清空日志
///
///
[HttpDelete("clean")]
[ActionPermissionFilter(Permission = "PRIV_JOBLOG_REMOVE")]
[Log(Title = "清空任务日志", BusinessType = BusinessType.CLEAN)]
public IActionResult Clean()
{
tasksLogService.DeleteTable();
return SUCCESS(1);
}
///
/// 定时任务日志导出
///
///
[Log(BusinessType = BusinessType.EXPORT, IsSaveResponseData = false, Title = "定时任务日志导出")]
[HttpGet("export")]
[ActionPermissionFilter(Permission = "PRIV_JOBLOG_EXPORT")]
public IActionResult Export()
{
var list = tasksLogService.GetAll();
string sFileName = ExportExcel(list, "jobLog", "定时任务日志");
return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName });
}
}
}