短信发送一般是用的第三方短信平台,调用第三方短信平台接口即可实现收发信息的服务。
/// <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();
}
}
快速开发平台消息通知中心之短信发送,短信发送是什么,用什么实现?快速开发平台中我们支持满意通和阿里百川的短信服务,他们的接口都有实现。
本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:软件开发框架 » 快速开发平台消息通知中心之短信发送
本文标题:快速开发平台消息通知中心之短信发送