MessageServices.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\services\message\wechat;
  12. use app\services\BaseServices;
  13. use app\services\other\QrcodeServices;
  14. use app\services\user\LoginServices;
  15. use app\services\user\UserServices;
  16. use app\services\wechat\WechatReplyServices;
  17. use app\services\wechat\WechatUserServices;
  18. class MessageServices extends BaseServices
  19. {
  20. /**
  21. * 扫码
  22. * @param $message
  23. * @return array|\EasyWeChat\Message\Image|\EasyWeChat\Message\News|\EasyWeChat\Message\Text|\EasyWeChat\Message\Voice|string
  24. */
  25. public function wechatEventScan($message)
  26. {
  27. /** @var QrcodeServices $qrcodeService */
  28. $qrcodeService = app()->make(QrcodeServices::class);
  29. /** @var WechatReplyServices $wechatReplyService */
  30. $wechatReplyService = app()->make(WechatReplyServices::class);
  31. $response = $wechatReplyService->reply('subscribe');
  32. if ($message->EventKey && ($qrInfo = $qrcodeService->getQrcode($message->Ticket, 'ticket'))) {
  33. $qrcodeService->scanQrcode($message->Ticket, 'ticket');
  34. if (strtolower($qrInfo['third_type']) == 'spread') {
  35. try {
  36. $spreadUid = $qrInfo['third_id'];
  37. /** @var WechatUserServices $wechatUser */
  38. $wechatUser = app()->make(WechatUserServices::class);
  39. $uid = $wechatUser->getFieldValue($message->FromUserName, 'openid', 'uid', ['user_type', '<>', 'h5']);
  40. if ($spreadUid == $uid) {
  41. $response = '自己不能推荐自己';
  42. }
  43. /** @var UserServices $userService */
  44. $userService = app()->make(UserServices::class);
  45. $userInfo = $userService->get($uid);
  46. if (!$userInfo) {
  47. $response = '用户不存在';
  48. }
  49. if ($userInfo['spread_uid']) {
  50. $response = '已有推荐人!';
  51. }
  52. /** @var LoginServices $loginService */
  53. $loginService = app()->make(LoginServices::class);
  54. if ($loginService->updateUserInfo(['code' => $spreadUid], $userInfo)) {
  55. $response = '绑定推荐人失败!';
  56. }
  57. } catch (\Exception $e) {
  58. $response = $e->getMessage();
  59. }
  60. }
  61. }
  62. return $response;
  63. }
  64. /**
  65. * 取消关注
  66. * @param $message
  67. */
  68. public function wechatEventUnsubscribe($message)
  69. {
  70. /** @var WechatUserServices $wechatUser */
  71. $wechatUser = app()->make(WechatUserServices::class);
  72. $wechatUser->unSubscribe($message->FromUserName);
  73. }
  74. /**
  75. * 公众号关注
  76. * @param $message
  77. * @return array|\EasyWeChat\Message\Image|\EasyWeChat\Message\News|\EasyWeChat\Message\Text|\EasyWeChat\Message\Voice|string
  78. */
  79. public function wechatEventSubscribe($message)
  80. {
  81. /** @var WechatReplyServices $wechatReplyService */
  82. $wechatReplyService = app()->make(WechatReplyServices::class);
  83. $response = $wechatReplyService->reply('subscribe');
  84. if (isset($message->EventKey)) {
  85. /** @var QrcodeServices $qrcodeService */
  86. $qrcodeService = app()->make(QrcodeServices::class);
  87. if ($message->EventKey && ($qrInfo = $qrcodeService->getQrcode($message->Ticket, 'ticket'))) {
  88. $qrcodeService->scanQrcode($message->Ticket, 'ticket');
  89. if (strtolower($qrInfo['third_type']) == 'spread') {
  90. try {
  91. $spreadUid = $qrInfo['third_id'];
  92. /** @var WechatUserServices $wechatUser */
  93. $wechatUser = app()->make(WechatUserServices::class);
  94. $uid = $wechatUser->getFieldValue($message->FromUserName, 'openid', 'uid', ['user_type', '<>', 'h5']);
  95. if ($spreadUid == $uid) return '自己不能推荐自己';
  96. /** @var UserServices $userService */
  97. $userService = app()->make(UserServices::class);
  98. $userInfo = $userService->get($uid);
  99. if ($userInfo['spread_uid']) return '已有推荐人!';
  100. $userInfo->spread_uid = $spreadUid;
  101. $userInfo->spread_time = time();
  102. if (!$userInfo->save()) {
  103. $response = '绑定推荐人失败!';
  104. }
  105. } catch (\Exception $e) {
  106. $response = $e->getMessage();
  107. }
  108. }
  109. }
  110. }
  111. return $response;
  112. }
  113. /**
  114. * 位置 事件
  115. * @param $message
  116. * @return string
  117. */
  118. public function wechatEventLocation($message)
  119. {
  120. //return 'location';
  121. }
  122. /**
  123. * 跳转URL 事件
  124. * @param $message
  125. * @return string
  126. */
  127. public function wechatEventView($message)
  128. {
  129. //return 'view';
  130. }
  131. /**
  132. * 图片 消息
  133. * @param $message
  134. * @return string
  135. */
  136. public function wechatMessageImage($message)
  137. {
  138. //return 'image';
  139. }
  140. /**
  141. * 语音 消息
  142. * @param $message
  143. * @return string
  144. */
  145. public function wechatMessageVoice($message)
  146. {
  147. //return 'voice';
  148. }
  149. /**
  150. * 视频 消息
  151. * @param $message
  152. * @return string
  153. */
  154. public function wechatMessageVideo($message)
  155. {
  156. //return 'video';
  157. }
  158. /**
  159. * 位置 消息
  160. */
  161. public function wechatMessageLocation($message)
  162. {
  163. //return 'location';
  164. }
  165. /**
  166. * 链接 消息
  167. * @param $message
  168. * @return string
  169. */
  170. public function wechatMessageLink($message)
  171. {
  172. //return 'link';
  173. }
  174. /**
  175. * 其它消息 消息
  176. */
  177. public function wechatMessageOther($message)
  178. {
  179. //return 'other';
  180. }
  181. }