-- 메뉴 종류 (admin=관리자 상단 메뉴, site=사이트 첫페이지 등) CREATE TABLE IF NOT EXISTS `menu_type` ( `mt_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '메뉴종류 PK', `mt_code` VARCHAR(30) NOT NULL DEFAULT '' COMMENT '코드(admin, site 등)', `mt_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '표시명', `mt_sort` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '정렬', PRIMARY KEY (`mt_idx`), UNIQUE KEY `uk_mt_code` (`mt_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='메뉴 종류'; -- 메뉴 항목 (지자체별 관리, 트리: mm_pidx=0 최상위, mm_dep 깊이, mm_num 형제순서) CREATE TABLE IF NOT EXISTS `menu` ( `mm_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '메뉴 PK', `mt_idx` INT UNSIGNED NOT NULL COMMENT '메뉴종류 FK', `lg_idx` INT UNSIGNED NOT NULL COMMENT '지자체 FK', `mm_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '메뉴명', `mm_link` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '링크(예: admin/users)', `mm_pidx` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '부모 메뉴 PK(0=최상위)', `mm_dep` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '깊이(0,1,2)', `mm_num` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '형제 내 순서', `mm_cnode` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '자식 개수', `mm_level` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '노출 허용 mb_level 쉼표구분(빈값=전체)', `mm_is_view` CHAR(1) NOT NULL DEFAULT 'Y' COMMENT 'Y=노출, N=숨김', PRIMARY KEY (`mm_idx`), KEY `idx_mt_lg` (`mt_idx`, `lg_idx`), KEY `idx_mm_pidx` (`mm_pidx`), KEY `idx_mm_dep_num` (`mm_dep`, `mm_num`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='메뉴'; -- 초기 데이터: 메뉴 종류 (admin, site) + lg_idx=1 지자체용 기본 1차 메뉴 INSERT INTO `menu_type` (`mt_code`, `mt_name`, `mt_sort`) VALUES ('admin', '관리자 메뉴', 10), ('site', '사이트 메뉴', 20); -- admin 타입, lg_idx=1 기본 1차 관리자 메뉴 INSERT INTO `menu` (`mt_idx`, `lg_idx`, `mm_name`, `mm_link`, `mm_pidx`, `mm_dep`, `mm_num`, `mm_cnode`, `mm_level`, `mm_is_view`) VALUES -- mt_idx=1 (admin) (1, 1, '대시보드', 'admin', 0, 0, 0, 0, '3', 'Y'), (1, 1, '회원 관리', 'admin/users', 0, 0, 1, 0, '', 'Y'), (1, 1, '로그인 이력', 'admin/access/login-history', 0, 0, 2, 0, '', 'Y'), (1, 1, '승인 대기', 'admin/access/approvals', 0, 0, 3, 0, '', 'Y'), (1, 1, '역할', 'admin/roles', 0, 0, 4, 0, '', 'Y'), (1, 1, '메뉴', 'admin/menus', 0, 0, 5, 0, '', 'Y'), (1, 1, '지자체 전환', 'admin/select-local-government', 0, 0, 6, 0, '', 'Y'), (1, 1, '지자체', 'admin/local-governments', 0, 0, 7, 0, '', 'Y'), (1, 1, '지정판매소', 'admin/designated-shops', 0, 0, 8, 0, '3', 'Y'), -- mt_idx=2 (site) 기본 1차 사이트 메뉴 (링크는 추후 실제 라우트로 변경) (2, 1, '기본정보관리', 'bag/basic-info', 0, 0, 0, 0, '', 'Y'), (2, 1, '발주 입고 관리', 'bag/purchase-inbound', 0, 0, 1, 0, '', 'Y'), (2, 1, '불출 관리', 'bag/issue', 0, 0, 2, 0, '', 'Y'), (2, 1, '재고 관리', 'bag/inventory', 0, 0, 3, 0, '', 'Y'), (2, 1, '판매 관리', 'bag/sales', 0, 0, 4, 0, '', 'Y'), (2, 1, '판매 현황', 'bag/sales-stats', 0, 0, 5, 0, '', 'Y'), (2, 1, '봉투 수불 관리', 'bag/flow', 0, 0, 6, 0, '', 'Y'), (2, 1, '통계 분석 관리', 'bag/analytics', 0, 0, 7, 0, '', 'Y'), (2, 1, '창', 'bag/window', 0, 0, 8, 0, '', 'Y'), (2, 1, '도움말', 'bag/help', 0, 0, 9, 0, '', 'Y');