您系统中的IE浏览器版本过低,不能更好的体验,建议您升级至IE9以上,或者双核浏览器切换到极速核,IT人士,应该做个现代人---http://www.cnblogs.com/mochen/

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

 

效果:

 

 

(名字都隐去了)

 

 

 

 

posted @ 2014-04-15 09:46  沫尘  阅读(8706)  评论(18编辑  收藏  举报