feat: 카테고리 컬럼 메뉴별 매핑 기능 구현
- category_column_mapping 테이블 생성 (마이그레이션 054) - 테이블 타입 관리에서 2레벨 메뉴 선택 기능 추가 - 카테고리 컬럼 조회 시 현재 메뉴 및 상위 메뉴 매핑 자동 조회 - 캐시 무효화 로직 개선 - 메뉴별 카테고리 설정 저장 및 불러오기 기능 구현
This commit is contained in:
@@ -1514,6 +1514,7 @@ export class ScreenManagementService {
|
||||
throw new Error("이미 할당된 화면입니다.");
|
||||
}
|
||||
|
||||
// screen_menu_assignments에 할당 추가
|
||||
await query(
|
||||
`INSERT INTO screen_menu_assignments (
|
||||
screen_id, menu_objid, company_code, display_order, created_by
|
||||
@@ -1526,6 +1527,40 @@ export class ScreenManagementService {
|
||||
assignmentData.createdBy || null,
|
||||
]
|
||||
);
|
||||
|
||||
// 화면 정보 조회 (screen_code 가져오기)
|
||||
const screen = await queryOne<{ screen_code: string }>(
|
||||
`SELECT screen_code FROM screen_definitions WHERE screen_id = $1`,
|
||||
[screenId]
|
||||
);
|
||||
|
||||
if (screen) {
|
||||
// menu_info 테이블도 함께 업데이트 (menu_url과 screen_code 설정)
|
||||
// 관리자 메뉴인지 확인
|
||||
const menu = await queryOne<{ menu_type: string }>(
|
||||
`SELECT menu_type FROM menu_info WHERE objid = $1`,
|
||||
[assignmentData.menuObjid]
|
||||
);
|
||||
|
||||
const isAdminMenu = menu && (menu.menu_type === "0" || menu.menu_type === "admin");
|
||||
const menuUrl = isAdminMenu
|
||||
? `/screens/${screenId}?mode=admin`
|
||||
: `/screens/${screenId}`;
|
||||
|
||||
await query(
|
||||
`UPDATE menu_info
|
||||
SET menu_url = $1, screen_code = $2
|
||||
WHERE objid = $3`,
|
||||
[menuUrl, screen.screen_code, assignmentData.menuObjid]
|
||||
);
|
||||
|
||||
logger.info("화면 할당 완료 (menu_info 업데이트)", {
|
||||
screenId,
|
||||
menuObjid: assignmentData.menuObjid,
|
||||
menuUrl,
|
||||
screenCode: screen.screen_code,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1589,11 +1624,26 @@ export class ScreenManagementService {
|
||||
menuObjid: number,
|
||||
companyCode: string
|
||||
): Promise<void> {
|
||||
// screen_menu_assignments에서 할당 삭제
|
||||
await query(
|
||||
`DELETE FROM screen_menu_assignments
|
||||
WHERE screen_id = $1 AND menu_objid = $2 AND company_code = $3`,
|
||||
[screenId, menuObjid, companyCode]
|
||||
);
|
||||
|
||||
// menu_info 테이블도 함께 업데이트 (menu_url과 screen_code 제거)
|
||||
await query(
|
||||
`UPDATE menu_info
|
||||
SET menu_url = NULL, screen_code = NULL
|
||||
WHERE objid = $1`,
|
||||
[menuObjid]
|
||||
);
|
||||
|
||||
logger.info("화면 할당 해제 완료 (menu_info 업데이트)", {
|
||||
screenId,
|
||||
menuObjid,
|
||||
companyCode,
|
||||
});
|
||||
}
|
||||
|
||||
// ========================================
|
||||
|
||||
Reference in New Issue
Block a user