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.Extensions.Logging; using Microsoft.EntityFrameworkCore; namespace DW5S.App.Controllers { /// /// 日志相关接口 /// public class LogController : BaseController { [Autowired] private readonly ILogger logger; [Autowired] private readonly UnitOfWork unitOfWork; /// /// 将日志写入到平台 /// /// 日志信息 /// [HttpPost] public async Task Add(LogInfoDto dto) { try { var repsLog = unitOfWork.Reps(); await repsLog.AddAsync(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.LogError(ex, msg); return Error(msg); } } /// /// 查询日志信息 /// /// 日志查询参数 /// [HttpPost] public async Task>> Query(LogQueryDto dto) { try { var query = unitOfWork.Reps().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.LogError(ex, msg); return Error>(msg); } } /// /// 获取所有日志模块 /// /// [HttpPost] public async Task>> GetModules() { try { var repsLog = unitOfWork.Reps(); 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.LogError(ex, msg); return Error>(msg); } } /// /// 删除日志 /// /// /// [HttpPost] public async Task Delete(IEnumerable dto) { if (dto == null || !dto.Any()) return Success(); try { var repsLog = unitOfWork.Reps(); var ids = dto.Select(p => p.ID); await repsLog.DeleteAsync(p => ids.Contains(p.Id)); await unitOfWork.SaveAsync(); return Success(); } catch (Exception ex) { string msg = "日志信息删除异常"; logger.LogError(ex, msg); return Error(msg); } } } }