123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php
- namespace App\Wechat\Official;
- use App\Services\Auth\AuthService;
- use App\Services\Common\WechatService;
- use EasyWeChat\Kernel\Contracts\EventHandlerInterface;
- class EventHandle implements EventHandlerInterface
- {
- /**
- * @var AuthService
- */
- private $authService;
- /**
- * @var WechatService
- */
- private $wechatService;
- /**
- * EventHandle constructor.
- */
- public function __construct()
- {
- $this->authService=app('App\Services\Auth\AuthService');
- $this->wechatService=app('App\Services\Common\WechatService');
- }
- /**
- * @param mixed $payload
- * @return string
- * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
- */
- public function handle($payload = null)
- {
- switch ($payload['Event']) {
- case 'subscribe':
- //关注公众号事件
- return $this->wakeUp("App\\Wechat\\Official\\Event\\", "SubscribeEvent", $payload);
- break;
- case 'SCAN':
- //用户扫公众号生成的二维码事件
- return $this->wakeUp("App\\Wechat\\Official\\Event\\Scan\\", $payload['EventKey'], $payload);
- break;
- case 'CLICK':
- //点击菜单拉取消息时的事件推送
- return $this->wakeUp("App\\Wechat\\Official\\Event\\Click\\", $payload['EventKey'], $payload);
- break;
- case 'VIEW':
- //点击菜单跳转链接时的事件推送
- // return $this->wakeUp("App\\Wechat\\Official\\Event\\View\\", $payload['EventKey'], $payload);
- break;
- case 'scancode_push':
- //菜单 扫码推事件的事件推送
- return $this->wakeUp("App\\Wechat\\Official\\Event\\ScanCodePush\\", $payload['EventKey'], $payload);
- break;
- case 'scancode_waitmsg':
- //菜单 扫码推事件且弹出“消息接收中”提示框的事件推送
- return $this->wakeUp("App\\Wechat\\Official\\Event\\ScanCodeWaitmsg\\", $payload['EventKey'], $payload);
- break;
- case 'pic_sysphoto':
- //菜单 弹出系统拍照发图的事件推送
- return $this->wakeUp("App\\Wechat\\Official\\Event\\PicSysPhoto\\", $payload['EventKey'], $payload);
- break;
- case 'pic_photo_or_album':
- //菜单 弹出拍照或者相册发图的事件推送
- return $this->wakeUp("App\\Wechat\\Official\\Event\\PicPhotoOrAlbum\\", $payload['EventKey'], $payload);
- break;
- case 'pic_weixin':
- //菜单 弹出微信相册发图器的事件推送
- return $this->wakeUp("App\\Wechat\\Official\\Event\\PicWeixin\\", $payload['EventKey'], $payload);
- break;
- case 'location_select':
- //菜单 弹出地理位置选择器的事件推送
- return $this->wakeUp("App\\Wechat\\Official\\Event\\LocationSelect\\", $payload['EventKey'], $payload);
- break;
- case 'view_miniprogram':
- //菜单 点击菜单跳转小程序的事件推送
- // return $this->wakeUp("App\\Wechat\\Official\\Event\\ViewMiniProgram\\", $payload['EventKey'], $payload);
- break;
- }
- }
- private function wakeUp($namespace, $classname, $payload)
- {
- $official=$this->wechatService->getOfficialAccount();
- $wechatUser=$official->user->get($payload['FromUserName']);
- $user=$this->authService->wechatCheck($wechatUser);
- $class =$namespace.$classname;
- if (!class_exists($class)) {
- return "";
- }
- $class =app($class);
- return $class->handle($wechatUser, $user, $payload);
- }
- }
|