ソースを参照

引入任务优先级属性并调整相关映射逻辑

新增 `Priority` 属性用于表示任务和任务项的优先级(0-9),并在 `AddApptaskRequest` 和 `ApptaskItem` 中添加默认值为 9 的处理逻辑。同时,将 `Apptask` 的映射逻辑改为手动创建以支持优先级设置。

具体更改包括:
- 删除 `BatchTaskMapperConfigs.cs` 中的部分映射配置代码。
- 注释掉 `OrderDelayApplication.cs` 中与 `AddApptaskRequest` 相关的代码。
- 在 `AddApptaskRequest.cs` 和 `ApptaskItem.cs` 中新增 `Priority` 属性。
- 在 `ApptaskDomainService.cs` 中调整 `Apptask` 的创建逻辑,支持 `Priority` 属性。
xf 2 週間 前
コミット
0b5c27048a

+ 0 - 15
src/Hotline.Application/Mappers/BatchTaskMapperConfigs.cs

@@ -15,21 +15,6 @@ namespace Hotline.Application.Mappers
     {
         public void Register(TypeAdapterConfig config)
         {
-            //config.ForType<AddApptaskRequest, Apptask>()
-            //    .AfterMapping((s, d) =>
-            //    {
-            //        d.ApptaskItems.ForEach(item =>
-            //        {
-            //            item.TaskType = s.TaskType;
-            //            item.TryLimit = s.TryLimit;
-                        
-            //        });
-            //    });
-
-            config.ForType<AddApptaskItemRequest, ApptaskItem>()
-                .Map(d => d.TaskParams, s => System.Text.Json.JsonSerializer.Serialize(s.TaskParams))
-                .IgnoreIf((s, d) => s.TaskParams == null, d => d.TaskParams);
-
             config.ForType<Apptask, ApptaskProgressDto>()
                 .BeforeMapping((s, d) =>
                 {

+ 4 - 4
src/Hotline.Application/OrderApp/OrderDelayApp/OrderDelayApplication.cs

@@ -205,12 +205,12 @@ public class OrderDelayApplication : IOrderDelayApplication, IScopeDependency
         };
         
         //
-        var addApptask = new AddApptaskRequest
-        {
+        //var addApptask = new AddApptaskRequest
+        //{
             
-        }
+        //}
         
         
-        _apptaskDomainService.AddAsync()
+        //_apptaskDomainService.AddAsync()
     }
 }

+ 6 - 0
src/Hotline.Share/Dtos/BatchTask/AddApptaskRequest.cs

@@ -29,6 +29,12 @@ namespace Hotline.Share.Dtos.BatchTask
         /// </summary>
         public int TryLimit { get; set; } = 1;
 
+        /// <summary>
+        /// 优先级
+        /// 由高到低(0-9)
+        /// </summary>
+        public int? Priority { get; set; }
+
         public List<AddApptaskItemRequest> ApptaskItems { get; set; }
     }
 

+ 16 - 2
src/Hotline/BatchTask/ApptaskDomainService.cs

@@ -40,8 +40,22 @@ public class ApptaskDomainService : IApptaskDomainService, IScopeDependency
         if (!result.IsValid)
             throw new ValidationException(result.Errors.FirstOrDefault()?.ErrorMessage);
 
-        var apptask = _mapper.Map<Apptask>(request);
-
+        var apptask = new Apptask
+        {
+            Name = request.Name,
+            Description = request.Description,
+            TaskType = request.TaskType,
+            ApptaskItems = request.ApptaskItems.Select(d => new ApptaskItem
+            {
+                BusinessId = d.BusinessId,
+                TaskType = request.TaskType,
+                TaskStatus = ETaskStatus.Waiting,
+                TaskParams = System.Text.Json.JsonSerializer.Serialize(d.TaskParams),
+                TryLimit = request.TryLimit,
+                Priority = request.Priority ?? 9
+            }).ToList()
+        };
+        
         if (string.IsNullOrEmpty(apptask.Name))
             apptask.CreateName();
 

+ 6 - 0
src/Hotline/BatchTask/ApptaskItem.cs

@@ -27,6 +27,12 @@ public class ApptaskItem : CreationEntity
     /// </summary>
     public ETaskStatus TaskStatus { get; set; }
 
+    /// <summary>
+    /// 优先级
+    /// 由高到低(0-9)
+    /// </summary>
+    public int Priority { get; set; } = 9;
+
     /// <summary>
     /// 任务执行时间
     /// </summary>