危险源管理模块接入真实数据库:新增危大/超危工程、风险控制清单、安全验收、安全巡检、临时用电管理(含前端页面、BLL/API服务、WebAPI控制器、Model项、SQL脚本与接口文档)
排除 CreateModel.bat(含明文sa密码与本地服务器名,未入库)
This commit is contained in:
@@ -24,9 +24,12 @@ namespace FineUIPro.Web
|
||||
#region Page_Init
|
||||
|
||||
private string _menuType = "menu";
|
||||
public string cssMessage = "";
|
||||
private int _examplesCount = 0;
|
||||
private string _searchText = "";
|
||||
private HashSet<string> _userPowerMenuIds; // 当前用户有权限的菜单ID集合
|
||||
private Dictionary<string, string> _menuTypeMap; // 菜单ID -> 菜单类型 缓存
|
||||
private bool _menuPowerLoaded = false; // 菜单权限是否已加载
|
||||
private bool _isAdminUser = false; // 是否系统管理员
|
||||
public string User_Id
|
||||
{
|
||||
get
|
||||
@@ -82,7 +85,11 @@ namespace FineUIPro.Web
|
||||
////////////////////////////////////////////////////////////////
|
||||
if (!IsPostBack)
|
||||
{
|
||||
|
||||
if (this.CurrUser == null)
|
||||
{
|
||||
PageBase.PageRefresh(Request.ApplicationPath + "/Login.aspx");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -326,11 +333,81 @@ namespace FineUIPro.Web
|
||||
XmlAttribute isNewAttr = node.Attributes["id"];
|
||||
if (isNewAttr != null)
|
||||
{
|
||||
result = BLL.CommonService.ReturnMenuByUserIdMenuId(this.CurrUser.UserId, isNewAttr.Value.ToString(), this.CurrUser.LoginProjectId);
|
||||
EnsureMenuPowerLoaded();
|
||||
string menuId = isNewAttr.Value.ToString();
|
||||
if (_isAdminUser || _userPowerMenuIds.Contains(menuId))
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 个人设置类菜单始终显示(与原 ReturnMenuByUserIdMenuId 逻辑一致)
|
||||
string menuType;
|
||||
result = _menuTypeMap.TryGetValue(menuId, out menuType) && menuType == Const.Menu_Personal;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 一次性加载当前用户在当前项目下的菜单权限,避免每个菜单节点重复查询数据库(N+1)。
|
||||
/// 判定逻辑与逐节点调用 BLL.CommonService.ReturnMenuByUserIdMenuId 保持一致。
|
||||
/// </summary>
|
||||
private void EnsureMenuPowerLoaded()
|
||||
{
|
||||
if (_menuPowerLoaded)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_menuPowerLoaded = true;
|
||||
|
||||
_isAdminUser = this.CurrUser.UserId == Const.sysglyId || this.CurrUser.UserId == Const.hfnbdId || this.CurrUser.UserId == Const.sedinId;
|
||||
_userPowerMenuIds = new HashSet<string>();
|
||||
if (_isAdminUser)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 缓存菜单ID -> 菜单类型(个人设置菜单特判用)
|
||||
try
|
||||
{
|
||||
_menuTypeMap = Funs.DB.Sys_Menu.GroupBy(m => m.MenuId).ToDictionary(g => g.Key, g => g.First().MenuType);
|
||||
}
|
||||
catch
|
||||
{
|
||||
_menuTypeMap = new Dictionary<string, string>();
|
||||
}
|
||||
|
||||
var getUser = Funs.DB.Sys_User.FirstOrDefault(x => x.UserId == this.CurrUser.UserId);
|
||||
if (getUser == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
List<string> powerMenuIds;
|
||||
if (string.IsNullOrEmpty(this.CurrUser.LoginProjectId))
|
||||
{
|
||||
if (string.IsNullOrEmpty(getUser.RoleId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
powerMenuIds = Funs.DB.Sys_RolePower.Where(x => x.RoleId == getUser.RoleId).Select(x => x.MenuId).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
List<string> roleIdList = UserService.GetRoleListByProjectIdUserId(this.CurrUser.LoginProjectId, this.CurrUser.UserId);
|
||||
powerMenuIds = Funs.DB.Sys_RolePower.Where(x => roleIdList.Contains(x.RoleId)).Select(x => x.MenuId).ToList();
|
||||
}
|
||||
|
||||
foreach (string menuId in powerMenuIds)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(menuId))
|
||||
{
|
||||
_userPowerMenuIds.Add(menuId);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region GetIsNewHtml 是否必填项
|
||||
@@ -365,12 +442,6 @@ namespace FineUIPro.Web
|
||||
/// <param name="e"></param>
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
var getDataList = Funs.DB.Sp_Main_GetToDoItems(this.CurrUser.UserId, CurrUser.LoginProjectId).ToList();
|
||||
if (getDataList.Count == 0)
|
||||
{
|
||||
cssMessage = "style='display: none'";
|
||||
}
|
||||
if (!IsPostBack)
|
||||
{
|
||||
string needProjectId = "";
|
||||
|
||||
Reference in New Issue
Block a user