Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <summary>
        /// 邮件验证码
        /// </summary>
        /// <param name="receiveId"></param>
        /// <param name="step"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public Result <int> AddEmailValCode(string email, 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_EmailTemplete> .Get().Single(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);
                        }
                    }
                    var receive = DataOperateBasic <Base_User> .Get().Single(i => i.Email == email);

                    long receiveId = 0;
                    if (receive != null && receive.Id > 0)
                    {
                        receiveId = receive.Id;
                    }

                    model.EmailCon         = con;
                    model.ReceiveId        = receiveId;
                    model.SendeCompanyId   = 0;
                    model.ReceiveCompanyId = 0;
                    model.ReceiveEmaile    = email;
                    model.SenderId         = 0;//管理员
                    model.SenderEmail      = DataOperateMsg <Msg_EmailSetting> .Get().Single(i => i.IsConfirm && i.IsEnable).UserName;

                    model.State          = false;
                    model.Step           = step.ToString();
                    model.TemplateId     = templete.Id;
                    model.Title          = title;
                    model.SenderTime     = null;
                    model.SubmissionTime = DateTime.Now;

                    var rows = DataOperateMsg <Msg_Email> .Get().Add(model);

                    //添加验证码数据
                    Msg_EmailValidate valModel = new Msg_EmailValidate();
                    valModel.Code         = code;
                    valModel.EmailId      = model.Id;
                    valModel.ReceiveEmail = model.ReceiveEmaile;
                    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.EmailCodeDuration).Value.ToInt32Req();
                    valModel.ExpiredTime = DateTime.Now.AddSeconds(seconds);
                    rows = DataOperateMsg <Msg_EmailValidate> .Get().Add(valModel);


                    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, "AddEmailValCode");
            }
            return(result);
        }