• [c#]asp.net开发微信公众平台(4)关注事件、用户记录、回复文本消息


         上一篇已经把所有消息封装且都各自有方法处理了,这篇从使用第一步——关注开始,  关注之后进行消息记录,同时回复文本消息给用户,关注方法:DoSub,另外新用户扫描带参数的二维码关注方法:DoCodeNotSub。    

         

    1、用户关注公众号返回文本消息、用户记录:

    根据解析的XML反射赋值给消息model,  现在进行用户判断:

    1            tb_User mUser =DALWei.InfoEntities<tb_User>(dbHome,u=>u.OpenId==mSub.FromUserName);
    2             if (mUser != null)
    3             {
    4                   //说明此用户以前关注过后来取消了
    5             }
    6             else
    7             {
    8                  //全新的用户,添加
    9

    完整方法代码如下:

     1             tb_User mUser =DALWei.InfoEntities<tb_User>(dbHome,u=>u.OpenId==mSub.FromUserName);
     2             if (mUser != null)
     3             {
     4 
     5                 if (mUser.State == 0)
     6                 {
     7                     SText mStxt = new SText();
     8                     mStxt.ToUserName = mSub.FromUserName;
     9                     mStxt.FromUserName = mSub.ToUserName;
    10                     mStxt.CreateTime = mSub.CreateTime;
    11                     mStxt.Content = "很抱歉,您已经被系统拒绝服务,若有疑问请联系我们";
    12                     DALWei.SendText(mStxt);
    13                     return;
    14                 }
    15                 else
    16                 {
    17                     mUser.SubTime = DateTime.Now;
    18                     DALWei.UpdateEntity(dbHome, mUser);
    19                 }
    20             }
    21             else
    22             {
    23                 mUser = new tb_User();
    24                 mUser.InId = 0;
    25                 mUser.OpenId = mSub.FromUserName;
    26                 mUser.GroupId = 0;
    27                 mUser.NickName = "";
    28                 mUser.CreateTime = System.DateTime.Now;
    29                 mUser.State = 1;
    30                 mUser.PreFirst = "";
    31                 mUser.SubTime = DateTime.Now;
    32                 DALWei.AddEntity(dbHome,mUser);
    33             
    34             }
    View Code

    已经存在时修改用户最后次关注时间,不存在时添加新用户;其中在用户已经存在的情况下,需要考虑用户state=0的情况,即用户被禁用的,  直接返回文本消息, 提示已经被禁用。

    2、回复文本消息

    已经封装好的发送文本消息模型SText,  赋值并输出即可:

    1             SText mStxtA = new SText();
    2             mStxtA.ToUserName = mSub.FromUserName;
    3             mStxtA.FromUserName = mSub.ToUserName;
    4             mStxtA.CreateTime = mSub.CreateTime;
    5             mStxtA.Content =ReadXml.Menu();
    6             Often.ResponseToEnd(DALWei.SendText(mStxtA));

    其中,ReadXml.Menu()方法是返回默认的一段字符,当做普通文字菜单用( 后面会有自定义菜单)。

    文字如下:

     1 public static string  Menu()
     2         {
     3             string Content = "";
     4             Content += "欢迎使用/微笑
    
    ";
     5             Content += "输入以下序号开始获取最新信息:
    ";
     6             Content += "1,企业快报ue102
    ";
     7             Content += "2,行业要览
    ";
     8             Content += "3,行情动态
    ";
     9             Content += "4,焦点访谈
    ";
    10             Content += "5,下游资讯
    ";
    11             Content += "6,资讯中心ue135
    ";
    12             Content += "7,采购ue42f
    ";
    13             Content += "8,市场报告--VIPue035专属
    
    ";
    14             Content += "输入其他关键字可以搜索ue114
    ";
    15             Content += "输入序号@关键字可以在指定类别下搜索,比如 1@马航
    ";
    16             Content += "输入?或帮助 可以显示此菜单";
    17             return Content;
    18         }

    效果:

     

    (名字都隐去了)

  • 相关阅读:
    .Net Core 5.x Api开发笔记 -- 消息队列RabbitMQ实现事件总线EventBus(二)
    .Net Core 5.x Api开发笔记 -- 消息队列RabbitMQ实现事件总线EventBus(一)
    SQL 入门教程:创建视图
    微信小程序-企业微信PC端,对接echarts图无法显示
    SQL查看表结构以及表说明
    Skoruba.IdentityServer4.STS.Identity 踩坑
    Docker部署文档
    eCharts图形在IE11中不能渲染
    Cookie中文乱码问题
    Blazor Webassembly多标签页实现
  • 原文地址:https://www.cnblogs.com/mochen/p/3664926.html
Copyright © 2020-2023  润新知