NavigationManager.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using Abp;
  5. using Abp.Dependency;
  6. using Abp.Domain.Repositories;
  7. using Abp.Runtime.Caching;
  8. using IwbZero;
  9. using IwbZero.Navigation;
  10. using ShwasherSys.Authorization.Users;
  11. using ShwasherSys.BaseSysInfo;
  12. namespace ShwasherSys.Navigation
  13. {
  14. public class NavigationManager : IwbNavigationManager<SysFunction, SysUser>
  15. {
  16. public NavigationManager(IRepository<SysFunction, int> sysFunctionRepository, ICacheManager cacheManager, IIocResolver iocResolver) : base(sysFunctionRepository, cacheManager, iocResolver)
  17. {
  18. }
  19. public override async Task<IwbUserMenu> GetMenuAsync(UserIdentifier user)
  20. {
  21. if (!TryGetFuns(out var funs))
  22. {
  23. funs = (await SysFunctionRepository.GetAllListAsync()).OrderBy(a=>a.Sort).ToList();
  24. await CacheManager.GetCache(IwbZeroConsts.SysFunctionCache).SetAsync("SysFun", funs);
  25. }
  26. var menus = await GetMenuAsync(user, funs);
  27. return menus;
  28. }
  29. private bool TryGetFuns(out List<SysFunction> funs)
  30. {
  31. funs = (List<SysFunction>)CacheManager.GetCache(IwbZeroConsts.SysFunctionCache).GetOrDefault("SysFun") ??
  32. new List<SysFunction>();
  33. return funs.Any();
  34. }
  35. }
  36. }