/// <summary>
        /// 获取激活码 (邮件发送成功 默认跳转到激活页面)
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="mail">邮箱地址</param>
        /// <returns></returns>
        public bool GetActivate(out JSData jsdata)
        {
            var json = new Common.CustomModel.JSData();

            #region 1.验证是否正常途径访问获取激活码 方法
            if (null == Session[tempUserinfo])
            {
                json.State = EnumState.失败; //json.Messg = "请您通过正常途径访问激活页面~";
                json.JSurl = "/";
                jsdata     = json;
                return(false);
            }
            #endregion

            Session[jihuoma] = new Random().Next(999999999).ToString();

            #region 2.发送邮件 如果邮件发送成功    默认跳转到 激活页面
            Helper.EmailHelper email = new Helper.EmailHelper()
            {
                mailPwd     = s_mailPwd,
                host        = s_host,
                mailFrom    = s_mailFrom,
                mailSubject = "[嗨-博客]激活码",
                mailBody    = "欢迎激活 “嗨-博客”</br></br>您注册的的帐号:" + ((ModelDB.BlogUsersSet)Session[tempUserinfo]).UserName +
                              " 激活码:" + Session[jihuoma].ToString(),
                mailToArray = new string[] { ((ModelDB.BlogUsersSet)Session[tempUserinfo]).UserMail }
            };

            try
            {
                email.Send();
                json.State = EnumState.正常重定向;
                json.Messg = "激活码已经发送邮箱~请注意查收~";
                json.JSurl = "/UserManage/Activate";
                jsdata     = json;
                return(true);
            }
            catch (Exception ex)
            {
                json.State = EnumState.失败;
                json.Messg = ex.Message;
                jsdata     = json;
                return(false);
            }

            #endregion
        }
        public string Activate()
        {
            var json = new Common.CustomModel.JSData();

            #region 1.判断是否从正常途径访问此页面 如果是的话 默认存在 Session[tempUserinfo]  2.如果是已经登录状态则直接无视 跳转

            if (null == Session[tempUserinfo])
            {
                json.State = EnumState.失败;//json.Messg = "请您通过正常途径访问激活页面~";
                json.JSurl = "/";
                return json.ToJson();
            }
            if (BLLSession.UserInfoSessioin != null && !BLLSession.UserInfoSessioin.IsLock)
            {
                json.State = EnumState.失败; //json.Messg = "您都已经登录的还想获取激活码?别玩了~";
                json.JSurl = "/";
                return json.ToJson();
            }
            #endregion

            var tempuser = ((ModelDB.BlogUsersSet)Session[tempUserinfo]);
            var activate = Request.Form["txt_activate"];//激活码

            #region 2.验证激活码  (更新缓存 发送通知邮件 清空无用session)
            if (activate.Trim() == Session[jihuoma].ToString().Trim()) //验证激活码
            {
                BLL.BlogUsersSetBLL user = new BLL.BlogUsersSetBLL();
                var objuser = user.GetList(t => t.Id == tempuser.Id, isAsNoTracking: false).FirstOrDefault();
                if (null != objuser)
                {
                    objuser.IsLock = false;
                    objuser.UserPass = tempuser.UserPass.MD5().MD5();//【】这里有个小BUG 暂未处理(如果是迁移的用户 这第一次登录需要激活密码)
                    objuser.UserMail = tempuser.UserMail;
                }
                user.save();
                #region bug 记录
                //ModelDB.BlogUsers objuser = new ModelDB.BlogUsers();
                //objuser.Id = id;
                //objuser.IsLock = false;
                // user.Up(objuser, "IsLock");  //这个方法 正常情况用没问题,如果先添加   然后修改就有问题  (不能用)
                #endregion
                bool islock = BLL.Common.CacheData.GetAllUserInfo(true).Where(t => t.Id == tempuser.Id).FirstOrDefault().IsLock;
                if (!islock)
                {
                    #region 发送邮件 告知 激活成功
                    Helper.EmailHelper email = new Helper.EmailHelper()
                       {
                           mailPwd = s_mailPwd,
                           host = s_host,
                           mailFrom = s_mailFrom,
                           mailSubject = "欢迎您注册 嗨-博客",
                           mailBody = objuser.UserNickname + " 您好!欢迎注册 嗨-博客</br></br>" +
                           "您注册的的帐号:" + objuser.UserName +
                               //"   密码是:" + objuser.UserPass +
                           "</br></br>" +
                           "请您妥善保管~",
                           mailToArray = new string[] { ((ModelDB.BlogUsersSet)Session[tempUserinfo]).UserMail }
                       };

                    try
                    { email.Send(); }
                    catch (Exception)
                    { }
                    #endregion

                    Session[jihuoma] = null;
                    Session[tempUserinfo] = null;

                    BLLSession.UserInfoSessioin = objuser;
                    return new JSData()
                    {
                        Messg = "恭喜您~激活成功~",
                        State = EnumState.正常重定向,
                        JSurl = "/"
                    }.ToJson();
                }
                else
                {
                    return new JSData()
                    {
                        Messg = "激活失败,请联系管理员~",
                        State = EnumState.失败
                    }.ToJson();
                }
            }
            #endregion

            return new JSData()
            {
                Messg = "您输入的激活码错误,你可以重新激活~",
                State = EnumState.失败
            }.ToJson();
        }
        /// <summary>
        /// 获取激活码 (邮件发送成功 默认跳转到激活页面)
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="mail">邮箱地址</param>
        /// <returns></returns>
        public bool GetActivate(out JSData jsdata)
        {
            var json = new Common.CustomModel.JSData();

            #region 1.验证是否正常途径访问获取激活码 方法
            if (null == Session[tempUserinfo])
            {
                json.State = EnumState.失败; //json.Messg = "请您通过正常途径访问激活页面~";
                json.JSurl = "/";
                jsdata = json;
                return false;
            }
            #endregion

            Session[jihuoma] = new Random().Next(999999999).ToString();

            #region 2.发送邮件 如果邮件发送成功    默认跳转到 激活页面
            Helper.EmailHelper email = new Helper.EmailHelper()
            {
                mailPwd = s_mailPwd,
                host = s_host,
                mailFrom = s_mailFrom,
                mailSubject = "[嗨-博客]激活码",
                mailBody = "欢迎激活 “嗨-博客”</br></br>您注册的的帐号:" + ((ModelDB.BlogUsersSet)Session[tempUserinfo]).UserName +
                " 激活码:" + Session[jihuoma].ToString(),
                mailToArray = new string[] { ((ModelDB.BlogUsersSet)Session[tempUserinfo]).UserMail }
            };

            try
            {
                email.Send();
                json.State = EnumState.正常重定向;
                json.Messg = "激活码已经发送邮箱~请注意查收~";
                json.JSurl = "/UserManage/Activate";
                jsdata = json;
                return true;
            }
            catch (Exception ex)
            {
                json.State = EnumState.失败;
                json.Messg = ex.Message;
                jsdata = json;
                return false;
            }

            #endregion
        }
        public string Activate()
        {
            var json = new Common.CustomModel.JSData();

            #region 1.判断是否从正常途径访问此页面 如果是的话 默认存在 Session[tempUserinfo]  2.如果是已经登录状态则直接无视 跳转

            if (null == Session[tempUserinfo])
            {
                json.State = EnumState.失败;//json.Messg = "请您通过正常途径访问激活页面~";
                json.JSurl = "/";
                return(json.ToJson());
            }
            if (BLLSession.UserInfoSessioin != null && !BLLSession.UserInfoSessioin.IsLock)
            {
                json.State = EnumState.失败; //json.Messg = "您都已经登录的还想获取激活码?别玩了~";
                json.JSurl = "/";
                return(json.ToJson());
            }
            #endregion

            var tempuser = ((ModelDB.BlogUsersSet)Session[tempUserinfo]);
            var activate = Request.Form["txt_activate"];//激活码

            #region 2.验证激活码  (更新缓存 发送通知邮件 清空无用session)
            if (activate.Trim() == Session[jihuoma].ToString().Trim()) //验证激活码
            {
                BLL.BlogUsersSetBLL user = new BLL.BlogUsersSetBLL();
                var objuser = user.GetList(t => t.Id == tempuser.Id, isAsNoTracking: false).FirstOrDefault();
                if (null != objuser)
                {
                    objuser.IsLock   = false;
                    objuser.UserPass = tempuser.UserPass.MD5().MD5();//【】这里有个小BUG 暂未处理(如果是迁移的用户 这第一次登录需要激活密码)
                    objuser.UserMail = tempuser.UserMail;
                }
                user.save();
                #region bug 记录
                //ModelDB.BlogUsers objuser = new ModelDB.BlogUsers();
                //objuser.Id = id;
                //objuser.IsLock = false;
                // user.Up(objuser, "IsLock");  //这个方法 正常情况用没问题,如果先添加   然后修改就有问题  (不能用)
                #endregion
                bool islock = BLL.Common.CacheData.GetAllUserInfo(true).Where(t => t.Id == tempuser.Id).FirstOrDefault().IsLock;
                if (!islock)
                {
                    #region 发送邮件 告知 激活成功
                    Helper.EmailHelper email = new Helper.EmailHelper()
                    {
                        mailPwd     = s_mailPwd,
                        host        = s_host,
                        mailFrom    = s_mailFrom,
                        mailSubject = "欢迎您注册 嗨-博客",
                        mailBody    = objuser.UserNickname + " 您好!欢迎注册 嗨-博客</br></br>" +
                                      "您注册的的帐号:" + objuser.UserName +
                                      //"   密码是:" + objuser.UserPass +
                                      "</br></br>" +
                                      "请您妥善保管~",
                        mailToArray = new string[] { ((ModelDB.BlogUsersSet)Session[tempUserinfo]).UserMail }
                    };

                    try
                    { email.Send(); }
                    catch (Exception)
                    { }
                    #endregion

                    Session[jihuoma]      = null;
                    Session[tempUserinfo] = null;

                    BLLSession.UserInfoSessioin = objuser;
                    return(new JSData()
                    {
                        Messg = "恭喜您~激活成功~",
                        State = EnumState.正常重定向,
                        JSurl = "/"
                    }.ToJson());
                }
                else
                {
                    return(new JSData()
                    {
                        Messg = "激活失败,请联系管理员~",
                        State = EnumState.失败
                    }.ToJson());
                }
            }
            #endregion

            return(new JSData()
            {
                Messg = "您输入的激活码错误,你可以重新激活~",
                State = EnumState.失败
            }.ToJson());
        }
        /// <summary>
        /// 获取激活码 (邮件发送成功 默认跳转到激活页面)
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="mail">邮箱地址</param>
        /// <returns></returns>
        public bool GetActivate(ref JSData jsdata)
        {
            //验证是否正常途径访问获取激活码 方法
            if (null == Session[tempUserinfo])
            {
                jsdata.State = EnumState.失败; //json.Messg = "请您通过正常途径访问激活页面~";
                jsdata.JSurl = "/";
                return(false);
            }

            #region 频繁获取验证处理
            if (Session["GetActivateTime"] == null)
            {
                Session["GetActivateTime"] = DateTime.Now;
            }
            if (Convert.ToDateTime(Session["GetActivateTime"]) > DateTime.Now)
            {
                jsdata.State = EnumState.失败;
                jsdata.Messg = "您获取激活码太过频繁,请15秒后再尝试。";
                LogSave.WarnLogSave("IP:" + RequestHelper.GetIp() + "\r\n获取激活码频繁", "获取激活码频繁");
                return(false);
            }
            Session["GetActivateTime"] = DateTime.Now.AddSeconds(15);//设置时间
            #endregion

            //session记录激活码
            Session[jihuoma] = new Random().Next(999999999).ToString();

            #region 发送邮件 如果邮件发送成功    默认跳转到 激活页面

            var tempSessionUser      = (BlogUser)Session[tempUserinfo];
            var nickName             = string.IsNullOrEmpty(tempSessionUser.UserNickname) ? tempSessionUser.UserName : tempSessionUser.UserName;
            Helper.EmailHelper email = new Helper.EmailHelper()
            {
                mailPwd     = s_mailPwd,
                host        = s_host,
                mailFrom    = s_mailFrom,
                mailSubject = "[嗨-博客]激活码",
                mailBody    = EmailHelper.tempBody(nickName, " 激活码:" + Session[jihuoma].ToString()),
                mailToArray = new string[] { tempSessionUser.UserMail }
            };

            try
            {
                email.Send(t =>
                {
                    LogSave.TrackLogSave("IP:" + RequestHelper.GetIp() + "\r\nToMail:" + tempSessionUser.UserMail + "\r\nBody:" + t.Body, "发送成功的邮件");
                }, t =>
                {
                    LogSave.TrackLogSave("IP:" + RequestHelper.GetIp() + "\r\nToMail:" + tempSessionUser.UserMail + "\r\nBody:" + t.Body, "发送失败的邮件");
                }
                           );
                jsdata.State = EnumState.正常重定向;
                jsdata.Messg = "激活码已经发送邮箱~请注意查收~";
                jsdata.JSurl = "/UserManage/Activate";
                return(true);
            }
            catch (Exception ex)
            {
                jsdata.State = EnumState.失败;
                jsdata.Messg = ex.Message;
                return(false);
            }

            #endregion
        }
        /// <summary>
        /// 激活 (实际上是验证激活码后  修改用户信息:包括是否激活IsLock、邮箱地址、密码 )
        /// </summary>
        /// <returns></returns>
        public string Activate()
        {
            var json = new JSData();

            #region 1.判断是否从正常途径访问此页面 如果是的话 默认存在 Session[tempUserinfo]  2.如果是已经登录状态则直接无视 跳转

            if (null == Session[tempUserinfo])
            {
                json.State = EnumState.失败;//json.Messg = "请您通过正常途径访问激活页面~";
                json.JSurl = "/";
                return(json.ToJson());
            }
            if (BLLSession.UserInfoSessioin != null && !BLLSession.UserInfoSessioin.IsLock)
            {
                json.State = EnumState.失败; //json.Messg = "您都已经登录的还想获取激活码?别玩了~";
                json.JSurl = "/";
                return(json.ToJson());
            }
            #endregion

            var tempuser = ((BlogUser)HttpContext.Current.Session[tempUserinfo]);
            var activate = HttpContext.Current.Request.Form["txt_activate"];//激活码

            #region 2.验证激活码  (更新缓存 发送通知邮件 清空无用session)
            if (activate.Trim() == Session[jihuoma].ToString().Trim()) //验证激活码
            {
                BLL.BaseBLL <BlogUser> user = new BLL.BaseBLL <BlogUser>();
                var objuser          = user.GetList(t => t.Id == tempuser.Id, isAsNoTracking: false).FirstOrDefault();
                var isEffectiveEmail = !string.IsNullOrEmpty(objuser.UserMail) && objuser.UserMail != "无效";//是否是有效邮箱(迁移用户是无效邮箱)
                if (null != objuser)
                {
                    objuser.IsLock   = false;
                    objuser.UserPass = isEffectiveEmail ? tempuser.UserPass.MD5().MD5() : defaulPass.MD5().MD5();
                    objuser.UserMail = tempuser.UserMail;
                    if (objuser.BlogUserInfo == null)
                    {
                        objuser.BlogUserInfo = new BlogUserInfo()
                        {
                            BlogUpNum = 0
                        };
                    }
                }
                user.save();
                #region bug 记录
                //BlogUsers objuser = new BlogUsers();
                //objuser.Id = id;
                //objuser.IsLock = false;
                // user.Up(objuser, "IsLock");  //这个方法 正常情况用没问题,如果先添加   然后修改就有问题  (不能用)
                #endregion
                bool islock = GetDataHelper.GetAllUser().Where(t => t.Id == tempuser.Id).FirstOrDefault().IsLock;
                if (!islock)
                {
                    #region 发送邮件 告知 激活成功

                    var tempSessionUser      = (BlogUser)Session[tempUserinfo];
                    var nickName             = string.IsNullOrEmpty(tempSessionUser.UserNickname) ? tempSessionUser.UserName : tempSessionUser.UserName;
                    Helper.EmailHelper email = new Helper.EmailHelper()
                    {
                        mailPwd     = s_mailPwd,
                        host        = s_host,
                        mailFrom    = s_mailFrom,
                        mailSubject = "欢迎您注册 嗨-博客",
                        mailBody    = EmailHelper.tempBody(nickName, "欢迎注册 嗨-博客",
                                                           "您注册的的帐号:" + objuser.UserName + "   密码是:" + (isEffectiveEmail ? tempuser.UserPass : defaulPass), "请您妥善保管~"),
                        mailToArray = new string[] { tempSessionUser.UserMail }
                    };

                    try
                    {
                        email.Send(t =>
                        {
                            LogSave.TrackLogSave("IP:" + RequestHelper.GetIp() + "\r\nToMail:" + tempSessionUser.UserMail + "\r\nBody:" + t.Body, "发送成功的邮件");
                        },
                                   t =>
                        {
                            LogSave.TrackLogSave("IP:" + RequestHelper.GetIp() + "\r\nToMail:" + tempSessionUser.UserMail + "\r\nBody:" + t.Body, "发送失败的邮件");
                        }
                                   );
                    }
                    catch (Exception)
                    { }

                    #endregion

                    Session[jihuoma]      = null;
                    Session[tempUserinfo] = null;

                    BLLSession.UserInfoSessioin = objuser;
                    return(new JSData()
                    {
                        Messg = "恭喜您~激活成功~",
                        State = EnumState.正常重定向,
                        JSurl = "/"
                    }.ToJson());
                }
                else
                {
                    return(new JSData()
                    {
                        Messg = "激活失败,请联系管理员~",
                        State = EnumState.失败
                    }.ToJson());
                }
            }
            #endregion

            return(new JSData()
            {
                Messg = "您输入的激活码错误,你可以重新激活~",
                State = EnumState.失败
            }.ToJson());
        }