All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jeecg.dingtalk.api.user.JdtUserAPI Maven / Gradle / Ivy

Go to download

微信和钉钉开发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