| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using System.Text.Json;
- using Yitter.IdGenerator;
- namespace Admin.NET.Plugin.AiDOP.Supply;
- /// <summary>
- /// S3 业务操作日志写入(复用 Admin.NET sys_log_op)。
- /// </summary>
- public class S3OperationLogService : ITransient
- {
- private readonly SqlSugarRepository<SysLogOp> _logOpRep;
- private readonly UserManager _userManager;
- public S3OperationLogService(SqlSugarRepository<SysLogOp> logOpRep, UserManager userManager)
- {
- _logOpRep = logOpRep;
- _userManager = userManager;
- }
- /// <summary>
- /// 写入 S3 操作日志;失败不影响主业务流程。
- /// </summary>
- public async Task WriteAsync(S3OperationLogDto dto)
- {
- try
- {
- await _logOpRep.InsertAsync(new SysLogOp
- {
- Id = YitIdHelper.NextId(),
- DisplayTitle = dto.DisplayTitle,
- ControllerName = "S3",
- ActionName = dto.Action,
- Message = dto.Message,
- RequestParam = dto.Request == null ? null : JsonSerializer.Serialize(dto.Request),
- ReturnResult = dto.Result == null ? null : JsonSerializer.Serialize(dto.Result),
- Exception = dto.Exception,
- LogDateTime = DateTime.Now,
- Account = _userManager.Account,
- RealName = _userManager.RealName,
- CreateUserId = _userManager.UserId,
- TenantId = _userManager.TenantId,
- Status = dto.Success ? "200" : "500",
- LogLevel = dto.Success ? Microsoft.Extensions.Logging.LogLevel.Information : Microsoft.Extensions.Logging.LogLevel.Error,
- });
- }
- catch
- {
- // 日志失败不应影响 S3 业务动作。
- }
- }
- }
- public sealed class S3OperationLogDto
- {
- public string Action { get; set; } = string.Empty;
- public string DisplayTitle { get; set; } = string.Empty;
- public string Message { get; set; } = string.Empty;
- public object? Request { get; set; }
- public object? Result { get; set; }
- public string? Exception { get; set; }
- public bool Success { get; set; } = true;
- }
|