上一篇已经把所有消息封装且都各自有方法处理了,这篇从使用第一步——关注开始, 关注之后进行消息记录,同时回复文本消息给用户,关注方法: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 }
已经存在时修改用户最后次关注时间,不存在时添加新用户;其中在用户已经存在的情况下,需要考虑用户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 }
效果:
(名字都隐去了)