DingTalkEmployeeRosterClient.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package com.malk.minglei.service.employee;
  2. import java.util.List;
  3. import java.util.Map;
  4. /**
  5. * 钉钉智能人事花名册接口客户端。
  6. */
  7. public interface DingTalkEmployeeRosterClient {
  8. /**
  9. * 从用户父部门路径解析根部门下的一级部门 ID。
  10. *
  11. * @param accessToken 钉钉访问令牌
  12. * @param userId 员工钉钉用户 ID
  13. * @param departmentId 员工部门列表首个部门 ID,多部门时优先使用其所在路径
  14. * @return 一级部门 ID;无父部门或仅属于根部门时返回 null
  15. */
  16. Long getFirstDepartmentId(String accessToken, String userId, Long departmentId);
  17. /**
  18. * 查询部门名称,接口失败或名称缺失时抛出异常。
  19. *
  20. * @param accessToken 钉钉访问令牌
  21. * @param departmentId 钉钉部门 ID
  22. * @return 部门名称
  23. */
  24. String getDepartmentName(String accessToken, Long departmentId);
  25. /**
  26. * 查询用户详情中的直属主管钉钉 ID。
  27. *
  28. * @param accessToken 钉钉访问令牌
  29. * @param userId 员工钉钉用户 ID
  30. * @return 直属主管钉钉用户 ID;未配置主管时返回 null
  31. * @throws IllegalStateException 钉钉接口失败或返回无效的用户详情
  32. */
  33. String getManagerUserId(String accessToken, String userId);
  34. /**
  35. * 查询可用的花名册字段分组。
  36. *
  37. * @param accessToken 钉钉访问令牌
  38. * @param agentId 应用 AgentId
  39. * @return 花名册字段分组列表
  40. */
  41. List<Map> listRosterFieldGroups(String accessToken, Number agentId);
  42. /**
  43. * 批量查询指定用户的花名册字段值。
  44. *
  45. * @param accessToken 钉钉访问令牌
  46. * @param userIds 钉钉用户 ID 列表
  47. * @param agentId 应用 AgentId
  48. * @param fieldCodes 需要查询的字段编码
  49. * @return 用户花名册记录列表
  50. */
  51. List<Map> listEmployeeRoster(String accessToken, List<String> userIds, Number agentId, List<String> fieldCodes);
  52. }