博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java钉钉开发_03_通讯录管理之 人员管理 和 部门管理
阅读量:6989 次
发布时间:2019-06-27

本文共 56398 字,大约阅读时间需要 187 分钟。

一、本节要点

1.通讯录权限

ISV(应用服务商)默认无管理通讯录的权限,企业应用默认有所有通讯录权限。

 

2.数据传输格式—JSON

请参见: 

 

二、代码实现

1.HTTP请求工具类—HttpHelper

package com.ray.dingtalk.qy.util;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import org.apache.http.HttpEntity;import org.apache.http.HttpStatus;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.ContentType;import org.apache.http.entity.StringEntity;import org.apache.http.entity.mime.MultipartEntityBuilder;import org.apache.http.entity.mime.content.FileBody;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.protocol.BasicHttpContext;import org.apache.http.util.EntityUtils;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;/** * HTTP请求封装,建议直接使用sdk的API */public class HttpHelper {    private static final Logger log = LogManager.getLogger(HttpHelper.class);            /**     * @desc :1.发起GET请求     *       * @param url     * @return JSONObject     * @throws Exception      */    public static JSONObject doGet(String url) throws Exception {        //1.生成一个请求        HttpGet httpGet = new HttpGet(url);        //2.配置请求的属性        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).build();//2000        httpGet.setConfig(requestConfig);        //3.发起请求,获取响应信息            //3.1 创建httpClient         CloseableHttpClient httpClient = HttpClients.createDefault();        CloseableHttpResponse response = null;        try {            //3.2 发起请求,获取响应信息                response = httpClient.execute(httpGet, new BasicHttpContext());            //如果返回结果的code不等于200,说明出错了              if (response.getStatusLine().getStatusCode() != 200) {                log.info("request url failed, http code=" + response.getStatusLine().getStatusCode()                        + ", url=" + url);                return null;            }            //4.解析请求结果            HttpEntity entity = response.getEntity();      //reponse返回的数据在entity中             if (entity != null) {                String resultStr = EntityUtils.toString(entity, "utf-8");  //将数据转化为string格式                  log.info("GET请求结果:"+resultStr);                JSONObject result = JSON.parseObject(resultStr);    //将String转换为 JSONObject                if(result.getInteger("errcode")==null) {                    return result;                }else if (0 == result.getInteger("errcode")) {                    return result;                }else {                    log.info("request url=" + url + ",return value=");                    log.info(resultStr);                    int errCode = result.getInteger("errcode");                    String errMsg = result.getString("errmsg");                    throw new Exception("error code:"+errCode+", error message:"+errMsg);                 }            }        } catch (IOException e) {            log.info("request url=" + url + ", exception, msg=" + e.getMessage());            e.printStackTrace();        } finally {            if (response != null) try {                response.close();                     //释放资源            } catch (IOException e) {                e.printStackTrace();            }        }        return null;    }    /** 2.发起POST请求     * @desc :     *       * @param url   请求url     * @param data  请求参数(json)     * @return     * @throws Exception JSONObject     */    public static JSONObject doPost(String url, Object data) throws Exception {        //1.生成一个请求        HttpPost httpPost = new HttpPost(url);        //2.配置请求属性        //2.1 设置请求超时时间        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(100000).setConnectTimeout(100000).build();        httpPost.setConfig(requestConfig);        //2.2 设置数据传输格式-json        httpPost.addHeader("Content-Type", "application/json");        //2.3 设置请求实体,封装了请求参数        StringEntity requestEntity = new StringEntity(JSON.toJSONString(data), "utf-8");        httpPost.setEntity(requestEntity);        //3.发起请求,获取响应信息            //3.1 创建httpClient         CloseableHttpClient httpClient = HttpClients.createDefault();        CloseableHttpResponse response = null;        try {            //3.3 发起请求,获取响应            response = httpClient.execute(httpPost, new BasicHttpContext());            if (response.getStatusLine().getStatusCode() != 200) {                log.info("request url failed, http code=" + response.getStatusLine().getStatusCode()                        + ", url=" + url);                return null;            }            //获取响应内容            HttpEntity entity = response.getEntity();            if (entity != null) {                String resultStr = EntityUtils.toString(entity, "utf-8");                log.info("POST请求结果:"+resultStr);                //解析响应内容                JSONObject result = JSON.parseObject(resultStr);                if(result.getInteger("errcode")==null) {                    return result;                }else if (0 == result.getInteger("errcode")) {                    return result;                }else {                    log.info("request url=" + url + ",return value=");                    log.info(resultStr);                    int errCode = result.getInteger("errcode");                    String errMsg = result.getString("errmsg");                    throw new Exception("error code:"+errCode+", error message:"+errMsg);                 }            }        } catch (IOException e) {            log.info("request url=" + url + ", exception, msg=" + e.getMessage());            e.printStackTrace();        } finally {            if (response != null) try {                response.close();              //释放资源            } catch (IOException e) {                e.printStackTrace();            }        }        return null;    }/** * @desc : 3. *    * @param url * @param file * @return * @throws Exception  *   JSONObject */    public static JSONObject uploadMedia(String url, File file) throws Exception {        HttpPost httpPost = new HttpPost(url);        CloseableHttpResponse response = null;        CloseableHttpClient httpClient = HttpClients.createDefault();        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();        httpPost.setConfig(requestConfig);        HttpEntity requestEntity = MultipartEntityBuilder.create().addPart("media",                new FileBody(file, ContentType.APPLICATION_OCTET_STREAM, file.getName())).build();        httpPost.setEntity(requestEntity);        try {            response = httpClient.execute(httpPost, new BasicHttpContext());            if (response.getStatusLine().getStatusCode() != 200) {                log.info("request url failed, http code=" + response.getStatusLine().getStatusCode()                        + ", url=" + url);                return null;            }            HttpEntity entity = response.getEntity();            if (entity != null) {                String resultStr = EntityUtils.toString(entity, "utf-8");                JSONObject result = JSON.parseObject(resultStr);                if (result.getInteger("errcode") == 0) {                    // 成功                    //result.remove("errcode");                    //result.remove("errmsg");                    return result;                } else {                    log.info("request url=" + url + ",return value=");                    log.info(resultStr);                    int errCode = result.getInteger("errcode");                    String errMsg = result.getString("errmsg");                    throw new Exception("error code:"+errCode+", error message:"+errMsg);                 }            }        } catch (IOException e) {            log.info("request url=" + url + ", exception, msg=" + e.getMessage());            e.printStackTrace();        } finally {            if (response != null) try {                response.close();                  //释放资源                                            } catch (IOException e) {                e.printStackTrace();            }        }        return null;    }    public static File downloadMedia(String url, String fileDir) throws Exception  {        //1.生成一个请求        HttpGet httpGet = new HttpGet(url);        //2.配置请求属性        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();        httpGet.setConfig(requestConfig);        //3.发起请求,获取响应信息            //3.1 创建httpClient         CloseableHttpClient httpClient = HttpClients.createDefault();        CloseableHttpResponse response = null;                //4.设置本地保存的文件          File file = new File(fileDir);                try {            //5. 发起请求,获取响应信息                response = httpClient.execute(httpGet, new BasicHttpContext());            log.info("HttpStatus.SC_OK:"+HttpStatus.SC_OK);              log.info("response.getStatusLine().getStatusCode():"+response.getStatusLine().getStatusCode());              //请求成功              if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){                                  //6.取得请求内容                  HttpEntity entity = response.getEntity();                  if (entity != null) {                      //这里可以得到文件的类型 如image/jpg /zip /tiff 等等 但是发现并不是十分有效,有时明明后缀是.rar但是取到的是null,这点特别说明                      log.info(entity.getContentType());                      //可以判断是否是文件数据流                      log.info(entity.isStreaming());                                          //6.1 输出流                    FileOutputStream output = new FileOutputStream(file);                      //6.2 输入流:从钉钉服务器返回的文件流,得到网络资源并写入文件                      InputStream input = entity.getContent();                                          //6.3 将数据写入文件:将输入流中的数据写入到输出流                    byte b[] = new byte[1024];                      int j = 0;                      while( (j = input.read(b))!=-1){                          output.write(b,0,j);                      }                      output.flush();                      output.close();                   }                  if (entity != null) {                      entity.consumeContent();                  }              }          } catch (IOException e) {            log.info("request url=" + url + ", exception, msg=" + e.getMessage());            e.printStackTrace();        } finally {            if (response != null) try {                response.close();                       //释放资源                                            } catch (IOException e) {                e.printStackTrace();            }        }                return file;    }    }
View Code

 

2.Token工具类—AuthHelper

package com.ray.dingtalk.qy.auth;import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Formatter;import java.util.HashMap;import java.util.Map;import java.util.UUID;import javax.servlet.http.HttpServletRequest;import com.alibaba.fastjson.JSONObject;import com.ray.dingtalk.qy.config.Env;import com.ray.dingtalk.qy.util.HttpHelper;/** * 钉钉相关配置参数的获取工具类 * @desc  : AccessToken和jsticket的获取封装 *  * @author: shirayner * @date  : 2017年9月27日 下午5:00:25 */public class AuthHelper {    //private static Logger log = LoggerFactory.getLogger(AuthHelper.class);      //获取access_token的接口地址,有效期为7200秒    private static final String GET_ACCESSTOKEN_URL="https://oapi.dingtalk.com/gettoken?corpid=CORPID&corpsecret=CORPSECRET";     //获取getJsapiTicket的接口地址,有效期为7200秒     private static final String GET_JSAPITICKET_URL="https://oapi.dingtalk.com/get_jsapi_ticket?access_token=ACCESSTOKE";     /** 1.获取access_token      * @desc :      *       * @param corpId     * @param corpSecret     * @return     * @throws Exception String     */    public static String getAccessToken(String corpId,String corpSecret) throws Exception {        //1.获取请求url        String url=GET_ACCESSTOKEN_URL.replace("CORPID", corpId).replace("CORPSECRET", corpSecret);        //2.发起GET请求,获取返回结果        JSONObject jsonObject=HttpHelper.doGet(url);        //3.解析结果,获取accessToken        String accessToken="";          if (null != jsonObject) {              accessToken=jsonObject.getString("access_token");            //4.错误消息处理            if (0 != jsonObject.getInteger("errcode")) {                  int errCode = jsonObject.getInteger("errcode");                String errMsg = jsonObject.getString("errmsg");                throw new Exception("error code:"+errCode+", error message:"+errMsg);             }          }          return accessToken;    }    /**     * 2、获取JSTicket, 用于js的签名计算     * 正常的情况下,jsapi_ticket的有效期为7200秒,所以开发者需要在某个地方设计一个定时器,定期去更新jsapi_ticket     * @throws Exception      */    public static String getJsapiTicket(String accessToken) throws Exception  {        //1.获取请求url        String url=GET_JSAPITICKET_URL.replace("ACCESSTOKE", accessToken);        //2.发起GET请求,获取返回结果        JSONObject jsonObject=HttpHelper.doGet(url);        //3.解析结果,获取ticket        String ticket="";          if (null != jsonObject) {              ticket=jsonObject.getString("ticket");            //4.错误消息处理            if (0 != jsonObject.getInteger("errcode")) {                  int errCode = jsonObject.getInteger("errcode");                String errMsg = jsonObject.getString("errmsg");                throw new Exception("error code:"+errCode+", error message:"+errMsg);             }          }          return ticket;    }    /**     * @desc : 3.生成签名的函数      *       * @param ticket jsticket     * @param nonceStr 随机串,自己定义     * @param timeStamp 生成签名用的时间戳      * @param url 需要进行免登鉴权的页面地址,也就是执行dd.config的页面地址      * @return     * @throws Exception String     */        public static String getSign(String jsTicket, String nonceStr, Long timeStamp, String url) throws Exception {          String plainTex = "jsapi_ticket=" + jsTicket + "&noncestr=" + nonceStr + "&timestamp=" + timeStamp + "&url=" + url;        System.out.println(plainTex);        try {              MessageDigest crypt = MessageDigest.getInstance("SHA-1");            crypt.reset();            crypt.update(plainTex.getBytes("UTF-8"));            return byteToHex(crypt.digest());        } catch (NoSuchAlgorithmException e) {              throw new Exception(e.getMessage());          } catch (UnsupportedEncodingException e) {              throw new Exception(e.getMessage());          }      }      //将bytes类型的数据转化为16进制类型      private static String byteToHex(byte[] hash) {        Formatter formatter = new Formatter();        for (byte b : hash) {            formatter.format("%02x", new Object[] { Byte.valueOf(b) });        }        String result = formatter.toString();        formatter.close();        return result;    }            /**     * @desc :获取前端jsapi需要的配置参数(已弃用,请用getConfig(HttpServletRequest))     *       * @param request      request:在钉钉中点击微应用图标跳转的url地址      * @return Map
将需要的参数存入map,并返回 */ public static Map
getDDConfig(HttpServletRequest request){ Map
configMap = new HashMap
(); //1.准备好参与签名的字段 /* *以http://localhost/test.do?a=b&c=d为例 *request.getRequestURL的结果是http://localhost/test.do *request.getQueryString的返回值是a=b&c=d */ String urlString = request.getRequestURL().toString(); String queryString = request.getQueryString(); String queryStringEncode = null; String url; if (queryString != null) { queryStringEncode = URLDecoder.decode(queryString); url = urlString + "?" + queryStringEncode; } else { url = urlString; } String nonceStr=UUID.randomUUID().toString(); //随机数 long timeStamp = System.currentTimeMillis() / 1000; //时间戳参数 String signedUrl = url; String accessToken = null; String ticket = null; String signature = null; //签名 //2.进行签名,获取signature try { accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET); ticket=AuthHelper.getJsapiTicket(accessToken); signature=getSign(ticket,nonceStr,timeStamp,signedUrl); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("accessToken:"+accessToken); System.out.println("ticket:"+ticket); System.out.println("nonceStr:"+nonceStr); System.out.println("timeStamp:"+timeStamp); System.out.println("signedUrl:"+signedUrl); System.out.println("signature:"+signature); System.out.println("agentId:"+Env.AGENTID); System.out.println("corpId:"+Env.CORP_ID); //3.将配置参数存入Map configMap.put("agentId", Env.AGENTID); configMap.put("corpId", Env.CORP_ID); configMap.put("timeStamp", timeStamp); configMap.put("nonceStr", nonceStr); configMap.put("signature", signature); return configMap; } public static String getConfig(HttpServletRequest request){ //1.准备好参与签名的字段 /* *以http://localhost/test.do?a=b&c=d为例 *request.getRequestURL的结果是http://localhost/test.do *request.getQueryString的返回值是a=b&c=d */ String urlString = request.getRequestURL().toString(); String queryString = request.getQueryString(); String queryStringEncode = null; String url; if (queryString != null) { queryStringEncode = URLDecoder.decode(queryString); url = urlString + "?" + queryStringEncode; } else { url = urlString; } String nonceStr=UUID.randomUUID().toString(); //随机数 long timeStamp = System.currentTimeMillis() / 1000; //时间戳参数 String signedUrl = url; String accessToken = null; String ticket = null; String signature = null; //签名 //2.进行签名,获取signature try { accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET); ticket=AuthHelper.getJsapiTicket(accessToken); signature=getSign(ticket,nonceStr,timeStamp,signedUrl); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("accessToken:"+accessToken); System.out.println("ticket:"+ticket); System.out.println("nonceStr:"+nonceStr); System.out.println("timeStamp:"+timeStamp); System.out.println("signedUrl:"+signedUrl); System.out.println("signature:"+signature); System.out.println("agentId:"+Env.AGENTID); System.out.println("corpId:"+Env.CORP_ID); String configValue = "{jsticket:'" + ticket + "',signature:'" + signature + "',nonceStr:'" + nonceStr + "',timeStamp:'" + timeStamp + "',corpId:'" + Env.CORP_ID + "',agentId:'" + Env.AGENTID + "'}"; System.out.println(configValue); return configValue; } }
View Code

 

3.成员实体类—User

package com.ray.dingtalk.qy.model.contact;import java.util.List;import com.alibaba.fastjson.JSONObject;/**@desc  : 用户类 *  * @author: shirayner * @date  : 2017年9月28日 上午9:38:25 */public class User {    public String userid;    public String name;     //必须      public boolean active;    public String avatar;    public List
department; //必须 public String position; public String mobile; //必须 public String tel; public String workPlace; public String remark; public String email; public String jobnumber; public JSONObject extattr; public boolean isAdmin; public boolean isBoss; public String dingId; /** * @return the userid */ public String getUserid() { return userid; } /** * @param userid the userid to set */ public void setUserid(String userid) { this.userid = userid; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the active */ public boolean isActive() { return active; } /** * @param active the active to set */ public void setActive(boolean active) { this.active = active; } /** * @return the avatar */ public String getAvatar() { return avatar; } /** * @param avatar the avatar to set */ public void setAvatar(String avatar) { this.avatar = avatar; } /** * @return the department */ public List
getDepartment() { return department; } /** * @param department the department to set */ public void setDepartment(List
department) { this.department = department; } /** * @return the position */ public String getPosition() { return position; } /** * @param position the position to set */ public void setPosition(String position) { this.position = position; } /** * @return the mobile */ public String getMobile() { return mobile; } /** * @param mobile the mobile to set */ public void setMobile(String mobile) { this.mobile = mobile; } /** * @return the tel */ public String getTel() { return tel; } /** * @param tel the tel to set */ public void setTel(String tel) { this.tel = tel; } /** * @return the workPlace */ public String getWorkPlace() { return workPlace; } /** * @param workPlace the workPlace to set */ public void setWorkPlace(String workPlace) { this.workPlace = workPlace; } /** * @return the remark */ public String getRemark() { return remark; } /** * @param remark the remark to set */ public void setRemark(String remark) { this.remark = remark; } /** * @return the email */ public String getEmail() { return email; } /** * @param email the email to set */ public void setEmail(String email) { this.email = email; } /** * @return the jobnumber */ public String getJobnumber() { return jobnumber; } /** * @param jobnumber the jobnumber to set */ public void setJobnumber(String jobnumber) { this.jobnumber = jobnumber; } /** * @return the extattr */ public JSONObject getExtattr() { return extattr; } /** * @param extattr the extattr to set */ public void setExtattr(JSONObject extattr) { this.extattr = extattr; } /** * @return the isAdmin */ public boolean isAdmin() { return isAdmin; } /** * @param isAdmin the isAdmin to set */ public void setAdmin(boolean isAdmin) { this.isAdmin = isAdmin; } /** * @return the isBoss */ public boolean isBoss() { return isBoss; } /** * @param isBoss the isBoss to set */ public void setBoss(boolean isBoss) { this.isBoss = isBoss; } /** * @return the dingId */ public String getDingId() { return dingId; } /** * @param dingId the dingId to set */ public void setDingId(String dingId) { this.dingId = dingId; } @Override public String toString() { return "User[userid:" + userid + ", name:" + name + ", active:" + active + ", " + "avatar:" + avatar + ", department:" + department + ", position:" + position + ", mobile:" + mobile + ", email:" + email + ", extattr:" + extattr; } }
View Code

 

4.部门实体类—Department

package com.ray.dingtalk.qy.model.contact;/**@desc  :  *  * @author: shirayner * @date  : 2017年10月18日 下午2:14:20 */public class Department {    //部门id    private long id;    //是    部门名称。长度限制为1~64个字符。不允许包含字符‘-’‘,’以及‘,’。    private String name;    //是    父部门id。根部门id为1    private String parentid;    //否    在父部门中的次序值。order值小的排序靠前    private String order;    //否    是否创建一个关联此部门的企业群,默认为false    private Boolean createDeptGroup;            //否    是否隐藏部门, true表示隐藏, false表示显示    private Boolean deptHiding;    //否    可以查看指定隐藏部门的其他部门列表,如果部门隐藏,则此值生效,    //取值为其他的部门id组成的的字符串,使用 | 符号进行分割。总数不能超过200。    private String deptPerimits;    //否    可以查看指定隐藏部门的其他人员列表,如果部门隐藏,则此值生效,取值为其他的人员userid组成的的字符串,    //使用| 符号进行分割。总数不能超过200。    private String userPerimits;    //否    是否本部门的员工仅可见员工自己, 为true时,本部门员工默认只能看到员工自己    private Boolean outerDept;    //否    本部门的员工仅可见员工自己为true时,可以配置额外可见部门,值为部门id组成的的字符串,    //使用|符号进行分割。总数不能超过200。    private String outerPermitDepts;    //否    本部门的员工仅可见员工自己为true时,可以配置额外可见人员,值为userid组成的的字符串,    //使用|符号进行分割。总数不能超过200。    private String outerPermitUsers;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getParentid() {        return parentid;    }    public void setParentid(String parentid) {        this.parentid = parentid;    }    public String getOrder() {        return order;    }    public void setOrder(String order) {        this.order = order;    }    public Boolean getCreateDeptGroup() {        return createDeptGroup;    }    public void setCreateDeptGroup(Boolean createDeptGroup) {        this.createDeptGroup = createDeptGroup;    }    public Boolean getDeptHiding() {        return deptHiding;    }    public void setDeptHiding(Boolean deptHiding) {        this.deptHiding = deptHiding;    }    public String getDeptPerimits() {        return deptPerimits;    }    public void setDeptPerimits(String deptPerimits) {        this.deptPerimits = deptPerimits;    }    public String getUserPerimits() {        return userPerimits;    }    public void setUserPerimits(String userPerimits) {        this.userPerimits = userPerimits;    }    public Boolean getOuterDept() {        return outerDept;    }    public void setOuterDept(Boolean outerDept) {        this.outerDept = outerDept;    }    public String getOuterPermitDepts() {        return outerPermitDepts;    }    public void setOuterPermitDepts(String outerPermitDepts) {        this.outerPermitDepts = outerPermitDepts;    }    public String getOuterPermitUsers() {        return outerPermitUsers;    }    public void setOuterPermitUsers(String outerPermitUsers) {        this.outerPermitUsers = outerPermitUsers;    }    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }}
View Code

 

5.成员管理业务类—UserService

package com.ray.dingtalk.qy.service.contact;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.ray.dingtalk.qy.model.contact.User;import com.ray.dingtalk.qy.util.HttpHelper;/**@desc  : 成员管理业务类 *  * @author: shirayner * @date  : 2017年9月28日 上午9:53:51 */public class UserService {    //1.获取成员详情 接口    private static final String GET_USER_URL="https://oapi.dingtalk.com/user/get?access_token=ACCESS_TOKEN&userid=ID";    //2.创建成员 接口    private static final String CREATE_USER_URL="https://oapi.dingtalk.com/user/create?access_token=ACCESS_TOKEN";    //3.更新成员    private static final String UPDATE_USER_URL="https://oapi.dingtalk.com/user/update?access_token=ACCESS_TOKEN";    //4.删除成员    private static final String DELETE_USER_URL="https://oapi.dingtalk.com/user/delete?access_token=ACCESS_TOKEN&userid=ID";    //5.批量删除成员    private static final String BATCHDELETE_USER_URL="https://oapi.dingtalk.com/user/batchdelete?access_token=ACCESS_TOKEN";    //6.获取部门成员(simplelist)    private static final String LIST_DEPARTMENTUSER_URL="https://oapi.dingtalk.com/user/simplelist?access_token=ACCESS_TOKEN&department_id=DEPARTMENTID";    //7.获取部门成员(详情)    private static final String LIST_DEPARTMENTUSERDETAIL_URL="https://oapi.dingtalk.com/user/list?access_token=ACCESS_TOKEN&department_id=DEPARTMENTID";    //8.获取管理员列表    private static final String LIST_ADMIN_URL="https://oapi.dingtalk.com/user/get_admin?access_token=ACCESS_TOKEN";    //9.根据unionid获取成员的userid    private static final String GET_USERID_BYUNIONID_URL="https://oapi.dingtalk.com/user/getUseridByUnionid?access_token=ACCESS_TOKEN&unionid=UNIONID";    //10.通过CODE换取用户身份    private static final String GET_USERINFO_BYCODE_URL="https://oapi.dingtalk.com/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE";    /** 1.根据userid获取成员详情     * @desc :获取成员详情     *   参考文档: https://open-doc.dingtalk.com/docs/doc.htm?spm=0.0.0.0.jjSfQQ&treeId=371&articleId=106816&docType=1#s0     * @param accessToken     * @param userId      * return JSONObject  返回用户详情     * @throws Exception      */    public JSONObject getUser(String accessToken, String userId) throws Exception {        //1.获取请求url        String url=GET_USER_URL.replace("ACCESS_TOKEN", accessToken).replace("ID", userId);        //2.发起GET请求,获取返回结果        JSONObject jsonObject=HttpHelper.doGet(url);        System.out.println("jsonObject:"+jsonObject.toString());        //3.解析结果,获取User        if (null != jsonObject) {                          //4.请求成功,则返回jsonObject              if (0==jsonObject.getInteger("errcode")) {                  return jsonObject;              }                            //5.错误消息处理              if (0 != jsonObject.getInteger("errcode")) {                    int errCode = jsonObject.getInteger("errcode");                  String errMsg = jsonObject.getString("errmsg");                  throw new Exception("error code:"+errCode+", error message:"+errMsg);               }                      }           return null;    }    /**2.创建成员     * @desc :     *       * @param accessToken     * @param user     * @return  返回用户id     * @throws Exception String     */    public String createUser(String accessToken,User user) throws Exception {        //1.准备POST请求参数        Object data=JSON.toJSON(user);        System.out.println(data);        //2.获取请求url        String url=CREATE_USER_URL.replace("ACCESS_TOKEN", accessToken);        //3.发起POST请求,获取返回结果        JSONObject jsonObject=HttpHelper.doPost(url, data);        System.out.println("jsonObject:"+jsonObject.toString());        //4.解析结果,获取UserId        String userId="";        if (null != jsonObject) {              userId=jsonObject.getString("userid");            //5.错误消息处理            if (0 != jsonObject.getInteger("errcode")) {                  int errCode = jsonObject.getInteger("errcode");                String errMsg = jsonObject.getString("errmsg");                throw new Exception("error code:"+errCode+", error message:"+errMsg);             }          }           return userId;    }    /**3.更新成员     * @desc :     *  参数说明(如果非必须的字段未指定,则钉钉后台不改变该字段之前设置好的值)     * @param accessToken     * @param user     * @return     * @throws Exception String     */    public void updateUser(String accessToken,User user) throws Exception {        //1.准备POST请求参数        Object data=JSON.toJSON(user);        System.out.println(data);        //2.获取请求url        String url=UPDATE_USER_URL.replace("ACCESS_TOKEN", accessToken);        //3.发起POST请求,获取返回结果        JSONObject jsonObject=HttpHelper.doPost(url, data);        System.out.println("jsonObject:"+jsonObject.toString());        //4.解析结果        if (null != jsonObject) {              //5.错误消息处理            if (0 != jsonObject.getInteger("errcode")) {                  int errCode = jsonObject.getInteger("errcode");                String errMsg = jsonObject.getString("errmsg");                throw new Exception("error code:"+errCode+", error message:"+errMsg);             }          }       }    /** 4.删除成员     *     * @param accessToken     * @param userId void     * @throws Exception      */    public JSONObject deleteUser(String accessToken, String userId) throws Exception {        //1.获取请求url        String url=DELETE_USER_URL.replace("ACCESS_TOKEN", accessToken).replace("ID", userId);        //2.发起GET请求,获取返回结果        JSONObject jsonObject=HttpHelper.doGet(url);        System.out.println("jsonObject:"+jsonObject.toString());        //3.解析结果,获取User        if (null != jsonObject) {              //4.请求成功,则返回jsonObject            if (0==jsonObject.getInteger("errcode")) {                return jsonObject;            }            //5.错误消息处理            if (0 != jsonObject.getInteger("errcode")) {                  int errCode = jsonObject.getInteger("errcode");                String errMsg = jsonObject.getString("errmsg");                throw new Exception("error code:"+errCode+", error message:"+errMsg);             }          }           return null;    }    /** 5.批量删除成员     * @desc :     *       * @param accessToken     * @param user     * @throws Exception void     */    public void batchDeleteUser(String accessToken,Map< String , List
> userIdlistMap) throws Exception { //1.准备POST请求参数 Object data=JSON.toJSON(userIdlistMap); System.out.println(data); //2.获取请求url String url=BATCHDELETE_USER_URL.replace("ACCESS_TOKEN", accessToken); //3.发起POST请求,获取返回结果 JSONObject jsonObject=HttpHelper.doPost(url, data); System.out.println("jsonObject:"+jsonObject.toString()); //4.解析结果 if (null != jsonObject) { //5.错误消息处理 if (0 != jsonObject.getInteger("errcode")) { int errCode = jsonObject.getInteger("errcode"); String errMsg = jsonObject.getString("errmsg"); throw new Exception("error code:"+errCode+", error message:"+errMsg); } } } /** 6.获取部门成员(simplelist) * @desc : * * @param accessToken * @param departmentId * return userList 用户列表 * @throws Exception void */ public JSONObject listDepartmentUser(String accessToken, String departmentId) throws Exception { //1.获取请求url String url=LIST_DEPARTMENTUSER_URL.replace("ACCESS_TOKEN", accessToken).replace("DEPARTMENTID", departmentId); //2.发起GET请求,获取返回结果 JSONObject jsonObject=HttpHelper.doGet(url); System.out.println("jsonObject:"+jsonObject.toString()); //3.解析结果,获取User if (null != jsonObject) { //4.请求成功,则返回jsonObject if (0==jsonObject.getInteger("errcode")) { return jsonObject; } //5.错误消息处理 if (0 != jsonObject.getInteger("errcode")) { int errCode = jsonObject.getInteger("errcode"); String errMsg = jsonObject.getString("errmsg"); throw new Exception("error code:"+errCode+", error message:"+errMsg); } } return null; } /** 7.获取部门成员(详情) * @desc : * * @param accessToken * @param departmentId * return userList 用户列表 * @throws Exception void */ public JSONObject listDepartmentUserDetail(String accessToken, String departmentId) throws Exception { //1.获取请求url String url=LIST_DEPARTMENTUSERDETAIL_URL.replace("ACCESS_TOKEN", accessToken).replace("DEPARTMENTID", departmentId); //2.发起GET请求,获取返回结果 JSONObject jsonObject=HttpHelper.doGet(url); System.out.println("jsonObject:"+jsonObject.toString()); //3.解析结果,获取User if (null != jsonObject) { //4.请求成功,则返回jsonObject if (0==jsonObject.getInteger("errcode")) { return jsonObject; } //4.错误消息处理 if (0 != jsonObject.getInteger("errcode")) { int errCode = jsonObject.getInteger("errcode"); String errMsg = jsonObject.getString("errmsg"); throw new Exception("error code:"+errCode+", error message:"+errMsg); } } return null; } /**8.获取管理员列表 * @desc : * * @param accessToken * @return adminList 管理员列表 * @throws Exception JSONObject */ public JSONObject listAdmin(String accessToken) throws Exception { //1.获取请求url String url=LIST_ADMIN_URL.replace("ACCESS_TOKEN", accessToken); //2.发起GET请求,获取返回结果 JSONObject jsonObject=HttpHelper.doGet(url); System.out.println("jsonObject:"+jsonObject.toString()); //3.解析结果,获取adminList if (null != jsonObject) { //4.请求成功,则返回jsonObject if (0==jsonObject.getInteger("errcode")) { return jsonObject; } //5.错误消息处理 if (0 != jsonObject.getInteger("errcode")) { int errCode = jsonObject.getInteger("errcode"); String errMsg = jsonObject.getString("errmsg"); throw new Exception("error code:"+errCode+", error message:"+errMsg); } } return null; } /** 9.根据unionid获取成员的userid * @desc : * * @param accessToken * @param unionId * @return 用户id * @throws Exception JSONObject */ public String getUserIdByUnionId(String accessToken, String unionId) throws Exception { //1.获取请求url String url=GET_USERID_BYUNIONID_URL.replace("ACCESS_TOKEN", accessToken).replace("UNIONID", unionId); //2.发起GET请求,获取返回结果 JSONObject jsonObject=HttpHelper.doGet(url); System.out.println("jsonObject:"+jsonObject.toString()); //3.解析结果,获取User if (null != jsonObject) { //4.请求成功,则返回jsonObject if (0==jsonObject.getInteger("errcode")) { return jsonObject.getString("userid"); } //5.错误消息处理 if (0 != jsonObject.getInteger("errcode")) { int errCode = jsonObject.getInteger("errcode"); String errMsg = jsonObject.getString("errmsg"); throw new Exception("error code:"+errCode+", error message:"+errMsg); } } return null; } /** 10.通过CODE换取用户身份 * @desc :钉钉服务器返回的用户信息为: * userid 员工在企业内的UserID * deviceId 手机设备号,由钉钉在安装时随机产生 * is_sys 是否是管理员 * sys_level 级别,0:非管理员 1:超级管理员(主管理员) 2:普通管理员(子管理员) 100:老板 * * @param accessToken * @param code * @throws Exception void */ public JSONObject getUserInfo(String accessToken,String code) throws Exception { //1.获取请求url String url=GET_USERINFO_BYCODE_URL.replace("ACCESS_TOKEN", accessToken).replace("CODE", code); //2.发起GET请求,获取返回结果 JSONObject jsonObject=HttpHelper.doGet(url); System.out.println("jsonObject:"+jsonObject.toString()); //3.解析结果,获取User if (null != jsonObject) { //4.请求成功,则返回jsonObject if (0==jsonObject.getInteger("errcode")) { return jsonObject; } //5.错误消息处理 if (0 != jsonObject.getInteger("errcode")) { int errCode = jsonObject.getInteger("errcode"); String errMsg = jsonObject.getString("errmsg"); throw new Exception("error code:"+errCode+", error message:"+errMsg); } } return null; }}
View Code

 

6.部门管理业务类—DepartmentServcie

package com.ray.dingtalk.qy.service.contact;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.ray.dingtalk.qy.model.contact.Department;import com.ray.dingtalk.qy.util.HttpHelper;/**@desc  : 部门管理业务类 *  * @author: shirayner * @date  : 2017年10月18日 下午12:39:21 */public class DepartmentServcie {    //1.获取部门列表    private static final String LIST_DEPARTMENT_URL="https://oapi.dingtalk.com/department/list?access_token=ACCESS_TOKEN&id=ID";    //2.获取部门详情    private static final String GET_DEPARTMENTDETAIL_URL="https://oapi.dingtalk.com/department/get?access_token=ACCESS_TOKEN&id=ID";    //3.创建部门    private static final String CREATE_DEPARTMENT_URL="https://oapi.dingtalk.com/department/create?access_token=ACCESS_TOKEN";    //4.更新部门    private static final String UPDATE_DEPARTMENT_URL="https://oapi.dingtalk.com/department/update?access_token=ACCESS_TOKEN";    //5.删除部门    private static final String DELETE_DEPARTMENT_URL="https://oapi.dingtalk.com/department/delete?access_token=ACCESS_TOKEN&id=ID";    //6.查询部门的所有上级父部门路径    private static final String LIST_PARENTDEPTS_BYDEPT_URL="https://oapi.dingtalk.com/department/list_parent_depts_by_dept?access_token=ACCESS_TOKEN&id=ID";    //7.查询指定用户的所有上级父部门路径    private static final String LIST_PARENTDEPTS_BYUSER_URL="https://oapi.dingtalk.com/department/list_parent_depts?access_token=ACCESS_TOKEN&userId=USERID";            /** 1.获取部门列表     * @desc :获取指定部门下的部门列表     *       * @param accessToken     * @param departementId 父部门id     * @return     * @throws Exception JSONObject     */    public JSONObject listDepartment(String accessToken,String departmentId) throws Exception {        //1.准备请求url        String url=LIST_DEPARTMENT_URL.replace("ACCESS_TOKEN", accessToken).replace("ID", departmentId);        //2.调用接口,发送请求        JSONObject jsonObject=HttpHelper.doGet(url);        System.out.println(jsonObject);        //3.解析请求结果        if (null != jsonObject) {              //4.请求成功,则返回jsonObject            if (0==jsonObject.getInteger("errcode")) {                return jsonObject;            }            //5.错误消息处理            if (0 != jsonObject.getInteger("errcode")) {                  int errCode = jsonObject.getInteger("errcode");                String errMsg = jsonObject.getString("errmsg");                throw new Exception("error code:"+errCode+", error message:"+errMsg);             }          }           return null;    }    /** 2.获取部门详情     * @desc :     *       * @param accessToken     * @param departementId 部门id     * @return     * @throws Exception JSONObject     */    public JSONObject getDepartmentDetail(String accessToken,String departmentId) throws Exception {        //1.准备请求url        String url=GET_DEPARTMENTDETAIL_URL.replace("ACCESS_TOKEN", accessToken).replace("ID", departmentId);        //2.调用接口,发送请求        JSONObject jsonObject=HttpHelper.doGet(url);        System.out.println(jsonObject);        //3.解析请求结果        if (null != jsonObject) {              //4.请求成功,则返回jsonObject            if (0==jsonObject.getInteger("errcode")) {                return jsonObject;            }            //5.错误消息处理            if (0 != jsonObject.getInteger("errcode")) {                  int errCode = jsonObject.getInteger("errcode");                String errMsg = jsonObject.getString("errmsg");                throw new Exception("error code:"+errCode+", error message:"+errMsg);             }          }           return null;    }    /** 3.创建部门     * @desc :     *       * @param accessToken     * @param department     * @return     * @throws Exception String     */    public String createDepartment(String accessToken,Department department) throws Exception {        //1.准备POST请求参数        Object data=JSON.toJSON(department);        System.out.println(data);        //2.获取请求url        String url=CREATE_DEPARTMENT_URL.replace("ACCESS_TOKEN", accessToken);        //3.发起POST请求,获取返回结果        JSONObject jsonObject=HttpHelper.doPost(url, data);        System.out.println("jsonObject:"+jsonObject.toString());        //4.解析结果,获取UserId        String departmentId="";        if (null != jsonObject) {              departmentId=jsonObject.getString("id");            //5.错误消息处理            if (0 != jsonObject.getInteger("errcode")) {                  int errCode = jsonObject.getInteger("errcode");                String errMsg = jsonObject.getString("errmsg");                throw new Exception("error code:"+errCode+", error message:"+errMsg);             }          }           return departmentId;    }    /** 4.更新部门     * @desc :     *       * @param accessToken     * @param department    其中id是必须的     * @return     * @throws Exception String     */    public void updateDepartment(String accessToken,Department department) throws Exception {        //1.准备POST请求参数        Object data=JSON.toJSON(department);        System.out.println(data);        //2.获取请求url        String url=UPDATE_DEPARTMENT_URL.replace("ACCESS_TOKEN", accessToken);        //3.发起POST请求,获取返回结果        JSONObject jsonObject=HttpHelper.doPost(url, data);        System.out.println("jsonObject:"+jsonObject.toString());        //4.解析结果        if (null != jsonObject) {              //5.错误消息处理            if (0 != jsonObject.getInteger("errcode")) {                  int errCode = jsonObject.getInteger("errcode");                String errMsg = jsonObject.getString("errmsg");                throw new Exception("error code:"+errCode+", error message:"+errMsg);             }          }       }    /**5.删除部门     * @desc :     *       * @param accessToken     * @param departmentId     * @throws Exception void     */      public void deleteDepartment(String accessToken,String departmentId) throws Exception {        //1.准备请求url          String url=DELETE_DEPARTMENT_URL.replace("ACCESS_TOKEN", accessToken).replace("ID", departmentId);          //2.调用接口,发送请求          JSONObject jsonObject=HttpHelper.doGet(url);          System.out.println(jsonObject);          //3.解析请求结果          if (null != jsonObject) {                          //5.错误消息处理              if (0 != jsonObject.getInteger("errcode")) {                    int errCode = jsonObject.getInteger("errcode");                  String errMsg = jsonObject.getString("errmsg");                  throw new Exception("error code:"+errCode+", error message:"+errMsg);               }            }               }      /** 6.查询部门的所有上级父部门路径       * @desc :       *  返回的结果按顺序依次为其所有父部门的ID,直到根部门       * @param accessToken       * @param departementId 部门id       * @return       * @throws Exception JSONObject       */      public JSONObject listParentDepartementsByDept(String accessToken,String departmentId) throws Exception {          //1.准备请求url          String url=LIST_PARENTDEPTS_BYDEPT_URL.replace("ACCESS_TOKEN", accessToken).replace("ID", departmentId);          //2.调用接口,发送请求          JSONObject jsonObject=HttpHelper.doGet(url);          System.out.println(jsonObject);          //3.解析请求结果          if (null != jsonObject) {                //4.请求成功,则返回jsonObject              if (0==jsonObject.getInteger("errcode")) {                  return jsonObject;              }              //5.错误消息处理              if (0 != jsonObject.getInteger("errcode")) {                    int errCode = jsonObject.getInteger("errcode");                  String errMsg = jsonObject.getString("errmsg");                  throw new Exception("error code:"+errCode+", error message:"+errMsg);               }            }             return null;      }                  /** 7.查询指定用户的所有上级父部门路径       * @desc :       *  返回的结果按顺序依次为其所有父部门的ID,直到根部门       * @param accessToken       * @param departementId 部门id       * @return       * @throws Exception JSONObject       */      public JSONObject listParentDepartementsByUser(String accessToken,String userID) throws Exception {          //1.准备请求url          String url=LIST_PARENTDEPTS_BYUSER_URL.replace("ACCESS_TOKEN", accessToken).replace("USERID", userID);                    //2.调用接口,发送请求          JSONObject jsonObject=HttpHelper.doGet(url);          System.out.println(jsonObject);                    //3.解析请求结果          if (null != jsonObject) {                //4.请求成功,则返回jsonObject              if (0==jsonObject.getInteger("errcode")) {                  return jsonObject;              }              //5.错误消息处理              if (0 != jsonObject.getInteger("errcode")) {                    int errCode = jsonObject.getInteger("errcode");                  String errMsg = jsonObject.getString("errmsg");                  throw new Exception("error code:"+errCode+", error message:"+errMsg);               }            }                       return null;      }                        }
View Code

 

7.成员管理测试类—UserServiceTest

package com.ray.dingtalk.qy.service.contact;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.junit.Test;import com.ray.dingtalk.qy.auth.AuthHelper;import com.ray.dingtalk.qy.config.Env;import com.ray.dingtalk.qy.model.contact.User;/**@desc  : 成员管理测试类 *  * @author: shirayner * @date  : 2017年9月28日 上午10:09:34 */public class UserServiceTest {        /**     * @desc :1.获取成员     *       * @throws Exception void     */    @Test    public void testGetUser() throws Exception {        String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET);        String userId="manager6777";                UserService us=new UserService();        us.getUser(accessToken, userId);                    }        /**     * @desc :2.创建成员     *       * @throws Exception void     */    @Test    public void testCreateUser() throws Exception {        String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET);                User user=new User();        user.setName("测试2");         //王子明        List
departmentList=new ArrayList
(); departmentList.add(new Long(53191107)); user.setDepartment(departmentList); user.setUserid("ceishi2");; user.setMobile("18771419624"); //18771419627 UserService us=new UserService(); String userId=us.createUser(accessToken, user); System.out.println("userId:"+userId); } /** 3.更新成员 * @desc :参数说明(如果非必须的字段未指定,则钉钉后台不改变该字段之前设置好的值) * * @throws Exception void */ @Test public void testUpdateUser() throws Exception { String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET); User user=new User(); user.setName("测试专用"); List
departmentList=new ArrayList
(); departmentList.add(new Long(1)); user.setDepartment(departmentList); user.setMobile("13764363757"); user.setUserid("142322032127997575"); user.setPosition("网管"); UserService us=new UserService(); us.updateUser(accessToken, user); } /** 4.删除成员 * @desc : * * @throws Exception void */ @Test public void testDeleteUser() throws Exception { String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET); String userId="142322032127997575"; UserService us=new UserService(); us.deleteUser(accessToken, userId); } /** 5.批量删除成员 * @desc : * * @throws Exception void */ @Test public void testBatchDeleteUser() throws Exception { String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET); //1.1为构造JSon做准备:["ceishi1","ceishi2"] List
userIdlist=new ArrayList
(); userIdlist.add("ceishi1"); userIdlist.add("ceishi2"); //1.2为构造JSon做准备:{"useridlist":["ceishi1","ceishi2"]} Map< String , List
> userIdListMap=new HashMap< String, List
>(); userIdListMap.put("useridlist", userIdlist); UserService us=new UserService(); us.batchDeleteUser(accessToken, userIdListMap); } /** 6.获取部门成员(simplelist) * @desc : * * @throws Exception void */ @Test public void testListDepartmentUser() throws Exception { String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET); String departmentId="1"; UserService us=new UserService(); us.listDepartmentUser(accessToken, departmentId); } /** 7.获取部门成员(详情) * @desc : * * @throws Exception void */ @Test public void testListDepartmentUserDetail() throws Exception { String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET); String departmentId="1"; UserService us=new UserService(); us.listDepartmentUserDetail(accessToken, departmentId); } /** 8.获取管理员列表 * @desc : * * @throws Exception void */ @Test public void testListAdmin() throws Exception { String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET); UserService us=new UserService(); us.listAdmin(accessToken); } }
View Code

 

