using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Abp; using Abp.Dependency; using Abp.Domain.Repositories; using Abp.Runtime.Caching; using IwbZero; using IwbZero.Navigation; using ShwasherSys.Authorization.Users; using ShwasherSys.BaseSysInfo; namespace ShwasherSys.Navigation { public class NavigationManager : IwbNavigationManager { public NavigationManager(IRepository sysFunctionRepository, ICacheManager cacheManager, IIocResolver iocResolver) : base(sysFunctionRepository, cacheManager, iocResolver) { } public override async Task GetMenuAsync(UserIdentifier user) { if (!TryGetFuns(out var funs)) { funs = (await SysFunctionRepository.GetAllListAsync()).OrderBy(a=>a.Sort).ToList(); await CacheManager.GetCache(IwbZeroConsts.SysFunctionCache).SetAsync("SysFun", funs); } var menus = await GetMenuAsync(user, funs); return menus; } private bool TryGetFuns(out List funs) { funs = (List)CacheManager.GetCache(IwbZeroConsts.SysFunctionCache).GetOrDefault("SysFun") ?? new List(); return funs.Any(); } } }