merge master into develop - CscListRForm.jsp FAQ 아코디언 버그 수정

This commit is contained in:
jilee4unity
2026-05-28 23:34:06 +09:00
7250 changed files with 570509 additions and 25 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,369 @@
<?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">
<mapper namespace="com.wb.domainserver.domain.gcone.bbs.cm.mapper.BOCmMapper">
<!-- 댓글 목록 조회 -->
<select id = "selectBOBCmListCnt"
parameterType="com.wb.domainserver.domain.gcone.bbs.cm.vo.BOCmVO"
resultType="Integer">
<![CDATA[
SELECT
COUNT(1)
FROM
GC_BOARDCOMMENT FBC
WHERE 1 = 1
AND FBC.DEPTH = 0
AND FBC.SOPMAL_CD = #{sopmalCd}
AND (FBC.USE_AT = 'Y' OR (FBC.USE_AT = 'N' && 0 < (SELECT
COUNT(FBC2.CM_INNB)
FROM
GC_BOARDCOMMENT FBC2
WHERE
1 = 1
AND FBC2.USE_AT = 'Y'
AND FBC2.DEPTH = 1
AND FBC2.PARNTS_CM_INNB = FBC.CM_INNB
AND FBC2.SOPMAL_CD = FBC.SOPMAL_CD
AND FBC2.BBSCTT_INNB = FBC.BBSCTT_INNB
LIMIT 1)))
AND FBC.BBSCTT_INNB = #{bbscttInnb}
]]>
</select>
<!-- 댓글 목록 조회 -->
<select id = "selectBOCmListInqire"
parameterType="com.wb.domainserver.domain.gcone.bbs.cm.vo.BOCmVO"
resultType="DataMap">
<![CDATA[
SELECT FBC.CM_INNB
, FBC.BBSCTT_INNB
, FBC.PARNTS_CM_INNB
, FBC.SOPMAL_CD
, FBC.CN
, FBC.SECRET_BBSCTT_AT
, FBC.USE_AT
, FBC.REGUSR_DV_CD
, FBC.IP
, FBC.PASSWORD
, FBC.DEPTH
, FBC.REGUSR
, FBC.REGUSR_ID
, FBC.REGUSR_NM
, DATE_FORMAT(FBC.REGIST_DT, '%Y.%m.%d. %H:%i') REGIST_DT
, CONCAT(SUBSTRING(FBC.REGUSR_ID, 1, 4), '***') MASKING_REGUSR_ID
, CONCAT(SUBSTRING(FBC.REGUSR_NM, 1, 1), '*',
SUBSTRING(FBC.REGUSR_NM, CHAR_LENGTH(FBC.REGUSR_NM), 1)) MASKING_REGUSR_NM
, IFNULL(FBC.RECOMEND_CNT, 0) RECOMEND_CNT
, IFNULL(FBC.NONRECOMEND_CNT, 0) NONRECOMEND_CNT
, CASE
WHEN DATE_ADD(FBC.REGIST_DT, INTERVAL FBM.NEW_NTT_STDR_DE_CNT DAY) > SYSDATE() THEN 'Y'
ELSE 'N'
END NEW_AT
, FBM.WRTER_INDICT_TY_CD
, IFNULL(FBM.MNGR_NM, '관리자') AS MNGR_NM
, FMG.MBR_GRAD_NM
, GM.JOIN_MTH_CD
, GM.MBR_DV_CD
, GM.MBR_INNB
FROM GC_BOARDCOMMENT FBC
INNER JOIN GC_BOARDDATA FB
ON FBC.BBSCTT_INNB = FB.BBSCTT_INNB
AND FBC.SOPMAL_CD = FB.SOPMAL_CD
INNER JOIN GC_BOARDMANAGER FBM
ON FB.BBS_ID = FBM.BBS_ID
AND FBM.SOPMAL_CD = FBC.SOPMAL_CD
LEFT JOIN GC_MEMBER_GRAD_MAPPING FMGM
ON FBC.SOPMAL_CD = FMGM.SOPMAL_CD
AND FBC.REGUSR = FMGM.MBR_INNB
LEFT JOIN GC_MEMBER GM
ON GM.MBR_DV_CD = FMGM.MBR_DV_CD
AND GM.MBR_INNB = FMGM.MBR_INNB
LEFT JOIN GC_MEMBER_GRAD FMG
ON FMGM.MBR_GRAD_INNB = FMG.MBR_GRAD_INNB
AND FMG.SOPMAL_CD = FBC.SOPMAL_CD
WHERE 1=1
AND FBC.DEPTH = 0
AND (FBC.USE_AT = 'Y' OR (FBC.USE_AT = 'N' && 0 < (SELECT
COUNT(FBC2.CM_INNB)
FROM
GC_BOARDCOMMENT FBC2
WHERE
1 = 1
AND FBC2.USE_AT = 'Y'
AND FBC2.DEPTH = 1
AND FBC2.PARNTS_CM_INNB = FBC.CM_INNB
AND FBC2.SOPMAL_CD = FBC.SOPMAL_CD
AND FBC2.BBSCTT_INNB = FBC.BBSCTT_INNB
LIMIT 1)))
AND FBC.SOPMAL_CD = #{sopmalCd}
AND FBC.BBSCTT_INNB = #{bbscttInnb}
ORDER BY FBC.CM_INNB DESC
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
]]>
</select>
<!-- 대댓글 목록 조회 -->
<select id = "selectBOCmAnswListInqire"
parameterType="com.wb.domainserver.domain.gcone.bbs.cm.vo.BOCmVO"
resultType="DataMap">
SELECT FBC.CM_INNB
,FBC.BBSCTT_INNB
,FBC.SOPMAL_CD
,FBC.CN
,DATE_FORMAT(FBC.REGIST_DT,'%Y-%m-%d')REGIST_DT
,CONCAT(SUBSTRING(FBC.REGUSR_ID, 1, 4), '***')MASKING_REGUSR_ID
,CONCAT(SUBSTRING(FBC.REGUSR_NM, 1, 1),'*',SUBSTRING(FBC.REGUSR_NM,CHAR_LENGTH(FBC.REGUSR_NM),1))MASKING_REGUSR_NM
,FBC.PARNTS_CM_INNB
,FBC.SECRET_BBSCTT_AT
,FBC.USE_AT
,FBC.REGUSR_DV_CD
,FBC.IP
,FBC.PASSWORD
,FBC.DEPTH
,FBC.REGUSR
,FBC.REGUSR_ID
,FBC.REGUSR_NM
,IFNULL(FBC.RECOMEND_CNT, 0) RECOMEND_CNT
,IFNULL(FBC.NONRECOMEND_CNT, 0) NONRECOMEND_CNT
,CASE
WHEN DATE_ADD(FBC.REGIST_DT, INTERVAL FBM.NEW_NTT_STDR_DE_CNT DAY) > SYSDATE() THEN 'Y'
ELSE 'N'
END NEW_AT
,FBM.WRTER_INDICT_TY_CD
,FBM.MNGR_NM
,FMG.MBR_GRAD_NM
,GM.JOIN_MTH_CD
,GM.MBR_DV_CD
,GM.MBR_INNB
FROM GC_BOARDCOMMENT FBC
INNER JOIN GC_BOARDDATA FB
ON FBC.BBSCTT_INNB = FB.BBSCTT_INNB
AND FBC.SOPMAL_CD = FB.SOPMAL_CD
INNER JOIN GC_BOARDMANAGER FBM
ON FB.BBS_ID = FBM.BBS_ID
AND FBM.SOPMAL_CD = FBC.SOPMAL_CD
LEFT JOIN GC_MEMBER_GRAD_MAPPING FMGM
ON FBC.SOPMAL_CD = FMGM.SOPMAL_CD
AND FBC.REGUSR = FMGM.MBR_INNB
LEFT JOIN GC_MEMBER GM
ON GM.MBR_DV_CD = FMGM.MBR_DV_CD
AND GM.MBR_INNB = FMGM.MBR_INNB
LEFT JOIN GC_MEMBER_GRAD FMG
ON FMGM.MBR_GRAD_INNB = FMG.MBR_GRAD_INNB
AND FMG.SOPMAL_CD = FBC.SOPMAL_CD
WHERE 1=1
AND FBC.DEPTH = 1
AND FBC.USE_AT = 'Y'
AND FBC.SOPMAL_CD = #{sopmalCd}
AND FBC.PARNTS_CM_INNB IN
<foreach collection="cmInnbArr" item="cmInnbArr" open="(" close=")" separator=",">
#{cmInnbArr}
</foreach>
AND FBC.BBSCTT_INNB = #{bbscttInnb}
</select>
<select id="selectBOCmWrter" parameterType="com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.vo.BOGnrlbbscttVO"
resultType="dataMap">
SELECT
CONCAT(SUBSTRING(BB.REGUSR_ID, 1, 3), REPEAT('*', CHAR_LENGTH(BB.REGUSR_ID) - 3))MNGR_REGUSR_ID,
BB.REGUSR_ID,
BB.REGUSR,
BB.MBR_GRAD_NM,
CONCAT(SUBSTRING(BB.REGUSR_NM, 1, 1), REPEAT('*', CHAR_LENGTH(BB.REGUSR_NM) - 2),SUBSTRING(BB.REGUSR_NM,CHAR_LENGTH(BB.REGUSR_NM),1))REGUSR_NM,
BB.WRTER_INDICT_TY_CD,
BB.MNGR_NM,
BB.REGUSR_DV_CD
FROM(SELECT
AA.*,
(SELECT
BB.MBR_GRAD_NM
FROM
(SELECT
FMG.MBR_GRAD_NM
FROM
GC_MEMBER_GRAD_MAPPING FMGMG
LEFT OUTER JOIN GC_MEMBER_GRAD FMG
on FMGMG.MBR_GRAD_INNB = FMG.MBR_GRAD_INNB
AND FMGMG.SOPMAL_CD = FMG.SOPMAL_CD
WHERE FMGMG.SOPMAL_CD= AA.SOPMAL_CD
AND FMGMG.MBR_INNB = AA.REGUSR)BB) AS MBR_GRAD_NM
FROM
(SELECT FBC.REGUSR_DV_CD
,FBC.REGUSR_NM
,FBC.REGUSR_ID
,FBC.REGUSR
,FBC.SOPMAL_CD
,FBC.DEPTH
,FBM.WRTER_INDICT_TY_CD
,IFNULL(FBM.MNGR_NM,'관리자')MNGR_NM
FROM
GC_BOARDCOMMENT FBC
INNER JOIN GC_BOARDDATA FB
ON FBC.SOPMAL_CD = FB.SOPMAL_CD
AND FBC.BBSCTT_INNB = FB.BBSCTT_INNB
INNER JOIN GC_BOARDMANAGER FBM
ON FB.SOPMAL_CD = FBM.SOPMAL_CD
AND FB.BBS_ID = FBM.BBS_ID
WHERE 1 = 1
AND FBC.CM_INNB = #{cmInnbInt}
AND FB.SOPMAL_CD = #{sopmalCd})AA
)BB
</select>
<!-- 게시글 상세 조회 가능 여부 판단 -->
<select id="selectBOCmRegusrCnfirm"
parameterType="com.wb.domainserver.domain.gcone.bbs.cm.vo.BOCmVO"
resultType="dataMap">
SELECT
CASE
WHEN GB.SECRET_BBSCTT_AT = 'N' AND GB.REGUSR_DV_CD = '01'
<if test = "!@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(crudDv, 'R')"> /* 수정, 삭제일 경우 */
AND GB.REGUSR = #{mbrInnb}
</if> THEN 'YES' /* 회원이 쓴 글이고 작성자가 본인일 시 */
<if test = "!@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(crudDv, 'R')"> /* 회원이 쓴 글이고 작성자가 본인이 아닐 시 (수정, 삭제시) */
WHEN GB.SECRET_BBSCTT_AT = 'N' AND GB.REGUSR_DV_CD = '01' AND GB.REGUSR <![CDATA[<>]]> #{mbrInnb} AND 0 <![CDATA[<]]> #{mbrInnb} THEN 'OTHER'
WHEN GB.SECRET_BBSCTT_AT = 'N' AND GB.REGUSR_DV_CD = '01' AND 0 = #{mbrInnb} THEN 'LOGIN' /* 회원이 쓴 글이고 접속자가 비회원일 경우 로그인 유도 */
</if>
<choose>
<when test="!@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(crudDv, 'R')">
WHEN GB.SECRET_BBSCTT_AT = 'N' AND GB.REGUSR_DV_CD = '02' THEN 'PW' /* 관리자가 쓴 글 */
WHEN GB.SECRET_BBSCTT_AT = 'N' AND GB.REGUSR_DV_CD = '99' THEN 'PW' /* 비회원 수정, 삭제일 경우 */
</when>
<otherwise>
WHEN GB.SECRET_BBSCTT_AT = 'N' AND GB.REGUSR_DV_CD = '02' THEN 'YES' /* 관리자가 쓴 글 */
WHEN GB.SECRET_BBSCTT_AT = 'N' AND GB.REGUSR_DV_CD = '99' THEN 'YES' /* 비회원 읽기 일 경우 */
</otherwise>
</choose>
WHEN GB.SECRET_BBSCTT_AT = 'Y' AND GB.REGUSR_DV_CD <![CDATA[<>]]> '01' THEN 'PW' /* 작성자 구분이 회원이 아닐경우 비밀번호 입력 */
WHEN GB.SECRET_BBSCTT_AT = 'Y' AND GB.REGUSR_DV_CD = '01' AND GB.REGUSR = #{mbrInnb} THEN 'YES' /* 회원이 쓴 글이고 작성자가 본인인 경우 */
WHEN GB.SECRET_BBSCTT_AT = 'Y' AND GB.REGUSR_DV_CD = '01' AND GB.REGUSR <![CDATA[<>]]> #{mbrInnb} AND 0 <![CDATA[<]]> #{mbrInnb} THEN 'OTHER' /* 회원이 쓴 글이고 작성자가 본인이 아니고 현재 접속자가 회원인 경우 */
WHEN GB.SECRET_BBSCTT_AT = 'Y' AND GB.REGUSR_DV_CD = '01' AND 0 = #{mbrInnb} THEN 'LOGIN' /* 회원이 쓴 글이고 접속자가 비회원일 경우 로그인 유도 */
END MOVE_AT
FROM GC_BOARDCOMMENT GB
WHERE GB.BBSCTT_INNB = #{bbscttInnb}
AND GB.SOPMAL_CD = #{sopmalCd}
AND GB.CM_INNB = #{cmInnb}
</select>
<!-- 댓글 조회 -->
<select id="selectBOCmCn" parameterType="com.wb.domainserver.domain.gcone.bbs.cm.vo.BOCmVO"
resultType="dataMap">
SELECT FBC.CN
,FBC.CM_INNB
,FBC.PASSWORD
,FBC.SECRET_BBSCTT_AT
,IFNULL(FBC.RECOMEND_CNT,0)RECOMEND_CNT
,IFNULL(FBC.NONRECOMEND_CNT,0)NONRECOMEND_CNT
,FBC.REGUSR_NM
FROM GC_BOARDCOMMENT FBC
WHERE FBC.BBSCTT_INNB = #{bbscttInnb}
AND FBC.SOPMAL_CD = #{sopmalCd}
AND FBC.CM_INNB = #{cmInnb}
</select>
<!-- 댓글 등록 -->
<insert id="insertBOCmRegist">
INSERT INTO GC_BOARDCOMMENT (
SOPMAL_CD,
BBSCTT_INNB,
PARNTS_CM_INNB,
REGUSR_DV_CD,
REGUSR_ID,
REGUSR_NM,
DEPTH,
PASSWORD,
CN,
SECRET_BBSCTT_AT,
INQIRE_CNT,
RECOMEND_CNT,
NONRECOMEND_CNT,
AGENT_ID,
IP,
USE_AT,
REGUSR,
REGIST_DT,
UPDUSR,
UPDT_DT
)
VALUES (
#{sopmalCd},
#{bbscttInnb},
#{parntsCmInnb},
#{regusrDvCd},
#{regusrId},
#{regusrNm},
#{depth},
MD5(#{password}),
#{cn},
#{secretBbscttAt},
0,
0,
0,
#{agentId},
#{ip},
'Y',
#{regusr},
NOW(),
#{updusr},
NOW()
)
</insert>
<!-- 댓글 수정 -->
<update id="updateBOCmUpdt" parameterType="com.wb.domainserver.domain.gcone.bbs.cm.vo.BOCmVO">
UPDATE GC_BOARDCOMMENT
SET CN = #{cn},
UPDUSR = #{updusr},
UPDT_DT = NOW(),
SECRET_BBSCTT_AT = #{secretBbscttAt}
WHERE CM_INNB = #{cmInnb}
AND BBSCTT_INNB = #{bbscttInnb}
AND SOPMAL_CD = #{sopmalCd}
</update>
<!-- 댓글 논리삭제 -->
<update id="updateBOCmDel" parameterType="DataMap">
UPDATE GC_BOARDCOMMENT
SET USE_AT = #{useAt},
UPDUSR = #{updusr},
UPDT_DT = NOW()
WHERE BBSCTT_INNB = #{bbscttInnb}
AND SOPMAL_CD = #{sopmalCd}
AND CM_INNB = #{cmInnb}
</update>
<!-- 비밀번호 체크 -->
<select id = "selectBOComparPassword" parameterType="com.wb.domainserver.domain.gcone.bbs.cm.vo.BOCmVO"
resultType="Integer">
SELECT COUNT(*)
FROM GC_BOARDCOMMENT FB
WHERE 1=1
AND FB.PASSWORD = MD5(#{password})
AND FB.CM_INNB = #{cmInnb}
AND FB.SOPMAL_CD = #{sopmalCd}
</select>
<!--추천 비추천 업데이트-->
<update id="updateBOCmRecomendUpdt" parameterType="com.wb.domainserver.domain.gcone.bbs.cm.vo.BOCmVO">
UPDATE GC_BOARDCOMMENT FBC, (
SELECT
IFNULL(MAX(RECOMEND_CNT), 0) + 1 AS RECOMEND_CNT
,IFNULL(MAX(NONRECOMEND_CNT), 0) + 1 AS NONRECOMEND_CNT
,BBSCTT_INNB
,SOPMAL_CD
,CM_INNB
FROM
GC_BOARDCOMMENT
WHERE
1 = 1
AND BBSCTT_INNB = #{bbscttInnb}
AND SOPMAL_CD = #{sopmalCd}
AND CM_INNB = #{cmInnb})FBC2
SET
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(recomendDv, 'recommend')">
FBC.RECOMEND_CNT = FBC2.RECOMEND_CNT
</if>
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(recomendDv, 'nonrecommend')">
FBC.NONRECOMEND_CNT = FBC2.NONRECOMEND_CNT
</if>
WHERE 1=1
AND FBC.BBSCTT_INNB = #{bbscttInnb}
AND FBC.SOPMAL_CD = #{sopmalCd}
AND FBC.CM_INNB = #{cmInnb}
</update>
</mapper>

View File

@@ -0,0 +1,348 @@
<?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">
<mapper namespace="com.wb.domainserver.domain.gcone.bbs.cnslt.mapper.BOCnsltMapper">
<!-- 상담 목록 조회 WHERE 절 -->
<sql id="cnsltListInqireWhere">
WHERE 1=1
AND CNSLT.SOPMAL_CD = #{sopmalCd}
<!-- 검색어 -->
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchKeyword)">
<choose>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchKeywordDv, 'keywordName')">
AND MBR.MBR_NM LIKE CONCAT('%', #{srchKeyword}, '%')
</when>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchKeywordDv, 'keywordId')">
AND MBR.MBR_ID LIKE CONCAT('%', #{srchKeyword}, '%')
</when>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchKeywordDv, 'keywordPhone')">
AND CNSLT.TELNB = HEX(AES_ENCRYPT(REPLACE(#{srchKeyword},'-',''), #{secretKey}))
</when>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchKeywordDv)">
AND (
MBR.MBR_NM LIKE CONCAT('%', #{srchKeyword}, '%')
OR MBR.MBR_ID LIKE CONCAT('%', #{srchKeyword}, '%')
OR CNSLT.TELNB = HEX(AES_ENCRYPT(REPLACE(#{srchKeyword},'-',''), #{secretKey}))
OR MBR.EMAIL LIKE CONCAT('%', #{srchKeyword}, '%')
)
</when>
</choose>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchMngrNm)">
AND CNSLT.MNGR_NM LIKE CONCAT('%', #{srchMngrNm}, '%')
</if>
<!-- 처리 상태 -->
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchProcsSttusCd)">
AND CNSLT.PROCS_STTUS_CD IN
<foreach collection="srchProcsSttusCd" item="srchProcsSttusCd" open="(" close=")" separator=",">
#{srchProcsSttusCd}
</foreach>
</if>
<!-- 등록일 -->
<choose>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDtDv, 'cnstlDt')">
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStartDate)">
AND CNSLT.REGIST_DT <![CDATA[>=]]> #{srchStartDate} ' 00:00:00'
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndDate)">
AND CNSLT.REGIST_DT <![CDATA[<=]]> #{srchEndDate} ' 23:59:59'
</if>
</when>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDtDv, 'procsDt')">
<![CDATA[
AND CNSLT.PROCS_DT IS NOT NULL
]]>
<choose>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStartDate)
and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchEndDate)">
AND CNSLT.PROCS_DT BETWEEN #{srchStartDate} ' 00:00:00' AND SYSDATE()
</when>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchStartDate)
and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndDate)">
AND CNSLT.PROCS_DT <![CDATA[<]]> #{srchEndDate} ' 23:59:59'
</when>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStartDate)
and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndDate)">
AND CNSLT.PROCS_DT BETWEEN #{srchStartDate} ' 00:00:00' AND #{srchEndDate} ' 23:59:59'
</when>
</choose>
</when>
</choose>
<!-- 관련번호 -->
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchRelateNm)">
<choose>
<!-- 주문코드 -->
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchRelateDv, 'relateOrdrnb')">
AND CNSLT.ORDR_INNB = #{srchRelateNm}
</when>
<!-- 출고코드 -->
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchRelateDv, 'dlivyCd')">
AND CNSLT.DLIVY_CD_NB = #{srchRelateNm}
</when>
<!-- 환불코드 -->
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchRelateDv, 'refndCd')">
AND CNSLT.REFUND_CD_NB = #{srchRelateNm}
</when>
<!-- 상품문의 -->
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchRelateDv, 'relateGoodsInqry')">
AND CNSLT.GOODS_INQRY_BBSCTT_NB = #{srchRelateNm}
</when>
<!-- 컬럼추가후 '상품후기' 코드로 변경 -->
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchRelateDv, 'goodsRvwBbscttNb')">
AND CNSLT.GOODS_RVW_BBSCTT_NB = #{srchRelateNm}
</when>
</choose>
</if>
<!-- 상담내용 -->
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchCnsltCn)">
AND CNSLT.CNSLT_CN LIKE CONCAT('%', #{srchCnsltCn}, '%')
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mbrInnb)">
AND (CNSLT.MBR_DV_CD = #{mbrDvCd} AND CNSLT.MBR_INNB = #{mbrInnb} || CNSLT.TELNB = HEX(AES_ENCRYPT(REPLACE(
#{mbtlnb},'-',''), #{secretKey})))
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mbtlnb) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(mbrTyCd, '02')">
AND CNSLT.TELNB = HEX(AES_ENCRYPT(REPLACE(#{mbtlnb},'-',''), #{secretKey}))
AND CNSLT.MBR_INNB = 0
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(cnsltDtlsInnb)">
<![CDATA[
AND CNSLT.CNSLT_DTLS_INNB = #{cnsltDtlsInnb}
]]>
</if>
</sql>
<!-- 상담 목록 조회 FROM 절 -->
<sql id="cnsltListInqireFrom">
FROM GC_COUNSEL CNSLT
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(crmAt)">
LEFT JOIN GC_MEMBER MBR
ON CNSLT.MBR_INNB = MBR.MBR_INNB
AND CNSLT.MBR_DV_CD = MBR.MBR_DV_CD
LEFT JOIN GC_MEMBER_GRAD_MAPPING FMGM
ON FMGM.MBR_DV_CD = CNSLT.MBR_DV_CD
AND FMGM.SOPMAL_CD = CNSLT.SOPMAL_CD
AND FMGM.MBR_INNB = CNSLT.MBR_INNB
LEFT JOIN GC_MEMBER_GRAD FMG
ON FMG.SOPMAL_CD = CNSLT.SOPMAL_CD
AND FMGM.MBR_GRAD_INNB = FMG.MBR_GRAD_INNB
</if>
</sql>
<!-- 상담 목록 건수 조회 -->
<select id="selectBOCnsltListCnt"
parameterType="com.wb.domainserver.domain.gcone.bbs.cnslt.vo.BOCnsltVO"
resultType="java.lang.Integer">
<![CDATA[
SELECT COUNT(1)
]]>
<include refid="cnsltListInqireFrom"/>
<include refid="cnsltListInqireWhere"/>
</select>
<!-- 상담 목록 조회 with Pagination -->
<select id="selectBOCnsltListInqire"
parameterType="com.wb.domainserver.domain.gcone.bbs.cnslt.vo.BOCnsltVO"
resultType="dataMap">
SELECT *
FROM (
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM
,TB.*
,IF(TB.DLIVY_INFO IS NOT NULL,SUBSTRING_INDEX(TB.DLIVY_INFO,',',1),NULL) AS DLIVY_ORDR_INNB
,IF(TB.DLIVY_INFO IS NOT NULL,SUBSTRING_INDEX(TB.DLIVY_INFO,',',-1),NULL) AS DLIVY_INNB
,IF(TB.RETURN_REFUND_INFO IS NOT NULL,SUBSTRING_INDEX(TB.RETURN_REFUND_INFO,',',1),NULL) AS REFUND_ORDR_INNB
,IF(TB.RETURN_REFUND_INFO IS NOT NULL,SUBSTRING_INDEX(TB.RETURN_REFUND_INFO,',',-1),NULL) AS ORDER_REFUND_INNB
FROM (
SELECT
CNSLT.CNSLT_DTLS_INNB
,CNSLT.MBR_INNB
,CNSLT.MBR_DV_CD
,CNSLT.MNGR_INNB
,CNSLT.MNGR_NM
,CNSLT.ORDR_INNB
,CNSLT.DLIVY_CD_NB
,CNSLT.RETURN_CD_NB
,CNSLT.REFUND_CD_NB
,CNSLT.GOODS_INQRY_BBSCTT_NB
,CNSLT.GOODS_RVW_BBSCTT_NB
,CNSLT.PROCS_STTUS_CD
,CNSLT.CNSLT_CN
,CNSLT.TELNB_DV_CD
,CNSLT.LRGE_CL_CD
,CNSLT.MIDDL_CL_CD
,CNSLT.RECRD_KY
,CAST(AES_DECRYPT(UNHEX(CNSLT.TELNB) , #{secretKey}) AS CHAR(50)) AS TELNB
,CNSLT.REGUSR
,CNSLT.UPDUSR
,CNSLT.UPDT_DT
,DATE_FORMAT(CNSLT.PROCS_DT, '%Y-%m-%d %H:%i:%s') AS PROCS_DT
,DATE_FORMAT(CNSLT.REGIST_DT, '%Y-%m-%d %H:%i:%s') AS REGIST_DT
,fn_get_commcode_name('COUNSEL_PROCS_STTUS', PROCS_STTUS_CD) AS PROCS_STTUS_CD_NM
,fn_get_commcode_name('LRGE_CL', LRGE_CL_CD) AS LRGE_CL_NM
,fn_get_commcode_name(CONCAT('MIDDL_CL_',REPLACE(LRGE_CL_CD,'0','')), MIDDL_CL_CD) AS MIDDL_CL_NM
,CASE
WHEN IFNULL(CNSLT.DLIVY_CD_NB,'') <![CDATA[<>]]> ''
THEN (SELECT
CONCAT(GGE.ORDR_INNB, ',', GGE.DLIVY_INNB)
FROM
GC_GOODS_EXPORT GGE
WHERE GGE.SOPMAL_CD = CNSLT.SOPMAL_CD
AND GGE.DLIVY_CD_NB = CNSLT.DLIVY_CD_NB)
END DLIVY_INFO
,CASE
WHEN IFNULL(CNSLT.REFUND_CD_NB,'') <![CDATA[<>]]> ''
THEN (SELECT
CONCAT(GOR.ORDR_INNB,',',GOR.ORDER_REFUND_INNB)
FROM
GC_ORDER_REFUND GOR
WHERE
GOR.SOPMAL_CD = CNSLT.SOPMAL_CD
AND (GOR.REFUND_CD = CNSLT.REFUND_CD_NB
OR GOR.RETURN_CD = CNSLT.RETURN_CD_NB))
END RETURN_REFUND_INFO
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(crmAt)">
,MBR.MBR_ID
,MBR.MBR_NM
,MBR.JOIN_MTH_CD
,FMG.MBR_GRAD_NM AS GRAD_NM
</if>
<include refid="cnsltListInqireFrom"/>
<include refid="cnsltListInqireWhere"/>
ORDER BY CNSLT.REGIST_DT DESC
) TB
WHERE (@rownum:=0)=0
) PV
WHERE 1=1
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select>
<!-- 상담 상세 내역 조회 -->
<select id="selectBOCnsltDtlUpdtInqirePopup"
parameterType="com.wb.domainserver.domain.gcone.bbs.cnslt.vo.BOCnsltVO"
resultType="dataMap">
<![CDATA[
SELECT CNSLT.CNSLT_DTLS_INNB
, CNSLT.MBR_INNB
, CNSLT.MNGR_INNB
, CNSLT.MNGR_NM
, CNSLT.ORDR_INNB
, CNSLT.DLIVY_CD_NB
, CNSLT.RETURN_CD_NB
, CNSLT.REFUND_CD_NB
, CNSLT.GOODS_INQRY_BBSCTT_NB
, CNSLT.GOODS_RVW_BBSCTT_NB
, CNSLT.PROCS_STTUS_CD
, CNSLT.PROCS_DT
, CNSLT.CNSLT_CN
, CNSLT.TELNB_DV_CD
, CNSLT.LRGE_CL_CD
, CNSLT.MIDDL_CL_CD
, CNSLT.RECRD_KY
, CAST(AES_DECRYPT(UNHEX(CNSLT.TELNB), #{secretKey}) AS CHAR(50)) AS MBTLNB
, CNSLT.REGUSR
, DATE_FORMAT(CNSLT.REGIST_DT, '%Y-%m-%d') AS REGIST_DT
, CNSLT.UPDUSR
, CNSLT.UPDT_DT
FROM GC_COUNSEL CNSLT
WHERE CNSLT.CNSLT_DTLS_INNB = #{cnsltDtlsInnb}
AND CNSLT.SOPMAL_CD = #{sopmalCd}
]]>
</select>
<!-- 상담 수정 -->
<update id="updateBOCnsltUpdt">
<![CDATA[
UPDATE GC_COUNSEL SET
ORDR_INNB = #{ordrNb}
,DLIVY_CD_NB = #{dlivyInnb}
,RETURN_CD_NB = #{rtngudCdNb}
,REFUND_CD_NB = #{refndCdNb}
,GOODS_INQRY_BBSCTT_NB = #{goodsInqryBbscttNb}
,GOODS_RVW_BBSCTT_NB = #{goodsRvwBbscttNb}
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(procsSttusCd, '03')">
<![CDATA[
,PROCS_DT = SYSDATE()
]]>
</if>
<![CDATA[
,PROCS_STTUS_CD = #{procsSttusCd}
,CNSLT_CN = #{cnsltCn}
,UPDUSR = #{updusr}
,UPDT_DT = SYSDATE()
WHERE 1=1
AND CNSLT_DTLS_INNB = #{cnsltDtlsInnb} AND SOPMAL_CD = #{sopmalCd}
]]>
</update>
<!-- 상담 등록 -->
<insert id="insertBOCnsltRegist">
INSERT INTO GC_COUNSEL (
SOPMAL_CD,
MBR_INNB,
MBR_DV_CD,
MNGR_INNB,
MNGR_NM,
ORDR_INNB,
DLIVY_CD_NB,
RETURN_CD_NB,
REFUND_CD_NB,
GOODS_INQRY_BBSCTT_NB,
GOODS_RVW_BBSCTT_NB,
PROCS_STTUS_CD,
PROCS_DT,
CNSLT_CN,
TELNB_DV_CD,
LRGE_CL_CD,
MIDDL_CL_CD,
RECRD_KY,
TELNB,
REGUSR,
REGIST_DT,
UPDUSR,
UPDT_DT
)
SELECT #{sopmalCd},
IFNULL(#{mbrInnb}, 0),
IFNULL(#{mbrDvCd}, ''),
#{mngrInnb},
GM.MNGR_NM,
#{ordrNb},
#{dlivyInnb},
#{rtngudCdNb},
#{refndCdNb},
#{goodsInqryBbscttNb},
#{goodsRvwBbscttNb},
#{procsSttusCd},
<choose>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(procsSttusCd, '03')">
<![CDATA[
SYSDATE(),
]]>
</when>
<otherwise>
<![CDATA[
#{procsDt},
]]>
</otherwise>
</choose>
#{cnsltCn},
#{telnbDvCd},
#{lrgeCl},
#{middlCl},
#{customer_record_key},
HEX(AES_ENCRYPT(REPLACE(#{telnb},'-',''), #{secretKey})),
#{regusr},
SYSDATE(),
#{updusr},
SYSDATE()
FROM GC_MANAGER GM
WHERE MNGR_INNB = #{regusr}
</insert>
</mapper>

View File

@@ -0,0 +1,85 @@
<?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">
<mapper namespace="com.wb.domainserver.domain.gcone.bbs.prom.mapper.BOPromMapper">
<select id="selectPromInfo" parameterType="com.wb.domainserver.domain.gcone.bbs.prom.vo.BOPromVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
SELECT *
FROM GC_PROM
WHERE PROM_INNB = #{promInnb}
LIMIT 1
</select>
<select id="selectPromJoinInfo" parameterType="com.wb.domainserver.domain.gcone.bbs.prom.vo.BOPromVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
SELECT *
FROM GC_PROM_JOIN
WHERE MBR_INNB = #{mbrInnb}
AND PROM_INNB = #{promInnb}
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(joinDt)">
AND JOIN_DT = #{joinDt}
</if>
LIMIT 1
</select>
<select id="countPromJoin" parameterType="com.wb.domainserver.domain.gcone.bbs.prom.vo.BOPromVO" resultType="int">
SELECT COUNT(*)
FROM GC_PROM_JOIN
WHERE PROM_INNB = #{promInnb}
</select>
<select id="selectPromRewardList" parameterType="com.wb.domainserver.domain.gcone.bbs.prom.vo.BOPromVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
SELECT
PROM_REWARD_INNB as promRewardInnb,
PROM_INNB as promInnb,
SORT_ORDR as sortOrdr,
PROBABILITY as probability,
REWARD_TY as rewardTy,
ACCMLMNY_AMT as accmlmnyAmt,
MLG_APPLC_RESN as mlgApplcResn,
COUPON_INNB as couponInnb,
COUPON_SNDNG_INNB as couponSndngInnb,
REWARD_DC as rewardDc,
EXPIRE_DT as expireDt
FROM GC_PROM_REWARD
WHERE PROM_INNB = #{promInnb}
ORDER BY SORT_ORDR ASC
</select>
<select id="countRewardWinners" parameterType="com.wb.domainserver.domain.gcone.bbs.prom.vo.BOPromVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
SELECT
SORT_ORDR as sortOrdr,
COUNT(*) as winnerCount
FROM GC_PROM_JOIN
WHERE PROM_INNB = #{promInnb}
AND SORT_ORDR IS NOT NULL
GROUP BY SORT_ORDR
</select>
<insert id="insertPromJoin" parameterType="com.wb.domainserver.domain.gcone.bbs.prom.vo.BOPromVO">
INSERT INTO GC_PROM_JOIN (
PROM_INNB,
SOPMAL_CD,
MBR_INNB,
JOIN_DT,
SORT_ORDR,
REWARD_TY,
ACCMLMNY_AMT,
COUPON_INNB,
COUPON_SNDNG_INNB,
REWARD_DC,
REGIST_DT
) VALUES (
#{promInnb},
#{sopmalCd},
#{mbrInnb},
NOW(),
#{sortOrdr},
#{rewardTy},
#{accmlmnyAmt},
#{couponInnb},
#{couponSndngInnb},
#{rewardDc},
NOW()
)
</insert>
</mapper>