DepartmentService.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using AutoMapper;
  4. using GxPress.Repository.Interface;
  5. using GxPress.Request.Department;
  6. using GxPress.Result.Department;
  7. using GxPress.Service.Interface;
  8. using GxPress.Service.Interface.Department;
  9. using GxPress.Repository.Interface.DepartmentUser;
  10. using System.Linq;
  11. using Datory;
  12. using GxPress.EnumConst;
  13. namespace GxPress.Service.Implement.Department
  14. {
  15. /// <summary>
  16. /// 部门
  17. /// </summary>
  18. public partial class DepartmentService : IDepartmentService
  19. {
  20. private readonly IMapper _mapper;
  21. private readonly IDepartmentRepository _departmentRepository;
  22. private readonly IUserRepository _userRepository;
  23. private readonly IUserService _userService;
  24. private readonly IDepartmentUserRepository departmentUserRepository;
  25. public DepartmentService(IMapper mapper, IDepartmentRepository departmentRepository,
  26. IUserRepository userRepository, IUserService userService, IDepartmentUserRepository departmentUserRepository)
  27. {
  28. _departmentRepository = departmentRepository;
  29. _userRepository = userRepository;
  30. _userService = userService;
  31. _mapper = mapper;
  32. this.departmentUserRepository = departmentUserRepository;
  33. }
  34. /// <summary>
  35. /// 根据部门ID获取成员以及下级部门
  36. /// </summary>
  37. /// <param name="request"></param>
  38. /// <returns></returns>
  39. public async Task<DepartmentUserResult> GetDepartmentUserResultAsync(DepartmentUserRequest request)
  40. {
  41. var result = await _departmentRepository.GetDepartmentUserResultAsync(request);
  42. if (result.Departments != null)
  43. {
  44. foreach (var item in result.Departments)
  45. {
  46. item.TypeId = UserlinkConst.Work.GetHashCode();
  47. //获取部门
  48. var departments = new List<DepartmentResult>();
  49. await _departmentRepository.GetDepartmentById(item.Id, departments);
  50. var userIds = await departmentUserRepository.GetUserIdsByDepartmentIdsAsync(departments.Select(n => n.Id));
  51. item.UserCount = await _userRepository.CountAsync(Q.WhereIn(nameof(Entity.User.Id), userIds));
  52. }
  53. }
  54. return result;
  55. }
  56. }
  57. }