郑州市第一人民医院

Sys_User_AccountRepository.cs 3.4KB

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