This commit is contained in:
ysukkyu
2026-05-14 18:14:49 +09:00
parent c0105c6847
commit 88e14edffd
50 changed files with 4870 additions and 172 deletions
@@ -29,6 +29,11 @@ public class SearchParam {
private String sortField;
private String sortOrder = "DESC";
/** MyBatis XML에서 #{offset} 참조 시 사용되는 계산값 */
public int getOffset() {
return Math.max(0, pageNum - 1) * pageSize;
}
/** PageHelper 시작 호출. Service 첫 줄에서 호출한다. */
public void startPage() {
PageHelper.startPage(pageNum, pageSize);
@@ -0,0 +1,23 @@
-- admin 계정 비밀번호 초기화: admin1234!
INSERT INTO users (login_id, password, user_name, email, status, fail_count, pwd_changed_at, created_at)
VALUES (
'admin',
'$2b$10$NClaIICfNMTGWyto9X6gV.yrnYEyiQeakgirWfxRJh.vYfDtubKdu',
'시스템 관리자',
'admin@example.com',
'ACTIVE',
0,
NOW(),
NOW()
)
ON CONFLICT (login_id) DO UPDATE
SET password = '$2b$10$NClaIICfNMTGWyto9X6gV.yrnYEyiQeakgirWfxRJh.vYfDtubKdu',
status = 'ACTIVE',
fail_count = 0;
-- admin → SUPER_ADMIN 권한 매핑
INSERT INTO user_role (user_id, role_id)
SELECT u.user_id, r.role_id
FROM users u, role r
WHERE u.login_id = 'admin' AND r.role_code = 'SUPER_ADMIN'
ON CONFLICT (user_id, role_id) DO NOTHING;
@@ -0,0 +1,40 @@
-- V58: 1200%룰 규제 한도 관리 메뉴 등록 (GRP_RULE 하위)
-- 1. 메뉴 PAGE 등록
INSERT INTO menu (parent_menu_id, menu_code, menu_name, menu_type, menu_path, component_path, menu_level, sort_order, is_visible, is_active)
SELECT p.menu_id, 'REGULATORY_LIMIT', '1200%룰 한도', 'PAGE', '/rules/regulatory', 'rule/RegulatoryLimitList', 2, 6, 'Y', 'Y'
FROM menu p
WHERE p.menu_code = 'GRP_RULE'
AND NOT EXISTS (SELECT 1 FROM menu WHERE menu_code = 'REGULATORY_LIMIT');
-- 2. 권한 항목 등록
INSERT INTO menu_permission (menu_id, perm_code, perm_name, sort_order)
SELECT m.menu_id, p.code, p.name, p.sort
FROM menu m
CROSS JOIN (VALUES
('READ', '조회', 10),
('CREATE', '등록', 20),
('UPDATE', '수정', 30)
) AS p(code, name, sort)
WHERE m.menu_code = 'REGULATORY_LIMIT'
ON CONFLICT (menu_id, perm_code) DO NOTHING;
-- 3. 역할별 권한 부여 (SUPER_ADMIN/ADMIN: 전체, MANAGER: READ만)
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code IN ('SUPER_ADMIN', 'ADMIN')
AND m.menu_code = 'REGULATORY_LIMIT'
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code = 'MANAGER'
AND mp.perm_code = 'READ'
AND m.menu_code = 'REGULATORY_LIMIT'
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;
@@ -0,0 +1,97 @@
-- V59: 신규 화면 메뉴 등록 (에이전트팀 개발분)
-- GRP_RULE 하위: 분급비율, 환수등급
-- GRP_SETTLE 하위: 공제차감, 마감관리, 정산정정, 세금계산서, 이의신청, 시책프로그램
-- ============================================================
-- 1. GRP_RULE 하위 신규 PAGE 2개
-- ============================================================
INSERT INTO menu (parent_menu_id, menu_code, menu_name, menu_type, menu_path, component_path, menu_level, sort_order, is_visible, is_active)
SELECT p.menu_id, x.code, x.name, 'PAGE', x.path, x.cmpt, 2, x.sort, 'Y', 'Y'
FROM menu p
JOIN (VALUES
('INSTALLMENT_RATIO', '분급비율 설정', '/rules/installment-ratios', 'rule/InstallmentRatioList', 7),
('CHARGEBACK_GRADE', '환수등급 관리', '/rules/chargeback-grades', 'rule/ChargebackGradeList', 8)
) AS x(code, name, path, cmpt, sort) ON p.menu_code = 'GRP_RULE'
WHERE NOT EXISTS (SELECT 1 FROM menu WHERE menu_code = x.code);
-- ============================================================
-- 2. GRP_SETTLE 하위 신규 PAGE 6개
-- ============================================================
INSERT INTO menu (parent_menu_id, menu_code, menu_name, menu_type, menu_path, component_path, menu_level, sort_order, is_visible, is_active)
SELECT p.menu_id, x.code, x.name, 'PAGE', x.path, x.cmpt, 2, x.sort, 'Y', 'Y'
FROM menu p
JOIN (VALUES
('DEDUCTION', '공제차감 관리', '/settle/deductions', 'settle/DeductionList', 10),
('PERIOD_CLOSE', '정산 마감', '/settle/period-close', 'settle/PeriodClose', 20),
('SETTLE_CORRECTION', '정산 정정', '/settle/corrections', 'settle/SettleCorrection', 30),
('TAX_INVOICE', '세금계산서', '/settle/tax-invoices', 'settle/TaxInvoiceList', 40),
('DISPUTE', '이의신청', '/settle/disputes', 'settle/CommissionDispute', 50),
('INCENTIVE_PROG', '시책 프로그램', '/settle/incentives', 'settle/IncentiveProgram', 60)
) AS x(code, name, path, cmpt, sort) ON p.menu_code = 'GRP_SETTLE'
WHERE NOT EXISTS (SELECT 1 FROM menu WHERE menu_code = x.code);
-- ============================================================
-- 3. 권한 항목 등록 — 규정 도메인 (READ/CREATE/UPDATE)
-- ============================================================
INSERT INTO menu_permission (menu_id, perm_code, perm_name, sort_order)
SELECT m.menu_id, p.code, p.name, p.sort
FROM menu m
CROSS JOIN (VALUES ('READ','조회',10),('CREATE','등록',20),('UPDATE','수정',30)) AS p(code,name,sort)
WHERE m.menu_code IN ('INSTALLMENT_RATIO','CHARGEBACK_GRADE')
ON CONFLICT (menu_id, perm_code) DO NOTHING;
-- ============================================================
-- 4. 권한 항목 등록 — 정산 도메인 (READ/CREATE/UPDATE/APPROVE)
-- ============================================================
INSERT INTO menu_permission (menu_id, perm_code, perm_name, sort_order)
SELECT m.menu_id, p.code, p.name, p.sort
FROM menu m
CROSS JOIN (VALUES ('READ','조회',10),('CREATE','등록',20),('UPDATE','수정',30)) AS p(code,name,sort)
WHERE m.menu_code IN ('DEDUCTION','PERIOD_CLOSE','SETTLE_CORRECTION','TAX_INVOICE','INCENTIVE_PROG')
ON CONFLICT (menu_id, perm_code) DO NOTHING;
INSERT INTO menu_permission (menu_id, perm_code, perm_name, sort_order)
SELECT m.menu_id, p.code, p.name, p.sort
FROM menu m
CROSS JOIN (VALUES ('READ','조회',10),('CREATE','등록',20),('UPDATE','수정',30),('APPROVE','승인',50)) AS p(code,name,sort)
WHERE m.menu_code IN ('DISPUTE','SETTLE_CORRECTION')
ON CONFLICT (menu_id, perm_code) DO NOTHING;
-- ============================================================
-- 5. 역할별 권한 부여
-- SUPER_ADMIN / ADMIN: 전체
-- MANAGER: READ + CREATE + UPDATE + APPROVE
-- AGENT: DEDUCTION/DISPUTE READ 만
-- ============================================================
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code IN ('SUPER_ADMIN','ADMIN')
AND m.menu_code IN ('INSTALLMENT_RATIO','CHARGEBACK_GRADE',
'DEDUCTION','PERIOD_CLOSE','SETTLE_CORRECTION',
'TAX_INVOICE','DISPUTE','INCENTIVE_PROG')
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code = 'MANAGER'
AND mp.perm_code IN ('READ','CREATE','UPDATE','APPROVE')
AND m.menu_code IN ('INSTALLMENT_RATIO','CHARGEBACK_GRADE',
'DEDUCTION','PERIOD_CLOSE','SETTLE_CORRECTION',
'TAX_INVOICE','DISPUTE','INCENTIVE_PROG')
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code = 'AGENT'
AND mp.perm_code = 'READ'
AND m.menu_code IN ('DEDUCTION','DISPUTE')
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;
@@ -0,0 +1,41 @@
-- V60: 수수료명세서(STATEMENT) 메뉴 및 권한 등록
-- CommissionStatementController 에서 menu="STATEMENT" 사용
-- 1. STATEMENT 메뉴 PAGE 등록 (GRP_SETTLE 하위)
INSERT INTO menu (parent_menu_id, menu_code, menu_name, menu_type, menu_path, component_path, menu_level, sort_order, is_visible, is_active)
SELECT p.menu_id, 'STATEMENT', '수수료 명세서', 'PAGE', '/statements', 'settle/CommissionStatement', 2, 70, 'Y', 'Y'
FROM menu p
WHERE p.menu_code = 'GRP_SETTLE'
AND NOT EXISTS (SELECT 1 FROM menu WHERE menu_code = 'STATEMENT');
-- 2. 권한 항목 등록
INSERT INTO menu_permission (menu_id, perm_code, perm_name, sort_order)
SELECT m.menu_id, p.code, p.name, p.sort
FROM menu m
CROSS JOIN (VALUES
('READ', '조회', 10),
('CREATE', '등록', 20),
('UPDATE', '수정', 30)
) AS p(code, name, sort)
WHERE m.menu_code = 'STATEMENT'
ON CONFLICT (menu_id, perm_code) DO NOTHING;
-- 3. 역할별 권한 부여
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code IN ('SUPER_ADMIN', 'ADMIN', 'MANAGER')
AND m.menu_code = 'STATEMENT'
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code = 'AGENT'
AND mp.perm_code = 'READ'
AND m.menu_code = 'STATEMENT'
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;
@@ -0,0 +1,41 @@
-- V61: 분급계획(INSTALLMENT_PLAN) 메뉴 및 권한 등록
-- InstallmentController 에서 menu="INSTALLMENT_PLAN" 사용
-- 1. INSTALLMENT_PLAN 메뉴 PAGE 등록 (GRP_RULE 하위)
INSERT INTO menu (parent_menu_id, menu_code, menu_name, menu_type, menu_path, component_path, menu_level, sort_order, is_visible, is_active)
SELECT p.menu_id, 'INSTALLMENT_PLAN', '분급 계획', 'PAGE', '/rules/installment-plans', 'rule/InstallmentPlanList', 2, 9, 'Y', 'Y'
FROM menu p
WHERE p.menu_code = 'GRP_RULE'
AND NOT EXISTS (SELECT 1 FROM menu WHERE menu_code = 'INSTALLMENT_PLAN');
-- 2. 권한 항목 등록
INSERT INTO menu_permission (menu_id, perm_code, perm_name, sort_order)
SELECT m.menu_id, p.code, p.name, p.sort
FROM menu m
CROSS JOIN (VALUES
('READ', '조회', 10),
('CREATE', '등록', 20),
('UPDATE', '수정', 30)
) AS p(code, name, sort)
WHERE m.menu_code = 'INSTALLMENT_PLAN'
ON CONFLICT (menu_id, perm_code) DO NOTHING;
-- 3. 역할별 권한 부여
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code IN ('SUPER_ADMIN', 'ADMIN', 'MANAGER')
AND m.menu_code = 'INSTALLMENT_PLAN'
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code = 'AGENT'
AND mp.perm_code = 'READ'
AND m.menu_code = 'INSTALLMENT_PLAN'
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;
@@ -0,0 +1,56 @@
-- V62: 시책지급/보험사대사/해촉정산 메뉴 및 권한 등록
-- IncentivePaymentController -> menu="INCENTIVE_PAY"
-- CarrierReconciliationOutController -> menu="RECON_OUT"
-- TerminationSettlementController -> menu="TERM_SETTLE"
-- ============================================================
-- 1. GRP_SETTLE 하위 PAGE 3개 등록
-- ============================================================
INSERT INTO menu (parent_menu_id, menu_code, menu_name, menu_type, menu_path, component_path, menu_level, sort_order, is_visible, is_active)
SELECT p.menu_id, x.code, x.name, 'PAGE', x.path, x.cmpt, 2, x.sort, 'Y', 'Y'
FROM menu p
JOIN (VALUES
('INCENTIVE_PAY', '시책 지급', '/settle/incentive-payments', 'settle/IncentivePayment', 65),
('RECON_OUT', '보험사 대사', '/settle/carrier-reconciliation','settle/CarrierReconOut', 70),
('TERM_SETTLE', '해촉 정산', '/settle/termination', 'settle/TerminationSettle', 80)
) AS x(code, name, path, cmpt, sort) ON p.menu_code = 'GRP_SETTLE'
WHERE NOT EXISTS (SELECT 1 FROM menu WHERE menu_code = x.code);
-- ============================================================
-- 2. 권한 항목 등록 — READ/CREATE/UPDATE
-- ============================================================
INSERT INTO menu_permission (menu_id, perm_code, perm_name, sort_order)
SELECT m.menu_id, p.code, p.name, p.sort
FROM menu m
CROSS JOIN (VALUES ('READ','조회',10),('CREATE','등록',20),('UPDATE','수정',30)) AS p(code,name,sort)
WHERE m.menu_code IN ('INCENTIVE_PAY','RECON_OUT','TERM_SETTLE')
ON CONFLICT (menu_id, perm_code) DO NOTHING;
-- 시책지급에 APPROVE 권한 추가
INSERT INTO menu_permission (menu_id, perm_code, perm_name, sort_order)
SELECT m.menu_id, 'APPROVE', '승인', 50
FROM menu m
WHERE m.menu_code = 'INCENTIVE_PAY'
ON CONFLICT (menu_id, perm_code) DO NOTHING;
-- ============================================================
-- 3. 역할별 권한 부여 — SUPER_ADMIN/ADMIN/MANAGER: 전체, AGENT: READ
-- ============================================================
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code IN ('SUPER_ADMIN', 'ADMIN', 'MANAGER')
AND m.menu_code IN ('INCENTIVE_PAY','RECON_OUT','TERM_SETTLE')
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;
INSERT INTO role_menu_permission (role_id, menu_id, perm_code, is_granted)
SELECT r.role_id, mp.menu_id, mp.perm_code, 'Y'
FROM role r
CROSS JOIN menu_permission mp
JOIN menu m ON m.menu_id = mp.menu_id
WHERE r.role_code = 'AGENT'
AND mp.perm_code = 'READ'
AND m.menu_code IN ('INCENTIVE_PAY','RECON_OUT','TERM_SETTLE')
ON CONFLICT (role_id, menu_id, perm_code) DO NOTHING;