fix(menu): 테넌트 Menu 생성 시 global_menu_id 연결 추가
- createMenuForBoard(): GlobalMenu 조회/생성 후 테넌트 Menu에 global_menu_id 설정 - restoreMenuForBoard(): 복원/생성 시에도 global_menu_id 연결 - is_customized: false 추가하여 글로벌 메뉴 연동 표시 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1237,10 +1237,9 @@ public function createMenuForBoard(array $boardData): GlobalMenu|Menu|null
|
||||
// 시스템 게시판 → global_menus + 모든 테넌트 menus에 추가
|
||||
$url = '/customer-center/'.$boardCode;
|
||||
|
||||
// 1. GlobalMenu에 추가
|
||||
$globalMenu = null;
|
||||
$globalExists = GlobalMenu::where('url', $url)->exists();
|
||||
if (! $globalExists) {
|
||||
// 1. GlobalMenu 조회 또는 생성
|
||||
$globalMenu = GlobalMenu::where('url', $url)->first();
|
||||
if (! $globalMenu) {
|
||||
$maxOrder = GlobalMenu::where('parent_id', $parentId)->max('sort_order') ?? 0;
|
||||
|
||||
$globalMenu = GlobalMenu::create([
|
||||
@@ -1255,7 +1254,7 @@ public function createMenuForBoard(array $boardData): GlobalMenu|Menu|null
|
||||
]);
|
||||
}
|
||||
|
||||
// 2. 모든 테넌트의 Menu에 추가
|
||||
// 2. 모든 테넌트의 Menu에 추가 (global_menu_id 연결)
|
||||
$tenants = Tenant::active()->get();
|
||||
foreach ($tenants as $tenant) {
|
||||
$menuParentId = $this->findParentMenuForBoard(false, $tenant->id);
|
||||
@@ -1268,6 +1267,7 @@ public function createMenuForBoard(array $boardData): GlobalMenu|Menu|null
|
||||
Menu::create([
|
||||
'tenant_id' => $tenant->id,
|
||||
'parent_id' => $menuParentId,
|
||||
'global_menu_id' => $globalMenu->id,
|
||||
'name' => $boardName,
|
||||
'url' => $url,
|
||||
'icon' => 'document-text',
|
||||
@@ -1275,6 +1275,7 @@ public function createMenuForBoard(array $boardData): GlobalMenu|Menu|null
|
||||
'is_active' => true,
|
||||
'hidden' => false,
|
||||
'is_external' => false,
|
||||
'is_customized' => false,
|
||||
'created_by' => auth()->id(),
|
||||
]);
|
||||
}
|
||||
@@ -1400,17 +1401,17 @@ public function restoreMenuForBoard(string $boardCode, string $boardName, bool $
|
||||
if ($isSystem) {
|
||||
$url = '/customer-center/'.$boardCode;
|
||||
|
||||
// === GlobalMenu 처리 ===
|
||||
$globalTrashed = GlobalMenu::onlyTrashed()->where('url', $url)->first();
|
||||
if ($globalTrashed) {
|
||||
$globalTrashed->restore();
|
||||
$globalTrashed->deleted_by = null;
|
||||
$globalTrashed->save();
|
||||
} elseif (! GlobalMenu::where('url', $url)->exists()) {
|
||||
// === GlobalMenu 복원 또는 생성 ===
|
||||
$globalMenu = GlobalMenu::withTrashed()->where('url', $url)->first();
|
||||
if ($globalMenu && $globalMenu->trashed()) {
|
||||
$globalMenu->restore();
|
||||
$globalMenu->deleted_by = null;
|
||||
$globalMenu->save();
|
||||
} elseif (! $globalMenu) {
|
||||
// 없으면 생성
|
||||
$parentId = $this->findParentMenuForBoard(true, null);
|
||||
$maxOrder = GlobalMenu::where('parent_id', $parentId)->max('sort_order') ?? 0;
|
||||
GlobalMenu::create([
|
||||
$globalMenu = GlobalMenu::create([
|
||||
'parent_id' => $parentId,
|
||||
'name' => $boardName,
|
||||
'url' => $url,
|
||||
@@ -1422,13 +1423,14 @@ public function restoreMenuForBoard(string $boardCode, string $boardName, bool $
|
||||
]);
|
||||
}
|
||||
|
||||
// === 모든 활성 테넌트의 Menu 복원/생성 ===
|
||||
// === 모든 활성 테넌트의 Menu 복원/생성 (global_menu_id 연결) ===
|
||||
$tenants = Tenant::active()->get();
|
||||
foreach ($tenants as $tenant) {
|
||||
$menuTrashed = Menu::onlyTrashed()->where('url', $url)->where('tenant_id', $tenant->id)->first();
|
||||
if ($menuTrashed) {
|
||||
$menuTrashed->restore();
|
||||
$menuTrashed->deleted_by = null;
|
||||
$menuTrashed->global_menu_id = $globalMenu->id;
|
||||
$menuTrashed->save();
|
||||
} elseif (! Menu::where('url', $url)->where('tenant_id', $tenant->id)->exists()) {
|
||||
// 없으면 생성
|
||||
@@ -1437,6 +1439,7 @@ public function restoreMenuForBoard(string $boardCode, string $boardName, bool $
|
||||
Menu::create([
|
||||
'tenant_id' => $tenant->id,
|
||||
'parent_id' => $menuParentId,
|
||||
'global_menu_id' => $globalMenu->id,
|
||||
'name' => $boardName,
|
||||
'url' => $url,
|
||||
'icon' => 'document-text',
|
||||
@@ -1444,6 +1447,7 @@ public function restoreMenuForBoard(string $boardCode, string $boardName, bool $
|
||||
'is_active' => true,
|
||||
'hidden' => false,
|
||||
'is_external' => false,
|
||||
'is_customized' => false,
|
||||
'created_by' => auth()->id(),
|
||||
]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user