public virtual ReturnInfo <IList <FunctionInfo> > QueryUserOwnFunctionsByMenuCode([DisplayName2("用户ID"), Id] int userId, [DisplayName2("菜单编码"), Required] string menuCode, string connectionId = null) { if ("Role".Equals(AppConfig["User:PermissionBenchmark"])) { return(ExecReturnFuncAndConnectionId <IList <FunctionInfo> >((reInfo, connId) => { // 查找该用户所属角色 ReturnInfo <IList <RoleInfo> > reRoleInfo = UserRoleService.OwnRolesByUserId(userId, connId); if (reRoleInfo.Failure()) { reInfo.FromBasic(reRoleInfo); return null; } if (reRoleInfo.Data.IsNullOrCount0()) { return null; } int[] roleIds = new int[reRoleInfo.Data.Count]; for (var i = 0; i < roleIds.Length; i++) { roleIds[i] = reRoleInfo.Data[i].Id; } return RoleMenuFunctionPersistence.SelectFunctionsByMenuCodeAndRoleIds(menuCode, roleIds, connId); }, null, connectionId, AccessMode.SLAVE)); } else { return(ExecReturnFunc <IList <FunctionInfo> >((reInfo) => { return UserMenuFunctionPersistence.SelectFunctionsByMenuCodeAndUserId(menuCode, userId, connectionId); })); } }
/// <summary> /// 根据用户ID、菜单编码和功能编码集合判断用户是否有权限 /// </summary> /// <param name="userId">用户ID</param> /// <param name="menuCode">菜单编码</param> /// <param name="functionCodes">功能编码集合</param> /// <param name="connectionId">连接ID</param> /// <returns>返回信息</returns> public virtual ReturnInfo <bool> IsPermission([DisplayName2("用户ID"), Id] int userId, [DisplayName2("菜单编码"), Required] string menuCode, [DisplayName2("功能编码集合"), ArrayNotEmpty] string[] functionCodes, string connectionId = null) { if ("Role".Equals(AppConfig["User:PermissionBenchmark"])) { return(ExecReturnFuncAndConnectionId <bool>((reInfo, connId) => { // 查找该用户所属角色 ReturnInfo <IList <RoleInfo> > reRoleInfo = UserRoleService.OwnRolesByUserId(userId, connId); if (reRoleInfo.Failure()) { reInfo.FromBasic(reRoleInfo); return false; } if (reRoleInfo.Data.IsNullOrCount0()) { return false; } int[] roleIds = new int[reRoleInfo.Data.Count]; for (var i = 0; i < roleIds.Length; i++) { roleIds[i] = reRoleInfo.Data[i].Id; } if (RoleMenuFunctionPersistence.CountByMenuCodeAndFunctionCodesAndRoleIds(menuCode, functionCodes, roleIds, connId) > 0) { return true; } else { reInfo.SetCodeMsg(ErrCodeDefine.NOT_PERMISSION, "Sorry,您没有访问此功能权限!"); return false; } }, null, connectionId, AccessMode.SLAVE)); } else { return(ExecReturnFunc <bool>((reInfo) => { if (UserMenuFunctionPersistence.CountByMenuCodeAndFunctionCodesAndUserId(menuCode, functionCodes, userId, connectionId) > 0) { return true; } else { reInfo.SetCodeMsg(ErrCodeDefine.NOT_PERMISSION, "Sorry,您没有访问此功能权限!"); return false; } })); } }