package incheon.com.menu.mapper;

import java.util.List;
import java.util.Map;

/**
 * 공통 메뉴 Mapper
 * 헤더 메뉴 조회 및 URL 기반 메뉴 코드 매칭
 */
@org.egovframe.rte.psl.dataaccess.mapper.Mapper @incheon.com.config.annotation.MainDB
public interface CommonMenuMapper {

    /**
     * 사용자 역할 기반 헤더 메뉴 조회
     *
     * @param params userId, sysCd 포함
     * @return 메뉴 목록 (계층 구조 변환 전 flat list)
     * @throws Exception
     */
    List<Map<String, Object>> selectHeaderMenuByUser(Map<String, Object> params) throws Exception;

    /**
     * 역할 코드 기반 메뉴 조회 (유지보수 계정용)
     *
     * @param params sysCd, roleCds 포함
     * @return 해당 역할에 매핑된 메뉴 목록
     * @throws Exception
     */
    List<Map<String, Object>> selectHeaderMenuByRole(Map<String, Object> params) throws Exception;

    /**
     * URL 패턴 기반 메뉴 정보 조회 (메뉴코드, 메뉴명, 시스템명 포함)
     *
     * @param params sysCd, requestUri 포함
     * @return 매칭되는 메뉴 정보 (menu_cd, menu_nm, sys_nm)
     * @throws Exception
     */
    Map<String, Object> selectMenuInfoByUrlPattern(Map<String, Object> params) throws Exception;

    /**
     * 통합관리자 역할의 IP 접근 제어 정보 조회
     *
     * @param params userId, sysCd 포함
     * @return 통합관리자 역할의 rulNm (IP 제한 목록)
     * @throws Exception
     */
    String selectSuperAdminRulNm(Map<String, Object> params) throws Exception;
}
