AppEventSubscriber.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // 麻省理工学院许可证
  2. //
  3. // 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司 联系电话/微信:18020030720 QQ:515096995
  4. //
  5. // 特此免费授予获得本软件的任何人以处理本软件的权利,但须遵守以下条件:在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
  6. //
  7. // 软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
  8. // 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他方式引起的,与软件或其使用或其他交易有关。
  9. namespace Admin.NET.Core;
  10. /// <summary>
  11. /// 事件订阅
  12. /// </summary>
  13. public class AppEventSubscriber : IEventSubscriber, ISingleton, IDisposable
  14. {
  15. private readonly IServiceScope _serviceScope;
  16. public AppEventSubscriber(IServiceScopeFactory scopeFactory)
  17. {
  18. _serviceScope = scopeFactory.CreateScope();
  19. }
  20. /// <summary>
  21. /// 增加异常日志
  22. /// </summary>
  23. /// <param name="context"></param>
  24. /// <returns></returns>
  25. [EventSubscribe("Add:ExLog")]
  26. public async Task CreateExLog(EventHandlerExecutingContext context)
  27. {
  28. var rep = _serviceScope.ServiceProvider.GetRequiredService<SqlSugarRepository<SysLogEx>>();
  29. await rep.InsertAsync((SysLogEx)context.Source.Payload);
  30. }
  31. /// <summary>
  32. /// 发送异常邮件
  33. /// </summary>
  34. /// <param name="context"></param>
  35. /// <returns></returns>
  36. [EventSubscribe("Send:ErrorMail")]
  37. public async Task SendOrderErrorMail(EventHandlerExecutingContext context)
  38. {
  39. //var mailTempPath = Path.Combine(App.WebHostEnvironment.WebRootPath, "Temp\\ErrorMail.tp");
  40. //var mailTemp = File.ReadAllText(mailTempPath);
  41. //var mail = await _serviceScope.ServiceProvider.GetRequiredService<IViewEngine>().RunCompileFromCachedAsync(mailTemp, );
  42. var title = "Admin.NET 框架异常";
  43. await _serviceScope.ServiceProvider.GetRequiredService<SysMessageService>().SendEmail(JSON.Serialize(context.Source.Payload), title, true);
  44. }
  45. /// <summary>
  46. /// 释放服务作用域
  47. /// </summary>
  48. public void Dispose()
  49. {
  50. _serviceScope.Dispose();
  51. }
  52. }