Initial project import for team collaboration.
Exclude local docs, MCP, and secrets via gitignore. Made-with: Cursor
This commit is contained in:
6
writable/.htaccess
Executable file
6
writable/.htaccess
Executable file
@@ -0,0 +1,6 @@
|
||||
<IfModule authz_core_module>
|
||||
Require all denied
|
||||
</IfModule>
|
||||
<IfModule !authz_core_module>
|
||||
Deny from all
|
||||
</IfModule>
|
||||
11
writable/cache/index.html
vendored
Executable file
11
writable/cache/index.html
vendored
Executable file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
371
writable/database/code_master_init_daegu.sql
Normal file
371
writable/database/code_master_init_daegu.sql
Normal file
@@ -0,0 +1,371 @@
|
||||
-- 대구광역시(특히 북구) 기준 기본코드 초기 데이터 스크립트
|
||||
-- 실행 순서:
|
||||
-- 1) code_kind / code_detail 테이블 생성
|
||||
-- 2) code_kind 데이터 입력
|
||||
-- 3) code_detail 데이터 입력
|
||||
|
||||
/* =========================================================
|
||||
* 1. 테이블 생성 (이미 존재하면 생략 가능)
|
||||
* =======================================================*/
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `code_kind` (
|
||||
`ck_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '코드종류 PK',
|
||||
`ck_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '종류 코드(A~Y 등)',
|
||||
`ck_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '종류 명칭',
|
||||
`ck_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용',
|
||||
`ck_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`ck_idx`),
|
||||
UNIQUE KEY `uk_ck_code` (`ck_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='기본코드 종류';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `code_detail` (
|
||||
`cd_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '세부코드 PK',
|
||||
`cd_ck_idx` INT UNSIGNED NOT NULL COMMENT 'code_kind FK',
|
||||
`cd_code` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '세부 코드',
|
||||
`cd_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '세부 명칭',
|
||||
`cd_sort` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '정렬 순서',
|
||||
`cd_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용',
|
||||
`cd_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`cd_idx`),
|
||||
KEY `idx_cd_ck_idx` (`cd_ck_idx`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='세부 기본코드';
|
||||
|
||||
|
||||
/* =========================================================
|
||||
* 2. code_kind 초기 데이터
|
||||
* (중복 실행 시 uk_ck_code 제약 때문에 에러 가능)
|
||||
* =======================================================*/
|
||||
|
||||
INSERT INTO `code_kind` (`ck_code`, `ck_name`, `ck_state`, `ck_regdate`) VALUES
|
||||
('A', '도/특별시/광역시 구분', 1, NOW()),
|
||||
('B', '특별시/광역시/시/군 코드', 1, NOW()),
|
||||
('C', '구 코드', 1, NOW()),
|
||||
('D', '동 코드', 1, NOW()),
|
||||
('E', '봉투구분', 1, NOW()),
|
||||
('F', '봉투재질', 1, NOW()),
|
||||
('G', '용량별', 1, NOW()),
|
||||
('H', '무상지급 구분', 1, NOW()),
|
||||
('I', '판매형태', 1, NOW()),
|
||||
('J', '반품형태', 1, NOW()),
|
||||
('K', '반품사유', 1, NOW()),
|
||||
('L', '지정판매소 변경사유', 1, NOW()),
|
||||
('M', '수불구분', 1, NOW()),
|
||||
('N', '동판종류', 1, NOW()),
|
||||
('O', '봉투명', 1, NOW()),
|
||||
('P', '작업권한', 1, NOW()),
|
||||
('Q', '예산과목', 1, NOW()),
|
||||
('R', '은행목록', 1, NOW()),
|
||||
('S', '소속', 1, NOW()),
|
||||
('T', '직위', 1, NOW());
|
||||
|
||||
|
||||
/* =========================================================
|
||||
* 3. code_detail 초기 데이터
|
||||
* 3-1. 행정구역 관련 (대구광역시, 북구 및 북구 동)
|
||||
* =======================================================*/
|
||||
|
||||
-- A: 도/특별시/광역시 구분 – 대구는 광역시만 사용
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, '11', '광역시', 10, 1, NOW()
|
||||
FROM code_kind WHERE ck_code = 'A';
|
||||
|
||||
-- B: 특별시/광역시/시/군 코드 – 대구광역시
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, '1102', '대구광역시', 10, 1, NOW()
|
||||
FROM code_kind WHERE ck_code = 'B';
|
||||
|
||||
-- C: 구코드 – 북구 (CSV: 110209, 북구)
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, '110209', '북구', 10, 1, NOW()
|
||||
FROM code_kind WHERE ck_code = 'C';
|
||||
|
||||
-- D: 동코드 – 대구 북구의 동들 (11020901~11020928)
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '11020901' AS cd_code, '검단동' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '11020902', '고성동1가', 20 UNION ALL
|
||||
SELECT '11020903', '고성동2가', 30 UNION ALL
|
||||
SELECT '11020904', '고성동3가', 40 UNION ALL
|
||||
SELECT '11020905', '관음동', 50 UNION ALL
|
||||
SELECT '11020906', '구암동', 60 UNION ALL
|
||||
SELECT '11020907', '국우동', 70 UNION ALL
|
||||
SELECT '11020908', '금호동', 80 UNION ALL
|
||||
SELECT '11020909', '노곡동', 90 UNION ALL
|
||||
SELECT '11020910', '노원동1가', 100 UNION ALL
|
||||
SELECT '11020911', '노원동2가', 110 UNION ALL
|
||||
SELECT '11020912', '노원동3가', 120 UNION ALL
|
||||
SELECT '11020913', '대현동', 130 UNION ALL
|
||||
SELECT '11020914', '도남동', 140 UNION ALL
|
||||
SELECT '11020915', '동변동', 150 UNION ALL
|
||||
SELECT '11020916', '동천동', 160 UNION ALL
|
||||
SELECT '11020917', '동호동', 170 UNION ALL
|
||||
SELECT '11020918', '매천동', 180 UNION ALL
|
||||
SELECT '11020919', '복현동', 190 UNION ALL
|
||||
SELECT '11020920', '사수동', 200 UNION ALL
|
||||
SELECT '11020921', '산격동', 210 UNION ALL
|
||||
SELECT '11020922', '서변동', 220 UNION ALL
|
||||
SELECT '11020923', '연경동', 230 UNION ALL
|
||||
SELECT '11020924', '읍내동', 240 UNION ALL
|
||||
SELECT '11020925', '조야동', 250 UNION ALL
|
||||
SELECT '11020926', '칠성동1가', 260 UNION ALL
|
||||
SELECT '11020927', '칠성동2가', 270 UNION ALL
|
||||
SELECT '11020928', '침산동', 280
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'D';
|
||||
|
||||
|
||||
/* =========================================================
|
||||
* 3-2. 봉투·재질·용량·무상·판매형태 (E~I)
|
||||
* =======================================================*/
|
||||
|
||||
-- E: 봉투구분
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '10' AS cd_code, '일반용' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '20' AS cd_code, '공공용' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '30' AS cd_code, '무료용' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '40' AS cd_code, '공동주택용' AS cd_name, 40 AS cd_sort UNION ALL
|
||||
SELECT '50' AS cd_code, '재사용' AS cd_name, 50 AS cd_sort UNION ALL
|
||||
SELECT '60' AS cd_code, '음식물 봉투' AS cd_name, 60 AS cd_sort UNION ALL
|
||||
SELECT '61' AS cd_code, '음식물 스티커' AS cd_name, 70 AS cd_sort UNION ALL
|
||||
SELECT '62' AS cd_code, '음식물 용기' AS cd_name, 80 AS cd_sort UNION ALL
|
||||
SELECT '70' AS cd_code, '대형폐기물 스티커' AS cd_name, 90 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'E';
|
||||
|
||||
-- F: 봉투재질
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '2' AS cd_code, '고밀도' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '6' AS cd_code, 'PP마대' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '7' AS cd_code, '스티커' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '8' AS cd_code, '용기' AS cd_name, 40 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'F';
|
||||
|
||||
-- G: 용량별
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '10' AS cd_code, '2L' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '11' AS cd_code, '3L' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '12' AS cd_code, '5L' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '13' AS cd_code, '10L' AS cd_name, 40 AS cd_sort UNION ALL
|
||||
SELECT '15' AS cd_code, '20L' AS cd_name, 50 AS cd_sort UNION ALL
|
||||
SELECT '16' AS cd_code, '30L' AS cd_name, 60 AS cd_sort UNION ALL
|
||||
SELECT '17' AS cd_code, '50L' AS cd_name, 70 AS cd_sort UNION ALL
|
||||
SELECT '18' AS cd_code, '60L' AS cd_name, 80 AS cd_sort UNION ALL
|
||||
SELECT '19' AS cd_code, '75L' AS cd_name, 90 AS cd_sort UNION ALL
|
||||
SELECT '20' AS cd_code, '100L' AS cd_name, 100 AS cd_sort UNION ALL
|
||||
SELECT '21' AS cd_code, '120L' AS cd_name, 110 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'G';
|
||||
|
||||
-- H: 무상지급 구분
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '1' AS cd_code, '시설보호대상자' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '10' AS cd_code, '생보자' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '3' AS cd_code, '대한민국무공수훈자' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '4' AS cd_code, '사회복지시설' AS cd_name, 40 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'H';
|
||||
|
||||
-- I: 판매형태
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '1' AS cd_code, '무상지급' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '2' AS cd_code, '일반판매' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '3' AS cd_code, '관내판매' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '4' AS cd_code, '교환판매' AS cd_name, 40 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'I';
|
||||
|
||||
|
||||
/* =========================================================
|
||||
* 3-3. 반품·수불·동판·봉투명·작업권한·예산·은행 (J~R)
|
||||
* =======================================================*/
|
||||
|
||||
-- J: 반품형태
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '1' AS cd_code, '일반반품' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '2' AS cd_code, '관내반품' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '3' AS cd_code, '반품' AS cd_name, 30 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'J';
|
||||
|
||||
-- K: 반품사유
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '1' AS cd_code, '봉투훼손' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '2' AS cd_code, '지정판매소 폐업' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '4' AS cd_code, '스티커 미사용' AS cd_name, 30 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'K';
|
||||
|
||||
-- L: 지정판매소 변경사유
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '1' AS cd_code, '지정판매소변경사유1' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '2' AS cd_code, '지정판매소변경사유2' AS cd_name, 20 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'L';
|
||||
|
||||
-- M: 수불구분
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '10' AS cd_code, '실사입고' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '11' AS cd_code, '신청입고' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '12' AS cd_code, '무료입고' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '13' AS cd_code, '발주입고' AS cd_name, 40 AS cd_sort UNION ALL
|
||||
SELECT '16' AS cd_code, '반품입고(정상)' AS cd_name, 50 AS cd_sort UNION ALL
|
||||
SELECT '17' AS cd_code, '반품입고(불용)' AS cd_name, 60 AS cd_sort UNION ALL
|
||||
SELECT '18' AS cd_code, '이동입고' AS cd_name, 70 AS cd_sort UNION ALL
|
||||
SELECT '1A' AS cd_code, '교환입고' AS cd_name, 80 AS cd_sort UNION ALL
|
||||
SELECT '1B' AS cd_code, '기타입고' AS cd_name, 90 AS cd_sort UNION ALL
|
||||
SELECT '20' AS cd_code, '실사출고' AS cd_name, 100 AS cd_sort UNION ALL
|
||||
SELECT '21' AS cd_code, '신청불출' AS cd_name, 110 AS cd_sort UNION ALL
|
||||
SELECT '22' AS cd_code, '무료불출' AS cd_name, 120 AS cd_sort UNION ALL
|
||||
SELECT '23' AS cd_code, '일반판매' AS cd_name, 130 AS cd_sort UNION ALL
|
||||
SELECT '24' AS cd_code, '공공출고' AS cd_name, 140 AS cd_sort UNION ALL
|
||||
SELECT '26' AS cd_code, '반품출고(정상)' AS cd_name, 150 AS cd_sort UNION ALL
|
||||
SELECT '27' AS cd_code, '반품출고(불용)' AS cd_name, 160 AS cd_sort UNION ALL
|
||||
SELECT '28' AS cd_code, '이동출고' AS cd_name, 170 AS cd_sort UNION ALL
|
||||
SELECT '29' AS cd_code, '파기처리' AS cd_name, 180 AS cd_sort UNION ALL
|
||||
SELECT '2A' AS cd_code, '교환출고' AS cd_name, 190 AS cd_sort UNION ALL
|
||||
SELECT '2B' AS cd_code, '기타출고' AS cd_name, 200 AS cd_sort UNION ALL
|
||||
SELECT '99' AS cd_code, '시찰' AS cd_name, 210 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'M';
|
||||
|
||||
-- N: 동판종류
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '10' AS cd_code, '동판 종류1' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '20' AS cd_code, '동판 종류2' AS cd_name, 20 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'N';
|
||||
|
||||
-- O: 봉투명 (상세 봉투 코드)
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '10112' AS cd_code, '일반용 3L' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '10122' AS cd_code, '일반용 5L' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '10132' AS cd_code, '일반용 10L' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '10152' AS cd_code, '일반용 20L' AS cd_name, 40 AS cd_sort UNION ALL
|
||||
SELECT '10162' AS cd_code, '일반용 30L' AS cd_name, 50 AS cd_sort UNION ALL
|
||||
SELECT '10172' AS cd_code, '일반용 50L' AS cd_name, 60 AS cd_sort UNION ALL
|
||||
SELECT '10192' AS cd_code, '일반용 75L' AS cd_name, 70 AS cd_sort UNION ALL
|
||||
SELECT '10202' AS cd_code, '일반용 100L' AS cd_name, 80 AS cd_sort UNION ALL
|
||||
SELECT '20172' AS cd_code, '공공용 50L' AS cd_name, 90 AS cd_sort UNION ALL
|
||||
SELECT '40152' AS cd_code, '공동주택용 20L' AS cd_name, 100 AS cd_sort UNION ALL
|
||||
SELECT '40182' AS cd_code, '공동주택용 60L' AS cd_name, 110 AS cd_sort UNION ALL
|
||||
SELECT '40212' AS cd_code, '공동주택용 120L' AS cd_name, 120 AS cd_sort UNION ALL
|
||||
SELECT '50122' AS cd_code, '재사용 5L' AS cd_name, 130 AS cd_sort UNION ALL
|
||||
SELECT '60102' AS cd_code, '음식물 2L' AS cd_name, 140 AS cd_sort UNION ALL
|
||||
SELECT '60132' AS cd_code, '음식물 10L' AS cd_name, 150 AS cd_sort UNION ALL
|
||||
SELECT '61107' AS cd_code, '음식물 스티커 2L' AS cd_name, 160 AS cd_sort UNION ALL
|
||||
SELECT '61117' AS cd_code, '음식물 스티커 3L' AS cd_name, 170 AS cd_sort UNION ALL
|
||||
SELECT '61127' AS cd_code, '음식물 스티커 5L' AS cd_name, 180 AS cd_sort UNION ALL
|
||||
SELECT '61157' AS cd_code, '음식물 스티커 20L' AS cd_name, 190 AS cd_sort UNION ALL
|
||||
SELECT '61187' AS cd_code, '음식물 스티커 60L' AS cd_name, 200 AS cd_sort UNION ALL
|
||||
SELECT '61217' AS cd_code, '음식물 스티커 120L' AS cd_name, 210 AS cd_sort UNION ALL
|
||||
SELECT '62128' AS cd_code, '음식물용기 5L' AS cd_name, 220 AS cd_sort UNION ALL
|
||||
SELECT '62158' AS cd_code, '음식물용기 20L' AS cd_name, 230 AS cd_sort UNION ALL
|
||||
SELECT '70707' AS cd_code, '폐기물 스티커 1,000원' AS cd_name, 240 AS cd_sort UNION ALL
|
||||
SELECT '70727' AS cd_code, '폐기물 스티커 3,000원' AS cd_name, 250 AS cd_sort UNION ALL
|
||||
SELECT '70747' AS cd_code, '폐기물 스티커 5,000원' AS cd_name, 260 AS cd_sort UNION ALL
|
||||
SELECT '70787' AS cd_code, '폐기물 스티커 10,000원'AS cd_name, 270 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'O';
|
||||
|
||||
-- P: 작업권한 (예시 – 실제 운영 정책에 맞게 확장 가능)
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, '111', '등록-다시', 10, 1, NOW()
|
||||
FROM code_kind WHERE ck_code = 'P';
|
||||
|
||||
-- Q: 예산과목 (대표 코드만 선행 입력)
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '1000' AS cd_code, '관' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '1001' AS cd_code, '보건및생활환경개선비' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '2000' AS cd_code, '항' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '2010' AS cd_code, '환경관리' AS cd_name, 40 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'Q';
|
||||
|
||||
-- R: 은행목록
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '4' AS cd_code, '국민은행' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '7' AS cd_code, '수협' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '20' AS cd_code, '우리은행' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '32' AS cd_code, '부산은행' AS cd_name, 40 AS cd_sort UNION ALL
|
||||
SELECT '99' AS cd_code, '새마을금고' AS cd_name, 50 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'R';
|
||||
|
||||
|
||||
/* =========================================================
|
||||
* 3-4. 소속(S), 직위(T)
|
||||
* =======================================================*/
|
||||
|
||||
-- S: 소속
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '1' AS cd_code, '청소과' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '2' AS cd_code, '청소행정과' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '3' AS cd_code, '자원순환과' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '4' AS cd_code, '도시미화과' AS cd_name, 40 AS cd_sort UNION ALL
|
||||
SELECT '5' AS cd_code, '영업부' AS cd_name, 50 AS cd_sort UNION ALL
|
||||
SELECT '6' AS cd_code, '관리부' AS cd_name, 60 AS cd_sort UNION ALL
|
||||
SELECT '7' AS cd_code, '기술부' AS cd_name, 70 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'S';
|
||||
|
||||
-- T: 직위
|
||||
INSERT INTO `code_detail` (`cd_ck_idx`, `cd_code`, `cd_name`, `cd_sort`, `cd_state`, `cd_regdate`)
|
||||
SELECT ck_idx, v.cd_code, v.cd_name, v.cd_sort, 1, NOW()
|
||||
FROM code_kind
|
||||
JOIN (
|
||||
SELECT '1' AS cd_code, '7급' AS cd_name, 10 AS cd_sort UNION ALL
|
||||
SELECT '2' AS cd_code, '8급' AS cd_name, 20 AS cd_sort UNION ALL
|
||||
SELECT '3' AS cd_code, '9급' AS cd_name, 30 AS cd_sort UNION ALL
|
||||
SELECT '4' AS cd_code, '기능' AS cd_name, 40 AS cd_sort UNION ALL
|
||||
SELECT '5' AS cd_code, '계장' AS cd_name, 50 AS cd_sort UNION ALL
|
||||
SELECT '6' AS cd_code, '과장' AS cd_name, 60 AS cd_sort UNION ALL
|
||||
SELECT '7' AS cd_code, '사장' AS cd_name, 70 AS cd_sort UNION ALL
|
||||
SELECT '8' AS cd_code, '상무' AS cd_name, 80 AS cd_sort
|
||||
) AS v
|
||||
ON code_kind.ck_code = 'T';
|
||||
|
||||
15
writable/database/init_jongryangje_dev.sql
Normal file
15
writable/database/init_jongryangje_dev.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
-- 종량제 로컬 개발 DB 초기화
|
||||
-- 실행: mariadb -u root < writable/database/init_jongryangje_dev.sql
|
||||
-- 또는: mysql -u root < writable/database/init_jongryangje_dev.sql
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS jongryangje_dev
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
CREATE USER IF NOT EXISTS 'jongryangje'@'localhost'
|
||||
IDENTIFIED BY 'jongryangje_dev';
|
||||
|
||||
GRANT ALL PRIVILEGES ON jongryangje_dev.* TO 'jongryangje'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
SELECT 'jongryangje_dev DB and user ready.' AS result;
|
||||
21
writable/database/local_government_init_daegu.sql
Normal file
21
writable/database/local_government_init_daegu.sql
Normal file
@@ -0,0 +1,21 @@
|
||||
-- 대구광역시 전체 구·군 지자체 초기 데이터
|
||||
-- 코드 설계: 코드 B(1102) = 대구광역시, 코드 C = 1102 + 구 순번 2자리 (기본코드 종류 CSV 규칙)
|
||||
-- 실행 전 local_government 테이블이 생성되어 있어야 함.
|
||||
-- 중복 실행 시 uk_lg_code 제약으로 인해 에러 가능 → 기존 데이터 삭제 후 실행하거나, INSERT IGNORE 사용
|
||||
|
||||
/* =========================================================
|
||||
* 지자체 코드 (lg_code) 규칙
|
||||
* - 110201 ~ 110209: 대구광역시 구·군 (1102 + 순번 01~09, 08 제외)
|
||||
* - 110201 중구, 110202 동구, 110203 서구, 110204 남구,
|
||||
* 110205 수성구, 110206 달서구, 110207 달성군, 110209 북구
|
||||
* =======================================================*/
|
||||
|
||||
INSERT INTO `local_government` (`lg_name`, `lg_code`, `lg_sido`, `lg_gugun`, `lg_addr`, `lg_state`, `lg_regdate`) VALUES
|
||||
('중구청', '110201', '대구광역시', '중구', '대구광역시 중구 중앙대로 394', 1, NOW()),
|
||||
('동구청', '110202', '대구광역시', '동구', '대구광역시 동구 동대구로 205', 1, NOW()),
|
||||
('서구청', '110203', '대구광역시', '서구', '대구광역시 서구 달서로 250', 1, NOW()),
|
||||
('남구청', '110204', '대구광역시', '남구', '대구광역시 남구 대명로 215', 1, NOW()),
|
||||
('수성구청', '110205', '대구광역시', '수성구', '대구광역시 수성구 달구벌대로 2450', 1, NOW()),
|
||||
('달서구청', '110206', '대구광역시', '달서구', '대구광역시 달서구 달서대로 600', 1, NOW()),
|
||||
('달성군청', '110207', '대구광역시', '달성군', '대구광역시 달성군 화원읍 비슬로 2350', 1, NOW()),
|
||||
('북구청', '110209', '대구광역시', '북구', '대구광역시 북구 옥산로 65', 1, NOW());
|
||||
122
writable/database/login_tables.sql
Normal file
122
writable/database/login_tables.sql
Normal file
@@ -0,0 +1,122 @@
|
||||
-- 로그인 기능용 테이블 (docs/11-login-logout-development-guide.md 기준)
|
||||
-- 실행: mysql -h 127.0.0.1 -P 3306 -u jongryangje -p jongryangje_dev < writable/database/login_tables.sql
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- member: 로그인·권한용 회원 테이블
|
||||
-- mb_state: 1=정상, 2=정지, 0=탈퇴
|
||||
-- mb_level: app/Config/Roles.php 참고
|
||||
-- 1=일반 사용자, 2=지정판매소, 3=지자체관리자, 4=super admin
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `member` (
|
||||
`mb_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '회원 PK',
|
||||
`mb_id` VARCHAR(50) NOT NULL COMMENT '로그인 아이디',
|
||||
`mb_passwd` VARCHAR(255) NOT NULL COMMENT '비밀번호 해시(password_hash)',
|
||||
`mb_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '이름',
|
||||
`mb_email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '이메일',
|
||||
`mb_phone` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '연락처',
|
||||
`mb_lang` VARCHAR(10) NOT NULL DEFAULT 'ko' COMMENT '언어',
|
||||
`mb_level` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=일반, 2=지정판매소, 3=지자체관리자, 4=super admin (Roles.php)',
|
||||
`mb_group` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '권한 그룹 코드(Phase 2)',
|
||||
`mb_lg_idx` INT UNSIGNED NULL DEFAULT NULL COMMENT '소속 지자체 PK(지자체관리자만 사용)',
|
||||
`mb_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 2=정지, 0=탈퇴',
|
||||
`mb_regdate` DATETIME NOT NULL COMMENT '가입일시',
|
||||
`mb_latestdate` DATETIME NULL DEFAULT NULL COMMENT '최근 로그인 일시',
|
||||
`mb_leavedate` DATETIME NULL DEFAULT NULL COMMENT '탈퇴일시',
|
||||
PRIMARY KEY (`mb_idx`),
|
||||
UNIQUE KEY `uk_mb_id` (`mb_id`),
|
||||
KEY `idx_mb_state` (`mb_state`),
|
||||
KEY `idx_mb_lg_idx` (`mb_lg_idx`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='회원(로그인·권한)';
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- member_log: 로그인/로그아웃 이력 전용
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `member_log` (
|
||||
`mll_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '로그 PK',
|
||||
`mll_success` TINYINT(1) NOT NULL COMMENT '1=성공, 0=실패',
|
||||
`mb_idx` INT UNSIGNED NULL DEFAULT NULL COMMENT '회원 PK(실패 시 NULL 가능)',
|
||||
`mb_id` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '로그인 시도 아이디',
|
||||
`mll_regdate` DATETIME NOT NULL COMMENT '로그 일시',
|
||||
`mll_ip` VARCHAR(45) NOT NULL DEFAULT '' COMMENT 'IP',
|
||||
`mll_msg` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '메시지(실패 사유 등)',
|
||||
`mll_useragent` VARCHAR(500) NOT NULL DEFAULT '' COMMENT 'User-Agent',
|
||||
`mll_logout_date` DATETIME NULL DEFAULT NULL COMMENT '로그아웃 일시',
|
||||
`mll_url` VARCHAR(500) NULL DEFAULT NULL COMMENT '요청 URL(선택)',
|
||||
`mll_referer` VARCHAR(500) NULL DEFAULT NULL COMMENT 'Referer(선택)',
|
||||
`mll_country` VARCHAR(10) NULL DEFAULT NULL COMMENT '국가 코드(선택)',
|
||||
`at_token` VARCHAR(100) NULL DEFAULT NULL COMMENT '세션/토큰 식별(선택)',
|
||||
PRIMARY KEY (`mll_idx`),
|
||||
KEY `idx_mll_mb_idx` (`mb_idx`),
|
||||
KEY `idx_mll_regdate` (`mll_regdate`),
|
||||
KEY `idx_mll_success` (`mll_success`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='로그인/로그아웃 이력';
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- member_approval_request: 회원가입 역할 승인 요청 이력
|
||||
-- 공개 회원가입 시 생성되며, 승인 후에만 requested_level이 member.mb_level로 반영됨
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `member_approval_request` (
|
||||
`mar_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '승인요청 PK',
|
||||
`mb_idx` INT UNSIGNED NOT NULL COMMENT '회원 FK(member.mb_idx)',
|
||||
`mar_requested_level` TINYINT UNSIGNED NOT NULL COMMENT '요청 역할(1,2,3)',
|
||||
`mar_status` VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT 'pending|approved|rejected',
|
||||
`mar_request_note` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '요청 메모',
|
||||
`mar_reject_reason` VARCHAR(255) NULL DEFAULT NULL COMMENT '반려 사유',
|
||||
`mar_requested_at` DATETIME NOT NULL COMMENT '요청일시',
|
||||
`mar_requested_by` INT UNSIGNED NULL DEFAULT NULL COMMENT '요청자 mb_idx',
|
||||
`mar_processed_at` DATETIME NULL DEFAULT NULL COMMENT '처리일시',
|
||||
`mar_processed_by` INT UNSIGNED NULL DEFAULT NULL COMMENT '처리자 mb_idx',
|
||||
PRIMARY KEY (`mar_idx`),
|
||||
KEY `idx_mar_mb_idx` (`mb_idx`),
|
||||
KEY `idx_mar_status_requested` (`mar_status`, `mar_requested_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='회원가입 역할 승인 요청';
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- local_government: 지자체 마스터 (테넌트 루트)
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `local_government` (
|
||||
`lg_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '지자체 PK',
|
||||
`lg_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '지자체명(예: OO구청)',
|
||||
`lg_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '지자체/구군 코드(행정코드)',
|
||||
`lg_sido` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '시/도',
|
||||
`lg_gugun` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '구/군',
|
||||
`lg_addr` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '주소',
|
||||
`lg_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=사용, 0=미사용',
|
||||
`lg_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`lg_idx`),
|
||||
UNIQUE KEY `uk_lg_code` (`lg_code`),
|
||||
KEY `idx_lg_state` (`lg_state`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='지자체(테넌트 루트)';
|
||||
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- designated_shop: 지정판매소
|
||||
-- ---------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `designated_shop` (
|
||||
`ds_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '지정판매소 PK',
|
||||
`ds_lg_idx` INT UNSIGNED NOT NULL COMMENT '소속 지자체 FK',
|
||||
`ds_mb_idx` INT UNSIGNED NULL DEFAULT NULL COMMENT '로그인 회원 FK(1:1)',
|
||||
`ds_shop_no` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '판매소번호',
|
||||
`ds_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '상호명',
|
||||
`ds_biz_no` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '사업자번호',
|
||||
`ds_rep_name` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '대표자명',
|
||||
`ds_va_number` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '고정 가상계좌 번호',
|
||||
`ds_zip` VARCHAR(10) NOT NULL DEFAULT '' COMMENT '우편번호',
|
||||
`ds_addr` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '도로명주소',
|
||||
`ds_addr_jibun` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '지번주소',
|
||||
`ds_tel` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '일반전화',
|
||||
`ds_rep_phone` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '개인전화',
|
||||
`ds_email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '이메일',
|
||||
`ds_gugun_code` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '구코드',
|
||||
`ds_designated_at` DATE NULL DEFAULT NULL COMMENT '지정일자',
|
||||
`ds_state` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1=정상, 2=폐업, 3=직권해지',
|
||||
`ds_regdate` DATETIME NOT NULL COMMENT '등록일시',
|
||||
PRIMARY KEY (`ds_idx`),
|
||||
KEY `idx_ds_lg_idx` (`ds_lg_idx`),
|
||||
KEY `idx_ds_mb_idx` (`ds_mb_idx`),
|
||||
UNIQUE KEY `uk_ds_shop_no` (`ds_shop_no`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='지정판매소';
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
22
writable/database/member_approval_request_add.sql
Normal file
22
writable/database/member_approval_request_add.sql
Normal file
@@ -0,0 +1,22 @@
|
||||
-- 기존 DB에 회원가입 역할 승인 요청 테이블 추가
|
||||
-- 실행 예:
|
||||
-- mysql -h 127.0.0.1 -P 3306 -u jongryangje -p jongryangje_dev < writable/database/member_approval_request_add.sql
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `member_approval_request` (
|
||||
`mar_idx` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '승인요청 PK',
|
||||
`mb_idx` INT UNSIGNED NOT NULL COMMENT '회원 FK(member.mb_idx)',
|
||||
`mar_requested_level` TINYINT UNSIGNED NOT NULL COMMENT '요청 역할(1,2,3)',
|
||||
`mar_status` VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT 'pending|approved|rejected',
|
||||
`mar_request_note` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '요청 메모',
|
||||
`mar_reject_reason` VARCHAR(255) NULL DEFAULT NULL COMMENT '반려 사유',
|
||||
`mar_requested_at` DATETIME NOT NULL COMMENT '요청일시',
|
||||
`mar_requested_by` INT UNSIGNED NULL DEFAULT NULL COMMENT '요청자 mb_idx',
|
||||
`mar_processed_at` DATETIME NULL DEFAULT NULL COMMENT '처리일시',
|
||||
`mar_processed_by` INT UNSIGNED NULL DEFAULT NULL COMMENT '처리자 mb_idx',
|
||||
PRIMARY KEY (`mar_idx`),
|
||||
KEY `idx_mar_mb_idx` (`mb_idx`),
|
||||
KEY `idx_mar_status_requested` (`mar_status`, `mar_requested_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='회원가입 역할 승인 요청';
|
||||
|
||||
3
writable/database/menu_add_lg_idx.sql
Normal file
3
writable/database/menu_add_lg_idx.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- 기존 menu 테이블에 지자체(lg_idx) 컬럼 추가 (이미 컬럼이 있으면 에러 무시하고 스킵)
|
||||
ALTER TABLE `menu` ADD COLUMN `lg_idx` INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '지자체 FK' AFTER `mt_idx`;
|
||||
ALTER TABLE `menu` ADD KEY `idx_mt_lg` (`mt_idx`, `lg_idx`);
|
||||
292
writable/database/menu_site_seed_from_csv.sql
Normal file
292
writable/database/menu_site_seed_from_csv.sql
Normal file
@@ -0,0 +1,292 @@
|
||||
-- CSV "종량제_개발목록_20260127(전체 메뉴 - 1차정리).csv" 기반으로
|
||||
-- site 타입(menu_type.mt_code='site')의 1차/2차 메뉴를 초기 시드하는 SQL 뼈대입니다.
|
||||
--
|
||||
-- 1행: 1차 메뉴명 리스트
|
||||
-- 2행 이후: 각 열이 해당 1차 메뉴의 2차 메뉴명에 해당.
|
||||
--
|
||||
-- 실제 운영 시에는 CSV를 파싱해서 INSERT를 생성하는 스크립트를 사용하는 편이 낫고,
|
||||
-- 아래 SQL은 구조 이해 및 수동 시드를 위한 참고용입니다.
|
||||
|
||||
-- 1) site용 mt_idx 조회 (예: @mt_site)
|
||||
SET @mt_site := (SELECT mt_idx FROM menu_type WHERE mt_code = 'site' LIMIT 1);
|
||||
|
||||
|
||||
-- 3) 2차 메뉴 예시
|
||||
-- CSV의 2행 이후를 바탕으로, 각 1차 메뉴 아래에 2차 메뉴를 추가하는 방식의 예시입니다.
|
||||
-- 아래 예시는 구조를 보여주기 위한 샘플이며, 실제 라우트(mm_link)는 구현 후에 맞게 수정해야 합니다.
|
||||
|
||||
-- 예: "기본정보관리" 하위 2차 메뉴들 (PWB-030100~ 등)
|
||||
SET @parent_basic := (
|
||||
SELECT mm_idx FROM menu
|
||||
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '기본정보관리'
|
||||
LIMIT 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)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_basic, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '기본 코드 관리' AS mm_name UNION ALL
|
||||
SELECT 1, '단가 관리' UNION ALL
|
||||
SELECT 2, '포장 단위 관리' UNION ALL
|
||||
SELECT 3, '판매 대행소 관리' UNION ALL
|
||||
SELECT 4, '담당자 관리' UNION ALL
|
||||
SELECT 5, '업체 관리' UNION ALL
|
||||
SELECT 6, '무료용 대상자 관리' UNION ALL
|
||||
SELECT 7, '지정 판매소 관리' UNION ALL
|
||||
SELECT 8, '지정 판매소 조회' UNION ALL
|
||||
SELECT 9, '지정 판매소 신규/취소 현황' UNION ALL
|
||||
SELECT 10, '지정판매소 바코드 출력' UNION ALL
|
||||
SELECT 11, 'PC -> PDA로 자료 전송' UNION ALL
|
||||
SELECT 12, 'PDA -> PC로 자료 전송' UNION ALL
|
||||
SELECT 13, '올린 자료 처리' UNION ALL
|
||||
SELECT 14, '시찰 처리' UNION ALL
|
||||
SELECT 15, 'PASSWORD 변경' UNION ALL
|
||||
SELECT 16, '환경 설정' UNION ALL
|
||||
SELECT 17, '지정 판매소 현황'
|
||||
) AS t
|
||||
WHERE @parent_basic IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM menu m
|
||||
WHERE m.mt_idx = @mt_site
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = @parent_basic
|
||||
AND m.mm_name = t.mm_name
|
||||
);
|
||||
|
||||
-- 2) 1차: 발주 입고 관리 하위 메뉴
|
||||
SET @parent_order := (
|
||||
SELECT mm_idx FROM menu
|
||||
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '발주 입고 관리'
|
||||
LIMIT 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)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_order, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '발주 등록' AS mm_name UNION ALL
|
||||
SELECT 1, '발주 변경' UNION ALL
|
||||
SELECT 2, 'LOT-No 디스켓 불출' UNION ALL
|
||||
SELECT 3, '발주 현황' UNION ALL
|
||||
SELECT 4, '발주 입고[스캐너]' UNION ALL
|
||||
SELECT 5, '일괄입고' UNION ALL
|
||||
SELECT 6, '입고 현황'
|
||||
) AS t
|
||||
WHERE @parent_order IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM menu m
|
||||
WHERE m.mt_idx = @mt_site
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = @parent_order
|
||||
AND m.mm_name = t.mm_name
|
||||
);
|
||||
|
||||
-- 3) 1차: 불출 관리 하위 메뉴
|
||||
SET @parent_issue := (
|
||||
SELECT mm_idx FROM menu
|
||||
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '불출 관리'
|
||||
LIMIT 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)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_issue, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '무료 불출 현황' AS mm_name UNION ALL
|
||||
SELECT 1, '무료용 불출 처리' UNION ALL
|
||||
SELECT 2, '무료용 불출 취소'
|
||||
) AS t
|
||||
WHERE @parent_issue IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM menu m
|
||||
WHERE m.mt_idx = @mt_site
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = @parent_issue
|
||||
AND m.mm_name = t.mm_name
|
||||
);
|
||||
|
||||
-- 4) 1차: 재고 관리 하위 메뉴
|
||||
SET @parent_inventory := (
|
||||
SELECT mm_idx FROM menu
|
||||
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '재고 관리'
|
||||
LIMIT 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)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_inventory, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '재고 현황' AS mm_name UNION ALL
|
||||
SELECT 1, '실사 관리' UNION ALL
|
||||
SELECT 2, '실사 선별' UNION ALL
|
||||
SELECT 3, '실사 선별 조회' UNION ALL
|
||||
SELECT 4, '실사 등록' UNION ALL
|
||||
SELECT 5, '실사 재고 조회' UNION ALL
|
||||
SELECT 6, '실사 오류 조회' UNION ALL
|
||||
SELECT 7, '실사 선별 취소' UNION ALL
|
||||
SELECT 8, '실사 등록 취소'
|
||||
) AS t
|
||||
WHERE @parent_inventory IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM menu m
|
||||
WHERE m.mt_idx = @mt_site
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = @parent_inventory
|
||||
AND m.mm_name = t.mm_name
|
||||
);
|
||||
|
||||
-- 5) 1차: 판매 관리 하위 메뉴
|
||||
SET @parent_sales := (
|
||||
SELECT mm_idx FROM menu
|
||||
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '판매 관리'
|
||||
LIMIT 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)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_sales, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '전화 접수' AS mm_name UNION ALL
|
||||
SELECT 1, '전화 접수 관리' UNION ALL
|
||||
SELECT 2, '지정 판매소 판매' UNION ALL
|
||||
SELECT 3, '지정 판매소 반품' UNION ALL
|
||||
SELECT 4, '지정 판매소 판매 취소' UNION ALL
|
||||
SELECT 5, '지정 판매소 반품 취소'
|
||||
) AS t
|
||||
WHERE @parent_sales IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM menu m
|
||||
WHERE m.mt_idx = @mt_site
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = @parent_sales
|
||||
AND m.mm_name = t.mm_name
|
||||
);
|
||||
|
||||
-- 6) 1차: 판매 현황 하위 메뉴
|
||||
SET @parent_sales_stats := (
|
||||
SELECT mm_idx FROM menu
|
||||
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '판매 현황'
|
||||
LIMIT 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)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_sales_stats, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '지정 판매소 일 판매대장' AS mm_name UNION ALL
|
||||
SELECT 1, '지정 판매소 기간별 판매대장' UNION ALL
|
||||
SELECT 2, '일계표' UNION ALL
|
||||
SELECT 3, '기간별 판매현황[일집계]' UNION ALL
|
||||
SELECT 4, '기간별 판매현황[기간집계]' UNION ALL
|
||||
SELECT 5, '년 판매 현황' UNION ALL
|
||||
SELECT 6, '지정 판매소 별 판매현황(수량)' UNION ALL
|
||||
SELECT 7, '지정 판매소 별 판매현황(금액)' UNION ALL
|
||||
SELECT 8, '지정판매소별 거래현황' UNION ALL
|
||||
SELECT 9, '홈텍스 처리'
|
||||
) AS t
|
||||
WHERE @parent_sales_stats IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM menu m
|
||||
WHERE m.mt_idx = @mt_site
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = @parent_sales_stats
|
||||
AND m.mm_name = t.mm_name
|
||||
);
|
||||
|
||||
-- 7) 1차: 봉투 수불 관리 하위 메뉴
|
||||
SET @parent_flow := (
|
||||
SELECT mm_idx FROM menu
|
||||
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '봉투 수불 관리'
|
||||
LIMIT 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)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_flow, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '기타 입출고' AS mm_name UNION ALL
|
||||
SELECT 1, '기간별 봉투 수불 현황' UNION ALL
|
||||
SELECT 2, '일일 봉투 수불 현황' UNION ALL
|
||||
SELECT 3, '반품/파기 현황' UNION ALL
|
||||
SELECT 4, '쓰레기 봉투 수급 계획' UNION ALL
|
||||
SELECT 5, 'LOT 수불 조회'
|
||||
) AS t
|
||||
WHERE @parent_flow IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM menu m
|
||||
WHERE m.mt_idx = @mt_site
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = @parent_flow
|
||||
AND m.mm_name = t.mm_name
|
||||
);
|
||||
|
||||
-- 8) 1차: 통계 분석 관리 하위 메뉴
|
||||
SET @parent_analytics := (
|
||||
SELECT mm_idx FROM menu
|
||||
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '통계 분석 관리'
|
||||
LIMIT 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)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_analytics, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '전년 대비 판매 분석' AS mm_name UNION ALL
|
||||
SELECT 1, '월별 판매 추이 분석' UNION ALL
|
||||
SELECT 2, '계절별 판매 추이 분석'
|
||||
) AS t
|
||||
WHERE @parent_analytics IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM menu m
|
||||
WHERE m.mt_idx = @mt_site
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = @parent_analytics
|
||||
AND m.mm_name = t.mm_name
|
||||
);
|
||||
|
||||
-- 9) 1차: 창 하위 메뉴
|
||||
SET @parent_window := (
|
||||
SELECT mm_idx FROM menu
|
||||
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '창'
|
||||
LIMIT 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)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_window, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, 'PDA 수정' AS mm_name UNION ALL
|
||||
SELECT 1, '바둑판식 배열' UNION ALL
|
||||
SELECT 2, '계단식 배열' UNION ALL
|
||||
SELECT 3, '계층식 배열'
|
||||
) AS t
|
||||
WHERE @parent_window IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM menu m
|
||||
WHERE m.mt_idx = @mt_site
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = @parent_window
|
||||
AND m.mm_name = t.mm_name
|
||||
);
|
||||
|
||||
-- 10) 1차: 도움말 하위 메뉴
|
||||
SET @parent_help := (
|
||||
SELECT mm_idx FROM menu
|
||||
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '도움말'
|
||||
LIMIT 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)
|
||||
SELECT @mt_site, 1, t.mm_name, '', @parent_help, 1, t.mm_num, 0, '', 'Y'
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '도움말 항목' AS mm_name UNION ALL
|
||||
SELECT 1, '원격 요청' UNION ALL
|
||||
SELECT 2, 'pda 리셋' UNION ALL
|
||||
SELECT 3, '번호알기' UNION ALL
|
||||
SELECT 4, 'Data Backup' UNION ALL
|
||||
SELECT 5, '컴포트 설정' UNION ALL
|
||||
SELECT 6, 'Version 정보' UNION ALL
|
||||
SELECT 7, '종료' UNION ALL
|
||||
SELECT 8, '1GBMS'
|
||||
) AS t
|
||||
WHERE @parent_help IS NOT NULL
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM menu m
|
||||
WHERE m.mt_idx = @mt_site
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = @parent_help
|
||||
AND m.mm_name = t.mm_name
|
||||
);
|
||||
|
||||
58
writable/database/menu_tables.sql
Normal file
58
writable/database/menu_tables.sql
Normal file
@@ -0,0 +1,58 @@
|
||||
-- 메뉴 종류 (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');
|
||||
34
writable/database/menu_type_add_site.sql
Normal file
34
writable/database/menu_type_add_site.sql
Normal file
@@ -0,0 +1,34 @@
|
||||
-- 기존 DB에 menu_type.site 및 기본 site 1차 메뉴 추가용 스크립트
|
||||
-- 주의: mt_idx 값은 실제 DB 상태에 따라 다를 수 있으므로,
|
||||
-- 아래에서 site용 mt_idx는 서브쿼리로 조회하여 사용한다.
|
||||
|
||||
-- 1) menu_type에 site 타입 추가 (이미 있으면 무시)
|
||||
INSERT IGNORE INTO `menu_type` (`mt_code`, `mt_name`, `mt_sort`)
|
||||
VALUES ('site', '사이트 메뉴', 20);
|
||||
|
||||
-- 2) lg_idx=1 기준 기본 1차 사이트 메뉴 추가
|
||||
-- (이미 같은 이름/링크가 있으면 중복 INSERT를 피하기 위해 WHERE NOT EXISTS 사용)
|
||||
INSERT INTO `menu` (`mt_idx`, `lg_idx`, `mm_name`, `mm_link`, `mm_pidx`, `mm_dep`, `mm_num`, `mm_cnode`, `mm_level`, `mm_is_view`)
|
||||
SELECT mt.mt_idx, 1 AS lg_idx, t.mm_name, t.mm_link, 0 AS mm_pidx, 0 AS mm_dep, t.mm_num, 0 AS mm_cnode, '' AS mm_level, 'Y' AS mm_is_view
|
||||
FROM (
|
||||
SELECT 0 AS mm_num, '기본정보관리' AS mm_name, 'bag/basic-info' AS mm_link UNION ALL
|
||||
SELECT 1, '발주 입고 관리', 'bag/purchase-inbound' UNION ALL
|
||||
SELECT 2, '불출 관리', 'bag/issue' UNION ALL
|
||||
SELECT 3, '재고 관리', 'bag/inventory' UNION ALL
|
||||
SELECT 4, '판매 관리', 'bag/sales' UNION ALL
|
||||
SELECT 5, '판매 현황', 'bag/sales-stats' UNION ALL
|
||||
SELECT 6, '봉투 수불 관리', 'bag/flow' UNION ALL
|
||||
SELECT 7, '통계 분석 관리', 'bag/analytics' UNION ALL
|
||||
SELECT 8, '창', 'bag/window' UNION ALL
|
||||
SELECT 9, '도움말', 'bag/help'
|
||||
) AS t
|
||||
JOIN `menu_type` mt ON mt.mt_code = 'site'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `menu` m
|
||||
WHERE m.mt_idx = mt.mt_idx
|
||||
AND m.lg_idx = 1
|
||||
AND m.mm_pidx = 0
|
||||
AND m.mm_name = t.mm_name
|
||||
AND m.mm_link = t.mm_link
|
||||
);
|
||||
|
||||
11
writable/debugbar/index.html
Executable file
11
writable/debugbar/index.html
Executable file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
11
writable/index.html
Executable file
11
writable/index.html
Executable file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
11
writable/logs/index.html
Executable file
11
writable/logs/index.html
Executable file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
11
writable/session/index.html
Executable file
11
writable/session/index.html
Executable file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
11
writable/uploads/index.html
Executable file
11
writable/uploads/index.html
Executable file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user