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);
}
}
}