feat(board): 게시판 수정 시 메뉴 URL/이름 자동 업데이트
- MenuService::updateMenuForBoard() 메서드 추가 - 시스템 게시판: global_menus + 연결된 모든 menus URL 업데이트 - 테넌트 게시판: 해당 테넌트의 menus만 URL 업데이트 - BoardService::updateAnyBoard()에서 board_code/name 변경 감지 시 호출 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1498,4 +1498,58 @@ public function restoreMenuForBoard(string $boardCode, string $boardName, bool $
|
||||
return $created !== null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 게시판 코드 변경 시 연결된 메뉴 URL도 업데이트
|
||||
*
|
||||
* @param string $oldCode 기존 게시판 코드
|
||||
* @param string $newCode 새 게시판 코드
|
||||
* @param string $newName 새 게시판 이름
|
||||
* @param bool $isSystem 시스템 게시판 여부
|
||||
* @param int|null $tenantId 테넌트 ID (테넌트 게시판인 경우)
|
||||
*/
|
||||
public function updateMenuForBoard(string $oldCode, string $newCode, string $newName, bool $isSystem, ?int $tenantId = null): bool
|
||||
{
|
||||
if ($isSystem) {
|
||||
// 시스템 게시판: global_menus + 연결된 모든 menus 업데이트
|
||||
$oldUrl = '/customer-center/'.$oldCode;
|
||||
$newUrl = '/customer-center/'.$newCode;
|
||||
|
||||
// 1. GlobalMenu 업데이트
|
||||
$globalMenu = GlobalMenu::where('url', $oldUrl)->first();
|
||||
if ($globalMenu) {
|
||||
$globalMenu->update([
|
||||
'url' => $newUrl,
|
||||
'name' => $newName,
|
||||
]);
|
||||
|
||||
// 2. 해당 global_menu_id를 참조하는 모든 menus 업데이트
|
||||
Menu::where('global_menu_id', $globalMenu->id)
|
||||
->update([
|
||||
'url' => $newUrl,
|
||||
'name' => $newName,
|
||||
]);
|
||||
}
|
||||
|
||||
return true;
|
||||
} else {
|
||||
// 테넌트 게시판: 해당 테넌트의 menus만 업데이트
|
||||
$oldUrl = '/boards/'.$oldCode;
|
||||
$newUrl = '/boards/'.$newCode;
|
||||
|
||||
$query = Menu::where('url', $oldUrl);
|
||||
if ($tenantId) {
|
||||
$query->where('tenant_id', $tenantId);
|
||||
} else {
|
||||
$query->whereNull('tenant_id');
|
||||
}
|
||||
|
||||
$query->update([
|
||||
'url' => $newUrl,
|
||||
'name' => $newName,
|
||||
]);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user