/// <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(); }); }
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> public Result <int> UpdateSMS(Msg_SMS model) { Result <int> result = new Result <int>(); try { var rows = DataOperateMsg <Msg_SMS> .Get().Update(model); result.Data = rows; result.Flag = EResultFlag.Success; WriteLog(MessageType.SMS.GetText(), SystemRight.Add.GetText(), "修改短信记录: " + model.Id); } catch (Exception ex) { result.Data = -1; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "UpdateSMS"); } return(result); }
/// <summary> /// 短信验证码 /// </summary> /// <param name="receiveId"></param> /// <param name="step"></param> /// <param name="parameters"></param> /// <returns></returns> public Result <int> AddSMSValCode(string phone, MessageStep step, Dictionary <string, string> parameters) { //生成验证码 string code = ConstString.CreateRandomNum(ConstString.RANDOMNUMCOUNT); parameters.Add("Code", code); Result <int> result = new Result <int>(); try { //查找模板 var templete = DataOperateMsg <Msg_SMSTemplete> .Get().Single(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); } } var receive = DataOperateBasic <Base_User> .Get().Single(i => i.Phone == phone); long receiveId = 0; if (receive != null && receive.Id > 0) { receiveId = receive.Id; } model.ReceivePhone = phone; model.ReceiveId = receiveId; model.SendeCompanyId = 0; model.ReceiveCompanyId = 0; model.SenderId = 0; 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; var splitTime = (LoadSettingsByKeys(Settings.SendRegisterCodeTime)); //验证是否频繁发送 var last = DataOperateMsg <Msg_SMSValidate> .Get().GetList(i => i.ReceivePhone == phone).OrderByDescending(i => i.Id).FirstOrDefault(); if (last != null && (DateTime.Now - last.RecordTime).TotalSeconds < splitTime.Value.ToInt32Req()) { throw new Exception("不能频繁发送验证码"); } var rows = DataOperateMsg <Msg_SMS> .Get().Add(model); //添加验证码数据 Msg_SMSValidate valModel = new Msg_SMSValidate(); valModel.Code = code; valModel.SMSId = model.Id; valModel.ReceivePhone = model.ReceivePhone; valModel.ReceiveId = model.ReceiveId; valModel.SendId = model.SenderId; valModel.SendTime = model.SubmissionTime; valModel.State = ValCodeState.UNUse.ToString(); valModel.ValidateType = step.ToString(); var seconds = LoadSettingsByKeys(Settings.SMSCodeDuration).Value.ToInt32Req(); valModel.ExpiredTime = DateTime.Now.AddSeconds(seconds); rows = DataOperateMsg <Msg_SMSValidate> .Get().Add(valModel); 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, "AddSMSValCode"); } 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); }