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) { $data = Cache::get($payload['FromUserName']);//查找是否有记录 if($data){ if(array_key_exists('module',$data)){ switch ($data['module']){ case 'recruit': return $this->wakeUp("App\\Wechat\\Official\\Service\\", 'RecruitService', $payload, $data); break; } } } Cache::forget($payload['FromUserName']); if($payload['MsgType'] == 'text'){ switch ($payload['Content']){ case '报名': $data = [ 'module' => 'recruit', 'action' => 'init'//报名主菜单(此场景下,查询当前仍可报名的招考场次,做成序号回复,并加上一些常用功能服务) ]; return $this->wakeUp("App\\Wechat\\Official\\Service\\", 'RecruitService', $payload, $data); break; } } } private function wakeUp($namespace, $classname, $payload, $data = null) { $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, $data); } }