Example #1
0
        /***********************************************************************
        * 自定义函数                                                          *
        ***********************************************************************/
        #region 自定义函数

        #region  步更新修改了职位名称的管理员表记录
        /// <summary>
        /// 同步更新修改了职位名称的管理员表记录
        /// </summary>
        /// <param name="positionId">职位Id</param>
        /// <param name="positionName">修改后的职位名称</param>
        public void UpdatePositionName(int positionId, string positionName)
        {
            //首先获取有该职位的所有管理员记录
            //设置查询的列,只需要获取Id与职位Id字段
            var columns = new List <string>();

            columns.Add(ManagerTable.Id);
            columns.Add(ManagerTable.Position_Id);

            //设置查询条件
            var wheres = new List <ConditionHelper.SqlqueryCondition>();

            wheres.Add(new ConditionHelper.SqlqueryCondition(ConstraintType.And, ManagerTable.Position_Id, Comparison.Like, "%," + positionId + ",%"));
            //获取DataTable
            var dt = GetDataTable(false, 0, columns, 0, 0, wheres, null);

            if (dt != null && dt.Rows.Count > 0)
            {
                //逐个更新管理员职位名称
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //获取职位名称
                    var name = PositionBll.GetInstence().GetName(dt.Rows[i][ManagerTable.Position_Id] + "");
                    //更新管理员职位名称
                    UpdateValue(null, ConvertHelper.Cint0(dt.Rows[i][ManagerTable.Id]), ManagerTable.Position_Name, name, "{0}修改了Manager表外键Position_Id值为" + i + "的职位名称[" + positionName + "]");
                }
            }
        }
        /// <summary>
        /// 判断用户是否超时退出(退出情况:1.系统更新,2.用户自动退出)
        /// </summary>
        public void IsTimeOut()
        {
            if (HttpContext.Current.Session == null || HttpRuntime.Cache["OnlineUsers"] == null || HttpContext.Current.Session[OnlineUsersTable.UserHashKey] == null)
            {
                try
                {
                    //不存在则表示Session失效了,重新从Cookies中加载
                    var userHashKey = CookieHelper.GetCookieValue(OnlineUsersTable.UserHashKey);
                    var md5         = CookieHelper.GetCookieValue(OnlineUsersTable.Md5);

                    //判断Cookies是否存在,存在则查询在线列表,重新获取用户信息
                    if (userHashKey.Length > 0 && md5.Length == 32)
                    {
                        //读取当前用户在线实体
                        var model = GetModelForCache(x => x.UserHashKey == userHashKey);
                        //当前用户存在在线列表中
                        if (model != null)
                        {
                            //计算用户md5值
                            var key = GenerateMd5(model);

                            //判断用户的md5值是否正确
                            if (md5 == key)
                            {
                                //将UserHashKey存储到缓存中
                                HttpContext.Current.Session[OnlineUsersTable.UserHashKey] = userHashKey;
                                //获取用户权限并存储到用户Session里
                                PositionBll.GetInstence().SetUserPower(model.Position_Id);
                                //更新用户当前SessionId到在线表中
                                //UpdateUserOnlineInfo(model.Id + "", OnlineUsersTable.SessionId, HttpContext.Current.Session.SessionID);

                                //当在线列表缓存不存在时,重新加载数据库记录到缓存中
                                if (HttpRuntime.Cache["OnlineUsers"] == null)
                                {
                                    Load();
                                }

                                //加载用户相关信息完毕,退出超时检查
                                return;
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    //出现异常,保存出错日志信息
                    CommonBll.WriteLog("", e);
                }


                //用户不存在,直接退出
                FineUI.Alert.Show("当前用户登录已经过时或系统已更新,请重新登录!", "检测通知", MessageBoxIcon.Information, "top.location='Login.aspx'");
                //DotNet.Utilities.JsHelper.AlertAndParentUrl("当前用户登录已经过时或系统已更新,请重新登录!", "Login.aspx");
                HttpContext.Current.Response.End();
            }
        }
Example #3
0
        /// <summary>
        /// 获取用户页面控件(按键)操作权限
        /// </summary>
        /// <returns></returns>
        public string GetControlPower()
        {
            //读取Session中存储的ControlPower值
            var controlPower = SessionHelper.GetSession(PositionTable.ControlPower);

            //如果为null
            if (controlPower == null)
            {
                //获取用户权限并存储到用户Session里
                PositionBll.GetInstence().SetUserPower(GetUserOnlineInfo(GetUserHashKey(), OnlineUsersTable.Position_Id) + "");
            }
            controlPower = SessionHelper.GetSession(PositionTable.ControlPower);
            return(controlPower + "");
        }
        /// <summary>
        /// 获取用户页面控件(按键)操作权限
        /// </summary>
        /// <returns></returns>
        public string GetControlPower()
        {
            //读取Session中存储的ControlPower值
            var controlPower = HttpContext.Current.Session[PositionTable.ControlPower];

            //如果为null
            if (controlPower == null)
            {
                //获取用户权限并存储到用户Session里
                PositionBll.GetInstence().SetUserPower(GetUserOnlineInfo(OnlineUsersTable.Position_Id) + "");
            }
            controlPower = HttpContext.Current.Session[PositionTable.ControlPower];
            return(controlPower + "");
        }
Example #5
0
        /// <summary>
        /// 判断用户是否超时退出(退出情况:1.系统更新,2.用户自动退出)
        /// </summary>
        public void IsTimeOut()
        {
            if (HttpContext.Current.Session == null || HttpContext.Current.Session[OnlineUsersTable.UserHashKey] == null)
            {
                try
                {
                    //不存在则表示Session失效了,重新从Cookies中加载
                    var userHashKey = CookieHelper.GetCookieValue(OnlineUsersTable.UserHashKey);
                    var md5         = CookieHelper.GetCookieValue(OnlineUsersTable.Md5);

                    //判断Cookies是否存在,存在则查询在线列表,重新获取用户信息
                    if (userHashKey.Length > 0 && md5.Length == 32)
                    {
                        //读取当前用户在线实体
                        var model = GetOnlineUsersModel(userHashKey);
                        //当前用户存在在线列表中
                        if (model != null)
                        {
                            //计算用户md5值
                            var key = GenerateMd5(model);

                            //判断用户的md5值是否正确
                            if (md5 == key)
                            {
                                //将UserHashKey存储到缓存中
                                HttpContext.Current.Session[OnlineUsersTable.UserHashKey] = userHashKey;
                                //获取用户权限并存储到用户Session里
                                PositionBll.GetInstence().SetUserPower(model.Position_Id);
                                //更新用户当前SessionId到在线表中
                                //UpdateUserOnlineInfo(model.Id + "", OnlineUsersTable.SessionId, HttpContext.Current.Session.SessionID);

                                return;
                            }
                            //添加用户下线记录
                            LoginLogBll.GetInstence().Save(model.Id, "用户【{0}】的账号已经在另一处登录,本次登陆下线!在线时间【{1}】");

                            //清除在线表里与当前用户同名的记录
                            Delete(null, x => x.Id == model.Id);

                            //清空Session
                            SessionHelper.RemoveSession(OnlineUsersTable.UserHashKey);
                            SessionHelper.RemoveSession(OnlineUsersTable.Md5);
                            SessionHelper.RemoveSession(PositionTable.PagePower);
                            SessionHelper.RemoveSession(PositionTable.ControlPower);
                            //删除Cookies
                            CookieHelper.ClearCookie(OnlineUsersTable.UserHashKey);
                            CookieHelper.ClearCookie(OnlineUsersTable.Md5);
                        }
                        else
                        {
                            //删除数据库记录与IIS缓存
                            Delete(null, x => x.UserHashKey == userHashKey);
                            //清空Session
                            SessionHelper.RemoveSession(OnlineUsersTable.UserHashKey);
                            SessionHelper.RemoveSession(OnlineUsersTable.Md5);
                            SessionHelper.RemoveSession(PositionTable.PagePower);
                            SessionHelper.RemoveSession(PositionTable.ControlPower);
                            //删除Cookies
                            CookieHelper.ClearCookie(OnlineUsersTable.UserHashKey);
                            CookieHelper.ClearCookie(OnlineUsersTable.Md5);
                        }
                    }
                }
                catch (Exception e)
                {
                    //出现异常,保存出错日志信息
                    CommonBll.WriteLog("", e);
                }

                //用户不存在,直接退出
                //FineUI.Alert.Show("当前用户登录已经过时或系统已更新,请重新登录!", "检测通知", MessageBoxIcon.Information, "top.location='Login.aspx'");
                //DotNet.Utilities.JsHelper.AlertAndParentUrl("当前用户登录已经过时或系统已更新,请重新登录!", "Login.aspx");
                HttpContext.Current.Response.Redirect("/WebManage/Login.aspx");
                HttpContext.Current.Response.End();
            }
        }