当前位置: 移动技术网 > IT编程>开发语言>.net > 微信公众号开发:用户管理

微信公众号开发:用户管理

2019年06月01日  | 移动技术网IT编程  | 我要评论

豚鼠养殖,莫塔巴,我是特种兵2国之利刃剧情

前言

  微信公众号提供了用户和用户组的管理,我们可以在微信公众号官方里面进行操作,添加备注和标签,以及移动用户组别,同时,微信公众号提供了相应的接口方便我们调用,可方便的把用户同步到本地,这样我们可以自己为用户定义更多的信息,以及与本地的业务更好的对接起来。以方便做各种应用分析。所以本节内容主要是用户和用户组的管理。

开始

一、用户关注与退订事件

  在之前的中,我们在usermessagehandler.cs,需要继承senparc.weixin.mp.messagehandlers<tc>这个抽象类,并重写所有方法,在这里面,我们可以添加2个事件,一个是用户关注时候触发事件,一个是退订时候触发事件

        public override iresponsemessagebase onevent_scanrequest(requestmessageevent_scan requestmessage)
        {
            //通过扫描关注
            var responsemessage = createresponsemessage<responsemessagetext>();
            responsemessage.content = responsemessage.content ?? string.format("通过扫描二维码进入,场景值:{0}", requestmessage.eventkey);
            return responsemessage;
        }

        /// <summary>
        /// 订阅(关注)事件
        /// </summary>
        /// <returns></returns>
        public override iresponsemessagebase onevent_subscriberequest(requestmessageevent_subscribe requestmessage)
        {
            var responsemessage = base.createresponsemessage<responsemessagetext>();
            responsemessage.content = "欢迎关注";
            return responsemessage;
        }

        /// <summary>
        /// 退订
        /// 实际上用户无法收到非订阅账号的消息,所以这里可以随便写。
        /// unsubscribe事件的意义在于及时删除网站应用中已经记录的openid绑定,消除冗余数据。并且关注用户流失的情况。
        /// </summary>
        /// <returns></returns>
        public override iresponsemessagebase onevent_unsubscriberequest(requestmessageevent_unsubscribe requestmessage)
        {
            var responsemessage = base.createresponsemessage<responsemessagetext>();
            responsemessage.content = "有空再来";
            return responsemessage;
        }

二、设计数据库

  根据,用户管理对应字段而建立,基本与官方提供的用户信息是一样的

  建立用户组管理表(wx_group)和用户表(wx_user)

      

 

三、提交同步数据

  接口的实现方式我们使用了开源的senparc.weixin提供的专业的微信操作sdk来快速完成操作,在senparc wx sdk下的senparc.weixin.mp.advancedapis ,通过openid到公众号同步到数据,再将本地数据修改。

        /// <summary>
        /// 同步数据
        /// </summary>
        /// <param name="id">用户id</param>
        /// <param name="officeid">对应的公众号id</param>
        /// <returns></returns>
        [httppost]
        [supportfilter]
        public jsonresult syncuser(string id,string officeid)
        {
            if (!string.isnullorwhitespace(id))
            {
                //填充数据
                string[] arrs = id.split(',');
                list<batchgetuserinfodata> list = new list<batchgetuserinfodata>();
                foreach (var m in arrs)
                {
                    list.add(new batchgetuserinfodata() {
                        openid = m,
                        lang = "zh-cn",
                        langenum = senparc.weixin.language.zh_cn
                    });
                }

                //批量同步数据
                wc_officalaccountsmodel accountmodel =  account_bll.getbyid(officeid);
                var batchlist =  senparc.weixin.mp.advancedapis.userapi.batchgetuserinfo(accountmodel.accesstoken, list);
                foreach (var info in batchlist.user_info_list)
                {
                    wc_usermodel usermodel = m_bll.getbyid(info.openid);
                    if (usermodel != null)
                    {
                        usermodel.city = info.city;
                        usermodel.openid = info.openid;
                        usermodel.id = info.openid;
                        usermodel.headimgurl = info.headimgurl;
                        usermodel.language = info.language;
                        usermodel.nickname = info.nickname;
                        usermodel.province = info.province;
                        usermodel.sex = info.sex;
                        m_bll.edit(ref errors, usermodel);
                    }
                }

                loghandler.writeservicelog(getuserid(), "ids:" + id, "成功", "删除", "wx_user");
                return json(jsonhandler.createmessage(1, resource.savesucceed));
            }
            else
            {
                return json(jsonhandler.createmessage(0, resource.savefail));
            }
        }

  通过以上方式,将用户和分组的方式同步提交,实现用户的分组。

总结

  1.实现用户的分组,能更好的对关注者进行管理和分析业务应用

  2.使用了开源的senparc.weixin,可以快速的实现分组和同步数据

  3.参考官网示例源代码

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网