From 6987ac8381641656381029957127fead9115695d Mon Sep 17 00:00:00 2001 From: xiang2lin <251481237@qq.com> Date: Wed, 4 Sep 2024 11:05:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E5=88=97=E8=A1=A8=EF=BC=8C=E9=83=A8=E9=97=A8=E4=B8=8B?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E6=8E=A5=E5=8F=A3=202024=E5=B9=B49=E6=9C=884?= =?UTF-8?q?=E6=97=A511:05:43?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dingtalk/service/IDingTalkService.java | 22 ++++++++ .../service/impl/DingTalkServiceImpl.java | 54 +++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/service/src/main/java/com/hzya/frame/dingtalk/service/IDingTalkService.java b/service/src/main/java/com/hzya/frame/dingtalk/service/IDingTalkService.java index 1124a11c..8429bc1c 100644 --- a/service/src/main/java/com/hzya/frame/dingtalk/service/IDingTalkService.java +++ b/service/src/main/java/com/hzya/frame/dingtalk/service/IDingTalkService.java @@ -1,7 +1,12 @@ package com.hzya.frame.dingtalk.service; +import com.dingtalk.api.request.OapiV2UserListRequest; import com.dingtalk.api.response.OapiV2DepartmentGetResponse; +import com.dingtalk.api.response.OapiV2DepartmentListsubResponse; import com.dingtalk.api.response.OapiV2UserGetResponse; +import com.dingtalk.api.response.OapiV2UserListResponse; + +import java.util.List; /** * @Description 钉钉service @@ -26,6 +31,14 @@ public interface IDingTalkService { */ OapiV2UserGetResponse.UserGetResponse getUserById(String userId); + /** + * 获取部门用户列表 + * @param req 请求参数 + * @param appKey + * @param appSecret + * @return + */ + OapiV2UserListResponse.PageResult getUserListByDeptId(OapiV2UserListRequest req, String appKey, String appSecret); /** * 根据部门id获取部门详情 * @param deptId 钉钉部门id @@ -41,4 +54,13 @@ public interface IDingTalkService { * @return */ OapiV2DepartmentGetResponse.DeptGetResponse getDeptById(Long deptId); + + /** + * 获取部门列表,此接口只会返回下一级部门信息 + * @param deptId 部门id,如果不传则查询一级部门 + * @param appKey + * @param appSecret + * @return + */ + List getDeptList(Long deptId,String appKey,String appSecret); } diff --git a/service/src/main/java/com/hzya/frame/dingtalk/service/impl/DingTalkServiceImpl.java b/service/src/main/java/com/hzya/frame/dingtalk/service/impl/DingTalkServiceImpl.java index 3c2be4c4..89b4bd3e 100644 --- a/service/src/main/java/com/hzya/frame/dingtalk/service/impl/DingTalkServiceImpl.java +++ b/service/src/main/java/com/hzya/frame/dingtalk/service/impl/DingTalkServiceImpl.java @@ -4,9 +4,13 @@ import com.alibaba.fastjson.JSONObject; import com.dingtalk.api.DefaultDingTalkClient; import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.request.OapiV2DepartmentGetRequest; +import com.dingtalk.api.request.OapiV2DepartmentListsubRequest; import com.dingtalk.api.request.OapiV2UserGetRequest; +import com.dingtalk.api.request.OapiV2UserListRequest; import com.dingtalk.api.response.OapiV2DepartmentGetResponse; +import com.dingtalk.api.response.OapiV2DepartmentListsubResponse; import com.dingtalk.api.response.OapiV2UserGetResponse; +import com.dingtalk.api.response.OapiV2UserListResponse; import com.hzya.frame.dingtalk.service.IDingTalkService; import com.hzya.frame.dingtalk.util.DingTalkAccessToken; import org.slf4j.Logger; @@ -14,6 +18,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.util.List; + /** * @Description 钉钉service * @Author xiangerlin @@ -67,6 +73,30 @@ public class DingTalkServiceImpl implements IDingTalkService { return getUserById(userId,dAppKey,dAppSecret); } + /** + * 获取部门用户列表 + * + * @param req 请求参数 + * @param appKey + * @param appSecret + * @return + */ + @Override + public OapiV2UserListResponse.PageResult getUserListByDeptId(OapiV2UserListRequest req, String appKey, String appSecret) { + try { + DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/list"); + req.setSize(100L);//每页最大只能查100条 + req.setOrderField("modify_desc"); + req.setContainAccessLimit(false); + req.setLanguage("zh_CN"); + OapiV2UserListResponse rsp = client.execute(req, DingTalkAccessToken.getAccessToken(appKey,appSecret)); + OapiV2UserListResponse.PageResult result = rsp.getResult(); + return result; + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } /** * 根据部门id获取部门详情 @@ -107,4 +137,28 @@ public class DingTalkServiceImpl implements IDingTalkService { return getDeptById(deptId,dAppKey,dAppSecret); } + /** + * 获取部门列表,此接口只会返回下一级部门信息 + * @param deptId 部门id,如果不传则查询一级部门 + * @param appKey + * @param appSecret + * @return + */ + @Override + public List getDeptList(Long deptId,String appKey,String appSecret) { + try { + DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsub"); + OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest(); + req.setDeptId(deptId); + req.setLanguage("zh_CN"); + OapiV2DepartmentListsubResponse rsp = client.execute(req, DingTalkAccessToken.getAccessToken(appKey,appSecret)); + if (rsp.isSuccess()){ + List result = rsp.getResult(); + return result; + } + }catch (Exception e){ + logger.error("获取部门列表接口出错:{}",e); + } + return null; + } }