EventHandler.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using WeiXin.Library.Messages;
  6. namespace WeiXin.Library.Handlers
  7. {
  8. class EventHandler : IHandler
  9. {
  10. /// <summary>
  11. /// 请求的xml
  12. /// </summary>
  13. private string RequestXml { get; set; }
  14. /// <summary>
  15. /// 构造函数
  16. /// </summary>
  17. /// <param name="requestXml"></param>
  18. public EventHandler(string requestXml)
  19. {
  20. this.RequestXml = requestXml;
  21. }
  22. /// <summary>
  23. /// 处理请求
  24. /// </summary>
  25. /// <returns></returns>
  26. public string HandleRequest()
  27. {
  28. string response = string.Empty;
  29. EventMessage em = EventMessage.LoadFromXml(RequestXml);
  30. if (em != null)
  31. {
  32. switch (em.Event.ToLower())
  33. {
  34. case ("subscribe"):
  35. response = SubscribeEventHandler(em);
  36. break;
  37. case "click":
  38. response = ClickEventHandler(em);
  39. break;
  40. }
  41. }
  42. return response;
  43. }
  44. /// <summary>
  45. /// 关注
  46. /// </summary>
  47. /// <param name="em"></param>
  48. /// <returns></returns>
  49. private string SubscribeEventHandler(EventMessage em)
  50. {
  51. //回复欢迎消息
  52. TextMessage tm = new TextMessage();
  53. tm.ToUserName = em.FromUserName;
  54. tm.FromUserName = em.ToUserName;
  55. tm.CreateTime = Common.GetNowTime();
  56. tm.Content = "谢谢您的关注!\n\n";
  57. return tm.GenerateContent();
  58. }
  59. /// <summary>
  60. /// 处理点击事件
  61. /// </summary>
  62. /// <param name="em"></param>
  63. /// <returns></returns>
  64. private string ClickEventHandler(EventMessage em)
  65. {
  66. string result = string.Empty;
  67. if (em != null && em.EventKey != null)
  68. {
  69. switch (em.EventKey.ToUpper())
  70. {
  71. case "BTN_GOOD":
  72. result = btnGoodClick(em);
  73. break;
  74. case "BTN_TQ_BEIJING":
  75. result = searchWeather("beijing", em);
  76. break;
  77. case "BTN_TQ_SHANGHAI":
  78. result = searchWeather("shanghai", em);
  79. break;
  80. case "BTN_TQ_WUHAN":
  81. result = searchWeather("wuhai", em);
  82. break;
  83. case "BTN_HELP":
  84. result = btnHelpClick(em);
  85. break;
  86. }
  87. }
  88. return result;
  89. }
  90. /// <summary>
  91. /// 赞一下
  92. /// </summary>
  93. /// <param name="em"></param>
  94. /// <returns></returns>
  95. private string btnGoodClick(EventMessage em)
  96. {
  97. //回复欢迎消息
  98. TextMessage tm = new TextMessage();
  99. tm.ToUserName = em.FromUserName;
  100. tm.FromUserName = em.ToUserName;
  101. tm.CreateTime = Common.GetNowTime();
  102. tm.Content = @"谢谢您的支持!";
  103. return tm.GenerateContent();
  104. }
  105. /// <summary>
  106. /// 帮助
  107. /// </summary>
  108. /// <param name="em"></param>
  109. /// <returns></returns>
  110. private string btnHelpClick(EventMessage em)
  111. {
  112. //回复欢迎消息
  113. TextMessage tm = new TextMessage();
  114. tm.ToUserName = em.FromUserName;
  115. tm.FromUserName = em.ToUserName;
  116. tm.CreateTime = Common.GetNowTime();
  117. tm.Content = @"查询天气,输入tq 城市名称\拼音\首字母";
  118. return tm.GenerateContent();
  119. }
  120. /// <summary>
  121. /// 查询天气
  122. /// </summary>
  123. /// <param name="cityName"></param>
  124. /// <param name="em"></param>
  125. /// <returns></returns>
  126. private string searchWeather(string cityName, EventMessage em)
  127. {
  128. TextMessage tm = new TextMessage();
  129. tm.Content = WeatherHelper.GetWeather(cityName);
  130. //进行发送者、接收者转换
  131. tm.ToUserName = em.FromUserName;
  132. tm.FromUserName = em.ToUserName;
  133. tm.CreateTime = Common.GetNowTime();
  134. return tm.GenerateContent();
  135. }
  136. }
  137. }