Files
ga-commission-system/ga-common/src/main/resources/db/migration/V10__메뉴관리.sql
T
GA Pro cef4e48e27 feat: project skeleton + DB migrations V1-V12 + ga-common framework
- Gradle multi-module: ga-common, ga-core, ga-api, ga-batch, ga-admin
- Flyway V1-V12: org/product/rule/receive/ledger/settle/batch/code/menu/system + seed
- ga-common (complete):
  - model: ApiResponse, PageResponse, SearchParam, TreeNode
  - exception: ErrorCode, BizException, GlobalExceptionHandler
  - annotation + aop: @RequirePermission, @DataChangeLog, ApiLog
  - auth + security: JWT, SecurityConfig
  - mybatis: BaseMapper, EncryptTypeHandler, JsonTypeHandler, AuditInterceptor
  - code (Redis cached) / menu (RBAC tree) / file / system / notification
  - excel: SXSSF+Cursor export, SAX+batch import (1M/700K rows)
  - util: Date/Money/Mask/Encrypt/Security
2026-05-09 21:29:18 +09:00

55 lines
2.0 KiB
SQL

-- V10: 메뉴 / 권한 / 역할
CREATE TABLE menu (
menu_id SERIAL PRIMARY KEY,
parent_menu_id BIGINT REFERENCES menu(menu_id),
menu_code VARCHAR(50) NOT NULL UNIQUE,
menu_name VARCHAR(100) NOT NULL,
menu_type VARCHAR(20) NOT NULL, -- DIRECTORY / PAGE / LINK
menu_path VARCHAR(200),
menu_icon VARCHAR(50),
component_path VARCHAR(200),
menu_level INT NOT NULL,
sort_order INT NOT NULL DEFAULT 0,
is_visible CHAR(1) NOT NULL DEFAULT 'Y',
is_active CHAR(1) NOT NULL DEFAULT 'Y',
description VARCHAR(300)
);
CREATE INDEX idx_menu_parent ON menu(parent_menu_id, sort_order);
CREATE TABLE menu_permission (
perm_id SERIAL PRIMARY KEY,
menu_id BIGINT NOT NULL REFERENCES menu(menu_id),
perm_code VARCHAR(20) NOT NULL, -- READ / CREATE / UPDATE / DELETE / APPROVE / EXPORT / PRINT
perm_name VARCHAR(50) NOT NULL,
sort_order INT NOT NULL DEFAULT 0,
UNIQUE (menu_id, perm_code)
);
CREATE TABLE role (
role_id SERIAL PRIMARY KEY,
role_code VARCHAR(50) NOT NULL UNIQUE,
role_name VARCHAR(100) NOT NULL,
role_desc VARCHAR(300),
role_level INT NOT NULL DEFAULT 0,
is_system CHAR(1) NOT NULL DEFAULT 'N',
is_active CHAR(1) NOT NULL DEFAULT 'Y'
);
CREATE TABLE role_menu_permission (
rmp_id SERIAL PRIMARY KEY,
role_id BIGINT NOT NULL REFERENCES role(role_id),
menu_id BIGINT NOT NULL REFERENCES menu(menu_id),
perm_code VARCHAR(20) NOT NULL,
is_granted CHAR(1) NOT NULL DEFAULT 'Y',
UNIQUE (role_id, menu_id, perm_code)
);
CREATE INDEX idx_rmp_role ON role_menu_permission(role_id);
CREATE TABLE user_role (
ur_id SERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(user_id),
role_id BIGINT NOT NULL REFERENCES role(role_id),
UNIQUE (user_id, role_id)
);