C#-MVC开发微信应用(6)--用户分组信息管理
让我们继续深入探索这方面的技术,为了更好的应用起来,专心做好底层的技术开发。本篇继续上一篇的介绍,主要介绍分组管理方面的开发应用,这篇的内容和上一篇,作为一个完整的用户信息和分组信息管理的组合。
1、用户分组管理内容
用户分组的引入,主要是方便管理关注者列表,以及方便向不同的组别发送消息的操作的,一个公众账号,最多支持创建500个分组。
用户分组管理,包含下面几个方面的内容:
1 创建分组
2 查询所有分组
3 查询用户所在分组
4 修改分组名
5 移动用户分组
6.删除分组
微信对于创建分组的定义如下所示。
http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN
POST数据格式:json
POST数据例子:{"group":{"name":"test"}}
正常返回的结果如下所示。
{
"group": {
"id": 107,
"name": "test"
}
}
其他接口,也是类似的方式,通过POST一些参数进去URL里面,获取返回的Json数据。
前面随笔定义了GroupJson的实体类信息如下所示。
/// <summary>
/// 分组类
/// </summary>
public class GroupJson : BaseJsonResult
{
/// <summary>
/// 分组id,由微信分配
/// </summary>
public int id { get; set; } /// <summary>
/// 分组名字,UTF8编码
/// </summary>
public string name { get; set; } /// <summary>
/// 分组人数
/// </summary>
public string count { get; set; } }
根据以上几个接口的定义,我定义了几个接口,并把它们归纳到用户管理的API接口里面。
public interface IGroupApi
{
/// <summary>
/// 查询所有分组
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <returns></returns>
List<GroupJson> GetGroupList(string accessToken); /// <summary>
/// 创建分组
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="name">分组名称</param>
/// <returns></returns>
GroupJson CreateGroup(string accessToken, string name); /// <summary>
/// 查询用户所在分组
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="openid">用户的OpenID</param>
/// <returns></returns>
int GetUserGroupId(string accessToken, string openid); /// <summary>
/// 修改分组名
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="id">分组id,由微信分配</param>
/// <param name="name">分组名字(30个字符以内)</param>
/// <returns></returns>
CommonResult UpdateGroupName(string accessToken, int id, string name); /// <summary>
/// 移动用户分组
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="openid">用户的OpenID</param>
/// <param name="to_groupid">分组id</param>
/// <returns></returns>
CommonResult MoveUserToGroup(string accessToken, string openid, int to_groupid); /// <summary>
/// 删除用户分组
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <returns></returns>
CommonResult DeleteGroup(string accessToken, int groupid); }
2、用户分组管理接口的实现
2.1 创建用户分组
为了解析如何实现创建用户分组的POST数据操作,我们来一步步了解创建用户的具体过程。
首先需要创建一个动态定义的实体类信息,它包含几个需要提及的属性,如下所示。
string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/create?access_token={0}", accessToken);
var data = new
{
group = new
{
name = name
}
};
string postData = JsonConvert.SerializeObject(data, Formatting.Indented);
准备好Post的数据后,我们就进一步看看获取数据并转换为合适格式的操作代码。
group = BasicAPI.ConvertJson<GroupJson>(url, postData);
if (group != null && group.group != null)
{
return group;
}
return group;
这样,完整的创建用户分组的操作函数如下所示。
#region 创建分组 GroupJson CreateGroup(string accessToken, string name)
/// <summary>
/// 创建分组
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="name">分组名称</param>
/// <returns></returns>
public GroupJson CreateGroup(string accessToken, string name)
{
string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/create?access_token={0}", accessToken); var data = new
{
group = new
{
name = name
}
};
string postData = JsonConvert.SerializeObject(data, Formatting.Indented); GroupJson group = null; group = BasicAPI.ConvertJson<GroupJson>(url, postData);
if (group != null && group.group != null)
{
return group;
}
return group; }
#endregion
2.3 查询用户所在分组
每个用户都属于一个分组,默认在 未分组 这个分组里面,我们可以通过API获取用户的分组信息,也就是获取所在用户分组的ID。
#region 查询用户所在分组 int GetUserGroupId(string accessToken, string openid)
/// <summary>
/// 查询用户所在分组
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="openid">用户的OpenID</param>
/// <returns></returns>
public int GetUserGroupId(string accessToken, string openid)
{
string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/getid?access_token={0}", accessToken);
var data = new
{
openid = openid
};
string postData = JsonConvert.SerializeObject(data, Formatting.Indented); int groupId = -;
GroupIdJsonResult result = BasicAPI.ConvertJson<GroupIdJsonResult>(url, postData); ;
if (result != null)
{
groupId = result.groupid;
}
return groupId;
}
#endregion
2.4 修改分组名称
也可以在实际中,调整用户所在的分组,操作代码如下。
#region 修改分组名 CommonResult UpdateGroupName(string accessToken, int id, string name)
/// <summary>
/// 修改分组名
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="id">分组id,由微信分配</param>
/// <param name="name">分组名字(30个字符以内)</param>
/// <returns></returns>
public CommonResult UpdateGroupName(string accessToken, int id, string name)
{
string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/update?access_token={0}", accessToken);
var data = new
{
group = new
{
id = id,
name = name
}
};
string postData = JsonConvert.SerializeObject(data, Formatting.Indented); return BasicAPI.RequestUrlPostDataResult(url, postData);
}
#endregion
2.5 移动用户到新的分组
移动用户到新的分组的操作和上面小节的差不多,具体看代码。
#region 移动用户分组 CommonResult MoveUserToGroup(string accessToken, string openid, int to_groupid)
/// <summary>
/// 移动用户分组
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="openid">用户的OpenID</param>
/// <param name="to_groupid">分组id</param>
/// <returns></returns>
public CommonResult MoveUserToGroup(string accessToken, string openid, int to_groupid)
{
string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token={0}", accessToken);
var data = new
{
openid = openid,
to_groupid = to_groupid
};
string postData = JsonConvert.SerializeObject(data, Formatting.Indented); return BasicAPI.RequestUrlPostDataResult(url, postData);
}
#endregion
2.6 删除分组
删除分组操作更加简单,下面是具体的代码实现:
string url = string.Format("https://api.weixin.qq.com/cgi-bin/groups/delete?access_token={0}", accessToken);
var data = new
{
group = new
{
id = groupid
}
};
string postData = JsonConvert.SerializeObject(data, Formatting.Indented);
return BasicAPI.RequestUrlPostDataResult(url, postData);
3、用户分组接口的调用
上面小节,定义并实现了用户分组的各类接口,所有的用户相关的都已经毫无保留贴出代码,它的调用操作如下代码所示(测试代码)。
分组创建测试
GroupJson gj = groupApi.CreateGroup(BasicAPI.GetWeiXinAccessToken(this.UserInfo), "黑名单"); 分组获取测试
List<GroupJson> listGroup = groupApi.GetGroupList(BasicAPI.GetWeiXinAccessToken(this.UserInfo));
foreach (var item in listGroup)
{
System.Console.WriteLine("ID:" + item.id + "name:" + item.name);
} 根据用户 获取所在分组
int groupId = groupApi.GetUserGroupId(BasicAPI.GetWeiXinAccessToken(this.UserInfo), "o1_M-weeq4zg8xd5VTwgnxTRZHhE"); System.Console.WriteLine("用户所在分组ID:" + groupId); 修改分组名
CommonResult r = groupApi.UpdateGroupName(BasicAPI.GetWeiXinAccessToken(this.UserInfo), ,"aaaaa");
System.Console.WriteLine("是否成功:" + r.Success +" 原因:" + r.Errcode); 移动分组
CommonResult r = groupApi.MoveUserToGroup(BasicAPI.GetWeiXinAccessToken(this.UserInfo), "o1_M-weeq4zg8xd5VTwgnxTRZHhE", );
System.Console.WriteLine("是否成功:" + r.Success + " 原因:" + r.Errcode); int groupId = groupApi.GetUserGroupId(BasicAPI.GetWeiXinAccessToken(this.UserInfo), "o1_M-weeq4zg8xd5VTwgnxTRZHhE");
System.Console.WriteLine("用户所在分组ID:" + groupId);
删除分组
CommonResult r = groupApi.DeleteGroup(BasicAPI.GetWeiXinAccessToken(this.UserInfo), );
System.Console.WriteLine("是否成功:" + r.Success + " 原因:" + r.Errcode); List<GroupJson> listGroup = groupApi.GetGroupList(BasicAPI.GetWeiXinAccessToken(this.UserInfo));
foreach (var item in listGroup)
{
System.Console.WriteLine("ID:" + item.id + "name:" + item.name);
}
如果感兴趣或者体验相关的微信功能,可以关注我的微信了解下。具体效果关注测试账号扫描下面二维码进行关注了解。

