SysUserRoleService.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using Infrastructure.Attribute;
  2. using ZR.Model;
  3. using ZR.Model.System;
  4. using ZR.Model.System.Dto;
  5. using ZR.Repository;
  6. namespace ZR.ServiceCore.Services
  7. {
  8. /// <summary>
  9. /// 用户角色
  10. /// </summary>
  11. [AppService(ServiceType = typeof(ISysUserRoleService), ServiceLifetime = LifeTime.Transient)]
  12. public class SysUserRoleService : BaseService<SysUserRole>, ISysUserRoleService
  13. {
  14. /// <summary>
  15. /// 通过角色ID查询角色使用数量
  16. /// </summary>
  17. /// <param name="roleId"></param>
  18. /// <returns></returns>
  19. public int CountUserRoleByRoleId(long roleId)
  20. {
  21. return Count(it => it.RoleId == roleId);
  22. }
  23. /// <summary>
  24. /// 删除用户角色
  25. /// </summary>
  26. /// <param name="userId"></param>
  27. /// <returns></returns>
  28. public int DeleteUserRoleByUserId(int userId)
  29. {
  30. return Delete(it => it.UserId == userId) ? 1 : 0;
  31. }
  32. /// <summary>
  33. /// 批量删除角色对应用户
  34. /// </summary>
  35. /// <param name="roleId"></param>
  36. /// <param name="userIds"></param>
  37. /// <returns></returns>
  38. public int DeleteRoleUserByUserIds(long roleId, List<long> userIds)
  39. {
  40. return Delete(it => it.RoleId == roleId && userIds.Contains(it.UserId)) ? 1 : 0;
  41. }
  42. /// <summary>
  43. /// 添加用户角色
  44. /// </summary>
  45. /// <param name="sysUserRoles"></param>
  46. /// <returns></returns>
  47. public int AddUserRole(List<SysUserRole> sysUserRoles)
  48. {
  49. return Insert(sysUserRoles);
  50. }
  51. /// <summary>
  52. /// 获取用户数据根据角色id
  53. /// </summary>
  54. /// <param name="roleId"></param>
  55. /// <returns></returns>
  56. public List<SysUser> GetSysUsersByRoleId(long roleId)
  57. {
  58. return Context.Queryable<SysUserRole, SysUser>((t1, u) => new JoinQueryInfos(
  59. JoinType.Left, t1.UserId == u.UserId))
  60. .WithCache(60 * 10)
  61. .Where((t1, u) => t1.RoleId == roleId && u.DelFlag == 0)
  62. .Select((t1, u) => u)
  63. .ToList();
  64. }
  65. /// <summary>
  66. /// 获取用户数据根据角色id
  67. /// </summary>
  68. /// <param name="roleUserQueryDto"></param>
  69. /// <returns></returns>
  70. public PagedInfo<SysUser> GetSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto)
  71. {
  72. var query = Context.Queryable<SysUserRole, SysUser>((t1, u) => new JoinQueryInfos(
  73. JoinType.Left, t1.UserId == u.UserId))
  74. .Where((t1, u) => t1.RoleId == roleUserQueryDto.RoleId && u.DelFlag == 0);
  75. if (!string.IsNullOrEmpty(roleUserQueryDto.UserName))
  76. {
  77. query = query.Where((t1, u) => u.UserName.Contains(roleUserQueryDto.UserName));
  78. }
  79. return query.Select((t1, u) => u).ToPage(roleUserQueryDto);
  80. }
  81. /// <summary>
  82. /// 获取尚未指派的用户数据根据角色id
  83. /// </summary>
  84. /// <param name="roleUserQueryDto"></param>
  85. /// <returns></returns>
  86. public PagedInfo<SysUser> GetExcludedSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto)
  87. {
  88. var query = Context.Queryable<SysUser>()
  89. .Where(it => it.DelFlag == 0)
  90. .Where(it => SqlFunc.Subqueryable<SysUserRole>().Where(s => s.UserId == it.UserId && s.RoleId == roleUserQueryDto.RoleId).NotAny())
  91. .WhereIF(roleUserQueryDto.UserName.IsNotEmpty(), it => it.UserName.Contains(roleUserQueryDto.UserName));
  92. return query.ToPage(roleUserQueryDto);
  93. }
  94. /// <summary>
  95. /// 新增用户角色信息
  96. /// </summary>
  97. /// <param name="roleIds"></param>
  98. /// <param name="userId"></param>
  99. /// <returns></returns>
  100. public int InsertUserRole(long[] roleIds, long userId)
  101. {
  102. List<SysUserRole> userRoles = [];
  103. foreach (var item in roleIds)
  104. {
  105. userRoles.Add(new SysUserRole() { RoleId = item, UserId = userId });
  106. }
  107. return userRoles.Count > 0 ? AddUserRole(userRoles) : 0;
  108. }
  109. /// <summary>
  110. /// 新增加角色用户
  111. /// </summary>
  112. /// <param name="roleUsersCreateDto"></param>
  113. /// <returns></returns>
  114. public int InsertRoleUser(RoleUsersCreateDto roleUsersCreateDto)
  115. {
  116. List<SysUserRole> userRoles = new();
  117. foreach (var item in roleUsersCreateDto.UserIds)
  118. {
  119. userRoles.Add(new SysUserRole() { RoleId = roleUsersCreateDto.RoleId, UserId = item });
  120. }
  121. return userRoles.Count > 0 ? AddUserRole(userRoles) : 0;
  122. }
  123. }
  124. }