using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using DW5S.DTO;
using DW5S.Repostory;
using System.IO;
using DW5S.Entity;
using DW5S.WebApi;
using System.Diagnostics;
using System.Configuration;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Serilog;
namespace DW5S.Controllers
{
///
/// 日志相关接口
///
public class LogController : BaseController
{
ILogger logger { get; set; }
IUnitOfWork unitOfWork { get; set; }
///
/// 将日志写入到平台
///
/// 日志信息
///
[HttpPost]
public async Task Add(LogInfoDto dto)
{
try
{
var repsLog = unitOfWork.OfLong();
await repsLog.AddOrUpdateAsync(new LogRes()
{
LogTime = dto.LogTime,
Module = dto.Module,
LogType = (Entity.EnumLogType)(int)dto.LogType,
Msg = dto.Msg,
});
await unitOfWork.SaveAsync();
return Success();
}
catch (Exception ex)
{
string msg = "日志信息写入异常";
logger.Error(ex, msg);
return Error(msg);
}
}
///
/// 查询日志信息
///
/// 日志查询参数
///
[HttpPost]
public async Task>> Query(LogQueryDto dto)
{
try
{
var query = unitOfWork.OfLong().AsQueryable();
if (!string.IsNullOrWhiteSpace(dto.Module) && dto.Module != "全部")
query = query.Where(p => p.Module == dto.Module);
if (dto.LogTimeBegin != null && dto.LogTimeBegin != DateTime.MinValue)
query = query.Where(p => p.LogTime >= dto.LogTimeBegin);
if (dto.LogTimeEnd != null && dto.LogTimeEnd != DateTime.MinValue)
query = query.Where(p => p.LogTime <= dto.LogTimeEnd);
var res = await query.OrderBy(p => p.Module).ThenByDescending(t => t.LogTime).ToListAsync();
var dtoRes = res.Select(t => new LogInfoDto
{
ID = t.Id,
LogTime = t.LogTime,
LogType = (EnumLogTypeDto)(int)t.LogType,
Module = t.Module,
Msg = t.Msg,
}).ToList();
return Success(dtoRes);
}
catch (Exception ex)
{
string msg = "日志信息查询异常";
logger.Error(ex, msg);
return Error>(msg);
}
}
///
/// 获取所有日志模块
///
///
[HttpPost]
public async Task>> GetModules()
{
try
{
var repsLog = unitOfWork.OfLong();
var res = await repsLog.GetDistinctAsync(p => p.Module);
var dtoRes = res.Select(p => new LogModulesResDto()
{
Module = p
}).OrderBy(p => p.Module).ToList();
return Success(dtoRes);
}
catch (Exception ex)
{
string msg = "日志模块查询异常";
logger.Error(ex, msg);
return Error>(msg);
}
}
///
/// 删除日志
///
///
///
[HttpPost]
public async Task Delete(IEnumerable dto)
{
if (dto == null || !dto.Any()) return Success();
try
{
var repsLog = unitOfWork.OfLong();
await repsLog.DeleteAsync(dto.To>());
await unitOfWork.SaveAsync();
return Success();
}
catch (Exception ex)
{
string msg = "日志信息删除异常";
logger.Error(ex, msg);
return Error(msg);
}
}
}
}