itsm_ysm/bin/main/mapper/primarydb/sqlmap/itms/bbs/BBSAdminManageMapper.xml
2025-08-11 18:00:07 +09:00

394 lines
9.7 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">
<!--
/**
* 게시물 관리 처리 쿼리문
* ** enterprise의 EgovBoard_SQL_mysql.xml => BoardMapper.xml가 존재하여 BBSAdminManageMapper.xml로 생성 **
*
* @author urp 인프라본부 나혁제
* @since 2025.01.20
* @version 1.0.0
* @see
*
* <pre>
*
* << 개정이력(Modification information) >>
*
* 수정일 수정자 수정내용
*ㅡㅡㅡㅡㅡㅡㅡㅡ ㅡㅡㅡㅡㅡㅡㅡㅡ ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
* 2025.01.20 나혁제 최초작성
*
* </pre>
*/
-->
<mapper namespace="com.urpsys.itmsapi.bbs.dao.BBSAdminManageDAO">
<!-- 조건에 맞는 게시물 목록을 조회 한다. -->
<select id="selectBoardArticleList" parameterType="java.util.LinkedHashMap" resultType="java.util.LinkedHashMap">
SELECT a.NTT_ID AS nttId
, a.NTT_SJ AS nttSj
, a.FRST_REGR_ID AS frstRegisterId
, IFNULL(b.USER_NM, a.PSTGR_NM) AS frstRegisterNm
, DATE_FORMAT(a.FRST_REG_DTM, '%Y-%m-%d') AS frstRegisterPnttm
, a.INQ_CNT AS inqireCo
, a.PARNTSCTT_NO AS parnts
, a.CMNT_AT AS replyAt
, a.CMNT_LCTN AS replyLc
, a.USE_AT AS useAt
, a.ATCH_FILE_ID AS atchFileId
, a.BBS_ID AS bbsId
, a.PSTG_STRT_DTM AS ntceBgnde
, a.PSTG_END_DTM AS ntceEndde
FROM
TB_BBS_INFO AS a
LEFT OUTER JOIN
COMVNUSERMASTER AS b
ON
a.FRST_REGR_ID = b.ESNTL_ID
WHERE
a.BBS_ID = #{bbsId}
<if test="useAt != ''">
AND
a.USE_AT = #{useAt}
</if>
<if test="searchCnd == 0">
AND
a.NTT_SJ LIKE CONCAT ('%', #{searchWrd},'%')
</if>
<if test="searchCnd == 1">
AND
a.NTT_CN LIKE CONCAT ('%', #{searchWrd},'%')
</if>
<if test="searchCnd == 2">
AND
b.USER_NM LIKE CONCAT ('%', #{searchWrd},'%')
</if>
ORDER BY
a.SORT_SEQ
DESC
, NTT_NO
ASC
LIMIT
#{recordCountPerPage}
OFFSET
#{firstIndex}
</select>
<!-- 조건에 맞는 게시물 목록에 대한 전체 건수를 조회 한다. -->
<select id="selectBoardArticleListCnt" parameterType="java.util.LinkedHashMap" resultType="java.lang.Integer">
SELECT
COUNT(a.NTT_ID)
FROM
TB_BBS_INFO AS a
LEFT OUTER JOIN
COMVNUSERMASTER AS b
ON
a.FRST_REGR_ID = b.ESNTL_ID
WHERE
a.BBS_ID = #{bbsId}
<if test="useAt != ''">
AND
a.USE_AT = #{useAt}
</if>
<if test="searchCnd == 0">
AND
a.NTT_SJ LIKE CONCAT ('%', #{searchWrd},'%')
</if>
<if test="searchCnd == 1">
AND
a.NTT_CN LIKE CONCAT ('%', #{searchWrd},'%')
</if>
<if test="searchCnd == 2">
AND
b.USER_NM LIKE CONCAT ('%', #{searchWrd},'%')
</if>
</select>
<!-- 게시물 ID 설정 -->
<select id="selectMaxNttId" resultType="java.lang.Long">
SELECT
IFNULL(MAX(NTT_ID), 0) + 1 AS nttId
FROM
TB_BBS_INFO
</select>
<!-- 게시판에 답변 게시물을 등록 한다. -->
<insert id="replyBoardArticle" parameterType="java.util.LinkedHashMap">
<selectKey keyProperty="nttNo" resultType="java.lang.Long" order="BEFORE">
SELECT
IFNULL(MAX(NTT_NO), 0) + 1 AS nttNo
FROM
TB_BBS_INFO
WHERE
BBS_ID = #{bbsId}
AND
SORT_SEQ = #{sortOrdr}
</selectKey>
INSERT INTO
TB_BBS_INFO
(
NTT_ID
, BBS_ID
, NTT_SJ
, NTT_CN
, SORT_SEQ
, PSTGR_ID
, PSTGR_NM
, PWD
, INQ_CNT
, PSTG_STRT_DTM
, PSTG_END_DTM
, CMNT_AT
, PARNTSCTT_NO
, NTT_NO
, CMNT_LCTN
, ATCH_FILE_ID
, FRST_REGR_ID
, FRST_REG_DTM
, USE_AT
)
VALUES
(
#{nttId}
, #{bbsId}
, #{nttSj}
, #{nttCn}
, #{sortOrdr}
, #{ntcrId}
, #{ntcrNm}
, #{password}
, #{inqireCo}
, #{ntceBgnde}
, #{ntceEndde}
, #{replyAt}
, #{parnts}
, 1
, #{replyLc}
, #{atchFileId}
, #{frstRegisterId}
, SYSDATE()
, 'Y'
)
</insert>
<!-- 답글의 부모글번호 조회 -->
<select id="getParentNttNo" parameterType="java.util.LinkedHashMap" resultType="java.lang.Long">
SELECT
NTT_NO AS nttNo
FROM
TB_BBS_INFO
WHERE
BBS_ID = #{bbsId}
AND
NTT_ID = #{parnts}
</select>
<update id="updateOtherNttNo" parameterType="java.util.LinkedHashMap">
UPDATE
TB_BBS_INFO
SET
NTT_NO = NTT_NO + 1
WHERE
BBS_ID = #{bbsId}
AND
SORT_SEQ = #{sortOrdr}
AND
NTT_NO &gt; #{nttNo}
</update>
<update id="updateNttNo" parameterType="java.util.LinkedHashMap">
UPDATE
TB_BBS_INFO
SET
NTT_NO = #{nttNo}
WHERE
BBS_ID = #{bbsId}
AND
NTT_ID = #{nttId}
</update>
<!-- 게시물을 등록한다. -->
<insert id="insertBoardArticle" parameterType="java.util.LinkedHashMap">
<selectKey keyProperty="nttNo" resultType="java.lang.Long" order="BEFORE">
SELECT
IFNULL(MAX(SORT_SEQ), 0) + 1 AS NTT_NO
FROM
TB_BBS_INFO
WHERE
BBS_ID = #{bbsId}
</selectKey>
INSERT INTO
TB_BBS_INFO
(
NTT_ID
, BBS_ID
, NTT_SJ
, NTT_CN
, SORT_SEQ
, PSTGR_ID
, PSTGR_NM
, PWD
, INQ_CNT
, PSTG_STRT_DTM
, PSTG_END_DTM
, CMNT_AT
, PARNTSCTT_NO
, NTT_NO
, CMNT_LCTN
, ATCH_FILE_ID
, FRST_REGR_ID
, FRST_REG_DTM
, USE_AT
, BLOG_ID
)
VALUES
(
#{nttId}
, #{bbsId}
, #{nttSj}
, #{nttCn}
, #{nttNo}
, #{ntcrId}
, #{ntcrNm}
, #{password}
, #{inqireCo}
, #{ntceBgnde}
, #{ntceEndde}
, #{replyAt}
, #{parnts}
, 1
, #{replyLc}
, #{atchFileId}
, #{frstRegisterId}
, SYSDATE()
, 'Y'
, #{blogId}
)
</insert>
<!-- 게시물에 대한 현재 조회 건수를 조회 한다. -->
<select id="selectMaxInqireCo" parameterType="java.util.LinkedHashMap" resultType="java.lang.Integer">
SELECT
IFNULL(MAX(INQ_CNT), 0) + 1 AS inqireCo
FROM
TB_BBS_INFO
WHERE
BBS_ID = #{bbsId}
AND
NTT_ID = #{nttId}
</select>
<!-- 게시물에 대한 조회 건수를 수정 한다. -->
<update id="updateInqireCo" parameterType="java.util.LinkedHashMap">
UPDATE
TB_BBS_INFO
SET
INQ_CNT = #{inqireCo}
, LAST_UPDR_ID = #{lastUpdusrId}
, LAST_UPD_DTM = SYSDATE()
WHERE
BBS_ID = #{bbsId}
AND
NTT_ID = #{nttId}
</update>
<!-- 게시물 한 건에 대하여 상세 내용을 조회 한다. -->
<select id="selectBoardArticle" parameterType="java.util.LinkedHashMap" resultType="java.util.LinkedHashMap">
SELECT a.NTT_SJ AS nttSj
, a.PSTGR_ID AS ntcrId
, a.PSTGR_NM AS ntcrNm
, a.NTT_NO AS nttNo
, a.NTT_CN AS nttCn
, a.PWD AS password
, a.FRST_REGR_ID AS frstRegisterId
, b.USER_NM AS frstRegisterNm
, DATE_FORMAT(a.FRST_REG_DTM, '%Y-%m-%d') AS frstRegisterPnttm
, a.PSTG_STRT_DTM AS ntceBgnde
, a.PSTG_END_DTM AS ntceEndde
, a.INQ_CNT AS inqireCo
, a.USE_AT AS useAt
, a.ATCH_FILE_ID AS atchFileId
, a.BBS_ID AS bbsId
, a.NTT_ID AS nttId
, a.PARNTSCTT_NO AS parnts
, a.CMNT_AT AS replyAt
, a.CMNT_LCTN AS replyLc
, a.SORT_SEQ AS sortOrdr
, c.BBS_TYCD AS bbsTyCode
, c.BBS_ATRB_CD AS bbsAttrbCode
, c.REPLY_POSBL_AT AS replyPosblAt
, c.FILE_ATCH_PSBL_AT AS fileAtchPosblAt
, c.ATCH_PSBL_FILE_NUM AS ATCH_PSBL_FILE_NUM
, c.BBS_NM AS bbsNm
FROM
TB_BBS_INFO AS a
LEFT OUTER JOIN
COMVNUSERMASTER AS b
ON
a.FRST_REGR_ID = b.ESNTL_ID
LEFT OUTER JOIN
TB_BBS_MASTR_INFO AS c
ON
a.BBS_ID = c.BBS_ID
WHERE
a.BBS_ID = #{bbsId}
AND
a.NTT_ID = #{nttId}
</select>
<!-- 게시물에 대한 내용을 수정한다. -->
<update id="updateBoardArticle" parameterType="java.util.LinkedHashMap">
UPDATE
TB_BBS_INFO
SET
NTT_SJ = #{nttSj}
, NTT_CN = #{nttCn}
, PSTGR_ID = #{ntcrId}
, PSTGR_NM = #{ntcrNm}
, PWD = #{password}
, PSTG_STRT_DTM = #{ntceBgnde}
, PSTG_END_DTM = #{ntceEndde}
, LAST_UPDR_ID = #{lastUpdusrId}
, ATCH_FILE_ID = #{atchFileId}
, LAST_UPD_DTM = SYSDATE()
WHERE
BBS_ID = #{bbsId}
AND
NTT_ID = #{nttId}
</update>
<!-- 게시물에 대한 내용을 삭제한다. -->
<update id="deleteBoardArticle" parameterType="java.util.LinkedHashMap">
UPDATE
TB_BBS_INFO
SET
NTT_SJ = #{nttSj}
, USE_AT = 'N'
, LAST_UPDR_ID = #{lastUpdusrId}
, LAST_UPD_DTM = SYSDATE()
WHERE
BBS_ID = #{bbsId}
AND
NTT_ID = #{nttId}
</update>
</mapper>