C#微信公众号开发之用户管理

作者:艾三元 时间:2023-04-13 02:40:12 

前言:

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

开始:

一、用户关注与退订事件:

在之前的消息处理中,我们在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;
       }

二、设计数据库

根据微信公众号开发文档,用户管理对应字段而建立,基本与官方提供的用户信息是一样的

C#微信公众号开发之用户管理

建立用户组管理表(WX_Group)和用户表(WX_User)

C#微信公众号开发之用户管理

C#微信公众号开发之用户管理

三、提交同步数据

接口的实现方式我们使用了开源的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.参考官网示例源代码

来源:https://www.cnblogs.com/i3yuan/p/10957939.html

标签:C#,微信,公众号,开发,用户,管理
0
投稿

猜你喜欢

  • 轻松学习C#的方法

    2023-06-21 13:22:32
  • 关于Java中的IO流总结(推荐)

    2023-08-23 18:13:56
  • Java DOM4J方式生成XML的方法

    2022-07-19 02:32:42
  • Dynamic和Var的区别及dynamic使用详解

    2022-09-22 13:18:23
  • Spring Boot简介与快速搭建详细步骤

    2023-05-29 03:06:03
  • 详解lambda表达式foreach性能分析

    2023-10-28 17:55:21
  • c# 复写Equals方法的实现

    2023-06-09 01:35:35
  • 深入理解strcpy与memcpy的区别

    2023-02-23 21:45:32
  • C#实现悬浮窗口的方法详解

    2022-06-15 12:29:29
  • Android开发之ListView列表刷新和加载更多实现方法

    2021-06-20 06:28:30
  • Java学习之线程同步与线程间通信详解

    2022-05-27 08:03:59
  • Java执行SQL脚本文件到数据库详解

    2023-08-08 08:30:00
  • C#图表算法之有向图

    2021-11-25 14:50:57
  • Android实现背景可滑动登录界面 (不压缩背景弹出键盘)

    2023-11-14 11:09:07
  • C#实现XML序列化与反序列化

    2022-10-06 19:50:21
  • 使用SpringBoot配置https(SSL证书)

    2022-04-03 19:37:00
  • Java中的OkHttp使用教程

    2023-08-10 19:30:59
  • SpringBoot使用validation-api实现对枚举类参数校验的方法

    2021-09-22 19:21:32
  • java 集合工具类Collections及Comparable和Comparator排序详解

    2023-04-29 03:42:06
  • Dubbo实现分布式日志链路追踪

    2023-08-23 21:00:54
  • asp之家 软件编程 m.aspxhome.com