本篇主要介绍成员的管理操作,包括创建、删除、更新、获取、获取部门成员几个操作要点。
AD:
在上篇随笔《微信企业号的通讯录管理开发之部门管理》介绍了通讯录的部门的相关操作管理,通讯录管理包括部门管理、成员管理、标签管理三个部分,本篇主要介绍成员的管理操作,包括创建、删除、更新、获取、获取部门成员几个操作要点。
为了方便,们可以创建一个部门组织结构,这是开发的前提,因为们通讯录管理,也是基于一个组织机构下的,如上篇介绍的组织结构层次一样。这里创建一个广州爱奇迪的根结构,然后在其中在创建一些组织机构,如下图所示。
在后台可以通过功能操作添加人员,本篇主要介绍如何调用微信企业号API进行人员管理的操作。
创建人员的API定义如下所示。
Https请求方式: POST
https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=ACCESS_TOKEN
请求包结构体为:
{ userid : zhangsan , name : 张三 , department : [1, 2], position : 产品经理 , mobile : 15913215421 , gender : 1, tel : 62394 , email : zhangsan@gzdev.com , weixinid : zhangsan4dev }
{ errcode : 0, errmsg : created }
们在C#里面,需要定义对应给的接口,然后根据需要构造对应的传递实体信息。
这里把人员管理的接口全部定义好,接口定义如下所示。
#region 部门成员管理 /// summary /// 创建成员 /// /summary CommonResult CreateUser(string accessToken, CorpUserJson user); /// summary /// 更新成员 /// /summary CommonResult UpdateUser(string accessToken, CorpUserUpdateJson user); /// summary /// 删除成员 /// /summary CommonResult DeleteUser(string accessToken, string userid); /// summary /// 根据成员id获取成员信息 /// /summary CorpUserGetJson GetUser(string accessToken, string userid); /// summary /// 获取部门成员 /// /summary CorpUserListJson GetDeptUser(string accessToken, int department_id, int fetch_child = 0, int status = 0); #endregion
然后根据信息定义,创建一个承载人员信息的CorpUserJson实体对象,创建人员的实现操作代码如下所示。
/// summary /// 创建成员 /// /summary public CommonResult CreateUser(string accessToken, CorpUserJson user) { string urlFormat = https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token={0} ; var data = new { userid = user.userid, name = user.name, department = user.department, position = user.position, mobile = user.mobile, gender = user.gender, tel = user.tel, email = user.email, weixinid = user.weixinid }; var url = string.Format(urlFormat, accessToken); var postData = data.ToJson(); return Helper.GetCorpExecuteResult(url, postData); }
成员的数据更新和创建操作类似,它的企业号定义如下所示。
Https请求方式: POST
https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token=ACCESS_TOKEN
请求包示例如下(如果非必须的字段未指定,则不更新该字段之前的设置值):
{ userid : zhangsan , name : 李四 , department : [1], position : 后台工程师 , mobile : 15913215421 , gender : 1, tel : 62394 , email : zhangsan@gzdev.com , weixinid : lisifordev , enable : 1 }
由于它的操作数据类似,因此它的实现代码也差不多,如下所示就是。
/// summary /// 更新成员 /// /summary public CommonResult UpdateUser(string accessToken, CorpUserUpdateJson user) { string urlFormat = https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token={0} ; //string postData = user.ToJson(); var data = new { userid = user.userid, name = user.name, department = user.department, position = user.position, mobile = user.mobile, gender = user.gender, tel = user.tel, email = user.email, weixinid = user.weixinid, enable = user.enable }; var url = string.Format(urlFormat, accessToken); var postData = data.ToJson(); return Helper.GetCorpExecuteResult(url, postData); }
这些操作和上面的类似,不在赘述,主要就是根据需要定义他们对应的返回数据信息,然后解析Json数据即可转换为对应的实体。
Https请求方式: GET
https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token=ACCESS_TOKEN userid=lisi
{ errcode : 0, errmsg : ok , userlist : [ { userid : zhangsan , name : 李四 } ] }
这个返回值们定义一个实体对象用来存储数据即可。
/// summary /// 获取部门成员返回的数据 /// /summary public class CorpUserListJson : BaseJsonResult { public CorpUserListJson() { this.userlist = new List CorpUserSimpleJson } /// summary /// 返回的错误消息 /// /summary public CorpReturnCode errcode { get; set; } /// summary /// 对返回码的文本描述内容 /// /summary public string errmsg { get; set; } /// summary /// 成员列表 /// /summary public List CorpUserSimpleJson userlist { get; set; } }
上面介绍了一些企业号的接口定义和对API的C#封装接口和部分实现代码,实现了功能后,们就可以在代码中对它进行测试,确信是否正常使用。
/// summary /// 人员管理综合性操作(创建、修改、获取信息、删除) /// /summary /// param name= sender /param /// param name= e /param private void btnCorpUser_Click(object sender, EventArgs e) { CorpUserJson user = new CorpUserJson(); user.userid = test ; user.name = 测试用户 ; user.department = new List int (){2}; user.email = test@163.com ; ICorpAddressBookApi bll = new CorpAddressBookApi(); CommonResult result = bll.CreateUser(token, user); if (result != null) { Console.WriteLine( 创建成员:{0} {1} {2} , user.name, (result.Success ? 成功 : 失败 ), result.ErrorMessage); string name = 修改测试 ; user.name = name; CorpUserUpdateJson userUpdate = new CorpUserUpdateJson(user); result = bll.UpdateUser(token, userUpdate); if (result != null) { Console.WriteLine( 修改名称:{0} {1} {2} , name, (result.Success ? 成功 : 失败 ), result.ErrorMessage); } CorpUserGetJson userGet = bll.GetUser(token, user.userid); if (userGet != null) { Console.WriteLine( 成员名称:{0} ({1} {2}) , userGet.name, user.userid, user.email); } result = bll.DeleteUser(token, user.userid); if (result != null) { Console.WriteLine( 删除成员:{0} {1} {2} , name, (result.Success ? 成功 : 失败 ), result.ErrorMessage); } } }
获取部门人员的操作代码如下所示。
/// summary /// 获取部门人员 /// /summary private void btnCorpUserList_Click(object sender, EventArgs e) { int deptId = 1; ICorpAddressBookApi bll = new CorpAddressBookApi(); CorpUserListJson result = bll.GetDeptUser(token, deptId); if (result != null) { foreach(CorpUserSimpleJson item in result.userlist) { Console.WriteLine( 成员名称:{0} {1} , item.name, item.userid); } } }
人员的管理,相对来说比较简单,主要是在一定的部门下创建人员,然后也可以给标签增加相应的人员,基本上就是这些了,不过一定需要确保有相应的权限进行操作。
原文出自:http://www.cnblogs.com/wuhuacong/p/3995484.html