574 lines
17 KiB
XML
574 lines
17 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">
|
|
<mapper namespace="com.wb.domainserver.mapper.gcone.EmailMapper">
|
|
<select id="selectBOEmailSndngTrgetSnb"
|
|
parameterType="java.lang.Integer"
|
|
resultType="java.lang.Integer">
|
|
<![CDATA[
|
|
SELECT
|
|
TRGET_SNB
|
|
FROM GC_EMAIL_TO
|
|
WHERE 1=1
|
|
AND EMAIL_SNDNG_INNB IN
|
|
]]>
|
|
<foreach collection="emailSndngList" item="item" open="(" separator="," close=")">
|
|
#{item.emailSndngInnb}
|
|
</foreach>
|
|
</select>
|
|
<!-- 회원 2년 메일 등록 -->
|
|
<insert id="insertMbrMarktAgreEmail">
|
|
<![CDATA[
|
|
INSERT INTO GC_EMAIL (
|
|
SOPMAL_CD
|
|
, SNDNG_LC
|
|
, SJ
|
|
, CN
|
|
, SNDR_EMAIL
|
|
, RECPTN_RJCT_URL
|
|
, REGUSR_DV -- 등록자 구분 코드, 01 - 회원, 02 - 관리자, 03 - 시스템
|
|
, REGUSR -- 등록자 고유번호
|
|
, REGIST_DT -- 등록일 현재 NOW()
|
|
, EMAIL_SNDNG_FORM_INNB
|
|
)
|
|
SELECT
|
|
S.SOPMAL_CD
|
|
, NULL SNDNG_LC
|
|
, EF.EMAIL_SJ
|
|
, EF.EMAIL_CN
|
|
, HEX(AES_ENCRYPT(S.EMAIL_ATMC_SNDNG_DSPTCH_ADRES, #{secretKey}))
|
|
, '/mngr/ntcn/email/updateMarktRecptnArgeAt'
|
|
, '03' REGUSR_DV
|
|
, 0 REGUSR
|
|
, NOW() REGIST_DT
|
|
, '3'
|
|
FROM GC_SHOP S
|
|
INNER JOIN GC_EMAIL_FORM EF
|
|
ON S.SOPMAL_CD = EF.SOPMAL_CD
|
|
AND EF.FORM_DV_CD = 'FORM_DV_CMMN'
|
|
AND EF.FORM_DTL_DV_CD = '01' -- 광고동의
|
|
AND EF.USE_AT = 'Y'
|
|
INNER JOIN GC_MESSAGE_SNDNG MS
|
|
ON S.SOPMAL_CD = MS.SOPMAL_CD
|
|
AND MS.FORM_DV_CD = 'FORM_DV_CMMN'
|
|
AND MS.FORM_DTL_DV_CD = '01'
|
|
AND MS.USE_AT = 'Y'
|
|
]]>
|
|
</insert>
|
|
<!-- 회원 2년 메일 대상자 -->
|
|
<insert id="insertMbrMarktAgreEmailTo">
|
|
INSERT INTO GC_EMAIL_TO (
|
|
EMAIL_SNDNG_INNB
|
|
, MBR_INNB
|
|
, RECPNT_EMAIL
|
|
, RECPNT_NM
|
|
, STTUS
|
|
, SNDNG_DT
|
|
, RSLT_CD
|
|
, SUBST_DATA
|
|
)
|
|
<![CDATA[
|
|
SELECT
|
|
GE.EMAIL_SNDNG_INNB
|
|
, MBR.MBR_INNB -- 회원번호
|
|
, MBR.EMAIL AS RECPTN_EMAIL -- 이메일
|
|
, MBR.MBR_NM
|
|
, '3'
|
|
, NOW()
|
|
, NULL RSLT_CD
|
|
, CONCAT('{"mbrid"', ':', '"', IFNULL(MBR.MBR_ID, ''), '"'
|
|
, ',"shopName"',':', '"', IFNULL(SHOP.SOPMAL_NM, ''), '"'
|
|
, ',"marktRecptnAgreAt"',':', '"', IFNULL( CASE
|
|
WHEN MA.MARKT_RECPTN_AGRE_AT = 'Y' THEN '동의함'
|
|
ELSE '미동의'
|
|
END, ''), '"'
|
|
, ',"marktRecptnAgreUpdtDt"',':', '"', IFNULL(DATE_FORMAT(MA.MARKT_RECPTN_AGRE_UPDT_DT, '%Y-%m-%d %H:%i:%s'), ''), '"'
|
|
, ',"cscTelnb"',':', '"', IFNULL(SHOP.SMS_ATMC_SNDNG_DSPTCH_NB, ''), '"'
|
|
, ',"rejectTelnb"',':', '"', IFNULL(SHOP.REJECT_TELNB, ''), '"'
|
|
, ',"shopDomain"',':', '"', IFNULL(SHOP.PC_DOMN_ADRES, ''), '"'
|
|
, ',"operBizrnb"',':', '"', IFNULL(COM.BIZRNB, ''), '"'
|
|
, ',"operMobDclNb"',':', '"', IFNULL(COM.MOB_DCL_NB, ''), '"'
|
|
, ',"operReprsntvnm"',':', '"', IFNULL(COM.REPRSNTVNM, ''), '"'
|
|
, ',"operRnmAdres"',':', '"', IFNULL(COM.RNM_ADRES, ''), '"'
|
|
, ',"operDtlAdres"',':', '"', IFNULL(COM.DTL_ADRES, ''), '"'
|
|
, ',"operTelnb"',':', '"', IFNULL(COM.TELNB, ''), '"'
|
|
'}')
|
|
FROM
|
|
GC_MEMBER MBR -- 회원테이블
|
|
INNER JOIN GC_MARKETING_AGREE MA -- 마케팅 동의
|
|
ON MBR.MBR_INNB = MA.MBR_INNB
|
|
AND MBR.MBR_DV_CD = MA.MBR_DV_CD
|
|
AND MA.MARKT_RECPTN_AGRE_AT = 'Y' -- 동의 대상자조회
|
|
INNER JOIN GC_SHOP SHOP -- 쇼핑몰 정보
|
|
ON MA.SOPMAL_CD = SHOP.SOPMAL_CD
|
|
INNER JOIN GC_SHOP_COMPANY SC -- 쇼핑몰운영사
|
|
ON SHOP.SOPMAL_CD = SC.SOPMAL_CD
|
|
AND SC.BSNM_DV_CD = '02'
|
|
INNER JOIN GC_COMPANY COM -- 법인
|
|
ON SC.BSNM_INNB = COM.BSNM_INNB
|
|
INNER JOIN GC_MESSAGE_SNDNG GMS -- 자동발송관리
|
|
ON GMS.SOPMAL_CD = SHOP.SOPMAL_CD
|
|
AND GMS.FORM_DV_CD = 'FORM_DV_CMMN'
|
|
AND GMS.FORM_DTL_DV_CD = '01'
|
|
INNER JOIN GC_EMAIL GE
|
|
ON GE.SOPMAL_CD = GMS.SOPMAL_CD
|
|
AND GE.EMAIL_SNDNG_FORM_INNB = '3'
|
|
WHERE 1=1
|
|
AND MBR.USE_AT = 'Y' -- 멤버 쿼리에는 다 들어가야 합니다. 중요***
|
|
AND MBR.EMAIL > '' -- 이메일 있는 경우만 이메일
|
|
AND TIMESTAMPDIFF(MONTH, IFNULL(MA.MARKT_RECPTN_AGRE_UPDT_DT, MA.UPDT_DT), CURDATE()) % 24 BETWEEN 22 AND 23
|
|
AND (TIMESTAMPDIFF(MONTH, IFNULL(MA.MARKT_RECPTN_AGRE_UPDT_DT, MA.UPDT_DT), CURDATE()) <= 24
|
|
OR TIMESTAMPDIFF(MONTH, MA.MARKT_RECPTN_AGRE_TRNSMIS_DT, CURDATE()) <=24 )
|
|
AND MARKT_RECPTN_AGRE_TRNSMIS_DT < DATE_SUB(CURDATE(), INTERVAL 18 MONTH) -- 넉넉하게 18개월 이내 문자 나간 애들은 제외
|
|
LIMIT 10000
|
|
]]>
|
|
</insert>
|
|
<select id="selectMarktAgreTrgtList"
|
|
resultType="dataMap">
|
|
</select>
|
|
|
|
<insert id="insertEmailLog">
|
|
<selectKey order="BEFORE" keyProperty="emailLogInnb" resultType="java.math.BigInteger">
|
|
<![CDATA[
|
|
SELECT IFNULL(MAX(EMAIL_LOG_INNB), 0)+1
|
|
FROM GC_EMAIL_LOG
|
|
]]>
|
|
</selectKey>
|
|
INSERT IGNORE INTO GC_EMAIL_LOG (
|
|
SOPMAL_CD
|
|
, MBR_INNB
|
|
, ATMC_SNDNG_AT
|
|
, SNDNG_CNT
|
|
, SNDER
|
|
, RCVER
|
|
, SJ
|
|
, CN
|
|
, EMAIL_SNDNG_FORM_INNB
|
|
, ORDR_INNB
|
|
, STTUS
|
|
, REGIST_DT
|
|
)
|
|
VALUES
|
|
<foreach collection="list" item="mssage" index="index" separator=",">
|
|
(
|
|
#{mssage.sopmalCd}
|
|
, #{mssage.mbrInnb}
|
|
, #{mssage.atmcSndngAt}
|
|
, #{mssage.sndngCnt}
|
|
, HEX(AES_ENCRYPT(#{mssage.snder}, #{mssage.secretKey}))
|
|
, HEX(AES_ENCRYPT(#{mssage.rcver}, #{mssage.secretKey}))
|
|
, #{mssage.sj}
|
|
, #{mssage.cn}
|
|
, #{mssage.emailSndngFormInnb}
|
|
, #{mssage.ordrInnb}
|
|
, #{mssage.sttus}
|
|
, NOW()
|
|
)
|
|
</foreach>
|
|
|
|
</insert>
|
|
|
|
<!-- 상태 수정 -->
|
|
<update id="updateMbrMarktAgreEmailSttus">
|
|
<![CDATA[
|
|
UPDATE GC_EMAIL AS EMAIL,
|
|
(SELECT
|
|
ET.EMAIL_SNDNG_INNB
|
|
FROM GC_EMAIL_TO ET
|
|
WHERE ET.STTUS = '3'
|
|
GROUP BY ET.EMAIL_SNDNG_INNB ) S
|
|
SET EMAIL.EMAIL_SNDNG_FORM_INNB = '0'
|
|
WHERE 1 = 1
|
|
AND EMAIL.EMAIL_SNDNG_FORM_INNB = '3'
|
|
AND EMAIL.EMAIL_SNDNG_INNB = S.EMAIL_SNDNG_INNB
|
|
]]>
|
|
</update>
|
|
<!-- 상태 삭제 -->
|
|
<delete id="deleteMbrMarktAgreEmail">
|
|
<![CDATA[
|
|
DELETE FROM GC_EMAIL
|
|
WHERE 1 = 1
|
|
AND EMAIL_SNDNG_FORM_INNB = '3'
|
|
]]>
|
|
</delete>
|
|
|
|
<!-- 상태 수정 -->
|
|
<update id="updateEmailSttus">
|
|
<![CDATA[
|
|
UPDATE GC_EMAIL AS EMAIL,
|
|
(SELECT
|
|
ET.EMAIL_SNDNG_INNB
|
|
FROM GC_EMAIL_TO ET
|
|
WHERE ET.STTUS = #{sttus}
|
|
GROUP BY ET.EMAIL_SNDNG_INNB ) S
|
|
SET EMAIL.EMAIL_SNDNG_FORM_INNB = '0'
|
|
WHERE 1 = 1
|
|
AND EMAIL.EMAIL_SNDNG_FORM_INNB = #{sttus}
|
|
AND EMAIL.EMAIL_SNDNG_INNB = S.EMAIL_SNDNG_INNB
|
|
]]>
|
|
</update>
|
|
<!-- 상태 삭제 -->
|
|
<delete id="deleteEmailNonTrgt">
|
|
<![CDATA[
|
|
DELETE FROM GC_EMAIL
|
|
WHERE 1 = 1
|
|
AND EMAIL_SNDNG_FORM_INNB = #{sttus}
|
|
]]>
|
|
</delete>
|
|
<!-- 이메일 발신 대상자 조회 -->
|
|
<select id="selectEmailVoList">
|
|
<![CDATA[
|
|
SELECT
|
|
GET2.EMAIL_SNDNG_INNB
|
|
, GET2.TRGET_SNB
|
|
, GET2.MBR_INNB
|
|
, CAST(AES_DECRYPT(UNHEX(GET2.RECPNT_EMAIL) , #{secretKey}) AS CHAR(50)) AS RECPNT_EMAIL
|
|
, GET2.RECPNT_NM
|
|
, GET2.STTUS
|
|
, GET2.SNDNG_DT
|
|
, GET2.RSLT_CD
|
|
, GE.SOPMAL_CD
|
|
, GE.SJ
|
|
, GE.CN
|
|
, CAST(AES_DECRYPT(UNHEX(GE.SNDR_EMAIL), #{secretKey}) AS CHAR(50)) AS SNDR_EMAIL
|
|
, GE.RECPTN_RJCT_URL
|
|
, GE.REGUSR_DV
|
|
, GE.REGIST_DT
|
|
, GE.EMAIL_SNDNG_FORM_INNB
|
|
, GET2.SUBST_DATA
|
|
, SHOP.SOPMAL_NM
|
|
FROM GC_EMAIL_TO GET2
|
|
INNER JOIN GC_EMAIL GE
|
|
ON GET2.EMAIL_SNDNG_INNB = GE.EMAIL_SNDNG_INNB
|
|
INNER JOIN GC_SHOP SHOP
|
|
ON SHOP.SOPMAL_CD = GE.SOPMAL_CD
|
|
WHERE 1=1
|
|
AND GET2.STTUS = #{sttus}
|
|
AND DATE(GE.REGIST_DT) = CURDATE()
|
|
ORDER BY GET2.EMAIL_SNDNG_INNB ASC
|
|
]]>
|
|
</select>
|
|
|
|
<!-- 이메일 발송여부 업데이트 -->
|
|
<update id="updateBOEmailSndng">
|
|
<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>
|
|
<update id="updateEmailToSttus">
|
|
<![CDATA[
|
|
UPDATE GC_EMAIL_TO AS EMAILTO
|
|
SET EMAILTO.STTUS = 'REG'
|
|
WHERE 1 = 1
|
|
AND EMAILTO.STTUS = #{sttus}
|
|
]]>
|
|
</update>
|
|
|
|
<update id="updateMbrMarktAgreEmailToSttus">
|
|
<![CDATA[
|
|
UPDATE GC_EMAIL_TO AS EMAILTO
|
|
SET EMAILTO.STTUS = 'REG'
|
|
WHERE 1 = 1
|
|
AND EMAILTO.STTUS = '3'
|
|
]]>
|
|
</update>
|
|
<!-- 쿠폰 만료 -->
|
|
<!-- 비회원 2년 메일 등록 -->
|
|
<insert id="insertCouponEndEmail">
|
|
<![CDATA[
|
|
INSERT INTO GC_EMAIL (
|
|
SOPMAL_CD
|
|
, SNDNG_LC
|
|
, SJ
|
|
, CN
|
|
, SNDR_EMAIL
|
|
, RECPTN_RJCT_URL
|
|
, REGUSR_DV -- 등록자 구분 코드, 01 - 회원, 02 - 관리자, 03 - 시스템
|
|
, REGUSR -- 등록자 고유번호
|
|
, REGIST_DT -- 등록일 현재 NOW()
|
|
, EMAIL_SNDNG_FORM_INNB
|
|
)
|
|
SELECT
|
|
S.SOPMAL_CD
|
|
, NULL SNDNG_LC
|
|
, EF.EMAIL_SJ
|
|
, EF.EMAIL_CN
|
|
, S.EMAIL_ATMC_SNDNG_DSPTCH_ADRES
|
|
, '/mngr/ntcn/email/updateMarktRecptnArgeAt'
|
|
, '03' REGUSR_DV
|
|
, 0 REGUSR
|
|
, NOW() REGIST_DT
|
|
, '21'
|
|
FROM GC_SHOP S
|
|
INNER JOIN GC_EMAIL_FORM EF
|
|
ON S.SOPMAL_CD = EF.SOPMAL_CD
|
|
AND EF.FORM_DV_CD = 'FORM_DV_REMND'
|
|
AND EF.FORM_DTL_DV_CD = '03' -- 광고동의
|
|
AND EF.USE_AT = 'Y'
|
|
INNER JOIN GC_MESSAGE_SNDNG MS
|
|
ON S.SOPMAL_CD = MS.SOPMAL_CD
|
|
AND MS.FORM_DV_CD = 'FORM_DV_REMND'
|
|
AND MS.FORM_DTL_DV_CD = '03'
|
|
AND MS.USE_AT = 'Y'
|
|
]]>
|
|
</insert>
|
|
<insert id="insertCartEmail">
|
|
<![CDATA[
|
|
INSERT INTO GC_EMAIL (
|
|
SOPMAL_CD
|
|
, SNDNG_LC
|
|
, SJ
|
|
, CN
|
|
, SNDR_EMAIL
|
|
, RECPTN_RJCT_URL
|
|
, REGUSR_DV -- 등록자 구분 코드, 01 - 회원, 02 - 관리자, 03 - 시스템
|
|
, REGUSR -- 등록자 고유번호
|
|
, REGIST_DT -- 등록일 현재 NOW()
|
|
, EMAIL_SNDNG_FORM_INNB
|
|
)
|
|
SELECT
|
|
S.SOPMAL_CD
|
|
, NULL SNDNG_LC
|
|
, EF.EMAIL_SJ
|
|
, EF.EMAIL_CN
|
|
, S.EMAIL_ATMC_SNDNG_DSPTCH_ADRES
|
|
, '/mngr/ntcn/email/updateMarktRecptnArgeAt'
|
|
, '03' REGUSR_DV
|
|
, 0 REGUSR
|
|
, NOW() REGIST_DT
|
|
, '24'
|
|
FROM GC_SHOP S
|
|
INNER JOIN GC_EMAIL_FORM EF
|
|
ON S.SOPMAL_CD = EF.SOPMAL_CD
|
|
AND EF.FORM_DV_CD = 'FORM_DV_REMND'
|
|
AND EF.FORM_DTL_DV_CD = '06' -- 광고동의
|
|
AND EF.USE_AT = 'Y'
|
|
INNER JOIN GC_MESSAGE_SNDNG MS
|
|
ON S.SOPMAL_CD = MS.SOPMAL_CD
|
|
AND MS.FORM_DV_CD = 'FORM_DV_REMND'
|
|
AND MS.FORM_DTL_DV_CD = '06'
|
|
AND MS.USE_AT = 'Y'
|
|
]]>
|
|
</insert>
|
|
|
|
<insert id="insertCartSaleEmail">
|
|
<![CDATA[
|
|
INSERT INTO GC_EMAIL (
|
|
SOPMAL_CD
|
|
, SNDNG_LC
|
|
, SJ
|
|
, CN
|
|
, SNDR_EMAIL
|
|
, RECPTN_RJCT_URL
|
|
, REGUSR_DV -- 등록자 구분 코드, 01 - 회원, 02 - 관리자, 03 - 시스템
|
|
, REGUSR -- 등록자 고유번호
|
|
, REGIST_DT -- 등록일 현재 NOW()
|
|
, EMAIL_SNDNG_FORM_INNB
|
|
)
|
|
SELECT
|
|
S.SOPMAL_CD
|
|
, NULL SNDNG_LC
|
|
, EF.EMAIL_SJ
|
|
, EF.EMAIL_CN
|
|
, S.EMAIL_ATMC_SNDNG_DSPTCH_ADRES
|
|
, '/mngr/ntcn/email/updateMarktRecptnArgeAt'
|
|
, '03' REGUSR_DV
|
|
, 0 REGUSR
|
|
, NOW() REGIST_DT
|
|
, '25'
|
|
FROM GC_SHOP S
|
|
INNER JOIN GC_EMAIL_FORM EF
|
|
ON S.SOPMAL_CD = EF.SOPMAL_CD
|
|
AND EF.FORM_DV_CD = 'FORM_DV_REMND'
|
|
AND EF.FORM_DTL_DV_CD = '08' -- 광고동의
|
|
AND EF.USE_AT = 'Y'
|
|
INNER JOIN GC_MESSAGE_SNDNG MS
|
|
ON S.SOPMAL_CD = MS.SOPMAL_CD
|
|
AND MS.FORM_DV_CD = 'FORM_DV_REMND'
|
|
AND MS.FORM_DTL_DV_CD = '08'
|
|
AND MS.USE_AT = 'Y'
|
|
]]>
|
|
</insert>
|
|
<!-- 마일리지 만료 안내 -->
|
|
<select id="selectMlgTrgtListEmailInqire"
|
|
resultType="dataMap">
|
|
<![CDATA[
|
|
SELECT SHOP.SOPMAL_NM AS SHOP_NAME -- 쇼핑몰명
|
|
, CONCAT(REPLACE(SHOP.PC_DOMN_ADRES, 'https://',''), '/sopmal/mpage/mbr/selectMpageMainInqire') AS MYPAGE_SHORT_URL -- 마이페이지
|
|
, MLG.MBR_INNB -- 회원번호
|
|
, MLG.MBR_DV_CD -- 회원구분코드
|
|
, MBR.MBR_TY_CD -- 회원타입코드
|
|
, MBR.MBR_ID -- 회원 아이디
|
|
, MBR.MBR_NM AS USER_NAME -- 회원명 (템플릿위해 중복)
|
|
, MBR.MBR_NM AS USERNAME -- 회원명
|
|
, CURDATE() AS CURDATE -- 현재시간
|
|
, MBR.EMAIL AS RECPTN_EMAIL -- 수신 이메일
|
|
, MBR.MBTLNB AS RECPTN_NB -- 수신 번호
|
|
, MLG.SOPMAL_CD -- 쇼핑몰코드
|
|
, FORMAT(SUM(BLCE), 0) AS MILEAGE -- 현재 총 마일리지
|
|
, FORMAT(SUM( IF( DATE(MLG.USE_POSBL_END_DT) BETWEEN DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 1 DAY)
|
|
AND LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 1 MONTH)),
|
|
BLCE,
|
|
0
|
|
)
|
|
), 0
|
|
) AS EXP_MILEAGE -- 만료예상마일리지 (템플릿 위해 중복 조회)
|
|
, FORMAT(SUM( IF( DATE(MLG.USE_POSBL_END_DT) BETWEEN DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 1 DAY)
|
|
AND LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 1 MONTH)),
|
|
BLCE,
|
|
0
|
|
)
|
|
), 0
|
|
) AS MILEAGE_REST -- 만료예상마일리지 (템플릿 위해 중복 조회)
|
|
, GE.*
|
|
FROM GC_MILEAGE MLG
|
|
INNER JOIN GC_MEMBER MBR -- 회원테이블
|
|
ON MBR.MBR_INNB = MLG.MBR_INNB
|
|
AND MBR.MBR_DV_CD = MLG.MBR_DV_CD
|
|
INNER JOIN GC_MESSAGE_SNDNG GMS -- 자동발송테이블
|
|
ON GMS.SOPMAL_CD = GMA.SOPMAL_CD
|
|
AND GMS.FORM_DV_CD = #{formDvCd}
|
|
AND GMS.FORM_DTL_DV_CD = #{formDtlDvCd}
|
|
INNER JOIN GC_EMAIL_FORM GEF
|
|
ON GEF.SOPMAL_CD = GMS.SOPMAL_CD
|
|
AND GEF.EMAIL_SNDNG_FORM_INNB = GMS.EMAIL_SNDNG_FORM_INNB
|
|
AND GEF.USE_AT = 'Y'
|
|
INNER JOIN GC_SHOP SHOP -- 쇼핑몰
|
|
ON SHOP.SOPMAL_CD = MLG.SOPMAL_CD
|
|
INNER JOIN GC_EMAIL GE
|
|
ON GE.SOPMAL_CD = SHOP.SOPMAL_CD
|
|
AND GE.EMAIL_SNDNG_FORM_INNB = '22'
|
|
WHERE 1=1
|
|
AND MLG.BLCE > 0 -- 잔액 0 이상
|
|
AND MLG.CANCL_AT = 'N' -- 취소되지 않은 마일리지
|
|
AND MLG.END_AT = 'N' -- 만료되지 않은 마일리지
|
|
AND MLG.USE_POSBL_END_DT >= NOW() -- 만료기간 남아있는 마일리지
|
|
AND MBR.MBTLNB > ''
|
|
GROUP BY MLG.MBR_INNB, MLG.MBR_DV_CD, MLG.SOPMAL_CD, SHOP.SOPMAL_NM, SHOP.MBL_DOMN_ADRES, GE.EMAIL_SNDNG_INNB
|
|
HAVING SUM( IF( DATE(MLG.USE_POSBL_END_DT) BETWEEN DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 1 DAY)
|
|
AND LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 1 MONTH)),
|
|
BLCE,
|
|
0
|
|
)
|
|
) > 0 -- 만료 대상 마일리지가 남아있는 경우
|
|
]]>
|
|
</select>
|
|
|
|
<!-- 회원 2년 메일 등록 -->
|
|
<insert id="insertMlgExpEmail">
|
|
<![CDATA[
|
|
INSERT INTO GC_EMAIL (
|
|
SOPMAL_CD
|
|
, SNDNG_LC
|
|
, SJ
|
|
, CN
|
|
, SNDR_EMAIL
|
|
, RECPTN_RJCT_URL
|
|
, REGUSR_DV -- 등록자 구분 코드, 01 - 회원, 02 - 관리자, 03 - 시스템
|
|
, REGUSR -- 등록자 고유번호
|
|
, REGIST_DT -- 등록일 현재 NOW()
|
|
, EMAIL_SNDNG_FORM_INNB
|
|
)
|
|
SELECT
|
|
S.SOPMAL_CD
|
|
, NULL SNDNG_LC
|
|
, EF.EMAIL_SJ
|
|
, EF.EMAIL_CN
|
|
, S.EMAIL_ATMC_SNDNG_DSPTCH_ADRES
|
|
, '/mngr/ntcn/email/updateMarktRecptnArgeAt'
|
|
, '03' REGUSR_DV
|
|
, 0 REGUSR
|
|
, NOW() REGIST_DT
|
|
, '22'
|
|
FROM GC_SHOP S
|
|
INNER JOIN GC_EMAIL_FORM EF
|
|
ON S.SOPMAL_CD = EF.SOPMAL_CD
|
|
AND EF.FORM_DV_CD = 'FORM_DV_REMND'
|
|
AND EF.FORM_DTL_DV_CD = '04' -- 광고동의
|
|
AND EF.USE_AT = 'Y'
|
|
INNER JOIN GC_MESSAGE_SNDNG MS
|
|
ON S.SOPMAL_CD = MS.SOPMAL_CD
|
|
AND MS.FORM_DV_CD = 'FORM_DV_REMND'
|
|
AND MS.FORM_DTL_DV_CD = '04'
|
|
AND MS.USE_AT = 'Y'
|
|
]]>
|
|
</insert>
|
|
<!-- 이메일 발송 대상자 조회 -->
|
|
<select id="selectEmailLogOkList">
|
|
SELECT
|
|
LOG.SOPMAL_CD
|
|
, LOG.MBR_INNB
|
|
, LOG.RCVER
|
|
FROM GC_EMAIL_LOG LOG
|
|
WHERE 1=1
|
|
AND LOG.EMAIL_SNDNG_FORM_INNB = #{sttus}
|
|
AND LOG.STTUS = 'OK'
|
|
</select>
|
|
<!-- 회원 2년 이메일 대상자 업데이트 -->
|
|
<update id="updateMarktAgreTrnsmisDt">
|
|
UPDATE GC_MARKETING_AGREE GMA
|
|
INNER JOIN GC_MEMBER MBR
|
|
ON MBR.MBR_DV_CD = GMA.MBR_DV_CD
|
|
AND MBR.MBR_INNB = GMA.MBR_INNB
|
|
SET GMA.MARKT_RECPTN_AGRE_TRNSMIS_DT = NOW()
|
|
WHERE 1=1
|
|
AND GMA.SOPMAL_CD = #{sopmalCd}
|
|
AND GMA.MBR_INNB = #{mbrInnb}
|
|
AND MBR.EMAIL = HEX(AES_ENCRYPT(#{rcver}, #{secretKey}))
|
|
</update>
|
|
|
|
|
|
|
|
<!-- 이메일 발송 후 상태 수정 -->
|
|
<update id="updateEmailSendSttus">
|
|
UPDATE GC_EMAIL_TO
|
|
SET
|
|
STTUS = #{sttus}
|
|
, SNDNG_DT = NOW()
|
|
, RSLT_CD = #{rsltCd}
|
|
WHERE 1=1
|
|
AND EMAIL_SNDNG_INNB = #{emailSndngInnb}
|
|
AND TRGET_SNB = #{trgetSnb}
|
|
</update>
|
|
|
|
<!-- 이메일 로그 등록 -->
|
|
<insert id="insertEmailSendLog">
|
|
INSERT INTO GC_EMAIL_LOG (
|
|
SOPMAL_CD
|
|
, MBR_INNB
|
|
, ATMC_SNDNG_AT
|
|
, SNDNG_CNT
|
|
, SNDER
|
|
, RCVER
|
|
, SJ
|
|
, CN
|
|
, EMAIL_SNDNG_FORM_INNB
|
|
, ORDR_INNB
|
|
, STTUS
|
|
, REGIST_DT
|
|
)
|
|
VALUES
|
|
(
|
|
#{sopmalCd}
|
|
, #{mbrInnb}
|
|
, #{atmcSndngAt}
|
|
, #{sndngCnt}
|
|
, HEX(AES_ENCRYPT(#{snder}, '1df5be2f7e90ae36'))
|
|
, HEX(AES_ENCRYPT(#{rcver}, '1df5be2f7e90ae36'))
|
|
, #{sj}
|
|
, #{cn}
|
|
, #{emailSndngFormInnb}
|
|
, #{ordrInnb}
|
|
, #{sttus}
|
|
, SYSDATE()
|
|
)
|
|
</insert>
|
|
</mapper>
|