php微信公众号用户分组,微信公众号中用户分组管理.NET实例详解

Model层实体类:public class UserList

{

public string total { get; set; }

public string count { get; set; }

public userlistopenid data { get; set; }

public string next_openid { get; set; }

}public class userlistopenid

{

public List openid { get; set; }

}public class WxGroupsInfo

{

public string Group_ID { get; set; }//分组编号

public string Group_Name { get; set; }//分组名称

public string Group_Count { get; set; }//分组人数

}

WX.aspx内容:

.inputstyle {

height: 35px;

line-height: 35px;

text-indent: 5px;

width: 350px;

background-image: url('images/inputbg.gif');

background-repeat: repeat-x;

border-top: solid 1px #a7b5bc;

border-left: solid 1px #a7b5bc;

border-right: solid 1px #ced9df;

border-bottom: solid 1px #ced9df;

margin: 15px auto 15px auto;

}

.g_title {

width: 100%;

border-bottom: 2px solid #ced9df;

font-size: 20px;

font-weight: bold;

text-align: left;

text-indent: 5px;

height: 40px;

line-height: 40px;

}

th {

height: 35px;

background-color: #31bb34;

background-repeat: repeat-x;

}

tr { height: 30px; }

#shownewgroup {

width: 300px;

height: 200px;

background-color: white;

z-index: 9999;

border: 2px solid #DDD;

top: 40%;

left: 40%;

background-color: #fff;

position: fixed;

margin: -100px auto auto -100px;

display: none;

}

#shownewgroupzhezhaoceng {

height: 200%;

width: 200%;

left: 0px;

top: 0px;

position: fixed;

z-index: 9998;

background: rgb(50, 50, 50);

background: rgba(0, 0, 0, 0.5);

display: none;

}

.closeLogin {

height: 30px;

border-bottom: 2px solid #31bb34;

text-align: right;

line-height: 30px;

font-size: 14px;

font-weight: bold;

}

a:hover { cursor: pointer; }

.inputstyle22 {

height: 35px;

line-height: 35px;

text-indent: 5px;

width: 280px;

background-image: url('images/inputbg.gif');

background-repeat: repeat-x;

border-top: solid 1px #a7b5bc;

border-left: solid 1px #a7b5bc;

border-right: solid 1px #ced9df;

border-bottom: solid 1px #ced9df;

float: left;

margin: auto 5px auto 5px;

}

.button {

font: 15px Calibri, Arial, sans-serif;

text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.4);

text-decoration: none !important;

white-space: nowrap;

display: inline-block;

vertical-align: baseline;

position: relative;

cursor: pointer;

padding: 4px 20px;

background-repeat: no-repeat;

background-position: bottom left;

background-image: url('button_bg.png');

background-position: bottom left, top right, 0 0, 0 0;

background-clip: border-box;

-moz-border-radius: 8px;

-webkit-border-radius: 8px;

border-radius: 8px;

-moz-box-shadow: 0 0 1px #fff inset;

-webkit-box-shadow: 0 0 1px #fff inset;

box-shadow: 0 0 1px #fff inset;

-webkit-transition: background-position 1s;

-moz-transition: background-position 1s;

transition: background-position 1s;

}

