
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 weixin4j Show documentation
Show all versions of weixin4j Show documentation
微信和钉钉开发SDK,主要提供微信、企业微信、钉钉的JAVA封装,降低集成难度,让API变简单
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