From ef66e2ff752f2cf85fd8e570673e9da01d077c74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=89=E9=B8=AD=E8=9B=8B?= Date: Thu, 2 Oct 2025 16:00:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E8=81=94=E5=AE=9E=E9=99=85=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E5=99=A8=E5=AF=B9=E8=B1=A1=E7=9A=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=B8=85=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Gear/Triggers/SequentialGearTrigger.cs | 14 ---- .../GearTask/GearTaskStorageService.cs | 3 +- .../Service/GearTask/Model/GearTaskPaths.cs | 17 +++++ .../Service/QuartzSchedulerService.cs | 6 +- .../Pages/Component/GearTriggerViewModel.cs | 65 +++---------------- .../Pages/GearTriggerPageViewModel.cs | 4 -- 6 files changed, 31 insertions(+), 78 deletions(-) delete mode 100644 BetterGenshinImpact/Model/Gear/Triggers/SequentialGearTrigger.cs create mode 100644 BetterGenshinImpact/Service/GearTask/Model/GearTaskPaths.cs diff --git a/BetterGenshinImpact/Model/Gear/Triggers/SequentialGearTrigger.cs b/BetterGenshinImpact/Model/Gear/Triggers/SequentialGearTrigger.cs deleted file mode 100644 index 553dee01..00000000 --- a/BetterGenshinImpact/Model/Gear/Triggers/SequentialGearTrigger.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using BetterGenshinImpact.Model.Gear.Tasks; - -namespace BetterGenshinImpact.Model.Gear.Triggers; - -/// -/// 直接顺序执行的触发器 -/// -public class SequentialGearTrigger : GearBaseTrigger -{ -} \ No newline at end of file diff --git a/BetterGenshinImpact/Service/GearTask/GearTaskStorageService.cs b/BetterGenshinImpact/Service/GearTask/GearTaskStorageService.cs index 4a0f30bf..6f836cf8 100644 --- a/BetterGenshinImpact/Service/GearTask/GearTaskStorageService.cs +++ b/BetterGenshinImpact/Service/GearTask/GearTaskStorageService.cs @@ -8,6 +8,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using BetterGenshinImpact.Core.Config; +using BetterGenshinImpact.Service.GearTask.Model; namespace BetterGenshinImpact.Service; @@ -23,7 +24,7 @@ public class GearTaskStorageService public GearTaskStorageService(ILogger logger) { _logger = logger; - _taskStoragePath = Path.Combine(Global.Absolute("User"), "task_v2", "list"); + _taskStoragePath = GearTaskPaths.TaskListPath; // 确保目录存在 Directory.CreateDirectory(_taskStoragePath); diff --git a/BetterGenshinImpact/Service/GearTask/Model/GearTaskPaths.cs b/BetterGenshinImpact/Service/GearTask/Model/GearTaskPaths.cs new file mode 100644 index 00000000..79115d9a --- /dev/null +++ b/BetterGenshinImpact/Service/GearTask/Model/GearTaskPaths.cs @@ -0,0 +1,17 @@ +using System.IO; +using BetterGenshinImpact.Core.Config; + +namespace BetterGenshinImpact.Service.GearTask.Model; + +/// +/// 存储定义任务的路径信息 +/// +public class GearTaskPaths +{ + private static readonly string TaskV2Path = Path.Combine(Global.Absolute("User"), "task_v2"); + + public static readonly string TaskListPath = Path.Combine(TaskV2Path, "list"); + + public static readonly string TaskTriggerPath = Path.Combine(TaskV2Path, "trigger"); + +} \ No newline at end of file diff --git a/BetterGenshinImpact/Service/QuartzSchedulerService.cs b/BetterGenshinImpact/Service/QuartzSchedulerService.cs index e9e6cd7c..62e8321f 100644 --- a/BetterGenshinImpact/Service/QuartzSchedulerService.cs +++ b/BetterGenshinImpact/Service/QuartzSchedulerService.cs @@ -14,7 +14,6 @@ namespace BetterGenshinImpact.Service; /// public class QuartzSchedulerService(ILogger logger, ISchedulerFactory schedulerFactory) : IHostedService { - private ILogger _logger = logger; public async Task StartAsync(CancellationToken cancellationToken) { @@ -23,7 +22,7 @@ public class QuartzSchedulerService(ILogger logger, ISch Dictionary> jobsDictionary = new(); foreach (var data in allData) { - if (string.IsNullOrEmpty(data.CronExpression)) + if (string.IsNullOrEmpty(data.CronExpression) || !data.IsEnabled) { continue; } @@ -44,7 +43,8 @@ public class QuartzSchedulerService(ILogger logger, ISch await scheduler.ScheduleJobs(jobsDictionary, replace: true, cancellationToken); } - public async Task StopAsync(CancellationToken cancellationToken) + public Task StopAsync(CancellationToken cancellationToken) { + return Task.CompletedTask; } } \ No newline at end of file diff --git a/BetterGenshinImpact/ViewModel/Pages/Component/GearTriggerViewModel.cs b/BetterGenshinImpact/ViewModel/Pages/Component/GearTriggerViewModel.cs index 9e284f82..770d2e3c 100644 --- a/BetterGenshinImpact/ViewModel/Pages/Component/GearTriggerViewModel.cs +++ b/BetterGenshinImpact/ViewModel/Pages/Component/GearTriggerViewModel.cs @@ -15,9 +15,6 @@ public partial class GearTriggerViewModel : ObservableObject [ObservableProperty] private string _name = string.Empty; - [ObservableProperty] - private string _description = string.Empty; - [ObservableProperty] private bool _isEnabled = true; @@ -37,15 +34,13 @@ public partial class GearTriggerViewModel : ObservableObject /// 触发器类型 /// [ObservableProperty] - private TriggerType _triggerType = TriggerType.Sequential; + private TriggerType _triggerType = TriggerType.Timed; /// - /// 任务引用列表 + /// 任务引用名称 /// [ObservableProperty] private string _taskDefinitionName = string.Empty; - - // 顺序触发器属性(无额外属性) // 热键触发器属性 @@ -60,29 +55,13 @@ public partial class GearTriggerViewModel : ObservableObject { Name = name; TriggerType = triggerType; - Description = GetDefaultDescription(triggerType); } - - /// - /// 获取触发器类型的默认描述 - /// - private string GetDefaultDescription(TriggerType triggerType) - { - return triggerType switch - { - TriggerType.Sequential => "按顺序执行任务", - TriggerType.Timed => "定时执行任务", - TriggerType.Hotkey => "热键触发执行任务", - _ => "未知触发器类型" - }; - } - + /// /// 获取触发器类型显示名称 /// public string TriggerTypeDisplayName => TriggerType switch { - TriggerType.Sequential => "顺序触发", TriggerType.Timed => "定时触发", TriggerType.Hotkey => "热键触发", _ => "未知类型" @@ -92,24 +71,7 @@ public partial class GearTriggerViewModel : ObservableObject /// 获取热键显示文本 /// public string HotkeyDisplayText => Hotkey?.ToString() ?? "未设置"; - - // /// - // /// 获取定时器配置显示文本 - // /// - // public string TimerDisplayText - // { - // get - // { - // if (TriggerType != TriggerType.Timed) return ""; - // - // var text = $"间隔: {IntervalMs}ms"; - // if (DelayMs > 0) text += $", 延迟: {DelayMs}ms"; - // if (MaxExecutions > 0) text += $", 最大次数: {MaxExecutions}"; - // if (!IsRepeating) text += ", 单次执行"; - // - // return text; - // } - // } + /// /// 转换为对应的触发器实例 @@ -118,24 +80,20 @@ public partial class GearTriggerViewModel : ObservableObject { GearBaseTrigger trigger = TriggerType switch { - TriggerType.Sequential => new SequentialGearTrigger(), TriggerType.Timed => new QuartzCronGearTrigger { - // IntervalMs = IntervalMs, - // IsRepeating = IsRepeating, - // DelayMs = DelayMs, - // MaxExecutions = MaxExecutions + CronExpression = CronExpression }, TriggerType.Hotkey => new HotkeyGearTrigger { - Hotkey = Hotkey, - IsEnabled = IsEnabled + Hotkey = Hotkey }, - _ => new SequentialGearTrigger() + _ => throw new ArgumentOutOfRangeException() }; trigger.Name = Name; - trigger.TaskDefinitionName = _taskDefinitionName; + trigger.IsEnabled = IsEnabled; + trigger.TaskDefinitionName = TaskDefinitionName; return trigger; } @@ -146,11 +104,6 @@ public partial class GearTriggerViewModel : ObservableObject /// public enum TriggerType { - /// - /// 顺序触发 - /// - Sequential, - /// /// 定时触发 /// diff --git a/BetterGenshinImpact/ViewModel/Pages/GearTriggerPageViewModel.cs b/BetterGenshinImpact/ViewModel/Pages/GearTriggerPageViewModel.cs index 9244233e..d09757fe 100644 --- a/BetterGenshinImpact/ViewModel/Pages/GearTriggerPageViewModel.cs +++ b/BetterGenshinImpact/ViewModel/Pages/GearTriggerPageViewModel.cs @@ -42,14 +42,12 @@ public partial class GearTriggerPageViewModel : ViewModel // 添加定时触发器示例数据 TimedTriggers.Add(new GearTriggerViewModel("每日签到", TriggerType.Timed) { - Description = "每天早上8点自动签到", IsEnabled = true, TaskDefinitionName = "自动签到任务" }); TimedTriggers.Add(new GearTriggerViewModel("周常清理", TriggerType.Timed) { - Description = "每周一清理背包", IsEnabled = false, TaskDefinitionName = "背包清理任务" }); @@ -57,7 +55,6 @@ public partial class GearTriggerPageViewModel : ViewModel // 添加快捷键触发器示例数据 HotkeyTriggers.Add(new GearTriggerViewModel("快速战斗", TriggerType.Hotkey) { - Description = "按F1快速开始战斗", IsEnabled = true, TaskDefinitionName = "自动战斗任务", Hotkey = new HotKey { Key = System.Windows.Input.Key.F1 } @@ -65,7 +62,6 @@ public partial class GearTriggerPageViewModel : ViewModel HotkeyTriggers.Add(new GearTriggerViewModel("快速采集", TriggerType.Hotkey) { - Description = "按F2快速采集物品", IsEnabled = true, TaskDefinitionName = "自动采集任务", Hotkey = new HotKey { Key = System.Windows.Input.Key.F2 }