php专区

 首页 > php专区 > PHP应用 > 开放平台 > 沫尘[c#]asp.net开发微信公众平台(4)关注事件、用户

沫尘[c#]asp.net开发微信公众平台(4)关注事件、用户

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

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

     

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

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


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

完整方法代码如下:



tb_User mUser =DALWei.InfoEntities(dbHome,u=>u.OpenId==mSub.FromUserName);
            if (mUser != null)
            {

                if (mUser.State == 0)
                {
                    SText mStxt = new SText();
                    mStxt.ToUserName = mSub.FromUserName;
                    mStxt.FromUserName = mSub.ToUserName;
                    mStxt.CreateTime = mSub.CreateTime;
                    mStxt.Content = "很抱歉,您已经被系统拒绝服务,若有疑问请联系我们";
                    DALWei.SendText(mStxt);
                    return;
                }
                else
                {
                    mUser.SubTime = DateTime.Now;
                    DALWei.UpdateEntity(dbHome, mUser);
                }
            }
            else
            {
                mUser = new tb_User();
                mUser.InId = 0;
                mUser.OpenId = mSub.FromUserName;
                mUser.GroupId = 0;
                mUser.NickName = "";
                mUser.CreateTime = System.DateTime.Now;
                mUser.State = 1;
                mUser.PreFirst = "";
                mUser.SubTime = DateTime.Now;
                DALWei.AddEntity(dbHome,mUser);
            
            }
 

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

 

 

 

2、回复文本消息

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

 SText mStxtA = new SText();
        mStxtA.ToUserName = mSub.FromUserName;
     mStxtA.FromUserName = mSub.ToUserName;
      mStxtA.CreateTime = mSub.CreateTime;
         mStxtA.Content =ReadXml.Menu();
         Often.ResponseToEnd(DALWei.SendText(mStxtA));

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

文字如下:


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

 

效果:

 

(名字都隐去了)

 

 

源码下载,新建的QQ群,提供源码下载,有问题也可以问我:群号183695596
分享到:
沫尘[c#]asp.net开发微信公众平台(5)微信...
上篇已经成功响应了关注事件,也实现了文本消息的发送,这篇开始图文消息处理, 微信中最常用的消息类型就是图文消息了,因为它图文并茂,最能表达信息。 图文消息在微信中的接口定义如下: 12345678 2   加上文字定义: 很多人第一次看这个文档时会感觉看不懂,  因...
沫尘[c#]asp.net开发微信公众平台(3)微信...
 上一篇已经搭建好整体框架,实现了入口的验证,   验证通过后就交给LookMsgType方法处理,LookMsgType方法主要是对微信发来的不同的消息进行分解,不同的类型交给业务逻辑层不同的方法处理,   对不同类型的消息判断,可以用if,也可以用switch   一般来说超过5个的if用switch会更好, 这里贴出LookMsgType方法: pub...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……