作者: 王春天 2016-01-10
作者Blog:http://www.cnblogs.com/spring_wang
出处: http://www.cnblogs.com/spring_wang/p/5074867.html
如果觉得还不错,欢迎转载。
C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息
C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人
C#-MVC开发微信应用(6)--用户分组信息管理的更多相关文章
- C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息
在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码.希望从一个更高的层次介绍微信的开发. 在 ...
- C#-MVC开发微信应用(8)--菜单管理的实现
之前讲解了微信后台管理页面的操作来管理菜单,下面我们在简单的来看一下,代码是如何实现的. 我们要实现获取微信的菜单.创建菜单.删除菜单等操作. 01.首先定义菜单操作的接口: /// <summ ...
- C#-MVC开发微信应用(2)--微信消息的处理和应答
微信应用使用场景和商机很多,所以这也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为SNF完善的必要条件了.本系列文章希望从一个循序渐进的角度上,全面介绍微信的相关开发过程和相关经验 ...
- C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人
前几篇已经介绍菜单和有回复信息操作,下面我们就结合snf微信端管理页面,看一下什么才是自动应答系统. 定制的服务 对于微信服务号来说,最主要的功能是提供更好的服务.用户更方便的操作,以及更快的反馈响应 ...
- C#-MVC开发微信应用(3)--文本消息和图文消息的应答
最近咨询微信的人很多,感觉这块也是一块商机,也为了演示SNF快速开发平台的优势,就用SNF快速开发平台开发出一套微信应用程序.使用<SNF.CodeGenerator>代码生成工具可以节省 ...
- C#-MVC开发微信应用(4)--微信门户菜单的管理操作
最近对微信接口进行深入的研究,通过把底层接口一步步进行封装后,逐步升级到自动化配置.自动化应答,以及后台处理界面的优化和完善上,力求搭建一个较为完善.适用的微信门户应用管理系统. 在微信门户系统里面, ...
- C#开发微信门户及应用(5)--用户分组信息管理
在上个月的对C#开发微信门户及应用做了介绍,写过了几篇的随笔进行分享,由于时间关系,间隔了一段时间没有继续写这个系列的博客了,并不是对这个方面停止了研究,而是继续深入探索这方面的技术,为了更好的应用起 ...
- asp.net微信开发第五篇----用户分组管理
上一篇已讲解到新建用户分组,移动用户到分组的功能,这一章主要讲解修改分组名称和删除分组 开发者可以使用接口,对公众平台的分组进行查询.创建.修改.删除等操作,也可以使用接口在需要时移动用户到某个分组. ...
- (转)C#开发微信门户及应用(5)--用户分组信息管理
http://www.cnblogs.com/wuhuacong/p/3695351.html 在上个月的对C#开发微信门户及应用做了介绍,写过了几篇的随笔进行分享,由于时间关系,间隔了一段时间没有继 ...
随机推荐
- 导出oracle序列
set serveroutput on;spool c:\sequence_code.txt; declare v_sequence varchar2(4000); v_nextval numbe ...
- class path resource [spring/applicationContext.xml] cannot be opened because it does not exist
1.查看路径有没有写错 2.编辑器认为你的文件不是 source folders(原文件),需要你手动将文件改过来
- 洛谷 P1004 方格取数 【多进程dp】
题目链接:https://www.luogu.org/problemnew/show/P1004 题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 ...
- Linux输入设备详解
<什么是Linux输入设备> ➤简介 Linux输入设备总类繁杂,常见的包括有按键.键盘.触摸屏.鼠标.摇杆等等,他们本身就是字符设备,而linux内核将这些设备的共同性抽象出来 ...
- 4889: [Tjoi2017]不勤劳的图书管理员 树套树
国际惯例的题面(Bzoj没有,洛谷找的):动态加权逆序对,一眼树套树.256MB内存,5e4范围,不虚不虚.首先把交换改成两个插入和两个删除.考虑插入和删除的贡献,就是统计前面比这个值大的数的数值和, ...
- 潭州课堂25班:Ph201805201 第三课:序列类型的方法 (课堂笔记)
列表的方法: li = [] 添加: li.append( 'a' ) 追加元素进入列表 li.insert( 1, 'b' ) 插入元素到指定索引位置 ----->>> li.i ...
- 解决iframe重复嵌套登陆页面的问题
在login.jsp中加入即可 // 在被嵌套时就刷新上级窗口 if(window.parent != window){ window.parent.location.reload(true); }
- java三大特性--继承
定义: 继承就是子类继承父类的特征和行为,使得子类具有父类的各种属性和方法,使得子类具有父类相同的行为. 继承的好处: 有效实现代码复用,避免重复代码的出现. 让类与类之间产生了关系,是多态的前提. ...
- UVa 127 - "Accordian" Patience POJ 1214 链表题解
UVa和POJ都有这道题. 不同的是UVa要求区分单复数,而POJ不要求. 使用STL做会比較简单,这里纯粹使用指针做了,很麻烦的指针操作,一不小心就错. 调试起来还是很费力的 本题理解起来也是挺费力 ...
- python测试开发django-45.xadmin添加小组件报错解决
前言 xadmin首页上有个添加小组件按钮,打开的时候会报错"render() got an unexpected keyword argument 'renderer'" 环境: ...