8.部门管理测试类—DepartmentServcieTest

package com.ray.dingtalk.qy.service.contact;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.junit.Test;import com.alibaba.fastjson.JSONObject;import com.ray.dingtalk.qy.auth.AuthHelper;import com.ray.dingtalk.qy.config.Env;import com.ray.dingtalk.qy.model.contact.Department;/**@desc  : 部门管理测试类 *  * @author: shirayner * @date  : 2017年10月18日 下午1:31:32 */public class DepartmentServcieTest {    private static final Logger log = LogManager.getLogger(DepartmentServcieTest.class);        /** 1.获取部门列表     * @throws Exception      * @desc :     *   void     */    @Test    public void testListDepartement() throws Exception {        String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET);        String departmentId="1";        DepartmentServcie departmentServcie= new DepartmentServcie();              JSONObject jsonObject=departmentServcie.listDepartment(accessToken, departmentId);        log.info(jsonObject);            }        /** 2.获取部门详情     * @throws Exception      * @desc :     *   void     */    @Test    public void testGetDepartementDetail() throws Exception {        String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET);        String departmentId="1";        DepartmentServcie departmentServcie= new DepartmentServcie();              JSONObject jsonObject=departmentServcie.getDepartmentDetail(accessToken, departmentId);        log.info(jsonObject);            }    /** 3.创建部门     * @throws Exception      * @desc :     *   void     */    @Test    public void testCreateDepartment() throws Exception {        String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET);        Department department =new Department();        department.setName("HEC北京分公司");        department.setParentid("1");                        DepartmentServcie departmentServcie= new DepartmentServcie();              String departmentId=departmentServcie.createDepartment(accessToken, department);        log.info(departmentId);            }            /** 4.更新部门     *      * @throws Exception      * @desc :     *   void     */    @Test    public void testUpdateDepartment() throws Exception {        String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET);                Department department =new Department();        department.setName("HEC大汉分公司");        department.setId(53125124);                DepartmentServcie departmentServcie= new DepartmentServcie();              departmentServcie.updateDepartment(accessToken, department);                    }        /** 5.删除部门     * @throws Exception      * @desc :     *   void     */    @Test    public void testDeleteDepartement() throws Exception {        String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET);                String departmentId="53181144";                DepartmentServcie departmentServcie= new DepartmentServcie();              departmentServcie.deleteDepartment(accessToken, departmentId);            }        /** 6.查询部门的所有上级父部门路径     * @throws Exception      * @desc :     *   void     */    @Test    public void testListParentDepartementsByDept() throws Exception {        String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET);                String departmentId="53191107";                DepartmentServcie departmentServcie= new DepartmentServcie();              JSONObject jsonObject=departmentServcie.listParentDepartementsByDept(accessToken, departmentId);        log.info(jsonObject.get("parentIds"));            }            /** 7.查询指定用户的所有上级父部门路径     * @throws Exception      * @desc :     *   void     */    @Test    public void testListParentDepartementsByUser() throws Exception {        String accessToken=AuthHelper.getAccessToken(Env.CORP_ID, Env.CORP_SECRET);                String userID="ceishi2";                DepartmentServcie departmentServcie= new DepartmentServcie();              JSONObject jsonObject=departmentServcie.listParentDepartementsByUser(accessToken, userID);        log.info(jsonObject.get("department"));            }}
View Code

 

转载地址:http://ppzvl.baihongyu.com/

你可能感兴趣的文章