| 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);
 
-     }
 
- }
 
 
  |