
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">
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : 게시판 내용 관련
-->
<mapper namespace="com.takensoft.cms.bbs.dao.BbsCnDAO">
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : (미사용)게시판 내용 아이디 중복 확인
-->
<select id="bbsCnIdCheck" resultType="boolean">
SELECT COUNT(bbs_id)
FROM bbs_cn
WHERE bbs_id = #{bbsId}
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : 게시판 내용 등록
-->
<insert id="save" parameterType="BbsCnVO">
INSERT INTO bbs_cn (
bbs_id
, bbs_mng_id
, bbs_nm
, bbs_cn
, inq_cnt
, atch_file_mng_id
, img_file_mng_id
, ntc_pst_yn
, ntc_bgng_dt
, ntc_end_dt
, prvt_pst_yn
, ans_bbs_id
, ans_cn
, ans_grd
, ans_sn
, ans_stts
, vdo_url
, use_yn
, rgtr
, reg_dt
, bbs_cn_txt
) VALUES (
#{bbsId}
, #{bbsMngId}
, #{bbsNm}
, #{bbsCn}
, #{inqCnt}
, #{atchFileMngId}
, #{imgFileMngId}
, #{ntcPstYn}
, #{ntcBgngDt}::TIMESTAMP
, #{ntcEndDt}::TIMESTAMP
, #{prvtPstYn}
, #{ansBbsId}
, #{ansCn}
, #{ansGrd}
, #{ansSn}
, #{ansStts}
, #{vdoUrl}
, 'Y'
, #{rgtr}
, NOW()
, #{bbsCnTxt}
)
</insert>
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : 게시판 내용 SQL
-->
<sql id="selectBbsCn">
SELECT
bbs_id
, bbs_mng_id
, bbs_nm
, bbs_cn
, inq_cnt
, atch_file_mng_id
, img_file_mng_id
, ntc_pst_yn
, ntc_bgng_dt
, ntc_end_dt
, prvt_pst_yn
, ans_bbs_id
, ans_cn
, ans_grd
, ans_sn
, ans_stts
, answr
, mi3.mbr_nm AS answer_nm
, to_char(bc.ans_dt, 'YYYY-MM-DD HH24:MI') AS ans_dt
, vdo_url
, bc.use_yn
, bc.rgtr
, to_char(bc.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
, mi.mbr_nm AS rgtr_nm
, bc.mdfr
, to_char(bc.mdfcn_dt, 'YYYY-MM-DD HH24:MI') AS mdfcn_dt
, mi2.mbr_nm AS mdfr_nm
, bbs_cn_txt
FROM bbs_cn bc
LEFT JOIN
mbr_info mi
ON
bc.rgtr = mi.mbr_id
LEFT JOIN
mbr_info mi2
ON
bc.mdfr = mi2.mbr_id
LEFT JOIN
mbr_info mi3
ON
bc.mdfr = mi3.mbr_id
</sql>
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : 게시판 내용 SQL
-->
<sql id="selectBbsCnDetail">
SELECT
bbs_id
, bbs_mng_id
, bbs_nm
, bbs_cn
, inq_cnt
, atch_file_mng_id
, img_file_mng_id
, ntc_pst_yn
, ntc_bgng_dt
, ntc_end_dt
, prvt_pst_yn
, ans_bbs_id
, ans_cn
, ans_grd
, ans_sn
, ans_stts
, answr
, ans_dt
, vdo_url
, use_yn
, rgtr
, reg_dt
, mdfr
, mdfcn_dt
, bbs_cn_txt
</sql>
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : 게시판 내용 목록 조회 검색 조건 SQL
-->
<sql id="selectRequirement">
<if test="searchText != null and searchText != ''">
<choose>
<when test="searchType != null and searchType != ''">
<if test="searchType == 'bbsNm'">
AND bbs_nm LIKE '%' || #{searchText} || '%'
</if>
<if test="searchType == 'mbrNm'">
AND mi.mbr_nm LIKE '%' || #{searchText} || '%'
</if>
<if test="searchType == 'bbsCn'">
AND bbs_cn_txt LIKE '%' || #{searchText} || '%'
</if>
<if test="searchType == 'ansCn'">
AND ans_cn LIKE '%' || #{searchText} || '%'
</if>
</when>
<otherwise>
AND (
bbs_nm LIKE '%' || #{searchText} || '%'
OR mi.mbr_nm LIKE '%' || #{searchText} || '%'
OR bbs_cn_txt LIKE '%' || #{searchText} || '%'
OR ans_cn LIKE '%' || #{searchText} || '%'
)
</otherwise>
</choose>
</if>
</sql>
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : 게시판 내용 목록 조회 개수
-->
<select id="findAllCnt" parameterType="Pagination" resultType="Integer">
SELECT COUNT(bbs_id)
FROM bbs_cn bc
LEFT JOIN
mbr_info mi
ON
bc.rgtr = mi.mbr_id
LEFT JOIN
mbr_info mi2
ON
bc.mdfr = mi2.mbr_id
WHERE bc.use_yn = 'Y'
AND bc.bbs_mng_id = #{id}
<include refid="selectRequirement" />
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : 게시판 내용 목록 조회
-->
<select id="findAllsub" parameterType="Pagination" resultType="BbsCnVO">
<include refid="selectBbsCn" />
WHERE bc.use_yn = 'Y'
AND bc.bbs_mng_id = #{id}
<include refid="selectRequirement" />
ORDER BY bbs_id DESC
OFFSET #{limitStart} LIMIT #{recordSize}
</select>
<select id="findAll" parameterType="Pagination" resultType="BbsCnVO">
select bbs_id
, bbs_mng_id
, bbs_nm
, bbs_cn
, inq_cnt
, atch_file_mng_id
, img_file_mng_id
, ntc_pst_yn
, ntc_bgng_dt
, ntc_end_dt
, prvt_pst_yn
, ans_bbs_id
, ans_cn
, ans_grd
, ans_sn
, ans_stts
, answr
, mi3.mbr_nm AS answer_nm
, to_char(bc.ans_dt, 'YYYY-MM-DD HH24:MI') AS ans_dt
, vdo_url
, bc.use_yn
, bc.rgtr
, to_char(bc.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
, bc.mdfr
, to_char(bc.mdfcn_dt, 'YYYY-MM-DD HH24:MI') AS mdfcn_dt
, bc.now_ntc_yn
, mi.mbr_nm AS rgtr_nm
, mi2.mbr_nm AS mdfr_nm
, cf.abslt_path AS abslt_path
, bbs_cn_txt
from( SELECT bbs_id
, bbs_mng_id
, bbs_nm
, bbs_cn
, inq_cnt
, atch_file_mng_id
, img_file_mng_id
, ntc_pst_yn
, ntc_bgng_dt
, ntc_end_dt
, prvt_pst_yn
, ans_bbs_id
, ans_cn
, ans_grd
, ans_sn
, ans_stts
, answr
, ans_dt
, vdo_url
, use_yn
, rgtr
, reg_dt
, mdfr
, mdfcn_dt
, 'Y' as now_ntc_yn
, bbs_cn_txt
from bbs_cn bc
WHERE use_yn = 'Y'
AND ntc_pst_yn = 'Y'
<![CDATA[ AND ntc_bgng_dt <= CURRENT_TIMESTAMP AND ntc_end_dt >= CURRENT_TIMESTAMP ]]>
union all
SELECT bbs_id
, bbs_mng_id
, bbs_nm
, bbs_cn
, inq_cnt
, atch_file_mng_id
, img_file_mng_id
, ntc_pst_yn
, ntc_bgng_dt
, ntc_end_dt
, prvt_pst_yn
, ans_bbs_id
, ans_cn
, ans_grd
, ans_sn
, ans_stts
, answr
, ans_dt
, vdo_url
, use_yn
, rgtr
, reg_dt
, mdfr
, mdfcn_dt
, 'N' as now_ntc_yn
, bbs_cn_txt
from bbs_cn bc
WHERE use_yn = 'Y'
<![CDATA[ and (ntc_pst_yn ='N' or ntc_bgng_dt > CURRENT_TIMESTAMP or ntc_end_dt < CURRENT_TIMESTAMP) ]]>
)as bc
LEFT JOIN mbr_info mi
ON bc.rgtr = mi.mbr_id
LEFT JOIN mbr_info mi2
ON bc.mdfr = mi2.mbr_id
LEFT JOIN mbr_info mi3
ON bc.answr = mi3.mbr_id
LEFT JOIN (
SELECT cf2.file_id
, cf2.file_mng_id
, cf2.abslt_path
FROM com_file cf2
INNER JOIN (
SELECT file_mng_id
, MIN(file_id) AS min_id
FROM com_file
GROUP BY file_mng_id
) AS cf_min
ON cf2.file_id = cf_min.min_id
) AS cf
ON bc.img_file_mng_id = cf.file_mng_id
WHERE bbs_mng_id = #{id}
<include refid="selectRequirement" />
ORDER BY bc.now_ntc_yn DESC, bc.reg_dt DESC
OFFSET #{limitStart} LIMIT #{recordSize}
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : 게시판 내용 상세 조회
-->
<select id="findByBbsId" parameterType="String" resultType="BbsCnVO">
<include refid="selectBbsCn" />
WHERE bc.bbs_id = #{bbsId}
AND bc.use_yn = 'Y'
</select>
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : 게시판 내용 수정
-->
<update id="update" parameterType="HashMap">
UPDATE
bbs_cn
SET
bbs_nm = #{bbsNm}
, bbs_cn = #{bbsCn}
, inq_cnt = #{inqCnt}
, atch_file_mng_id = #{atchFileMngId}
, img_file_mng_id = #{imgFileMngId}
, ntc_pst_yn = #{ntcPstYn}
, ntc_bgng_dt = #{ntcBgngDt}::TIMESTAMP
, ntc_end_dt = #{ntcEndDt}::TIMESTAMP
, prvt_pst_yn = #{prvtPstYn}
, ans_bbs_id = #{ansBbsId}
, ans_cn = #{ansCn}
, ans_grd = #{ansGrd}
, ans_sn = #{ansSn}
, ans_stts = #{ansStts}
, vdo_url = #{vdoUrl}
, use_yn = #{useYn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
, bbs_cn_txt = #{bbsCnTxt}
WHERE bbs_id = #{bbsId}
</update>
<!--
작 성 자 : 하석형
작 성 일 : 2024.05.09
내 용 : 게시판 내용 삭제
-->
<update id="delete" parameterType="BbsCnVO">
UPDATE
bbs_cn
SET
use_yn = 'N'
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE bbs_id = #{bbsId}
</update>
<!--
작 성 자 : 방선주
작 성 일 : 2024.05.22
내 용 : 조회수 증가 로직
-->
<update id="updateVwCnt" parameterType="String">
UPDATE
bbs_cn
SET
inq_cnt = inq_cnt + 1
WHERE bbs_id = #{bbsId}
</update>
<!--
작 성 자 : 방선주
작 성 일 : 2024.05.23
내 용 : 이전글
-->
<select id="findPrevBbsCn" parameterType="BbsCnVO" resultType="BbsCnVO">
<include refid="selectBbsCnDetail"/>
FROM bbs_cn
WHERE use_yn = 'Y'
AND bbs_mng_id = #{bbsMngId}
<![CDATA[ AND bbs_id < #{bbsId} ]]>
ORDER BY bbs_id DESC
LIMIT 1
</select>
<!--
작 성 자 : 방선주
작 성 일 : 2024.05.23
내 용 : 다음글
-->
<select id="findNextBbsCn" parameterType="BbsCnVO" resultType="BbsCnVO">
<include refid="selectBbsCnDetail"/>
FROM bbs_cn
WHERE use_yn = 'Y'
AND bbs_mng_id = #{bbsMngId}
<![CDATA[ AND bbs_id > #{bbsId} ]]>
ORDER BY bbs_id ASC
LIMIT 1
</select>
<!--
작 성 자 : 박정하
작 성 일 : 2024.05.28
내 용 : 게시글 최신 목록 조회 (최신글 5건 출력)
-->
<select id="selectBbsCnListByNew" resultType="HashMap">
SELECT bc.bbs_mng_id as mng_id
, bc.bbs_id as id
, btm.bbs_type AS type
, bm.bbs_nm AS nm
, bc.bbs_nm AS ttl
, bc.bbs_cn AS cn
, bc.ans_cn AS ans
, (SELECT mi.mbr_nm FROM mbr_info AS mi WHERE mi.mbr_id = bc.rgtr) AS writer
, TO_CHAR(bc.reg_dt, 'YYYY-MM-DD HH24:MI') AS dt
FROM bbs_cn AS bc
LEFT JOIN bbs_mng AS bm
ON bc.bbs_mng_id = bm.bbs_mng_id
AND bm.use_yn = 'Y'
LEFT JOIN bbs_type_mng AS btm
ON bm.bbs_type_id = btm.bbs_type_id
AND btm.use_yn = 'Y'
WHERE bc.use_yn = 'Y'
ORDER BY bc.reg_dt DESC
LIMIT 5
</select>
<!--
작 성 자 : 방선주
작 성 일 : 2024.06.04
내 용 : 질의형 게시판 답변
-->
<update id="saveAnswer" parameterType="BbsCnVO">
UPDATE
bbs_cn
SET ans_cn = #{ansCn}
, ans_stts = #{ansStts}
, answr = #{answr}
, ans_dt = now()
WHERE bbs_id = #{bbsId};
</update>
<!--
작 성 자 : 방선주
작 성 일 : 2024.06.13
내 용 : 최근공지 5개 조회
-->
<select id="findFiveNotice" resultType="BbsCnVO">
SELECT bbs_id
, bbs_mng_id
, bbs_nm
, bbs_cn
, inq_cnt
, atch_file_mng_id
, img_file_mng_id
, ntc_pst_yn
, ntc_bgng_dt
, ntc_end_dt
, prvt_pst_yn
, ans_bbs_id
, ans_cn
, ans_grd
, ans_sn
, ans_stts
, answr
, ans_dt
, vdo_url
, use_yn
, rgtr
, TO_CHAR(reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
, mdfr
, TO_CHAR(mdfcn_dt, 'YYYY-MM-DD HH24:MI') AS mdfcn_dt
FROM bbs_cn
WHERE use_yn = 'Y'
AND bbs_mng_id = #{bbsMngId}
ORDER BY bbs_id DESC
LIMIT 5
</select>
</mapper>