/*********************************************************************** * 自定义函数 * ***********************************************************************/ #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(); } }
/// <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 + ""); }
/// <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(); } }