Пример #1
0
        /// <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();
            });
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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");
                //}
            });
        }
Пример #6
0
        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);
        }
Пример #7
0
        /// <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);
        }
Пример #8
0
        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();
            });
        }
Пример #9
0
 /// <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();
     });
 }
Пример #10
0
        /// <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);
        }
Пример #11
0
        /// <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);
        }
Пример #12
0
        /// <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);
        }
Пример #13
0
        /// <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);
        }