MessageBehavior.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. /**
  3. *
  4. * @author: xaboy<365615158@qq.com>
  5. * @day: 2017/11/24
  6. */
  7. namespace behavior\wechat;
  8. use app\admin\model\wechat\WechatMessage;
  9. use app\admin\model\wechat\WechatReply;
  10. use app\wap\model\user\WechatUser;
  11. use service\HookService;
  12. use service\QrcodeService;
  13. /**
  14. * 用户消息行为
  15. * Class MessageBehavior
  16. * @package behavior\wechat
  17. */
  18. class MessageBehavior
  19. {
  20. /**
  21. * 微信消息前置操作
  22. * @param $message
  23. */
  24. public static function wechatMessageBefore($message)
  25. {
  26. WechatUser::saveUser($message->FromUserName);
  27. $event = isset($message->Event) ?
  28. $message->MsgType.(
  29. $message->Event == 'subscribe' && isset($message->EventKey) ? '_scan' : ''
  30. ).'_'.$message->Event : $message->MsgType;
  31. WechatMessage::setMessage(json_encode($message),$message->FromUserName,strtolower($event));
  32. }
  33. /**
  34. * 用户文字消息
  35. * @param $message
  36. * @return array|\EasyWeChat\Message\Image|\EasyWeChat\Message\News|\EasyWeChat\Message\Text|\EasyWeChat\Message\Voice
  37. */
  38. public static function wechatMessageText($message)
  39. {
  40. return WechatReply::reply($message->Content);
  41. }
  42. /**
  43. * 用户文字消息前置操作
  44. * @param $message
  45. */
  46. public static function wechatMessageTextBefore($message)
  47. {
  48. }
  49. /**
  50. * 用户关注行为
  51. * @return array|\EasyWeChat\Message\Image|\EasyWeChat\Message\News|\EasyWeChat\Message\Text|\EasyWeChat\Message\Voice
  52. */
  53. public static function wechatEventSubscribe($message)
  54. {
  55. return WechatReply::reply('subscribe');
  56. }
  57. /**
  58. * 用户关注前置操作
  59. * @param $message
  60. */
  61. public static function wechatEventSubscribeBefore($message)
  62. {
  63. // WechatUser::saveUser($message->FromUserName);
  64. }
  65. /**
  66. * 微信菜单点击事件
  67. * @param $message
  68. * @return array|\EasyWeChat\Message\Image|\EasyWeChat\Message\News|\EasyWeChat\Message\Text|\EasyWeChat\Message\Voice
  69. */
  70. public static function wechatEventClick($message)
  71. {
  72. return WechatReply::reply($message->EventKey);
  73. }
  74. /**
  75. * 微信菜单click点击前置操作
  76. * @param $message
  77. */
  78. public static function wechatEventClickBefore($message)
  79. {
  80. }
  81. /**
  82. * 用户扫码关注
  83. * TODO 处理二维码携带参数
  84. * @param $message
  85. */
  86. public static function wechatEventScanSubscribe($message, $eventKey = '')
  87. {
  88. if ($eventKey && ($qrInfo = QrcodeService::getQrcode($message->Ticket, 'ticket'))) {
  89. QrcodeService::scanQrcode($message->Ticket, 'ticket');
  90. return HookService::resultListen('wechat_qrcode_' . strtolower($qrInfo['third_type']), $qrInfo, $message, true, QrcodeEventBehavior::class);
  91. }
  92. return WechatReply::reply('');
  93. }
  94. /**
  95. * 用户扫码
  96. * TODO 处理二维码携带参数
  97. * @param $message
  98. */
  99. public static function wechatEventScan($message)
  100. {
  101. if ($message->EventKey && ($qrInfo = QrcodeService::getQrcode($message->Ticket, 'ticket'))) {
  102. QrcodeService::scanQrcode($message->Ticket, 'ticket');
  103. return HookService::resultListen('wechat_qrcode_' . strtolower($qrInfo['third_type']), $qrInfo, $message, true, QrcodeEventBehavior::class);
  104. }
  105. return WechatReply::reply('');
  106. }
  107. public static function wechatEventUnsubscribeBefore($message)
  108. {
  109. WechatUser::unSubscribe($message->FromUserName);
  110. }
  111. }