using Furion.EventBus; using Myshipping.Core.Entity; using Microsoft.Extensions.DependencyInjection; using System; using System.Threading.Tasks; namespace Myshipping.Core; public class LogEventSubscriber : IEventSubscriber { public LogEventSubscriber(IServiceProvider services) { Services = services; } public IServiceProvider Services { get; } [EventSubscribe("Create:OpLog")] public async Task CreateOpLog(EventHandlerExecutingContext context) { using var scope = Services.CreateScope(); var _repository = scope.ServiceProvider.GetRequiredService>(); var log = (SysLogOp)context.Source.Payload; await _repository.InsertAsync(log); } [EventSubscribe("Create:ExLog")] public async Task CreateExLog(EventHandlerExecutingContext context) { using var scope = Services.CreateScope(); var _repository = scope.ServiceProvider.GetRequiredService>(); var log = (SysLogEx)context.Source.Payload; await _repository.InsertAsync(log); } [EventSubscribe("Create:VisLog")] public async Task CreateVisLog(EventHandlerExecutingContext context) { using var scope = Services.CreateScope(); var _repository = scope.ServiceProvider.GetRequiredService>(); var log = (SysLogVis)context.Source.Payload; await _repository.InsertAsync(log); } [EventSubscribe("Update:UserLoginInfo")] public async Task UpdateUserLoginInfo(EventHandlerExecutingContext context) { using var scope = Services.CreateScope(); var _repository = scope.ServiceProvider.GetRequiredService>(); var log = (SysUser)context.Source.Payload; await _repository.UpdateAsync(a => a.Id == log.Id, a => new SysUser { LastLoginTime = log.LastLoginTime, LastLoginIp = log.LastLoginIp }); } [EventSubscribe("Delete:OpLog")] public async Task DeleteOpLog(EventHandlerExecutingContext context) { using var scope = Services.CreateScope(); var _repository = scope.ServiceProvider.GetRequiredService>(); var dayRemain = (int)context.Source.Payload; await _repository.DeleteAsync(x => x.OpTime < DateTime.Now.AddDays(dayRemain * -1)); } }