在上篇隨筆《C#開發微信門戶及應用(17)-微信企業號的通訊錄管理開發之部門管理》介紹了通訊錄的部門的相關操作管理,通訊錄管理包括部門管理、成員管理、標籤管理三個部分,本篇主要介紹成員的管理操作,包括建立、刪除、更新、取得、取得部門成員幾個操作要點。
為了方便,我們可以創建一個部門組織結構,這是開發的前提,因為我們通訊錄管理,也是基於一個組織機構下的,如上篇介紹的組織結構層次一樣。我在這裡創建一個廣州愛奇迪的根結構,然後在其中在創建一些組織機構,如下圖所示。
在後台可以透過功能操作新增人員,本篇主要介紹如何呼叫微信企業號API進行人員管理的操作。
創建者的API定義如下圖所示。
請求說明
Https請求方式: POST
https://qyapi.weixin.qq.com/cgi-bin/user/create?opfess_token_ACCSaccTO.
{ "userid": "zhangsan", "name": "张三", "department": [1, 2], "position": "产品经理", "mobile": "15913215421", "gender": 1, "tel": "62394", "email": "zhangsan@gzdev.com", "weixinid": "zhangsan4dev" }參數說明
說明 | 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個字 | |||||||||||||||||||||||||||||||||||
郵箱。長度為0~64個字元。企業內必須唯一 | weixinid | ||||||||||||||||||||||||||||||||||
微訊號。企業內必須唯一 |
管理员须拥有“操作通讯录”的接口权限,以及指定部门的管理权限。
{ "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 = "http://www.php.cn/{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); }
2、成员的更新操作成员的数据更新和创建操作类似,它的企业号定义如下所示。
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 = "http://www.php.cn/{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); }
3、成员的删除、成员的获取、部门成员的获取操作这些操作和上面的类似,不在赘述,主要就是根据需要定义他们对应的返回数据信息,然后解析Json数据即可转换为对应的实体。 1)删除人员的定义如下:
Https请求方式: GET https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token=ACCESS_TOKEN&userid=lisi
{ "errcode": 0, "errmsg": "deleted" } 2)成员的获取定义如下:
Https请求方式: GET https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=lisi
{ "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
管理员须拥有’获取部门成员’的接口权限,以及指定部门的查看权限。
{ "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; } }</corpusersimplejson></corpusersimplejson>
7、综合例子调用代码上面介绍了一些企业号的接口定义和我对API的C#封装接口和部分实现代码,实现了功能后,我们就可以在代码中对它进行测试,确信是否正常使用。 /// <summary> /// 人员管理综合性操作(创建、修改、获取信息、删除) /// </summary> /// <param> /// <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); } } }</int> 获取部门人员的操作代码如下所示。 /// <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); } } }
更多C#開發微信入口網站及應用-微信企業號的通訊錄管理開發之成員管理相关文章请关注PHP中文网! |