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

View File

@@ -0,0 +1,353 @@
<?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.ntcn.atmcsndng.mapper.BOAtmcSndngMapper">
<!-- sms 발송 관리 목록 조회 FROM 절 -->
<sql id = "SmsSndngDtlsListFrom">
FROM GC_SMS_TO SMSTO
INNER JOIN GC_SMS SMS
ON SMSTO.SMS_INNB = SMS.SMS_INNB
AND SMSTO.SOPMAL_CD = SMS.SOPMAL_CD
</sql>
<!-- sms 발송 관리 목록 조회 WHERE 절 -->
<sql id = "SmsSndngDtlsListWhere">
<![CDATA[
WHERE 1=1
]]>
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sopmalCd)">
<![CDATA[
AND SMS.SOPMAL_CD = #{sopmalCd}
AND SMSTO.SOPMAL_CD = #{sopmalCd}
]]>
</if>
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSopmalCd)">
<![CDATA[
AND SMS.SOPMAL_CD = #{srchSopmalCd}
AND SMSTO.SOPMAL_CD = #{srchSopmalCd}
]]>
</if>
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSmsInnb)">
<![CDATA[
AND SMS.SMS_INNB = #{srchSmsInnb}
]]>
</if>
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSmsToInnb)">
<![CDATA[
AND SMSTO.SMS_TO_INNB = #{srchSmsToInnb}
]]>
</if>
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchRecptnNb)">
<![CDATA[
AND CAST(AES_DECRYPT(UNHEX(SMSTO.RECPTN_NB) , '1df5be2f7e90ae36') AS CHAR(50)) = REPLACE(#{srchRecptnNb},'-','')
]]>
</if>
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStr)">
<choose>
<when test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchNbDv, 'recpntNb')">
<![CDATA[
AND CAST(AES_DECRYPT(UNHEX(SMSTO.RECPTN_NB) , '1df5be2f7e90ae36') AS CHAR(50)) LIKE CONCAT('%', REPLACE(#{srchStr},'-',''), '%')
]]>
</when>
<when test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchNbDv, 'sndngNb')">
<![CDATA[
AND SMS.SNDNG_NB LIKE CONCAT('%', #{srchStr}, '%')
]]>
</when>
<when test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchNbDv, 'cstmrIdnb')">
<![CDATA[
AND SMSTO.CSTMR_IDNB LIKE CONCAT('%', #{srchStr}, '%')
]]>
</when>
<when test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchNbDv, 'cn')">
<![CDATA[
AND (
SMS.CN LIKE CONCAT('%', #{srchStr}, '%')
OR SMSTO.SUBST_DATA LIKE CONCAT('%', #{srchStr}, '%')
)
]]>
</when>
</choose>
</if>
<!-- 발송일 -->
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDtDv, 'sndngDt')">
<choose>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStrtSndngDt)">
<![CDATA[
AND SMS.SNDNG_DT >= #{srchStrtSndngDt} ' 00:00:00'
]]>
</when>
<when test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndSndngDt)">
<![CDATA[
AND SMS.SNDNG_DT <= #{srchEndSndngDt} ' 00:00:00'
]]>
</when>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStrtSndngDt)
and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndSndngDt)">
<![CDATA[
AND SMS.SNDNG_DT BETWEEN #{srchStrtSndngDt} ' 00:00:00' AND #{srchEndSndngDt} ' 23:59:59'
]]>
</when>
</choose>
</if>
<!-- 등록일 -->
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDtDv, 'registDt')">
<choose>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStrtSndngDt)">
<![CDATA[
AND SMS.REGIST_DT >= #{srchStrtSndngDt} ' 00:00:00'
]]>
</when>
<when test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndSndngDt)">
<![CDATA[
AND SMS.REGIST_DT <= #{srchEndSndngDt} ' 00:00:00'
]]>
</when>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStrtSndngDt)
and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndSndngDt)">
<![CDATA[
AND SMS.REGIST_DT BETWEEN #{srchStrtSndngDt} ' 00:00:00' AND #{srchEndSndngDt} ' 23:59:59'
]]>
</when>
</choose>
</if>
<choose>
<when test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchDv)">
<![CDATA[
AND SMSTO.DV IN
]]>
<foreach collection="srchDv" item="dv" open="(" separator="," close=")">
<![CDATA[
#{dv}
]]>
</foreach>
</when>
<otherwise>
AND SMSTO.DV != 'AT'
AND SMSTO.DV != 'AI'
</otherwise>
</choose>
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSttus)">
<![CDATA[
AND SMSTO.STTUS IN
]]>
<foreach collection="srchSttus" item="sttus" open="(" separator="," close=")">
<![CDATA[
#{sttus}
]]>
</foreach>
</if>
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchRegusrDv)">
<![CDATA[
AND SMS.REGUSR_DV = #{srchRegusrDv}
]]>
</if>
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sndngNb)">
<![CDATA[
AND SMS.SNDNG_NB = #{sndngNb}
AND SMSTO.RECPTN_NB = REPLACE(#{recptnNb},'-','')
]]>
</if>
</sql>
<!-- 자동 발송 관리 목록 -->
<select id="selectBOAtmcSndngManageListInqire"
parameterType="com.wb.domainserver.domain.gcone.ntcn.atmcsndng.vo.BOAtmcSndngVO"
resultType="dataMap">
<![CDATA[
SELECT *
FROM GC_MESSAGE_SNDNG SNDNG
JOIN (
SELECT GROUPCODE.CD_NM AS GROUP_CD_NM, CODE.GROUP_CD, CODE.CD, CODE.CD_NM
FROM (
SELECT CD, CD_NM, USE_AT
FROM GC_CODE
WHERE GROUP_CD LIKE 'FORM_DV%'
) GROUPCODE
JOIN GC_CODE CODE
ON REPLACE(CODE.GROUP_CD, #{formDvCd}, '') = GROUPCODE.CD
AND CODE.USE_AT = 'Y'
) CODE
ON CODE.GROUP_CD = SNDNG.FORM_DV_CD
AND CODE.CD = SNDNG.FORM_DTL_DV_CD
WHERE SNDNG.SOPMAL_CD = #{sopmalCd}
AND SNDNG.EXPSR_AT = 'Y'
AND SNDNG.MNGR_DV = #{mngrDv}
ORDER BY SNDNG.FORM_DV_CD, SNDNG.FORM_DTL_DV_CD
]]>
</select>
<!-- 자동 발송 관리 수정 -->
<update id="updateBOAtmcSndngManageUpdt" parameterType="com.wb.domainserver.domain.gcone.ntcn.atmcsndng.vo.BOAtmcSndngVO">
<foreach collection="list" item="dto" separator=";">
<![CDATA[
UPDATE GC_MESSAGE_SNDNG
SET
USE_AT = #{dto.useAt}
, EMAIL_USE_AT = #{dto.emailUseAt}
, SMS_USE_AT = #{dto.smsUseAt}
, NTCNTALK_USE_AT = #{dto.ntcntalkUseAt}
, MARKT_AT = #{dto.marktAt}
, SNDNG_STDR_DE = #{dto.sndngStdrDe}
, SNDNG_STDR_TME = #{dto.sndngStdrTme}
, UPDUSR = #{dto.updusr}
, UPDT_DT = SYSDATE()
WHERE SOPMAL_CD = #{dto.sopmalCd}
AND FORM_DV_CD = #{dto.formDvCd}
AND FORM_DTL_DV_CD = #{dto.formDtlDvCd}
]]>
</foreach>
</update>
<!-- 이메일 템플릿 사용여부 수정 -->
<update id="updateBOEmailTmplatUseAt" parameterType="com.wb.domainserver.domain.gcone.ntcn.atmcsndng.vo.BOAtmcSndngVO">
<foreach collection="list" item="dto" separator=";">
<![CDATA[
UPDATE GC_EMAIL_FORM
SET
USE_AT = #{dto.emailUseAt}
WHERE SOPMAL_CD = #{dto.sopmalCd}
AND FORM_DV_CD = #{dto.formDvCd}
AND FORM_DTL_DV_CD = #{dto.formDtlDvCd}
]]>
</foreach>
</update>
<!-- 메시지 템플릿 사용여부 수정 -->
<update id="updateBOMssageTmplatUseAt" parameterType="com.wb.domainserver.domain.gcone.ntcn.atmcsndng.vo.BOAtmcSndngVO">
<foreach collection="list" item="dto" separator=";">
<![CDATA[
UPDATE GC_SMS_FORM
SET
USE_AT = #{dto.smsUseAt}
WHERE SOPMAL_CD = #{dto.sopmalCd}
AND FORM_DV_CD = #{dto.formDvCd}
AND FORM_DTL_DV_CD = #{dto.formDtlDvCd}
]]>
</foreach>
</update>
<!-- 알림톡 템플릿 사용여부 수정 -->
<update id="updateBOKakaoTmplatUseAt" parameterType="com.wb.domainserver.domain.gcone.ntcn.atmcsndng.vo.BOAtmcSndngVO">
<foreach collection="list" item="dto" separator=";">
<![CDATA[
UPDATE GC_KAKAO_FORM
SET
USE_AT = #{dto.ntcntalkUseAt}
WHERE SOPMAL_CD = #{dto.sopmalCd}
AND FORM_DV_CD = #{dto.formDvCd}
AND FORM_DTL_DV_CD = #{dto.formDtlDvCd}
]]>
</foreach>
</update>
<!-- sms 발송 목록 조회 -->
<select id = "selectBOSmsSndngDtlsListInqire"
parameterType="com.wb.domainserver.domain.gcone.ntcn.mssage.vo.BOMssageSrchVO"
resultType="dataMap">
<![CDATA[
SELECT
ROW_NUMBER() OVER (ORDER BY SMS.SNDNG_DT, SMSTO.SMS_TO_INNB ASC) AS RNUM,
SMS.SNDNG_NB,
SMSTO.DV,
DATE_FORMAT(SMS.REGIST_DT,'%Y-%m-%d %H:%i:%S') AS REGIST_DT,
CASE
WHEN SMS.RESVE_DT IS NULL THEN DATE_FORMAT(SMS.SNDNG_DT ,'%Y-%m-%d %H:%i:%S')
ELSE DATE_FORMAT(SMS.RESVE_DT, '%Y-%m-%d %H:%i:%S')
END AS SNDNG_DT, -- 예약날짜가 있을경우 예약날짜로 발송시간 표출
CAST(AES_DECRYPT(UNHEX(SMSTO.RECPTN_NB) , '1df5be2f7e90ae36') AS CHAR(50)) AS RECPTN_NB,
SMS.CN AS CN,
SMS.SMS_INNB,
SMSTO.SMS_TO_INNB,
SMSTO.STTUS,
SMS.SUCCES_CNT,
SMS.FAILR_CNT,
SMS.CHR_STTUS,
SMS.SOPMAL_CD ,
SMSTO.RSLT_SJ,
SMSTO.SUBST_DATA,
SHOP.SOPMAL_NM
]]>
<include refid="SmsSndngDtlsListFrom"/>
INNER JOIN GC_SHOP SHOP
ON SMS.SOPMAL_CD = SHOP.SOPMAL_CD
<include refid="SmsSndngDtlsListWhere"/>
<![CDATA[
-- ) TB
ORDER BY RNUM DESC
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
]]>
</select>
<!--sms 발송 상세 조회 -->
<select id = "selectBOSmsSndngDtlInfo"
parameterType="com.wb.domainserver.domain.gcone.ntcn.mssage.vo.BOMssageSrchVO"
resultType="dataMap">
<![CDATA[
SELECT
SMS.SNDNG_NB,
SMSTO.DV,
DATE_FORMAT(SMS.REGIST_DT,'%Y-%m-%d %H:%i:%S')AS REGIST_DT ,
DATE_FORMAT(SMS.SNDNG_DT ,'%Y-%m-%d %H:%i:%S')AS SNDNG_DT,
CAST(AES_DECRYPT(UNHEX(SMSTO.RECPTN_NB) , '1df5be2f7e90ae36') AS CHAR(50)) AS RECPTN_NB,
SMS.CN AS CN,
SMS.SMS_INNB,
SMSTO.SMS_TO_INNB,
SMSTO.STTUS,
SMS.SUCCES_CNT,
SMS.FAILR_CNT,
SMS.CHR_STTUS,
SMSTO.RSLT_SJ,
SMSTO.SUBST_DATA
]]>
<include refid="SmsSndngDtlsListFrom"/>
<include refid="SmsSndngDtlsListWhere"/>
</select>
<!--sms 발송 관리 건수 조회 -->
<select id = "selectBOSmsSndngDtlsListTotCnt"
parameterType="com.wb.domainserver.domain.gcone.ntcn.mssage.vo.BOMssageSrchVO"
resultType="Integer">
<![CDATA[
SELECT COUNT(1)
]]>
<include refid="SmsSndngDtlsListFrom"/>
<include refid="SmsSndngDtlsListWhere"/>
</select>
<!--sms 발송 관리 발신 목록 성공 건수 -->
<select id = "selectBOSmsSndngresultOkCnt"
parameterType="com.wb.domainserver.domain.gcone.ntcn.mssage.vo.BOMssageSrchVO"
resultType="dataMap">
<![CDATA[
SELECT
COUNT(SMSTO.STTUS) OKCNT
]]>
<include refid="SmsSndngDtlsListFrom"/>
<include refid="SmsSndngDtlsListWhere"/>
<![CDATA[
AND SMSTO.STTUS IN ('OK')
]]>
</select>
<!--sms 발송 관리 발신 목록 실패 건수 -->
<select id = "selectBOSmsSndngresultFailCnt"
parameterType="com.wb.domainserver.domain.gcone.ntcn.mssage.vo.BOMssageSrchVO"
resultType="dataMap">
<![CDATA[
SELECT
COUNT(SMSTO.STTUS) FAILCNT
]]>
<include refid="SmsSndngDtlsListFrom"/>
<include refid="SmsSndngDtlsListWhere"/>
<![CDATA[
AND SMSTO.STTUS IN ('FAIL')
]]>
</select>
<!-- 자동발송 가능 시간 조회 -->
<select id="selectBOShopAtmcSndngTme">
SELECT
LEFT(SMS_ATMC_SNDNG_LMTT_BGNTME, 2) AS SMS_ATMC_SNDNG_LMTT_BGNTME
, LEFT(SMS_ATMC_SNDNG_LMTT_ENDTME, 2) AS SMS_ATMC_SNDNG_LMTT_ENDTME
FROM GC_SHOP
WHERE 1=1
AND SOPMAL_CD = #{sopmalCd}
</select>
</mapper>

View File

@@ -0,0 +1,99 @@
<?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.ntcn.email.mapper.BOEmailMapper">
<!-- 이메일 발송내역 등록 -->
<insert id="insertBOEmailSndngDtls"
parameterType="com.wb.domainserver.domain.gcone.ntcn.email.vo.BOEmailVO"
useGeneratedKeys="true"
keyProperty="emailSndngInnb">
INSERT INTO GC_EMAIL (
SOPMAL_CD
, SNDNG_LC
, SJ
, CN
, SNDR_EMAIL
, RECPTN_RJCT_URL
, REGUSR_DV
, REGUSR
, REGIST_DT
)
VALUES (
#{sopmalCd}
, #{sndngLc}
, #{sj}
, #{cn}
, HEX(AES_ENCRYPT(#{sndrEmail}, #{secretKey}))
, #{recptnRjctUrl}
, #{regusrDv}
, #{regusr}
, SYSDATE()
)
</insert>
<!-- 이메일 발송대상 등록 -->
<insert id="insertBOEmailSndngTo"
parameterType="java.util.List"
useGeneratedKeys="true"
keyProperty="trgetSnb">
INSERT INTO GC_EMAIL_TO (
EMAIL_SNDNG_INNB
, MBR_INNB
, RECPNT_EMAIL
, RECPNT_NM
, STTUS
, SNDNG_DT
, RSLT_CD
)
VALUES
<foreach collection="list" item="dto" separator=",">
(
#{dto.emailSndngInnb}
, #{dto.mbrInnb}
, HEX(AES_ENCRYPT(#{dto.recpntEmail}, #{dto.secretKey}))
, #{dto.recpntNm}
, #{dto.sttus}
, #{dto.sndngDt}
, #{dto.rsltCd}
)
</foreach>
</insert>
<!-- 이메일 발송대상 순번 조회 -->
<select id = "selectBOEmailSndngTrgetSnb"
parameterType="java.lang.Integer"
resultType="java.lang.Integer">
<![CDATA[
SELECT TRGET_SNB
FROM GC_EMAIL_TO
WHERE EMAIL_SNDNG_INNB = #{emailSndngInnb}
]]>
</select>
<!-- 이메일 발신자명(쇼핑몰 이름) 조회 -->
<select id = "selectBOEmailSopmalNm"
parameterType="com.wb.domainserver.domain.gcone.ntcn.email.vo.BOEmailVO"
resultType="java.lang.String">
<![CDATA[
SELECT SOPMAL_NM
FROM GC_SHOP
WHERE SOPMAL_CD = #{sopmalCd}
]]>
</select>
<!-- 이메일 발송여부 업데이트 -->
<update id="updateBOEmailSndng"
parameterType="com.wb.domainserver.domain.gcone.ntcn.email.vo.BOEmailVO">
<foreach collection="list" item="dto" separator=";">
<![CDATA[
UPDATE GC_EMAIL_TO
SET
STTUS = #{dto.sttus}
, SNDNG_DT = SYSDATE()
, RSLT_CD = #{dto.rsltCd}
WHERE EMAIL_SNDNG_INNB = #{dto.emailSndngInnb}
AND TRGET_SNB = #{dto.trgetSnb}
]]>
</foreach>
</update>
</mapper>

View File

@@ -0,0 +1,512 @@
<?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.ntcn.lgqymssage.mapper.BOLgqyMssageMapper">
<!-- 대량 발송 관리 목록 조회 WHERE 절 -->
<sql id="MssageLgqySndngDtlsListWhere">
WHERE 1=1
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSmsLgqySndngInnb)">
<![CDATA[
AND LGQYSMS.SMS_LGQY_SNDNG_INNB = #{srchSmsLgqySndngInnb}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchBrandCd)">
<![CDATA[
AND LGQYSMS.BRAND_CD = #{srchBrandCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSopmalCd)">
<![CDATA[
AND LGQYSMS.SOPMAL_CD = #{srchSopmalCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSndngCn)">
<![CDATA[
AND LGQYSMS.SNDNG_CN LIKE CONCAT('%', #{srchSndngCn}, '%')
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStrtRegistDt)">
<![CDATA[
AND DATE_FORMAT(LGQYSMS.REGIST_DT ,'%Y-%m-%d') >= #{srchStrtRegistDt}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndRegistDt)">
<![CDATA[
AND DATE_FORMAT(LGQYSMS.REGIST_DT ,'%Y-%m-%d') <= #{srchEndRegistDt}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSndngSttus)">
<![CDATA[
AND LGQYSMS.SNDNG_STTUS = #{srchSndngSttus}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSndngReqstDt)">
<![CDATA[
AND LGQYSMS.SNDNG_REQST_DT = #{srchSndngReqstDt}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSndngDvCd)">
<![CDATA[
AND LGQYSMS.SNDNG_DV_CD = #{srchSndngDvCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchSndngDvCd)">
<![CDATA[
AND LGQYSMS.SNDNG_DV_CD <> '02' -- 소멸예정 마일리지 제외
]]>
</if>
</sql>
<!-- 대량메시지 쇼핑몰 정보 조회 -->
<select id="selectBOShopInfoInqire" resultType="DataMap">
SELECT *
FROM GC_SHOP
WHERE 1 = 1
AND SOPMAL_CD = #{srchSopmalCd}
</select>
<!-- 쇼핑몰 리스트 조회 -->
<select id="selectBOShopListInqire" resultType="DataMap">
SELECT SOPMAL_CD,
SOPMAL_NM
FROM GC_SHOP
WHERE 1 = 1
AND OPER_AT = 'Y'
</select>
<!--대량 메시지 발송 관리 건수 조회 -->
<select id="selectBOMssageLgqySndngListTotCnt"
parameterType="com.wb.domainserver.domain.gcone.ntcn.mssage.vo.BOLgqyMssageSrchVO"
resultType="Integer">
SELECT
COUNT(1)
FROM GC_LGQY_SMS LGQYSMS
<include refid="MssageLgqySndngDtlsListWhere"/>
</select>
<!--대량 메시지 발송 내역 조회 -->
<select id="selectBOMssageLgqySndngListInqire"
parameterType="com.wb.domainserver.domain.gcone.ntcn.mssage.vo.BOLgqyMssageSrchVO"
resultType="dataMap">
SELECT
*
FROM (
SELECT
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM
, TB.*
FROM (
SELECT
LGQYSMS.SMS_LGQY_SNDNG_INNB,
FN_GET_SOPMAL_NAME(LGQYSMS.SOPMAL_CD) AS BRAND_CD,
LGQYSMS.SOPMAL_CD,
LGQYSMS.SNDNG_SJ,
DATE_FORMAT(LGQYSMS.REGIST_DT,'%Y-%m-%d %H:%i:%S') AS REGIST_DT,
DATE_FORMAT(LGQYSMS.SNDNG_REQST_DT ,'%Y-%m-%d %H:%i:%S') AS SNDNG_REQST_DT,
DATE_FORMAT(LGQYSMS.SNDNG_DT ,'%Y-%m-%d %H:%i:%S') AS SNDNG_DT,
CONCAT(LEFT(LGQYSMS.SNDNG_CN, 30),'...') SNDNG_CN,
LGQYSMS.ALL_CNT,
LGQYSMS.SUCCES_CNT,
LGQYSMS.SNDNG_STTUS,
LGQYSMS.SNDNG_PROCS_DV_CD
FROM GC_LGQY_SMS LGQYSMS
<include refid="MssageLgqySndngDtlsListWhere"/>
) TB
WHERE (@ROWNUM:=0)=0
) PV
ORDER BY RNUM DESC
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select>
<!-- 대량 메시지 상세 조회 -->
<select id="selectBOMssageLgqySndngDtlInqire"
parameterType="com.wb.domainserver.domain.gcone.ntcn.mssage.vo.BOLgqyMssageSrchVO"
resultType="dataMap">
SELECT
LGQYSMS.SMS_LGQY_SNDNG_INNB
, LGQYSMS.SOPMAL_CD
, LGQYSMS.BRAND_CD
, LGQYSMS.SNDNG_SJ
, LGQYSMS.SNDNG_CN
, LGQYSMS.LINK_URL1
, LGQYSMS.LINK_URL2
, LGQYSMS.LINK_URL3
, LGQYSMS.SNDNG_CND_PARAM
, LGQYSMS.SNDNG_TRGET_QRY
, DATE_FORMAT(LGQYSMS.REGIST_DT,'%Y-%m-%d %H:%i:%S') AS REGIST_DT
, DATE_FORMAT(LGQYSMS.SNDNG_REQST_DT ,'%Y-%m-%d %H:%i:%S') AS SNDNG_REQST_DT
, DATE_FORMAT(LGQYSMS.SNDNG_REQST_DT ,'%Y-%m-%d') AS SNDNG_REQST
, DATE_FORMAT(LGQYSMS.SNDNG_REQST_DT ,'%H') AS SNDNG_REQST_HOUR
, DATE_FORMAT(LGQYSMS.SNDNG_REQST_DT ,'%i') AS SNDNG_REQST_MINUTE
, DATE_FORMAT(LGQYSMS.SNDNG_REQST_DT ,'%S') AS SNDNG_REQST_SEC
, DATE_FORMAT(LGQYSMS.SNDNG_DT ,'%Y-%m-%d %H:%i:%S') AS SNDNG_DT
, LGQYSMS.SNDNG_CN
, LGQYSMS.ALL_CNT
, LGQYSMS.SUCCES_CNT
, LGQYSMS.SNDNG_STTUS
, LGQYSMS.REQUSR_NM
, LGQYSMS.SNDNG_DV_CD
, LGQYSMS.FIL_COURS
, LGQYSMS.ORGINL_FIL_NM
, LGQYSMS.SYS_FIL_NM
, LGQYSMS.LANDING_TY
, LGQYSMS.LANDING_USE_AT
, LGQYSMS.LANDING_POSITION
, LGQYSMS.RECPNT_DV
, (SELECT REPLACE(MBL_DOMN_ADRES, 'http://', '') FROM GC_SHOP SHOP WHERE SHOP.SOPMAL_CD = LGQYSMS.SOPMAL_CD) AS URL
, FN_GET_COMMCODE_NAME('SNDNG_DV', LGQYSMS.SNDNG_DV_CD) AS SNDNG_DV_CD_NM
FROM GC_LGQY_SMS LGQYSMS
WHERE LGQYSMS.SMS_LGQY_SNDNG_INNB = #{srchSmsLgqySndngInnb}
</select>
<!-- 대량 메시지 대상 조회 -->
<select id="selectBOMssageLgqySndngToInqire"
parameterType="com.wb.domainserver.domain.gcone.ntcn.lgqymssage.vo.BOLgqyMssageSrchVO"
resultType="dataMap">
SELECT SMS_LGQY_SNDNG_INNB
, LGQY_SNDNG_TRGET_INNB
, MNGR_INNB
, CAST(AES_DECRYPT(UNHEX(MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)) AS MBTLNB
, NM
, MBR_ID
, STTUS
, SUBST_CHR_1
, SUBST_CHR_2
, SUBST_CHR_3
, SUBST_CHR_4
, SUBST_CHR_5
FROM GC_LGQY_SMS_TO LGQYSMSTO
WHERE 1 = 1
AND SMS_LGQY_SNDNG_INNB = #{srchSmsLgqySndngInnb}
</select>
<!-- 대량 메시지 발송내역 등록 -->
<insert id="insertBOMssageLgqySndngRegist"
parameterType="com.wb.domainserver.domain.gcone.ntcn.lgqymssage.vo.BOLgqyMssageVO"
keyProperty="smsLgqySndngInnb" useGeneratedKeys="true">
INSERT INTO GC_LGQY_SMS (
SOPMAL_CD
, BRAND_CD
, SNDNG_SJ
, SNDNG_CN
, SNDNG_PROCS_DV_CD
, SNDNG_CND_PARAM
, SNDNG_TRGET_QRY
, RECPNT_DV
, CALL_PGE_USE_AT
, LINK_URL1
, LINK_URL2
, LINK_URL3
, SNDNG_REQST_DT
, SNDNG_DT
, ALL_CNT
, SUCCES_CNT
, SNDNG_STTUS
, LANDING_USE_AT
, REQUSR_NM
, REGUSR
, REGIST_DT
, SNDNG_DV_CD
, UPDUSR
, UPDT_DT
)
VALUES (
#{sopmalCd}
, #{brandCd}
, #{sndngSj}
, #{sndngCn}
, '00'
, #{sndngCndParam}
, #{sndngTrgetQry}
, #{recpntDv}
, #{callPgeUseAt}
, #{linkUrl1}
, #{linkUrl2}
, #{linkUrl3}
, #{sndngReqstDt}
, #{sndngDt}
, #{allCnt}
, #{succesCnt}
, 'SAVE'
, #{landingUseAt}
, #{requsrNm}
, #{regusr}
, NOW()
, #{sndngDvCd}
, #{regusr}
, NOW()
)
</insert>
<!-- 대량 메시지 발송대상 등록 -->
<insert id="insertBOMssageLgqySndngToRegist"
parameterType="com.wb.domainserver.domain.gcone.ntcn.lgqymssage.vo.BOLgqyMssageVO">
INSERT INTO GC_LGQY_SMS_TO (
SMS_LGQY_SNDNG_INNB
, MNGR_INNB
, MBTLNB
, NM
, MBR_ID
, CHOISE_DT
, STTUS
, MEMO
, SUBST_CHR_1
, SUBST_CHR_2
, SUBST_CHR_3
, SUBST_CHR_4
, SUBST_CHR_5
, LINK_AT
, REGUSR
, REGIST_DT
)
VALUES
<foreach collection="list" item="lgqyTo" index="index" separator=",">
(
#{lgqyTo.smsLgqySndngInnb}
, #{lgqyTo.mngrInnb}
, HEX(AES_ENCRYPT( #{lgqyTo.mbtlnb} , #{lgqyTo.secretKey}))
, #{lgqyTo.nm}
, #{lgqyTo.mbrId}
, #{lgqyTo.choiseDt}
, #{lgqyTo.sttus}
, #{lgqyTo.memo}
, #{lgqyTo.substChr1}
, #{lgqyTo.substChr2}
, #{lgqyTo.substChr3}
, #{lgqyTo.substChr4}
, #{lgqyTo.substChr5}
, #{lgqyTo.linkAt}
, #{lgqyTo.regusr}
, NOW()
)
</foreach>
</insert>
<!-- 상태 변경-->
<update id="updateBOMssageLgqySttusUpdate">
UPDATE
GC_LGQY_SMS GLS
SET
SNDNG_PROCS_DV_CD = #{sndngProcsDvCd}
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sndngSttus)">
,SNDNG_STTUS = #{sndngSttus}
</if>
WHERE 1=1
AND SMS_LGQY_SNDNG_INNB = #{smsLgqySndngInnb}
AND SOPMAL_CD = #{sopmalCd}
</update>
<!-- 대량 메시지 상세 - 발송요청현황 확인 -->
<select id="selectBOMssageLgqySndngReqInqire"
parameterType="com.wb.domainserver.domain.gcone.ntcn.lgqymssage.vo.BOLgqyMssageSrchVO"
resultType="dataMap">
SELECT SNDNG_REQST_DT
, BRAND_CD
, SNDNG_STTUS
, SNDNG_DV_CD
FROM GC_LGQY_SMS
WHERE 1 = 1
AND SMS_LGQY_SNDNG_INNB = #{srchSmsLgqySndngInnb}
</select>
<!--수정 가능 여부 체크-->
<update id="updateBOMssageLgqySmsUpdt">
UPDATE
GC_LGQY_SMS
SET SNDNG_SJ = #{sndngSj}
, SNDNG_CN = #{sndngCn}
, LINK_URL1 = #{linkUrl1}
, LINK_URL2 = #{linkUrl2}
, LINK_URL3 = #{linkUrl3}
, SNDNG_REQST_DT = #{sndngReqstDt}
, UPDUSR = #{updusr}
, UPDT_DT = NOW()
, SNDNG_DV_CD = #{sndngDvCd}
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(orginlFilNm)">
, ORGINL_FIL_NM = #{orginlFilNm}
, SYS_FIL_NM = #{sysFilNm}
, FIL_MG = #{filMg}
, FIL_TY = #{filTy}
, FIL_COURS = #{filCours}
, LANDING_TY = 1/*#{landingTy}*/
</if>
, LANDING_USE_AT = #{landingUseAt}
, LANDING_POSITION = #{landingPosition}
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sndngTrgetQry)">
, SNDNG_TRGET_QRY = #{sndngTrgetQry}
</if>
, SNDNG_CND_PARAM = #{sndngCndParam}
, BRAND_CD = #{brandCd}
<if test="(@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(sndngDvCd, '04') and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(sndngSttus, 'SAVE'))
or(@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(sndngDvCd, '03') and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(sndngSttus, 'REG'))">
,ALL_CNT = #{allCnt}
</if>
WHERE 1 = 1
AND SMS_LGQY_SNDNG_INNB = #{smsLgqySndngInnb}
</update>
<!-- lgqy_sms 수정-->
<select id="selectBOMssageLgqySndngUpdtAt" resultType="String"> /*처리 중이거나 요청, 완료상태는 수정 못함*/
SELECT CASE
WHEN SNDNG_PROCS_DV_CD IN ('P', '02') THEN 'N'
ELSE 'Y'
END AS UPDT_AT
FROM GC_LGQY_SMS
WHERE SMS_LGQY_SNDNG_INNB = #{smsLgqySndngInnb}
AND SOPMAL_CD = #{sopmalCd}
</select>
<!-- 대상 삭제 -->
<delete id="deleteBoMssageLgqySmsToDelete">
DELETE
FROM GC_LGQY_SMS_TO
WHERE SMS_LGQY_SNDNG_INNB = #{smsLgqySndngInnb}
</delete>
<!-- 클릭 수 통계 -->
<select id="selectBOMssageLgqyClickStat" resultType="dataMap">
SELECT COUNT(*) AS TOT_CNT
, COUNT(DISTINCT GLSTL.LGQY_SNDNG_TRGET_INNB) AS CLICK_CNT
, IFNULL(COUNT(DISTINCT GLSTL.LGQY_SNDNG_TRGET_INNB)
/ NULLIF((SELECT GLM.SUCCES_CNT
FROM GC_LGQY_SMS GLM
WHERE GLM.SMS_LGQY_SNDNG_INNB = GLSTL.SMS_LGQY_SNDNG_INNB), 0) * 100,
0) AS CLICK_RATE
FROM GC_LGQY_SMS_TO_LINK GLSTL
WHERE 1 = 1
AND GLSTL.SMS_LGQY_SNDNG_INNB = #{srchSmsLgqySndngInnb}
</select>
<!-- url 별 클릭 수 통계 -->
<select id="selectBOMssageLgqyUrlClickStat"
resultType="dataMap">
SELECT SUM(CASE WHEN A.CNT = 1 AND A.LINK_NB = '1' THEN 1 ELSE 0 END) AS URL1_CNT1
, ROUND(SUM(CASE WHEN A.CNT = 1 AND A.LINK_NB = '1' THEN 1 ELSE 0 END) / COUNT(*), 2) *
100 AS URL1_CNT1_RT
, SUM(CASE WHEN A.CNT = 2 AND A.LINK_NB = '1' THEN 1 ELSE 0 END) AS URL1_CNT2
, ROUND(SUM(CASE WHEN A.CNT = 2 AND A.LINK_NB = '1' THEN 1 ELSE 0 END) / COUNT(*), 2) *
100 AS URL1_CNT2_RT
, SUM(CASE WHEN A.CNT >= 3 AND A.LINK_NB = '1' THEN 1 ELSE 0 END) AS URL1_CNT3
, ROUND(SUM(CASE WHEN A.CNT >= 3 AND A.LINK_NB = '1' THEN 1 ELSE 0 END) / COUNT(*), 2) *
100 AS URL1_CNT3_RT
, SUM(CASE WHEN A.CNT = 1 AND A.LINK_NB = '2' THEN 1 ELSE 0 END) AS URL2_CNT1
, ROUND(SUM(CASE WHEN A.CNT = 1 AND A.LINK_NB = '2' THEN 1 ELSE 0 END) / COUNT(*), 2) *
100 AS URL2_CNT1_RT
, SUM(CASE WHEN A.CNT = 2 AND A.LINK_NB = '2' THEN 1 ELSE 0 END) AS URL2_CNT2
, ROUND(SUM(CASE WHEN A.CNT = 2 AND A.LINK_NB = '2' THEN 1 ELSE 0 END) / COUNT(*), 2) *
100 AS URL2_CNT2_RT
, SUM(CASE WHEN A.CNT >= 3 AND A.LINK_NB = '2' THEN 1 ELSE 0 END) AS URL2_CNT3
, ROUND(SUM(CASE WHEN A.CNT >= 3 AND A.LINK_NB = '2' THEN 1 ELSE 0 END) / COUNT(*), 2) *
100 AS URL2_CNT3_RT
, SUM(CASE WHEN A.CNT = 1 AND A.LINK_NB = '3' THEN 1 ELSE 0 END) AS URL3_CNT1
, ROUND(SUM(CASE WHEN A.CNT = 1 AND A.LINK_NB = '3' THEN 1 ELSE 0 END) / COUNT(*), 2) *
100 AS URL3_CNT1_RT
, SUM(CASE WHEN A.CNT = 2 AND A.LINK_NB = '3' THEN 1 ELSE 0 END) AS URL3_CNT2
, ROUND(SUM(CASE WHEN A.CNT = 2 AND A.LINK_NB = '3' THEN 1 ELSE 0 END) / COUNT(*), 2) *
100 AS URL3_CNT2_RT
, SUM(CASE WHEN A.CNT >= 3 AND A.LINK_NB = '3' THEN 1 ELSE 0 END) AS URL3_CNT3
, ROUND(SUM(CASE WHEN A.CNT >= 3 AND A.LINK_NB = '3' THEN 1 ELSE 0 END) / COUNT(*), 2) *
100 AS URL3_CNT3_RT
FROM (SELECT COUNT(*) CNT
, GLSTL.LINK_NB AS LINK_NB
FROM GC_LGQY_SMS_TO_LINK GLSTL
WHERE 1 = 1
AND SMS_LGQY_SNDNG_INNB = #{srchSmsLgqySndngInnb}
GROUP BY LGQY_SNDNG_TRGET_INNB, LINK_NB) A
</select>
<!-- 시간별 클릭 통계 -->
<select id="selectBOMssageLgqyClickStatList"
resultType="dataMap"
parameterType="com.wb.domainserver.domain.gcone.ntcn.lgqymssage.vo.BOLgqyMssageSrchVO">
SELECT DATE_FORMAT(REGIST_DT, '%Y-%m-%d') DAY
, CONCAT(DATE_FORMAT(REGIST_DT, '%H:'), LPAD(FLOOR(MINUTE(REGIST_DT) / 10) * 10, 2, '0')) AS HOUR
, SUM(IF(LINK_NB = 1, IF(LGQY_SNDNG_TRGET_INNB IS NOT NULL, 1, 0), 0)) CNT1
, SUM(IF(LINK_NB = 2, IF(LGQY_SNDNG_TRGET_INNB IS NOT NULL, 1, 0), 0)) CNT2
, SUM(IF(LINK_NB = 3, IF(LGQY_SNDNG_TRGET_INNB IS NOT NULL, 1, 0), 0)) CNT3
, SUM(IF(LINK_NB = 3, IF(ETC = 'r', 1, 0), 0)) R_CNT1
, SUM(IF(LINK_NB = 3, IF(ETC = 'r', 1, 0), 0)) R_CNT2
, SUM(IF(LINK_NB = 3, IF(ETC = 'r', 1, 0), 0)) R_CNT3
, COUNT(DISTINCT LGQY_SNDNG_TRGET_INNB) P_CNT
FROM GC_LGQY_SMS_TO_LINK
WHERE 1 = 1
AND SMS_LGQY_SNDNG_INNB = #{srchSmsLgqySndngInnb}
GROUP BY DAY, HOUR
</select>
<!-- 출생년도별 클릭 통계 -->
<select id="selectBOMssageLgqySndngBirthStat" resultType="dataMap">
<![CDATA[
SELECT A.BIRTH
, A.SEX
, SUM(A.CNT) PCNT
FROM (SELECT CASE
WHEN LEFT(M.BRTH_DE, 4) > YEAR(NOW()) THEN 'none'
WHEN LEFT(M.BRTH_DE, 4) <= '1900' THEN 'none'
ELSE LEFT(M.BRTH_DE, 4)
END BIRTH,
IF(M.SEX = '', 'none', M.SEX) SEX,
COUNT(1) CNT
FROM GC_MEMBER M
WHERE M.MBTLNB IN (SELECT CAST(AES_DECRYPT(UNHEX(MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)) AS MBTLNB
FROM GC_LGQY_SMS_TO
WHERE 1 = 1
AND SMS_LGQY_SNDNG_INNB = #{srchSmsLgqySndngInnb})
AND M.SEX <> 'none'
AND M.SEX > ''
GROUP BY M.BRTH_DE, M.SEX
ORDER BY LEFT(M.BRTH_DE, 4) DESC) A
WHERE 1 = 1
AND A.BIRTH <> 'none'
AND A.SEX <> 'none'
GROUP BY A.BIRTH, A.SEX
]]>
</select>
<!-- 클릭자 중 구매자수 통계 -->
<select id="selectBOMssageLgqySndngOrdrStat" resultType="dataMap">
SELECT IF(O.DIFF > 0, O.DIFF * 3, O.DIFF) DIFF,
O.CNT
FROM (SELECT FLOOR(DIFF / 3) DIFF
, COUNT(MOBILE) CNT
FROM (
SELECT
CAST(AES_DECRYPT(UNHEX(FO.ORDRR_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50)) AS MOBILE
, TIMESTAMPDIFF(HOUR, #{sndngDt}, FO.ORDR_RCEPT_DT) DIFF
FROM GC_ORDER FO
LEFT JOIN GC_ORDER_ITEM FOI
ON FOI.ORDR_INNB = FO.ORDR_INNB
LEFT JOIN GC_ORDER_ITEM_OPTION FOIO
ON FOIO.ORDR_INNB = FO.ORDR_INNB
WHERE 1 = 1
AND FOIO.ORDR_STTUS_CD BETWEEN 25 AND 75
AND FO.MBR_INNB > 0
AND FO.ORDR_RCEPT_DT BETWEEN #{sndngDt} AND DATE_ADD(#{sndngDt}, INTERVAL +7 DAY)
AND FO.mbtlnb IN (HEX(AES_ENCRYPT(#{mbtlnb}), #{secretKey}))
)
GROUP BY FLOOR(DIFF / 3)
) O
</select>
<!-- 대량 메시지 달력 조회 -->
<select id="selectBOMssageLgqySndngReqstCldr"
parameterType="com.wb.domainserver.domain.gcone.ntcn.mssage.vo.BOLgqyMssageSrchVO"
resultType="dataMap">
SELECT
LGQYSMS.SMS_LGQY_SNDNG_INNB,
LGQYSMS.SNDNG_REQST_DT,
FN_GET_SOPMAL_NAME(LGQYSMS.SOPMAL_CD) AS BRAND_NM
FROM
GC_LGQY_SMS LGQYSMS
WHERE 1=1
AND LGQYSMS.SNDNG_REQST_DT BETWEEN #{srchStrtRegistDt} ' 00:00:00' AND #{srchEndRegistDt} ' 23:59:59'
<choose>
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSndngSttus)">
AND SNDNG_STTUS = #{srchSndngSttus}
</when>
<otherwise>
AND SNDNG_STTUS IN ('S','I','Y','SAVE','REG','END')
</otherwise>
</choose>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSopmalCd)">
AND SOPMAL_CD = #{srchSopmalCd}
</if>
ORDER BY LGQYSMS.SNDNG_REQST_DT DESC
</select>
</mapper>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,509 @@
<?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.ntcn.tmplt.mapper.BOTmpltMapper">
<!-- 이메일 템플릿 조회 조건 -->
<sql id="tmpltEmailListInqireWhere">
<![CDATA[
WHERE 1 = 1
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sopmalCd)">
<![CDATA[
AND SOPMAL_CD = #{sopmalCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(formDvCd)">
<![CDATA[
AND FORM_DV_CD = #{formDvCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(formDtlDvCd)">
<![CDATA[
AND FORM_DTL_DV_CD = #{formDtlDvCd}
]]>
</if>
</sql>
<!-- 메시지 템플릿 조회 조건 -->
<sql id="tmpltMssageListInqireWhere">
<![CDATA[
WHERE 1=1
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sopmalCd)">
<![CDATA[
AND SOPMAL_CD = #{sopmalCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(formDvCd)">
<![CDATA[
AND FORM_DV_CD = #{formDvCd}
]]>
</if>
</sql>
<!-- 알림톡 템플릿 조회 조건 -->
<sql id="tmpltNtcntalkListInqireWhere">
<![CDATA[
WHERE 1=1
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sopmalCd)">
<![CDATA[
AND SOPMAL_CD = #{sopmalCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(formDvCd)">
<![CDATA[
AND FORM_DV_CD = #{formDvCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(formDtlDvCd)">
<![CDATA[
AND FORM_DTL_DV_CD = #{formDtlDvCd}
]]>
</if>
</sql>
<!-- 공통코드 -->
<!-- 그룹코드, 양식구분 조회 -->
<select id="selectBOTmplatGroupCd"
parameterType="java.lang.String"
resultType="dataMap">
<![CDATA[
SELECT *
FROM GC_CODE
WHERE 1 = 1
AND GROUP_CD LIKE #{param}
]]>
</select>
<!-- 이메일 자동발송 발신주소 조회 -->
<select id="selectBOEmailAtmcSndngDsptchAdres"
parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO"
resultType="String">
<![CDATA[
SELECT
EMAIL_ATMC_SNDNG_DSPTCH_ADRES
FROM GC_SHOP
WHERE SOPMAL_CD = #{sopmalCd}
]]>
</select>
<!-- 이메일 템플릿 -->
<!-- 이메일 템플릿 조회 -->
<select id="selectBOEmailAtmcSndngTmplatInqireForm"
parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO"
resultType="dataMap">
<![CDATA[
SELECT
EMAIL_SNDNG_FORM_INNB
, SOPMAL_CD
, FORM_DV_CD
, FORM_DTL_DV_CD
, EMAIL_SJ
FROM GC_EMAIL_FORM
]]>
<include refid = "tmpltEmailListInqireWhere"/>
<![CDATA[
ORDER BY FORM_DTL_DV_CD;
]]>
</select>
<!-- 이메일 템플릿 단건 조회 -->
<select id="selectBOEmailAtmcSndngTmplatOneInqireForm"
parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO"
resultType="dataMap">
<![CDATA[
SELECT
EMAIL_SNDNG_FORM_INNB
, SOPMAL_CD
, EMAIL_SJ
, EMAIL_CN
FROM GC_EMAIL_FORM
]]>
<include refid = "tmpltEmailListInqireWhere"/>
</select>
<!-- 이메일 템플릿 등록(사용안함) -->
<insert id="insertBOEmailTmplat"
parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO">
<selectKey order="BEFORE" keyProperty="//////////////" resultType="java.lang.Integer">
<![CDATA[
SELECT IFNULL(MAX(EMAIL_SNDNG_FORM_INNB), 0)+1
FROM GC_EMAIL_FORM
]]>
</selectKey>
INSERT INTO GC_EMAIL_FORM (
EMAIL_SNDNG_FORM_INNB
, SOPMAL_CD
, EMAIL_FORM_DV
, EMAIL_SJ
, EMAIL_CN
, USE_AT
, REGUSR
, REGIST_DT
, UPDUSR
, UPDT_DT
)
VALUES (
#{popupInnb}
, #{popupNm}
, #{popupExpsrBgnDt}
, #{popupExpsrEndDt}
, #{cnncUrl}
, #{popupMgWth}
, 'Y'
, #{regusr}
, NOW()
, #{updusr}
, NOW()
)
</insert>
<!-- 이메일 템플릿 수정 -->
<update id="updateBOEmailTmplat" parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO">
<![CDATA[
UPDATE GC_EMAIL_FORM
SET
EMAIL_SJ = #{emailSj}
, EMAIL_CN = #{emailCn}
, UPDUSR = #{updusr}
, UPDT_DT = SYSDATE()
]]>
<include refid = "tmpltEmailListInqireWhere"/>
</update>
<!-- 메시지 템플릿 -->
<!-- 메시지(SMS) 템플릿 조회 -->
<select id="selectBOMssageAtmcSndngTmplatInqireForm"
parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO"
resultType="dataMap">
<![CDATA[
SELECT
FORM.SMS_SNDNG_FORM_INNB
, FORM.FORM_DV_CD
, FORM.FORM_DTL_DV_CD
, CODE.CD_NM
, FORM.SMS_CN
FROM GC_SMS_FORM FORM
INNER JOIN GC_MESSAGE_SNDNG GMS
ON FORM.FORM_DV_CD = GMS.FORM_DV_CD
AND FORM.FORM_DTL_DV_CD = GMS.FORM_DTL_DV_CD
AND FORM.SOPMAL_CD = GMS.SOPMAL_CD
AND GMS.EXPSR_AT = 'Y'
AND GMS.MNGR_DV = '01'
JOIN GC_CODE CODE
ON FORM.FORM_DV_CD = CODE.GROUP_CD
AND FORM.FORM_DTL_DV_CD = CODE.CD
WHERE 1=1
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sopmalCd)">
<![CDATA[
AND GMS.SOPMAL_CD = #{sopmalCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(formDvCd)">
<![CDATA[
AND GMS.FORM_DV_CD = #{formDvCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(formDtlDvCd)">
<![CDATA[
AND GMS.FORM_DTL_DV_CD = #{formDtlDvCd}
]]>
</if>
<![CDATA[
ORDER BY GMS.FORM_DTL_DV_CD;
]]>
</select>
<!-- 메시지 템플릿 등록(사용안함) -->
<insert id="insertBOMssageTmplat"
parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO">
<selectKey order="BEFORE" keyProperty="//////////////" resultType="java.lang.Integer">
<![CDATA[
SELECT IFNULL(MAX(SMS_SNDNG_FORM_INNB), 0)+1
FROM GC_SMS_FORM
]]>
</selectKey>
INSERT INTO GC_SMS_FORM (
SMS_SNDNG_FORM_INNB
, SOPMAL_CD
, FORM_DV
, SMS_CN
, USE_AT
, REGUSR
, REGIST_DT
, UPDUSR
, UPDT_DT
)
VALUES (
#{popupInnb}
, #{popupNm}
, #{popupExpsrBgnDt}
, #{popupExpsrEndDt}
, 'Y'
, #{regusr}
, SYSDATE()
, #{updusr}
, SYSDATE()
)
</insert>
<!-- 메시지 템플릿 수정 -->
<update id="updateBOMssageTmplat" parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO">
<foreach collection="list" item="dto" separator=";">
<![CDATA[
UPDATE GC_SMS_FORM
SET
SMS_CN = #{dto.smsCn}
, UPDUSR = #{dto.updusr}
, UPDT_DT = SYSDATE()
WHERE SOPMAL_CD = #{dto.sopmalCd}
AND FORM_DV_CD = #{dto.formDvCd}
AND FORM_DTL_DV_CD = #{dto.formDtlDvCd}
]]>
</foreach>
</update>
<!-- 알림톡 템플릿 조회 -->
<select id="selectBONtcntalkAtmcSndngTmplatInqireForm"
parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO"
resultType="dataMap">
<![CDATA[
SELECT
FORM.NTCNTALK_SNDNG_FORM_INNB
, FORM.FORM_DV_CD
, FORM.FORM_DTL_DV_CD
, CODE.CD_NM
, FORM.MSG
, FORM.SMS_RPLC_AT
, FORM.SMS_CN
FROM GC_KAKAO_FORM FORM
INNER JOIN GC_MESSAGE_SNDNG GMS
ON FORM.FORM_DV_CD = GMS.FORM_DV_CD
AND FORM.FORM_DTL_DV_CD = GMS.FORM_DTL_DV_CD
AND FORM.SOPMAL_CD = GMS.SOPMAL_CD
AND GMS.EXPSR_AT = 'Y'
AND GMS.MNGR_DV = '01'
JOIN GC_CODE CODE
ON FORM.FORM_DV_CD = CODE.GROUP_CD
AND FORM.FORM_DTL_DV_CD = CODE.CD
]]>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sopmalCd)">
<![CDATA[
AND GMS.SOPMAL_CD = #{sopmalCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(formDvCd)">
<![CDATA[
AND GMS.FORM_DV_CD = #{formDvCd}
]]>
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(formDtlDvCd)">
<![CDATA[
AND GMS.FORM_DTL_DV_CD = #{formDtlDvCd}
]]>
</if>
<![CDATA[
ORDER BY GMS.FORM_DTL_DV_CD;
]]>
</select>
<!-- 알림톡 템플릿 조회_팝업 -->
<select id="selectBONtcntalkAtmcSndngTmplatUpdtPopupForm"
parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO"
resultType="dataMap">
<![CDATA[
SELECT
CODE.CD_NM
, FORM.MSG
, FORM.BTN_TYPE_01
, FORM.BTN_NM_01
, FORM.BTN_01_URL_01
, FORM.BTN_01_URL_02
, FORM.BTN_TYPE_02
, FORM.BTN_NM_02
, FORM.BTN_02_URL_01
, FORM.BTN_02_URL_02
, FORM.BTN_TYPE_03
, FORM.BTN_NM_03
, FORM.BTN_03_URL_01
, FORM.BTN_03_URL_02
, FORM.BTN_TYPE_04
, FORM.BTN_NM_04
, FORM.BTN_04_URL_01
, FORM.BTN_04_URL_02
, FORM.BTN_TYPE_05
, FORM.BTN_NM_05
, FORM.BTN_05_URL_01
, FORM.BTN_05_URL_02
, FORM.SMS_RPLC_AT
, FORM.SMS_CN
FROM GC_KAKAO_FORM FORM
JOIN GC_CODE CODE
ON FORM.FORM_DV_CD = CODE.GROUP_CD
AND FORM.FORM_DTL_DV_CD = CODE.CD
]]>
<include refid = "tmpltNtcntalkListInqireWhere"/>
</select>
<!-- 알림톡 템플릿 등록(사용안함) -->
<insert id="insertBOKakaoForm"
parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO">
<selectKey order="BEFORE" keyProperty="//////////////" resultType="java.lang.Integer">
<![CDATA[
SELECT IFNULL(MAX(NTCNTALK_SNDNG_FORM_INNB), 0)+1
FROM GC_KAKAO_FORM
]]>
</selectKey>
INSERT INTO GC_KAKAO_FORM (
NTCNTALK_SNDNG_FORM_INNB
, SOPMAL_CD
, KAKAO_CD
, FORM_DV
, SMS_RPLC_AT
, SMS_RPLC_CN
, USE_AT
, REGUSR
, REGIST_DT
, UPDUSR
, UPDT_DT
)
VALUES (
#{popupInnb}
, #{popupNm}
, #{popupExpsrBgnDt}
, #{popupExpsrEndDt}
, 'Y'
, #{regusr}
, SYSDATE()
, #{updusr}
, SYSDATE()
)
</insert>
<!-- 알림톡 템플릿 등록_버튼(사용안함) -->
<insert id="insertBOKakaoFormButton"
parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO">
<selectKey order="BEFORE" keyProperty="//////////////" resultType="java.lang.Integer">
<![CDATA[
SELECT IFNULL(MAX(NTCNTALK_SNDNG_FORM_INNB), 0)+1
FROM GC_KAKAO_FORM_BUTTON
]]>
</selectKey>
INSERT INTO GC_KAKAO_FORM_BUTTON (
NTCNTALK_SNDNG_FORM_INNB
, BUTTON_INNB
, BUTTON_NM
, BUTTON_URL
, USE_AT
, REGUSR
, REGIST_DT
, UPDUSR
, UPDT_DT
)
VALUES (
#{popupInnb}
, #{popupNm}
, #{popupExpsrBgnDt}
, #{popupExpsrEndDt}
, 'Y'
, #{regusr}
, SYSDATE()
, #{updusr}
, SYSDATE()
)
</insert>
<!-- 알림톡 템플릿 수정 -->
<update id="updateBOKakaoForm" parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO">
<foreach collection="list" item="dto" separator=";">
<![CDATA[
UPDATE GC_KAKAO_FORM
SET
MSG = #{dto.msg}
, SMS_CN = #{dto.smsCn}
, SMS_RPLC_AT = #{dto.smsRplcAt}
, UPDUSR = #{dto.updusr}
, UPDT_DT = SYSDATE()
WHERE FORM_DV_CD = #{dto.formDvCd}
AND FORM_DTL_DV_CD = #{dto.formDtlDvCd}
]]>
</foreach>
</update>
<!-- 알림톡 템플릿 수정_팝업 -->
<update id="updateBOKakaoFormPopup" parameterType="com.wb.domainserver.domain.gcone.ntcn.tmplt.vo.BOTmpltVO">
<![CDATA[
UPDATE GC_KAKAO_FORM
SET
MSG = #{msg}
, BTN_TYPE_01 = #{btnType01}
, BTN_NM_01 = #{btnNm01}
, BTN_01_URL_01 = #{btn01Url01}
, BTN_01_URL_02 = #{btn01Url02}
, BTN_TYPE_02 = #{btnType02}
, BTN_NM_02 = #{btnNm02}
, BTN_02_URL_01 = #{btn02Url01}
, BTN_02_URL_02 = #{btn02Url02}
, BTN_TYPE_03 = #{btnType03}
, BTN_NM_03 = #{btnNm03}
, BTN_03_URL_01 = #{btn03Url01}
, BTN_03_URL_02 = #{btn03Url02}
, BTN_TYPE_04 = #{btnType04}
, BTN_NM_04 = #{btnNm04}
, BTN_04_URL_01 = #{btn04Url01}
, BTN_04_URL_02 = #{btn04Url02}
, BTN_TYPE_05 = #{btnType05}
, BTN_NM_05 = #{btnNm05}
, BTN_05_URL_01 = #{btn05Url01}
, BTN_05_URL_02 = #{btn05Url02}
, SMS_RPLC_AT = #{smsRplcAt}
, SMS_CN = #{smsCn}
, UPDUSR = #{updusr}
, UPDT_DT = SYSDATE()
WHERE FORM_DV_CD = #{formDvCd}
AND FORM_DTL_DV_CD = #{formDtlDvCd}
AND SOPMAL_CD = #{sopmalCd}
]]>
</update>
<!-- 템플릿 사용 그룹 조회 -->
<select id="selectBOTmplatGroup"
resultType="dataMap">
<![CDATA[
SELECT
*
FROM GC_CODE GC
INNER JOIN (
SELECT
SUBSTRING_INDEX(GMS.FORM_DV_CD, '_', 2) AS GROUP_CD
, SUBSTRING_INDEX(GMS.FORM_DV_CD, '_', -1) AS CD
FROM GC_MESSAGE_SNDNG GMS
WHERE GMS.SOPMAL_CD = #{sopmalCd}
AND GMS.EXPSR_AT = 'Y'
AND GMS.MNGR_DV = '01'
GROUP BY GMS.FORM_DV_CD
) TB
ON GC.GROUP_CD = TB.GROUP_CD
AND GC.CD = TB.CD
]]>
</select>
<!-- 템플릿 사용 그룹별 폼 조회 -->
<select id="selectBOTmplatFormGroup"
resultType="dataMap">
<![CDATA[
SELECT
*
FROM GC_CODE GC
INNER JOIN GC_MESSAGE_SNDNG GMS
ON GC.GROUP_CD = GMS.FORM_DV_CD
AND GC.CD = GMS.FORM_DTL_DV_CD
WHERE 1=1
AND GMS.SOPMAL_CD = #{sopmalCd}
AND GMS.EXPSR_AT = 'Y'
AND GMS.MNGR_DV = '01'
]]>
</select>
</mapper>