.blue.button {

color: #0f4b6d !important;

border: 1px solid #84acc3 !important;

background-color: #48b5f2;

background-image: url('button_bg.png'), url('button_bg.png'),

-moz-radial-gradient(center bottom, circle,

rgba(89, 208, 244, 1) 0, rgba(89, 208, 244, 0) 100px),

-moz-linear-gradient(#4fbbf7, #3faeeb);

background-image: url('button_bg.png'), url('button_bg.png'),

-webkit-gradient(radial, 50% 100%, 0, 50% 100%, 100,

from(rgba(89, 208, 244, 1)), to(rgba(89, 208, 244, 0))),

-webkit-gradient(linear, 0% 0%, 0% 100%, from(#4fbbf7), to(#3faeeb));

}

.blue.button:hover {

background-color: #63c7fe;

background-image: url('button_bg.png'), url('button_bg.png'),

-moz-radial-gradient(center bottom, circle,

rgba(109, 217, 250, 1) 0, rgba(109, 217, 250, 0) 100px),

-moz-linear-gradient(#63c7fe, #58bef7);

background-image: url('button_bg.png'), url('button_bg.png'),

-webkit-gradient(radial, 50% 100%, 0, 50% 100%, 100,

from(rgba(109, 217, 250, 1)), to(rgba(109, 217, 250, 0))),

-webkit-gradient(linear, 0% 0%, 0% 100%, from(#63c7fe), to(#58bef7));

}

//修改分组名称调用的函数

function EditRoster(PayNo, name) {

//alert(PayNo+":"+name);

var url = 'Edit.aspx?id=' + PayNo + "&name=" + name; //转向网页的地址;

var name = 'add'; //网页名称,可为空;

var iWidth = 600; //弹出窗口的宽度;

var iHeight = 300; //弹出窗口的高度;

//获得窗口的垂直位置

var iTop = (window.screen.availHeight - 30 - iHeight) / 2;

//获得窗口的水平位置

var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;

window.open(url, name, 'height=' + iHeight + ',innerHeight=' + iHeight + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no');

}

$(document).ready(function() {

$(".newGroups").click(function() {

$("#shownewgroupzhezhaoceng").show();

$("#shownewgroup").show();

}),

$('.closeloginpage').click(function() {

$("#shownewgroupzhezhaoceng").hide();

$("#shownewgroup").hide();

});

});

分组管理

新建分组

关闭

30字符以内

确定创建

序号ID编号分组名称分组人数操作

', ''); ">修改分组名称

删除分组

此分组消息群发

移动分组

┼ 新建分组

WX.aspx.cs代码:public partial class WX : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

BindGroupList();

this.DataBind();

}

private void BindGroupList()

{

WeiXinServer wxs = new WeiXinServer();

//从缓存读取accesstoken

string Access_token = Cache["Access_token"] as string;

if (Access_token == null)

{

//如果为空,重新获取

Access_token = wxs.GetAccessToken();

//设置缓存的数据7000秒后过期

Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000),

System.Web.Caching.Cache.NoSlidingExpiration);

}

string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);

string jsonres = "";

string content = Cache["AllGroups_content"] as string;

if (content == null)

{

jsonres = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token=" + Access_tokento;

HttpWebRequest myRequest = (HttpWebRequest) WebRequest.Create(jsonres);

myRequest.Method = "GET";

HttpWebResponse myResponse = (HttpWebResponse) myRequest.GetResponse();

StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);

content = reader.ReadToEnd();

reader.Close();

//设置缓存的数据7000秒后过期

Cache.Insert("AllGroups_content", content, null, DateTime.Now.AddSeconds(7000),

System.Web.Caching.Cache.NoSlidingExpiration);

}

//使用前需要引用Newtonsoft.json文件

JObject jsonObj = JObject.Parse(content);

int groupsnum = jsonObj["groups"].Count();

List wxgrouplist = new List();

for (int i = 0; i < groupsnum; i++)

{

WxGroupsInfo wginfo = new WxGroupsInfo();

wginfo.Group_ID = jsonObj["groups"][i]["id"].ToString();

wginfo.Group_Name = jsonObj["groups"][i]["name"].ToString();

wginfo.Group_Count = jsonObj["groups"][i]["count"].ToString();

wxgrouplist.Add(wginfo);

}

this.RepeaterGroupList.DataSource = wxgrouplist;

this.RepeaterGroupList.DataBind();

}

///

/// 绑定事件

///

///

///

protected void RepeaterGroupList_ItemDataBound(object sender, RepeaterItemEventArgs e)

{

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

{

Label lbXuHao = e.Item.FindControl("lbXuHao") as Label;

int num = 1;

lbXuHao.Text = num.ToString();

for (int i = 0; i < this.RepeaterGroupList.Items.Count; i++)

{

num += 1;

lbXuHao.Text = num.ToString();

}

LinkButton LinkBtnDeleteGroup = e.Item.FindControl("LinkBtnDeleteGroup") as LinkButton;

LinkButton LinkBtnSendByGroup = e.Item.FindControl("LinkBtnSendByGroup") as LinkButton;

LinkBtnDeleteGroup.Attributes.Add("OnClick", "return confirm('您确定要删除该分组?删除后该分组内的人员即将恢复到默认分组!')");

LinkBtnDeleteGroup.Attributes.Add("OnClick", "return confirm('您确定要群发消息到该分组?')");

}

}

///

/// 执行事件

///

///

///

protected void RepeaterGroupList_ItemCommand(object source, RepeaterCommandEventArgs e)

{

if (e.CommandName == "DeleteGroups")

{

WeiXinServer wxs = new WeiXinServer();

string res = "";

//从缓存读取accesstoken

string Access_token = Cache["Access_token"] as string;

if (Access_token == null)

{

//如果为空,重新获取

Access_token = wxs.GetAccessToken();

//设置缓存的数据7000秒后过期

Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000),

System.Web.Caching.Cache.NoSlidingExpiration);

}

string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);

string posturl = "https://api.weixin.qq.com/cgi-bin/groups/delete?access_token=" + Access_tokento;

//POST数据例子: POST数据例子:{"group":{"id":108}}

string groupid = e.CommandArgument.ToString();

string postData = "{\"group\":{\"id\":\"" + groupid + "\"}}";

res = wxs.GetPage(posturl, postData);

ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "",

"alert('删除成功!由于缓存问题,您可能需要重新登录才能看到效果!');location='WxGroupManageList.aspx';", true);

}

