版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】微信开发已关注用户管理
这篇文章主要介绍了微信开发已关注用户管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让在下带着大家一起了解一下。公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。接口调用请求说明http请求方式:GET(请使用https协议)返回说明正确时返回JSON数据包:错误时返回JSON数据包(示例为无效AppID错误):{"errcode":40013,"errmsg":"invalidappid"}附:关注者数量超过10000时当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求。具体而言,就是在调用接口时,将上一次调用得到的返回中的next_openid值,作为下一次调用中的next_openid值。示例如下:公众账号A拥有23000个关注的人,想通过拉取关注接口获取所有关注的人,那么分别请求url如下:/cgi-bin/user/get?access_token=ACCESS_TOKEN返回结果:{
"total":23000,
"count":10000,
"data":{"
openid":[
"OPENID1",
"OPENID2",
...,
"OPENID10000"
]
},
"next_openid":"OPENID10000"
}/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID1返回结果:{
"total":23000,
"count":10000,
"data":{
"openid":[
"OPENID10001",
"OPENID10002",
...,
"OPENID20000"
]
},
"next_openid":"OPENID20000"
}/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID2返回结果(关注者列表已返回完时,返回next_openid为空):{
"total":23000,
"count":3000,
"data":{"
"openid":[
"OPENID20001",
"OPENID20002",
...,
"OPENID23000"
]
},
"next_openid":"OPENID23000"
}微信官方网站后台的接口权限表里(以服务号为例)每天调用的获取用户列表能获取500次,获取用户基本信息可以获取500000次,所以说接下来,我在获取用户列表的时候,会用到缓存,别看500次不少了,可是真正的用起来快得不得了,先上效果图如下:先来看看用户列表,官网说获取用户的列表返回的是一组组openID,针对这个特性,我是这么做的,创建一个用于存储openId的类public
class
WxOpenIdInfo
{
public
string
WxopenId
{
get;
set;
}//用户存放微信用户的openId
}然后再创建用户信息的基本类
///
<summary>
///
微信用户基本信息类
///
</summary>
public
class
WxUserInfo
{
public
int
subscribe
{
get;
set;
}//关注状态
public
string
openid
{
get;
set;
}//OpenID
public
string
nickname
{
get;
set;
}//昵称
public
string
sex
{
get;
set;
}//性别
public
string
city
{
get;
set;
}//城市
public
string
province
{
get;
set;
}//省份
public
string
headimgurl
{
get;
set;
}//头像图片地址
public
string
subscribe_time
{
get;
set;
}//关注时间
public
string
remark
{
get;
set;
}//备注
public
string
groupid
{
get;
set;
}//分组ID
}用户列表前台代码<%@
Page
Language="C#"
AutoEventWireup="true"
CodeBehind="WeiXinUserList.aspx.cs"
Inherits="DQWebSite.Administrator.WeiXinUserList"
%>
<!DOCTYPE
html>
<html
xmlns="/1999/xhtml">
<head
runat="server">
<meta
http-equiv="Content-Type"
content="text/html;
charset=utf-8"/>
<title></title>
<link
href="css/style.css"
rel="Stylesheet"
type="text/css"
/>
<style
type="text/css">
#title
{width:100%;
height:40px;margin-top:10px;
text-indent:5px;
line-height:40px;}
.checkstyle
{
float:left;}
#DDlAddgroups
{
text-align:center;
width:161px;
border:1px
solid
#d9d9d9;
border-radius:5px;
height:35px;
line-height:35px;
font-weight:bold;
text-align:center;
float:left;
margin:auto
5px
auto
5px;}
.DDlAddgroups{
text-align:center;
width:161px;
border:1px
solid
#d9d9d9;
border-radius:5px;
height:35px;
line-height:35px;
font-weight:bold;
text-align:center;
float:left;
margin:auto
5px
auto
5px;}
#DDLgroups
{
text-align:center;
width:111px;
border:1px
solid
#d9d9d9;
border-radius:5px;
height:35px;
line-height:35px;
font-weight:bold;
text-align:center;
float:left;
margin:auto
5px
auto
5px;}
.newGroups
{
margin:auto
5px
auto
5px;}
.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;
}
.wxusertab
{
border:1px
solid
#d9d9d9;
width:100%;
text-align:left;
text-indent:5px;
}
th
{
height:35px;background-image:url('images/th.gif');
background-repeat:repeat-x;
}
td
{
border-bottom:1px
solid
#d9d9d9;
}
.trcolor
{
background-color:#ecd9df;
}
tr:hover
{
cursor:pointer;
}
#FenPage
{
width:1124px;
height:25px;
line-height:25px;
text-align:center;
margin:20px
auto
20px
auto;
}
.linka
{
color:#0094ff;
cursor:pointer;
}
.fenyebtn
{width:60px;
height:25px;
border:1px
solid
#ced9df;
border-radius:5px;
text-align:center;
line-height:25px;
float:right;
}
.fenyebtn2
{
width:60px;
height:25px;
border:1px
solid
#ced9df;
border-radius:5px;
text-align:center;
line-height:25px;margin-left:10px;float:right;
}
.toPageIndex
{
width:60px;height:25px;
background-image:url('images/inputbg.gif');
margin-left:10px;
background-repeat:repeat-x;border-top:solid
1px
#a7b5bc;
border-left:solid
1px
#a7b5bc;
border-right:solid
1px
#ced9df;
border-bottom:solid
1px
#ced9df;
text-align:center;
float:right;
}
.gotoPagebtn
{
width:60px;
height:25px;
border:1px
solid
#ced9df;
border-radius:5px;
text-align:center;
line-height:25px;margin-left:10px;float:right;
background-color:#ced9df;
}
.deletebtn
{float:left;width:100px;
color:#000;
height:25px;
background-color:#ced9df;
border:1px
solid
#ced9df;
border-radius:5px;
text-align:center;
}
a
{
color:#08a5e0;
}
.droplist
{
background-image:url('images/inputbg.gif');
background-repeat:repeat-x;
width:120px;
height:25px;
border:1px
solid
#ced9df;
}
.checkstyle
{
float:left;
}
.imgheadstyle
{
width:50px;
height:50px;
margin-top:10px;
}
.lbsubscribeCount
{
font-size:26px;
}
#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;
}
#updateremark
{
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;
}
#updateremark_zhezhaoceng
{
height:100%;
width:100%;
left:0px;
top:0px;position:fixed;
z-index:9998;
background:rgb(50,50,50);background:rgba(0,0,0,0.5);
display:none;
}
</style>
<script
src="../js/jquery-1.7.1.min.js"
type="text/javascript"></script>
<script
type="text/javascript">
$(document).ready(function
()
{
$(".newGroups").click(function
()
{
$("#shownewgroupzhezhaoceng").show();
$("#shownewgroup").show();
}),
$('.closeloginpage').click(function
()
{
$("#shownewgroupzhezhaoceng").hide();
$("#shownewgroup").hide();
})
})
</script>
</head>
<body>
<form
id="form1"
runat="server">
<p
class="place">
<span>位置:</span>
<ul
class="placeul">
<li><a
href="WelCome.aspx"
target="rightFrame">首页</a></li>
<li>微信管理</li>
<li>德桥员工服务中心--关注者列表管理</li>
</ul>
</p>
<asp:ScriptManager
ID="ScriptManager1"
runat="server"></asp:ScriptManager>
<asp:UpdatePanel
ID="UpdatePanel1"
runat="server">
<ContentTemplate>
<p
id="shownewgroup">
<p
class="closeLogin"><a
class="closeloginpage"><span
style="float:left;
color:#08a5e0;
font-size:18px;
text-indent:5px;">新建分组</span>关闭</a>
</p>
<p
style="font-size:12px;
height:40px;
color:red;
line-height:40px;">
30字符以内</p>
<input
type="text"
id="txtgroupsName"
name="txtgroupsName"
class="inputstyle"
maxlength="30"
runat="server"
value="分组名称"
onfocus="if(value==defaultValue){value='';this.style.color='#000'}"
onblur="if(!value){value=defaultValue;this.style.color='#999'}"
style="color:#999"/>
<asp:LinkButton
ID="LinkBtnCreateGroup"
runat="server"
OnClick="LinkBtnCreateGroup_Click"><p
style="background-image:url('images/buttonbg.png');
width:111px;
height:35px;
line-height:35px;
font-weight:bold;float:left;
margin-top:20px;
margin-left:5px;
text-align:center;color:#fff;">
确定创建</p></asp:LinkButton>
</p>
<p
id="shownewgroupzhezhaoceng"></p>
<p
style="
border-bottom:2px
solid
#31bb34;
height:30px;
margin-top:10px;
text-indent:10px;
font-size:22px;
line-height:30px;
width:100%;"><span
style="float:left;
font-size:16px;">已关注人数</span><span
style="color:red;"><asp:Label
ID="lbsubscribeCount"
CssClass="lbsubscribeCount"
runat="server"
Text="Label"></asp:Label>
</span></p>
<p
id="title">
<asp:CheckBox
ID="CheckAll"
runat="server"
CssClass="checkstyle"
OnCheckedChanged="CheckAll_CheckedChanged"
/><span
style="float:left;">全选
</span>
<asp:DropDownList
ID="DDlAddgroups"
CssClass="DDlAddgroups"
runat="server"
OnSelectedIndexChanged="DDlAddgroups_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList
ID="DDLgroups"
runat="server">
</asp:DropDownList>
<a
class="newGroups"><p
style="background-image:url('images/buttonbg.png');
width:111px;
height:35px;
line-height:35px;
margin:auto
20px
auto
10px;
font-weight:bold;float:left;
text-align:center;color:#fff;">
+
新建分组</p></a>
<a
href="WxGroupManageList.aspx"><p
style="background-image:url('images/buttonbg.png');
width:111px;
height:35px;
line-height:35px;
margin:auto
20px
auto
10px;
font-weight:bold;float:left;
text-align:center;color:#fff;">分组管理</p></a>
<a
href="WeiXinUserList.aspx"><p
style="background-image:url('images/buttonbg.png');
width:111px;
height:35px;
line-height:35px;
margin:auto
20px
auto
10px;
font-weight:bold;float:left;
text-align:center;color:#fff;">刷
新</p></a>
<%--
<input
type="text"
id="txtName"
name="txtName"
class="inputstyle"
runat="server"
value="用户昵称"
onfocus="if(value==defaultValue){value='';this.style.color='#000'}"
onblur="if(!value){value=defaultValue;this.style.color='#999'}"
style="color:#999"/>
<asp:LinkButton
ID="LinkButton1"
runat="server"><p
style="background-image:url('images/buttonbg.png');
width:111px;
height:35px;
line-height:35px;
font-weight:bold;float:left;
text-align:center;color:#fff;">
查询</p></asp:LinkButton>--%>
</p>
<table
class="wxusertab">
<asp:Repeater
ID="RepeaterWxUserList"
runat="server"
OnItemDataBound="RepeaterWxUserList_ItemDataBound">
<HeaderTemplate>
<tr>
<th></th>
<th>OpenID</th>
<th>头像</th>
<th>昵称(备注名)</th>
<th>关注时间</th>
<th>所属分组</th>
<th>操作</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr
style="width:100%;
line-height:50px;">
<td
style="width:30px;">
<asp:CheckBox
ID="CheckIn"
runat="server"
CssClass="checkstyle"
/>
<%--OnCheckedChanged="CheckIn_CheckedChanged"--%></td>
<td
style="width:150px;"><asp:Label
ID="lbwxopenID"
runat="server"
Text=""></asp:Label>
</td>
<td
style="width:80px;"><asp:Image
ID="ImgHeadUrl"
runat="server"
CssClass="imgheadstyle"
/>
</td>
<td
style="width:150px;"><asp:Label
ID="lbNickName"
runat="server"
CssClass="checkstyle"
Text=""></asp:Label>
<asp:Label
ID="lbRemark"
runat="server"
Text=""></asp:Label>
</td>
<td
style="width:130px;">
<asp:Label
ID="lbSubscrine_time"
runat="server"
Text=""></asp:Label>
</td>
<td
style="width:100px;">
<asp:Label
ID="lbgroupId"
runat="server"
CssClass="checkstyle"
Visible="false"
Text=""></asp:Label>
<asp:DropDownList
ID="DDlAddgroupss"
Enabled="false"
CssClass="DDlAddgroups"
runat="server">
<asp:ListItem
Value="0">分组名称</asp:ListItem>
</asp:DropDownList>
</td>
<td
style="width:110px;">
<a
href='UpdateRemarkName.aspx?id=<%#
Eval("WxopenId")
%>'><p
style="
border:1px
solid
#d9d9d9;
border-radius:5px;
width:111px;
height:35px;
line-height:35px;
font-weight:bold;float:left;
text-align:center;">
修改备注名称</p></a>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
<p
id="FenPage">
<asp:LinkButton
ID="LinkBtnToPage"
CssClass="gotoPagebtn"
runat="server"
OnClick="LinkBtnToPage_Click">确定</asp:LinkButton>
<asp:TextBox
ID="txtPageIndex"
CssClass="toPageIndex"
runat="server"></asp:TextBox>
<asp:HyperLink
ID="lnkLast"
runat="server"><span
class="fenyebtn2">>>|</span></asp:HyperLink>
<asp:HyperLink
ID="lnkNext"
runat="server"><span
class="fenyebtn2">></span></asp:HyperLink>
<asp:HyperLink
ID="lnkTop"
runat="server"><span
class="fenyebtn2"><</span></asp:HyperLink>
<asp:HyperLink
ID="lnkFist"
runat="server"><span
class="fenyebtn">|<<</span></asp:HyperLink>
<span
style="float:left;">当前第</span>
<span
style="float:left;
color:red;"><asp:Label
ID="lbPageIndex"
runat="server"
Text=""></asp:Label></span>
<span
style="float:left;margin-left:5px;">页/</span>
<span
style="float:left;margin-left:5px;">共</span>
<span
style="float:left;color:red;"><asp:Label
ID="lbCountPage"
runat="server"
Text=""></asp:Label></span>
<span
style="float:left;margin-left:5px;">页</span>
<span
style="float:left;margin-left:10px;"><asp:Label
ID="lbPageSize"
runat="server"
Text=""></asp:Label></span>
<span
style="float:left;margin-left:10px;">共搜索到
</span>
<span
style="float:left;margin-left:5px;
color:red;"><asp:Label
ID="lbCountData"
runat="server"
Text=""></asp:Label></span>
<span
style="float:left;margin-left:5px;">条记录.</span>
</p>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>获取用户列表绑定用户信息的后台代码,已包括,修改备注名,将用户移动到分组,新建分组代码分组统计,用于显示每个分组的已存在人数,无其他作用上代码:
PagedDataSource
pds
=
new
PagedDataSource();
protected
void
Page_Load(object
sender,
EventArgs
e)
{
if(!Page.IsPostBack)
{
BindGroupList();
BindGetAllUserOpenIdList();
this.DataBind();
this.CheckAll.AutoPostBack
=
true;
this.DDlAddgroups.AutoPostBack
=
true;
}
//this.DDlAddgroups.Enabled
=
false;
}
///
<summary>
///
获取所有用户的openId列表
///
</summary>
private
void
BindGetAllUserOpenIdList()
{
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["AllUserOpenList_content"]
as
string;
if
(content
==
null)
{
jsonres
=
"/cgi-bin/user/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("AllUserOpenList_content",
content,
null,
DateTime.Now.AddSeconds(7000),
System.Web.Caching.Cache.NoSlidingExpiration);
}
//使用前需要引用Newtonsoft.json.dll文件
JObject
jsonObj
=
JObject.Parse(content);
int
totalnum
=
int.Parse(jsonObj["count"].ToString());
List<WxOpenIdInfo>
openidlist
=
new
List<WxOpenIdInfo>();
for
(int
i
=
0;
i
<
totalnum;i++
)
{
WxOpenIdInfo
wxopeninfo
=
new
WxOpenIdInfo();
wxopeninfo.WxopenId
=
jsonObj["data"]["openid"][i].ToString();
openidlist.Add(wxopeninfo);
}
pds.DataSource
=
openidlist;
pds.AllowPaging
=
true;
pds.PageSize
=
20;//每页显示为20条
int
CurrentPage;
if
(!String.IsNullOrWhiteSpace(this.txtPageIndex.Text.ToString().Trim()))
{
CurrentPage
=
Convert.ToInt32(this.txtPageIndex.Text.ToString().Trim());
}
else
if
(Request.QueryString["Page"]
!=
null)
{
CurrentPage
=
Convert.ToInt32(Request.QueryString["Page"]);
}
else
{
CurrentPage
=
1;
}
pds.CurrentPageIndex
=
CurrentPage
-
1;//当前页的索引就等于当前页码-1;
if
(!pds.IsFirstPage)
{
//Request.CurrentExecutionFilePath
为当前请求的虚拟路径
this.lnkTop.NavigateUrl
=
Request.CurrentExecutionFilePath
+
"?Page="
+
Convert.ToString(CurrentPage
-
1);
this.lnkFist.Enabled
=
this.lnkTop.Enabled
=
true;
this.lnkNext.Enabled
=
this.lnkLast.Enabled
=
true;
}
else
{
this.lnkFist.Enabled
=
this.lnkTop.Enabled
=
false;
this.lnkNext.Enabled
=
this.lnkLast.Enabled
=
true;
this.lnkFist.Attributes.Add("style",
"color:#ced9df;");
this.lnkTop.Attributes.Add("style",
"color:#ced9df;");
this.lnkNext.Attributes.Remove("style");
this.lnkLast.Attributes.Remove("style");
}
if
(!pds.IsLastPage)
{
//Request.CurrentExecutionFilePath
为当前请求的虚拟路径
this.lnkNext.NavigateUrl
=
Request.CurrentExecutionFilePath
+
"?Page="
+
Convert.ToString(CurrentPage
+
1);
this.lnkFist.Enabled
=
this.lnkTop.Enabled
=
true;
this.lnkNext.Enabled
=
this.lnkLast.Enabled
=
true;
}
else
{
this.lnkNext.Enabled
=
this.lnkLast.Enabled
=
false;
this.lnkFist.Enabled
=
this.lnkTop.Enabled
=
true;
this.lnkNext.Attributes.Add("style",
"color:#ced9df;");
this.lnkLast.Attributes.Add("style",
"color:#ced9df;");
this.lnkFist.Attributes.Remove("style");
this.lnkTop.Attributes.Remove("style");
}
this.lnkFist.NavigateUrl
=
Request.CurrentExecutionFilePath
+
"?Page="
+
Convert.ToString(1);//跳转至首页
this.lnkLast.NavigateUrl
=
Request.CurrentExecutionFilePath
+
"?Page="
+
Convert.ToString(pds.PageCount);//跳转至末页
this.RepeaterWxUserList.DataSource
=
pds;
this.RepeaterWxUserList.DataBind();
this.lbCountData.Text
=
openidlist.Count.ToString();
this.lbPageIndex.Text
=
(pds.CurrentPageIndex
+
1).ToString();
this.lbPageSize.Text
=
"每页"
+
pds.PageSize.ToString()
+
"条记录";
this.lbCountPage.Text
=
pds.PageCount.ToString();
this.txtPageIndex.Text
=
(pds.CurrentPageIndex
+
1).ToString();
if
(int.Parse(openidlist.Count.ToString())
<=
int.Parse(pds.PageSize.ToString()))
{
this.lnkFist.Visible
=
this.lnkTop.Visible
=
this.lnkNext.Visible
=
this.lnkLast.Visible
=
this.txtPageIndex.Visible
=
this.LinkBtnToPage.Visible
=
false;
}
else
{
this.lnkFist.Visible
=
this.lnkTop.Visible
=
this.lnkNext.Visible
=
this.lnkLast.Visible
=
this.txtPageIndex.Visible
=
this.LinkBtnToPage.Visible
=
true;
}
this.lbsubscribeCount.Text
=
openidlist.Count.ToString();
}
///
<summary>
///
绑定分组列表
///
</summary>
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
=
"/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.dll文件
JObject
jsonObj
=
JObject.Parse(content);
int
groupsnum
=
jsonObj["groups"].Count();
this.DDLgroups.Items.Clear();//清除
this.DDlAddgroups.Items.Clear();
this.DDLgroups.Items.Insert(0,
new
ListItem("分组统计",
"0"));//添加默认第一个提示
this.DDlAddgroups.Items.Insert(0,
new
ListItem("移动用户到分组",
"0"));
for
(int
i
=
0;
i
<
groupsnum;
i++)
{
this.DDLgroups.Items.Add(new
ListItem(jsonObj["groups"][i]["name"].ToString()
+
"("
+
jsonObj["groups"][i]["count"].ToString()
+
")",
jsonObj["groups"][i]["id"].ToString()));
this.DDlAddgroups.Items.Add(new
ListItem(jsonObj["groups"][i]["name"].ToString(),
jsonObj["groups"][i]["id"].ToString()));
}
}
///
<summary>
///
输入页码提交跳转
///
</summary>
///
<param
name="sender"></param>
///
<param
name="e"></param>
protected
void
LinkBtnToPage_Click(object
sender,
EventArgs
e)
{
if
(String.IsNullOrWhiteSpace(this.txtPageIndex.Text.ToString().Trim()))
{
ScriptManager.RegisterClientScriptBlock(this.Page,
this.GetType(),
"",
"alert('页码不能为空!')",
true);
this.txtPageIndex.Focus();
return;
}
if
(IsNum(this.txtPageIndex.Text.ToString().Trim()))
{
ScriptManager.RegisterClientScriptBlock(this.Page,
this.GetType(),
"",
"alert('页码数只能输入数字!')",
true);
this.txtPageIndex.Focus();
this.txtPageIndex.Text
=
this.lbPageIndex.Text.ToString();
return;
}
if
(int.Parse(this.txtPageIndex.Text.ToString().Trim())
>
int.Parse(this.lbCountPage.Text.ToString().Trim()))
{
ScriptManager.RegisterClientScriptBlock(this.Page,
this.GetType(),
"",
"alert('所输页数不能大于总页数!')",
true);
this.txtPageIndex.Focus();
this.txtPageIndex.Text
=
this.lbPageIndex.Text.ToString();
return;
}
BindGetAllUserOpenIdList();
}
///
<summary>
///
判断是否是数字
///
</summary>
///
<param
name="text"></param>
///
<returns></returns>
public
static
bool
IsNum(string
text)
//
{
for
(int
i
=
0;
i
<
text.Length;
i++)
{
if
(!Char.IsNumber(text,
i))
{
return
true;
//输入的不是数字
}
}
return
false;
//否则是数字
}
///
<summary>
///
绑定用户基本信息事件
///
</summary>
///
<param
name="sender"></param>
///
<param
name="e"></param>
protected
void
RepeaterWxUserList_ItemDataBound(object
sender,
RepeaterItemEventArgs
e)
{
//CheckBox
checkIn
=
e.Item.FindControl("CheckIn")
as
CheckBox;
//checkIn.AutoPostBack
=
true;
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
WxOpenIdInfo
wxopen
=
e.Item.DataItem
as
WxOpenIdInfo;
Label
lbwxopenID
=
e.Item.FindControl("lbwxopenID")
as
Label;
lbwxopenID.Text
=
wxopen.WxopenId.ToString();
//根据OpenID获取用户基本信息。缓存处理
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
="/cgi-bin/user/info?access_token="
+
Access_tokento
+
"&openid="
+
lbwxopenID.Text.ToString();
HttpWebRequest
myRequest
=
(HttpWebRequest)WebRequest.Create(jsonres);
myRequest.Method
=
"GET";
HttpWebResponse
myResponse
=
(HttpWebResponse)myRequest.GetResponse();
StreamReader
reader
=
new
StreamReader(myResponse.GetResponseStream(),
Encoding.UTF8);
string
content
=
reader.ReadToEnd();
reader.Close();
//使用前需要引用Newtonsoft.json.dll文件
JObject
jsonObj
=
JObject.Parse(content);
Image
ImgHeadUrl
=
e.Item.FindControl("ImgHeadUrl")
as
Image;
Label
lbNickName
=
e.Item.FindControl("lbNickName")
as
Label;
Label
lbRemark
=
e.Item.FindControl("lbRemark")
as
Label;
Label
lbSubscrine_time
=
e.Item.FindControl("lbSubscrine_time")
as
Label;
Label
lbgroupId
=
e.Item.FindControl("lbgroupId")
as
Label;
DropDownList
DDlAddgroupss
=
e.Item.FindControl("DDlAddgroupss")
as
DropDownList;
lbNickName.Text
=
jsonObj["nickname"].ToString();
if
(!String.IsNullOrWhiteSpace(jsonObj["remark"].ToString()))
{
lbRemark.Text
=
"("
+
jsonObj["remark"].ToString()
+
")";
}
ImgHeadUrl.ImageUrl
=
jsonObj["headimgurl"].ToString();
lbgroupId.Text
=
jsonObj["groupid"].ToString();
//获取关注时间
int
totaltiem
=
int.Parse(jsonObj["subscribe_time"].ToString());
//将整型格式时间转换为时间格式
DateTime
t
=
new
DateTime(1970,
1,
1).AddSeconds(totaltiem);
//转换后的时间会比原有时间小8个小时,因此需要加上8个小时
lbSubscrine_time.Text
=
t.AddHours(8).ToString();
string
jjjjjjjjjddd
=
Cache["AllGroups_content"]
as
string;
if
(jjjjjjjjjddd
==
null)
{
jsonres
=
"/cgi-bin/groups/get?access_token="
+
Access_tokento;
HttpWebRequest
myRequestss
=
(HttpWebRequest)WebRequest.Create(jsonres);
myRequest.Method
=
"GET";
HttpWebResponse
myResponsess
=
(HttpWebResponse)myRequest.GetResponse();
StreamReader
readerss
=
new
StreamReader(myResponse.GetResponseStream(),
Encoding.UTF8);
jjjjjjjjjddd
=
reader.ReadToEnd();
reader.Close();
//设置缓存的数据7000秒后过期
Cache.Insert("AllGroups_content",
jjjjjjjjjddd,
null,
DateTime.Now.AddSeconds(7000),
System.Web.Caching.Cache.NoSlidingExpiration);
}
//使用前需要引用Newtonsoft.json.dll文件
JObject
jsonObjss
=
JObject.Parse(jjjjjjjjjddd);
int
groupsnumss
=
jsonObjss["groups"].Count();
for
(int
i
=
0;
i
<
groupsnumss;i++
)
{
if
(jsonObjss["groups"][i]["id"].ToString().Equals(lbgroupId.Text.ToString()))
{
DDlAddgroupss.SelectedItem.Text
=
jsonObjss["groups"][i]["name"].ToString();
}
}
}
}
///
<summary>
///
创建分组
///
</summary>
///
<param
name="sender"></param>
///
<param
name="e"></param>
protected
void
LinkBtnCreateGroup_Click(object
sender,
EventArgs
e)
{
if
(this.txtgroupsName.Value.ToString().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
=
"/cgi-bin/groups/create?access_token="
+
Access_tokento;
//string
postData
=
"{\"group\":{\"name\":\""+this.txtgroupsName.Value.ToString().Trim()+"\"}}";
string
postData
=
"{\"group\":{\"name\":\""+this.txtgroupsName.Value.ToString().Trim()+"\"}}";
res
=
wxs.GetPage(posturl,
postData);
ScriptManager.RegisterClientScriptBlock(this.Page,
this.GetType(),
"",
"alert('创建成功!如未显示,请退出重新登录即可!');location='WeiXinUserList.aspx';",
true);
}
///
<summary>
///
全选、全不选
///
</summary>
///
<param
name="sender"></param>
///
<param
name="e"></param>
protected
void
CheckAll_CheckedChanged(object
sender,
EventArgs
e)
{
CheckBox
checkAll
=
(CheckBox)sender;
foreach
(RepeaterItem
item
in
this.RepeaterWxUserList.Items)
{
CheckBox
checkIn
=
(CheckBox)item.FindControl("CheckIn");
checkIn.Checked
=
checkAll.Checked;
}
}
///
<summary>
///
移动用户到分组
///
</summary>
///
<param
name="sender"></param>
///
<param
name="e"></param>
protected
void
DDlAddgroups_SelectedIndexChanged(object
sender,
EventArgs
e)
{
///取得分组ID
string
groupId
=
this.DDlAddgroups.SelectedValue.ToString();
//this.Label1.Text
=
groupId.ToString();
Boolean
bools
=
false;
foreach
(RepeaterItem
item
in
this.RepeaterWxUserList.Items)
{
CheckBox
checkIn
=
(CheckBox)item.FindControl("CheckIn");
if
(checkIn.Checked)
{
bools
=
true;
Label
lbwxopenID
=
item.FindControl("lbwxopenID")
as
Label;
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
=
"/cg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年图书室管理员工作总结参考范文(三篇)
- 2024年销售技巧培训心得模版(四篇)
- 2024年办公室上半年工作总结经典版(2篇)
- 2024年美工个人工作总结经典版(3篇)
- 苏教版四年级下册英语听力理解练习
- 苏教版一年级语文习题宝典
- 2024年烃类项目规划申请报告模稿
- 抗日战争北师大版历史课件
- 2024年工程地震观测设备项目提案报告
- 2024年甲氧基酚项目申请报告范稿
- 2024年广东省初中学业水平考试中考英语试卷(真题+答案解析)
- 七年级开学第一次家长会课件
- 2024年中国咳嗽基层诊疗与管理指南解读课件
- 2024年中学教师资格证《综合素质》真题及答案(完整版)
- 2024年云南交投集团招聘165人【重点基础提升】模拟试题(共500题)附带答案详解
- 2024年玉米免耕播种机项目提案报告模板
- 2024年交通运输部东海救助局招聘34人历年高频考题难、易错点模拟试题(共500题)附带答案详解
- 宠物美容师职业生涯规划
- 高斯小学奥数含答案二年级(下)第07讲 数列规律
- 幼儿园教师简笔画培训内容
- 公益电影放映服务投标方案(技术方案)
评论
0/150
提交评论