398 lines
17 KiB
C#
398 lines
17 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 获取多项目系统
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
//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;
|
|
//}
|
|
|
|
///// <summary>
|
|
///// 获取本部和现场系统
|
|
///// </summary>
|
|
///// <returns></returns>
|
|
//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;
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 判断菜单是否存在
|
|
/// </summary>
|
|
/// <param name="postId"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 判断按键对应菜单是否存在
|
|
/// </summary>
|
|
/// <param name="postId"></param>
|
|
/// <returns></returns>
|
|
public static bool isExistButtonToMenu(string buttonToMenuId)
|
|
{
|
|
Model.Sys_ButtonToMenu b = Funs.DB.Sys_ButtonToMenu.FirstOrDefault(e => e.ButtonToMenuId == buttonToMenuId);
|
|
if (b != null)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
#region 获取当前人是否具有按钮操作权限
|
|
/// <summary>
|
|
/// 本项目用这个方法来获取按钮操作权限(不按项目角色和项目用户来获取按钮操作权限)
|
|
/// </summary>
|
|
/// <param name="userId">用户id</param>
|
|
/// <param name="menuId">按钮id</param>
|
|
/// <param name="buttonName">按钮名称</param>
|
|
/// <returns>是否具有权限</returns>
|
|
public static bool GetAllButtonPowerList(string userId, string menuId, string buttonName)
|
|
{
|
|
Model.EProjectDB 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.Sys_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.EProjectDB 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得到菜单列表
|
|
/// <summary>
|
|
/// 根据登陆id和系统id得到菜单列表
|
|
/// </summary>
|
|
/// <param name="userId"></param>
|
|
/// <param name="menuModule"></param>
|
|
/// <returns></returns>
|
|
//public static List<Model.Sys_Menu> GetMenu(string projectId, string userId, string menuModule)
|
|
//{
|
|
// List<Model.Sys_Menu> reMenuList = new List<Model.Sys_Menu>(); ////要返回的菜单列表
|
|
// 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;
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 本项目用这个方法来获取权限(不按项目角色和项目用户来获取权限)
|
|
/// </summary>
|
|
/// <param name="userId"></param>
|
|
/// <param name="menuModule"></param>
|
|
/// <returns></returns>
|
|
public static List<Model.Sys_Menu> GetMenuByRoleRower(string userId)
|
|
{
|
|
List<Model.Sys_Menu> reMenuList = new List<Model.Sys_Menu>(); ////要返回的菜单列表
|
|
var user = BLL.Sys_UserService.GetUsersByUserId(userId); ////用户
|
|
if (user != null)
|
|
{
|
|
if (user.UserId == Const.GlyId) //// 如果是管理员或者本部人员返回所有菜单
|
|
{
|
|
var sysMenu = from x in Funs.DB.Sys_Menu orderby x.SortIndex select x;
|
|
reMenuList = sysMenu.ToList();
|
|
}
|
|
else
|
|
{
|
|
var sysMenuRole = from x in Funs.DB.Sys_Menu
|
|
join y in Funs.DB.Sys_ButtonPower on x.MenuId equals y.MenuId
|
|
where y.RoleId == user.RoleId
|
|
orderby x.SortIndex
|
|
select x;
|
|
reMenuList = sysMenuRole.ToList();
|
|
|
|
// PM,EM,CM权限特殊处理
|
|
List<string> pm = (from x in Funs.DB.Editor_EProject select x.ProjectControl_ProjectManagerId).ToList();
|
|
List<string> cm = (from x in Funs.DB.Editor_EProject select x.ProjectControl_ConstManagerId).ToList();
|
|
List<string> em = (from x in Funs.DB.Editor_EProject select x.ProjectControl_EMManagerId).ToList();
|
|
if (pm.Contains(user.UserId) || em.Contains(user.UserId))
|
|
{
|
|
Model.Sys_Menu addSupMenu = (from x in Funs.DB.Sys_Menu where x.MenuId == "1FA19FE4-D8B9-4D1B-8EB0-CAC05B71AFBB" select x).First();
|
|
Model.Sys_Menu addMenu = (from x in Funs.DB.Sys_Menu where x.MenuId == Const.PMEditorMenuId select x).First();
|
|
reMenuList.Add(addMenu);
|
|
}
|
|
if (cm.Contains(user.UserId))
|
|
{
|
|
Model.Sys_Menu addSupMenu = (from x in Funs.DB.Sys_Menu where x.MenuId == "1FA19FE4-D8B9-4D1B-8EB0-CAC05B71AFBB" select x).First();
|
|
Model.Sys_Menu addMenu = (from x in Funs.DB.Sys_Menu where x.MenuId == Const.CMEditorMenuId select x).First();
|
|
reMenuList.Add(addMenu);
|
|
}
|
|
|
|
// 对资源模块的特殊处理:CTE/M具有RP权限
|
|
if (user.DepartId == Const.CTEM_DepartId)
|
|
{
|
|
Model.Sys_Menu addSupMenu = (from x in Funs.DB.Sys_Menu where x.MenuId == "72CDB9E2-F44B-4F96-A578-3271211FDC15" select x).First();
|
|
Model.Sys_Menu addMenu = (from x in Funs.DB.Sys_Menu where x.MenuId == Const.ResourcePlanMenuId select x).First();
|
|
reMenuList.Add(addSupMenu);
|
|
reMenuList.Add(addMenu);
|
|
}
|
|
|
|
}
|
|
}
|
|
reMenuList = reMenuList.Distinct().OrderBy(x => x.SortIndex).ToList();
|
|
return reMenuList;
|
|
}
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
/// Base64加密
|
|
/// </summary>
|
|
/// <param name="Message"></param>
|
|
/// <returns></returns>
|
|
public static string Base64Code(string Message)
|
|
{
|
|
byte[] bytes = Encoding.Default.GetBytes(Message);
|
|
return Convert.ToBase64String(bytes);
|
|
}
|
|
/// <summary>
|
|
/// Base64解密
|
|
/// </summary>
|
|
/// <param name="message"></param>
|
|
/// <returns></returns>
|
|
public static string Base64Decode(string message)
|
|
{
|
|
byte[] bytes = Convert.FromBase64String(message);
|
|
return Encoding.Default.GetString(bytes);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取用户菜单按钮权限
|
|
/// </summary>
|
|
/// <param name="userId"></param>
|
|
/// <param name="menuId"></param>
|
|
/// <returns></returns>
|
|
public static List<string> GetAllButtonList(string userId, string menuId)
|
|
{
|
|
Model.EProjectDB db = Funs.DB;
|
|
List<string> buttonList = new List<string>();
|
|
List<Model.Sys_ButtonToMenu> buttons = new List<Model.Sys_ButtonToMenu>();
|
|
if (userId == Const.GlyId)
|
|
{
|
|
buttons = (from x in db.Sys_ButtonToMenu
|
|
where x.MenuId == menuId
|
|
select x).ToList();
|
|
}
|
|
else
|
|
{
|
|
var user = BLL.Sys_UserService.GetUsersByUserId(userId); ////用户
|
|
if (user != null)
|
|
{
|
|
buttons = (from x in db.Sys_ButtonToMenu
|
|
join y in db.Sys_ButtonPower on x.ButtonToMenuId equals y.ButtonToMenuId
|
|
where y.RoleId == user.RoleId && y.MenuId == menuId && x.MenuId == menuId
|
|
select x).ToList();
|
|
}
|
|
}
|
|
|
|
if (buttons.Count() > 0)
|
|
{
|
|
buttonList = buttons.Select(x => x.ButtonEnName).ToList();
|
|
}
|
|
return buttonList;
|
|
}
|
|
}
|
|
} |