TANG JIANG 1 year ago
parent
commit
225508cff5

+ 8 - 4
src/Hotline.Api/Controllers/PushMessageController.cs

@@ -55,16 +55,20 @@ namespace Hotline.Api.Controllers
         [HttpGet("{id}")]
         public async Task ResendMessage(string id)
         {
-            var data = await _messageRepository.GetAsync(p => p.Id == id);
+            var data = await _messageRepository.GetAsync(p => p.Id == id, HttpContext.RequestAborted);
             if (data is null)
-                throw UserFriendlyException.SameMessage("新发送失败");
+                throw UserFriendlyException.SameMessage("新发送失败");
 
+            //修改重发次数
+            data.ResendCount++;
+            await _messageRepository.UpdateAsync(data, HttpContext.RequestAborted);
+             //组装数据
             MessageDto dto = new()
             {
                 PushBusiness = data.PushBusiness,
                 ExternalId = data.ExternalId,
                 PushPlatform = data.PushPlatform,
-                Status = EPushStatus.Pushing,
+                //  Status = EPushStatus.Pushing,
                 Template = data.Template,
                 Content = data.Content,
                 Remark = data.Remark,
@@ -165,6 +169,6 @@ namespace Hotline.Api.Controllers
         #endregion
 
 
-        
+
     }
 }

+ 5 - 0
src/Hotline.Share/Dtos/Push/FWMessage/MessageDataDto.cs

@@ -87,5 +87,10 @@ namespace Hotline.Share.Dtos.Push.FWMessage
         /// </summary>
         public ESendState SendState { get; set; }
         public string SendStateText => SendState.GetDescription();
+
+        /// <summary>
+        /// 从发次数
+        /// </summary>
+        public int ResendCount { get; set; }
     }
 }

+ 5 - 5
src/Hotline.Share/Dtos/Push/MessageDto.cs

@@ -19,10 +19,10 @@ namespace Hotline.Share.Dtos.Push
         /// </summary>
         public EPushPlatform PushPlatform { get; set; }
 
-        /// <summary>
-        /// 推送状态
-        /// </summary>
-        public EPushStatus Status { get; set; }
+        ///// <summary>
+        ///// 推送状态
+        ///// </summary>
+        //public EPushStatus Status { get; set; }
 
         /// <summary>
         /// 模板
@@ -32,7 +32,7 @@ namespace Hotline.Share.Dtos.Push
         /// <summary>
         /// 内容
         /// </summary>
-        public string Content { get; set; }
+        public string? Content { get; set; }
 
         /// <summary>
         /// 备注

+ 6 - 0
src/Hotline/Push/FWMessage/Message.cs

@@ -132,6 +132,12 @@ namespace Hotline.Push.FWMessage
         [SugarColumn(ColumnDescription = "发送失败原因等", ColumnDataType = "varchar(200)", IsNullable = true)]
         public string? Reason { get; set; }
 
+        /// <summary>
+        /// 从发次数
+        /// </summary>
+        [SugarColumn(ColumnDescription = "从发次数")]
+        public int ResendCount { get; set; }
+
         /// <summary>
         /// 发送人
         /// </summary>

+ 6 - 5
src/Hotline/Push/FWMessage/PushDomainService.cs

@@ -25,7 +25,7 @@ public class PushDomainService : IPushDomainService, IScopeDependency
     private readonly IMapper _mapper;
     private readonly IHttpClientFactory _httpClientFactory;
     private readonly IConfiguration _config;
-    private readonly SmsAccountInfo accountInfo = null;
+    private readonly SmsAccountInfo? accountInfo = null;
     private readonly IMediator _mediator;
     private readonly ITypedCache<CacheWaitSendId> _cacheWaitSendId;
 
@@ -61,9 +61,10 @@ public class PushDomainService : IPushDomainService, IScopeDependency
     public async Task PushAsync(MessageDto messageDto, CancellationToken cancellation)
     {
         if (messageDto == null)
-        {
             throw UserFriendlyException.SameMessage("消息不能为空!");
-        }
+
+        if (string.IsNullOrEmpty(messageDto.Template)&&string.IsNullOrEmpty(messageDto.Content))
+            throw UserFriendlyException.SameMessage("模板和内容不能同时为空!");
 
         Message message = new();
         int WaitSendId = 0;
@@ -88,8 +89,8 @@ public class PushDomainService : IPushDomainService, IScopeDependency
                 var matches = regex.Matches(Template);
                 if (matches != null && matches.Count != messageDto.Params.Count)
                     //参数与需要替换的字符数不匹配
-                    //throw UserFriendlyException.SameMessage("模板需要参数与实际传递参数个数不匹配!");
-                    reason = "模板需要参数与实际传递参数个数不匹配!";
+                    throw UserFriendlyException.SameMessage("模板需要参数与实际传递参数个数不匹配!");
+                    //reason = "模板需要参数与实际传递参数个数不匹配!";
 
                 //根据正则查询出来的匹配项替换内容
                 for (int i = 0; i < matches.Count; i++)