/// <summary> /// 获取当前角色能访问的按钮 /// </summary> /// <param name="roleId"></param> /// <param name="currentUser"></param> /// <returns></returns> public async Task <BaseResponseModel> GetRoleMenuAsync(long roleId, UserCacheBo currentUser) { var menus = await SysMenuDao.GetMenusAsync(roleId, currentUser.TenantId); var result = MenuBll.GetMenuList(menus); return(new ResponseModel().Succeed(result)); }
/// <summary> /// 获取当前用户的原始权限 并设置缓存 /// </summary> /// <param name="currentUser"></param> /// <returns></returns> public async Task <List <MenuCacheBo> > GetCurrentMenuAsync(UserCacheBo currentUser) { var menuKey = $"{CacheKeys.MENU_TREE}{currentUser.UserId}"; var cacheMenus = await GetMenuTreeCacheAsync(menuKey); if (cacheMenus != null) { return(cacheMenus); } //从数据库中获取菜单树 由于菜单不经常变化故设置redis存储7天 本地缓存设置1天 var roleIds = currentUser.RoleCacheBos.Select(c => c.RoleId).ToList(); cacheMenus = await SysMenuDao.GetMenusAsync(roleIds, currentUser.TenantId); await RedisClient.SetAsync(menuKey, cacheMenus, new TimeSpan(7, 0, 0, 0)); Cache.Set(menuKey, cacheMenus, new TimeSpan(1, 0, 0, 0)); return(cacheMenus); }