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

442 lines
11 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">
<!--
/**
* 게시판생성관리 처리 쿼리문
* ** BBSMasterMapper.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.BBSAttributeManageDAO">
<!-- 게시판생성관리::목록조회 -->
<select id="selectBBSMasterInfs" parameterType="java.util.LinkedHashMap" resultType="java.util.LinkedHashMap">
SELECT a.BBS_ID AS bbsId
, a.BBS_TYCD AS bbsTyCode
, b.CD_NM AS bbsTyCodeNm
, a.BBS_ATRB_CD AS bbsAttrbCode
, c.CD_NM AS bbsAttrbCodeNm
, a.BBS_NM AS bbsNm
, a.TPL_ID AS tmplatId
, a.USE_AT AS useAt
, DATE_FORMAT(a.FRST_REG_DTM, '%Y-%m-%d') AS frstRegisterPnttm
FROM
TB_BBS_MASTR_INFO AS a
LEFT OUTER JOIN
(
SELECT CD_ID
, CD
, CD_NM
FROM
TB_CMM_DTL_CD_INFO
WHERE
CD_ID = 'COM004'
AND
USE_AT='Y'
) AS b
ON
a.BBS_TYCD = b.CD
LEFT OUTER JOIN
(
SELECT CD_ID
, CD
, CD_NM
FROM
TB_CMM_DTL_CD_INFO
WHERE
CD_ID = 'COM009'
AND
USE_AT='Y'
) AS c
ON
a.BBS_ATRB_CD = c.CD
WHERE
1=1
<!--
/** 게시판 등록 화면에 사용여부를 추가하여, useAt의 값에 따라 게시판 목록결과가 바뀌지 않도록 하기 위해 주석처리=>일단 제거 */
<if test="useAt != null and useAt != ''">
AND
a.USE_AT = #{useAt}
</if> -->
<if test="searchCnd == 0">
AND
a.BBS_NM LIKE CONCAT ('%', #{searchWrd},'%')
</if>
<if test="searchCnd == 1">
AND
b.CD_NM LIKE CONCAT ('%', #{searchWrd},'%')
</if>
ORDER BY
a.FRST_REG_DTM
DESC
LIMIT
#{recordCountPerPage}
OFFSET
#{firstIndex}
</select>
<!-- 게시판생성관리::목록조회 Count -->
<select id="selectBBSMasterInfsCnt" parameterType="java.util.LinkedHashMap" resultType="java.lang.Integer">
SELECT
COUNT(a.BBS_ID)
FROM
TB_BBS_MASTR_INFO AS a
LEFT OUTER JOIN
(
SELECT CD_ID
, CD
, CD_NM
FROM
TB_CMM_DTL_CD_INFO
WHERE
CD_ID = 'COM004'
AND
USE_AT = 'Y'
) AS b
ON
a.BBS_TYCD = b.CD
LEFT OUTER JOIN
(
SELECT CD_ID
, CD
, CD_NM
FROM
TB_CMM_DTL_CD_INFO
WHERE
CD_ID = 'COM009'
AND
USE_AT='Y'
) AS c
ON
a.BBS_TYCD = c.CD
WHERE
1=1
<if test="useAt != null and useAt != ''">
AND
a.USE_AT = #{useAt}
</if>
<if test="searchCnd == 0">
AND
a.BBS_NM LIKE CONCAT ('%', #{searchWrd},'%')
</if>
<if test="searchCnd == 1">
AND
b.CD_NM LIKE CONCAT ('%', #{searchWrd},'%')
</if>
</select>
<!-- 게시판생성관리::게시판 등록 -->
<insert id="insertBBSMasterInf" parameterType="java.util.LinkedHashMap">
INSERT INTO
TB_BBS_MASTR_INFO
(
BBS_ID
, BBS_TYCD
, BBS_ATRB_CD
, BBS_NM
, BBS_INTR
, REPLY_POSBL_AT
, FILE_ATCH_PSBL_AT
, ATCH_PSBL_FILE_NUM
, ATCH_POSBL_FILE_SIZE
, TPL_ID
, USE_AT
, FRST_REGR_ID
, FRST_REG_DTM
, BLOG_ID
, BLOG_AT
)
VALUES
(
#{bbsId}
, #{bbsTyCode}
, #{bbsAttrbCode}
, #{bbsNm}
, #{bbsIntrcn}
, #{replyPosblAt}
, #{fileAtchPosblAt}
, #{posblAtchFileNumber}
, #{posblAtchFileSize}
, #{tmplatId}
, #{useAt}
, #{frstRegisterId}
, SYSDATE()
, #{blogId}
, #{blogAt}
)
</insert>
<!-- 게시판생성관리::게시판 상세조회 -->
<select id="selectBBSMasterInf" parameterType="java.util.LinkedHashMap" resultType="java.util.LinkedHashMap">
SELECT a.BBS_ID AS bbsId
, a.BBS_TYCD AS bbsTyCode
, b.CD_NM AS bbsTyCodeNm
, a.BBS_INTR AS bbsIntrcn
, a.BBS_ATRB_CD AS bbsAttrbCode
, c.CD_NM AS bbsAttrbCodeNm
, a.BBS_NM AS bbsNm
, a.TPL_ID AS tmplatId
, d.TPL_NM AS tmplatNm
, d.TPL_PATH AS tmplatCours
, a.FILE_ATCH_PSBL_AT AS fileAtchPosblAt
, a.ATCH_PSBL_FILE_NUM AS posblAtchFileNumber
, a.ATCH_POSBL_FILE_SIZE AS posblAtchFileSize
, a.REPLY_POSBL_AT AS replyPosblAt
, a.FRST_REGR_ID AS frstRegisterId
, e.USER_NM AS frstRegisterNm
, a.USE_AT AS useAt
, DATE_FORMAT(a.FRST_REG_DTM, '%Y-%m-%d') AS frstRegisterPnttm
, (
SELECT
IFNULL(USE_AT,'N')
FROM
TB_BBS_PRCUSE_INFO
WHERE
BBS_ID = #{bbsId}
AND
TRG_ID IN (
#{uniqId}
, 'SYSTEM_DEFAULT_BOARD'
, 'SYSTEMDEFAULT_REGIST' <!-- , 'SYSTEMDEFAULT_REGIST' : 블로그에서 추가한 값 -->
)
) AS authFlag
<!-- 추가 : 블로그 -->
, a.BLOG_ID AS blogId
, a.BLOG_AT AS blogAt
FROM
TB_BBS_MASTR_INFO AS a
LEFT OUTER JOIN
(
SELECT CD_ID
, CD
, CD_NM
FROM
TB_CMM_DTL_CD_INFO
WHERE
CD_ID = 'COM004'
AND
USE_AT = 'Y'
) AS b
ON
a.BBS_TYCD = b.CD
LEFT OUTER JOIN
(
SELECT CD_ID
, CD
, CD_NM
FROM
TB_CMM_DTL_CD_INFO
WHERE
CD_ID = 'COM009'
AND
USE_AT = 'Y'
) AS c
ON
a.BBS_ATRB_CD = c.CD
LEFT OUTER JOIN
TB_TPL_INFO AS d
ON
a.TPL_ID = d.TPL_ID
LEFT OUTER JOIN
COMVNUSERMASTER AS e
ON
a.FRST_REGR_ID = e.ESNTL_ID
WHERE
a.BBS_ID = #{bbsId}
</select>
<!-- 게시판 마스터 정보 수정 -->
<update id="updateBBSMasterInf" parameterType="java.util.LinkedHashMap">
UPDATE
TB_BBS_MASTR_INFO
SET
BBS_NM = #{bbsNm}
, BBS_INTR = #{bbsIntrcn}
, FILE_ATCH_PSBL_AT = #{fileAtchPosblAt}
, ATCH_PSBL_FILE_NUM = #{posblAtchFileNumber}
, ATCH_POSBL_FILE_SIZE = #{posblAtchFileSize}
, TPL_ID = #{tmplatId}
, LAST_UPDR_ID = #{lastUpdusrId}
, LAST_UPD_DTM = SYSDATE()
, USE_AT = #{useAt} <!-- 게시판 등록에 사용여부 추가로 인해 추가 -->
WHERE
BBS_ID = #{bbsId}
</update>
<!-- 게시판 마스터 정보 삭제 -->
<!-- 사용정보를 N으로 바꿈 (Y, N) -->
<update id="deleteBBSMasterInf" parameterType="java.util.LinkedHashMap">
UPDATE
TB_BBS_MASTR_INFO
SET
USE_AT = 'N'
, LAST_UPDR_ID = #{lastUpdusrId}
, LAST_UPD_DTM = SYSDATE()
WHERE
BBS_ID = #{bbsId}
</update>
<!-- 사용 중이지 않은 게시판 속성정보 목록 조회 -->
<select id="selectNotUsedBdMstrList" parameterType="java.util.LinkedHashMap" resultType="java.util.LinkedHashMap">
SELECT a.BBS_ID AS bbsId
, a.BBS_TYCD AS bbsTyCode
, b.CD_NM AS bbsTyCodeNm
, a.BBS_ATRB_CD AS bbsAttrbCode
, c.CD_NM AS bbsAttrbCodeNm
, a.BBS_NM AS bbsNm
, a.TPL_ID AS tmplatId
, a.USE_AT AS useAt
, DATE_FORMAT(a.FRST_REG_DTM, '%Y-%m-%d') AS frstRegisterPnttm
FROM
TB_BBS_MASTR_INFO AS a
LEFT OUTER JOIN
(
SELECT CD_ID
, CD
, CD_NM
FROM
TB_CMM_DTL_CD_INFO
WHERE
CD_ID = 'COM004'
AND
USE_AT = 'Y'
) AS b
ON
a.BBS_TYCD = b.CD
LEFT OUTER JOIN
(
SELECT CD_ID
, CD
, CD_NM
FROM
TB_CMM_DTL_CD_INFO
WHERE
CD_ID = 'COM009'
AND
USE_AT = 'Y'
) AS c
ON
a.BBS_ATRB_CD = c.CD
WHERE
a.USE_AT = 'Y'
AND
a.BBS_ID NOT IN (
SELECT
BBS_ID
FROM
TB_BBS_PRCUSE_INFO
<!-- WHERE
USE_AT = 'Y' --><!-- 사용관리 목록에 추가되어 있자만 사용중지 상태인 게시판이 나오지 않도록 주석처리 -->
)
<if test="searchCnd == 0">
AND
a.BBS_NM LIKE CONCAT ('%', #{searchWrd},'%')
</if>
<if test="searchCnd == 1">
AND
b.CD_NM LIKE CONCAT ('%', #{searchWrd},'%')
</if>
ORDER BY
a.FRST_REG_DTM
DESC
LIMIT
#{recordCountPerPage}
OFFSET
#{firstIndex}
</select>
<!-- 사용 중이지 않은 게시판 속성정보 목록 건수 조회 -->
<select id="selectNotUsedBdMstrListCnt" parameterType="java.util.LinkedHashMap" resultType="java.lang.Integer">
SELECT
COUNT(a.BBS_ID)
FROM
TB_BBS_MASTR_INFO AS a
LEFT OUTER JOIN
(
SELECT CD_ID
, CD
, CD_NM
FROM
TB_CMM_DTL_CD_INFO
WHERE
CD_ID = 'COM004'
AND
USE_AT = 'Y'
) AS b
ON
a.BBS_TYCD = b.CD
LEFT OUTER JOIN
(
SELECT CD_ID
, CD
, CD_NM
FROM
TB_CMM_DTL_CD_INFO
WHERE
CD_ID = 'COM009'
AND
USE_AT = 'Y'
) AS c
ON
a.BBS_ATRB_CD = c.CD
WHERE
a.USE_AT = 'Y'
AND
a.BBS_ID NOT IN (
SELECT
BBS_ID
FROM
TB_BBS_PRCUSE_INFO
WHERE
USE_AT = 'Y'
)
<if test="searchCnd == 0">
AND
a.BBS_NM LIKE CONCAT ('%', #{searchWrd},'%')
</if>
<if test="searchCnd == 1">
AND
b.CD_NM LIKE CONCAT ('%', #{searchWrd},'%')
</if>
</select>
<!-- 게시판마스터 useAt 수정 -->
<update id="updateBBSMasterInf_USEAT" parameterType="java.util.LinkedHashMap">
UPDATE
TB_BBS_MASTR_INFO
SET
USE_AT = #{useAt}
, LAST_UPDR_ID = #{lastUpdusrId}
, LAST_UPD_DTM = SYSDATE()
WHERE
BBS_ID = #{bbsId}
</update>
</mapper>