微信企业号的通讯录管理开发之成员管理

开发 后端
本篇主要介绍成员的管理操作,包括创建、删除、更新、获取、获取部门成员几个操作要点。

在上篇随笔《微信企业号的通讯录管理开发之部门管理》介绍了通讯录的部门的相关操作管理,通讯录管理包括部门管理、成员管理、标签管理三个部分,本篇主要介绍成员的管理操作,包括创建、删除、更新、获取、获取部门成员几个操作要点。

1、成员的创建操作

为了方便,我们可以创建一个部门组织结构,这是开发的前提,因为我们通讯录管理,也是基于一个组织机构下的,如上篇介绍的组织结构层次一样。我这里创建一个广州爱奇迪的根结构,然后在其中在创建一些组织机构,如下图所示。

在后台可以通过功能操作添加人员,本篇主要介绍如何调用微信企业号API进行人员管理的操作。

创建人员的API定义如下所示。

  • 请求说明

Https请求方式: POST

https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=ACCESS_TOKEN

请求包结构体为:

  1. {  
  2.    "userid""zhangsan",  
  3.    "name""张三",  
  4.    "department": [1, 2],  
  5.    "position""产品经理",  
  6.    "mobile""15913215421",  
  7.    "gender": 1,  
  8.    "tel""62394",  
  9.    "email""zhangsan@gzdev.com",  
  10.    "weixinid""zhangsan4dev" 
  11. }  
  • 参数说明

参数 必须 说明
access_token 调用接口凭证
userid 员工UserID。对应管理端的帐号,企业内必须***。长度为1~64个字符
name 成员名称。长度为1~64个字符
department 成员所属部门id列表。注意,每个部门的直属员工上限为1000个
position 职位信息。长度为0~64个字符
mobile 手机号码。企业内必须***,mobile/weixinid/email三者不能同时为空
gender 性别。gender=0表示男,=1表示女。默认gender=0
tel 办公电话。长度为0~64个字符
email 邮箱。长度为0~64个字符。企业内必须***
weixinid 微信号。企业内必须***

  • 权限说明

管理员须拥有“操作通讯录”的接口权限,以及指定部门的管理权限。

  • 返回结果

 

  1. {  
  2.    "errcode": 0,  
  3.    "errmsg""created" 
  4. }  

 

 我们在C#里面,需要定义对应给的接口,然后根据需要构造对应的传递实体信息。

这里我把人员管理的接口全部定义好,接口定义如下所示。

  1. #region 部门成员管理  
  2.         /// <summary>  
  3.         /// 创建成员  
  4.         /// </summary>  
  5.         CommonResult CreateUser(string accessToken, CorpUserJson user);  
  6.  
  7.         /// <summary>  
  8.         /// 更新成员  
  9.         /// </summary>  
  10.         CommonResult UpdateUser(string accessToken, CorpUserUpdateJson user);  
  11.  
  12.         /// <summary>  
  13.         /// 删除成员  
  14.         /// </summary>  
  15.         CommonResult DeleteUser(string accessToken, string userid);  
  16.  
  17.         /// <summary>  
  18.         /// 根据成员id获取成员信息  
  19.         /// </summary>  
  20.         CorpUserGetJson GetUser(string accessToken, string userid);  
  21.  
  22.         /// <summary>  
  23.         /// 获取部门成员  
  24.         /// </summary>  
  25.         CorpUserListJson GetDeptUser(string accessToken, int department_id, int fetch_child = 0, int status = 0);  
  26.         #endregion 

然后根据信息定义,创建一个承载人员信息的CorpUserJson实体对象,创建人员的实现操作代码如下所示。

  1. /// <summary>  
  2.         /// 创建成员  
  3.         /// </summary>  
  4.         public CommonResult CreateUser(string accessToken, CorpUserJson user)  
  5.         {  
  6.             string urlFormat = "https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token={0}";  
  7.             var data = new 
  8.             {  
  9.                 userid = user.userid,  
  10.                 name = user.name,  
  11.                 department = user.department,  
  12.                 position = user.position,  
  13.                 mobile = user.mobile,  
  14.                 gender = user.gender,  
  15.                 tel = user.tel,  
  16.                 email = user.email,  
  17.                 weixinid = user.weixinid  
  18.             };  
  19.             var url = string.Format(urlFormat, accessToken);  
  20.             var postData = data.ToJson();  
  21.  
  22.             return Helper.GetCorpExecuteResult(url, postData);  
  23.         } 

2、成员的更新操作

