Beispiel #1
0
        /// <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));
        }
Beispiel #2
0
        /// <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);
        }