if (e.CommandName == "SendByGroups")

{

WeiXinServer wxs = new WeiXinServer();

string res = "";

//从缓存读取accesstoken

string Access_token = Cache["Access_token"] as string;

if (Access_token == null)

{

//如果为空,重新获取

Access_token = wxs.GetAccessToken();

//设置缓存的数据7000秒后过期

Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000),

System.Web.Caching.Cache.NoSlidingExpiration);

}

string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);

string posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=" + Access_tokento;

string groupid = e.CommandArgument.ToString();

//string postData = "{\"group\":{\"id\":\"" + groupid.ToString() + "\"}}";

JObject postData = new JObject();

JObject filter = new JObject();

filter.Add("is_to_all", false);

filter.Add("group_id", groupid);

JObject text = new JObject();

text.Add("content", "测试内容!");

postData.Add("filter", filter);

postData.Add("text", text);

postData.Add("msgtype", "text");

res = wxs.GetPage(posturl, postData.ToString());

ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "",

"alert('群发成功!由于缓存问题,您可能需要重新登录才能看到效果!');location='WxGroupManageList.aspx';", true);

}

if (e.CommandName == "MoveUserToGroup")

{

WeiXinServer wxs = new WeiXinServer();

string res = "";

string Access_token = Cache["Access_token"] as string;

if (Access_token == null)

{

Access_token = wxs.GetAccessToken();

Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);

}

string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);

string posturl = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=" + Access_tokento;

string UserListurl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + Access_tokento + "&next_openid=";

//{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}

res = wxs.GetPage(UserListurl,"");

UserList userList= JsonConvert.DeserializeObject(res);

String openid=userList.data.openid.FirstOrDefault();

int togroup_id = 101;//输入分组ID

string postData = "{\"openid\":\"" + openid + "\",\"to_groupid\":" + togroup_id + "}";

res = wxs.GetPage(posturl, postData);

ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "",

"alert('移动分组成功!由于缓存问题,您可能需要重新登录才能看到效果!');location='WxGroupManageList.aspx';", true);

}

}

///

/// 创建分组

///

///

///

protected void LinkBtnCreateGroup_Click(object sender, EventArgs e)

{

if (this.txtgroupsName.Value.Equals("分组名称"))

{

ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('不能为空!')", true);

this.txtgroupsName.Focus();

return;

}

WeiXinServer wxs = new WeiXinServer();

string res = "";

///从缓存读取accesstoken

string Access_token = Cache["Access_token"] as string;

if (Access_token == null)

{

//如果为空,重新获取

Access_token = wxs.GetAccessToken();

//设置缓存的数据7000秒后过期

Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000),

System.Web.Caching.Cache.NoSlidingExpiration);

}

string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);

string posturl = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=" + Access_tokento;

string postData = "{\"group\":{\"name\":\"" + this.txtgroupsName.Value.ToString().Trim() + "\"}}";

res = wxs.GetPage(posturl, postData);

ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "",

"alert('创建成功!如未显示,请退出重新登录即可!');location='WxGroupManageList.aspx';", true);

}

}

WeiXinServer.cs代码:///

/// 微信服务类

///

public class WeiXinServer

