run(fn () => $service->levels()); } public function saveLevel(ShareAdminService $service) { return $this->run(fn () => $service->saveLevel(request()->all())); } public function deleteLevel(ShareAdminService $service) { return $this->run(function () use ($service) { $params = request()->validate(['id' => ['required', 'integer', 'min:1']]); $service->deleteLevel((int)$params['id']); return []; }); } public function rateRules(ShareAdminService $service) { return $this->run(function () use ($service) { $params = request()->validate(['category' => ['nullable', 'string']]); return $service->rateRules($params['category'] ?? null); }); } public function saveRateRules(ShareAdminService $service) { return $this->run(function () use ($service) { $params = request()->validate(['category' => ['required', 'string'], 'rules' => ['required', 'array']]); return $service->saveRateRules($params['category'], $params['rules']); }); } public function claims(ShareClaimAuditService $service) { return $this->run(fn () => $service->list(request()->all())); } public function claimDetail(ShareClaimAuditService $service) { return $this->run(function () use ($service) { $params = request()->validate(['id' => ['required', 'integer', 'min:1']]); return $service->detail((int)$params['id']); }); } public function auditClaim(ShareClaimAuditService $service) { return $this->run(function () use ($service) { $params = request()->validate(['id' => ['required', 'integer', 'min:1'], 'action' => ['required', Rule::in(['approve', 'reject'])], 'remark' => ['nullable', 'string', 'max:2000']]); return $service->audit((int)$params['id'], $params['action'], (int)(request()->user->id ?? 0), (string)($params['remark'] ?? '')); }); } private function run(callable $callback) { try { return $this->success($callback()); } catch (ValidationException $e) { return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first()); } catch (QueryException $e) { Log::error('sharing_admin_database_error', ['exception' => $e]); return $this->error(HttpStatus::CUSTOM_ERROR, '分享管理服务暂不可用,请稍后重试'); } catch (\RuntimeException | \InvalidArgumentException $e) { return $this->error(HttpStatus::CUSTOM_ERROR, $e->getMessage()); } catch (Throwable $e) { Log::error('sharing_admin_error', ['exception' => $e]); return $this->error(HttpStatus::CUSTOM_ERROR, '分享管理服务暂不可用,请稍后重试'); } } }