【移动应用开发技术】asp.net微信开发已关注用户管理_第1页
【移动应用开发技术】asp.net微信开发已关注用户管理_第2页
【移动应用开发技术】asp.net微信开发已关注用户管理_第3页
【移动应用开发技术】asp.net微信开发已关注用户管理_第4页
【移动应用开发技术】asp.net微信开发已关注用户管理_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】微信开发已关注用户管理

这篇文章主要介绍了微信开发已关注用户管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让在下带着大家一起了解一下。公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论