Promotion.php 1.6 KB

12345678910111213141516171819202122232425262728293031
  1. <?php
  2. namespace App\Http\Controllers\admin;
  3. use App\Constants\HttpStatus;
  4. use App\Http\Controllers\Controller;
  5. use App\Services\PromotionAdminService;
  6. use Illuminate\Support\Facades\Log;
  7. use Illuminate\Validation\ValidationException;
  8. class Promotion extends Controller
  9. {
  10. private function run(callable $callback)
  11. {
  12. try { return $this->success($callback()); }
  13. catch (ValidationException $e) { return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first()); }
  14. catch (\Throwable $e) { Log::error('promotion_admin_failed', ['exception' => $e]); return $this->error(HttpStatus::CUSTOM_ERROR, '独立活动服务暂不可用'); }
  15. }
  16. public function index(PromotionAdminService $s) { return $this->run(fn () => $s->listing(request()->all())); }
  17. public function options(PromotionAdminService $s) { return $this->run(fn () => $s->options()); }
  18. public function submit(PromotionAdminService $s) { return $this->run(fn () => $s->save(request()->all())); }
  19. public function records(PromotionAdminService $s) { return $this->run(fn () => $s->records(request()->all())); }
  20. public function detail(PromotionAdminService $s)
  21. {
  22. return $this->run(function () use ($s) { $p = request()->validate(['id' => ['required', 'integer', 'min:1']]); return $s->detail((int)$p['id']); });
  23. }
  24. public function status(PromotionAdminService $s)
  25. {
  26. return $this->run(function () use ($s) { $p = request()->validate(['id' => ['required', 'integer', 'min:1'], 'status' => ['required', 'integer', 'in:0,1']]); return $s->status((int)$p['id'], (int)$p['status']); });
  27. }
  28. }