service = new ApprovalService(); } /** * 获取路由参数 */ private function getRouteParam(Request $request, string $name, $default = null) { $route = $request->route; if ($route && method_exists($route, 'param')) { return $route->param($name) ?? $default; } return $default; } /** * 获取审批列表 */ public function list(Request $request): Response { $userId = $this->getUserId($request); $type = $request->get('type', 'my'); $page = (int) $request->get('page', 1); $pageSize = (int) $request->get('page_size', 20); try { $result = $this->service->getList($userId, $type, $page, $pageSize); // 使用 json() 全局函数返回 JSON return json([ 'code' => 0, 'message' => 'success', 'data' => $result, ]); } catch (\Exception $e) { error_log("❌ Error in list controller: " . $e->getMessage() . "\n" . $e->getTraceAsString()); return $this->error($e->getMessage()); } } /** * 获取审批详情 */ public function detail(Request $request): Response { $id = (int) $this->getRouteParam($request, 'id'); $approval = ApprovalOrder::with(['flow.nodes', 'applicant', 'records.approver']) ->findOrFail($id); return $this->success($approval); } /** * 审批通过 */ public function approve(Request $request): Response { $userId = $this->getUserId($request); $id = (int) $this->getRouteParam($request, 'id'); $data = $request->post(); $data = $data ?? []; $comment = $data['comment'] ?? null; try { $approval = $this->service->approve($id, $userId, $comment); return $this->success($approval, '已通过'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * 审批拒绝 */ public function reject(Request $request): Response { $userId = $this->getUserId($request); $id = (int) $this->getRouteParam($request, 'id'); $data = $request->post(); $data = $data ?? []; $comment = $data['comment'] ?? null; try { $approval = $this->service->reject($id, $userId, $comment); return $this->success($approval, '已拒绝'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * 撤销申请 */ public function cancel(Request $request): Response { $userId = $this->getUserId($request); $id = (int) $this->getRouteParam($request, 'id'); try { $approval = $this->service->cancel($id, $userId); return $this->success($approval, '已撤销'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } }