using System; using BetterGenshinImpact.Service.Notification.Model.Enum; using System.Text.Json.Serialization; using BetterGenshinImpact.GameTask.Common; using BetterGenshinImpact.Service.Notification.Converter; using Microsoft.Extensions.Logging; using SixLabors.ImageSharp; using SixLabors.ImageSharp.PixelFormats; namespace BetterGenshinImpact.Service.Notification.Model; public class BaseNotificationData { /// /// NotificationEvent /// 事件名称 /// public string Event { get; set; } = string.Empty; /// /// 事件结果 /// [JsonConverter(typeof(JsonStringEnumConverter))] public NotificationEventResult Result { get; set; } /// /// 事件触发时间 /// [JsonConverter(typeof(DateTimeJsonConverter))] public DateTime Timestamp { get; set; } = DateTime.Now; /// /// 事件触发时的截图 /// [JsonConverter(typeof(ImageToBase64Converter))] public Image? Screenshot { get; set; } /// /// 事件消息 /// public string? Message { get; set; } /// /// 额外的事件数据 /// public object? Data { get; set; } public void Send() { try { NotificationService.Instance().NotifyAllNotifiers(this); } catch (Exception e) { TaskControl.Logger.LogDebug(e, "发送通知失败"); } } public void Send(string message) { Message = message; Send(); } public void Success(string message) { Message = message; Result = NotificationEventResult.Success; Send(); } public void Fail(string message) { Message = message; Result = NotificationEventResult.Fail; Send(); } public void Error(string message) { Message = message; Result = NotificationEventResult.Fail; Send(); } public void Error(string message, Exception exception) { Message = message + Environment.NewLine + exception.Message + Environment.NewLine + exception.StackTrace; Result = NotificationEventResult.Fail; Send(); } }