| 1234567891011121314151617181920212223242526272829 |
- <?php
- namespace App\Http\Controllers\admin;
- use App\Http\Controllers\Controller;
- use App\Services\SiteMessageService;
- use Illuminate\Auth\Access\AuthorizationException;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Validation\ValidationException;
- class SiteMessage extends Controller
- {
- public function index(SiteMessageService $service) { return $this->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, '信息服务暂不可用,请稍后重试'); }
- }
- }
|