using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Web.UI.WebControls; namespace BLL { public class CommonService { /// /// 获取多项目系统 /// /// public static ListItem[] GetIsMoreProjectSystemList() { var q = (from x in Funs.DB.Sys_System where x.IsMoreProject == true && x.IsEnable == true orderby x.SorIndex select x).ToList(); ListItem[] lis = new ListItem[q.Count()]; for (int i = 0; i < q.Count(); i++) { lis[i] = new ListItem(q[i].SystemName ?? "", q[i].SystemId); } return lis; } /// /// 获取本部和现场系统 /// /// public static ListItem[] GetHeadAndProjectSystemList(string systemId) { var system = (from x in Funs.DB.Sys_System where x.IsEnable == true orderby x.SorIndex select x).ToList(); if (systemId != Const.System_1) { string projectSystemId = (Funs.GetNewInt(systemId) + 1).ToString(); system = system = system.Where(x => (x.SystemId == systemId || x.SystemId == projectSystemId)).OrderBy(x => x.SorIndex).ToList(); } ListItem[] lis = new ListItem[system.Count()]; for (int i = 0; i < system.Count(); i++) { lis[i] = new ListItem(system[i].SystemName ?? "", system[i].SystemId); } return lis; } /// /// 判断菜单是否存在 /// /// /// public static bool IsExistMenu(string menuId) { Model.Sys_Menu m = Funs.DB.Sys_Menu.FirstOrDefault(e => e.MenuId == menuId); if (m != null) { return true; } else { return false; } } /// /// 判断按键对应菜单是否存在 /// /// /// public static bool isExistButtonToMenu(string buttonToMenuId) { Model.ButtonToMenu b = Funs.DB.ButtonToMenu.FirstOrDefault(e => e.ButtonToMenuId == buttonToMenuId); if (b != null) { return true; } else { return false; } } #region 获取当前人是否具有按钮操作权限 /// /// 本项目用这个方法来获取按钮操作权限(不按项目角色和项目用户来获取按钮操作权限) /// /// 用户id /// 按钮id /// 按钮名称 /// 是否具有权限 public static bool GetAllButtonPowerList(string projectId, string userId, string menuId, string buttonName) { Model.SGGLDB db = Funs.DB; bool isPower = false; ////定义是否具备按钮权限 var user = BLL.Sys_UserService.GetUsersByUserId(userId); ////用户 if (user != null) { if (user.UserId == Const.GlyId) { isPower = true; } // 根据角色判断是否有按钮权限 if (!string.IsNullOrEmpty(user.RoleId) && !isPower) { var buttonToMenu = from x in db.ButtonToMenu join y in db.Sys_ButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId where y.RoleId == user.RoleId && y.MenuId == menuId && x.ButtonName == buttonName && x.MenuId == menuId select x; if (buttonToMenu.Count() > 0) { isPower = true; } } } return isPower; } // 分项目时使用 public static bool GetAllButtonPowerList1(string projectId, string userId, string menuId, string buttonName) { Model.SGGLDB db = Funs.DB; bool isPower = false; ////定义是否具备按钮权限 if (buttonName == Const.BtnSelect) { return true; } var pro = BLL.Base_ProjectService.GetProjectByProjectId(projectId); if (pro != null && pro.IsClosed == true) { return false; } var user = BLL.Sys_UserService.GetUsersByUserId(userId); ////用户 if (user != null) { if (user.UserId == Const.GlyId) { isPower = true; } ////根据角色判断是否有按钮权限 if (string.IsNullOrEmpty(projectId) && !string.IsNullOrEmpty(user.RoleId) && !isPower) { var buttonToMenu = from x in db.ButtonToMenu join y in db.Sys_ButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId where y.RoleId == user.RoleId && y.MenuId == menuId && x.ButtonName == buttonName && x.MenuId == menuId select x; if (buttonToMenu.Count() > 0) { isPower = true; } } ////项目不为空的时候 if (!string.IsNullOrEmpty(projectId) && !isPower) { ////判断项目用户是否具有按钮权限 var userButtonToMenu = from x in db.ButtonToMenu join y in db.Project_UserButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId where y.UserId == userId && y.MenuId == menuId && y.ProjectId == projectId && x.ButtonName == buttonName && x.MenuId == menuId select x; if (userButtonToMenu.Count() > 0) { isPower = true; } if (!isPower) { ////判断项目角色是否具有按钮权限 var projectRoleId = BLL.Project_UserService.GetProjectRoleIdByUserId(projectId, userId); ////项目用户角色 if (!string.IsNullOrEmpty(projectRoleId)) ////根据角色判断是否有按钮权限 { var pbuttonToMenu = from x in db.ButtonToMenu join y in db.Project_RoleButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId where y.RoleId == projectRoleId && y.MenuId == menuId && y.ProjectId == projectId && x.ButtonName == buttonName && x.MenuId == menuId select x; if (pbuttonToMenu.Count() > 0) { isPower = true; } } } } } return isPower; } #endregion #region 根据登陆id和系统id得到菜单列表 /// /// 根据登陆id和系统id得到菜单列表 /// /// /// /// public static List GetMenu(string projectId, string userId, string menuModule) { List reMenuList = new List(); ////要返回的菜单列表 var user = BLL.Sys_UserService.GetUsersByUserId(userId); ////用户 if (user != null) { if (user.UserId == Const.GlyId) //// 如果是管理员或者本部人员返回所有菜单 { var sysMenu = from x in Funs.DB.Sys_Menu where x.MenuModule == menuModule orderby x.SortIndex select x; reMenuList = sysMenu.ToList(); } else { if (string.IsNullOrEmpty(projectId)) { ////得到非项目菜单 var sysMenuRole = from x in Funs.DB.Sys_Menu join y in Funs.DB.Sys_RolePower on x.MenuId equals y.MenuId where x.MenuModule == menuModule && y.RoleId == user.RoleId orderby x.SortIndex select x; reMenuList = sysMenuRole.ToList(); } else { // 项目角色 权限菜单 var projectUser = BLL.Project_UserService.GetProject_UserByProjectIdUserId(projectId, userId); if (projectUser != null) { var sysMenuProjectRole = from x in Funs.DB.Sys_Menu join y in Funs.DB.Project_RolePower on x.MenuId equals y.MenuId where x.MenuModule == menuModule && y.RoleId == projectUser.RoleId && y.ProjectId == projectId orderby x.SortIndex select x; if (sysMenuProjectRole.Count() > 0) { reMenuList.AddRange(sysMenuProjectRole); } } // 项目人员 权限菜单 var sysMenuProjectUser = from x in Funs.DB.Sys_Menu join y in Funs.DB.Project_UserPower on x.MenuId equals y.MenuId where x.MenuModule == menuModule && y.UserId == user.UserId && y.ProjectId == projectId orderby x.SortIndex select x; if (sysMenuProjectUser.Count() > 0) { reMenuList.AddRange(sysMenuProjectUser); } } } } //var deskMenu = GetDeskDesktopMenuId(menuModule); //if (deskMenu != null) //{ // // 得到首页导航菜单列表 用于空权限登陆加载 // var sysMenuDesk = from x in Funs.DB.Sys_Menu where deskMenu.Contains(x.MenuId) select x; // reMenuList.AddRange(sysMenuDesk); //} reMenuList = reMenuList.Distinct().OrderBy(x => x.SortIndex).ToList(); ////对于菜单集合 去重复返回 return reMenuList; } /// /// 本项目用这个方法来获取权限(不按项目角色和项目用户来获取权限) /// /// /// /// public static List GetMenuByRoleRower(string userId, string menuModule) { List reMenuList = new List(); ////要返回的菜单列表 var user = BLL.Sys_UserService.GetUsersByUserId(userId); ////用户 if (user != null) { if (user.UserId == Const.GlyId) //// 如果是管理员或者本部人员返回所有菜单 { var sysMenu = from x in Funs.DB.Sys_Menu where x.MenuModule == menuModule orderby x.SortIndex select x; reMenuList = sysMenu.ToList(); } else { var sysMenuRole = from x in Funs.DB.Sys_Menu join y in Funs.DB.Sys_RolePower on x.MenuId equals y.MenuId where x.MenuModule == menuModule && y.RoleId == user.RoleId orderby x.SortIndex select x; reMenuList = sysMenuRole.ToList(); ////对于菜单集合 去重复返回 } } reMenuList = reMenuList.Distinct().OrderBy(x => x.SortIndex).ToList(); return reMenuList; } #endregion /// /// 抽取权限到项目 /// /// public static void ExtractionPower(string projectId) { /////增加项目上这个角色的菜单权限 var rolePower = from x in Funs.DB.Sys_RolePower join y in Funs.DB.Sys_Menu on x.MenuId equals y.MenuId where (y.MenuModule == Const.System_3 || y.MenuModule == Const.System_5) select x; if (rolePower.Count() > 0) { foreach (var roleItem in rolePower) { var proRolePower = Funs.DB.Project_RolePower.FirstOrDefault(x => x.ProjectId == projectId && x.RoleId == roleItem.RoleId && x.MenuId == roleItem.MenuId); if (proRolePower == null) { Model.Project_RolePower newPower = new Model.Project_RolePower(); newPower.RoleId = roleItem.RoleId; newPower.ProjectId =projectId; newPower.MenuId = roleItem.MenuId; BLL.Project_RolePowerService.SaveProject_RolePower(newPower); } } } /////增加项目上这个角色的按钮权限 var buttonPower = from x in Funs.DB.Sys_ButtonPower join y in Funs.DB.Sys_Menu on x.MenuId equals y.MenuId where (y.MenuModule == Const.System_3 || y.MenuModule == Const.System_5) select x; if (buttonPower.Count() > 0) { foreach (var buttonItem in buttonPower) { var proButtonPower = Funs.DB.Project_RoleButtonPower.FirstOrDefault(x => x.ProjectId == projectId && x.RoleId == buttonItem.RoleId && x.MenuId == buttonItem.MenuId && x.ButtonToMenuId == buttonItem.ButtonToMenuId); if (proButtonPower == null) { Model.Project_RoleButtonPower newRoleButtonPower = new Model.Project_RoleButtonPower(); newRoleButtonPower.RoleId = buttonItem.RoleId; newRoleButtonPower.ProjectId = projectId; newRoleButtonPower.MenuId = buttonItem.MenuId; newRoleButtonPower.ButtonToMenuId = buttonItem.ButtonToMenuId; BLL.Project_RoleButtonPowerService.SaveProject_RoleButtonPower(newRoleButtonPower); } } } } /// /// Base64加密 /// /// /// public static string Base64Code(string Message) { byte[] bytes = Encoding.Default.GetBytes(Message); return Convert.ToBase64String(bytes); } /// /// Base64解密 /// /// /// public static string Base64Decode(string message) { byte[] bytes = Convert.FromBase64String(message); return Encoding.Default.GetString(bytes); } } }