上一篇已經把所有消息封裝且都各自有方法處理了,這篇從使用第一步——關注開始, 關注之后進行消息記錄,同時回復文本消息給用戶,關注方法: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 }
效果:
(名字都隱去了)