From 9ba1fa2db167fbd29330cc6d0affe0d9c7fb560e Mon Sep 17 00:00:00 2001 From: pro Date: Sat, 31 Jan 2026 10:26:51 +0900 Subject: [PATCH] =?UTF-8?q?fix:=EC=98=81=EC=97=85=ED=8C=8C=ED=8A=B8?= =?UTF-8?q?=EB=84=88=EA=B4=80=EB=A6=AC=20=EB=AA=A9=EB=A1=9D=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EB=B3=B8=EC=9D=B8=EC=9D=B4=20=EC=9C=A0=EC=B9=98?= =?UTF-8?q?=ED=95=9C=20=ED=8C=8C=ED=8A=B8=EB=84=88=EB=A7=8C=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - parent_id 필터를 현재 로그인 사용자 ID로 강제 설정 - 통계(stats)도 현재 사용자 기준으로 조회하도록 변경 - getSalesPartners()에 parent_id 필터 처리 추가 - getStats()에 parentId 파라미터 추가 Co-Authored-By: Claude Opus 4.5 --- .../Controllers/Sales/SalesManagerController.php | 3 ++- app/Services/Sales/SalesManagerService.php | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Sales/SalesManagerController.php b/app/Http/Controllers/Sales/SalesManagerController.php index 38806bf4..1d62eab7 100644 --- a/app/Http/Controllers/Sales/SalesManagerController.php +++ b/app/Http/Controllers/Sales/SalesManagerController.php @@ -32,10 +32,11 @@ public function index(Request $request): View|Response 'search' => $request->get('search'), 'role' => $request->get('role'), 'approval_status' => $request->get('approval_status'), + 'parent_id' => auth()->id(), // 현재 로그인한 사용자가 유치한 파트너만 조회 ]; $partners = $this->service->getSalesPartners($filters)->paginate(20); - $stats = $this->service->getStats(); + $stats = $this->service->getStats(auth()->id()); // 통계도 현재 사용자 기준 return view('sales.managers.index', compact('partners', 'stats')); } diff --git a/app/Services/Sales/SalesManagerService.php b/app/Services/Sales/SalesManagerService.php index c7a5a36e..1a25036b 100644 --- a/app/Services/Sales/SalesManagerService.php +++ b/app/Services/Sales/SalesManagerService.php @@ -397,6 +397,11 @@ public function getSalesPartners(array $filters = []) $query->where('approval_status', $filters['approval_status']); } + // 유치자(추천인) 필터 - 현재 로그인한 사용자가 유치한 파트너만 + if (!empty($filters['parent_id'])) { + $query->where('parent_id', $filters['parent_id']); + } + return $query->orderBy('name'); } @@ -453,7 +458,7 @@ public function getSalesRoles() /** * 통계 조회 */ - public function getStats(): array + public function getStats(?int $parentId = null): array { $tenantId = session('selected_tenant_id', 1); @@ -465,6 +470,11 @@ public function getStats(): array }); }); + // 유치자 기준 필터 + if ($parentId) { + $baseQuery->where('parent_id', $parentId); + } + return [ 'total' => (clone $baseQuery)->count(), 'pending' => (clone $baseQuery)->where('approval_status', 'pending')->count(),