
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
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
) VALUES (
#{bbsId}
, #{bbsMngId}
, #{bbsNm}
, #{bbsCn}
, #{inqCnt}
, #{atchFileMngId}
, #{imgFileMngId}
, #{ntcPstYn}
, #{ntcBgngDt}::TIMESTAMP
, #{ntcEndDt}::TIMESTAMP
, #{prvtPstYn}
, #{ansBbsId}
, #{ansCn}
, #{ansGrd}
, #{ansSn}
, #{ansStts}
, #{vdoUrl}
, 'Y'
, #{rgtr}
, NOW()
)
</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
, answer
, 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
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
, answer
, ans_dt
, vdo_url
, use_yn
, rgtr
, reg_dt
, mdfr
, mdfcn_dt
</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 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 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
, answer
, 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
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
, answer
, ans_dt
, vdo_url
, use_yn
, rgtr
, reg_dt
, mdfr
, mdfcn_dt
, 'Y' as now_ntc_yn
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
, answer
, ans_dt
, vdo_url
, use_yn
, rgtr
, reg_dt
, mdfr
, mdfcn_dt
, 'N' as now_ntc_yn
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.answer = mi3.mbr_id
LEFT JOIN (
SELECT cf2.file_id
, cf2.file_mng_id
, cf2.abslt_path
FROM cmmn_file cf2
INNER JOIN (
SELECT file_mng_id
, MIN(file_id) AS min_id
FROM cmmn_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()
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}
, answer = #{answer}
, 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
, answer
, 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>