
com.jeecg.dingtalk.api.user.JdtUserAPI Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jeewx-api Show documentation
Show all versions of jeewx-api Show documentation
JEEWX-API(微信极速SDK、同时支持微信公众号\企业微信\支付窗\小程序\微博).
The newest version!
package com.jeecg.dingtalk.api.user;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jeecg.dingtalk.api.core.response.Response;
import com.jeecg.dingtalk.api.core.util.ApiUrls;
import com.jeecg.dingtalk.api.core.util.HttpUtil;
import com.jeecg.dingtalk.api.core.util.JdtTypes;
import com.jeecg.dingtalk.api.core.vo.PageResult;
import com.jeecg.dingtalk.api.user.body.GetUserListBody;
import com.jeecg.dingtalk.api.user.vo.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* 钉钉用户接口
*
* @author sunjianlei
*/
public class JdtUserAPI {
private static final Logger logger = LoggerFactory.getLogger(JdtUserAPI.class);
/**
* 创建用户
*
* https://developers.dingtalk.com/document/app/user-information-creation
*
* @param user 用户实例
* @param accessToken 有效的access_token
* @return Response<String> 成功返回userid
*/
public static Response create(User user, String accessToken) {
String url = ApiUrls.get(ApiUrls.USER_CREATE, accessToken);
Response originResponse = HttpUtil.post(url, JSON.toJSONString(user));
Response response = new Response<>(originResponse);
if (response.isSuccess()) {
// 将常用的userId直接返回(实际上也就只有这一个返回参数)
String userid = originResponse.getResult().getString("userid");
response.setResult(userid);
}
logger.info("[USER_CREATE] response:{}", new Object[]{JSON.toJSONString(response)});
return response;
}
/**
* 更新用户信息
*
* https://developers.dingtalk.com/document/app/user-information-update
*
* @param user 用户实例
* @param accessToken 有效的access_token
* @return Response<JSONObject>
*/
public static Response update(User user, String accessToken) {
String url = ApiUrls.get(ApiUrls.USER_UPDATE, accessToken);
Response response = HttpUtil.post(url, JSON.toJSONString(user));
logger.info("[USER_UPDATE] response:{}", new Object[]{JSON.toJSONString(response)});
return response;
}
/**
* 删除用户
*
* https://developers.dingtalk.com/document/app/delete-a-user
*
* @param userid 用户唯一标识userid
* @param accessToken 有效的access_token
* @return Response<JSONObject>
*/
public static Response delete(String userid, String accessToken) {
String url = ApiUrls.get(ApiUrls.USER_DELETE, accessToken);
JSONObject body = new JSONObject();
body.put("userid", userid);
Response response = HttpUtil.post(url, body.toJSONString());
logger.info("[USER_DELETE] response:{}", new Object[]{JSON.toJSONString(response)});
return response;
}
/**
* 伪批量删除用户(for循环调接口)
*
* @param userIds 用户ID列表
* @param accessToken 有效的access_token
* @return List<Response<JSONObject>>
*/
public static List> batchDeletePseudo(Collection userIds, String accessToken) {
List> list = new ArrayList<>();
int result = 0;
for (String userId : userIds) {
list.add(JdtUserAPI.delete(userId, accessToken));
}
return list;
}
/**
* 根据userid获取用户详情
*
* https://developers.dingtalk.com/document/app/query-user-details
*
* @param userid 用户唯一标识userid
* @param accessToken 有效的access_token
* @return Response<User>
*/
public static Response getUserById(String userid, String accessToken) {
String url = ApiUrls.get(ApiUrls.USER_GET, accessToken);
JSONObject body = new JSONObject();
body.put("userid", userid);
Response response = HttpUtil.post(url, body.toJSONString(), User.class);
logger.info("[USER_GET_BY_ID] response:{}", new Object[]{JSON.toJSONString(response)});
return response;
}
/**
* 获取部门用户详情。说明:只获取当前部门下的员工信息,不包含子部门内的员工。
*
* https://developers.dingtalk.com/document/app/queries-the-complete-information-of-a-department-user
*
* @param body GetUserListBody实例
* @param accessToken 有效的access_token
* @return Response<PageResult<User>> 分页对象
*/
public static Response> getUserListByDeptId(GetUserListBody body, String accessToken) {
String url = ApiUrls.get(ApiUrls.USER_LIST, accessToken);
Response> response = HttpUtil.post(url, JSON.toJSONString(body), JdtTypes.PageResult_User);
logger.info("[USER_GET_LIST_BY_DEPT_ID] response:{}", new Object[]{JSON.toJSONString(response)});
return response;
}
/**
* 获取部门用户基础信息。
* 调用本接口获取指定部门的用户userid和name。
* 说明:只获取当前部门下的员工信息,不包含子部门内的员工。
*
* https://developers.dingtalk.com/document/app/queries-the-complete-information-of-a-department-user
*
* @param body GetUserListBody实例
* @param accessToken 有效的access_token
* @return Response<PageResult<User>> 分页对象
*/
public static Response> getUserListSimpleByDeptId(GetUserListBody body, String accessToken) {
String url = ApiUrls.get(ApiUrls.USER_LIST_SIMPLE, accessToken);
Response> response = HttpUtil.post(url, JSON.toJSONString(body), JdtTypes.PageResult_User);
logger.info("[USER_GET_LIST_SIMPLE_BY_DEPT_ID] response:{}", new Object[]{JSON.toJSONString(response)});
return response;
}
/**
* 获取部门用户userid列表。
*
* 注意:目前暂不支持一次性获取企业下所有员工userid值,如果开发者希望获取企业下所有员工userid值,可以通过以下方法:
* 1. 调用“获取部门列表”接口,通过逐级遍历,获取该企业下所有部门ID。
* 2. 调用本接口,分别获取每个部门下的员工userid。
*
* https://developers.dingtalk.com/document/app/query-the-list-of-department-userids
*
* @param deptId deptId
* @param accessToken 有效的access_token
* @return Response<List<String>>
*/
public static Response> getUserListIdByDeptId(int deptId, String accessToken) {
String url = ApiUrls.get(ApiUrls.USER_LIST_ID, accessToken);
JSONObject body = new JSONObject();
body.put("dept_id", deptId);
Response originResponse = HttpUtil.post(url, JSON.toJSONString(body));
Response> response = new Response<>(originResponse);
if (response.isSuccess()) {
List userid_list = originResponse.getResult().getJSONArray("userid_list").toJavaList(String.class);
response.setResult(userid_list);
}
logger.info("[USER_GET_LIST_ID_BY_DEPT_ID] response:{}", new Object[]{JSON.toJSONString(response)});
return response;
}
/**
* 获取员工人数
*
* 调用本接口获取员工人数。
*
* https://developers.dingtalk.com/document/app/obtain-the-number-of-employees-v2
*
* @param onlyActive 是否包含未激活钉钉人数。
* false:包含未激活钉钉的人员数量。
* true:只包含激活钉钉的人员数量。
* @param accessToken 有效的access_token
* @return Response<Integer>
*/
public static Response getUserCount(boolean onlyActive, String accessToken) {
String url = ApiUrls.get(ApiUrls.USER_COUNT, accessToken);
JSONObject body = new JSONObject();
body.put("only_active", onlyActive);
Response originResponse = HttpUtil.post(url, JSON.toJSONString(body));
Response response = new Response<>(originResponse);
if (response.isSuccess()) {
response.setResult(originResponse.getResult().getIntValue("count"));
}
logger.info("[USER_COUNT] response:{}", new Object[]{JSON.toJSONString(response)});
return response;
}
/**
* 获取员工人数,包含未激活钉钉的人员数量
*
* @return Response<Integer>
*/
public static Response getUserCount(String accessToken) {
return JdtUserAPI.getUserCount(false, accessToken);
}
/**
* 根据手机号获取userid
*
* https://developers.dingtalk.com/document/app/query-users-by-phone-number
*
* @param mobile 用户的手机号。
* @param accessToken 有效的access_token
* @return Response<String>
*/
public static Response getUseridByMobile(String mobile, String accessToken) {
String url = ApiUrls.get(ApiUrls.USER_GET_ID_BY_MOBILE, accessToken);
JSONObject body = new JSONObject();
body.put("mobile", mobile);
Response originResponse = HttpUtil.post(url, JSON.toJSONString(body));
Response response = new Response<>(originResponse);
if (response.isSuccess()) {
// 将常用的userId直接返回(实际上也就只有这一个返回参数)
String userid = originResponse.getResult().getString("userid");
response.setResult(userid);
}
logger.info("[USER_GET_ID_BY_MOBILE] response:{}", new Object[]{JSON.toJSONString(response)});
return response;
}
/**
* 根据unionid获取用户userid
*
* https://developers.dingtalk.com/document/app/query-a-user-by-the-union-id
*
* @param unionid 员工在当前开发者企业账号范围内的唯一标识,系统生成,不会改变。
* @param accessToken 有效的access_token
* @return Response<String>
*/
public static Response getUseridByUnionid(String unionid, String accessToken) {
String url = ApiUrls.get(ApiUrls.USER_GET_ID_BY_UNIONID, accessToken);
JSONObject body = new JSONObject();
body.put("unionid", unionid);
Response originResponse = HttpUtil.post(url, JSON.toJSONString(body));
Response response = new Response<>(originResponse);
if (response.isSuccess()) {
// 将常用的userId直接返回(实际上也就只有这一个返回参数)
String userid = originResponse.getResult().getString("userid");
response.setResult(userid);
}
logger.info("[USER_GET_ID_BY_UNIONID] response:{}", new Object[]{JSON.toJSONString(response)});
return response;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy