
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<?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">
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴 관련
-->
<mapper namespace="com.takensoft.cms.menu.dao.MenuDAO">
<!-- 메뉴 정보 resultMap(권한포함) -->
<resultMap id="menuMap" type="MenuVO">
<result property="menuId" column="menu_id" />
<result property="upMenuId" column="up_menu_id" />
<result property="upMenuNm" column="up_menu_nm" />
<result property="menuNm" column="menu_nm" />
<result property="menuExpln" column="menu_expln" />
<result property="menuGrd" column="menu_grd" />
<result property="menuSn" column="menu_sn" />
<result property="menuType" column="menu_type" />
<result property="menuTypeCtgry" column="menu_type_ctgry" />
<result property="linkUrl" column="link_url" />
<result property="linkType" column="link_type" />
<result property="dgstfnExmnUseYn" column="dgstfn_exmn_use_yn" />
<result property="menuExpsrYn" column="menu_expsr_yn" />
<result property="menuUser" column="menu_user" />
<result property="useYn" column="use_yn" />
<result property="rgtr" column="rgtr" />
<result property="rgtrNm" column="rgtr_nm" />
<result property="regDt" column="reg_dt" />
<result property="mdfr" column="mdfr" />
<result property="mdfrNm" column="mdfr_nm" />
<result property="mdfcnDt" column="mdfcn_dt" />
<result property="sysPvsnYn" column="sys_pvsn_yn" />
</resultMap>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴 등록
-->
<insert id="save" parameterType="MenuVO">
INSERT INTO menu_info (
menu_id
, up_menu_id
, menu_nm
, menu_expln
, menu_grd
, menu_sn
, menu_type
, menu_type_ctgry
, link_url
, link_type
, dgstfn_exmn_use_yn
, menu_expsr_yn
, menu_user
, use_yn
, rgtr
, reg_dt
, sys_pvsn_yn
) VALUES (
#{menuId}
, #{upMenuId}
, #{menuNm}
, #{menuExpln}
, #{menuGrd}
, #{menuSn}
, #{menuType}
, #{menuTypeCtgry}
, #{linkUrl}
, #{linkType}
, #{dgstfnExmnUseYn}
, #{menuExpsrYn}
, #{menuUser}
, 'Y'
, #{rgtr}
, NOW()
, #{sysPvsnYn}
)
</insert>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴별 권한 등록
-->
<insert id="menuAuthrtSave" parameterType="MenuAuthorVO">
INSERT INTO menu_authrt_info (
authrt_cd
, menu_id
, inq_authrt
, reg_authrt
, mdfcn_authrt
, del_authrt
, file_dwnld_authrt
, reg_dt
) VALUES (
#{authrtCd}
, #{menuId}
<choose>
<when test="authrtCd == 'ROLE_ADMIN'">
, 'Y'
, 'Y'
, 'Y'
, 'Y'
, 'Y'
</when>
<otherwise>
, 'N'
, 'N'
, 'N'
, 'N'
, 'N'
</otherwise>
</choose>
, NOW()
)
</insert>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴별 만족도 등록
-->
<insert id="saveMenuStsfdg" parameterType="MenuStsfdgVO">
INSERT INTO menu_dgstfn (
menu_dgstfn_id
, menu_id
, rspns_five
, rspns_four
, rspns_three
, rspns_two
, rspns_one
, opnn
, reg_ip
, rgtr
, reg_dt
) VALUES (
#{menuDgstfnId}
, #{menuId}
, #{rspnsFive}
, #{rspnsFour}
, #{rspnsThree}
, #{rspnsTwo}
, #{rspnsOne}
, #{opnn}
, #{regIp}
, #{rgtr}
, NOW()
)
</insert>
<sql id="selectMenu">
SELECT mi.menu_id
, mi.up_menu_id
, (SELECT mi2.menu_nm FROM menu_info AS mi2 WHERE mi2.menu_id = mi.up_menu_id) AS up_menu_nm
, mi.menu_nm
, mi.menu_expln
, mi.menu_grd
, mi.menu_sn
, mi.menu_type
, mi.menu_type_ctgry
, mi.link_url
, mi.link_type
, mi.dgstfn_exmn_use_yn
, mi.menu_expsr_yn
, mi.menu_user
, mi.use_yn
, mi.rgtr
, (SELECT mbr.mbr_nm FROM mbr_info AS mbr WHERE mbr.mbr_id = mi.rgtr) AS rgtr_nm
, TO_CHAR (mi.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
, mi.mdfr
, (SELECT mbr.mbr_nm FROM mbr_info AS mbr WHERE mbr.mbr_id = mi.mdfr) AS mdfr_nm
, TO_CHAR (mi.mdfcn_dt, 'YYYY-MM-DD HH24:MI') AS mdfcn_dt
FROM menu_info AS mi
</sql>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 최상위 메뉴 조회 [관리자용]
-->
<select id="findTopMenu" resultType="MenuVO">
<include refid="selectMenu" />
WHERE up_menu_id IS NULL
ORDER BY menu_sn
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 하위 메뉴 조회 [관리자용]
-->
<select id="findChildMenus" parameterType="String" resultType="MenuVO">
<include refid="selectMenu" />
WHERE up_menu_id = #{menuId}
ORDER BY menu_sn
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.15
내 용 : 메뉴 전체 조회(최상위 메뉴 제외-> grd:0)
-->
<select id="findExceptTopMenu" resultType="MenuVO">
<include refid="selectMenu" />
WHERE menu_grd != 0
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴 상세 조회
-->
<select id="findByMenu" parameterType="String" resultMap="menuMap">
<include refid="selectMenu" />
WHERE menu_id = #{menuId}
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴 깊이 조회
-->
<select id="findByMenuGrd" parameterType="String" resultType="Integer">
SELECT menu_grd
FROM menu_info
WHERE menu_id = #{upMenuId}
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.08
내 용 : 메뉴 순서 조회
-->
<select id="findByMenuSn" parameterType="String" resultType="Integer">
SELECT COALESCE(MAX(menu_sn), 0)
FROM menu_info
WHERE use_yn = 'Y'
<choose>
<when test="upMenuId != null and upMenuId != ''">
AND up_menu_id = #{upMenuId}
</when>
<otherwise>
AND up_menu_id IS NULL
</otherwise>
</choose>
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.15
내 용 : 메뉴 수정
-->
<update id="update" parameterType="MenuVO">
UPDATE menu_info
SET up_menu_id = #{upMenuId}
, menu_nm = #{menuNm}
, menu_expln = #{menuExpln}
, menu_grd = #{menuGrd}
, menu_sn = #{menuSn}
, menu_type = #{menuType}
, menu_type_ctgry = #{menuTypeCtgry}
, link_url = #{linkUrl}
, link_type = #{linkType}
, dgstfn_exmn_use_yn = #{dgstfnExmnUseYn}
, menu_expsr_yn = #{menuExpsrYn}
, menu_user = #{menuUser}
, use_yn = #{useYn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE menu_id = #{menuId}
</update>
<!-- 메뉴 관리(관리자 페이지 Tree 호출용) -->
<sql id="selecteNode">
SELECT menu_id AS id
, up_menu_id AS up_id
, menu_nm AS nm
FROM menu_info
</sql>
<!--
작성자 : takensoft
작성일 : 2024.04.25
내 용 : 상위 메뉴 조회
-->
<select id="findByTopNode" resultType="HierachyVO">
<include refid="selecteNode" />
WHERE up_menu_id IS NULL
AND use_yn = 'Y'
ORDER BY menu_sn
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.25
내 용 : 하위 메뉴 조회
-->
<select id="findChildNode" parameterType="String" resultType="HierachyVO">
<include refid="selecteNode" />
WHERE up_menu_id = #{id}
AND use_yn = 'Y'
ORDER BY menu_sn
</select>
<!-- 메뉴 관리(관리자 페이지 Tree 호출용) -->
<!--
작성자 : 박정하
작성일 : 2024.04.29
내 용 : 상위,하위 메뉴 삭제
-->
<update id="deleteMenu" parameterType="MenuVO">
WITH RECURSIVE MenuHierarchy AS (
SELECT menu_id
, up_menu_id
FROM menu_info
WHERE menu_id = #{menuId}
UNION ALL
SELECT di.menu_id
, di.up_menu_id
FROM menu_info di
JOIN MenuHierarchy dh
ON di.up_menu_id = dh.menu_id
)
UPDATE menu_info
SET use_yn = 'N'
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE menu_id IN (SELECT menu_id FROM MenuHierarchy);
</update>
<!--
작성자 : 박정하
작성일 : 2024.05.02
내 용 : 상위 메뉴 조회 [관리자용]
-->
<select id="findUpMenuId" parameterType="String" resultType="String">
SELECT up_menu_id AS menuId
FROM menu_info
WHERE menu_id = #{menuId}
</select>
<!--
작성자 : 박정하
작성일 : 2024.05.02
내 용 : 메뉴 권한 수정
-->
<update id="updateMenuAuthrt" parameterType="HashMap">
UPDATE menu_authrt_info
SET inq_authrt = #{inqAuthrt}
, reg_authrt = #{regAuthrt}
, mdfcn_authrt = #{mdfcnAuthrt}
, del_authrt = #{delAuthrt}
, file_dwnld_authrt = #{fileDwnldAuthrt}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE authrt_cd = #{authrtCd}
AND menu_id = #{id}
</update>
<!-- 홈페이지 메뉴 호출 전용 -->
<!--
작성자 : takensoft
작성일 : 2024.05.09
내 용 : 최상위 메뉴 조회(라우터 포함)
-->
<select id="findByMenuWithRouter" resultType="SysMenuVO">
SELECT mi.menu_id
, mi.up_menu_id
, mi.menu_nm
, COALESCE(ctm.page_crs, bm.page_crs, mi.link_url, '') AS router_url
, mi.link_type
, mi.menu_type
, mi.menu_type_ctgry
FROM menu_info mi
LEFT JOIN ( SELECT conts_id
<choose>
<when test="menuType == 'adm'">
, mngr_page_crs AS page_crs
</when>
<otherwise>
, page_crs
</otherwise>
</choose>
FROM conts_type_mng
) ctm
ON mi.menu_type_ctgry = ctm.conts_id
AND mi.menu_type = 'conts'
LEFT JOIN ( SELECT bm.bbs_mng_id
<choose>
<when test="menuType == 'adm'">
, br.mngr_page_crs AS page_crs
</when>
<otherwise>
, br.page_crs
</otherwise>
</choose>
FROM bbs_mng bm
LEFT JOIN bbs_router br
ON bm.bbs_mng_id = br.bbs_mng_id
AND br.expsr_yn = 'Y') bm
ON mi.menu_type_ctgry = bm.bbs_mng_id
AND mi.menu_type = 'bbs'
WHERE mi.up_menu_id = #{menuId}
AND mi.use_yn = 'Y'
AND mi.menu_expsr_yn = 'Y'
AND ( NOT EXISTS ( SELECT 1
FROM menu_authrt_info mai
WHERE mai.menu_id = mi.menu_id
<if test="roles != null and roles.size() > 0">
AND mai.authrt_cd IN
<foreach item="role" collection="roles" open="(" separator="," close=")">
#{role}
</foreach>
</if>
) OR EXISTS ( SELECT 1
FROM menu_authrt_info mai
WHERE mai.menu_id = mi.menu_id
AND mai.inq_authrt = 'Y'
<if test="roles != null and roles.size() > 0">
AND mai.authrt_cd IN
<foreach item="role" collection="roles" open="(" separator="," close=")">
#{role}
</foreach>
</if>
)
)
ORDER BY mi.menu_sn
</select>
<!-- 홈페이지 메뉴 호출 전용 -->
<!--
작성자 : 박정하
작성일 : 2024.05.10
내 용 : 메뉴 정보 수정 (hierachyVO 사용)
-->
<update id="menuUpdateByHierachy" parameterType="DeptVO">
UPDATE menu_info
SET up_menu_id = #{upMenuId}
, menu_grd = #{menuGrd}
, menu_sn = #{menuSn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE menu_id = #{menuId}
</update>
<!--
작성자 : 박정하
작성일 : 2024.05.17
내 용 : 메뉴 수정 (콘텐츠 유형)
-->
<update id="updateByContsId" parameterType="ContsTypeVO">
UPDATE menu_info
SET menu_type = null
, menu_type_ctgry = null
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE menu_type_ctgry = #{contsId}
</update>
<!--
작성자 : 방선주
작성일 : 2024.06.07
내 용 : 게시판 관리에서 게시판 삭제 시 게시판 메뉴 미노출로 변경 (MENU_000000000000032 강제 적용)
-->
<update id="bbsMngMenuDelete" parameterType="MenuVO">
UPDATE menu_info
SET
use_yn = #{useYn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE up_menu_id = 'MENU_000000000000032'
AND menu_type_ctgry = #{menuTypeCtgry}
</update>
<!--
작성자 : 박정하
작성일 : 2024.07.18
내 용 : 메뉴 개수 조회 (접속 통계용)
-->
<select id="findAllCnt" parameterType="HashMap" resultType="int">
SELECT COUNT(menu_id)
FROM menu_info
WHERE use_yn = 'Y'
AND up_menu_id = #{menuMainDepth}
</select>
</mapper>