• 快速开发平台消息通知中心之短信发送


      短信发送一般是用的第三方短信平台,调用第三方短信平台接口即可实现收发信息的服务。


            /// <summary>
            /// 发送短信通知
            /// </summary>
            public static void SendSmsNotice(int number)
            {
                using (var unitOfWork = new UnitOfWork())
                {
                    var messageList = unitOfWork.SmsNoticeMessageRepository.GetSmsNoticeMessages(number);
                    if (!messageList.Any()) return;
                    var duplicate = new List<SmsNoticeMessage>(messageList.ToArray());
                    var removeMessageList = new List<SmsNoticeMessage>();
                    foreach (var msg in duplicate)
                    {
                        var result = messageList.Where(s => s.ReasonType == msg.ReasonType && s.PhoneNumber == msg.PhoneNumber).ToList();
                        var remark = string.Empty;
                        if (result.Any() && result.Count > 1)
                        {
                            remark = result.Where(r => !string.IsNullOrWhiteSpace(r.Remark)).Aggregate(remark, (current, r) => current + (r.Remark + "|"));
                            for (int i = 0; i < result.Count; i++)
                            {
                                removeMessageList.Add(result[i]);
                                messageList.Remove(result[i]);
                            }
                            result[0].Remark = remark;
                            messageList.Add(result[0]);
                        }
                    }
                    if (removeMessageList.Any())
                    {
                        removeMessageList.ForEach(s => { s.IsSended = true; s.IsSendSuccess = true; });
                    }
                    var messageCollection = new Dictionary<string, string>();
                    foreach (var noticeMessage in messageList)
                    {
                        var message = GetMessageTemplete(noticeMessage);
                        if (messageCollection.ContainsKey(message))
                        {
                            messageCollection[message] = messageCollection[message] + "," + noticeMessage.PhoneNumber;
                        }
                        else
                        {
                            messageCollection.Add(message, noticeMessage.PhoneNumber);
                        }
                    }
                    foreach (var msg in messageCollection)
                    {
                        var toList = msg.Value.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                        //var isSuccess = Utils.SendSms(toList, msg.Key);
                        Task.Factory.StartNew(() => { Utils.SendSms(toList, msg.Key); }).Start();
                        foreach (var entity in messageList.Where(p=>toList.Contains(p.PhoneNumber)))
                        {
                            entity.IsSended = true;
                            entity.IsSendSuccess = true;
                        }
                    }
    
                    unitOfWork.SmsNoticeMessageRepository.UpdateBatch(messageList);
                    unitOfWork.SmsNoticeMessageRepository.UpdateBatch(removeMessageList);
                }
            }
            /// <summary>
            /// 发送短信通知
            /// </summary>
            public static void SendSmsNotice(Product product)
            {
                using (var unitOfWork = new UnitOfWork())
                {
                    var contact = unitOfWork.ContactInfoRepository.GetFirst(s => s.UserId == product.UserId);
                    var reason = string.Empty;
                    var message = string.Empty;
                    var call = contact.FirstName + (contact.Sex == SexEnum.Woman ? "女士" : "先生");
    
                    if (product.State == ProductStateEnum.CheckFail)
                    {
                        reason = "产品审核状态变更为审核失败";
                        message = string.Format("{0},您好!您的产品[{1}]因[{2}]未通过审核,请登录网站修改", call, product.Name, product.CheckRemark);
                    }
                    else if (product.State == ProductStateEnum.IsConfirmed)
                    {
                        reason = "产品审核状态变更为已上架";
                        message = string.Format("{0},您好!您的产品[{1}]已通过审核,请登录网站进行产品操作", call, product.Name);
                    }
                    var smsMessageNotice = new SmsNoticeMessage
                                             {
                                                 IsSended = true,
                                                 UserId = product.UserId,
                                                 PhoneNumber = contact.MobileTelephone,
                                                 Reason = reason,
                                                 Gender = contact.Sex == SexEnum.Woman ? Gender.Female : Gender.Male,
                                                 FirstName = contact.FirstName,
                                                 AddTime = DateTime.Now,
                                                 ReasonType = product.State == ProductStateEnum.IsConfirmed ? SmsNoticeReason.N9 : SmsNoticeReason.N10,
                                                 Remark = "即时通知"
                                             };
                    var sendResult = Utils.InvokeApi<ResponsePackage<SmsNoticeResult>>("SmsNotice/SendSingle", new { To = contact.MobileTelephone, Data = message });
                    if (sendResult.Data != null)
                    {
                        smsMessageNotice.IsSendSuccess = sendResult.Data.IsSuccess;
                    }
                    unitOfWork.SmsNoticeMessageRepository.Insert(smsMessageNotice);
                    unitOfWork.Save();
                }
            }


    快速开发平台消息通知中心之短信发送,短信发送是什么,用什么实现?快速开发平台中我们支持满意通和阿里百川的短信服务,他们的接口都有实现。 

    本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
    转载请注明:文章转载自:软件开发框架 » 快速开发平台消息通知中心之短信发送
    本文标题:快速开发平台消息通知中心之短信发送

  • 相关阅读:
    C语言基本快速入门教程
    几何深度学习前沿
    Anaconda 更改清华源
    大学安全教育-实验室安全测试题库
    《如何写好科研论文》(清华)慕课答案
    集群考试试卷
    集群考试相关
    Linux下tar压缩解压用法
    2020-安全微课(新生入学教育)答案
    函数用法和底层分析
  • 原文地址:https://www.cnblogs.com/frfwef/p/14573197.html
Copyright © 2020-2023  润新知