1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- 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<SysUser>, ISysUserRepository
- {
- private readonly ISysMenuRepository _iSysMenuRepository;
- public SysUserRepository(ISysMenuRepository iSysMenuRepository)
- {
- _iSysMenuRepository = iSysMenuRepository;
- }
- /// <summary>
- /// 获取用户菜单-带岗位
- /// </summary>
- /// <param name="parm"></param>
- /// <returns></returns>
- public async Task<List<SysMenu>> GetUserMenu(AuthoDto parm)
- {
- var data = new List<SysMenu>();
- //根据用户查询角色列表(行政区级别)
- if (parm.User == SysInfo.SYS_USER)
- {
- data = await _iSysMenuRepository.GetListAsync(t => t.state == EnumState.Enable);
- }
- else
- {
- data = await _iSysMenuRepository.DbClient().Queryable<SysMenu, SysPostMenu, SysPost, SysUserPost>(
- (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;
- }
- /// <summary>
- /// 获取用户菜单
- /// </summary>
- /// <param name="uid"></param>
- /// <param name="type">菜单类型(-1:所有 0:后台 1:前端)</param>
- /// <returns></returns>
- public async Task<List<SysMenu>> GetUserMenu(string uid, int type = 1)
- {
- var list = new List<SysMenu> ();
- if (uid == "admin")
- {
- list = await Db.Queryable<SysMenu>()
- .Where(t => t.state == EnumState.Enable)
- .WhereIF(type != -1, t => t.type == type)
- .OrderBy((t) => t.sort).ToListAsync();
- }
- else
- {
- list = await Db.Queryable<SysMenu, SysUserMenu>(
- (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;
- }
- }
- }
|