钉钉同步部门接口对比
可以根据业务需求,选择版本接口
V1 可以获取指定部门下所有子部门
public static List<OapiDepartmentListResponse.Department> getAll() {
try {
DingTalkClient client = new DefaultDingTalkClient(DingTalkConstant.BASE_URL + "/department/list");
OapiDepartmentListRequest req = new OapiDepartmentListRequest();
// req.setId("1"); // 父部门ID, 如果不传,默认部门为根部门,根部门ID为1
req.setFetchChild(true); // 是否递归部门的全部子部门
req.setHttpMethod("GET");
OapiDepartmentListResponse rsp = client.execute(req, BaseDingTalk.getAccessToken());
return rsp.getDepartment();
} catch (Exception e) {
log.error("[DingTalk] 获取所有部门失败", e);
}
return null;
}
V2 只能获取指定部门下一级子部门, 需要循环获取所有
public static List<OapiV2DepartmentListsubResponse.DeptBaseResponse> getAll2() {
try {
DingTalkClient client = new DefaultDingTalkClient(DingTalkConstant.BASE_URL + "/topapi/v2/department/listsub");
OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest();
req.setDeptId(1L);
req.setLanguage("zh_CN");
OapiV2DepartmentListsubResponse rsp = client.execute(req, BaseDingTalk.getAccessToken());
if (rsp.isSuccess()) {
return rsp.getResult();
}
} catch (Exception e) {
log.error("[DingTalk] 获取所有部门失败", e);
}
return null;
}