run(fn () => $service->listing(request()->all())); } public function options(SiteMessageService $service) { return $this->run(fn () => $service->options()); } public function users(SiteMessageService $service) { return $this->run(fn () => $service->recipients('user', request()->all())); } public function agents(SiteMessageService $service) { return $this->run(fn () => $service->recipients('agent', request()->all())); } public function send(SiteMessageService $service) { return $this->run(fn () => $service->send(request()->all())); } public function detail(SiteMessageService $service) { return $this->run(fn () => $service->detail($this->id())); } public function delete(SiteMessageService $service) { return $this->run(fn () => $service->retract($this->id())); } public function logs(SiteMessageService $service) { return $this->run(fn () => $service->logs(request()->all())); } private function id(): int { return (int) request()->validate(['id' => ['required', 'integer', 'min:1']])['id']; } private function run(callable $callback) { try { return $this->success($callback()); } catch (ValidationException $e) { return $this->error(-3, $e->validator->errors()->first()); } catch (AuthorizationException $e) { return $this->error(-1, $e->getMessage()); } catch (\Throwable $e) { Log::error('site_message_admin_failed', ['exception' => $e]); return $this->error(-3, '信息服务暂不可用,请稍后重试'); } } }