SysUserRepository.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using QM.AuthServer.IRepository;
  2. using QM.AuthServer.Models.Menus;
  3. using QM.AuthServer.Models.Roles;
  4. using QM.AuthServer.Models.Users;
  5. using QM.OrmSqlSugar;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Threading.Tasks;
  10. using WS;
  11. using WS.Orm;
  12. namespace QM.AuthServer.Repository
  13. {
  14. public class SysUserRepository : SqlSugarRepository<SysUser>, ISysUserRepository
  15. {
  16. private readonly ISysMenuRepository _iSysMenuRepository;
  17. public SysUserRepository(ISysMenuRepository iSysMenuRepository)
  18. {
  19. _iSysMenuRepository = iSysMenuRepository;
  20. }
  21. /// <summary>
  22. /// 获取用户菜单-带岗位
  23. /// </summary>
  24. /// <param name="parm"></param>
  25. /// <returns></returns>
  26. public async Task<List<SysMenu>> GetUserMenu(AuthoDto parm)
  27. {
  28. var data = new List<SysMenu>();
  29. //根据用户查询角色列表(行政区级别)
  30. if (parm.User == SysInfo.SYS_USER)
  31. {
  32. data = await _iSysMenuRepository.GetListAsync(t => t.state == EnumState.Enable);
  33. }
  34. else
  35. {
  36. data = await _iSysMenuRepository.DbClient().Queryable<SysMenu, SysPostMenu, SysPost, SysUserPost>(
  37. (sm, srm, sr, sur) =>
  38. sm.mid == srm.mid && srm.gid == sr.gid && sr.gid == sur.gid)
  39. .Where((sm, srm, sr, sur) => sur.uid == parm.User
  40. && sr.state == EnumState.Enable
  41. && sm.state == EnumState.Enable)
  42. .Select((sm) => sm)
  43. .OrderBy((sm) => sm.sort).ToListAsync();
  44. }
  45. var pids = data.Select(t => t.pid);
  46. var pmenus = await _iSysMenuRepository.GetListAsync(t => pids.Contains(t.mid));
  47. foreach (var item in pmenus)
  48. {
  49. var temp = data.Where(t => t.mid == item.mid).FirstOrDefault();
  50. if (temp == null)
  51. data.Add(item);
  52. }
  53. data = data.OrderBy(t => t.sort).ToList();
  54. return data;
  55. }
  56. /// <summary>
  57. /// 获取用户菜单
  58. /// </summary>
  59. /// <param name="uid"></param>
  60. /// <param name="type">菜单类型(-1:所有 0:后台 1:前端)</param>
  61. /// <returns></returns>
  62. public async Task<List<SysMenu>> GetUserMenu(string uid, int type = 1)
  63. {
  64. var list = new List<SysMenu> ();
  65. if (uid == "admin")
  66. {
  67. list = await Db.Queryable<SysMenu>()
  68. .Where(t => t.state == EnumState.Enable)
  69. .WhereIF(type != -1, t => t.type == type)
  70. .OrderBy((t) => t.sort).ToListAsync();
  71. }
  72. else
  73. {
  74. list = await Db.Queryable<SysMenu, SysUserMenu>(
  75. (sm, srm) => sm.mid == srm.mid)
  76. .Where((sm, srm) => srm.uid == uid && sm.state == EnumState.Enable)
  77. .WhereIF(type != -1, (sm, srm) => sm.type == type)
  78. .Select((sm) => sm)
  79. .OrderBy((sm) => sm.sort).ToListAsync();
  80. }
  81. return list;
  82. }
  83. }
  84. }