using QM.AuthServer.IRepository; using QM.AuthServer.Models.Menus; using QM.AuthServer.Models.Roles; using QM.AuthServer.Models.Users; using QM.OrmSqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using WS; using WS.Orm; namespace QM.AuthServer.Repository { public class SysUserRepository : SqlSugarRepository, ISysUserRepository { private readonly ISysMenuRepository _iSysMenuRepository; public SysUserRepository(ISysMenuRepository iSysMenuRepository) { _iSysMenuRepository = iSysMenuRepository; } /// /// 获取用户菜单-带岗位 /// /// /// public async Task> GetUserMenu(AuthoDto parm) { var data = new List(); //根据用户查询角色列表(行政区级别) if (parm.User == SysInfo.SYS_USER) { data = await _iSysMenuRepository.GetListAsync(t => t.state == EnumState.Enable); } else { data = await _iSysMenuRepository.DbClient().Queryable( (sm, srm, sr, sur) => sm.mid == srm.mid && srm.gid == sr.gid && sr.gid == sur.gid) .Where((sm, srm, sr, sur) => sur.uid == parm.User && sr.state == EnumState.Enable && sm.state == EnumState.Enable) .Select((sm) => sm) .OrderBy((sm) => sm.sort).ToListAsync(); } var pids = data.Select(t => t.pid); var pmenus = await _iSysMenuRepository.GetListAsync(t => pids.Contains(t.mid)); foreach (var item in pmenus) { var temp = data.Where(t => t.mid == item.mid).FirstOrDefault(); if (temp == null) data.Add(item); } data = data.OrderBy(t => t.sort).ToList(); return data; } /// /// 获取用户菜单 /// /// /// 菜单类型(-1:所有 0:后台 1:前端) /// public async Task> GetUserMenu(string uid, int type = 1) { var list = new List (); if (uid == "admin") { list = await Db.Queryable() .Where(t => t.state == EnumState.Enable) .WhereIF(type != -1, t => t.type == type) .OrderBy((t) => t.sort).ToListAsync(); } else { list = await Db.Queryable( (sm, srm) => sm.mid == srm.mid) .Where((sm, srm) => srm.uid == uid && sm.state == EnumState.Enable) .WhereIF(type != -1, (sm, srm) => sm.type == type) .Select((sm) => sm) .OrderBy((sm) => sm.sort).ToListAsync(); } return list; } } }