S3OperationLogService.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System.Text.Json;
  2. using Yitter.IdGenerator;
  3. namespace Admin.NET.Plugin.AiDOP.Supply;
  4. /// <summary>
  5. /// S3 业务操作日志写入(复用 Admin.NET sys_log_op)。
  6. /// </summary>
  7. public class S3OperationLogService : ITransient
  8. {
  9. private readonly SqlSugarRepository<SysLogOp> _logOpRep;
  10. private readonly UserManager _userManager;
  11. public S3OperationLogService(SqlSugarRepository<SysLogOp> logOpRep, UserManager userManager)
  12. {
  13. _logOpRep = logOpRep;
  14. _userManager = userManager;
  15. }
  16. /// <summary>
  17. /// 写入 S3 操作日志;失败不影响主业务流程。
  18. /// </summary>
  19. public async Task WriteAsync(S3OperationLogDto dto)
  20. {
  21. try
  22. {
  23. await _logOpRep.InsertAsync(new SysLogOp
  24. {
  25. Id = YitIdHelper.NextId(),
  26. DisplayTitle = dto.DisplayTitle,
  27. ControllerName = "S3",
  28. ActionName = dto.Action,
  29. Message = dto.Message,
  30. RequestParam = dto.Request == null ? null : JsonSerializer.Serialize(dto.Request),
  31. ReturnResult = dto.Result == null ? null : JsonSerializer.Serialize(dto.Result),
  32. Exception = dto.Exception,
  33. LogDateTime = DateTime.Now,
  34. Account = _userManager.Account,
  35. RealName = _userManager.RealName,
  36. CreateUserId = _userManager.UserId,
  37. TenantId = _userManager.TenantId,
  38. Status = dto.Success ? "200" : "500",
  39. LogLevel = dto.Success ? Microsoft.Extensions.Logging.LogLevel.Information : Microsoft.Extensions.Logging.LogLevel.Error,
  40. });
  41. }
  42. catch
  43. {
  44. // 日志失败不应影响 S3 业务动作。
  45. }
  46. }
  47. }
  48. public sealed class S3OperationLogDto
  49. {
  50. public string Action { get; set; } = string.Empty;
  51. public string DisplayTitle { get; set; } = string.Empty;
  52. public string Message { get; set; } = string.Empty;
  53. public object? Request { get; set; }
  54. public object? Result { get; set; }
  55. public string? Exception { get; set; }
  56. public bool Success { get; set; } = true;
  57. }