成员的数据更新和创建操作类似,它的企业号定义如下所示。

  • 请求说明

Https请求方式: POST

https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token=ACCESS_TOKEN

请求包示例如下(如果非必须的字段未指定,则不更新该字段之前的设置值):

 

  1. {  
  2.    "userid""zhangsan",  
  3.    "name""李四",  
  4.    "department": [1],  
  5.    "position""后台工程师",  
  6.    "mobile""15913215421",  
  7.    "gender": 1,  
  8.    "tel""62394",  
  9.    "email""zhangsan@gzdev.com",  
  10.    "weixinid""lisifordev",  
  11.    "enable": 1  

 

由于它的操作数据类似,因此它的实现代码也差不多,如下所示就是。

  1. /// <summary>  
  2.         /// 更新成员  
  3.         /// </summary>  
  4.         public CommonResult UpdateUser(string accessToken, CorpUserUpdateJson user)  
  5.         {  
  6.             string urlFormat = "https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token={0}";  
  7.             //string postData = user.ToJson();  
  8.             var data = new 
  9.             {  
  10.                 userid = user.userid,  
  11.                 name = user.name,  
  12.                 department = user.department,  
  13.                 position = user.position,  
  14.                 mobile = user.mobile,  
  15.                 gender = user.gender,  
  16.                 tel = user.tel,  
  17.                 email = user.email,  
  18.                 weixinid = user.weixinid,  
  19.                 enable = user.enable  
  20.             };  
  21.             var url = string.Format(urlFormat, accessToken);  
  22.             var postData = data.ToJson();  
  23.  
  24.             return Helper.GetCorpExecuteResult(url, postData);  
  25.         } 

3、成员的删除、成员的获取、部门成员的获取操作

这些操作和上面的类似,不在赘述,主要就是根据需要定义他们对应的返回数据信息,然后解析Json数据即可转换为对应的实体。

1)删除人员的定义如下:

  • 请求说明

Https请求方式: GET

https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token=ACCESS_TOKEN&userid=lisi

  • 参数说明

参数 必须 说明
access_token 调用接口凭证
userid 员工UserID。对应管理端的帐号

  • 返回结果
{
   "errcode": 0,
   "errmsg": "deleted"
}

2)成员的获取定义如下:

  • 请求说明

Https请求方式: GET

https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=lisi

  • 参数说明

参数 必须 说明
access_token 调用接口凭证
userid 员工UserID

  • 返回结果
{
   "errcode": 0,
   "errmsg": "ok",
   "userid": "zhangsan",
   "name": "李四",
   "department": [1, 2],
   "position": "后台工程师",
   "mobile": "15913215421",
   "gender": 1,
   "tel": "62394",
   "email": "zhangsan@gzdev.com",
   "weixinid": "lisifordev",  
   "avatar": "http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0",
   "status": 1
}

3)部门成员的获取定义如下:

  • 请求说明

Https请求方式: GET

https://qyapi.weixin.qq.com/cgi-bin/user/simplelist?access_token=ACCESS_TOKEN&department_id=1&fetch_child=0&status=0

  • 参数说明

参数 必须 说明
access_token 调用接口凭证
department_id 获取的部门id
fetch_child 1/0:是否递归获取子部门下面的成员
status 0获取全部员工,1获取已关注成员列表,2获取禁用成员列表,4获取未关注成员列表。status可叠加

  • 权限说明

