郑州市第一人民医院

Sys_User_AccountRepository.cs 3.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using DistributionApi.IRepositories;
  2. using MadRunFabric.Common;
  3. using MadRunFabric.Common.Options;
  4. using MadRunFabric.Model;
  5. using Microsoft.Extensions.Logging;
  6. using Microsoft.Extensions.Options;
  7. using MongoDB.Driver;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Text;
  11. using System.Linq;
  12. namespace DistributionApi.Repositories
  13. {
  14. public class Sys_User_AccountRepository : BaseRepository<Sys_User_Account, string>, ISys_User_AccountRepository
  15. {
  16. protected readonly ILogger<BaseRepository<Sys_User_Account, string>> _logger;
  17. protected readonly IMongoCollection<Sys_Role_Info> _collection_sysroleinfo;
  18. public Sys_User_AccountRepository(
  19. IOptions<MongodbOptions> settings,
  20. ILogger<BaseRepository<Sys_User_Account, string>> logger) : base(settings, logger)
  21. {
  22. _logger = logger;
  23. _collection_sysroleinfo = _context.GetCollection<Sys_Role_Info>();
  24. }
  25. /// <summary>
  26. /// Linq 关联查询详情
  27. /// </summary>
  28. /// <param name="id"></param>
  29. /// <returns></returns>
  30. public object GetUserInfo(string usercode, string allprojectrole)
  31. {
  32. //关联查询
  33. var querys =
  34. from usa in _collection.AsQueryable()
  35. join role in _collection_sysroleinfo.AsQueryable() on usa.role_id equals role.id into roleinfo
  36. where usa.delete_flag == false && usa.usercode == usercode
  37. orderby usa.create_time descending
  38. select new
  39. {
  40. usa.id,
  41. usa.username,
  42. usa.usercode,
  43. usa.mobile,
  44. usa.type,
  45. usa.role_id,
  46. role_name = roleinfo.Count() > 0 ? roleinfo.First().role_name : null,
  47. role_code = roleinfo.Count() > 0 ? roleinfo.First().role_code : null,
  48. usa.seat_level,
  49. usa.postlist,
  50. usa.projectlist
  51. };
  52. var userinfo = querys.FirstOrDefault();
  53. if (userinfo != null)
  54. {
  55. int level = 0;
  56. switch (userinfo.role_code)
  57. {
  58. case "YWYG": level = 1; break;
  59. case "YWZG": level = 2; break;
  60. case "YWFJL": level = 3; break;
  61. case "YWJL": level = 4; break;
  62. case "YWZJ": level = 5; break;
  63. case "CJGL": level = 6; break;
  64. case "XTWH": level = 7; break;
  65. }
  66. int isallproject = 0;
  67. if (allprojectrole.Split("|").Contains(userinfo.role_code) || userinfo.type == 2)
  68. {
  69. isallproject = 1;
  70. }
  71. var model = new
  72. {
  73. id = userinfo.id,
  74. username = userinfo.username,
  75. usercode = userinfo.usercode,
  76. mobile = userinfo.mobile,
  77. level = level,
  78. type = userinfo.type,
  79. role_id = userinfo.role_id,
  80. role_name = userinfo.role_name,
  81. role_code = userinfo.role_code,
  82. isallproject = isallproject,
  83. projectlist = userinfo.projectlist
  84. };
  85. return model;
  86. }
  87. return null;
  88. }
  89. }
  90. }