ACLUserRelationService.cs 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using Mapster;
  2. using SqlSugar;
  3. using System.Text;
  4. using WMS.BZModels.Dto.UserCenterManager.AclUserRelationDtos;
  5. using WMS.BZModels.Dto.UserCenterManager.UserInfoDtos;
  6. using WMS.BZModels.Models.UserCenterManager;
  7. using WMS.BZSqlSugar;
  8. namespace WMS.BZServices.UserCenterManager
  9. {
  10. public class ACLUserRelationService
  11. {
  12. private readonly Repository<AclUserRelation> _aclUserRelationRepository;
  13. private readonly Repository<AclUserInfo> _acluserInfoRepository;
  14. public ACLUserRelationService(Repository<AclUserRelation> aclUserRelationRepository, Repository<AclUserInfo> acluserInfoRepository)
  15. {
  16. _aclUserRelationRepository = aclUserRelationRepository;
  17. _acluserInfoRepository = acluserInfoRepository;
  18. }
  19. /// <summary>
  20. /// 获取对象主键列表信息
  21. /// </summary>
  22. /// <param name="userId">用户主键</param>
  23. /// <param name="category">分类:1-角色2-用户组</param>
  24. /// <returns></returns>
  25. public IEnumerable<AclUserRelationDto> GetObjectIdList(long userId, int category = 0)
  26. {
  27. var predicate = Expressionable.Create<AclUserRelation>();
  28. predicate = predicate.AndIF(category>0, m => m.ObjectTypeNum == category);
  29. predicate = predicate.AndIF(userId > 0, m => m.UserId == userId);
  30. return _aclUserRelationRepository.Queryable().Where(predicate.ToExpression()).ToList().Adapt<List<AclUserRelationDto>>();
  31. }
  32. /// <summary>
  33. /// 获取对象主键列表信息
  34. /// </summary>
  35. /// <param name="userId">用户主键</param>
  36. /// <param name="category">分类:1-角色2-岗位</param>
  37. /// <returns></returns>
  38. public string GetObjectIds(long userId, int category)
  39. {
  40. StringBuilder sb = new StringBuilder();
  41. var list = GetObjectIdList(userId);
  42. foreach (var item in list)
  43. {
  44. if (sb.Length > 0)
  45. {
  46. sb.Append(",");
  47. }
  48. sb.Append(item.ObjectId);
  49. }
  50. return sb.ToString();
  51. }
  52. public List<AclUserinfoListDto> GetUserList(string objectno, ACLObjType ACLObjType)
  53. {
  54. if (!long.TryParse(objectno, out long id))
  55. {
  56. throw new ArgumentException("参数错误。");
  57. }
  58. var predicate = Expressionable.Create<AclUserInfo>();
  59. var list = _acluserInfoRepository.Queryable().Where(it => SqlFunc.Subqueryable<AclUserRelation>().Where(s => s.ObjectTypeNum == (int)ACLObjType && s.ObjectId == id && s.UserId == it.Id).Any()).ToList();
  60. return list.Adapt<List<AclUserinfoListDto>>();
  61. }
  62. public void SaveEntityList(string objectno, ACLObjType eACLObjType, List<string> UserNos)
  63. {
  64. if (!long.TryParse(objectno, out long id))
  65. {
  66. throw new ArgumentException("参数错误。");
  67. }
  68. _aclUserRelationRepository.Deleteable().Where(it => it.ObjectTypeNum == (int)eACLObjType && it.ObjectId == id).ExecuteCommand();
  69. if (UserNos != null && UserNos.Count > 0)
  70. {
  71. List<AclUserRelation> lists = new List<AclUserRelation>();
  72. foreach (string s in UserNos)
  73. {
  74. lists.Add(new AclUserRelation()
  75. {
  76. ObjectId = id,
  77. ObjectTypeNum = (int)eACLObjType,
  78. UserId = long.Parse(s)
  79. });
  80. }
  81. _aclUserRelationRepository.Insert(lists);
  82. }
  83. }
  84. }
  85. }