管理员须拥有’获取部门成员’的接口权限,以及指定部门的查看权限。

  • 返回结果

 

  1. {  
  2.    "errcode": 0,  
  3.    "errmsg""ok",  
  4.    "userlist": [  
  5.            {  
  6.                   "userid""zhangsan",  
  7.                   "name""李四" 
  8.            }  
  9.      ]  

 

这个返回值我们定义一个实体对象用来存储数据即可。

  1. /// <summary>  
  2.     /// 获取部门成员返回的数据  
  3.     /// </summary>  
  4.     public class CorpUserListJson : BaseJsonResult  
  5.     {  
  6.         public CorpUserListJson()  
  7.         {  
  8.             this.userlist = new List<CorpUserSimpleJson>();  
  9.         }  
  10.  
  11.         /// <summary>  
  12.         /// 返回的错误消息  
  13.         /// </summary>  
  14.         public CorpReturnCode errcode { getset; }  
  15.  
  16.         /// <summary>  
  17.         /// 对返回码的文本描述内容  
  18.         /// </summary>  
  19.         public string errmsg { getset; }  
  20.  
  21.         /// <summary>  
  22.         /// 成员列表  
  23.         /// </summary>  
  24.         public List<CorpUserSimpleJson> userlist { getset; }  
  25.     } 

7、综合例子调用代码

上面介绍了一些企业号的接口定义和我对API的C#封装接口和部分实现代码,实现了功能后,我们就可以在代码中对它进行测试,确信是否正常使用。

  1. /// <summary>  
  2.         /// 人员管理综合性操作(创建、修改、获取信息、删除)  
  3.         /// </summary>  
  4.         /// <param name="sender"></param>  
  5.         /// <param name="e"></param>  
  6.         private void btnCorpUser_Click(object sender, EventArgs e)  
  7.         {  
  8.             CorpUserJson user = new CorpUserJson();  
  9.             user.userid = "test";  
  10.             user.name ="测试用户";  
  11.             user.department = new List<int>(){2};  
  12.             user.email = "test@163.com";  
  13.  
  14.             ICorpAddressBookApi bll = new CorpAddressBookApi();  
  15.             CommonResult result = bll.CreateUser(token, user);  
  16.             if (result != null)  
  17.             {  
  18.                 Console.WriteLine("创建成员:{0} {1} {2}", user.name, (result.Success ? "成功" : "失败"), result.ErrorMessage);  
  19.  
  20.                 string name = "修改测试";  
  21.                 user.name = name;  
  22.                 CorpUserUpdateJson userUpdate = new CorpUserUpdateJson(user);  
  23.                 result = bll.UpdateUser(token, userUpdate);  
  24.                 if (result != null)  
  25.                 {  
  26.                     Console.WriteLine("修改名称:{0} {1} {2}", name, (result.Success ? "成功" : "失败"), result.ErrorMessage);  
  27.                 }  
  28.  
  29.                 CorpUserGetJson userGet = bll.GetUser(token, user.userid);  
  30.                 if (userGet != null)  
  31.                 {  
  32.                     Console.WriteLine("成员名称:{0} ({1} {2})", userGet.name, user.userid, user.email);  
  33.                 }  
  34.  
  35.                 result = bll.DeleteUser(token, user.userid);  
  36.                 if (result != null)  
  37.                 {  
  38.                     Console.WriteLine("删除成员:{0} {1} {2}", name, (result.Success ? "成功" : "失败"), result.ErrorMessage);  
  39.                 }  
  40.             }  
  41.         } 

获取部门人员的操作代码如下所示。

  1. /// <summary>  
  2.         /// 获取部门人员  
  3.         /// </summary>  
  4.         private void btnCorpUserList_Click(object sender, EventArgs e)  
  5.         {  
  6.             int deptId = 1;  
  7.             ICorpAddressBookApi bll = new CorpAddressBookApi();  
  8.             CorpUserListJson result = bll.GetDeptUser(token, deptId);  
  9.             if (result != null)  
  10.             {  
  11.                 foreach(CorpUserSimpleJson item in result.userlist)  
  12.                 {  
  13.                     Console.WriteLine("成员名称:{0} {1}", item.name, item.userid);  
  14.                 }  
  15.             }  
  16.         } 

人员的管理,相对来说比较简单,主要是在一定的部门下创建人员,然后也可以给标签增加相应的人员,基本上就是这些了,不过一定需要确保有相应的权限进行操作。

原文出自:http://www.cnblogs.com/wuhuacong/p/3995484.html

责任编辑:林师授 来源: 伍华聪的博客
相关推荐

2014-09-24 10:29:14

微信企业号开发

2014-09-28 22:26:11

微信企业号

2011-09-05 14:08:21

微信Andriod安卓

2014-09-28 22:38:21

微信企业号

2014-09-24 11:04:31

微信企业号开发

2014-09-25 13:19:35

微信企业号

2015-07-30 15:58:15

EC企信企业即时通讯

2014-09-24 11:11:08

微信企业号开发

2014-09-24 11:32:21

微信企业号开发

2014-09-24 09:59:23

微信企业号开发

2022-01-04 15:34:31

鸿蒙HarmonyOS应用

2010-09-08 23:11:01

2021-12-10 10:12:44

鸿蒙HarmonyOS应用

2010-05-12 14:42:20

2014-11-26 17:56:44

BQ企业即时通

2014-09-24 11:45:15

微信企业号开发

2014-09-25 14:17:31

微信企业号案例

2013-06-21 17:46:24

2014-09-25 14:13:11

微信企业号案例

2014-09-24 11:52:37

微信企业号开发
点赞
收藏

51CTO技术栈公众号