/// <summary> /// 发送短信 /// </summary> /// <param name="model"></param> /// <param name="setting"></param> /// <param name="strategy"></param> public static async void SendSMSAsync(Msg_SMS model, Msg_SMSSetting setting, Msg_MessageStrategy strategy) { await Task.Run(() => { Result <int> result = null; //阿里大鱼 result = UtilitySendMessage.SendMessageByAlidayuSms(setting.URL, setting.AppKey, setting.AppSecret, ConstString.SMSFORMAT, ConstString.SMSTYPE, model.SignName, model.Params, model.ReceivePhone, model.ServerNo); //以下为回调 //更新状态 model.SendCount += 1; model.State = result.Data == 1; //超出重发次数 if (model.SendCount > strategy.ResendStra) { model.State = true; } model.SenderTime = DateTime.Now; //执行更新 MsgDataContext db = new MsgDataContext(); var entry = db.Entry(model); db.Entry <Msg_SMS>(model).State = EntityState.Modified; db.SaveChanges(); }); }
/// <summary> /// 获取邮件设置 /// </summary> /// <returns></returns> public Msg_EmailSetting GetEmailSetting() { MsgDataContext db = new MsgDataContext(); Msg_EmailSetting model = null; model = db.Msg_EmailSetting.FirstOrDefault(i => i.IsConfirm && i.IsEnable); return(model); }
/// <summary> /// 新增站内信 /// </summary> /// <param name="model"></param> /// <returns></returns> public Result <int> AddMessage(long sendId, long sendCompanyId, long receiveId, long receiveCompanyId, MessageStep step, string businessUrl, Dictionary <string, string> parameters, string linkURL = "") { Result <int> result = new Result <int>(); try { using (MsgDataContext db = new MsgDataContext()) { //查找模板 var templete = db.Msg_MessageTemplete.FirstOrDefault(i => i.Step == step.ToString() && i.IsConfirm && i.IsEnable); if (templete != null) { Msg_Message model = new Msg_Message(); string con = templete.TemplateCon; string title = templete.TitleCon; if (parameters != null && parameters.Any()) { //替换标题和内容参数 foreach (var item in parameters) { con = con.Replace("{" + item.Key + "}", item.Value); title = title.Replace("{" + item.Key + "}", item.Value); } } model.Contents = con; model.LinkURL = string.IsNullOrEmpty(linkURL) ? templete.LinkURL : linkURL; model.ReadTime = null; model.ReceiveId = receiveId; model.SenderId = sendId; model.SendeCompanyId = sendCompanyId; model.ReceiveCompanyId = receiveCompanyId; model.State = false; model.Step = step.ToString(); model.TemplateId = templete.Id; model.Title = title; model.SendTime = DateTime.Now; model.BusinessUrl = businessUrl; db.Msg_Message.Add(model); var rows = db.SaveChanges(); result.Data = rows; result.Flag = EResultFlag.Success; //WriteLog(AdminModule.MessageHistory.GetText(), SystemRight.Add.GetText(), "新增站内信:" + model.Id + ":" + model.Title); } else { throw new Exception("未查找到对应站内信模板"); } } } catch (Exception ex) { result.Data = -1; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "AddMessage"); } return(result); }
/// <summary> /// 获取消息发送策略 /// </summary> /// <param name="type"></param> /// <returns></returns> public Msg_MessageStrategy GetStrategy(MessageType type) { MsgDataContext db = new MsgDataContext(); Msg_MessageStrategy model = null; var list = db.Msg_MessageStrategy.ToList(); model = list.FirstOrDefault(i => i.IsConfirm && i.IsEnable && i.Type == type.ToString()); return(model); }
/// <summary> /// 消息发送通用方法 /// </summary> /// <param name="sendId"></param> /// <param name="receiveId"></param> /// <param name="step"></param> /// <param name="parameters"></param> /// <param name="linkURL"></param> /// <returns></returns> public async void SendMsg(long sendId, long sendCompanyId, long receiveId, long receiveCompanyId, MessageStep step, Dictionary <string, string> parameters, string linkURL = "") { await Task.Run(() => { Result <int> result = new Result <int>(); int rows = 0; //try //{ using (MsgDataContext db = new MsgDataContext()) { //parameters.Add("Phone", LoadSettingsByKeys(Settings.WebPhone).Value); //parameters.Add("WebURL", LoadSettingsByKeys(Settings.WebUrl).Value); //查询消息环节配置 var section = db.Msg_MessageSection.FirstOrDefault(i => i.IsConfirm && i.IsEnable && i.Name == step.ToString()); if (section != null) { var types = section.MsgTypes.SplitString(","); foreach (var item in types) { var type = item.ToEnumReq <MessageType>(); switch (type) { case MessageType.Message: rows += AddMessage(sendId, sendCompanyId, receiveId, receiveCompanyId, step, string.Empty, parameters, linkURL).Data; break; //case MessageType.Email: // rows += AddEmail(sendId, sendCompanyId, receiveId, receiveCompanyId, step, parameters).Data; // break; //case MessageType.SMS: // rows += AddSMS(sendId, sendCompanyId, receiveId, receiveCompanyId, step, parameters).Data; // break; default: break; } } result.Data = rows; result.Flag = EResultFlag.Success; } } // else // { // throw new Exception("未查询到消息环节配置"); // } // } //} //catch (Exception ex) //{ // result.Data = -1; // result.Flag = EResultFlag.Failure; // result.Exception = new ExceptionEx(ex, "SendMsg"); //} }); }
public List <Msg_SMS> TimerSendSMSHB() { MsgDataContext db = new MsgDataContext(); List <Msg_SMS> list = new List <Msg_SMS>(); list = db.Msg_SMS.Where(i => i.State == false || !i.SenderTime.HasValue).ToList(); List <Msg_SMS> result = new List <Msg_SMS>(); foreach (var item in list) { //发送 MessageHelper.HBSendSMSAsync(item); } return(list); }
/// <summary> /// 发送短信 /// </summary> /// <returns></returns> public List <Msg_SMS> TimerSendSMS() { MsgDataContext db = new MsgDataContext(); List <Msg_SMS> list = new List <Msg_SMS>(); //短信设置 var setting = GetSMSSetting(); var strategy = GetStrategy(MessageType.SMS); list = db.Msg_SMS.Where(i => i.State == false || !i.SenderTime.HasValue).ToList(); List <Msg_SMS> result = new List <Msg_SMS>(); foreach (var item in list) { //发送 MessageHelper.SendSMSAsync(item, setting, strategy); } return(list); }
public static async void HBSendSMSAsync(Msg_SMS model) { await Task.Run(() => { Result <bool> result = null; //阿里大鱼 result = UtilitySendMessage.SendMessage(model.ReceivePhone, model.SmsCon); //以下为回调 //更新状态 model.State = result.Data; model.SenderTime = DateTime.Now; //执行更新 MsgDataContext db = new MsgDataContext(); var entry = db.Entry(model); db.Entry(model).State = EntityState.Modified; db.SaveChanges(); }); }
/// <summary> /// 发送邮件 /// </summary> /// <param name="model"></param> /// <param name="setting"></param> /// <param name="strategy"></param> /// <param name="displayName"></param> public static async void SendEmailAsync(Msg_Email model, Msg_EmailSetting setting, Msg_MessageStrategy strategy, string displayName = "") { await Task.Run(() => { Result <bool> result = null; result = EmailHelper.SendEmail(model.Title, model.EmailCon, model.ReceiveEmaile, setting.MailProtocol, setting.UserName, setting.PassWord, displayName); //以下为回调 //更新状态 model.SendCount += 1; model.State = result.Data; //超出重发次数 if (model.SendCount > strategy.ResendStra) { model.State = true; } model.SenderTime = DateTime.Now; //执行更新 MsgDataContext db = new MsgDataContext(); var entry = db.Entry(model); db.Entry <Msg_Email>(model).State = EntityState.Modified; db.SaveChanges(); }); }
/// <summary> /// 发送邮件 /// </summary> /// <returns></returns> public List <Msg_Email> TimerSendEmail() { MsgDataContext db = new MsgDataContext(); List <Msg_Email> list = new List <Msg_Email>(); //邮件设置 var strategy = GetStrategy(MessageType.Email); var setting = GetEmailSetting(); if (strategy == null || setting == null) { return(null); } //待发邮件 list = db.Msg_Email.Where(i => i.State == false || !i.SenderTime.HasValue).ToList(); List <Msg_Email> result = new List <Msg_Email>(); foreach (var item in list) { //发送 MessageHelper.SendEmailAsync(item, setting, strategy); } return(list); }
/// <summary> /// 新增站内信 /// </summary> /// <param name="sendId"></param> /// <param name="sendCompanyId"></param> /// <param name="recDic">接收信息字典类型 key:接收人Id;value:接收人单位Id</param> /// <param name="step"></param> /// <param name="parameters"></param> /// <param name="linkURL"></param> /// <returns></returns> public Result <int> AddMessageBatch(long sendId, long sendCompanyId, Dictionary <long, long> recDic, MessageStep step, Dictionary <string, string> parameters, string linkURL = "") { Result <int> result = new Result <int>(); try { using (MsgDataContext db = new MsgDataContext()) { //查找模板 var templete = db.Msg_MessageTemplete.FirstOrDefault(i => i.Step == step.ToString() && i.IsConfirm && i.IsEnable); if (templete != null) { if (recDic != null && recDic.Any()) { List <Msg_Message> list = new List <Msg_Message>(); Msg_Message model = null; foreach (var dic in recDic) { model = new Msg_Message(); string con = templete.TemplateCon; string title = templete.TitleCon; if (parameters != null && parameters.Any()) { foreach (var item in parameters) { con = con.Replace("{" + item.Key + "}", item.Value); title = title.Replace("{" + item.Key + "}", item.Value); } } model.Contents = con; model.LinkURL = string.IsNullOrEmpty(linkURL) ? templete.LinkURL : linkURL; model.ReadTime = null; model.ReceiveId = dic.Key; model.SenderId = sendId; model.SendeCompanyId = sendCompanyId; model.ReceiveCompanyId = dic.Value; model.State = false; model.Step = step.ToString(); model.TemplateId = templete.Id; model.Title = title; model.SendTime = DateTime.Now; list.Add(model); } db.Msg_Message.AddRange(list); var rows = db.SaveChanges(); result.Data = rows; result.Flag = EResultFlag.Success; } else { throw new Exception("未找到接收人"); } } else { throw new Exception("未查找到对应站内信模板"); } } } catch (Exception ex) { result.Data = -1; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "AddMessage"); } return(result); }
/// <summary> /// 发送短信 /// </summary> /// <param name="receiveId"></param> /// <param name="step"></param> /// <param name="parameters"></param> /// <returns></returns> public Result <int> AddSMS(long sendId, long sendCompanyId, long receiveId, long receiveCompanyId, MessageStep step, Dictionary <string, string> parameters) { Result <int> result = new Result <int>(); try { using (MsgDataContext db = new MsgDataContext()) { //查找模板 var templete = db.Msg_SMSTemplete.FirstOrDefault(i => i.Step == step.ToString() && i.IsConfirm && i.IsEnable); if (templete != null) { Msg_SMS model = new Msg_SMS(); string con = templete.TemplateCon; if (parameters != null && parameters.Any()) { //替换内容参数 foreach (var item in parameters) { con = con.Replace("{" + item.Key + "}", item.Value); } } BasicDataContext basicData = new BasicDataContext(); var receive = basicData.Base_User.FirstOrDefault(i => i.Id == receiveId); model.ReceivePhone = receive.Phone; model.ReceiveId = receiveId; model.SenderId = sendId; model.SendeCompanyId = sendCompanyId; model.ReceiveCompanyId = receiveCompanyId; model.SenderPhone = ""; model.SenderTime = null; model.SmsCon = con; model.State = false; model.SubmissionTime = DateTime.Now; model.Step = step.ToString(); model.TemplateId = templete.Id; model.ServerNo = templete.ServerNo; model.Params = UtilitySendMessage.CreateSmsParam(parameters).Data; model.SignName = templete.SignName; db.Msg_SMS.Add(model); var rows = db.SaveChanges(); result.Data = rows; result.Flag = EResultFlag.Success; //WriteLog(AdminModule.SMSHistory.GetText(), SystemRight.Add.GetText(), "新增短信:" + model.Id + ":" + model.SmsCon); } else { throw new Exception("未查找到短信模板"); } } } catch (Exception ex) { result.Data = -1; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "AddSMS"); } return(result); }
/// <summary> /// 发送邮件,TODO:扩展附件方法 /// </summary> /// <param name="receiveId"></param> /// <param name="step"></param> /// <param name="parameters"></param> /// <returns></returns> public Result <int> AddEmail(long sendId, long sendCompanyId, long receiveId, long receiveCompanyId, MessageStep step, Dictionary <string, string> parameters) { Result <int> result = new Result <int>(); try { using (MsgDataContext db = new MsgDataContext()) { //查找模板 var templete = db.Msg_EmailTemplete.FirstOrDefault(i => i.Step == step.ToString() && i.IsConfirm && i.IsEnable); if (templete != null) { Msg_Email model = new Msg_Email(); string con = templete.TemplateCon; string title = templete.TitleCon; if (parameters != null && parameters.Any()) { //替换标题和内容参数 foreach (var item in parameters) { con = con.Replace("{" + item.Key + "}", item.Value); title = title.Replace("{" + item.Key + "}", item.Value); } } BasicDataContext basicData = new BasicDataContext(); model.EmailCon = con; model.ReceiveId = receiveId; model.ReceiveEmaile = basicData.Base_User.FirstOrDefault(i => i.Id == model.ReceiveId).Email; model.SenderId = sendId; model.SenderEmail = db.Msg_EmailSetting.FirstOrDefault(i => i.IsConfirm && i.IsEnable).UserName; model.SendeCompanyId = sendCompanyId; model.ReceiveCompanyId = receiveCompanyId; model.State = false; model.Step = step.ToString(); model.TemplateId = templete.Id; model.Title = title; model.SenderTime = null; model.SubmissionTime = DateTime.Now; model.SendCount = 0; db.Msg_Email.Add(model); var rows = db.SaveChanges(); result.Data = rows; result.Flag = EResultFlag.Success; //WriteLog(AdminModule.EmailHistory.GetText(), SystemRight.Add.GetText(), "新增邮件:" + model.Id + ":" + model.Title); } else { throw new Exception("未查找到对应邮件模板"); } } } catch (Exception ex) { result.Data = -1; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "AddEmail"); } return(result); }