| | |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (model == null) throw Oops.Oh(EnumErrorCodeType.s404, "该菜单"); |
| | | var items = await (from m in repMenu.AsQueryable().AsNoTracking() |
| | | join rm in repRoleMenu.AsQueryable().AsNoTracking() on m.Id equals rm.MenuId |
| | | join ur in repUserInfoRole.AsQueryable().AsNoTracking() on rm.RoleId equals ur.RoleId |
| | | where m.ParentId == request.Id && ur.UserInfoId == logier.UserInfoId && !m.IsDisabled |
| | | join rm in repRoleMenu.AsQueryable().AsNoTracking() on m.Id equals rm.MenuId into rmg |
| | | from rmgi in rmg.DefaultIfEmpty() |
| | | join ur in repUserInfoRole.AsQueryable().AsNoTracking() on rmgi.RoleId equals ur.RoleId into urg |
| | | from urgi in urg.DefaultIfEmpty() |
| | | where m.ParentId == request.Id && (logier.Level == 999 || urgi.UserInfoId == logier.UserInfoId) && !m.IsDisabled |
| | | && (m.Type == EnumMenuType.Button || m.Type == EnumMenuType.Field) |
| | | select m).ProjectToType<GetMenuQueryResultItem>().ToListAsync(cancellationToken); |
| | | model.Groups = items.GroupBy(it => it.Group ?? "default") |