Prechádzať zdrojové kódy

Merge branch 'dev' of http://110.188.24.182:10023/Fengwo/hotline into dev

田爽 8 mesiacov pred
rodič
commit
690d091efd

+ 11 - 5
src/Hotline.Api/Controllers/PushMessageController.cs

@@ -1,4 +1,5 @@
-using Hotline.Permissions;
+using DotNetCore.CAP;
+using Hotline.Permissions;
 using Hotline.Push;
 using Hotline.Push.FWMessage;
 using Hotline.Repository.SqlSugar.Extensions;
@@ -6,6 +7,7 @@ using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.Push;
 using Hotline.Share.Dtos.Push.FWMessage;
 using Hotline.Share.Enums.Push;
+using Hotline.Share.Mq;
 using MapsterMapper;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
@@ -26,7 +28,7 @@ namespace Hotline.Api.Controllers
         private readonly IMessageCodeDomainService _messageCodeDomainService;
         private readonly IRepository<BatchSmsTask> _batchSmsTaskRepository;
         private readonly IRepository<BatchSmsTaskDetail> _batchSmsTaskDetailRepository;
-
+        private readonly ICapPublisher _capPublisher;
 
         /// <summary>
         /// 
@@ -40,7 +42,8 @@ namespace Hotline.Api.Controllers
             IPushDomainService pushDomainService,
             IMessageCodeDomainService messageCodeDomainService,
             IRepository<BatchSmsTask> batchSmsTaskRepository,
-            IRepository<BatchSmsTaskDetail> batchSmsTaskDetailRepository)
+            IRepository<BatchSmsTaskDetail> batchSmsTaskDetailRepository,
+            ICapPublisher capPublisher)
         {
             _messageRepository = messageRepository;
             _mapper = mapper;
@@ -48,6 +51,7 @@ namespace Hotline.Api.Controllers
             _messageCodeDomainService = messageCodeDomainService;
             _batchSmsTaskRepository = batchSmsTaskRepository;
             _batchSmsTaskDetailRepository = batchSmsTaskDetailRepository;
+            _capPublisher = capPublisher;
         }
 
         #endregion
@@ -182,15 +186,17 @@ namespace Hotline.Api.Controllers
             var task = _mapper.Map<BatchSmsTask>(dto);
             task.SmsCount = dto.BatchSmsTaskDetail.Count;
             task.SmsTaskState = ESmsTaskState.WaitDo;
-            task.InitId();
+            await _batchSmsTaskRepository.AddAsync(task, HttpContext.RequestAborted);
 
             var detail = _mapper.Map<List<BatchSmsTaskDetail>>(dto.BatchSmsTaskDetail);
             detail.ForEach(x =>
             {
                 x.TaskId = task.Id;
             });
-            await _batchSmsTaskRepository.AddAsync(task,HttpContext.RequestAborted);
             await _batchSmsTaskDetailRepository.AddRangeAsync(detail,HttpContext.RequestAborted);
+            //推送任务延迟消息
+            //_capPublisher.PublishDelay(expiredTimeConfig.NearlyExpiredTime - DateTime.Now, EventNames.HotlineOrderNearlyExpiredTimeSms, new PublishNearlyExpiredTimeSmsDto() { OrderId = order.Id });
+            _capPublisher.PublishDelay(task.PlanSendTime - DateTime.Now, EventNames.HotlineBatchSmsTask, new PublishBatchSmsTaskDto() { TaskId = task.Id });
         }
 
         /// <summary>

+ 22 - 1
src/Hotline.Application/Subscribers/InternalCapSubscriber.cs

@@ -1,7 +1,9 @@
 using DotNetCore.CAP;
 using Hotline.Orders;
+using Hotline.Push;
 using Hotline.Push.Notifies;
 using Hotline.Share.Dtos.Order;
+using Hotline.Share.Dtos.Push;
 using Hotline.Share.Enums.Push;
 using Hotline.Share.Mq;
 using Hotline.Users;
