热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

这篇文章主要介绍了.NET微信公众号用户分组管理,web页面设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
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内容:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WX.aspx.cs" Inherits="test.WX" %>




  
    
    

    
    
    
  
  
    
      

分组管理

新建分组 关闭

30字符以内

确定创建

&#39;>
序号 ID编号 分组名称 分组人数 操作
<%# Eval("Group_ID") %> <%# Eval("Group_Name") %> <%# Eval("Group_Count") %> &#39;, &#39;<%# Eval("Group_Name") %>&#39;); ">修改分组名称 &#39; CssClass="button blue">删除分组 &#39; CssClass="button blue">此分组消息群发 &#39; CssClass="button blue">移动分组

┼ 新建分组

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 
    /// 绑定事件
    /// 
    /// 
    /// 
    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 
    /// 执行事件
    /// 
    /// 
    /// 
    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(&#39;删除成功!由于缓存问题,您可能需要重新登录才能看到效果!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", 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(&#39;群发成功!由于缓存问题,您可能需要重新登录才能看到效果!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", 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(&#39;移动分组成功!由于缓存问题,您可能需要重新登录才能看到效果!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", true);
      }
    }

    /// 
    /// 创建分组
    /// 
    /// 
    /// 
    protected void LinkBtnCreateGroup_Click(object sender, EventArgs e)
    {
      if (this.txtgroupsName.Value.Equals("分组名称"))
      {
        ////
        ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;不能为空!&#39;)", 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(&#39;创建成功!如未显示,请退出重新登录即可!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", 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内容:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Edit.aspx.cs" Inherits="test.Edit" %>


  
    
    
    
  
  
    
      
分组编号:
分组名称:

设 置

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(&#39;不能为空!&#39;);", true);
        this.txtGroupName.Focus();
        return;
      }
      if (this.txtGroupName.Text.Trim().Length > 30)
      {
        ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;组名称应在30个字符之内!&#39;);", 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(&#39;修改成功!如未正常显示,属缓存问题,请重新登录即可!&#39;);window.open![这里写图片描述](http://img.blog.csdn.net/20161008103126694)er.location.reload();this.close();", true);
      }
      else
      {
        ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;修改失败!&#39;);this.close();",
          true);
      }
    }
  }

buttonbg.png

以上就是微信公众号中用户分组管理.NET实例详解的详细内容,更多请关注php中文网其它相关文章!


推荐阅读
author-avatar
itlzk
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有