233 lines
7.1 KiB
XML
233 lines
7.1 KiB
XML
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||
|
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||
|
|
<mapper namespace="menu">
|
||
|
|
|
||
|
|
<!-- 사용자가 사용하는 화면에서 보여지는 메뉴 목록을 가져온다. -->
|
||
|
|
<select id="selectUserViewMenuList" parameterType="map" resultType="map">
|
||
|
|
WITH RECURSIVE v_menu(
|
||
|
|
LEVEL,
|
||
|
|
MENU_TYPE,
|
||
|
|
OBJID,
|
||
|
|
PARENT_OBJ_ID,
|
||
|
|
MENU_NAME_KOR,
|
||
|
|
MENU_URL,
|
||
|
|
MENU_DESC,
|
||
|
|
SEQ,
|
||
|
|
WRITER,
|
||
|
|
REGDATE,
|
||
|
|
STATUS,
|
||
|
|
PATH,
|
||
|
|
CYCLE
|
||
|
|
) AS (
|
||
|
|
SELECT
|
||
|
|
1 AS LEVEL,
|
||
|
|
MENU_TYPE,
|
||
|
|
OBJID::numeric,
|
||
|
|
PARENT_OBJ_ID,
|
||
|
|
MENU_NAME_KOR,
|
||
|
|
MENU_URL,
|
||
|
|
MENU_DESC,
|
||
|
|
SEQ,
|
||
|
|
WRITER,
|
||
|
|
REGDATE,
|
||
|
|
STATUS,
|
||
|
|
ARRAY [MENU.OBJID],
|
||
|
|
FALSE
|
||
|
|
FROM MENU_INFO MENU
|
||
|
|
WHERE PARENT_OBJ_ID=0
|
||
|
|
AND MENU_TYPE=1
|
||
|
|
|
||
|
|
UNION ALL
|
||
|
|
|
||
|
|
SELECT
|
||
|
|
V_MENU.LEVEL+1,
|
||
|
|
MENU_SUB.MENU_TYPE,
|
||
|
|
MENU_SUB.OBJID,
|
||
|
|
MENU_SUB.PARENT_OBJ_ID,
|
||
|
|
MENU_SUB.MENU_NAME_KOR,
|
||
|
|
MENU_SUB.MENU_URL,
|
||
|
|
MENU_SUB.MENU_DESC,
|
||
|
|
MENU_SUB.SEQ,
|
||
|
|
MENU_SUB.WRITER,
|
||
|
|
MENU_SUB.REGDATE,
|
||
|
|
MENU_SUB.STATUS,
|
||
|
|
PATH||MENU_SUB.SEQ::numeric,
|
||
|
|
MENU_SUB.OBJID = ANY(PATH)
|
||
|
|
FROM MENU_INFO MENU_SUB
|
||
|
|
JOIN
|
||
|
|
V_MENU
|
||
|
|
ON
|
||
|
|
MENU_SUB.PARENT_OBJ_ID = V_MENU.OBJID
|
||
|
|
WHERE 1=1
|
||
|
|
AND UPPER(MENU_SUB.STATUS) = 'ACTIVE'
|
||
|
|
)
|
||
|
|
SELECT
|
||
|
|
LEVEL AS LEV,
|
||
|
|
case MENU_TYPE
|
||
|
|
when '0' then 'admin'
|
||
|
|
when '1' then 'user'
|
||
|
|
else ''
|
||
|
|
END AS MENU_TYPE,
|
||
|
|
OBJID AS menuObjId,
|
||
|
|
PARENT_OBJ_ID AS parentObjId,
|
||
|
|
MENU_NAME_KOR AS menuName,
|
||
|
|
MENU_NAME_KOR AS menuNameEn,
|
||
|
|
LPAD(' ', 3*(LEVEL-1))||MENU_NAME_KOR AS lpadMenuName,
|
||
|
|
MENU_URL AS url,
|
||
|
|
MENU_DESC AS description,
|
||
|
|
SEQ AS seq,
|
||
|
|
WRITER,
|
||
|
|
TO_CHAR(REGDATE,'YYYY-MM-DD') AS regDate,
|
||
|
|
STATUS AS status,
|
||
|
|
case UPPER(STATUS)
|
||
|
|
when 'ACTIVE' then '활성화'
|
||
|
|
when 'INACTIVE' then '비활성화'
|
||
|
|
else ''
|
||
|
|
END AS statusTitle,
|
||
|
|
B.CREATE_AUTH_CNT,
|
||
|
|
B.READ_AUTH_CNT,
|
||
|
|
B.UPDATE_AUTH_CNT,
|
||
|
|
B.DELETE_AUTH_CNT
|
||
|
|
FROM
|
||
|
|
v_menu A,
|
||
|
|
(
|
||
|
|
SELECT
|
||
|
|
B.MENU_OBJID,
|
||
|
|
SUM(CASE B.CREATE_YN WHEN 'Y' THEN 1 ELSE 0 END) CREATE_AUTH_CNT,
|
||
|
|
SUM(CASE B.READ_YN WHEN 'Y' THEN 1 ELSE 0 END) READ_AUTH_CNT,
|
||
|
|
SUM(CASE B.UPDATE_YN WHEN 'Y' THEN 1 ELSE 0 END) UPDATE_AUTH_CNT,
|
||
|
|
SUM(CASE B.DELETE_YN WHEN 'Y' THEN 1 ELSE 0 END) DELETE_AUTH_CNT
|
||
|
|
FROM
|
||
|
|
REL_MENU_AUTH B,
|
||
|
|
AUTHORITY_MASTER C
|
||
|
|
WHERE
|
||
|
|
1 = 1
|
||
|
|
AND B.AUTH_OBJID = C.OBJID
|
||
|
|
AND C.OBJID IN (
|
||
|
|
SELECT
|
||
|
|
MASTER_OBJID
|
||
|
|
FROM
|
||
|
|
AUTHORITY_SUB_USER
|
||
|
|
WHERE
|
||
|
|
USER_ID = #{userId}
|
||
|
|
)
|
||
|
|
GROUP BY
|
||
|
|
B.MENU_OBJID
|
||
|
|
) B
|
||
|
|
WHERE 1=1
|
||
|
|
AND a.objid = b.menu_objid
|
||
|
|
AND A.seq > 1
|
||
|
|
ORDER BY PATH,SEQ
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<!-- 관리자 메뉴 목록 조회 -->
|
||
|
|
<select id="selectAdminMenuList" parameterType="map" resultType="map">
|
||
|
|
SELECT
|
||
|
|
OBJID AS menuObjId,
|
||
|
|
PARENT_OBJ_ID AS parentObjId,
|
||
|
|
MENU_NAME_KOR AS menuName,
|
||
|
|
MENU_NAME_KOR AS menuNameEn,
|
||
|
|
MENU_URL AS url,
|
||
|
|
MENU_DESC AS description,
|
||
|
|
SEQ AS seq,
|
||
|
|
STATUS AS status,
|
||
|
|
MENU_TYPE AS menuType
|
||
|
|
FROM MENU_INFO
|
||
|
|
WHERE MENU_TYPE = '0'
|
||
|
|
AND UPPER(STATUS) = 'ACTIVE'
|
||
|
|
ORDER BY SEQ
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<!-- 사용자 메뉴 권한 확인 -->
|
||
|
|
<select id="checkUserMenuAuth" parameterType="map" resultType="map">
|
||
|
|
SELECT
|
||
|
|
COUNT(*) AS authCount,
|
||
|
|
SUM(CASE B.READ_YN WHEN 'Y' THEN 1 ELSE 0 END) AS readAuth,
|
||
|
|
SUM(CASE B.CREATE_YN WHEN 'Y' THEN 1 ELSE 0 END) AS createAuth,
|
||
|
|
SUM(CASE B.UPDATE_YN WHEN 'Y' THEN 1 ELSE 0 END) AS updateAuth,
|
||
|
|
SUM(CASE B.DELETE_YN WHEN 'Y' THEN 1 ELSE 0 END) AS deleteAuth
|
||
|
|
FROM
|
||
|
|
REL_MENU_AUTH B,
|
||
|
|
AUTHORITY_MASTER C,
|
||
|
|
MENU_INFO M
|
||
|
|
WHERE
|
||
|
|
1 = 1
|
||
|
|
AND B.AUTH_OBJID = C.OBJID
|
||
|
|
AND B.MENU_OBJID = M.OBJID
|
||
|
|
AND M.MENU_URL = #{menuUrl}
|
||
|
|
AND C.OBJID IN (
|
||
|
|
SELECT
|
||
|
|
MASTER_OBJID
|
||
|
|
FROM
|
||
|
|
AUTHORITY_SUB_USER
|
||
|
|
WHERE
|
||
|
|
USER_ID = #{userId}
|
||
|
|
)
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<!-- 메뉴 정보 조회 -->
|
||
|
|
<select id="selectMenuInfo" parameterType="map" resultType="map">
|
||
|
|
SELECT
|
||
|
|
OBJID AS menuObjId,
|
||
|
|
PARENT_OBJ_ID AS parentObjId,
|
||
|
|
MENU_NAME_KOR AS menuName,
|
||
|
|
MENU_NAME_KOR AS menuNameEn,
|
||
|
|
MENU_URL AS url,
|
||
|
|
MENU_DESC AS description,
|
||
|
|
SEQ AS seq,
|
||
|
|
STATUS AS status,
|
||
|
|
MENU_TYPE AS menuType,
|
||
|
|
TO_CHAR(REGDATE,'YYYY-MM-DD HH24:MI:SS') AS regDate,
|
||
|
|
WRITER
|
||
|
|
FROM MENU_INFO
|
||
|
|
WHERE OBJID = #{menuObjId}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<!-- 메뉴 등록 -->
|
||
|
|
<insert id="insertMenu" parameterType="map">
|
||
|
|
INSERT INTO MENU_INFO (
|
||
|
|
OBJID,
|
||
|
|
PARENT_OBJ_ID,
|
||
|
|
MENU_NAME_KOR,
|
||
|
|
MENU_URL,
|
||
|
|
MENU_DESC,
|
||
|
|
SEQ,
|
||
|
|
STATUS,
|
||
|
|
MENU_TYPE,
|
||
|
|
REGDATE,
|
||
|
|
WRITER
|
||
|
|
) VALUES (
|
||
|
|
nextval('seq_menu_info'),
|
||
|
|
#{parentObjId},
|
||
|
|
#{menuName},
|
||
|
|
#{url},
|
||
|
|
#{description},
|
||
|
|
#{seq},
|
||
|
|
#{status},
|
||
|
|
#{menuType},
|
||
|
|
now(),
|
||
|
|
#{writer}
|
||
|
|
)
|
||
|
|
</insert>
|
||
|
|
|
||
|
|
<!-- 메뉴 수정 -->
|
||
|
|
<update id="updateMenu" parameterType="map">
|
||
|
|
UPDATE MENU_INFO SET
|
||
|
|
PARENT_OBJ_ID = #{parentObjId},
|
||
|
|
MENU_NAME_KOR = #{menuName},
|
||
|
|
MENU_URL = #{url},
|
||
|
|
MENU_DESC = #{description},
|
||
|
|
SEQ = #{seq},
|
||
|
|
STATUS = #{status},
|
||
|
|
MENU_TYPE = #{menuType}
|
||
|
|
WHERE OBJID = #{menuObjId}
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<!-- 메뉴 삭제 -->
|
||
|
|
<delete id="deleteMenu" parameterType="map">
|
||
|
|
DELETE FROM MENU_INFO
|
||
|
|
WHERE OBJID = #{menuObjId}
|
||
|
|
</delete>
|
||
|
|
|
||
|
|
</mapper>
|