@@ -18,13 +20,15 @@ namespace Hotline.Application.Subscribers
         private readonly IMediator _mediator;
         private readonly IRepository<User> _userRepository;
         private readonly ICapPublisher _capPublisher;
+        private readonly IRepository<BatchSmsTask> _batchSmsTaskRepository;
 
-        public InternalCapSubscriber(IOrderRepository orderRepository,IMediator mediator,IRepository<User> userRepository,ICapPublisher capPublisher)
+        public InternalCapSubscriber(IOrderRepository orderRepository,IMediator mediator,IRepository<User> userRepository,ICapPublisher capPublisher,IRepository<BatchSmsTask> batchSmsTaskRepository)
         {
             _orderRepository = orderRepository;
             _mediator = mediator;
             _userRepository = userRepository;
             _capPublisher = capPublisher;
+            _batchSmsTaskRepository = batchSmsTaskRepository;
         }
 
         /// <summary>
@@ -161,5 +165,22 @@ namespace Hotline.Application.Subscribers
             }
         }
 
+        /// <summary>
+        /// 批量发送短信(延迟消息)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        [CapSubscribe(EventNames.HotlineBatchSmsTask)]
+        public async Task SendBatchSmsTask(PublishBatchSmsTaskDto dto,CancellationToken cancellationToken)
+        {
+            var task = await _batchSmsTaskRepository.Queryable()
+                .Includes(x=>x.BatchSmsTaskDetails)
+                .Where(x=> x.Id == dto.TaskId).FirstAsync();
+            if (task != null && task.SmsTaskState == ESmsTaskState.WaitDo && task.PlanSendTime.ToString("yyyy-MM-dd hh:mm") == DateTime.Now.ToString("yyyy-MM-dd hh:mm"))
+            {
+
+            }
+        }
     }
 }

+ 5 - 2
src/Hotline.Share/Dtos/Push/MessagePagedDto.cs

@@ -61,7 +61,7 @@ namespace Hotline.Share.Dtos.Push
         /// <summary>
         /// 任务名称
         /// </summary>
-        public string Name { get; set; }
+        public string TaskName { get; set; }
 
         /// <summary>
         /// 计划发送时间
@@ -153,5 +153,8 @@ namespace Hotline.Share.Dtos.Push
         public DateTime CreationTime { get; set; }
     }
 
-    
+    public class PublishBatchSmsTaskDto
+    {
+        public string TaskId { get; set; }
+    }
 }

+ 6 - 5
src/Hotline.Share/Enums/Push/ESmsTaskState.cs

@@ -1,19 +1,20 @@
-using System.ComponentModel.DataAnnotations;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
 
 namespace Hotline.Share.Enums.Push
 {
     public enum ESmsTaskState
     {
-        [Display(Name ="待执行")]
+        [Description("待执行")]
         WaitDo = 0,
 
-        [Display(Name ="执行中")]
+        [Description("执行中")]
         Doing = 1,
 
-        [Display(Name = "已结束")]
+        [Description("已结束")]
         End = 2,
 
-        [Display(Name ="已终止")]
+        [Description("已终止")]
         Stop = 3,
     }
 }

+ 5 - 0
src/Hotline.Share/Mq/EventNames.Order.cs

@@ -125,6 +125,11 @@ namespace Hotline.Share.Mq
         /// </summary>
         public const string HotlineOrderExpiredTimeSms = "hotline.order.expiredtime.sms";
 
+        /// <summary>
+        /// 批量短信服务
+        /// </summary>
+        public const string HotlineBatchSmsTask = "hotline.order.batchsmstask";
+
         #endregion
     }
 }

+ 3 - 0
src/Hotline/Push/BatchSmsTask.cs

@@ -29,5 +29,8 @@ namespace Hotline.Push
         /// </summary>
         public DateTime PlanSendTime { get; set; }
 
+        [Navigate(NavigateType.OneToMany,nameof(BatchSmsTaskDetail.TaskId))]
+        public List<BatchSmsTaskDetail> BatchSmsTaskDetails { get; set; }
+
     }
 }