{

///

/// 获取通行证

///

///

public string GetAccessToken()

{

string url_token =

"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx3eb5bf1290db2ca0&secret=e6013be0a7338c7d3e02877db116e231";

HttpWebRequest myRequest = (HttpWebRequest) WebRequest.Create(url_token);

myRequest.Method = "GET";

HttpWebResponse myResponse = (HttpWebResponse) myRequest.GetResponse();

StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);

string content = reader.ReadToEnd();

reader.Close();

return content;

}

public string GetPage(string p, string postData)

{

Stream outstream = null;

Stream instream = null;

StreamReader sr = null;

HttpWebResponse response = null;

HttpWebRequest request = null;

Encoding encoding = Encoding.UTF8;

byte[] data = encoding.GetBytes(postData);

// 准备请求...

try

{

// 设置参数

request = WebRequest.Create(p) as HttpWebRequest;

CookieContainer cookieContainer = new CookieContainer();

request.CookieContainer = cookieContainer;

request.AllowAutoRedirect = true;

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = data.Length;

outstream = request.GetRequestStream();

outstream.Write(data, 0, data.Length);

outstream.Close();

//发送请求并获取相应回应数据

response = request.GetResponse() as HttpWebResponse;

//直到request.GetResponse()程序才开始向目标网页发送Post请求

instream = response.GetResponseStream();

sr = new StreamReader(instream, encoding);

//返回结果网页(html)代码

string content = sr.ReadToEnd();

string err = string.Empty;

return content;

}

catch (Exception ex)

{

string err = ex.Message;

return string.Empty;

}

}

}

Edit.aspx内容:

.inputstyle {

height: 35px;

line-height: 35px;

text-indent: 5px;

width: 280px;

background-image: url('images/inputbg.gif');

background-repeat: repeat-x;

border-top: solid 1px #a7b5bc;

border-left: solid 1px #a7b5bc;

border-right: solid 1px #ced9df;

border-bottom: solid 1px #ced9df;

float: left;

margin: auto 5px auto 5px;

}

分组编号:
分组名称:

设 置

Edit.aspx.cs代码:public partial class Edit : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

{

if (Request.QueryString["id"] != null)

{

string group_id = Request.QueryString["id"].ToString();

string group_name = Request.QueryString["name"].ToString();

this.txtGroupId.Text = group_id.ToString();

this.txtGroupName.Text = group_name.ToString();

this.txtGroupName.Focus();

}

}

}

///

/// 设置

///

///

///

protected void LinkBtnSet_Click(object sender, EventArgs e)

{

if (String.IsNullOrWhiteSpace(this.txtGroupName.Text.ToString().Trim()))

{

ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('不能为空!');", true);

this.txtGroupName.Focus();

return;

}

if (this.txtGroupName.Text.Trim().Length > 30)

{

ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('组名称应在30个字符之内!');", true);

this.txtGroupName.Focus();

return;

}

WeiXinServer wxs = new WeiXinServer();

string res = "";

//从缓存读取accesstoken

string Access_token = Cache["Access_token"] as string;

if (Access_token == null)

{

//如果为空,重新获取

Access_token = wxs.GetAccessToken();

//设置缓存的数据7000秒后过期

Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000),

System.Web.Caching.Cache.NoSlidingExpiration);

}

string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);

string posturl = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token=" + Access_tokento;

//POST数据例子:POST数据例子:{"group":{"id":108,"name":"test2_modify2"}}

string postData = "{\"group\":{\"id\":\"" + txtGroupId.Text + "\",\"name\":\"" + this.txtGroupName.Text +

"\"}}";

res = wxs.GetPage(posturl, postData);

//使用Newtonsoft.json

JObject jsonObj = JObject.Parse(res);

//获取返回结果的正确|true|false,

string isright = jsonObj["errcode"].ToString(); //0

string istrueorfalse = jsonObj["errmsg"].ToString(); //ok

if (isright.Equals("0") && istrueorfalse.Equals("ok"))

{

//修改成功之后,刷新父窗体,关闭本页

ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "",

"alert('修改成功!如未正常显示,属缓存问题,请重新登录即可!');window.open![这里写图片描述](https://img-blog.csdn.net/20161008103126694)er.location.reload();this.close();", true);

}

else

{

ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('修改失败!');this.close();",

true);

}

}

}

buttonbg.png

ceeb487cfca535d686dd44e90e9d8892.png

结果如图:

f76e522ac8384cdea1efa6675a6da282.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值