초기소스
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
<?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.alarm.mapper.BOAlarmMapper">
|
||||
|
||||
|
||||
<select id="selectAnswerCount">
|
||||
|
||||
SELECT
|
||||
'게시판' as menuName,
|
||||
T1.BBS_ID,
|
||||
COUNT(T1.BBSCTT_INNB) AS cnt
|
||||
FROM GC_BOARDDATA T1
|
||||
LEFT JOIN GC_BOARDDATA T2 ON (T2.SOPMAL_CD = T1.SOPMAL_CD AND T2.BBS_ID = T1.BBS_ID AND T2.PARNTS_BBSCTT_INNB = T1.BBSCTT_INNB)
|
||||
WHERE T1.SOPMAL_CD = #{sopmalCd}
|
||||
AND T1.BBS_ID IN ('goods_qna','propose_bbs')
|
||||
AND T1.REGIST_DT >= DATE_ADD(NOW(),INTERVAL - 30 DAY)
|
||||
AND T1.USE_AT = 'Y'
|
||||
AND T1.EXPSR_AT = 'Y'
|
||||
AND T1.PARNTS_BBSCTT_INNB IS NULL
|
||||
AND T2.BBSCTT_INNB IS NULL
|
||||
GROUP BY T1.BBS_ID
|
||||
|
||||
</select>
|
||||
|
||||
<select id = "selectRefundCount">
|
||||
|
||||
SELECT
|
||||
'주문' as menuName,
|
||||
COUNT(ORDR_INNB) AS cnt
|
||||
FROM GC_ORDER_REFUND
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND REFUND_REQST_DT >= DATE_ADD(NOW(),INTERVAL - 30 DAY)
|
||||
AND (REFUND_PROCS_STTUS_CD = '01' OR RETURN_PROCS_STTUS_CD = '01')
|
||||
AND USE_AT = 'Y'
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
|
||||
@@ -0,0 +1,208 @@
|
||||
<?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.analytics.mapper.BOAnalyticsMapper">
|
||||
|
||||
|
||||
<!-- ERP 제상품 조회 WHERE 절 -->
|
||||
<sql id="selectErpGoodsListWhere">
|
||||
<![CDATA[
|
||||
WHERE 1=1
|
||||
AND analysis_order_history_innb BETWEEN #{firstIndex} AND #{lastIndex}
|
||||
]]>
|
||||
<if test="brandCd != null and brandCd != ''">
|
||||
<![CDATA[
|
||||
AND sopmal_cd = #{brandCd}
|
||||
]]>
|
||||
</if>
|
||||
<if test="barcode != null and barcode != ''">
|
||||
<![CDATA[
|
||||
AND barcode = #{barcode}
|
||||
]]>
|
||||
</if>
|
||||
<if test="goodsName != null and goodsName != ''">
|
||||
<![CDATA[
|
||||
AND goods_nm LIKE CONCAT('%', #{goodsName}, '%')
|
||||
]]>
|
||||
</if>
|
||||
|
||||
</sql>
|
||||
|
||||
<sql id="selectErpSetGoodsListWhere">
|
||||
<![CDATA[
|
||||
WHERE 1=1
|
||||
]]>
|
||||
<if test="brandCd != null and brandCd != ''">
|
||||
<![CDATA[
|
||||
AND sopmal_cd = #{brandCd}
|
||||
]]>
|
||||
</if>
|
||||
<if test="setCode != null and setCode != ''">
|
||||
<![CDATA[
|
||||
AND set_code = #{setCode}
|
||||
]]>
|
||||
</if>
|
||||
<if test="barcode != null and barcode != ''">
|
||||
<![CDATA[
|
||||
AND barcode = #{barcode}
|
||||
]]>
|
||||
</if>
|
||||
<if test="setGoodsName != null and setGoodsName != ''">
|
||||
<![CDATA[
|
||||
AND set_goods_nm LIKE CONCAT('%', #{setGoodsName}, '%')
|
||||
]]>
|
||||
</if>
|
||||
<if test="goodsName != null and goodsName != ''">
|
||||
<![CDATA[
|
||||
AND goods_nm LIKE CONCAT('%', #{goodsName}, '%')
|
||||
]]>
|
||||
</if>
|
||||
|
||||
</sql>
|
||||
|
||||
<sql id="selectOrderHistoryListWhere">
|
||||
<![CDATA[
|
||||
WHERE 1=1
|
||||
]]>
|
||||
<if test="brandCd != null and brandCd != ''">
|
||||
<![CDATA[
|
||||
AND sopmal_cd = #{brandCd}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
</sql>
|
||||
|
||||
<select id="selectErpGoodsList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.analytics.vo.BOAnanlyticsErpGoodsSrchVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
ROW_NUMBER() OVER(ORDER BY analysis_erp_goods_innb DESC) AS rnum,
|
||||
analysis_erp_goods_innb as analysisErpGoodsInnb,
|
||||
barcode as barcode,
|
||||
sopmal_cd as sopmalCd,
|
||||
goods_nm as goodsNm,
|
||||
goods_qy as goodsQy,
|
||||
goods_ea as goodsEa,
|
||||
goods_same_code as goodsSameCode,
|
||||
goods_manager as goodsManager
|
||||
FROM
|
||||
GC_ANALYSIS_ERP_GOODS
|
||||
]]>
|
||||
<include refid = "selectErpGoodsListWhere"/>
|
||||
<![CDATA[
|
||||
ORDER BY analysis_erp_goods_innb DESC
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<select id="selectErpGoodsListCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.analytics.vo.BOAnanlyticsErpGoodsSrchVO">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
count(*)
|
||||
FROM
|
||||
GC_ANALYSIS_ERP_GOODS
|
||||
]]>
|
||||
<include refid = "selectErpGoodsListWhere"/>
|
||||
</select>
|
||||
|
||||
<select id="selectErpSetGoodsList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.analytics.vo.BOAnanlyticsErpGoodsSrchVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
ROW_NUMBER() OVER(ORDER BY analysis_erp_set_goods_innb DESC) AS rnum,
|
||||
set_code as setCode,
|
||||
barcode as barcode,
|
||||
sopmal_cd as sopmalCd,
|
||||
barcode_qy as barcodeQy,
|
||||
goods_nm as goodsNm,
|
||||
set_goods_nm as setGoodsNm,
|
||||
gift_yn as giftYn
|
||||
FROM
|
||||
GC_ANALYSIS_ERP_SET_GOODS
|
||||
]]>
|
||||
<include refid = "selectErpSetGoodsListWhere"/>
|
||||
<![CDATA[
|
||||
ORDER BY analysis_erp_set_goods_innb DESC
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<select id="selectErpSetGoodsListCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.analytics.vo.BOAnanlyticsErpGoodsSrchVO">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
count(*)
|
||||
FROM
|
||||
GC_ANALYSIS_ERP_SET_GOODS
|
||||
]]>
|
||||
<include refid = "selectErpSetGoodsListWhere"/>
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectSopmalCd">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
SOPMAL_CD as sopmalCd ,SOPMAL_NM as sopmalNm
|
||||
FROM GC_SHOP
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<update id="updateErpGoods">
|
||||
<foreach collection="jsonData" item="item" index="index" separator=";">
|
||||
UPDATE GC_ANALYSIS_ERP_GOODS SET
|
||||
goods_ea = #{item.goodsEa},
|
||||
goods_same_code = #{item.goodsSameCode},
|
||||
goods_manager = #{item.goodsManager}
|
||||
WHERE analysis_erp_goods_innb = #{item.id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<select id="selectOrderHistoryList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.analytics.vo.BOAnanlyticsErpGoodsSrchVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
analysis_order_history_innb as rnum,
|
||||
SHOP_SET_CD as shopSetCd,
|
||||
barcode as barcode,
|
||||
sopmal_cd as sopmalCd,
|
||||
barcode_qy as barcodeQy,
|
||||
goods_nm as goodsNm,
|
||||
ordr_innb as ordrInnb,
|
||||
rl_setle_amt as rlSetleAmt,
|
||||
CASE WHEN ordr_sttus_cd = '25' THEN '결제확인'
|
||||
WHEN ordr_sttus_cd = '65' THEN '배송중'
|
||||
WHEN ordr_sttus_cd = '75' THEN '배송완료'
|
||||
WHEN ordr_sttus_cd = '85' THEN '취소'
|
||||
ELSE '주문상태 확인 필요' END
|
||||
as ordrSttusCd,
|
||||
goods_qy as goods_qy,
|
||||
payment_dt as paymentDt,
|
||||
sopmal_dv as sopmalDv
|
||||
FROM
|
||||
GC_ANALYSIS_ORDER_HISTORY
|
||||
]]>
|
||||
<include refid = "selectOrderHistoryListWhere"/>
|
||||
<![CDATA[
|
||||
ORDER BY analysis_order_history_innb
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<select id="selectOrderHistoryListCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.analytics.vo.BOAnanlyticsErpGoodsSrchVO">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
count(*)
|
||||
FROM
|
||||
GC_ANALYSIS_ORDER_HISTORY
|
||||
]]>
|
||||
<include refid = "selectOrderHistoryListWhere"/>
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
|
||||
1073
src/main/resources/mybatis/xml/mapper/gcone/api/BOApiMapper.xml
Normal file
1073
src/main/resources/mybatis/xml/mapper/gcone/api/BOApiMapper.xml
Normal file
File diff suppressed because it is too large
Load Diff
173
src/main/resources/mybatis/xml/mapper/gcone/app/BOAppMapper.xml
Normal file
173
src/main/resources/mybatis/xml/mapper/gcone/app/BOAppMapper.xml
Normal file
@@ -0,0 +1,173 @@
|
||||
<?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.app.mapper.BOAppMapper">
|
||||
|
||||
<!-- 앱 실행시 디바이스 정보 등록 -->
|
||||
<insert id="insertBOAppDeviceInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.app.vo.BOAppMbrDvcVO"
|
||||
useGeneratedKeys="true"
|
||||
keyProperty="mbrDeviceInnb">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_MEMBER_DEVICE_INFO (
|
||||
SOPMAL_CD,
|
||||
FCM_TOKEN,
|
||||
PUSH_AGRE_AT,
|
||||
PHAC_AGRE_AT,
|
||||
DEVICE_ID,
|
||||
DEVICE_OS_NM,
|
||||
DEVICE_OS_VER,
|
||||
DEVICE_APP_VER,
|
||||
REGIST_DT,
|
||||
UPDT_DT
|
||||
) VALUES (
|
||||
#{sopmalCd},
|
||||
#{fcmToken},
|
||||
#{pushAgreAt},
|
||||
#{phacAgreAt},
|
||||
#{deviceId},
|
||||
#{deviceOsNm},
|
||||
#{deviceOsVer},
|
||||
#{deviceAppVer},
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 앱 실행시 디바이스 정보 수정 -->
|
||||
<update id="updateBOAppDeviceInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.app.vo.BOAppMbrDvcVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_MEMBER_DEVICE_INFO
|
||||
SET FCM_TOKEN = #{fcmToken},
|
||||
DEVICE_OS_NM = #{deviceOsNm},
|
||||
DEVICE_OS_VER = #{deviceOsVer},
|
||||
DEVICE_APP_VER = #{deviceAppVer},
|
||||
UPDT_DT = NOW()
|
||||
WHERE DEVICE_ID = #{deviceId}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 앱 로그인시 회원-디바이스 정보 등록 -->
|
||||
<insert id="insertBOAppMbrDvcInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.app.vo.BOAppMbrDvcVO"
|
||||
useGeneratedKeys="true"
|
||||
keyProperty="mbrDeviceInnb">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_MEMBER_DEVICE_INFO (
|
||||
SOPMAL_CD,
|
||||
MBR_INNB,
|
||||
MBR_DV_CD,
|
||||
MBR_ID,
|
||||
FCM_TOKEN,
|
||||
PUSH_AGRE_AT,
|
||||
PHAC_AGRE_AT,
|
||||
DEVICE_ID,
|
||||
DEVICE_OS_NM,
|
||||
DEVICE_OS_VER,
|
||||
DEVICE_APP_VER,
|
||||
REGIST_DT,
|
||||
UPDT_DT
|
||||
) VALUES (
|
||||
#{sopmalCd},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{mbrId},
|
||||
#{fcmToken},
|
||||
#{pushAgreAt},
|
||||
#{phacAgreAt},
|
||||
#{deviceId},
|
||||
#{deviceOsNm},
|
||||
#{deviceOsVer},
|
||||
#{deviceAppVer},
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 앱 로그인시 회원-디바이스 정보 수정 -->
|
||||
<update id="updateBOAppMbrDvcInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.app.vo.BOAppMbrDvcVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_MEMBER_DEVICE_INFO
|
||||
SET MBR_INNB = #{mbrInnb},
|
||||
MBR_DV_CD = #{mbrDvCd},
|
||||
MBR_ID = #{mbrId},
|
||||
FCM_TOKEN = #{fcmToken},
|
||||
DEVICE_OS_NM = #{deviceOsNm},
|
||||
DEVICE_OS_VER = #{deviceOsVer},
|
||||
DEVICE_APP_VER = #{deviceAppVer},
|
||||
UPDT_DT = NOW()
|
||||
WHERE DEVICE_ID = #{deviceId}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 앱 알림동의 선택시 수정 -->
|
||||
<update id="updateBOAppMbrDvcPushAgre"
|
||||
parameterType="com.wb.domainserver.domain.gcone.app.vo.BOAppMbrDvcVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_MEMBER_DEVICE_INFO
|
||||
SET PUSH_AGRE_AT = #{pushAgreAt},
|
||||
UPDT_DT = NOW()
|
||||
WHERE DEVICE_ID = #{deviceId}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 앱 신체활동접근동의 선택시 수정 -->
|
||||
<update id="updateBOAppMbrDvcPhacAgre"
|
||||
parameterType="com.wb.domainserver.domain.gcone.app.vo.BOAppMbrDvcVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_MEMBER_DEVICE_INFO
|
||||
SET PHAC_AGRE_AT = #{phacAgreAt},
|
||||
UPDT_DT = NOW()
|
||||
WHERE DEVICE_ID = #{deviceId}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 디바이스 정보 조회 -->
|
||||
<select id="selectBOAppMbrDvcInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.app.vo.BOAppMbrDvcVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT gmdi.SOPMAL_CD,
|
||||
gmdi.MBR_INNB,
|
||||
gmdi.MBR_DV_CD,
|
||||
gmdi.MBR_ID,
|
||||
gmdi.FCM_TOKEN,
|
||||
gmdi.PUSH_AGRE_AT,
|
||||
gmdi.DEVICE_ID,
|
||||
gmdi.DEVICE_OS_NM,
|
||||
gmdi.DEVICE_OS_VER,
|
||||
gmdi.DEVICE_APP_VER,
|
||||
gmdi.REGIST_DT,
|
||||
gmdi.UPDT_DT
|
||||
FROM GC_MEMBER_DEVICE_INFO gmdi
|
||||
LEFT JOIN GC_MEMBER gm ON gm.MBR_INNB = gmdi.MBR_INNB AND gm.MBR_DV_CD = gmdi.MBR_DV_CD
|
||||
WHERE 1 = 1
|
||||
AND gmdi.SOPMAL_CD = #{sopmalCd}
|
||||
AND gmdi.MBR_INNB = #{mbrInnb}
|
||||
AND gmdi.MBR_DV_CD = #{mbrDvCd}
|
||||
AND gmdi.DEVICE_ID = #{deviceId}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 디바이스 정보 중복 조회 -->
|
||||
<select id="selectBOAppMbrDvcDplct"
|
||||
parameterType="com.wb.domainserver.domain.gcone.app.vo.BOAppMbrDvcVO"
|
||||
resultType="Integer">
|
||||
<![CDATA[
|
||||
SELECT COUNT(*)
|
||||
FROM GC_MEMBER_DEVICE_INFO
|
||||
WHERE 1 = 1
|
||||
AND DEVICE_ID = #{deviceId}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
1666
src/main/resources/mybatis/xml/mapper/gcone/bbs/bbs/BOBbsMapper.xml
Normal file
1666
src/main/resources/mybatis/xml/mapper/gcone/bbs/bbs/BOBbsMapper.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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>
|
||||
@@ -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>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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>
|
||||
@@ -0,0 +1,292 @@
|
||||
<?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.bnft.atend.mapper.BOAtendMapper">
|
||||
|
||||
<!-- 혜택 화면 설정 정보 조회 -->
|
||||
<select id="selectBOBenefitScreenInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
b.BNF_INNB, -- 혜택 고유 번호
|
||||
b.USE_AT, -- 사용여부
|
||||
b.SCR_REPRSNT_IMG, -- 화면 대표 이미지 경로
|
||||
b.SCR_REPRSNT_LINK_URL, -- 화면 대표 이미지 링크 URL
|
||||
b.SCR_RWD_IMG, -- 보상 이미지 경로
|
||||
b.SCR_RWD_LINK_URL, -- 보상 이미지 링크 URL
|
||||
b.BNF_WORDS_CN, -- 혜택 안내 문구
|
||||
b.BNF_BGN_DT, -- 진행기간 시작일시
|
||||
b.BNF_END_DT, -- 진행기간 종료일시
|
||||
r.MLG_RWD_AMT -- 마일리지 보상 금액
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
LEFT JOIN GC_BENEFIT_REWARD r ON b.BNF_INNB = r.BNF_INNB
|
||||
WHERE
|
||||
b.BNF_DV_CD = '010' -- 출석체크 혜택 구분 코드
|
||||
AND b.USE_AT = 'Y'
|
||||
AND r.BNF_RWD_CATE_DV_CD = '01010'
|
||||
AND DATE(NOW()) BETWEEN DATE(b.BNF_BGN_DT) AND DATE(b.BNF_END_DT)
|
||||
AND b.SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
b.BNF_INNB -- 혜택 고유 번호로 정렬
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 출석 보상 정보 조회 -->
|
||||
<select id="selectAttendanceRewardInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
br.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
br.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
br.MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
br.COUPON_INNB, -- 쿠폰 고유 번호
|
||||
br.ITM_NM AS ITM_NM, -- 보상 상품 이름
|
||||
br.RWD_CND_CNT, -- 보상 조건 횟수
|
||||
CASE
|
||||
WHEN br.BNF_RWD_CATE_DV_CD = '01010' THEN '매일'
|
||||
WHEN br.BNF_RWD_CATE_DV_CD IN ('01020', '01030') THEN CONCAT('누적 ', br.RWD_CND_CNT, '회')
|
||||
WHEN br.BNF_RWD_CATE_DV_CD = '01040' THEN '100% 출석'
|
||||
ELSE ''
|
||||
END AS reward_condition -- 보상 조건 설명
|
||||
from GC_BENEFIT gb
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_REWARD br
|
||||
ON gb.BNF_INNB = br.BNF_INNB
|
||||
WHERE
|
||||
br.BNF_INNB = #{bnfInnb}
|
||||
AND gb.SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
br.RWD_CND_CNT;
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 월간 출석 현황 조회 -->
|
||||
<select id="selectMonthlyAttendance" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
DATE_FORMAT(BNF_PRT_DT, '%Y-%m-%d') AS attendanceDate -- 출석 날짜
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb} -- 회원 고유 번호
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb} -- 혜택 고유 번호
|
||||
AND DATE_FORMAT(BNF_PRT_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m') -- 현재 월 조건
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 일일 출석 보상 정보 조회 -->
|
||||
<select id="selectDailyAttendanceReward" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
COUPON_INNB, -- 쿠폰 고유 번호
|
||||
ITM_NM -- 표시명
|
||||
FROM
|
||||
GC_BENEFIT_REWARD
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb} -- 혜택 고유 번호
|
||||
AND BNF_RWD_CATE_DV_CD = '01010' -- 일일 출석 보상 코드
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 누적 출석 보상 정보 조회 -->
|
||||
<select id="selectCumulativeAttendanceReward" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
br.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
br.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
br.MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
br.COUPON_INNB, -- 쿠폰 고유 번호
|
||||
COALESCE(cs.COUPON_SNDNG_NM, br.ITM_NM) AS ITM_NM, -- 쿠폰 이름 (쿠폰발송명 우선, 없으면 표시명)
|
||||
br.RWD_CND_CNT -- 보상 조건 횟수
|
||||
FROM
|
||||
GC_BENEFIT_REWARD br
|
||||
LEFT JOIN GC_COUPON_SNDNG cs ON br.COUPON_INNB = cs.COUPON_SNDNG_INNB
|
||||
AND cs.SOPMAL_CD = #{sopmalCd}
|
||||
WHERE
|
||||
br.BNF_INNB = #{bnfInnb} -- 혜택 고유 번호
|
||||
AND br.BNF_RWD_CATE_DV_CD IN ('01020', '01030', '01040') -- 누적 출석 보상 코드들
|
||||
ORDER BY
|
||||
br.RWD_CND_CNT -- 보상 조건 횟수 기준 정렬
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 초록잎 지급 개수 조회 -->
|
||||
<select id="selectLeafCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PYMNT_CNT, -- 지급 초록잎 개수
|
||||
SPECIAL_CNT -- 스페셜 지급 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN
|
||||
WHERE
|
||||
BNF_DV_CD = '010' -- 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!-- 출석체크 참여 -->
|
||||
<insert id="participateAttendanceCheck" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" useGeneratedKeys="true" keyProperty="bnfPrtInnb" keyColumn="BNF_PRT_INNB">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_INNB, -- 혜택 고유 번호
|
||||
BNF_PRT_DT, -- 혜택 참여 일시
|
||||
MBR_INNB, -- 회원 고유 번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
PRT_LEAF_CNT, -- 참여 초록잎 개수
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
)
|
||||
SELECT
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{paidLeafCnt},
|
||||
#{regusr},
|
||||
NOW()
|
||||
WHERE
|
||||
NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE(BNF_PRT_DT) = CURDATE()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 마일리지 적립 (일일/누적 보상 구분) -->
|
||||
<insert id="insertMileageReceipt" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_RECEIPT
|
||||
(
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유 번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유 번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
COUPON_INNB, -- 쿠폰 고유 번호
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#{bnfRcvInnb},
|
||||
#{bnfPrtInnb},
|
||||
#{bnfRwdCateDvCd},
|
||||
#{bnfRwdGodsDvCd},
|
||||
#{mlgRwdAmt},
|
||||
#{couponInnb},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 이번 달 출석 횟수 조회 -->
|
||||
<select id="selectCurrentMonthAttendanceCount" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*) AS currentMonthAttendanceCount -- 이번 달 출석 횟수
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb} -- 회원 고유 번호
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb} -- 혜택 고유 번호
|
||||
AND DATE_FORMAT(BNF_PRT_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m') -- 현재 월 조건
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 누적 출석 마일리지 조회 -->
|
||||
<select id="selectTotalAttendanceMileage" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COALESCE(SUM(r.MLG_RWD_AMT), 0) AS totalAttendanceMileage -- 누적 출석 마일리지
|
||||
FROM
|
||||
GC_BENEFIT_RECEIPT r
|
||||
JOIN
|
||||
GC_BENEFIT_PARTCPTN p ON r.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
WHERE
|
||||
p.MBR_INNB = #{mbrInnb} -- 회원 고유 번호
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.BNF_INNB = #{bnfInnb} -- 혜택 고유 번호
|
||||
AND r.MLG_RWD_AMT IS NOT NULL
|
||||
AND r.MLG_RWD_AMT > 0
|
||||
AND DATE_FORMAT(p.BNF_PRT_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 오늘 출석체크 참여 정보 조회 -->
|
||||
<select id="selectTodayAttendance" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT *
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb} -- 회원 고유 번호
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb} -- 혜택 고유 번호
|
||||
AND DATE(BNF_PRT_DT) = CURDATE() -- 오늘 날짜 조건
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 알림 상태 조회 -->
|
||||
<select id="selectNotificationStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
AGRE_AT -- 동의 여부
|
||||
FROM
|
||||
GC_BENEFIT_AGREE
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb} -- 회원 고유번호
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_DV_CD = '010' -- 혜택 구분 코드 (출석체크)
|
||||
AND BNF_AGRE_DV_CD = '010' -- 혜택 동의 구분 코드 (알림동의)
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 알림 신청 -->
|
||||
<insert id="insertNotification" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_AGREE (
|
||||
SOPMAL_CD, -- 쇼핑몰코드
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
BNF_AGRE_DV_CD, -- 혜택 동의 구분 코드
|
||||
AGRE_AT, -- 동의 여부
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{sopmalCd},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
'010', -- 출석체크 혜택 구분 코드
|
||||
'010', -- 알림동의 구분 코드
|
||||
'Y', -- 동의함
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 알림 on off -->
|
||||
<update id="updateAtendNotification" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_BENEFIT_AGREE
|
||||
SET
|
||||
AGRE_AT = #{agreAt},
|
||||
REGIST_DT = NOW()
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_DV_CD = '010'
|
||||
AND BNF_AGRE_DV_CD = '010'
|
||||
]]>
|
||||
</update>
|
||||
</mapper>
|
||||
@@ -0,0 +1,367 @@
|
||||
<?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.bnft.bnftMain.mapper.BOBnftMainMapper">
|
||||
|
||||
<!-- 혜택 메인 메뉴 목록 조회 -->
|
||||
<select id="selectBnftMainList" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
m.BNF_DV_CD,
|
||||
m.SOPMAL_CD,
|
||||
m.MENU_SJ_1,
|
||||
m.MENU_SJ_2,
|
||||
m.SORT_ORDR,
|
||||
CASE
|
||||
WHEN m.BNF_DV_CD = '120' THEN 'Y'
|
||||
WHEN m.BNF_DV_CD = '140' THEN 'Y'
|
||||
WHEN m.BNF_DV_CD = '020' AND (
|
||||
SELECT COALESCE(d.PHAC_AGRE_AT, 'N')
|
||||
FROM GC_MEMBER_DEVICE_INFO d
|
||||
WHERE d.MBR_INNB = #{mbrInnb}
|
||||
AND d.MBR_DV_CD = #{mbrDvCd}
|
||||
AND d.SOPMAL_CD = #{sopmalCd}
|
||||
AND d.DEVICE_ID = #{deviceId}
|
||||
LIMIT 1
|
||||
) = 'Y' AND EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT b
|
||||
WHERE b.BNF_DV_CD = m.BNF_DV_CD
|
||||
AND b.SOPMAL_CD = m.SOPMAL_CD
|
||||
AND b.USE_AT = 'Y'
|
||||
AND (b.BNF_BGN_DT IS NULL OR b.BNF_BGN_DT <= NOW())
|
||||
AND (b.BNF_END_DT IS NULL OR b.BNF_END_DT >= NOW())
|
||||
) THEN 'Y'
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT b
|
||||
WHERE b.BNF_DV_CD = m.BNF_DV_CD
|
||||
AND b.SOPMAL_CD = m.SOPMAL_CD
|
||||
AND b.USE_AT = 'Y'
|
||||
AND (b.BNF_BGN_DT IS NULL OR b.BNF_BGN_DT <= NOW())
|
||||
AND (b.BNF_END_DT IS NULL OR b.BNF_END_DT >= NOW())
|
||||
) THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS AVAL_AT,
|
||||
CASE
|
||||
WHEN m.BNF_DV_CD = '100' AND EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT b
|
||||
JOIN GC_BENEFIT_NTKCHL n ON b.BNF_INNB = n.BNF_INNB
|
||||
WHERE b.BNF_DV_CD = '100'
|
||||
AND b.SOPMAL_CD = m.SOPMAL_CD
|
||||
AND b.USE_AT = 'Y'
|
||||
AND n.MBR_INNB = #{mbrInnb}
|
||||
AND n.MBR_DV_CD = #{mbrDvCd}
|
||||
AND n.DEL_AT = 'N'
|
||||
) THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS NTK_CHL_AT,
|
||||
(
|
||||
SELECT b.BNF_INNB
|
||||
FROM GC_BENEFIT b
|
||||
JOIN GC_BENEFIT_NTKCHL n ON b.BNF_INNB = n.BNF_INNB
|
||||
WHERE b.BNF_DV_CD = '100'
|
||||
AND b.SOPMAL_CD = m.SOPMAL_CD
|
||||
AND b.USE_AT = 'Y'
|
||||
AND (b.BNF_BGN_DT IS NULL OR b.BNF_BGN_DT <= NOW())
|
||||
AND (b.BNF_END_DT IS NULL OR b.BNF_END_DT >= NOW())
|
||||
AND n.MBR_INNB = #{mbrInnb}
|
||||
AND n.MBR_DV_CD = #{mbrDvCd}
|
||||
AND n.DEL_AT = 'N'
|
||||
ORDER BY n.REGIST_DT DESC
|
||||
LIMIT 1
|
||||
) AS NTK_BNF_INNB,
|
||||
CASE
|
||||
WHEN m.BNF_DV_CD = '050' AND EXISTS (
|
||||
SELECT
|
||||
gbcs.BNF_STTUS_INNB,
|
||||
gbcs.PROGRS_AT,
|
||||
gbcs.BNF_INNB
|
||||
from
|
||||
GC_BENEFIT gb
|
||||
left join
|
||||
GC_BENEFIT_CPSLMKN_STTUS gbcs
|
||||
on gb.BNF_INNB = gbcs.BNF_INNB
|
||||
WHERE
|
||||
gbcs.MBR_INNB = #{mbrInnb}
|
||||
AND gbcs.MBR_DV_CD = #{mbrDvCd}
|
||||
AND gbcs.PROGRS_AT = 'Y'
|
||||
AND gb.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND USE_AT = 'Y'
|
||||
) THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS CPSL_PROGRS_AT,
|
||||
(
|
||||
SELECT s.BNF_INNB
|
||||
FROM GC_BENEFIT_CPSLMKN_STTUS s
|
||||
JOIN GC_BENEFIT b ON s.BNF_INNB = b.BNF_INNB
|
||||
WHERE s.MBR_INNB = #{mbrInnb}
|
||||
AND s.MBR_DV_CD = #{mbrDvCd}
|
||||
AND s.PROGRS_AT = 'Y'
|
||||
AND b.SOPMAL_CD = m.SOPMAL_CD
|
||||
AND b.BNF_DV_CD = '050'
|
||||
AND b.USE_AT = 'Y'
|
||||
AND (b.BNF_BGN_DT IS NULL OR b.BNF_BGN_DT <= NOW())
|
||||
AND (b.BNF_END_DT IS NULL OR b.BNF_END_DT >= NOW())
|
||||
ORDER BY s.REGIST_DT DESC
|
||||
LIMIT 1
|
||||
) AS CPSL_BNF_INNB,
|
||||
CASE
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT b2
|
||||
JOIN GC_BENEFIT_INTEREST bi ON b2.BNF_INNB = bi.BNF_INNB
|
||||
WHERE b2.BNF_DV_CD = m.BNF_DV_CD
|
||||
AND b2.SOPMAL_CD = m.SOPMAL_CD
|
||||
AND bi.USE_AT = 'Y'
|
||||
AND bi.DEL_AT = 'N'
|
||||
) THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS INTRST_AVAL_AT,
|
||||
CASE
|
||||
WHEN m.BNF_DV_CD = '040' THEN (
|
||||
COALESCE(
|
||||
(SELECT SUM(CHG_CNT) FROM GC_BENEFIT_CHARGE
|
||||
WHERE MBR_INNB = #{mbrInnb} AND BNF_DV_CD = '040')
|
||||
, 0)
|
||||
-
|
||||
COALESCE(
|
||||
(SELECT COUNT(*) FROM GC_BENEFIT_PARTCPTN BP
|
||||
INNER JOIN GC_BENEFIT B ON BP.BNF_INNB = B.BNF_INNB
|
||||
WHERE BP.MBR_INNB = #{mbrInnb}
|
||||
AND B.BNF_DV_CD = '040')
|
||||
, 0)
|
||||
)
|
||||
ELSE 0
|
||||
END AS ROULETTE_REMAINING_CNT
|
||||
FROM
|
||||
GC_BENEFIT_MANAGE_MENU m
|
||||
WHERE
|
||||
m.INDICT_AT = 'Y'
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
m.SORT_ORDR asc
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 디바이스 권한 조회 -->
|
||||
<select id="selectDevicePermission" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
PHAC_AGRE_AT
|
||||
FROM
|
||||
GC_MEMBER_DEVICE_INFO
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND DEVICE_ID = #{deviceId}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 배너 목록 조회 -->
|
||||
<select id="selectBannerList" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_BANNER_INNB, -- 혜택 배너 고유번호
|
||||
SOPMAL_CD, -- 쇼핑몰코드
|
||||
BANNER_SJ, -- 배너 제목
|
||||
LINK_URL, -- 링크 URL
|
||||
IMG_FIL_COURS, -- 이미지 파일 경로
|
||||
IMG_FIL_NM, -- 이미지 파일명
|
||||
SORT_ORDR -- 정렬 순서
|
||||
FROM
|
||||
GC_BENEFIT_MANAGE_BANNER
|
||||
WHERE
|
||||
SOPMAL_CD = #{sopmalCd} -- 파라미터로 받은 쇼핑몰 코드
|
||||
AND USE_AT = 'Y' -- 사용 여부가 'Y'인 배너만
|
||||
AND DEL_AT = 'N' -- 삭제되지 않은 배너만
|
||||
ORDER BY
|
||||
SORT_ORDR ASC -- 정렬 순서대로 조회
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 마케팅동의 여부 조회 -->
|
||||
<select id="selectMbrMarktAgreeAt" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
MARKT_RECPTN_AGRE_AT
|
||||
FROM
|
||||
GC_MARKETING_AGREE
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 현재 방영 중인 라이브쇼핑 확인 쿼리 -->
|
||||
<select id="selectCurrentLiveShopping" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
CASE
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT b
|
||||
JOIN GC_BENEFIT_CONTENT c ON b.BNF_INNB = c.BNF_INNB
|
||||
WHERE b.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND b.BNF_DV_CD = '070' -- 라이브쇼핑 혜택 구분 코드
|
||||
AND b.USE_AT = 'Y' -- 사용 중인 혜택만
|
||||
AND c.CN_BGN_DT <= NOW() -- 현재 시간이 방송 시작 시간 이후
|
||||
AND c.CN_END_DT >= NOW() -- 현재 시간이 방송 종료 시간 이전
|
||||
) THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS IS_LIVE_ON_AIR -- 라이브쇼핑 방영 중 여부
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 새로 시작한 비상시적 이벤트 조회 쿼리 -->
|
||||
<select id="selectNewEvents" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
b.BNF_INNB, -- 혜택 설정 고유번호
|
||||
b.BNF_DV_CD, -- 혜택 구분 코드
|
||||
b.BNF_SJ, -- 혜택 제목
|
||||
b.BNF_BGN_DT, -- 혜택 시작 일시
|
||||
b.BNF_END_DT -- 혜택 종료 일시
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
WHERE
|
||||
b.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND b.USE_AT = 'Y' -- 사용 중인 혜택만
|
||||
AND b.BNF_DV_CD NOT IN ('010', '020') -- 출석체크, 만보기 제외
|
||||
AND b.BNF_BGN_DT <= NOW() -- 현재 시간이 혜택 시작 시간 이후
|
||||
AND b.BNF_END_DT >= NOW() -- 현재 시간이 혜택 종료 시간 이전
|
||||
AND DATEDIFF(NOW(), b.BNF_BGN_DT) <= 1 -- 시작한지 7일 이내의 이벤트
|
||||
ORDER BY
|
||||
b.BNF_BGN_DT DESC -- 최근에 시작한 순으로 정렬
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 참여했거나 혜택 지급 완료된 이벤트 조회 쿼리 -->
|
||||
<select id="selectParticipatedEvents" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT DISTINCT
|
||||
b.BNF_INNB, -- 혜택 설정 고유번호
|
||||
b.BNF_DV_CD, -- 혜택 구분 코드
|
||||
b.BNF_SJ, -- 혜택 제목
|
||||
p.BNF_PRT_DT, -- 혜택 참여 일시
|
||||
CASE
|
||||
WHEN r.BNF_RCV_INNB IS NOT NULL THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS REWARD_RECEIVED -- 보상 수령 여부
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
JOIN
|
||||
GC_BENEFIT_PARTCPTN p ON b.BNF_INNB = p.BNF_INNB
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_RECEIPT r ON p.BNF_PRT_INNB = r.BNF_PRT_INNB
|
||||
WHERE
|
||||
b.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND p.MBR_INNB = #{mbrInnb} -- 회원 고유번호
|
||||
AND p.MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드
|
||||
AND b.BNF_DV_CD != '020' -- 만보기 제외 (참여완료 의미 없음)
|
||||
AND b.BNF_DV_CD != '040' -- 룰렛 제외 (참여완료 의미 없음)
|
||||
AND b.BNF_END_DT >= NOW() -- 아직 종료되지 않은 이벤트만
|
||||
AND DATE(p.BNF_PRT_DT) = CURRENT_DATE() -- 모든 혜택에 대해 오늘 참여한 것만 포함
|
||||
ORDER BY
|
||||
p.BNF_PRT_DT DESC -- 최근 참여 순으로 정렬
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- QR 이벤트 혜택 설정 조회 -->
|
||||
<select id="selectQrEventBenefit" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
b.BNF_INNB, -- 혜택 고유 번호
|
||||
b.BNF_SJ, -- 혜택 제목
|
||||
b.USE_AT, -- 사용여부
|
||||
b.BNF_WORDS_CN, -- 혜택 안내 문구
|
||||
b.BNF_BGN_DT, -- 진행기간 시작일시
|
||||
b.BNF_END_DT -- 진행기간 종료일시
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
WHERE
|
||||
b.BNF_DV_CD = '150' -- QR코드 이벤트 혜택 구분 코드
|
||||
AND b.USE_AT = 'Y' -- 사용 중인 혜택만
|
||||
AND b.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND (b.BNF_BGN_DT IS NULL OR b.BNF_BGN_DT <= NOW()) -- 시작일 체크
|
||||
AND (b.BNF_END_DT IS NULL OR b.BNF_END_DT >= NOW()) -- 종료일 체크
|
||||
ORDER BY
|
||||
b.BNF_INNB DESC -- 최신 혜택 우선
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- QR 이벤트 참여 정보 저장 -->
|
||||
<insert id="insertQrEventParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO" useGeneratedKeys="true" keyProperty="bnfPrtInnb" keyColumn="BNF_PRT_INNB">
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_INNB, -- 혜택 고유 번호
|
||||
BNF_PRT_DT, -- 혜택 참여 일시
|
||||
MBR_INNB, -- 회원 고유 번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
STR_INNB, -- 매장 고유번호
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
)
|
||||
VALUES (
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{strInnb},
|
||||
#{mbrInnb},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- QR 이벤트 보상 정보 조회 -->
|
||||
<select id="selectQrEventReward" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
br.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
br.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
br.MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
br.COUPON_INNB, -- 쿠폰 고유 번호
|
||||
COALESCE(cs.COUPON_SNDNG_NM, br.ITM_NM) AS ITM_NM -- 쿠폰 이름 (쿠폰발송명 우선, 없으면 표시명)
|
||||
FROM
|
||||
GC_BENEFIT_REWARD br
|
||||
LEFT JOIN GC_COUPON_SNDNG cs ON br.COUPON_INNB = cs.COUPON_SNDNG_INNB
|
||||
AND cs.SOPMAL_CD = #{sopmalCd}
|
||||
WHERE
|
||||
<if test="bnfInnb != null and bnfInnb != ''">
|
||||
br.BNF_INNB = #{bnfInnb} -- 혜택 고유 번호
|
||||
</if>
|
||||
AND br.BNF_RWD_CATE_DV_CD = '15010' -- QR코드 이벤트 보상 코드
|
||||
ORDER BY
|
||||
br.MLG_RWD_AMT DESC -- 마일리지 높은 순으로 정렬
|
||||
</select>
|
||||
|
||||
<!-- QR 이벤트 보상 영수증 저장 -->
|
||||
<insert id="insertQrEventRewardReceipt" parameterType="com.wb.domainserver.domain.gcone.bnft.bnftMain.vo.BOBnftMainVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
INSERT INTO GC_BENEFIT_RECEIPT
|
||||
(
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유 번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유 번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
COUPON_INNB, -- 쿠폰 고유 번호
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#{bnfRcvInnb},
|
||||
#{bnfPrtInnb},
|
||||
#{bnfRwdCateDvCd},
|
||||
#{bnfRwdGodsDvCd},
|
||||
#{mlgRwdAmt},
|
||||
#{couponInnb},
|
||||
#{mbrInnb},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,201 @@
|
||||
<?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.bnft.conrev.mapper.BOConrevMapper">
|
||||
|
||||
<!-- 베스트 리뷰 목록 조회 -->
|
||||
<select id="selectBestReviewList" parameterType="com.wb.domainserver.domain.gcone.bnft.conrev.vo.BOConrevVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
b.BNF_INNB,
|
||||
b.BNF_SJ,
|
||||
b.BNF_WORDS_CN,
|
||||
b.USE_AT,
|
||||
b.BNF_BGN_DT,
|
||||
b.BNF_END_DT,
|
||||
c.CN_SJ,
|
||||
c.CN_DC,
|
||||
c.LINK_URL,
|
||||
c.IMG_FIL_COURS,
|
||||
c.IMG_FIL_NM,
|
||||
c.TME_SECND,
|
||||
CONCAT(SUBSTRING(c.MBR_NM, 1, 4), '***') MBR_NM,
|
||||
c.WORDS_CN,
|
||||
r.MLG_RWD_AMT
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
JOIN
|
||||
GC_BENEFIT_CONTENT c ON b.BNF_INNB = c.BNF_INNB
|
||||
JOIN
|
||||
GC_BENEFIT_REWARD r ON b.BNF_INNB = r.BNF_INNB
|
||||
WHERE
|
||||
b.BNF_DV_CD = '090' -- 베스트 리뷰보기 코드
|
||||
AND b.USE_AT = 'Y'
|
||||
AND (b.BNF_BGN_DT IS NULL OR b.BNF_BGN_DT <= NOW())
|
||||
AND (b.BNF_END_DT IS NULL OR b.BNF_END_DT >= NOW())
|
||||
AND b.SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
b.BNF_INNB DESC
|
||||
<!-- LIMIT #{pageSize} OFFSET #{offset} -->
|
||||
</select>
|
||||
|
||||
<!-- 리뷰 상세 정보 조회 -->
|
||||
<select id="selectReviewDetail" parameterType="com.wb.domainserver.domain.gcone.bnft.conrev.vo.BOConrevVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
b.BNF_INNB,
|
||||
b.BNF_SJ,
|
||||
c.CN_SJ AS GOODS_NM,
|
||||
c.CN_DC AS REVIEW_CONTENT,
|
||||
c.LINK_URL AS REVIEW_LINK,
|
||||
c.IMG_FIL_COURS,
|
||||
c.IMG_FIL_NM,
|
||||
c.TME_SECND,
|
||||
c.MBR_NM AS REVIEWER_NAME,
|
||||
r.MLG_RWD_AMT
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
JOIN
|
||||
GC_BENEFIT_CONTENT c ON b.BNF_INNB = c.BNF_INNB
|
||||
JOIN
|
||||
GC_BENEFIT_REWARD r ON b.BNF_INNB = r.BNF_INNB
|
||||
WHERE
|
||||
b.BNF_INNB = #{bnfInnb}
|
||||
</select>
|
||||
|
||||
<!-- 베스트 리뷰 보기 마일리지 적립 여부 확인 -->
|
||||
<select id="checkConrevMileageAccumulation" parameterType="com.wb.domainserver.domain.gcone.bnft.conrev.vo.BOConrevVO" resultType="int">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*) -- 적립 건수
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN p
|
||||
JOIN
|
||||
GC_BENEFIT_RECEIPT r ON p.BNF_PRT_INNB = r.BNF_PRT_INNB
|
||||
WHERE
|
||||
p.BNF_INNB = #{bnfInnb} -- 혜택 설정 고유번호
|
||||
AND
|
||||
p.MBR_INNB = #{mbrInnb} -- 회원 고유번호
|
||||
AND
|
||||
p.MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 베스트 리뷰 보기 보상 정보 조회 -->
|
||||
<select id="selectConrevRewardInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.conrev.vo.BOConrevVO" resultType="java.lang.Integer">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
MLG_RWD_AMT -- 마일리지 보상 금액
|
||||
FROM
|
||||
GC_BENEFIT gb
|
||||
LEFT JOIN GC_BENEFIT_REWARD gbr
|
||||
ON gb.BNF_INNB = gbr.BNF_INNB
|
||||
WHERE
|
||||
BNF_RWD_CATE_DV_CD = '09010' -- 베스트리뷰보기 보상 코드
|
||||
AND gb.BNF_INNB = #{bnfInnb}
|
||||
AND gb.USE_AT = 'Y'
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 리뷰 시간 정보 조회 -->
|
||||
<select id="selectReviewTime" parameterType="com.wb.domainserver.domain.gcone.bnft.conrev.vo.BOConrevVO" resultType="java.lang.Integer">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
TME_SECND -- 시간(초)
|
||||
FROM
|
||||
GC_BENEFIT_CONTENT
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb} -- 혜택 설정 고유번호
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 베스트 리뷰 보기 참여 정보 삽입 -->
|
||||
<insert id="insertReviewParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.conrev.vo.BOConrevVO">
|
||||
<selectKey keyProperty="bnfPrtInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_PRT_DT, -- 혜택 참여일시
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
PRT_LEAF_CNT, -- 참여 초록잎 개수
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
) VALUES (
|
||||
#{bnfPrtInnb},
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{paidLeafCnt},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 초록잎 지급량 조회 -->
|
||||
<select id="selectLeafCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PYMNT_CNT, -- 지급 초록잎 개수
|
||||
SPECIAL_CNT -- 스페셜 지급 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN
|
||||
WHERE
|
||||
BNF_DV_CD = '090' -- 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!-- 베스트 리뷰 보기 마일리지 적립 정보 삽입 -->
|
||||
<insert id="insertMileageAccumulation" parameterType="com.wb.domainserver.domain.gcone.bnft.conrev.vo.BOConrevVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
)
|
||||
SELECT
|
||||
#{bnfRcvInnb},
|
||||
latest_participation.BNF_PRT_INNB,
|
||||
'09010', -- 베스트리뷰보기 보상 코드
|
||||
'010', -- 마일리지 보상 상품 코드
|
||||
#{mlgRwdAmt},
|
||||
#{mbrInnb},
|
||||
NOW()
|
||||
FROM (
|
||||
SELECT BNF_PRT_INNB
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
ORDER BY BNF_PRT_DT DESC
|
||||
LIMIT 1
|
||||
) AS latest_participation
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 베스트리뷰 안내문 조회 -->
|
||||
<select id="selectBestReviewGuidance" parameterType="com.wb.domainserver.domain.gcone.bnft.conrev.vo.BOConrevVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_GDCC_INNB, -- 혜택 안내문 고유번호
|
||||
BNF_DV_CD, -- 혜택 구분코드
|
||||
SOPMAL_CD, -- 쇼핑몰코드
|
||||
WORDS_CN_1, -- 안내문 1
|
||||
WORDS_CN_2, -- 안내문 2
|
||||
WORDS_CN_3 -- 안내문 3
|
||||
FROM
|
||||
GC_BENEFIT_GDCC
|
||||
WHERE
|
||||
BNF_DV_CD = '090' -- 베스트리뷰 구분코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰코드
|
||||
]]>
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,644 @@
|
||||
<?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.bnft.cpslmkn.mapper.BOCpslmknMapper">
|
||||
|
||||
<!-- 캡슐만들기 제품목록 조회 -->
|
||||
<select id="selectRewardProductList" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
b.BNF_INNB, -- 혜택 설정 고유번호
|
||||
c.CN_SJ, -- 제품명
|
||||
c.CN_DC, -- 제품 한줄소개
|
||||
c.LINK_URL, -- 구매 URL
|
||||
c.IMG_FIL_COURS, -- 썸네일 이미지 파일 경로
|
||||
c.IMG_FIL_NM, -- 썸네일 이미지 파일명
|
||||
r.RWD_CND_CNT, -- 필요한 초록잎 개수
|
||||
b.USE_AT, -- 사용 여부
|
||||
c.VALID_DT, -- 유효 날짜
|
||||
r.MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
r.COUPON_INNB, -- 쿠폰 고유번호
|
||||
#{sopmalCd} -- 쇼핑몰 코드
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
INNER JOIN
|
||||
GC_BENEFIT_CONTENT c ON b.BNF_INNB = c.BNF_INNB
|
||||
INNER JOIN
|
||||
GC_BENEFIT_REWARD r ON b.BNF_INNB = r.BNF_INNB
|
||||
WHERE
|
||||
b.BNF_DV_CD = '050' -- 캡슐만들기 혜택 구분 코드
|
||||
AND b.USE_AT = 'Y' -- 사용 중인 혜택만 조회
|
||||
AND b.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
ORDER BY
|
||||
c.CN_SJ ASC -- 제품명 기준 오름차순 정렬
|
||||
</select>
|
||||
|
||||
<!-- 캡슐만들기 게임 안내 조회 -->
|
||||
<select id="selectImportantNotice" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
WORDS_CN_1 AS NOTICE_1,
|
||||
WORDS_CN_2 AS NOTICE_2,
|
||||
WORDS_CN_3 AS NOTICE_3
|
||||
FROM GC_BENEFIT_GDCC
|
||||
WHERE BNF_DV_CD = '050' -- 캡슐만들기의 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!--이전 진행 상황 체크 -->
|
||||
<select id="checkPreviousProgress" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
gbcs.BNF_STTUS_INNB, -- 상태 고유번호 반환
|
||||
gbcs.PROGRS_AT,
|
||||
gbcs.BNF_INNB,
|
||||
gbcs.PROGRS_STEP, -- 현재 단계도 반환
|
||||
gbcs.TOT_USE_LEAF_CNT -- 사용된 초록잎도 반환
|
||||
FROM
|
||||
GC_BENEFIT gb
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_CPSLMKN_STTUS gbcs
|
||||
ON gb.BNF_INNB = gbcs.BNF_INNB
|
||||
WHERE
|
||||
gbcs.MBR_INNB = #{mbrInnb}
|
||||
AND gbcs.MBR_DV_CD = #{mbrDvCd}
|
||||
AND gbcs.PROGRS_AT = 'Y' -- 진행 중인 게임만
|
||||
AND gb.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND gb.USE_AT = 'Y'
|
||||
AND gb.BNF_INNB = #{bnfInnb} -- 현재 혜택만 조회
|
||||
ORDER BY gbcs.REGIST_DT DESC -- 최신 게임 우선
|
||||
LIMIT 1 -- 하나만 조회
|
||||
</select>
|
||||
|
||||
<!--필요한 초록잎 개수 조회 -->
|
||||
<select id="selectProductInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
r.RWD_CND_CNT -- 필요한 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_REWARD r
|
||||
WHERE
|
||||
r.BNF_INNB = #{bnfInnb}
|
||||
</select>
|
||||
|
||||
<!-- 게임 진행 현황 -->
|
||||
<select id="selectCpslmknGameStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PROGRS_STEP, -- 진행 단계
|
||||
TOT_USE_LEAF_CNT, -- 총 사용 초록잎 개수
|
||||
BNF_STTUS_INNB -- 게임 상태 고유번호
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN_STTUS
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
AND BNF_STTUS_INNB = #{bnfSttusInnb}
|
||||
AND PROGRS_AT = 'Y'
|
||||
</select>
|
||||
|
||||
<!-- 보유 초록잎 조회 -->
|
||||
<select id="selectOwnedLeafCount" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="int">
|
||||
SELECT
|
||||
COALESCE(
|
||||
(SELECT SUM(PRT_LEAF_CNT)
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}),
|
||||
0
|
||||
) -
|
||||
COALESCE(
|
||||
(SELECT SUM(USE_LEAF_CNT)
|
||||
FROM GC_BENEFIT_CPSLMKN_USELEAF
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}),
|
||||
0
|
||||
) AS owned_leaf_count
|
||||
</select>
|
||||
|
||||
<!-- 진행 상태 업데이트 -->
|
||||
<update id="updateProgressStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO">
|
||||
UPDATE GC_BENEFIT_CPSLMKN_STTUS
|
||||
SET
|
||||
PROGRS_STEP = #{progrsStep}, -- 진행 단계
|
||||
TOT_USE_LEAF_CNT = #{totUseLeafCnt},-- 총 사용 초록잎 개수
|
||||
UPDT_DT = NOW() -- 수정 일시
|
||||
WHERE
|
||||
BNF_STTUS_INNB = #{bnfSttusInnb} -- 고유번호만으로 조건 단순화
|
||||
AND PROGRS_AT = 'Y' -- 진행 중인 게임만 (안전장치)
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
</update>
|
||||
|
||||
<!-- 진행 상태 삽입 -->
|
||||
<insert id="insertProgressStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO">
|
||||
INSERT INTO GC_BENEFIT_CPSLMKN_STTUS (
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
PROGRS_AT, -- 진행 여부
|
||||
PROGRS_STEP, -- 진행 단계
|
||||
TOT_USE_LEAF_CNT, -- 총 사용 초록잎 개수
|
||||
REGIST_DT, -- 등록 일시
|
||||
UPDT_DT -- 수정 일시
|
||||
) VALUES (
|
||||
#{bnfInnb},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
'Y',
|
||||
#{progrsStep},
|
||||
#{totUseLeafCnt},
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 초록잎 사용 내역 저장 -->
|
||||
<insert id="insertLeafUsage" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO">
|
||||
INSERT INTO GC_BENEFIT_CPSLMKN_USELEAF (
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
USE_LEAF_CNT, -- 사용 초록잎 개수
|
||||
PROGRS_STEP, -- 진행 단계
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfInnb},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{useLeafCnt},
|
||||
#{progrsStep},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 진행 상태 저장 또는 업데이트 -->
|
||||
<insert id="upsertProgressStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO">
|
||||
INSERT INTO GC_BENEFIT_CPSLMKN_STTUS (
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
PROGRS_AT, -- 진행 여부
|
||||
PROGRS_STEP, -- 진행 단계
|
||||
TOT_USE_LEAF_CNT, -- 총 사용 초록잎 개수
|
||||
REGIST_DT, -- 등록 일시
|
||||
UPDT_DT -- 수정 일시
|
||||
) VALUES (
|
||||
#{bnfInnb},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
'Y',
|
||||
#{progrsStep},
|
||||
#{totUseLeafCnt},
|
||||
NOW(),
|
||||
NOW()
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
PROGRS_STEP = #{progrsStep},
|
||||
TOT_USE_LEAF_CNT = #{totUseLeafCnt},
|
||||
UPDT_DT = NOW()
|
||||
</insert>
|
||||
|
||||
<!-- 현재 진행 상태와 선택한 보상 확인 -->
|
||||
<select id="selectCurrentProgress" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
s.PROGRS_STEP, -- 현재 단계
|
||||
s.TOT_USE_LEAF_CNT, -- 총 사용 초록잎 개수
|
||||
r.BNF_RWD_GODS_DV_CD, -- 선택한 보상 상품 구분 코드
|
||||
c.CN_SJ, -- 제품명
|
||||
c.CN_DC, -- 제품 설명
|
||||
b.BNF_WORDS_CN -- 중요 사항 안내
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN_STTUS s
|
||||
JOIN
|
||||
GC_BENEFIT_REWARD r ON s.BNF_INNB = r.BNF_INNB
|
||||
JOIN
|
||||
GC_BENEFIT_CONTENT c ON s.BNF_INNB = c.BNF_INNB
|
||||
JOIN
|
||||
GC_BENEFIT b ON s.BNF_INNB = b.BNF_INNB
|
||||
WHERE
|
||||
s.MBR_INNB = #{mbrInnb}
|
||||
AND
|
||||
s.MBR_DV_CD = #{mbrDvCd}
|
||||
AND
|
||||
s.BNF_INNB = #{bnfInnb}
|
||||
AND s.PROGRS_AT = 'Y'
|
||||
</select>
|
||||
|
||||
<!-- 모달 데이터 조회 -->
|
||||
<select id="selectProgressModalData" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
s.PROGRS_STEP, -- 현재 진행 단계
|
||||
s.TOT_USE_LEAF_CNT, -- 총 사용된 초록잎 개수
|
||||
r.RWD_CND_CNT, -- 필요한 총 초록잎 개수
|
||||
c.CN_SJ, -- 선물 제목
|
||||
c.CN_DC, -- 선물 설명
|
||||
c.IMG_FIL_COURS, -- 선물 이미지 URL
|
||||
b.BNF_WORDS_CN -- 중요 공지사항
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN_STTUS s
|
||||
JOIN GC_BENEFIT_REWARD r ON s.BNF_INNB = r.BNF_INNB
|
||||
JOIN GC_BENEFIT_CONTENT c ON s.BNF_INNB = c.BNF_INNB
|
||||
JOIN GC_BENEFIT b ON s.BNF_INNB = b.BNF_INNB
|
||||
WHERE
|
||||
s.MBR_INNB = #{mbrInnb}
|
||||
AND s.MBR_DV_CD = #{mbrDvCd}
|
||||
AND s.BNF_INNB = #{bnfInnb}
|
||||
AND s.PROGRS_AT = 'Y'
|
||||
</select>
|
||||
|
||||
<!-- 캡슐 만들기 알림 설정 정보 조회 -->
|
||||
<select id="selectCpslmknSettingsInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
BNF_AGRE_DV_CD, -- 혜택 동의 구분 코드
|
||||
AGRE_AT, -- 동의 여부
|
||||
BNF_INNB -- 혜택 설정 고유번호
|
||||
FROM
|
||||
GC_BENEFIT_AGREE
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND
|
||||
MBR_DV_CD = #{mbrDvCd}
|
||||
AND
|
||||
BNF_DV_CD = '050' -- 캡슐만들기(050) 혜택 코드
|
||||
AND
|
||||
BNF_AGRE_DV_CD = '010' -- 알림동의(010) 코드
|
||||
AND
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!-- 알림 설정 저장 -->
|
||||
<insert id="upsertNotificationSetting" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO">
|
||||
INSERT INTO GC_BENEFIT_AGREE (
|
||||
SOPMAL_CD, -- 쇼핑몰 코드
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
BNF_AGRE_DV_CD, -- 혜택 동의 구분 코드
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
AGRE_AT, -- 동의 여부
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{sopmalCd},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
'050', -- 캡슐만들기(050) 혜택 코드
|
||||
'010', -- 알림동의(010) 코드
|
||||
#{bnfInnb},
|
||||
#{agreAt},
|
||||
#{mbrInnb},
|
||||
NOW()
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
AGRE_AT = #{agreAt},
|
||||
REGUSR = #{mbrInnb},
|
||||
REGIST_DT = NOW()
|
||||
</insert>
|
||||
|
||||
<!-- 초록잎 생성, 사용 내역 조회 (최근 6개월) -->
|
||||
<select id="selectLeafHistory" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT * FROM (
|
||||
-- 초록잎 생성 내역 (혜택 참여)
|
||||
SELECT
|
||||
'CREATE' AS action_type,
|
||||
CASE b.BNF_DV_CD
|
||||
WHEN '010' THEN '출석체크'
|
||||
WHEN '020' THEN '만보기'
|
||||
WHEN '030' THEN '행운복권'
|
||||
WHEN '040' THEN '룰렛게임'
|
||||
WHEN '050' THEN '캡슐만들기 (퍼즐맞추기)'
|
||||
WHEN '060' THEN '이벤트보기'
|
||||
WHEN '070' THEN '라이브쇼핑 참여'
|
||||
WHEN '080' THEN '할인소식 공유'
|
||||
WHEN '090' THEN '베스트 리뷰보기'
|
||||
WHEN '100' THEN '섭취챌린지'
|
||||
WHEN '110' THEN 'GCpay 가입'
|
||||
WHEN '120' THEN '관심건강분야 설정'
|
||||
WHEN '130' THEN 'OX퀴즈'
|
||||
WHEN '140' THEN '모바일스탬프'
|
||||
WHEN '150' THEN 'QR코드 이벤트'
|
||||
WHEN '900' THEN '구매확정'
|
||||
ELSE '기타'
|
||||
END AS event_name,
|
||||
DATE_FORMAT(p.BNF_PRT_DT, '%Y-%m-%d %H:%i') AS action_datetime,
|
||||
p.PRT_LEAF_CNT AS leaf_count,
|
||||
p.REGIST_DT AS reg_datetime
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN p
|
||||
JOIN
|
||||
GC_BENEFIT b ON p.BNF_INNB = b.BNF_INNB
|
||||
WHERE
|
||||
p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.PRT_LEAF_CNT > 0
|
||||
AND p.BNF_PRT_DT >= DATE_SUB(NOW(), INTERVAL 6 MONTH)
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- 초록잎 사용 내역 (캡슐 만들기)
|
||||
SELECT
|
||||
'USE' AS action_type,
|
||||
'넣기' AS event_name,
|
||||
DATE_FORMAT(u.REGIST_DT, '%Y-%m-%d %H:%i') AS action_datetime,
|
||||
(u.USE_LEAF_CNT * -1) AS leaf_count, -- 사용은 음수로 표시
|
||||
u.REGIST_DT AS reg_datetime
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN_USELEAF u
|
||||
WHERE
|
||||
u.MBR_INNB = #{mbrInnb}
|
||||
AND u.MBR_DV_CD = #{mbrDvCd}
|
||||
AND u.REGIST_DT >= DATE_SUB(NOW(), INTERVAL 6 MONTH)
|
||||
) history
|
||||
ORDER BY
|
||||
reg_datetime DESC
|
||||
LIMIT
|
||||
#{offset}, #{limit}
|
||||
</select>
|
||||
|
||||
<!-- 혜택 고유번호로 보상 정보 조회 -->
|
||||
<select id="selectRewardInfoByBnfInnb" parameterType="long" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
COUPON_INNB -- 쿠폰고유번호
|
||||
-- 필요하다면 다른 보상 관련 컬럼도 추가 (예: ITM_NM)
|
||||
FROM
|
||||
GC_BENEFIT_REWARD
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb}
|
||||
-- 캡슐 만들기 관련 보상은 하나만 존재한다고 가정.
|
||||
-- 만약 여러 개가 있을 수 있다면 추가적인 조건이나 LIMIT 필요
|
||||
</select>
|
||||
|
||||
<!-- 캡슐만들기 5단계 완료 시 혜택 참여 정보 기록 -->
|
||||
<insert id="insertBenefitParticipationOnCompletion" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO">
|
||||
<selectKey keyProperty="bnfPrtInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN
|
||||
</selectKey>
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_PRT_DT, -- 혜택 참여일시 (완료 시점)
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfPrtInnb},
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 캡슐만들기 완료 후 보상 수령 내역 기록 -->
|
||||
<insert id="insertBenefitReceipt" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
COUPON_INNB, -- 쿠폰 고유번호
|
||||
GOODS_INNB, -- 상품 고유번호
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfRcvInnb},
|
||||
#{bnfPrtInnb},
|
||||
#{bnfRwdCateDvCd},
|
||||
#{bnfRwdGodsDvCd},
|
||||
#{mlgRwdAmt},
|
||||
#{couponInnb},
|
||||
#{goodsInnb},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 특정 혜택의 현재 사용 가능 여부 확인 -->
|
||||
<select id="checkBenefitAvailability" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="int">
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM
|
||||
GC_BENEFIT
|
||||
WHERE
|
||||
BNF_DV_CD = '050'
|
||||
AND USE_AT = 'Y'
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 조건 추가
|
||||
AND (BNF_BGN_DT IS NULL OR BNF_BGN_DT <= NOW()) -- 시작일이 없거나 시작일 이후
|
||||
AND (BNF_END_DT IS NULL OR BNF_END_DT >= NOW()) -- 종료일이 없거나 종료일 이전
|
||||
</select>
|
||||
|
||||
<!-- 같은 날짜의 기존 참여 정보 조회 -->
|
||||
<select id="selectTodayParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
BNF_PRT_INNB,
|
||||
PRT_LEAF_CNT
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE(BNF_PRT_DT) = DATE(NOW())
|
||||
ORDER BY BNF_PRT_DT DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 참여 정보 업데이트 (초록잎 추가) -->
|
||||
<update id="updateBenefitParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO">
|
||||
UPDATE GC_BENEFIT_PARTCPTN
|
||||
SET
|
||||
PRT_LEAF_CNT = PRT_LEAF_CNT + #{useLeafCnt},
|
||||
STEP_CNT = #{progrsStep},
|
||||
UPDUSR = #{regusr}, <!-- 명시적으로 updusr 사용 -->
|
||||
UPDT_DT = NOW()
|
||||
WHERE
|
||||
BNF_PRT_INNB = #{bnfPrtInnb}
|
||||
</update>
|
||||
|
||||
<!-- 새 참여 정보 삽입 -->
|
||||
<insert id="insertBenefitParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" useGeneratedKeys="true" keyProperty="bnfPrtInnb">
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_PRT_DT, -- 혜택 참여일시
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
PRT_LEAF_CNT, -- 참여 초록잎 개수
|
||||
STEP_CNT, -- 걸음수
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{useLeafCnt},
|
||||
#{progrsStep}, <!-- 현재 진행 단계를 걸음수로 사용 -->
|
||||
#{regusr}, <!-- 명시적으로 regusr 사용 -->
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 보상 정보 조회 -->
|
||||
<select id="selectRewardInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
r.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
r.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
r.MLG_RWD_AMT, -- 마일리지 금액
|
||||
r.COUPON_INNB -- 쿠폰 고유번호
|
||||
FROM
|
||||
GC_BENEFIT_REWARD r
|
||||
WHERE
|
||||
r.BNF_INNB = #{bnfInnb}
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 캡슐만들기 정보 조회 - 진행 상태가 없어도 기본 안내 정보 반환 -->
|
||||
<select id="selectCapsuleGameInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
COALESCE(s.PROGRS_STEP, 0) AS currentProgressStep, -- 현재 진행 단계 (없으면 0)
|
||||
c.CN_SJ AS rewardProductName, -- 현재 리워드 제품 명
|
||||
c.IMG_FIL_COURS AS productImagePath, -- 제품 이미지 경로
|
||||
g.WORDS_CN_1 AS notice1, -- 캡슐만들기 게임 안내 1
|
||||
g.WORDS_CN_2 AS notice2, -- 캡슐만들기 게임 안내 2
|
||||
g.WORDS_CN_3 AS notice3 -- 캡슐만들기 게임 안내 3
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
INNER JOIN
|
||||
GC_BENEFIT_CONTENT c ON b.BNF_INNB = c.BNF_INNB
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_GDCC g ON b.BNF_DV_CD = g.BNF_DV_CD AND b.SOPMAL_CD = g.SOPMAL_CD
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_CPSLMKN_STTUS s ON b.BNF_INNB = s.BNF_INNB
|
||||
AND s.MBR_INNB = #{mbrInnb}
|
||||
AND s.MBR_DV_CD = #{mbrDvCd}
|
||||
AND s.PROGRS_AT = 'Y'
|
||||
WHERE
|
||||
b.BNF_DV_CD = '050' -- 캡슐만들기 혜택 구분 코드
|
||||
AND b.USE_AT = 'Y' -- 사용 중인 혜택만 조회
|
||||
AND b.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND (#{bnfInnb} IS NULL OR b.BNF_INNB = #{bnfInnb}) -- 특정 혜택 번호가 있으면 해당 혜택만
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 캡슐 만들기 게임 리셋 : 진행 중인 게임만 리셋 (중간에 그만두고 다시 할 때) -->
|
||||
<update id="resetCapsuleGame" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO">
|
||||
UPDATE GC_BENEFIT_CPSLMKN_STTUS
|
||||
SET
|
||||
PROGRS_AT = 'N',
|
||||
UPDT_DT = NOW()
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
AND PROGRS_AT = 'Y' -- 진행 중인 게임만
|
||||
AND BNF_STTUS_INNB = #{bnfSttusInnb} -- 정확한 게임 식별
|
||||
AND ( -- 완료되지 않은 게임만 리셋 가능
|
||||
PROGRS_STEP < 5
|
||||
OR TOT_USE_LEAF_CNT < (
|
||||
SELECT RWD_CND_CNT
|
||||
FROM GC_BENEFIT_REWARD
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
)
|
||||
)
|
||||
</update>
|
||||
|
||||
<!-- 초록잎을 받을 수 있는 이벤트 목록 조회 -->
|
||||
<select id="selectLeafEventList" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
MAX(b.BNF_INNB) AS BNF_INNB, -- 혜택 설정 고유번호 (최신)
|
||||
b.BNF_DV_CD, -- 혜택 구분 코드
|
||||
b.SOPMAL_CD, -- 쇼핑몰 코드
|
||||
MAX(cp.PYMNT_CNT) AS PYMNT_CNT, -- 지급 초록잎 개수
|
||||
MAX(cp.SPECIAL_AT) AS SPECIAL_AT, -- 스페셜 여부 (Y/N)
|
||||
MAX(m.MENU_SJ_1) AS BNF_SJ, -- 메뉴 제목 1
|
||||
MAX(m.MENU_SJ_2) AS MENU_SJ_2, -- 메뉴 제목 2
|
||||
MAX(m.SORT_ORDR) AS SORT_ORDR -- 정렬순서
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
INNER JOIN
|
||||
GC_BENEFIT_CPSLMKN cp ON b.BNF_DV_CD = cp.BNF_DV_CD AND b.SOPMAL_CD = cp.SOPMAL_CD
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_MANAGE_MENU m ON b.BNF_DV_CD = m.BNF_DV_CD AND b.SOPMAL_CD = m.SOPMAL_CD
|
||||
WHERE
|
||||
b.SOPMAL_CD = #{sopmalCd}
|
||||
AND (b.BNF_DV_CD = '120' OR b.USE_AT = 'Y') -- 관심분야설정은 USE_AT 체크 제외
|
||||
AND cp.INDICT_AT = 'Y'
|
||||
AND (b.BNF_DV_CD = '120' OR (b.BNF_BGN_DT <= NOW() AND b.BNF_END_DT >= NOW())) -- 관심분야설정은 기간 체크 제외
|
||||
AND (m.INDICT_AT IS NULL OR m.INDICT_AT = 'Y')
|
||||
GROUP BY
|
||||
b.BNF_DV_CD, b.SOPMAL_CD -- BNF_DV_CD 기준으로만 그룹핑
|
||||
ORDER BY
|
||||
MAX(cp.SPECIAL_AT) DESC, -- 스페셜 이벤트를 먼저 표시
|
||||
MAX(m.SORT_ORDR) ASC, -- 메뉴 정렬순서 적용
|
||||
MAX(b.BNF_INNB) -- 그 다음 일반 순서대로
|
||||
</select>
|
||||
|
||||
<!-- 초록잎 이벤트 총 지급 개수 조회 -->
|
||||
<select id="selectTotalLeafEventPaymentCount" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="int">
|
||||
SELECT
|
||||
COALESCE(SUM(cp.PYMNT_CNT), 0) AS totalPaymentCount
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
INNER JOIN
|
||||
GC_BENEFIT_CONTENT c ON b.BNF_INNB = c.BNF_INNB
|
||||
INNER JOIN
|
||||
GC_BENEFIT_CPSLMKN cp ON b.BNF_DV_CD = cp.BNF_DV_CD AND b.SOPMAL_CD = cp.SOPMAL_CD
|
||||
WHERE
|
||||
b.SOPMAL_CD = #{sopmalCd}
|
||||
AND b.USE_AT = 'Y'
|
||||
AND cp.INDICT_AT = 'Y'
|
||||
AND b.BNF_BGN_DT <= NOW() AND b.BNF_END_DT >= NOW()
|
||||
</select>
|
||||
|
||||
<!-- 캡슐 게임 완료 처리 전용 메소드 -->
|
||||
<update id="completeGame" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO">
|
||||
UPDATE GC_BENEFIT_CPSLMKN_STTUS
|
||||
SET
|
||||
PROGRS_AT = 'N', -- 완료 상태로 변경
|
||||
PROGRS_STEP = 5, -- 완료 단계로 명시적 설정
|
||||
UPDT_DT = NOW()
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
AND PROGRS_AT = 'Y' -- 진행 중인 게임만
|
||||
AND BNF_STTUS_INNB = #{bnfSttusInnb} -- 정확한 게임 식별
|
||||
AND PROGRS_STEP >= 5 -- 5단계 이상
|
||||
AND TOT_USE_LEAF_CNT >= ( -- 필요한 초록잎을 모두 사용한 경우만
|
||||
SELECT RWD_CND_CNT
|
||||
FROM GC_BENEFIT_REWARD
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
)
|
||||
</update>
|
||||
|
||||
<!-- 완료된 게임 확인 (새 게임 시작 가능 여부 판단용) -->
|
||||
<select id="checkCompletedGame" parameterType="com.wb.domainserver.domain.gcone.bnft.cpslmkn.vo.BOCpslmknVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
gbcs.BNF_STTUS_INNB,
|
||||
gbcs.PROGRS_AT,
|
||||
gbcs.BNF_INNB,
|
||||
gbcs.PROGRS_STEP,
|
||||
gbcs.TOT_USE_LEAF_CNT,
|
||||
gbcs.REGIST_DT
|
||||
FROM
|
||||
GC_BENEFIT gb
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_CPSLMKN_STTUS gbcs ON gb.BNF_INNB = gbcs.BNF_INNB
|
||||
WHERE
|
||||
gbcs.MBR_INNB = #{mbrInnb}
|
||||
AND gbcs.MBR_DV_CD = #{mbrDvCd}
|
||||
AND gb.SOPMAL_CD = #{sopmalCd}
|
||||
AND gb.USE_AT = 'Y'
|
||||
AND gb.BNF_DV_CD = '050' -- 캡슐만들기 혜택
|
||||
ORDER BY gbcs.REGIST_DT DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,129 @@
|
||||
<?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.bnft.discshar.mapper.BODiscsharMapper">
|
||||
|
||||
<!-- 할인소식 공유 혜택 정보 조회 -->
|
||||
<select id="selectDiscsharBenefitInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.discshar.vo.BODiscsharVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
b.BNF_INNB, -- 혜택 설정 고유번호
|
||||
b.SOPMAL_CD, -- 쇼핑몰코드
|
||||
b.BNF_DV_CD, -- 혜택 구분 코드
|
||||
b.BNF_SJ, -- 혜택 제목
|
||||
b.BNF_BGN_DT, -- 진행기간 시작일시
|
||||
b.BNF_END_DT, -- 진행기간 종료일시
|
||||
b.SCR_REPRSNT_IMG, -- 화면 대표 이미지
|
||||
b.SCR_REPRSNT_LINK_URL, -- 화면 대표 링크 URL
|
||||
b.BNF_WORDS_CN, -- 혜택 안내
|
||||
c.CN_SJ, -- 내용 제목 (상품명)
|
||||
c.CN_DC, -- 내용 설명
|
||||
c.LINK_URL, -- 링크 (구매 링크)
|
||||
c.IMG_FIL_COURS, -- 이미지파일경로
|
||||
c.IMG_FIL_NM, -- 이미지파일명
|
||||
c.VALID_DT, -- 유효일시 (할인 유효기간)
|
||||
c.TME_SECND, -- 시간(초)
|
||||
c.DSCNT_UNIT_DV_CD, -- 할인구분코드
|
||||
c.DSCNT_AMT, -- 할인금액
|
||||
c.DSCNT_RT, -- 할인율
|
||||
r.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
r.MLG_RWD_AMT -- 마일리지정보
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
LEFT JOIN GC_BENEFIT_CONTENT c ON b.BNF_INNB = c.BNF_INNB
|
||||
LEFT JOIN GC_BENEFIT_REWARD r ON b.BNF_INNB = r.BNF_INNB
|
||||
WHERE
|
||||
b.BNF_DV_CD = '080' -- 할인소식 공유 혜택 구분 코드
|
||||
AND b.USE_AT = 'Y'
|
||||
ORDER BY
|
||||
c.VALID_DT ASC -- 유효일시 기준 오름차순 정렬
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 할인소식 공유 혜택 참여 정보 삽입 -->
|
||||
<insert id="insertDiscsharBenefitParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.discshar.vo.BODiscsharVO">
|
||||
<selectKey keyProperty="bnfPrtInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN
|
||||
(
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_PRT_DT, -- 혜택 참여일시
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#{bnfPrtInnb},
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{mbrInnb},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 할인소식 공유 마일리지 적립 정보 삽입 -->
|
||||
<insert id="insertDiscsharMileageAccumulation" parameterType="com.wb.domainserver.domain.gcone.bnft.discshar.vo.BODiscsharVO">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_RECEIPT
|
||||
(
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
(SELECT BNF_PRT_INNB FROM GC_BENEFIT_PARTCPTN WHERE BNF_INNB = #{bnfInnb} AND MBR_INNB = #{mbrInnb} ORDER BY BNF_PRT_DT DESC LIMIT 1),
|
||||
'08010', -- 할인소식공유 보상 코드
|
||||
'010', -- 마일리지 보상 상품 코드
|
||||
(SELECT MLG_RWD_AMT FROM fm_benefit_reward WHERE BNF_INNB = #{bnfInnb} AND BNF_RWD_CATE_DV_CD = '08010'),
|
||||
#{mbrInnb},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 할인소식 공유 마일리지 적립 여부 확인 -->
|
||||
<select id="checkMileageAccumulation" parameterType="com.wb.domainserver.domain.gcone.bnft.discshar.vo.BODiscsharVO" resultType="int">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*) -- 적립 건수
|
||||
FROM
|
||||
GC_BENEFIT_RECEIPT r
|
||||
JOIN
|
||||
GC_BENEFIT_PARTCPTN p ON r.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
WHERE
|
||||
p.BNF_INNB = #{bnfInnb} -- 혜택 설정 고유번호
|
||||
AND
|
||||
p.MBR_INNB = #{mbrInnb} -- 회원 고유번호
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 할인소식 공유 링크 정보 조회 -->
|
||||
<select id="getDiscsharLinkInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.discshar.vo.BODiscsharVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
b.BNF_INNB, -- 혜택 설정 고유번호
|
||||
b.SCR_REPRSNT_LINK_URL, -- 화면 대표 링크 URL
|
||||
c.LINK_URL, -- 상품 구매 링크
|
||||
c.VALID_DT -- 유효일시 (할인 유효기간)
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
JOIN
|
||||
GC_BENEFIT_CONTENT c ON b.BNF_INNB = c.BNF_INNB
|
||||
WHERE
|
||||
b.BNF_INNB = #{bnfInnb}
|
||||
AND b.USE_AT = 'Y'
|
||||
AND b.BNF_DV_CD = '080' -- 할인소식 공유 혜택 구분 코드
|
||||
]]>
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,175 @@
|
||||
<?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.bnft.evntview.mapper.BOEvntViewMapper">
|
||||
|
||||
<!-- 이벤트 보기 혜택 기본 정보 및 보상 정보 통합 조회 -->
|
||||
<select id="selectEventViewBenefitInfoAndContent" parameterType="com.wb.domainserver.domain.gcone.bnft.evntview.vo.BOEvntViewVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
a.BNF_INNB, -- 혜택 설정 고유번호
|
||||
b.CN_DC AS EVENT_DESC, -- 내용 설명
|
||||
DATE_FORMAT(b.CN_BGN_DT, '%Y-%m-%d %H:%i:%s') AS CN_BGN_DT, -- 시작일시
|
||||
DATE_FORMAT(b.CN_END_DT, '%Y-%m-%d %H:%i:%s') AS CN_END_DT, -- 종료일시
|
||||
b.WORDS_CN AS EVENT_DETAIL, -- 안내내용
|
||||
b.IMG_FIL_COURS AS EVENT_IMG_PATH, -- 이미지파일경로
|
||||
b.IMG_FIL_NM AS EVENT_IMG_NAME, -- 이미지파일명
|
||||
b.TME_SECND AS LOADING_TIME, -- 시간(초)
|
||||
b.LINK_URL AS EVENT_LINK_URL, -- 링크
|
||||
b.CN_SJ AS EVENT_LINK_TITLE, -- 내용 제목
|
||||
b.CN_DC AS EVENT_LINK_DESC, -- 내용 설명
|
||||
-- 보상 정보 추가
|
||||
r.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
r.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
r.MLG_RWD_AMT, -- 마일리지 금액
|
||||
r.COUPON_INNB, -- 쿠폰고유번호
|
||||
r.ITM_NM, -- 표시명
|
||||
CASE
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_RECEIPT rcpt
|
||||
JOIN GC_BENEFIT_PARTCPTN p ON rcpt.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
WHERE p.BNF_INNB = a.BNF_INNB
|
||||
AND p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
) THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS ACCUMULATED_YN -- 적립 완료 여부
|
||||
FROM
|
||||
GC_BENEFIT a -- 혜택 기본 정보 테이블
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_CONTENT b ON a.BNF_INNB = b.BNF_INNB -- 혜택 내용설정 정보 테이블
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_REWARD r ON a.BNF_INNB = r.BNF_INNB
|
||||
AND r.BNF_RWD_CATE_DV_CD = '06010' /* 이벤트보기 보상 코드 */
|
||||
WHERE
|
||||
a.BNF_DV_CD = '060' /* 이벤트보기 혜택 코드 */
|
||||
AND a.USE_AT = 'Y' -- 사용여부
|
||||
AND NOW() BETWEEN b.CN_BGN_DT AND b.CN_END_DT -- gc_benefit_content 테이블의 기간으로 변경
|
||||
AND a.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
<if test="bnfInnb != null">
|
||||
AND a.BNF_INNB = #{bnfInnb} -- 특정 혜택 번호 조건
|
||||
</if>
|
||||
ORDER BY
|
||||
a.REGIST_DT DESC -- 등록일시 기준 내림차순 정렬
|
||||
</select>
|
||||
|
||||
<!-- 이벤트 보기 안내문 조회 -->
|
||||
<select id="selectEventViewInstruction" parameterType="com.wb.domainserver.domain.gcone.bnft.evntview.vo.BOEvntViewVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
WORDS_CN_2 AS WORDS_CN
|
||||
FROM
|
||||
GC_BENEFIT_GDCC
|
||||
WHERE
|
||||
BNF_DV_CD = 060
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!-- 초록잎 지급량 조회 -->
|
||||
<select id="selectLeafCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PYMNT_CNT, -- 지급 초록잎 개수
|
||||
SPECIAL_CNT -- 스페셜 지급 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN
|
||||
WHERE
|
||||
BNF_DV_CD = '060' -- 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!-- 이벤트 보기 혜택 참여 정보 삽입 -->
|
||||
<insert id="insertEventViewBenefitParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.evntview.vo.BOEvntViewVO">
|
||||
<selectKey keyProperty="bnfPrtInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN
|
||||
</selectKey>
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유 번호
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_PRT_DT, -- 혜택 참여일시
|
||||
MBR_INNB, -- 회원고유번호
|
||||
MBR_DV_CD, -- 회원구분코드
|
||||
PRT_LEAF_CNT, -- 참여 초록잎 개수 추가
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
) VALUES (
|
||||
#{bnfPrtInnb},
|
||||
#{bnfInnb}, -- 혜택 설정 고유번호 파라미터
|
||||
NOW(), -- 현재 시간
|
||||
#{mbrInnb}, -- 회원고유번호 파라미터
|
||||
#{mbrDvCd}, -- 회원구분코드 파라미터
|
||||
#{paidLeafCnt}, -- 초록잎 개수 파라미터 추가
|
||||
#{regusr}, -- 등록자 파라미터
|
||||
NOW() -- 현재 시간
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 이벤트 보기 혜택 보상 정보 조회 -->
|
||||
<select id="selectEventViewBenefitRewards" parameterType="com.wb.domainserver.domain.gcone.bnft.evntview.vo.BOEvntViewVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
r.BNF_INNB, -- 혜택 설정 고유번호
|
||||
r.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
r.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
r.MLG_RWD_AMT, -- 마일리지 금액
|
||||
r.COUPON_INNB, -- 쿠폰고유번호
|
||||
r.ITM_NM -- 표시명
|
||||
FROM
|
||||
GC_BENEFIT_REWARD r -- 혜택 보상설정 정보 테이블
|
||||
JOIN
|
||||
GC_BENEFIT b ON r.BNF_INNB = b.BNF_INNB -- 혜택 기본 정보 테이블과 조인 추가
|
||||
WHERE
|
||||
r.BNF_INNB = #{bnfInnb} -- 특정 혜택 번호 조건
|
||||
AND r.BNF_RWD_CATE_DV_CD = '06010' /* 이벤트보기 보상 코드 */
|
||||
AND b.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 조건 추가
|
||||
</select>
|
||||
|
||||
<!-- 이벤트 보기 마일리지 적립 여부 확인 -->
|
||||
<select id="checkMileageAccumulation" parameterType="com.wb.domainserver.domain.gcone.bnft.evntview.vo.BOEvntViewVO" resultType="int">
|
||||
SELECT
|
||||
COUNT(1) -- 행 수 카운트
|
||||
FROM
|
||||
GC_BENEFIT_RECEIPT r -- 혜택 보상수령 내역 테이블
|
||||
JOIN
|
||||
GC_BENEFIT_PARTCPTN p ON r.BNF_PRT_INNB = p.BNF_PRT_INNB -- 혜택 참여 정보 테이블
|
||||
WHERE
|
||||
p.BNF_INNB = #{bnfInnb} -- 특정 혜택 번호 조건
|
||||
AND p.MBR_INNB = #{mbrInnb} -- 회원 고유번호 조건
|
||||
AND p.MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드 조건
|
||||
AND r.BNF_RWD_CATE_DV_CD = '06010' -- 이벤트보기 보상 코드
|
||||
</select>
|
||||
|
||||
<!-- 이벤트 보기 마일리지 적립 정보 삽입 -->
|
||||
<insert id="insertEventViewMileageAccumulation" parameterType="com.wb.domainserver.domain.gcone.bnft.evntview.vo.BOEvntViewVO">
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
) VALUES (
|
||||
#{bnfPrtInnb}, -- 혜택 참여 고유번호 파라미터
|
||||
'06010', /* 이벤트보기 보상 코드 */
|
||||
'010', -- 보상 상품 구분 코드
|
||||
#{mlgRwdAmt}, -- 마일리지 금액 파라미터
|
||||
#{regusr}, -- 등록자 파라미터
|
||||
NOW() -- 현재 시간
|
||||
)
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="AFTER">
|
||||
SELECT LAST_INSERT_ID()
|
||||
</selectKey>
|
||||
</insert>
|
||||
|
||||
<!-- 이벤트 유효성 검증 (날짜 체크) -->
|
||||
<select id="checkEventValidation" parameterType="com.wb.domainserver.domain.gcone.bnft.evntview.vo.BOEvntViewVO" resultType="int">
|
||||
SELECT
|
||||
COUNT(1) -- 유효한 이벤트 수
|
||||
FROM
|
||||
GC_BENEFIT a -- 혜택 기본 정보 테이블
|
||||
JOIN
|
||||
GC_BENEFIT_CONTENT b ON a.BNF_INNB = b.BNF_INNB -- 혜택 내용설정 정보 테이블
|
||||
WHERE
|
||||
a.BNF_INNB = #{bnfInnb} -- 특정 혜택 번호 조건
|
||||
AND a.BNF_DV_CD = '060' /* 이벤트보기 혜택 코드 */
|
||||
AND a.USE_AT = 'Y' -- 사용여부
|
||||
AND NOW() BETWEEN b.CN_BGN_DT AND b.CN_END_DT -- gc_benefit_content 테이블의 기간으로 변경
|
||||
AND a.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,292 @@
|
||||
<?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.bnft.hlthset.mapper.BOHlthsetMapper">
|
||||
|
||||
<!-- 관심건강분야 설정 기본 정보 조회 -->
|
||||
<select id="selectHealthInterestBasicInfo" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
b.BNF_INNB,
|
||||
r.MLG_RWD_AMT, -- 관심분야 리워드
|
||||
b.BNF_WORDS_CN, -- 관심분야 안내문구
|
||||
COALESCE(a.AGRE_AT, 'N') AS AGRE_AT -- 정보받기 동의 여부 (기본값: N)
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
JOIN GC_BENEFIT_REWARD r ON b.BNF_INNB = r.BNF_INNB
|
||||
AND r.BNF_RWD_CATE_DV_CD = '12010'
|
||||
AND r.BNF_RWD_GODS_DV_CD = '010'
|
||||
LEFT JOIN GC_BENEFIT_AGREE a ON b.BNF_INNB = a.BNF_INNB
|
||||
AND a.SOPMAL_CD = #{sopmalCd}
|
||||
AND a.MBR_INNB = #{mbrInnb}
|
||||
AND a.MBR_DV_CD = #{mbrDvCd}
|
||||
AND a.BNF_DV_CD = '120'
|
||||
AND a.BNF_AGRE_DV_CD = '010'
|
||||
WHERE
|
||||
b.BNF_DV_CD = '120'
|
||||
AND b.SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!-- 관심분야 목록 조회 -->
|
||||
<select id="selectInterestAreas"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
i.BNF_INTRST_INNB, -- 관심분야 ID
|
||||
i.INTRST_NM, -- 관심분야명
|
||||
i.BFE_IMG_FIL_COURS, -- 관심분야 이미지 경로
|
||||
CASE WHEN pi.CHOISE_AT = 'Y' THEN 'Y' ELSE 'N' END AS CHOISE_AT -- 선택여부
|
||||
FROM
|
||||
GC_BENEFIT_INTEREST i
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN_INTEREST pi
|
||||
ON i.BNF_INTRST_INNB = pi.BNF_INTRST_INNB
|
||||
AND pi.BNF_PRT_INNB = (
|
||||
SELECT BNF_PRT_INNB
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
ORDER BY BNF_PRT_DT DESC
|
||||
LIMIT 1
|
||||
)
|
||||
WHERE
|
||||
i.BNF_INNB = #{bnfInnb}
|
||||
AND i.USE_AT = 'Y'
|
||||
ORDER BY
|
||||
i.SORT_ORDR
|
||||
</select>
|
||||
|
||||
<!-- 사용자 기존 관심분야 삭제 -->
|
||||
<delete id="deleteUserInterestAreas" parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO">
|
||||
<![CDATA[
|
||||
DELETE FROM GC_BENEFIT_PARTCPTN_INTEREST
|
||||
WHERE BNF_PRT_INNB = (
|
||||
SELECT BNF_PRT_INNB
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
ORDER BY BNF_PRT_DT DESC
|
||||
LIMIT 1
|
||||
)
|
||||
]]>
|
||||
</delete>
|
||||
|
||||
<!-- 새로운 사용자 관심분야 저장 -->
|
||||
<insert id="insertUserInterestAreas" parameterType="java.util.List">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN_INTEREST (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_INTRST_INNB, -- 혜택 관심분야 고유번호
|
||||
CHOISE_AT -- 선택여부
|
||||
) VALUES
|
||||
]]>
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(
|
||||
#{item.bnfPrtInnb},
|
||||
#{item.bnfIntrstInnb},
|
||||
'Y'
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<!-- 초록잎 지급 개수 조회 -->
|
||||
<select id="selectLeafCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PYMNT_CNT, -- 지급 초록잎 개수
|
||||
SPECIAL_CNT -- 스페셜 지급 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN
|
||||
WHERE
|
||||
BNF_DV_CD = '120' -- 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!-- 혜택 참여 정보 삽입 (gc_benefit_partcptn) -->
|
||||
<insert id="insertBenefitParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO">
|
||||
<selectKey keyProperty="bnfPrtInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_PRT_DT, -- 혜택 참여일시
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
PRT_LEAF_CNT, -- 참여 초록잎 개수
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
) VALUES (
|
||||
#{bnfPrtInnb},
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{paidLeafCnt},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 사용자 관심분야 정보 수신 동의 저장 (insert 또는 update) -->
|
||||
<insert id="insertUserInterestAgreement" parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_AGREE (
|
||||
SOPMAL_CD, -- 쇼핑몰 코드 (예: NC, DT)
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드 (예: GC, DT)
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
BNF_AGRE_DV_CD, -- 혜택 동의 구분 코드 (예: '010' : 알림동의)
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
AGRE_AT, -- 동의 여부 (Y/N)
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
) VALUES (
|
||||
#{sopmalCd},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
'120',
|
||||
'010',
|
||||
#{bnfInnb},
|
||||
#{agreAt},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
AGRE_AT = VALUES(AGRE_AT),
|
||||
REGUSR = VALUES(REGUSR),
|
||||
REGIST_DT = NOW()
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 마일리지 적립 내역 저장 -->
|
||||
<insert id="insertMileageReward" parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfRcvInnb},
|
||||
#{bnfPrtInnb},
|
||||
'12010', -- 관심건강분야 보상 코드
|
||||
'010', -- 보상상품 마일리지 코드
|
||||
#{mlgRwdAmt},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 사용자 관심분야 조회 -->
|
||||
<select id="selectUserInterests" parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
i.BNF_INTRST_INNB,
|
||||
i.INTRST_NM
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN_INTEREST pi
|
||||
JOIN
|
||||
GC_BENEFIT_INTEREST i ON pi.BNF_INTRST_INNB = i.BNF_INTRST_INNB
|
||||
WHERE
|
||||
pi.BNF_PRT_INNB = (
|
||||
SELECT BNF_PRT_INNB
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
ORDER BY BNF_PRT_DT DESC
|
||||
LIMIT 1
|
||||
)
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 해당 월에 마일리지 보상을 받았는지 확인 (수정된 버전) -->
|
||||
<select id="hasMonthlyMileageReward" parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO" resultType="boolean">
|
||||
<![CDATA[
|
||||
SELECT EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_RECEIPT r
|
||||
JOIN GC_BENEFIT_PARTCPTN p ON r.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
WHERE p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.BNF_INNB = #{bnfInnb}
|
||||
AND r.BNF_RWD_CATE_DV_CD = '12010' -- 관심건강분야 보상 코드
|
||||
AND DATE_FORMAT(r.REGIST_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')
|
||||
)
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 사용자 관심분야 저장 상태 및 마일리지 적립 여부 조회 (수정된 버전) -->
|
||||
<select id="selectUserInterestSaveStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
CASE WHEN COUNT(DISTINCT pi.BNF_INTRST_INNB) > 0 THEN 'Y' ELSE 'N' END AS saved_yn,
|
||||
CASE WHEN SUM(r.MLG_RWD_AMT) > 0 THEN 'Y' ELSE 'N' END AS mileage_accumulated_yn,
|
||||
COALESCE(SUM(r.MLG_RWD_AMT), 0) AS MLG_RWD_AMT
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN p
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN_INTEREST pi ON p.BNF_PRT_INNB = pi.BNF_PRT_INNB
|
||||
LEFT JOIN GC_BENEFIT_RECEIPT r ON p.BNF_PRT_INNB = r.BNF_PRT_INNB
|
||||
AND r.BNF_RWD_CATE_DV_CD = '12010'
|
||||
AND DATE_FORMAT(r.REGIST_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')
|
||||
WHERE
|
||||
p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.BNF_INNB = #{bnfInnb}
|
||||
AND DATE_FORMAT(p.BNF_PRT_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 마지막 관심분야 참여 월 조회 -->
|
||||
<select id="selectLastInterestParticipationMonth" parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT DATE_FORMAT(MAX(BNF_PRT_DT), '%Y-%m') AS last_month
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_PARTCPTN_INTEREST pi
|
||||
WHERE pi.BNF_PRT_INNB = GC_BENEFIT_PARTCPTN.BNF_PRT_INNB
|
||||
)
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 월별 관심분야 초기화 (관심분야 데이터만 삭제) -->
|
||||
<delete id="resetMonthlyInterestAreas" parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO">
|
||||
<![CDATA[
|
||||
DELETE pi FROM GC_BENEFIT_PARTCPTN_INTEREST pi
|
||||
JOIN GC_BENEFIT_PARTCPTN p ON pi.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
WHERE p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.BNF_INNB = #{bnfInnb}
|
||||
AND DATE_FORMAT(p.BNF_PRT_DT, '%Y-%m') < DATE_FORMAT(NOW(), '%Y-%m')
|
||||
]]>
|
||||
</delete>
|
||||
|
||||
<!-- 현재 월 참여 정보 조회 -->
|
||||
<select id="selectCurrentMonthParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.hlthset.vo.BOHlthsetVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_PRT_INNB,
|
||||
BNF_PRT_DT
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
AND DATE_FORMAT(BNF_PRT_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')
|
||||
ORDER BY BNF_PRT_DT DESC
|
||||
LIMIT 1
|
||||
]]>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,950 @@
|
||||
<?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.bnft.intakchl.mapper.BOIntakchlMapper">
|
||||
|
||||
<!-- 혜택 화면 설정 정보 조회 -->
|
||||
<select id="selectIntakchlScreenInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_INNB, -- 혜택 고유 번호
|
||||
SCR_REPRSNT_IMG, -- 화면 대표 이미지 경로
|
||||
SCR_REPRSNT_LINK_URL, -- 화면 대표 이미지 링크 URL
|
||||
SCR_RWD_IMG, -- 보상 이미지 경로
|
||||
SCR_RWD_LINK_URL, -- 보상 이미지 링크 URL
|
||||
BNF_WORDS_CN -- 혜택 안내 문구
|
||||
FROM
|
||||
GC_BENEFIT
|
||||
WHERE
|
||||
BNF_DV_CD = '100' -- 출석체크 혜택 구분 코드
|
||||
AND USE_AT = 'Y'
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
BNF_INNB -- 혜택 고유 번호로 정렬
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 선택된 제품 추가 -->
|
||||
<insert id="insertSelectedProducts" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
INSERT INTO GC_BENEFIT_NTKCHL (
|
||||
BNF_INNB,
|
||||
MBR_INNB,
|
||||
MBR_DV_CD,
|
||||
GOODS_INNB,
|
||||
SOPMAL_CD,
|
||||
BNF_NTK_STTUS_DV_CD,
|
||||
NTK_CNT,
|
||||
DEL_AT,
|
||||
REGUSR,
|
||||
REGIST_DT
|
||||
)
|
||||
VALUES
|
||||
<foreach collection="products" item="product" separator=",">
|
||||
(
|
||||
#{bnfInnb},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{product.goodsInnb},
|
||||
#{sopmalCd},
|
||||
'010', -- 섭취중 상태
|
||||
0,
|
||||
'N',
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<!-- 선택한 날짜의 전체 섭취 기록 및 총 섭취율 조회 -->
|
||||
<select id="selectDailyTotalIntakeRecord" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COALESCE(total_actual, 0) AS TOTAL_ACTUAL_INTAKE, -- 실제 섭취 횟수 합계
|
||||
COALESCE(total_target, 0) AS TOTAL_TARGET_INTAKE, -- 목표 섭취 횟수 합계
|
||||
COALESCE(
|
||||
CASE
|
||||
WHEN total_target = 0 THEN 0
|
||||
ELSE ROUND(total_actual * 100.0 / total_target)
|
||||
END,
|
||||
0
|
||||
) AS OVERALL_INTAKE_RATE_PERCENTAGE -- 전체 섭취율 백분율 (NULL 방지)
|
||||
FROM (
|
||||
SELECT
|
||||
SUM(actual_count) AS total_actual, -- 실제 섭취 횟수 합계
|
||||
SUM(NTK_CNT) AS total_target -- 목표 섭취 횟수 합계
|
||||
FROM (
|
||||
SELECT
|
||||
n.BNF_NTK_INNB, -- 혜택 섭취챌린지 고유번호
|
||||
n.NTK_CNT, -- 목표 섭취 횟수
|
||||
COUNT(p.BNF_PRT_INNB) AS actual_count -- 실제 섭취 횟수
|
||||
FROM GC_BENEFIT_NTKCHL n
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN_NTKCHL nt
|
||||
ON n.BNF_NTK_INNB = nt.BNF_NTK_INNB
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN p
|
||||
ON nt.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
AND DATE(p.BNF_PRT_DT) = replace(#{selectedDate}, '-', '') -- 날짜 필터링
|
||||
WHERE n.DEL_AT = 'N' -- 삭제되지 않은 데이터만 조회
|
||||
AND n.MBR_INNB = #{mbrInnb} -- 회원 고유번호 필터링 추가
|
||||
AND n.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 필터링 추가
|
||||
AND n.BNF_NTK_STTUS_DV_CD = '010' -- 섭취중 상태만 조회
|
||||
AND (#{bnfInnb} IS NULL OR n.BNF_INNB = #{bnfInnb}) -- 혜택 설정 고유번호 필터링 추가
|
||||
AND DATE(n.REGIST_DT) <= replace(#{selectedDate}, '-', '') -- 제품 등록일이 선택된 날짜 이전이거나 같은 경우만
|
||||
GROUP BY n.BNF_NTK_INNB, n.NTK_CNT
|
||||
) AS product_intake -- 제품별 섭취 정보
|
||||
) AS totals
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 선택한 날짜의 섭취 기록 상세 조회 (제품별) -->
|
||||
<select id="selectDailyIntakeRecordsDetail" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
n.BNF_NTK_INNB, -- 혜택 섭취챌린지 고유번호
|
||||
n.GOODS_INNB, -- 상품 고유번호
|
||||
n.NTK_CNT AS target_intake_count, -- 목표 섭취 횟수
|
||||
COUNT(p.BNF_PRT_INNB) AS today_intake_count, -- 오늘 실제 섭취 횟수
|
||||
CASE
|
||||
WHEN COUNT(p.BNF_PRT_INNB) >= n.NTK_CNT THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS goal_achieved -- 목표 달성 여부 ('Y': 달성, 'N': 미달성)
|
||||
FROM GC_BENEFIT_NTKCHL n
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN_NTKCHL nt ON n.BNF_NTK_INNB = nt.BNF_NTK_INNB
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN p ON nt.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
AND DATE(p.BNF_PRT_DT) = #{selectedDate}
|
||||
WHERE n.DEL_AT = 'N'
|
||||
AND n.MBR_INNB = #{mbrInnb}
|
||||
AND n.MBR_DV_CD = #{mbrDvCd}
|
||||
AND (#{bnfInnb} IS NULL OR n.BNF_INNB = #{bnfInnb})
|
||||
AND n.SOPMAL_CD = #{sopmalCd}
|
||||
AND n.BNF_NTK_STTUS_DV_CD = '010' -- 섭취중 상태만 조회 (추가)
|
||||
GROUP BY n.BNF_NTK_INNB, n.GOODS_INNB, n.NTK_CNT
|
||||
ORDER BY n.BNF_NTK_INNB
|
||||
]]>
|
||||
</select>
|
||||
<!-- 초록잎 지급 개수 조회 -->
|
||||
<select id="selectLeafCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PYMNT_CNT, -- 지급 초록잎 개수
|
||||
SPECIAL_CNT -- 스페셜 지급 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN
|
||||
WHERE
|
||||
BNF_DV_CD = '100' -- 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!-- 마일리지 보상 금액 조회 -->
|
||||
<select id="getMileageRewardAmount" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="java.lang.Double">
|
||||
SELECT CAST(MLG_RWD_AMT AS DECIMAL(12,2)) -- 마일리지 금액
|
||||
FROM GC_BENEFIT_REWARD
|
||||
WHERE BNF_INNB = #{bnfInnb} -- 혜택 설정 고유번호
|
||||
AND BNF_RWD_CATE_DV_CD = '10010' -- 보상 항목 구분 코드 (섭취챌린지 1일 보상)
|
||||
AND BNF_RWD_GODS_DV_CD = '010' -- 보상 상품 구분 코드 (마일리지)
|
||||
</select>
|
||||
|
||||
<!-- 오늘 이미 마일리지를 적립했는지 확인 -->
|
||||
<select id="checkMileageAlreadyAwarded" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="boolean">
|
||||
SELECT EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_RECEIPT r
|
||||
JOIN GC_BENEFIT_PARTCPTN p ON r.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
WHERE p.BNF_INNB = #{bnfInnb} -- 혜택 설정 고유번호
|
||||
AND p.MBR_INNB = #{mbrInnb} -- 회원 고유번호
|
||||
AND p.MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드 추가
|
||||
AND DATE(p.BNF_PRT_DT) = CURDATE() -- 혜택 참여 일시
|
||||
AND r.BNF_RWD_CATE_DV_CD = '10010' -- 보상 항목 구분 코드 (섭취챌린지 1일 보상)
|
||||
)
|
||||
</select>
|
||||
|
||||
<!-- 일일 섭취 목표 달성 여부 확인 -->
|
||||
<select id="checkDailyGoalAchievement" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="boolean">
|
||||
SELECT
|
||||
CASE
|
||||
WHEN COALESCE(SUM(daily_actual), 0) >= COALESCE(SUM(daily_target), 0)
|
||||
AND COALESCE(SUM(daily_target), 0) > 0 THEN true
|
||||
ELSE false
|
||||
END AS goal_achieved
|
||||
FROM (
|
||||
SELECT
|
||||
n.BNF_NTK_INNB,
|
||||
n.NTK_CNT AS daily_target,
|
||||
COUNT(p.BNF_PRT_INNB) AS daily_actual
|
||||
FROM GC_BENEFIT_NTKCHL n
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN_NTKCHL nt ON n.BNF_NTK_INNB = nt.BNF_NTK_INNB
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN p ON nt.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
AND DATE(p.BNF_PRT_DT) = CURDATE()
|
||||
WHERE n.BNF_INNB = #{bnfInnb}
|
||||
AND n.MBR_INNB = #{mbrInnb}
|
||||
AND n.MBR_DV_CD = #{mbrDvCd}
|
||||
AND n.SOPMAL_CD = #{sopmalCd}
|
||||
AND n.BNF_NTK_STTUS_DV_CD = '010' -- 섭취중 상태만
|
||||
AND n.DEL_AT = 'N'
|
||||
GROUP BY n.BNF_NTK_INNB, n.NTK_CNT
|
||||
) AS intake_summary
|
||||
</select>
|
||||
|
||||
<!-- 마일리지 적립 처리 -->
|
||||
<insert id="awardIntakeChallengesMileage" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
)
|
||||
SELECT
|
||||
#{bnfRcvInnb},
|
||||
(SELECT MAX(BNF_PRT_INNB)
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE(BNF_PRT_DT) = CURDATE()
|
||||
),
|
||||
'10010', -- 섭취챌린지 1일 보상 코드
|
||||
'010', -- 마일리지 보상 상품 코드
|
||||
#{mlgRwdAmt},
|
||||
#{mbrInnb},
|
||||
NOW()
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_RECEIPT r
|
||||
JOIN GC_BENEFIT_PARTCPTN p ON r.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
WHERE p.BNF_INNB = #{bnfInnb}
|
||||
AND p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE(p.BNF_PRT_DT) = CURDATE()
|
||||
AND r.BNF_RWD_CATE_DV_CD = '10010'
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 날짜별 상태 정보 조회 -->
|
||||
<select id="selectStatsDateClasses" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
WITH RECURSIVE DateRange AS (
|
||||
-- 날짜 범위 생성 (최근 30일)
|
||||
SELECT DATE_SUB(CURDATE(), INTERVAL 29 DAY) AS date
|
||||
UNION ALL
|
||||
SELECT DATE_ADD(date, INTERVAL 1 DAY)
|
||||
FROM DateRange
|
||||
WHERE date < CURDATE()
|
||||
),
|
||||
DailyIntakeStatus AS (
|
||||
SELECT
|
||||
DATE(p.BNF_PRT_DT) AS participation_date,
|
||||
n.BNF_NTK_INNB,
|
||||
n.NTK_CNT AS target_count,
|
||||
COUNT(pn.BNF_PRT_NTK_INNB) AS actual_count,
|
||||
CASE
|
||||
WHEN COUNT(pn.BNF_PRT_NTK_INNB) >= n.NTK_CNT THEN 'DONE'
|
||||
WHEN COUNT(pn.BNF_PRT_NTK_INNB) > 0 THEN 'ING'
|
||||
ELSE 'NONE'
|
||||
END AS daily_status
|
||||
FROM GC_BENEFIT_NTKCHL n
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN_NTKCHL pn ON n.BNF_NTK_INNB = pn.BNF_NTK_INNB
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN p ON pn.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
WHERE n.MBR_INNB = #{mbrInnb}
|
||||
AND n.MBR_DV_CD = #{mbrDvCd}
|
||||
AND n.BNF_INNB = #{bnfInnb}
|
||||
AND n.SOPMAL_CD = #{sopmalCd}
|
||||
AND n.DEL_AT = 'N'
|
||||
AND n.BNF_NTK_STTUS_DV_CD = '010' -- 섭취중 상태만
|
||||
AND p.BNF_PRT_DT >= DATE_SUB(CURDATE(), INTERVAL 29 DAY)
|
||||
GROUP BY DATE(p.BNF_PRT_DT), n.BNF_NTK_INNB, n.NTK_CNT
|
||||
),
|
||||
ConsecutiveStatus AS (
|
||||
SELECT
|
||||
participation_date,
|
||||
COUNT(CASE WHEN daily_status = 'DONE' THEN 1 END) AS done_count,
|
||||
COUNT(CASE WHEN daily_status = 'ING' THEN 1 END) AS ing_count,
|
||||
ROW_NUMBER() OVER (ORDER BY participation_date DESC) AS days_ago
|
||||
FROM DailyIntakeStatus
|
||||
GROUP BY participation_date
|
||||
),
|
||||
ConsecutiveDays AS (
|
||||
SELECT
|
||||
participation_date,
|
||||
done_count,
|
||||
ing_count,
|
||||
@consecutive := CASE
|
||||
WHEN done_count > 0 THEN @consecutive + 1
|
||||
ELSE 0
|
||||
END AS consecutive_days
|
||||
FROM ConsecutiveStatus
|
||||
CROSS JOIN (SELECT @consecutive := 0) AS vars
|
||||
ORDER BY participation_date
|
||||
)
|
||||
SELECT
|
||||
dr.date,
|
||||
COALESCE(cs.done_count, 0) AS done_count,
|
||||
COALESCE(cs.ing_count, 0) AS ing_count,
|
||||
CASE
|
||||
WHEN COALESCE(cs.done_count, 0) > 0 THEN 'stats_done'
|
||||
WHEN COALESCE(cs.ing_count, 0) > 0 THEN 'stats_ing'
|
||||
ELSE ''
|
||||
END AS stats_done,
|
||||
CASE
|
||||
WHEN COALESCE(cs.done_count, 0) > 0 THEN 'stats_done'
|
||||
WHEN COALESCE(cs.ing_count, 0) > 0 THEN 'stats_ing'
|
||||
ELSE ''
|
||||
END AS stats_ing,
|
||||
CASE
|
||||
WHEN cd.consecutive_days >= 30 THEN 'stats_30done'
|
||||
ELSE ''
|
||||
END AS stats_30done
|
||||
FROM DateRange dr
|
||||
LEFT JOIN ConsecutiveStatus cs ON dr.date = cs.participation_date
|
||||
LEFT JOIN ConsecutiveDays cd ON dr.date = cd.participation_date
|
||||
ORDER BY dr.date DESC
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 현재 챌린지 중인 제품을 조회-->
|
||||
<select id="selectCurrentChallengeProducts" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
n.BNF_NTK_INNB, -- 혜택 섭취챌린지 고유번호
|
||||
n.BNF_INNB, -- 혜택 설정 고유번호
|
||||
n.MBR_INNB, -- 회원 고유번호
|
||||
n.GOODS_INNB AS productId,-- 상품 고유번호
|
||||
g.GOODS_NM AS productName,-- 상품명
|
||||
FN_GET_GOODS_IMAGE(g.SOPMAL_CD, g.GOODS_INNB, '03') AS imageUrl, -- 상품 썸네일 이미지
|
||||
n.NTK_CNT AS dailyIntakeCount, -- 1일 섭취 횟수
|
||||
n.BNF_NTK_STTUS_DV_CD, -- 섭취상태 구분코드 (010: 섭취중, 020: 일시중단, 030: 종료)
|
||||
n.MEMO, -- 메모
|
||||
n.REGIST_DT, -- 등록일시
|
||||
(
|
||||
SELECT COUNT(pn.BNF_PRT_NTK_INNB)
|
||||
FROM GC_BENEFIT_PARTCPTN_NTKCHL pn
|
||||
JOIN GC_BENEFIT_PARTCPTN p ON pn.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
WHERE pn.BNF_NTK_INNB = n.BNF_NTK_INNB
|
||||
AND DATE(p.BNF_PRT_DT) = CASE
|
||||
WHEN #{selectedDate} IS NOT NULL THEN #{selectedDate}
|
||||
ELSE CURDATE()
|
||||
END
|
||||
) AS todayIntakeCount -- 오늘 섭취 횟수
|
||||
FROM
|
||||
GC_BENEFIT_NTKCHL n
|
||||
LEFT JOIN
|
||||
GC_GOODS g ON n.GOODS_INNB = g.GOODS_INNB AND n.SOPMAL_CD = g.SOPMAL_CD
|
||||
WHERE
|
||||
n.MBR_INNB = #{mbrInnb} -- 회원 고유번호
|
||||
AND n.MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드 추가
|
||||
AND (#{bnfInnb} IS NULL OR n.BNF_INNB = #{bnfInnb}) -- 혜택 설정 고유번호
|
||||
AND n.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 필터링 추가
|
||||
AND n.BNF_NTK_STTUS_DV_CD = '010' -- 섭취중 상태
|
||||
AND n.DEL_AT = 'N' -- 삭제되지 않은 데이터
|
||||
AND (#{selectedDate} IS NULL OR DATE(n.REGIST_DT) <= #{selectedDate}) -- 제품 등록일이 선택된 날짜 이전이거나 같은 경우만
|
||||
ORDER BY
|
||||
n.REGIST_DT DESC -- 등록일시 기준 내림차순 정렬
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 섭취챌린지 제품 상세 정보 조회 -->
|
||||
<select id="selectIntakeChallengeProductDetail" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
n.BNF_NTK_INNB, -- 혜택 섭취챌린지 고유번호
|
||||
n.BNF_INNB, -- 혜택 설정 고유번호
|
||||
n.MBR_INNB, -- 회원 고유번호
|
||||
n.GOODS_INNB, -- 상품 고유번호
|
||||
g.GOODS_NM, -- 상품명
|
||||
FN_GET_GOODS_IMAGE(g.SOPMAL_CD, g.GOODS_INNB, '03') AS thumbnail, -- 상품 썸네일 이미지
|
||||
n.NTK_CNT, -- 목표 섭취 횟수
|
||||
n.BNF_NTK_STTUS_DV_CD, -- 섭취상태 구분코드 (010: 섭취중, 020: 일시중단, 030: 종료)
|
||||
CASE
|
||||
WHEN n.BNF_NTK_STTUS_DV_CD = '010' THEN '섭취중'
|
||||
WHEN n.BNF_NTK_STTUS_DV_CD = '020' THEN '일시중단'
|
||||
WHEN n.BNF_NTK_STTUS_DV_CD = '030' THEN '종료'
|
||||
ELSE ''
|
||||
END AS status_name, -- 섭취상태 이름
|
||||
n.MEMO, -- 메모
|
||||
g.SRT_DC AS intake_instructions, -- 섭취방법 (간략설명)
|
||||
n.REGIST_DT AS start_date, -- 섭취 시작일자 추가
|
||||
(
|
||||
SELECT GROUP_CONCAT(
|
||||
JSON_OBJECT(
|
||||
'id', c.CTGRY_ID,
|
||||
'name', c.CTGRY_NM
|
||||
)
|
||||
)
|
||||
FROM GC_CATEGORY_LINK cl
|
||||
JOIN GC_CATEGORY c ON cl.CTGRY_ID = c.CTGRY_ID AND cl.SOPMAL_CD = c.SOPMAL_CD
|
||||
WHERE cl.GOODS_INNB = n.GOODS_INNB
|
||||
AND cl.SOPMAL_CD = n.SOPMAL_CD
|
||||
) AS categories -- 카테고리 정보 (JSON 형식)
|
||||
FROM
|
||||
GC_BENEFIT_NTKCHL n
|
||||
JOIN
|
||||
GC_GOODS g ON n.GOODS_INNB = g.GOODS_INNB AND n.SOPMAL_CD = g.SOPMAL_CD
|
||||
WHERE
|
||||
n.BNF_NTK_INNB = #{bnfNtkInnb}
|
||||
AND n.MBR_INNB = #{mbrInnb}
|
||||
AND n.MBR_DV_CD = #{mbrDvCd}
|
||||
AND n.DEL_AT = 'N'
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 일일 섭취 횟수 및 메모 업데이트 -->
|
||||
<insert id="upsertIntakeChallengeInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
INSERT INTO GC_BENEFIT_NTKCHL (
|
||||
BNF_NTK_INNB,
|
||||
BNF_INNB,
|
||||
MBR_INNB,
|
||||
MBR_DV_CD,
|
||||
GOODS_INNB,
|
||||
SOPMAL_CD,
|
||||
BNF_NTK_STTUS_DV_CD,
|
||||
NTK_CNT,
|
||||
MEMO,
|
||||
DEL_AT,
|
||||
REGUSR,
|
||||
REGIST_DT
|
||||
) VALUES (
|
||||
#{bnfNtkInnb},
|
||||
#{bnfInnb},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{goodsInnb},
|
||||
#{sopmalCd},
|
||||
#{bnfNtkSttusDvCd},
|
||||
#{ntkCnt},
|
||||
#{memo},
|
||||
'N',
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
NTK_CNT = #{ntkCnt},
|
||||
MEMO = #{memo},
|
||||
BNF_NTK_STTUS_DV_CD = #{bnfNtkSttusDvCd},
|
||||
UPDUSR = #{mbrInnb},
|
||||
UPDT_DT = NOW()
|
||||
</insert>
|
||||
|
||||
<!-- 섭취챌린지 제품 삭제 (논리적 삭제) -->
|
||||
<update id="deleteIntakeChallengeProduct" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
UPDATE GC_BENEFIT_NTKCHL
|
||||
SET
|
||||
DEL_AT = 'Y', -- 삭제 여부를 'Y'로 설정
|
||||
UPDUSR = #{mbrInnb}, -- 수정자 (회원 고유번호)
|
||||
UPDT_DT = NOW() -- 수정일시
|
||||
WHERE
|
||||
BNF_NTK_INNB = #{bnfNtkInnb} -- 혜택 섭취챌린지 고유번호
|
||||
AND MBR_INNB = #{mbrInnb} -- 회원 고유번호
|
||||
AND MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드 추가
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 필터링 추가
|
||||
AND DEL_AT = 'N' -- 현재 삭제되지 않은 상태인 경우에만 업데이트
|
||||
</update>
|
||||
|
||||
<!-- 모든 상태의 섭취챌린지 제품 목록 조회 (완료여부 Y/N 포함) -->
|
||||
<select id="selectAllIntakeChallengeProducts" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
WITH ProductConsecutiveDays AS (
|
||||
SELECT
|
||||
n.BNF_NTK_INNB,
|
||||
n.GOODS_INNB,
|
||||
MAX(consecutive_days) as max_consecutive_days
|
||||
FROM GC_BENEFIT_NTKCHL n
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
pn.BNF_NTK_INNB,
|
||||
MAX(consec.consecutive_days) as consecutive_days
|
||||
FROM GC_BENEFIT_PARTCPTN_NTKCHL pn
|
||||
JOIN GC_BENEFIT_PARTCPTN p ON pn.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
JOIN (
|
||||
SELECT
|
||||
pn2.BNF_NTK_INNB,
|
||||
DATE(p2.BNF_PRT_DT) as participation_date,
|
||||
@consecutive := CASE
|
||||
WHEN @prev_date = DATE_SUB(DATE(p2.BNF_PRT_DT), INTERVAL 1 DAY)
|
||||
AND @prev_product = pn2.BNF_NTK_INNB
|
||||
THEN @consecutive + 1
|
||||
ELSE 1
|
||||
END as consecutive_days,
|
||||
@prev_date := DATE(p2.BNF_PRT_DT),
|
||||
@prev_product := pn2.BNF_NTK_INNB
|
||||
FROM GC_BENEFIT_PARTCPTN_NTKCHL pn2
|
||||
JOIN GC_BENEFIT_PARTCPTN p2 ON pn2.BNF_PRT_INNB = p2.BNF_PRT_INNB
|
||||
CROSS JOIN (SELECT @consecutive := 0, @prev_date := '', @prev_product := 0) as vars
|
||||
ORDER BY pn2.BNF_NTK_INNB, DATE(p2.BNF_PRT_DT)
|
||||
) consec ON pn.BNF_NTK_INNB = consec.BNF_NTK_INNB
|
||||
GROUP BY pn.BNF_NTK_INNB
|
||||
) consecutive_data ON n.BNF_NTK_INNB = consecutive_data.BNF_NTK_INNB
|
||||
WHERE n.MBR_INNB = #{mbrInnb}
|
||||
AND n.MBR_DV_CD = #{mbrDvCd}
|
||||
AND (#{bnfInnb} IS NULL OR n.BNF_INNB = #{bnfInnb})
|
||||
AND n.SOPMAL_CD = #{sopmalCd}
|
||||
AND n.DEL_AT = 'N'
|
||||
GROUP BY n.BNF_NTK_INNB, n.GOODS_INNB
|
||||
)
|
||||
SELECT
|
||||
n.BNF_NTK_INNB, -- 혜택 섭취챌린지 고유번호
|
||||
n.BNF_INNB, -- 혜택 설정 고유번호
|
||||
n.MBR_INNB, -- 회원 고유번호
|
||||
n.GOODS_INNB AS productId, -- 상품 고유번호
|
||||
g.GOODS_NM AS productName, -- 상품명
|
||||
FN_GET_GOODS_IMAGE(g.SOPMAL_CD, g.GOODS_INNB, '03') AS imageUrl, -- 상품 썸네일 이미지
|
||||
n.NTK_CNT AS dailyIntakeCount, -- 1일 섭취 횟수
|
||||
n.BNF_NTK_STTUS_DV_CD, -- 원본 섭취상태 구분코드
|
||||
CASE
|
||||
WHEN n.BNF_NTK_STTUS_DV_CD = '010' THEN 'ACTIVE' -- 섭취중
|
||||
ELSE 'INACTIVE' -- 기타(일시중단, 종료)
|
||||
END AS challengeStatus, -- 새로운 챌린지 상태
|
||||
CASE
|
||||
WHEN COALESCE(pcd.max_consecutive_days, 0) >= 30 THEN 'Y' -- 30일 완료
|
||||
ELSE 'N'
|
||||
END AS isCompleted, -- 30일 완료 여부 (Y/N)
|
||||
CASE
|
||||
WHEN COALESCE(pcd.max_consecutive_days, 0) >= 30 THEN '완료'
|
||||
WHEN n.BNF_NTK_STTUS_DV_CD = '010' THEN '섭취중'
|
||||
WHEN n.BNF_NTK_STTUS_DV_CD = '020' THEN '일시중단'
|
||||
WHEN n.BNF_NTK_STTUS_DV_CD = '030' THEN '종료'
|
||||
ELSE ''
|
||||
END AS statusName, -- 새로운 상태 이름
|
||||
n.REGIST_DT AS addedDate, -- 챌린지 추가일
|
||||
COALESCE(pcd.max_consecutive_days, 0) AS maxConsecutiveDays -- 최대 연속 일수
|
||||
FROM
|
||||
GC_BENEFIT_NTKCHL n
|
||||
LEFT JOIN
|
||||
GC_GOODS g ON n.GOODS_INNB = g.GOODS_INNB AND n.SOPMAL_CD = g.SOPMAL_CD
|
||||
LEFT JOIN
|
||||
ProductConsecutiveDays pcd ON n.BNF_NTK_INNB = pcd.BNF_NTK_INNB
|
||||
WHERE
|
||||
n.MBR_INNB = #{mbrInnb} -- 회원 고유번호
|
||||
AND n.MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드 추가
|
||||
AND (#{bnfInnb} IS NULL OR n.BNF_INNB = #{bnfInnb}) -- 혜택 설정 고유번호
|
||||
AND n.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 필터링
|
||||
AND n.DEL_AT = 'N' -- 삭제되지 않은 데이터
|
||||
ORDER BY
|
||||
n.REGIST_DT DESC -- 등록일시 기준 내림차순 정렬(최근 추가순)
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 섭취챌린지 전체 현황 조회 (전체, 섭취중, 완료로 분류) -->
|
||||
<select id="selectIntakeChallengeCount" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
WITH ProductConsecutiveDays AS (
|
||||
SELECT
|
||||
n.BNF_NTK_INNB,
|
||||
n.BNF_NTK_STTUS_DV_CD,
|
||||
MAX(consecutive_days) as max_consecutive_days
|
||||
FROM GC_BENEFIT_NTKCHL n
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
pn.BNF_NTK_INNB,
|
||||
MAX(consec.consecutive_days) as consecutive_days
|
||||
FROM GC_BENEFIT_PARTCPTN_NTKCHL pn
|
||||
JOIN GC_BENEFIT_PARTCPTN p ON pn.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
JOIN (
|
||||
SELECT
|
||||
pn2.BNF_NTK_INNB,
|
||||
DATE(p2.BNF_PRT_DT) as participation_date,
|
||||
@consecutive := CASE
|
||||
WHEN @prev_date = DATE_SUB(DATE(p2.BNF_PRT_DT), INTERVAL 1 DAY)
|
||||
AND @prev_product = pn2.BNF_NTK_INNB
|
||||
THEN @consecutive + 1
|
||||
ELSE 1
|
||||
END as consecutive_days,
|
||||
@prev_date := DATE(p2.BNF_PRT_DT),
|
||||
@prev_product := pn2.BNF_NTK_INNB
|
||||
FROM GC_BENEFIT_PARTCPTN_NTKCHL pn2
|
||||
JOIN GC_BENEFIT_PARTCPTN p2 ON pn2.BNF_PRT_INNB = p2.BNF_PRT_INNB
|
||||
CROSS JOIN (SELECT @consecutive := 0, @prev_date := '', @prev_product := 0) as vars
|
||||
ORDER BY pn2.BNF_NTK_INNB, DATE(p2.BNF_PRT_DT)
|
||||
) consec ON pn.BNF_NTK_INNB = consec.BNF_NTK_INNB
|
||||
GROUP BY pn.BNF_NTK_INNB
|
||||
) consecutive_data ON n.BNF_NTK_INNB = consecutive_data.BNF_NTK_INNB
|
||||
WHERE n.MBR_INNB = #{mbrInnb}
|
||||
AND n.MBR_DV_CD = #{mbrDvCd}
|
||||
AND (#{bnfInnb} IS NULL OR n.BNF_INNB = #{bnfInnb})
|
||||
AND n.SOPMAL_CD = #{sopmalCd}
|
||||
AND n.DEL_AT = 'N'
|
||||
GROUP BY n.BNF_NTK_INNB, n.BNF_NTK_STTUS_DV_CD
|
||||
)
|
||||
SELECT
|
||||
COUNT(*) AS totalCount, -- 전체 제품 수
|
||||
SUM(CASE
|
||||
WHEN COALESCE(max_consecutive_days, 0) >= 30 THEN 0 -- 완료된 제품은 섭취중에서 제외
|
||||
WHEN BNF_NTK_STTUS_DV_CD = '010' THEN 1
|
||||
ELSE 0
|
||||
END) AS activeCount, -- 섭취중인 제품 수 (완료 제외)
|
||||
SUM(CASE
|
||||
WHEN COALESCE(max_consecutive_days, 0) >= 30 THEN 1
|
||||
ELSE 0
|
||||
END) AS completedCount -- 30일 완료한 제품 수
|
||||
FROM
|
||||
ProductConsecutiveDays
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 누적 보상 정보 조회 -->
|
||||
<select id="selectCumulativeRewards" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
SUM(CASE WHEN r.BNF_RWD_CATE_DV_CD = '10010' THEN r.MLG_RWD_AMT ELSE 0 END) AS dailyRewardTotal,
|
||||
SUM(CASE WHEN r.BNF_RWD_CATE_DV_CD = '10020' THEN r.MLG_RWD_AMT ELSE 0 END) AS consecutiveRewardTotal,
|
||||
COUNT(CASE WHEN r.BNF_RWD_CATE_DV_CD = '10020' AND r.BNF_RWD_GODS_DV_CD = '020' THEN r.COUPON_INNB ELSE NULL END) AS couponCount
|
||||
FROM
|
||||
GC_BENEFIT_RECEIPT rec
|
||||
JOIN
|
||||
GC_BENEFIT_PARTCPTN p ON rec.BNF_PRT_INNB = p.BNF_PRT_INNB
|
||||
JOIN
|
||||
GC_BENEFIT_REWARD r ON p.BNF_INNB = r.BNF_INNB AND rec.BNF_RWD_CATE_DV_CD = r.BNF_RWD_CATE_DV_CD
|
||||
WHERE
|
||||
p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.BNF_INNB = #{bnfInnb}
|
||||
</select>
|
||||
|
||||
<!-- 연속 성공 기간 조회 -->
|
||||
<select id="selectConsecutiveSuccessDays" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
WITH DateRange AS (
|
||||
SELECT
|
||||
ADDDATE('1970-01-01', t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) as date
|
||||
FROM
|
||||
(SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t0,
|
||||
(SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1,
|
||||
(SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t2,
|
||||
(SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t3,
|
||||
(SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t4
|
||||
WHERE
|
||||
ADDDATE('1970-01-01', t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) BETWEEN
|
||||
(SELECT MIN(REGIST_DT) FROM GC_BENEFIT_NTKCHL WHERE MBR_INNB = #{mbrInnb} AND MBR_DV_CD = #{mbrDvCd} AND BNF_INNB = #{bnfInnb} AND SOPMAL_CD = #{sopmalCd} AND DEL_AT = 'N')
|
||||
AND CURDATE()
|
||||
),
|
||||
SuccessDates AS (
|
||||
SELECT DISTINCT DATE(p.BNF_PRT_DT) as success_date
|
||||
FROM GC_BENEFIT_PARTCPTN p
|
||||
WHERE p.MBR_INNB = #{mbrInnb} AND p.MBR_DV_CD = #{mbrDvCd} AND p.BNF_INNB = #{bnfInnb}
|
||||
),
|
||||
DateStatus AS (
|
||||
SELECT
|
||||
d.date,
|
||||
CASE WHEN s.success_date IS NOT NULL THEN 1 ELSE 0 END as is_success,
|
||||
CASE WHEN @consec := IF(s.success_date IS NOT NULL, @consec + 1, 0) THEN @consec ELSE 0 END as consecutive_count
|
||||
FROM
|
||||
DateRange d
|
||||
LEFT JOIN
|
||||
SuccessDates s ON d.date = s.success_date
|
||||
CROSS JOIN
|
||||
(SELECT @consec := 0) as vars
|
||||
ORDER BY
|
||||
d.date
|
||||
),
|
||||
ConsecutiveGroups AS (
|
||||
SELECT
|
||||
date,
|
||||
consecutive_count,
|
||||
@group_id := IF(consecutive_count = 0, @group_id + 1, @group_id) as group_id
|
||||
FROM
|
||||
DateStatus
|
||||
CROSS JOIN
|
||||
(SELECT @group_id := 0) as vars
|
||||
ORDER BY
|
||||
date
|
||||
),
|
||||
ConsecutivePeriods AS (
|
||||
SELECT
|
||||
group_id,
|
||||
MIN(date) as start_date,
|
||||
MAX(date) as end_date,
|
||||
MAX(consecutive_count) as consecutive_days
|
||||
FROM
|
||||
ConsecutiveGroups
|
||||
WHERE
|
||||
consecutive_count > 0
|
||||
GROUP BY
|
||||
group_id
|
||||
)
|
||||
SELECT
|
||||
start_date,
|
||||
end_date,
|
||||
consecutive_days,
|
||||
CASE WHEN end_date = CURDATE() THEN 'Y' ELSE 'N' END as is_today_completion,
|
||||
CASE WHEN consecutive_days >= 30 THEN 'Y' ELSE 'N' END as is_30days_completed,
|
||||
CASE
|
||||
WHEN consecutive_days >= 30 THEN CEILING(consecutive_days / 30)
|
||||
ELSE 0
|
||||
END as completed_cycles,
|
||||
CASE
|
||||
WHEN consecutive_days >= 30 THEN consecutive_days % 30
|
||||
ELSE consecutive_days
|
||||
END as current_cycle_days
|
||||
FROM
|
||||
ConsecutivePeriods
|
||||
WHERE
|
||||
(end_date = CURDATE() OR CURDATE() BETWEEN start_date AND end_date)
|
||||
ORDER BY
|
||||
end_date DESC
|
||||
LIMIT 1
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 현재 챌린지 상태 종합 정보 조회 -->
|
||||
<select id="selectChallengeStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
CASE
|
||||
WHEN EXISTS (
|
||||
SELECT 1 FROM GC_BENEFIT_NTKCHL
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND BNF_NTK_STTUS_DV_CD = '020'
|
||||
AND DEL_AT = 'N'
|
||||
) THEN '020' -- 중단 상태
|
||||
WHEN EXISTS (
|
||||
SELECT 1 FROM GC_BENEFIT_PARTCPTN p
|
||||
JOIN GC_BENEFIT_NTKCHL n ON p.MBR_INNB = n.MBR_INNB AND p.BNF_INNB = n.BNF_INNB
|
||||
WHERE p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.BNF_INNB = #{bnfInnb}
|
||||
AND DATE(p.BNF_PRT_DT) = CURDATE()
|
||||
AND n.BNF_NTK_STTUS_DV_CD = '010'
|
||||
AND n.MBR_DV_CD = #{mbrDvCd}
|
||||
AND n.SOPMAL_CD = #{sopmalCd}
|
||||
AND n.DEL_AT = 'N'
|
||||
) THEN '100' -- 오늘 성공
|
||||
ELSE '010' -- 진행중
|
||||
END as challenge_status,
|
||||
(
|
||||
SELECT COUNT(DISTINCT DATE(BNF_PRT_DT))
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
) as total_success_days,
|
||||
(
|
||||
SELECT DATEDIFF(CURDATE(), MIN(REGIST_DT)) + 1
|
||||
FROM GC_BENEFIT_NTKCHL
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND BNF_NTK_STTUS_DV_CD = '010'
|
||||
AND DEL_AT = 'N'
|
||||
) as total_challenge_days
|
||||
FROM dual
|
||||
</select>
|
||||
|
||||
<!-- 섭취챌린지 알림설정 조회 -->
|
||||
<select id="selectIntakeChallengeNotifications" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
BNF_NTK_NTCN_INNB, -- 혜택 섭취챌린지 알림 고유번호
|
||||
NULL AS BNF_NTK_INNB, -- 혜택 섭취챌린지 고유번호
|
||||
NTCN_TME, -- 알림 시간
|
||||
USE_AT, -- 사용 여부
|
||||
REGIST_DT -- 등록일시
|
||||
FROM
|
||||
GC_BENEFIT_NTKCHL_NTCN
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
ORDER BY
|
||||
NTCN_TME ASC
|
||||
</select>
|
||||
|
||||
<!-- 기본 알림 설정 생성 쿼리 (신규 사용자) -->
|
||||
<insert id="insertDefaultNotificationTimes" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
INSERT INTO GC_BENEFIT_NTKCHL_NTCN (
|
||||
BNF_INNB,
|
||||
MBR_INNB,
|
||||
MBR_DV_CD,
|
||||
NTCN_TME,
|
||||
USE_AT,
|
||||
REGUSR,
|
||||
REGIST_DT
|
||||
)
|
||||
SELECT
|
||||
#{bnfInnb}, #{mbrInnb}, #{mbrDvCd}, '07:00:00', 'N', #{regusr}, NOW()
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM GC_BENEFIT_NTKCHL_NTCN
|
||||
WHERE MBR_INNB = #{mbrInnb} AND BNF_INNB = #{bnfInnb} AND MBR_DV_CD = #{mbrDvCd} AND NTCN_TME = '07:00:00'
|
||||
)
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
#{bnfInnb}, #{mbrInnb}, #{mbrDvCd}, '12:00:00', 'N', #{regusr}, NOW()
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM GC_BENEFIT_NTKCHL_NTCN
|
||||
WHERE MBR_INNB = #{mbrInnb} AND BNF_INNB = #{bnfInnb} AND MBR_DV_CD = #{mbrDvCd} AND NTCN_TME = '12:00:00'
|
||||
)
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
#{bnfInnb}, #{mbrInnb}, #{mbrDvCd}, '19:00:00', 'N', #{regusr}, NOW()
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM GC_BENEFIT_NTKCHL_NTCN
|
||||
WHERE MBR_INNB = #{mbrInnb} AND BNF_INNB = #{bnfInnb} AND MBR_DV_CD = #{mbrDvCd} AND NTCN_TME = '19:00:00'
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 섭취시간 알림 설정 업데이트 -->
|
||||
<update id="updateIntakeChallengeNotification" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
UPDATE GC_BENEFIT_NTKCHL_NTCN
|
||||
SET
|
||||
NTCN_TME = #{ntcnTme},
|
||||
USE_AT = #{useAt}
|
||||
WHERE
|
||||
BNF_NTK_NTCN_INNB = #{bnfNtkNtcnInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
</update>
|
||||
|
||||
<!-- 섭취챌린지 미완료 알림 설정 조회 -->
|
||||
<select id="selectIntakeChallengeIncompleteNotification" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
ps.BNF_PUSH_EVT_SETUP_INNB,
|
||||
ps.PUSH_SJ,
|
||||
ps.PUSH_CN,
|
||||
ps.USE_AT
|
||||
FROM
|
||||
GC_BENEFIT_PUSH_EVT_SETUP ps
|
||||
WHERE
|
||||
ps.BNF_PUSH_CND_DV_CD = '10020' -- 섭취챌린지 미완료시
|
||||
AND ps.SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!-- 미완료 알림 설정 업데이트 -->
|
||||
<update id="updateIntakeChallengeIncompleteNotification" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
UPDATE GC_BENEFIT_PUSH_EVT_SETUP
|
||||
SET
|
||||
USE_AT = #{useAt}
|
||||
WHERE
|
||||
BNF_PUSH_EVT_SETUP_INNB = #{bnfPushEvtSetupInnb}
|
||||
AND BNF_PUSH_CND_DV_CD = '10020' -- 섭취챌린지 미완료시
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
<!-- 섭취챌린지 알림설정 조회 -->
|
||||
<select id="checkUserNotificationSettings" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="boolean">
|
||||
SELECT EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_NTKCHL_NTCN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
)
|
||||
</select>
|
||||
|
||||
<!-- 특정 유저의 모든 알림 설정 삭제 -->
|
||||
<delete id="deleteAllNotifications" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
DELETE FROM GC_BENEFIT_NTKCHL_NTCN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
</delete>
|
||||
|
||||
<!-- 특정 알림 설정 삭제 -->
|
||||
<delete id="deleteNotification" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
DELETE FROM GC_BENEFIT_NTKCHL_NTCN
|
||||
WHERE BNF_NTK_NTCN_INNB = #{bnfNtkNtcnInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
</delete>
|
||||
|
||||
<!-- 오늘 참여기록 확인 -->
|
||||
<select id="selectTodayParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
BNF_PRT_INNB,
|
||||
PRT_LEAF_CNT,
|
||||
BNF_PRT_DT
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE(BNF_PRT_DT) = CURDATE()
|
||||
</select>
|
||||
|
||||
<!-- 오늘 참여기록 생성 (첫 참여시에만) -->
|
||||
<insert id="insertTodayParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
<selectKey keyProperty="bnfPrtInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN
|
||||
</selectKey>
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_PRT_INNB,
|
||||
BNF_INNB,
|
||||
MBR_INNB,
|
||||
MBR_DV_CD,
|
||||
BNF_PRT_DT,
|
||||
REGUSR,
|
||||
REGIST_DT
|
||||
) VALUES (
|
||||
#{bnfPrtInnb},
|
||||
#{bnfInnb},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
NOW(),
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 개별 섭취 기록 추가 -->
|
||||
<insert id="insertIntakeRecord" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
<selectKey keyProperty="bnfPrtNtkInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_NTK_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN_NTKCHL
|
||||
</selectKey>
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN_NTKCHL (
|
||||
BNF_PRT_NTK_INNB,
|
||||
BNF_PRT_INNB,
|
||||
BNF_NTK_INNB
|
||||
) VALUES (
|
||||
#{bnfPrtNtkInnb},
|
||||
#{bnfPrtInnb},
|
||||
#{bnfNtkInnb}
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 오늘 보상 지급 여부 확인 -->
|
||||
<select id="checkTodayRewardAwarded" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="boolean">
|
||||
SELECT EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE(BNF_PRT_DT) = CURDATE()
|
||||
AND (PRT_LEAF_CNT IS NOT NULL AND PRT_LEAF_CNT > 0)
|
||||
)
|
||||
</select>
|
||||
|
||||
<!-- 오늘 보상 업데이트 (마일리지 + 초록잎) -->
|
||||
<update id="updateTodayRewards" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO">
|
||||
UPDATE GC_BENEFIT_PARTCPTN
|
||||
SET PRT_LEAF_CNT = #{paidLeafCnt},
|
||||
UPDUSR = #{updusr},
|
||||
UPDT_DT = NOW()
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE(BNF_PRT_DT) = CURDATE()
|
||||
</update>
|
||||
|
||||
<!-- 초록잎 지급 여부 확인 -->
|
||||
<select id="checkLeafAlreadyAwarded" parameterType="com.wb.domainserver.domain.gcone.bnft.intakchl.vo.BOIntakchlVO" resultType="boolean">
|
||||
SELECT EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_PARTCPTN p
|
||||
WHERE p.BNF_INNB = #{bnfInnb}
|
||||
AND p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE(p.BNF_PRT_DT) = CURDATE()
|
||||
AND p.PRT_LEAF_CNT IS NOT NULL
|
||||
AND p.PRT_LEAF_CNT > 0
|
||||
)
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,250 @@
|
||||
<?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.bnft.lucklott.mapper.BOLucklottMapper">
|
||||
|
||||
<!-- 행운복권 혜택 기본 정보 조회 -->
|
||||
<select id="selectLucklottBenefitInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
USE_AT, -- 사용여부
|
||||
SOPMAL_CD, -- 쇼핑몰코드
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
BNF_SJ, -- 혜택 제목
|
||||
SCR_REPRSNT_IMG, -- 화면 대표 이미지
|
||||
SCR_REPRSNT_LINK_URL, -- 화면 대표 링크 URL
|
||||
SCR_RWD_IMG, -- 화면 보상 이미지
|
||||
SCR_RWD_LINK_URL, -- 화면 보상 링크 URL
|
||||
BNF_BGN_DT, -- 진행기간 시작일시
|
||||
BNF_END_DT, -- 진행기간 종료일시
|
||||
BNF_WORDS_CN -- 혜택 안내
|
||||
FROM
|
||||
GC_BENEFIT
|
||||
WHERE
|
||||
BNF_DV_CD = '030' -- 행운복권 혜택 구분 코드 (문자열로 수정)
|
||||
AND USE_AT = 'Y'
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND DATE(NOW()) BETWEEN DATE(BNF_BGN_DT) AND DATE(BNF_END_DT)
|
||||
ORDER BY BNF_INNB DESC
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 행운복권 혜택 보상 및 쿠폰 정보 조회 -->
|
||||
<select id="selectLucklottBenefitRewardsAndCoupons" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
R.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
R.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
R.ITM_NM, -- 표시명
|
||||
R.MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
C.COUP_NM, -- 쿠폰명
|
||||
C.COUPON_DC -- 쿠폰설명
|
||||
FROM
|
||||
GC_BENEFIT B
|
||||
LEFT JOIN GC_BENEFIT_REWARD R ON B.BNF_INNB = R.BNF_INNB
|
||||
LEFT JOIN GC_COUPON C ON R.COUPON_INNB = C.COUPON_INNB
|
||||
AND C.USE_AT = 'Y'
|
||||
WHERE
|
||||
B.BNF_DV_CD = '030' -- 행운복권 혜택 구분 코드
|
||||
AND B.USE_AT = 'Y'
|
||||
AND B.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 조건 추가
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 행운복권 혜택 보상 정보 조회 -->
|
||||
<select id="selectLucklottBenefitRewards" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
R.BNF_INNB, -- 혜택 설정 고유번호
|
||||
R.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
R.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
R.MLG_RWD_AMT, -- 마일리지 금액
|
||||
R.COUPON_INNB, -- 쿠폰 고유번호
|
||||
R.ITM_NM, -- 표시명
|
||||
R.PRZWIN_QY, -- 당첨수량
|
||||
R.PRZWIN_PRC, -- 당첨확률
|
||||
R.DSCNT_AMT, -- 할인금액
|
||||
C.COUP_NM, -- 쿠폰명
|
||||
C.COUPON_DC -- 쿠폰설명
|
||||
FROM
|
||||
GC_BENEFIT_REWARD R
|
||||
LEFT JOIN GC_COUPON C ON R.COUPON_INNB = C.COUPON_INNB
|
||||
AND C.USE_AT = 'Y'
|
||||
WHERE
|
||||
R.BNF_INNB = #{bnfInnb} -- 혜택 설정 고유번호 조건
|
||||
AND R.PRZWIN_QY > 0 -- 수량이 있는 경우만
|
||||
ORDER BY R.BNF_RWD_CATE_DV_CD ASC -- 등수 순서대로 정렬 (03010, 03020, 03030, 03040)
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 오늘 참여 횟수 조회 -->
|
||||
<select id="selectTodayParticipationCount" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO" resultType="int">
|
||||
<![CDATA[
|
||||
SELECT IFNULL(COUNT(*), 0)
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE(BNF_PRT_DT) = CURDATE()
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 초록잎 지급 개수 조회 -->
|
||||
<select id="selectLeafCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PYMNT_CNT, -- 지급 초록잎 개수
|
||||
SPECIAL_CNT -- 스페셜 지급 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN
|
||||
WHERE
|
||||
BNF_DV_CD = '030' -- 혜택 구분 코드 (행운복권)
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!-- 행운복권 혜택 참여 정보 삽입 (초록잎 적립 포함) -->
|
||||
<insert id="insertLucklottBenefitParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO">
|
||||
<selectKey keyProperty="bnfPrtInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN
|
||||
(
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_PRT_DT, -- 혜택 참여일시
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
PRT_LEAF_CNT, -- 참여 초록잎 개수 (추가)
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#{bnfPrtInnb},
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{paidLeafCnt}, -- 초록잎 지급량
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 행운복권 혜택 보상 수령 정보 삽입 -->
|
||||
<insert id="insertLucklottBenefitReceipt" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
COUPON_INNB, -- 쿠폰고유번호
|
||||
GOODS_INNB, -- 상품고유번호
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
) VALUES (
|
||||
#{bnfPrtInnb}, -- 혜택 참여 고유번호 (파라미터)
|
||||
#{bnfRwdCateDvCd}, -- 보상 항목 구분 코드 (파라미터)
|
||||
#{bnfRwdGodsDvCd}, -- 보상 상품 구분 코드 (파라미터)
|
||||
#{mlgRwdAmt}, -- 마일리지 금액 (파라미터, 해당 없으면 NULL)
|
||||
#{couponInnb}, -- 쿠폰고유번호 (파라미터, 해당 없으면 NULL)
|
||||
#{goodsInnb}, -- 상품고유번호 (파라미터, 해당 없으면 NULL)
|
||||
#{regUsr}, -- 등록자 번호 (파라미터)
|
||||
NOW() -- 현재 시간
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 특정 상품의 당첨된 수량 조회 -->
|
||||
<select id="selectIssuedGoodsQuantity" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO" resultType="int">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(brec.BNF_RCV_INNB) AS issuedGoodsQuantity -- 당첨된 수량
|
||||
FROM
|
||||
GC_BENEFIT_REWARD br -- 혜택 보상설정 정보 테이블
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_PARTCPTN bp ON br.BNF_INNB = bp.BNF_INNB -- 혜택 참여 정보 테이블과 조인
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_RECEIPT brec ON bp.BNF_PRT_INNB = brec.BNF_PRT_INNB -- 혜택 보상수령 내역 테이블과 조인
|
||||
AND br.BNF_RWD_CATE_DV_CD = brec.BNF_RWD_CATE_DV_CD
|
||||
AND br.BNF_RWD_GODS_DV_CD = brec.BNF_RWD_GODS_DV_CD
|
||||
WHERE
|
||||
br.BNF_INNB = #{bnfInnb} -- 특정 혜택 설정 번호 선택
|
||||
AND br.BNF_RWD_CATE_DV_CD = #{bnfRwdCateDvCd} -- 특정 보상 항목 구분 코드 선택
|
||||
AND br.BNF_RWD_GODS_DV_CD = #{bnfRwdGodsDvCd} -- 특정 보상 상품 구분 코드 선택
|
||||
GROUP BY
|
||||
br.BNF_INNB, br.BNF_RWD_CATE_DV_CD, br.BNF_RWD_GODS_DV_CD, br.ITM_NM
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 특정 상품의 남은 수량 조회 -->
|
||||
<select id="selectRemainingGoodsQuantity" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO" resultType="int">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
br.PRZWIN_QY - COALESCE(COUNT(brec.BNF_RCV_INNB), 0) AS remainingGoodsQuantity -- 남은 당첨 수량
|
||||
FROM
|
||||
GC_BENEFIT_REWARD br -- 혜택 보상설정 정보 테이블
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_PARTCPTN bp ON br.BNF_INNB = bp.BNF_INNB -- 혜택 참여 정보 테이블과 조인
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_RECEIPT brec ON bp.BNF_PRT_INNB = brec.BNF_PRT_INNB -- 혜택 보상수령 내역 테이블과 조인
|
||||
AND br.BNF_RWD_CATE_DV_CD = brec.BNF_RWD_CATE_DV_CD
|
||||
AND br.BNF_RWD_GODS_DV_CD = brec.BNF_RWD_GODS_DV_CD
|
||||
WHERE
|
||||
br.BNF_INNB = #{bnfInnb} -- 특정 혜택 설정 번호
|
||||
AND br.BNF_RWD_CATE_DV_CD = #{bnfRwdCateDvCd} -- 특정 보상 항목 구분 코드로 검색
|
||||
GROUP BY
|
||||
br.BNF_INNB, br.BNF_RWD_CATE_DV_CD, br.BNF_RWD_GODS_DV_CD, br.ITM_NM, br.PRZWIN_QY -- 그룹화 기준
|
||||
ORDER BY
|
||||
br.BNF_INNB, br.BNF_RWD_CATE_DV_CD, br.BNF_RWD_GODS_DV_CD -- 정렬 기준
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 모든 등수 상품의 수량 체크 -->
|
||||
<select id="selectAllRewardsQuantityStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
br.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
br.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
br.ITM_NM, -- 상품명
|
||||
br.PRZWIN_QY, -- 총 당첨수량
|
||||
COALESCE(COUNT(brec.BNF_RCV_INNB), 0) AS issuedQuantity, -- 지급된 수량
|
||||
br.PRZWIN_QY - COALESCE(COUNT(brec.BNF_RCV_INNB), 0) AS remainingQuantity, -- 남은 수량
|
||||
CASE
|
||||
WHEN br.PRZWIN_QY - COALESCE(COUNT(brec.BNF_RCV_INNB), 0) > 0 THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS hasStock -- 재고 여부
|
||||
FROM
|
||||
GC_BENEFIT_REWARD br
|
||||
LEFT JOIN GC_BENEFIT_PARTCPTN bp ON br.BNF_INNB = bp.BNF_INNB
|
||||
LEFT JOIN GC_BENEFIT_RECEIPT brec ON bp.BNF_PRT_INNB = brec.BNF_PRT_INNB
|
||||
AND br.BNF_RWD_CATE_DV_CD = brec.BNF_RWD_CATE_DV_CD
|
||||
AND br.BNF_RWD_GODS_DV_CD = brec.BNF_RWD_GODS_DV_CD
|
||||
WHERE
|
||||
br.BNF_INNB = #{bnfInnb}
|
||||
GROUP BY
|
||||
br.BNF_RWD_CATE_DV_CD, br.BNF_RWD_GODS_DV_CD, br.ITM_NM, br.PRZWIN_QY
|
||||
ORDER BY
|
||||
br.BNF_RWD_CATE_DV_CD
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 보상 수량 감소 쿼리 제거 -->
|
||||
<!--
|
||||
<update id="updateRewardQuantity" parameterType="com.wb.domainserver.domain.gcone.bnft.lucklott.vo.BOLucklottVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_BENEFIT_REWARD
|
||||
SET PRZWIN_QY = PRZWIN_QY - 1
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
AND BNF_RWD_CATE_DV_CD = #{bnfRwdCateDvCd}
|
||||
AND BNF_RWD_GODS_DV_CD = #{bnfRwdGodsDvCd}
|
||||
AND PRZWIN_QY > 0
|
||||
]]>
|
||||
</update>
|
||||
-->
|
||||
</mapper>
|
||||
@@ -0,0 +1,224 @@
|
||||
<?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.bnft.lvshop.mapper.BOLvshopMapper">
|
||||
|
||||
<!-- 현재 진행중인 라이브 쇼핑 정보 조회 -->
|
||||
<select id="selectCurrentLiveShoppingInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.lvshop.vo.BOLvshopVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
B.BNF_INNB AS BNF_INNB, -- 혜택 고유번호
|
||||
BC.CN_SJ AS BENEFIT_TITLE, -- 혜택 제목 (방송명)
|
||||
BC.IMG_FIL_COURS AS THUMBNAIL_IMAGE_URL,-- 방송 썸네일 이미지 URL
|
||||
BG.WORDS_CN_2 AS BENEFIT_DESC_2, -- 혜택 안내문 2 (이벤트 설명)
|
||||
BC.WORDS_CN AS BROADCAST_DESC, -- 방송 안내
|
||||
BC.CN_DC AS CONTENT_DESC, -- 내용 설명 (방송 소개)
|
||||
BC.TME_SECND AS REQUIRED_WATCH_TIME,-- 필수 시청 시간(초)
|
||||
BC.LINK_URL AS PARTICIPATION_URL, -- 참여 링크 URL 추가
|
||||
TIMESTAMPDIFF(SECOND, BC.CN_BGN_DT, NOW()) AS ELAPSED_TIME_IN_SECONDS, -- 방송 경과 시간(초)
|
||||
BR.MLG_RWD_AMT AS MILEAGE_REWARD -- 마일리지 보상 금액
|
||||
FROM
|
||||
GC_BENEFIT B -- 혜택 기본 정보 테이블
|
||||
INNER JOIN
|
||||
GC_BENEFIT_CONTENT BC ON B.BNF_INNB = BC.BNF_INNB -- 혜택 내용설정 정보 테이블 조인
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_REWARD BR ON B.BNF_INNB = BR.BNF_INNB AND BR.BNF_RWD_CATE_DV_CD = '07010' -- 혜택 보상설정 정보 테이블 조인 (라이브 쇼핑 참여 보상)
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_GDCC BG ON B.BNF_DV_CD = BG.BNF_DV_CD AND B.SOPMAL_CD = BG.SOPMAL_CD -- 혜택 안내문 정보 테이블 조인
|
||||
WHERE
|
||||
B.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 조건
|
||||
AND B.BNF_DV_CD = '070' -- 혜택 구분 코드 (라이브 쇼핑) 조건
|
||||
AND B.USE_AT = 'Y' -- 사용 여부 조건
|
||||
AND NOW() BETWEEN BC.CN_BGN_DT AND BC.CN_END_DT -- 현재 진행 중인 방송 조건
|
||||
LIMIT 1 -- 가장 최근 1건 조회
|
||||
</select>
|
||||
|
||||
<!-- 다음 방송 예고 목록 조회 -->
|
||||
<select id="selectUpcomingLiveShoppingList" parameterType="string" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
B.BNF_INNB AS BNF_INNB, -- 혜택 고유번호
|
||||
B.BNF_SJ AS BENEFIT_TITLE, -- 방송명
|
||||
BC.IMG_FIL_COURS AS THUMBNAIL_IMAGE_URL, -- 방송 썸네일 이미지 URL
|
||||
BC.CN_DC AS CONTENT_DESC, -- 방송소개
|
||||
BC.WORDS_CN AS BROADCAST_DESC, -- 방송 안내
|
||||
BC.CN_BGN_DT AS BROADCAST_START_TIME, -- 방송 시작 시간 추가
|
||||
BG.WORDS_CN_1 AS BENEFIT_DESC_1, -- 혜택 안내문 1
|
||||
BG.WORDS_CN_2 AS BENEFIT_DESC_2, -- 혜택 안내문 2
|
||||
BG.WORDS_CN_3 AS BENEFIT_DESC_3, -- 혜택 안내문 3
|
||||
TIMESTAMPDIFF(SECOND, NOW(), BC.CN_BGN_DT) AS REMAINING_TIME -- 방송 시작까지 남은 시간 (초)
|
||||
FROM
|
||||
GC_BENEFIT B
|
||||
INNER JOIN
|
||||
GC_BENEFIT_CONTENT BC ON B.BNF_INNB = BC.BNF_INNB
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_GDCC BG ON B.BNF_DV_CD = BG.BNF_DV_CD AND B.SOPMAL_CD = BG.SOPMAL_CD -- 혜택 안내문 정보 테이블 조인
|
||||
WHERE
|
||||
B.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 (문자열 파라미터)
|
||||
AND B.BNF_DV_CD = '070' -- 혜택 구분 코드 (라이브쇼핑)
|
||||
AND B.USE_AT = 'Y' -- 사용 여부
|
||||
AND NOW() < BC.CN_BGN_DT -- 아직 방송 시작 전인 경우 (예고 방송)
|
||||
ORDER BY
|
||||
B.BNF_BGN_DT ASC -- 방송 시작 시간이 빠른 순 정렬
|
||||
</select>
|
||||
|
||||
<!-- 라이브 쇼핑 알림 신청 상태 조회 -->
|
||||
<select id="selectLiveShoppingNotificationStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.lvshop.vo.BOLvshopVO" resultType="string">
|
||||
SELECT
|
||||
AGRE_AT -- 동의 여부
|
||||
FROM
|
||||
GC_BENEFIT_AGREE -- 혜택 동의 내역 테이블
|
||||
WHERE
|
||||
SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 조건
|
||||
AND MBR_INNB = #{mbrInnb} -- 회원 고유번호 조건
|
||||
AND MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드 조건
|
||||
AND BNF_DV_CD = '070' -- 혜택 구분 코드 (라이브 쇼핑) 조건
|
||||
AND BNF_AGRE_DV_CD = '010' -- 혜택 동의 구분 코드 (알림동의) 조건
|
||||
</select>
|
||||
|
||||
<!-- 라이브 쇼핑 알림 신청 정보 삽입 (중복 시 업데이트) -->
|
||||
<insert id="insertLiveShoppingNotification" parameterType="com.wb.domainserver.domain.gcone.bnft.lvshop.vo.BOLvshopVO">
|
||||
INSERT INTO GC_BENEFIT_AGREE (
|
||||
SOPMAL_CD, -- 쇼핑몰 코드
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
BNF_AGRE_DV_CD, -- 혜택 동의 구분 코드
|
||||
AGRE_AT, -- 동의 여부
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{sopmalCd}, -- 쇼핑몰 코드
|
||||
#{mbrInnb}, -- 회원 고유번호
|
||||
#{mbrDvCd}, -- 회원 구분 코드
|
||||
'070', -- 혜택 구분 코드 (라이브 쇼핑)
|
||||
'010', -- 혜택 동의 구분 코드 (알림 동의)
|
||||
#{agreAt}, -- 동의 여부
|
||||
#{regusr}, -- 등록자 (회원 고유번호)
|
||||
NOW() -- 현재 시간
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
BNF_DV_CD = #{bnfDvCd},
|
||||
BNF_AGRE_DV_CD = #{bnfAgreDvCd},
|
||||
AGRE_AT = #{agreAt}, -- 동의 여부 업데이트
|
||||
REGUSR = #{regusr}, -- 수정자 (회원 고유번호)
|
||||
REGIST_DT = NOW() -- 수정 시간 (현재 시간)
|
||||
</insert>
|
||||
|
||||
<!-- 라이브쇼핑 알림 상태 조회 (기존 쿼리 - 필요시 유지) -->
|
||||
<select id="getLvshopNotificationStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.lvshop.vo.BOLvshopVO" resultType="string">
|
||||
SELECT
|
||||
AGRE_AT -- 동의 여부
|
||||
FROM
|
||||
GC_BENEFIT_AGREE -- 혜택 동의 내역 테이블
|
||||
WHERE
|
||||
SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 조건
|
||||
AND MBR_INNB = #{mbrInnb} -- 회원 고유번호 조건
|
||||
AND MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드 조건
|
||||
AND BNF_INNB = #{bnfInnb} -- 혜택 고유번호 조건
|
||||
AND BNF_DV_CD = '070' -- 혜택 구분 코드 (라이브 쇼핑) 조건
|
||||
AND BNF_AGRE_DV_CD = '010'; -- 혜택 동의 구분 코드 (알림 동의) 조건
|
||||
</select>
|
||||
|
||||
<!-- 초록잎 지급 개수 조회 -->
|
||||
<select id="selectLeafCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.lvshop.vo.BOLvshopVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PYMNT_CNT, -- 지급 초록잎 개수
|
||||
SPECIAL_CNT -- 스페셜 지급 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN
|
||||
WHERE
|
||||
BNF_DV_CD = '070' -- 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!-- 라이브쇼핑 혜택 참여 정보 삽입 -->
|
||||
<insert id="insertLvshopBenefitParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.lvshop.vo.BOLvshopVO">
|
||||
<selectKey keyProperty="bnfPrtInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN
|
||||
</selectKey>
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_INNB, -- 혜택 고유번호
|
||||
BNF_PRT_DT, -- 혜택 참여 일시
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
PRT_LEAF_CNT, -- 참여 초록잎 개수
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfPrtInnb}, -- 혜택 참여 고유번호
|
||||
#{bnfInnb}, -- 혜택 고유번호
|
||||
NOW(), -- 현재 시간
|
||||
#{mbrInnb}, -- 회원 고유번호
|
||||
#{mbrDvCd}, -- 회원 구분 코드
|
||||
#{paidLeafCnt}, -- 참여 초록잎 개수
|
||||
#{regusr}, -- 등록자 (회원 고유번호)
|
||||
NOW() -- 현재 시간
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 라이브쇼핑 마일리지 적립 여부 확인 -->
|
||||
<select id="checkLiveShoppingRewardReceived" parameterType="com.wb.domainserver.domain.gcone.bnft.lvshop.vo.BOLvshopVO" resultType="int">
|
||||
SELECT COUNT(1)
|
||||
FROM GC_BENEFIT_RECEIPT R
|
||||
JOIN GC_BENEFIT_PARTCPTN P ON P.BNF_PRT_INNB = R.BNF_PRT_INNB
|
||||
JOIN GC_BENEFIT B ON B.BNF_INNB = P.BNF_INNB
|
||||
WHERE B.BNF_DV_CD = '070' <!-- 라이브쇼핑 혜택 -->
|
||||
|
||||
<!-- 회원 고유번호 -->
|
||||
AND P.MBR_INNB = #{mbrInnb}
|
||||
|
||||
<!-- 회원 구분 코드 -->
|
||||
AND P.MBR_DV_CD = #{mbrDvCd}
|
||||
|
||||
<!-- 쇼핑몰 코드 -->
|
||||
<if test="sopmalCd != null and sopmalCd != ''">
|
||||
AND B.SOPMAL_CD = #{sopmalCd}
|
||||
</if>
|
||||
|
||||
<!-- 특정 혜택(방송)만 점검하고 싶을 때 -->
|
||||
<if test="bnfInnb != null">
|
||||
AND P.BNF_INNB = #{bnfInnb}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 라이브쇼핑 마일리지 적립 정보 삽입 -->
|
||||
<insert id="insertLiveShoppingRewardReceipt" parameterType="com.wb.domainserver.domain.gcone.bnft.lvshop.vo.BOLvshopVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 시간
|
||||
) VALUES (
|
||||
#{bnfRcvInnb}, -- 혜택 보상수령 고유번호
|
||||
#{bnfPrtInnb}, -- 혜택 참여 고유번호
|
||||
'07010', -- 보상 항목 구분 코드 (라이브 쇼핑 참여 보상)
|
||||
'010', -- 보상 상품 구분 코드 (마일리지)
|
||||
#{mlgRwdAmt}, -- 마일리지 금액
|
||||
#{regusr}, -- 등록자 (회원 고유번호)
|
||||
NOW() -- 현재 시간
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 라이브쇼핑 혜택 정보 조회 (기존 쿼리 - 필요시 유지) -->
|
||||
<select id="selectLvshopInfo" parameterType="long" resultType="com.wb.domainserver.domain.gcone.bnft.lvshop.vo.BOLvshopVO">
|
||||
SELECT
|
||||
BNF_INNB, -- 혜택 고유번호
|
||||
SOPMAL_CD, -- 쇼핑몰 코드
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
BNF_SJ, -- 혜택 제목
|
||||
USE_AT, -- 사용 여부
|
||||
BNF_BGN_DT, -- 혜택 시작 일시
|
||||
BNF_END_DT -- 혜택 종료 일시
|
||||
-- 필요한 컬럼 추가
|
||||
FROM
|
||||
GC_BENEFIT -- 혜택 기본 정보 테이블
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb}; -- 혜택 고유번호 조건
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,344 @@
|
||||
<?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.bnft.oxquiz.mapper.BOOxquizMapper">
|
||||
|
||||
<!-- OX 퀴즈 기본 정보 조회 -->
|
||||
<select id="selectOxquizBasicInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_SJ, -- 혜택 제목
|
||||
SCR_REPRSNT_IMG, -- 화면 대표 이미지
|
||||
BNF_BGN_DT, -- 진행기간 시작일시
|
||||
BNF_END_DT, -- 진행기간 종료일시
|
||||
BNF_WORDS_CN -- 혜택 안내
|
||||
FROM
|
||||
GC_BENEFIT
|
||||
WHERE
|
||||
BNF_DV_CD = '130' -- OX 퀴즈 혜택 구분 코드
|
||||
AND USE_AT = 'Y'
|
||||
AND DATE(NOW()) BETWEEN DATE(BNF_BGN_DT) AND DATE(BNF_END_DT)
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<select id="selectOxquizDetailInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_QUIZ_INNB, -- 퀴즈 고유번호
|
||||
QUIZ_CN, -- 퀴즈 내용
|
||||
QUIZ_CNSR, -- 퀴즈 정답
|
||||
HINT_URL, -- 힌트 url
|
||||
QUIZ_SEQ -- 퀴즈 순서
|
||||
FROM (
|
||||
SELECT
|
||||
c.*,
|
||||
ROW_NUMBER() OVER (PARTITION BY c.BNF_INNB ORDER BY c.BNF_QUIZ_INNB) as QUIZ_SEQ
|
||||
FROM
|
||||
GC_BENEFIT_OXQUIZ c
|
||||
WHERE
|
||||
c.DEL_AT = 'N'
|
||||
) numbered
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb}
|
||||
ORDER BY
|
||||
QUIZ_SEQ ASC
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 사용자의 OX 퀴즈 참여 정보 조회 -->
|
||||
<select id="selectUserOxquizParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
p.BNF_INNB, -- 혜택 설정 고유번호
|
||||
po.BNF_QUIZ_INNB, -- 퀴즈 고유번호
|
||||
po.ANSW_CN AS USER_ANSWER, -- 사용자 답변
|
||||
CASE
|
||||
WHEN po.ANSW_CN = c.QUIZ_CNSR THEN 'O'
|
||||
WHEN po.ANSW_CN IS NOT NULL THEN 'X'
|
||||
ELSE NULL
|
||||
END AS IS_CORRECT -- 정답 여부
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN p
|
||||
JOIN GC_BENEFIT_PARTCPTN_OXQUIZ po ON p.BNF_PRT_INNB = po.BNF_PRT_INNB
|
||||
JOIN GC_BENEFIT_OXQUIZ c ON po.BNF_QUIZ_INNB = c.BNF_QUIZ_INNB
|
||||
WHERE
|
||||
p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.BNF_INNB = #{bnfInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 사용자 당일 참여 조회 -->
|
||||
<select id="selectTodayParticipationCount" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO" resultType="int">
|
||||
<![CDATA[
|
||||
SELECT COUNT(*)
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
AND DATE(BNF_PRT_DT) = CURDATE()
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 사용자가 맞춘 정답 수 조회 -->
|
||||
<select id="selectUserCorrectAnswerCount" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO" resultType="int">
|
||||
<![CDATA[
|
||||
SELECT COUNT(*)
|
||||
FROM GC_BENEFIT_PARTCPTN p
|
||||
JOIN GC_BENEFIT_PARTCPTN_OXQUIZ po ON p.BNF_PRT_INNB = po.BNF_PRT_INNB
|
||||
JOIN GC_BENEFIT_OXQUIZ o ON po.BNF_QUIZ_INNB = o.BNF_QUIZ_INNB
|
||||
WHERE p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.BNF_INNB = #{bnfInnb}
|
||||
AND po.ANSW_CN = o.QUIZ_CNSR
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 특정 보상 코드에 해당하는 보상 정보 조회 -->
|
||||
<select id="selectRewardInfoByCode" parameterType="map" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
COUPON_INNB -- 쿠폰 고유번호
|
||||
FROM
|
||||
GC_BENEFIT_REWARD
|
||||
WHERE
|
||||
BNF_RWD_CATE_DV_CD = #{rewardCode}
|
||||
AND BNF_INNB = #{bnfInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 현재 퀴즈 개수 조회 -->
|
||||
<select id="selectCurrentQuizCount" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO" resultType="int">
|
||||
<![CDATA[
|
||||
SELECT COUNT(*)
|
||||
FROM GC_BENEFIT_OXQUIZ A
|
||||
JOIN GC_BENEFIT B ON A.BNF_INNB = B.BNF_INNB
|
||||
WHERE A.BNF_INNB = #{bnfInnb}
|
||||
AND A.DEL_AT = 'N'
|
||||
AND B.SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 특정 번호의 퀴즈 조회 -->
|
||||
<select id="selectCurrentOxquiz" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_QUIZ_INNB, -- 혜택 퀴즈 고유번호
|
||||
QUIZ_CN, -- 퀴즈 내용
|
||||
QUIZ_CNSR, -- 퀴즈 정답
|
||||
HINT_URL -- 힌트보기 링크
|
||||
FROM
|
||||
GC_BENEFIT_OXQUIZ
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb}
|
||||
AND BNF_QUIZ_INNB = #{bnfQuizInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 초록잎 지급 개수 조회 -->
|
||||
<select id="selectLeafCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PYMNT_CNT, -- 지급 초록잎 개수
|
||||
SPECIAL_CNT -- 스페셜 지급 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN
|
||||
WHERE
|
||||
BNF_DV_CD = '130' -- 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!-- OX 퀴즈 참여 정보 저장 (초록잎 적립 포함) -->
|
||||
<insert id="insertOxquizParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO">
|
||||
<selectKey keyProperty="bnfPrtInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_PRT_DT, -- 혜택 참여일시
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
PRT_LEAF_CNT, -- 참여 초록잎 개수 (추가)
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
) VALUES (
|
||||
#{bnfPrtInnb},
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{paidLeafCnt}, -- 초록잎 지급량 (추가)
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- OX 퀴즈 현재 퀴즈 번호 -->
|
||||
<select id="selectCurrentQuizNumber" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO" resultType="int">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
CASE
|
||||
WHEN MIN(not_participated.QUIZ_SEQ) IS NULL THEN
|
||||
(SELECT MAX(QUIZ_SEQ) FROM (
|
||||
SELECT ROW_NUMBER() OVER (PARTITION BY o.BNF_INNB ORDER BY o.BNF_QUIZ_INNB) as QUIZ_SEQ
|
||||
FROM GC_BENEFIT_OXQUIZ o
|
||||
WHERE o.BNF_INNB = #{bnfInnb} AND o.DEL_AT = 'N'
|
||||
) all_quiz)
|
||||
ELSE MIN(not_participated.QUIZ_SEQ)
|
||||
END as current_quiz
|
||||
FROM (
|
||||
SELECT
|
||||
o.*,
|
||||
ROW_NUMBER() OVER (PARTITION BY o.BNF_INNB ORDER BY o.BNF_QUIZ_INNB) as QUIZ_SEQ
|
||||
FROM
|
||||
GC_BENEFIT_OXQUIZ o
|
||||
WHERE
|
||||
o.BNF_INNB = #{bnfInnb}
|
||||
AND o.DEL_AT = 'N'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_PARTCPTN p
|
||||
JOIN GC_BENEFIT_PARTCPTN_OXQUIZ po ON p.BNF_PRT_INNB = po.BNF_PRT_INNB
|
||||
WHERE p.MBR_INNB = #{mbrInnb}
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.BNF_INNB = #{bnfInnb}
|
||||
AND po.BNF_QUIZ_INNB = o.BNF_QUIZ_INNB
|
||||
)
|
||||
) not_participated
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- OX 퀴즈 참여 상세 정보 저장 -->
|
||||
<insert id="insertOxquizParticipationDetail" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO">
|
||||
<selectKey keyProperty="bnfPrtQuizInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_QUIZ_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN_OXQUIZ
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN_OXQUIZ (
|
||||
BNF_PRT_QUIZ_INNB, -- 혜택 참여 OX퀴즈 고유번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_QUIZ_INNB, -- 혜택 퀴즈 고유번호
|
||||
ANSW_CN, -- 답변내용
|
||||
CNSR_AT -- 정답여부
|
||||
) VALUES (
|
||||
#{bnfPrtQuizInnb},
|
||||
#{bnfPrtInnb},
|
||||
#{bnfQuizInnb},
|
||||
#{answCn},
|
||||
#{cnsrAt}
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 알림 상태 조회 -->
|
||||
<select id="selectNotificationStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
AGRE_AT -- 동의여부
|
||||
FROM
|
||||
GC_BENEFIT_AGREE
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_DV_CD = '130' -- OX 퀴즈 혜택 구분 코드
|
||||
AND BNF_AGRE_DV_CD = '010' -- 알림동의 구분 코드
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 알림 상태 변경 -->
|
||||
<update id="updateNotificationStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_AGREE (
|
||||
SOPMAL_CD, -- 쇼핑몰코드
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
BNF_AGRE_DV_CD, -- 혜택 동의 구분 코드
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
AGRE_AT, -- 동의여부
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
)
|
||||
SELECT
|
||||
#{sopmalCd},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
'130', -- OX 퀴즈 혜택 구분 코드
|
||||
'010', -- 알림동의 구분 코드
|
||||
#{bnfInnb},
|
||||
#{agreAt},
|
||||
#{regusr},
|
||||
NOW()
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_BENEFIT_AGREE
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_DV_CD = '130'
|
||||
AND BNF_AGRE_DV_CD = '010'
|
||||
);
|
||||
|
||||
UPDATE GC_BENEFIT_AGREE
|
||||
SET
|
||||
AGRE_AT = #{agreAt},
|
||||
REGUSR = #{regusr},
|
||||
REGIST_DT = NOW()
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_DV_CD = '130'
|
||||
AND BNF_AGRE_DV_CD = '010';
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 보상 정보 조회 -->
|
||||
<select id="selectRewardInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
COUPON_INNB -- 쿠폰 고유번호
|
||||
FROM
|
||||
GC_BENEFIT_REWARD
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb}
|
||||
AND BNF_RWD_CATE_DV_CD IN ('13010', '13020', '13030') -- OX 퀴즈 보상 코드
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 보상 지급 -->
|
||||
<insert id="insertReward" parameterType="com.wb.domainserver.domain.gcone.bnft.oxquiz.vo.BOOxquizVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
COUPON_INNB, -- 쿠폰 고유번호
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록일시
|
||||
) VALUES (
|
||||
#{bnfRcvInnb},
|
||||
#{bnfPrtInnb},
|
||||
#{bnfRwdCateDvCd},
|
||||
#{bnfRwdGodsDvCd},
|
||||
#{mlgRwdAmt},
|
||||
#{couponInnb},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
</mapper>
|
||||
@@ -0,0 +1,933 @@
|
||||
<?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.bnft.purstmp.mapper.BOPurstmpStampMapper">
|
||||
|
||||
<!-- gc_order 테이블에서 매장 구매 정보 조회 (스탬프 적립/차감 처리용) -->
|
||||
<select id="selectStoreOrdersForStamp"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
-- gc_order 테이블에서 매장 구매 정보 조회 (디바이스 등록일 기준 조회기간 적용)
|
||||
SELECT
|
||||
O.ORDR_INNB AS ORDR_INNB, -- 주문 고유번호
|
||||
O.STR_INNB AS STR_INNB, -- 매장 고유번호
|
||||
O.RL_SETLE_AMT AS RL_SETLE_AMT, -- 실 결제금액
|
||||
CASE
|
||||
WHEN ST.TENTCPN_NM IS NOT NULL THEN ST.TENTCPN_NM
|
||||
WHEN ST.STR_NM IS NOT NULL THEN ST.STR_NM
|
||||
ELSE CONCAT('매장_', O.STR_INNB)
|
||||
END AS STR_NM, -- 매장명
|
||||
DATE_FORMAT(O.SETLE_COMPT_DT, '%Y-%m-%d %H:%i:%s') AS SETLE_COMPT_DT, -- 결제완료일시
|
||||
O.SLE_ENVRN_CD AS SLE_ENVRN_CD, -- 판매환경코드
|
||||
O.SKN_ENVRN_CD AS SKN_ENVRN_CD, -- 스킨환경코드
|
||||
O.ORDR_STTUS_CD AS ORDR_STTUS_CD, -- 주문상태코드 추가
|
||||
CASE
|
||||
WHEN O.ORDR_STTUS_CD IN ('25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80') THEN 'ACCUMULATE'
|
||||
WHEN O.ORDR_STTUS_CD IN ('85', '95', '99') THEN 'DEDUCT'
|
||||
ELSE 'IGNORE'
|
||||
END AS STAMP_ACTION -- 스탬프 처리 액션 (적립/차감/무시)
|
||||
FROM
|
||||
GC_ORDER O
|
||||
LEFT JOIN
|
||||
GC_STORE ST ON O.STR_INNB = ST.STR_INNB
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_STMP BS ON O.ORDR_INNB = BS.ORDR_INNB
|
||||
AND O.MBR_INNB = BS.MBR_INNB
|
||||
AND O.SOPMAL_CD = BS.SOPMAL_CD
|
||||
-- 회원 디바이스 정보 JOIN 추가 (조회 기간 산정용)
|
||||
LEFT JOIN
|
||||
GC_MEMBER_DEVICE_INFO MDI ON O.MBR_INNB = MDI.MBR_INNB
|
||||
AND O.MBR_DV_CD = MDI.MBR_DV_CD
|
||||
AND O.SOPMAL_CD = MDI.SOPMAL_CD
|
||||
WHERE
|
||||
O.MBR_INNB = #{mbrInnb}
|
||||
AND O.MBR_DV_CD = #{mbrDvCd}
|
||||
AND O.SOPMAL_CD = #{sopmalCd}
|
||||
AND O.USE_AT = 'Y'
|
||||
AND (
|
||||
-- 스탬프 적립 대상 (정상 결제완료 상태)
|
||||
O.ORDR_STTUS_CD IN ('25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80')
|
||||
OR
|
||||
-- 스탬프 차감 대상 (결제취소/주문무효/결제실패)
|
||||
O.ORDR_STTUS_CD IN ('85')
|
||||
)
|
||||
AND (
|
||||
-- gc_order 참고사항: 매장 구매금액 조건
|
||||
O.SLE_ENVRN_CD IN ('S1', 'S2', 'S3')
|
||||
OR O.SKN_ENVRN_CD = 'POS'
|
||||
)
|
||||
-- 차감 대상은 이미 처리된 주문도 포함
|
||||
AND (
|
||||
(O.ORDR_STTUS_CD IN ('25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80') AND BS.ORDR_INNB IS NULL) -- 적립: 미처리만
|
||||
OR
|
||||
(O.ORDR_STTUS_CD IN ('85') AND BS.ORDR_INNB IS NOT NULL AND BS.REFUND_AT = 'N') -- 차감: 이미 적립된 것만
|
||||
)
|
||||
<if test="strInnb != null and strInnb != '' and strInnb != 'null'">
|
||||
AND O.STR_INNB = #{strInnb}
|
||||
</if>
|
||||
AND O.SETLE_COMPT_DT IS NOT NULL
|
||||
-- 디바이스 등록일부터 현재까지 조회 (디바이스 정보 없으면 전체 조회)
|
||||
<if test="true">
|
||||
AND (MDI.REGIST_DT IS NULL OR O.SETLE_COMPT_DT >= DATE(MDI.REGIST_DT))
|
||||
</if>
|
||||
AND O.SETLE_COMPT_DT <= NOW() -- 현재까지
|
||||
ORDER BY
|
||||
O.SETLE_COMPT_DT DESC
|
||||
</select>
|
||||
|
||||
<!-- 매장별 적립카드 조회 (유효기간 내, 교환권 포함) - 정렬 수정 -->
|
||||
<select id="selectStampCards" parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
-- 매장별 진행 중인 스탬프 적립카드와 교환권 정보 조회 (쿠폰 정보 포함, 매장명 개선)
|
||||
SELECT
|
||||
SE.BNF_EXTIKET_INNB AS BNF_EXTIKET_INNB, -- 교환권 고유번호
|
||||
SE.SOPMAL_CD AS SOPMAL_CD, -- 쇼핑몰코드
|
||||
SE.STR_INNB AS STR_INNB, -- 매장 고유번호
|
||||
CASE
|
||||
WHEN ST.STR_NM IS NOT NULL THEN ST.STR_NM
|
||||
WHEN ST.TENTCPN_NM IS NOT NULL THEN ST.TENTCPN_NM
|
||||
ELSE CONCAT('매장_', SE.STR_INNB)
|
||||
END AS STR_NM, -- 매장명 (gc_store 테이블 연동)
|
||||
SE.MBR_INNB AS MBR_INNB, -- 회원 고유번호
|
||||
SE.MBR_DV_CD AS MBR_DV_CD, -- 회원 구분코드
|
||||
SE.EXTIKET_STMP_CNT AS EXTIKET_STMP_CNT, -- 교환권 스탬프 수
|
||||
DATE_FORMAT(SE.STMP_VALID_DT, '%Y-%m-%d') AS STMP_VALID_DT, -- 스탬프 유효일시
|
||||
SE.EXCHNG_AT AS EXCHNG_AT, -- 교환여부
|
||||
SE.COUPON_INNB AS COUPON_INNB, -- 쿠폰고유번호
|
||||
DATE_FORMAT(SE.REGIST_DT, '%Y-%m-%d') AS REGIST_DT, -- 등록일시
|
||||
CASE
|
||||
WHEN SE.EXCHNG_AT = 'Y' THEN 'COMPLETED'
|
||||
WHEN NOW() > SE.STMP_VALID_DT THEN 'EXPIRED'
|
||||
ELSE 'ACTIVE'
|
||||
END AS STATUS,
|
||||
CASE
|
||||
WHEN SE.COUPON_INNB IS NOT NULL THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS HAS_COUPON
|
||||
FROM
|
||||
GC_BENEFIT_STMP_EXTIKET SE
|
||||
LEFT JOIN
|
||||
GC_STORE ST ON SE.STR_INNB = ST.STR_INNB
|
||||
WHERE
|
||||
SE.MBR_INNB = #{mbrInnb}
|
||||
AND SE.MBR_DV_CD = #{mbrDvCd}
|
||||
AND SE.SOPMAL_CD = #{sopmalCd}
|
||||
<if test="strInnb != null and strInnb != '' and strInnb > 0">
|
||||
AND SE.STR_INNB = #{strInnb}
|
||||
</if>
|
||||
AND (
|
||||
-- 유효기간 내의 카드이거나 교환권 발급 완료된 카드
|
||||
(NOW() <= SE.STMP_VALID_DT OR SE.EXCHNG_AT = 'Y')
|
||||
)
|
||||
ORDER BY
|
||||
-- 교환되지 않은 카드를 먼저 표시
|
||||
CASE WHEN SE.EXCHNG_AT = 'N' THEN 0 ELSE 1 END ASC,
|
||||
SE.REGIST_DT ASC
|
||||
</select>
|
||||
|
||||
<!-- 보유한 적립카드 개수 조회 (교환권 발급 완료 건도 포함) -->
|
||||
<select id="selectTotalCardCount" parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO" resultType="int">
|
||||
-- 보유한 적립카드 개수 조회 (교환권 발급 완료 건도 포함)
|
||||
SELECT
|
||||
COUNT(*) AS CARD_COUNT
|
||||
FROM
|
||||
GC_BENEFIT_STMP_EXTIKET SE
|
||||
WHERE
|
||||
SE.MBR_INNB = #{mbrInnb}
|
||||
AND SE.MBR_DV_CD = #{mbrDvCd}
|
||||
AND SE.SOPMAL_CD = #{sopmalCd}
|
||||
AND NOW() <= SE.STMP_VALID_DT
|
||||
</select>
|
||||
|
||||
<!-- 스탬프 적립 내역 조회 -->
|
||||
<select id="selectRecentPurchasesWithStamps"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
-- 최근 스탬프 적립 내역 조회 (매장명 연동)
|
||||
SELECT
|
||||
BS.BNF_STMP_INNB AS BNF_STMP_INNB,
|
||||
BS.ORDR_INNB AS ORDR_INNB,
|
||||
BS.REFUND_AT AS REFUND_AT,
|
||||
BS.PURCHS_AMT AS PURCHS_AMT,
|
||||
BS.RL_SETLE_AMT AS RL_SETLE_AMT,
|
||||
BS.STMP_CNT AS STMP_CNT,
|
||||
BS.AMT_FOR_CHG AS AMT_FOR_CHG,
|
||||
DATE_FORMAT(BS.SETLE_COMPT_DT, '%Y-%m-%d %H:%i:%s') AS SETLE_COMPT_DT,
|
||||
DATE_FORMAT(BS.REGIST_DT, '%Y-%m-%d %H:%i:%s') AS REGIST_DT,
|
||||
CASE
|
||||
WHEN ST.STR_NM IS NOT NULL THEN ST.STR_NM
|
||||
WHEN ST.TENTCPN_NM IS NOT NULL THEN ST.TENTCPN_NM
|
||||
ELSE CONCAT('매장_', BS.STR_INNB)
|
||||
END AS BRANCH_NAME -- 매장명 (gc_store 테이블 연동)
|
||||
FROM
|
||||
GC_BENEFIT_STMP BS
|
||||
LEFT JOIN
|
||||
GC_STORE ST ON BS.STR_INNB = ST.STR_INNB
|
||||
WHERE
|
||||
BS.MBR_INNB = #{mbrInnb}
|
||||
AND BS.MBR_DV_CD = #{mbrDvCd}
|
||||
AND BS.SOPMAL_CD = #{sopmalCd}
|
||||
AND (BS.REFUND_AT IS NULL OR BS.REFUND_AT != 'Y') -- 환불된 건 제외
|
||||
<if test="strInnb != null and strInnb != ''">
|
||||
AND BS.STR_INNB = #{strInnb}
|
||||
</if>
|
||||
AND BS.REGIST_DT >= DATE_SUB(NOW(), INTERVAL 12 MONTH)
|
||||
ORDER BY
|
||||
BS.REGIST_DT DESC
|
||||
LIMIT 20
|
||||
</select>
|
||||
|
||||
<!-- 스탬프 적립 내역 추가 로딩 (스크롤 시 20개 추가) - 컬럼 추가 -->
|
||||
<select id="selectMorePurchasesWithStamps"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
-- 스크롤 시 추가 로딩할 스탬프 적립 내역 조회
|
||||
SELECT
|
||||
BS.BNF_STMP_INNB AS BNF_STMP_INNB,
|
||||
BS.ORDR_INNB AS ORDR_INNB,
|
||||
BS.REFUND_AT AS REFUND_AT,
|
||||
BS.PURCHS_AMT AS PURCHS_AMT,
|
||||
BS.RL_SETLE_AMT AS RL_SETLE_AMT,
|
||||
BS.STMP_CNT AS STMP_CNT,
|
||||
BS.AMT_FOR_CHG AS AMT_FOR_CHG,
|
||||
DATE_FORMAT(BS.SETLE_COMPT_DT, '%Y-%m-%d %H:%i:%s') AS SETLE_COMPT_DT,
|
||||
DATE_FORMAT(BS.REGIST_DT, '%Y-%m-%d %H:%i:%s') AS REGIST_DT,
|
||||
CASE
|
||||
WHEN ST.STR_NM IS NOT NULL THEN ST.STR_NM
|
||||
WHEN ST.TENTCPN_NM IS NOT NULL THEN ST.TENTCPN_NM
|
||||
ELSE CONCAT('매장_', BS.STR_INNB)
|
||||
END AS BRANCH_NAME
|
||||
FROM
|
||||
GC_BENEFIT_STMP BS
|
||||
LEFT JOIN
|
||||
GC_STORE ST ON BS.STR_INNB = ST.STR_INNB
|
||||
WHERE
|
||||
BS.MBR_INNB = #{mbrInnb}
|
||||
AND BS.MBR_DV_CD = #{mbrDvCd}
|
||||
AND BS.SOPMAL_CD = #{sopmalCd}
|
||||
AND (BS.REFUND_AT IS NULL OR BS.REFUND_AT != 'Y') -- 환불된 건 제외
|
||||
<if test="strInnb != null and strInnb != ''">
|
||||
AND BS.STR_INNB = #{strInnb}
|
||||
</if>
|
||||
AND BS.REGIST_DT >= DATE_SUB(NOW(), INTERVAL 12 MONTH)
|
||||
<if test="lastStmpInnb != null and lastStmpInnb > 0">
|
||||
AND BS.REGIST_DT < (
|
||||
SELECT REGIST_DT
|
||||
FROM GC_BENEFIT_STMP
|
||||
WHERE BNF_STMP_INNB = #{lastStmpInnb}
|
||||
)
|
||||
</if>
|
||||
ORDER BY
|
||||
BS.REGIST_DT DESC
|
||||
LIMIT 20
|
||||
</select>
|
||||
|
||||
<!-- 새로운 스탬프 적립 기록 추가 -->
|
||||
<insert id="insertNewPurchase" parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO">
|
||||
-- 새로운 구매 기록 추가 및 스탬프 적립
|
||||
INSERT INTO GC_BENEFIT_STMP (
|
||||
SOPMAL_CD, -- 쇼핑몰코드
|
||||
STR_INNB, -- 매장고유번호
|
||||
ORDR_INNB, -- 주문 고유번호
|
||||
REFUND_AT, -- 환불여부
|
||||
MBR_INNB, -- 회원고유번호
|
||||
MBR_DV_CD, -- 회원구분코드
|
||||
PURCHS_INNB, -- 구매식별 고유번호
|
||||
PURCHS_AMT, -- 구매금액
|
||||
RL_SETLE_AMT, -- 실 결제금액
|
||||
SETLE_COMPT_DT, -- 결제완료일시
|
||||
STMP_CNT, -- 적립 스탬프 수
|
||||
AMT_FOR_CHG, -- 충전필요금액
|
||||
REGIST_DT -- 등록일시
|
||||
) VALUES (
|
||||
#{sopmalCd},
|
||||
#{strInnb},
|
||||
#{ordrInnb},
|
||||
IFNULL(#{refundAt}, 'N'),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{purchsInnb},
|
||||
#{purchsAmt},
|
||||
#{rlSetleAmt},
|
||||
#{setleCmptDt},
|
||||
#{stmpCnt},
|
||||
#{amtForChg},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 새로운 적립카드(교환권) 생성 -->
|
||||
<insert id="insertExchangeTicket"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
useGeneratedKeys="true"
|
||||
keyProperty="bnfExtiketInnb">
|
||||
-- 새로운 교환권(스탬프 적립카드) 생성
|
||||
INSERT INTO GC_BENEFIT_STMP_EXTIKET (
|
||||
SOPMAL_CD,
|
||||
STR_INNB,
|
||||
MBR_INNB,
|
||||
MBR_DV_CD,
|
||||
EXTIKET_STMP_CNT,
|
||||
STMP_VALID_DT,
|
||||
EXCHNG_AT,
|
||||
REGIST_DT
|
||||
) VALUES (
|
||||
#{sopmalCd},
|
||||
#{strInnb},
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{extiketStmpCnt},
|
||||
<choose>
|
||||
<when test="stmpValidDt != null">
|
||||
#{stmpValidDt}
|
||||
</when>
|
||||
<otherwise>
|
||||
DATE_ADD(NOW(), INTERVAL 12 MONTH) -- 기본: 현재시점으로부터 12개월
|
||||
</otherwise>
|
||||
</choose>,
|
||||
IFNULL(#{exchngAt}, 'N'),
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- Step 1: 교환권 완료 대상 PK 조회 -->
|
||||
<select id="selectExchangeTicketForComplete"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="Long">
|
||||
-- 교환권 완료 처리 대상 PK 조회
|
||||
SELECT
|
||||
BNF_EXTIKET_INNB
|
||||
FROM
|
||||
GC_BENEFIT_STMP_EXTIKET
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND STR_INNB = #{strInnb}
|
||||
AND EXCHNG_AT = 'N'
|
||||
AND EXTIKET_STMP_CNT = #{requiredStampCnt}
|
||||
AND NOW() <= STMP_VALID_DT
|
||||
ORDER BY
|
||||
REGIST_DT ASC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- Step 2: PK 기준 교환권 완료 처리 (쿠폰 포함) -->
|
||||
<update id="completeExchangeTicketWithCoupon"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO">
|
||||
-- PK 기준 교환권 완료 처리 (쿠폰 정보 포함)
|
||||
UPDATE
|
||||
GC_BENEFIT_STMP_EXTIKET
|
||||
SET
|
||||
EXCHNG_AT = 'Y',
|
||||
EXCHNG_DT = NOW(),
|
||||
COUPON_INNB = #{couponInnb},
|
||||
UPDT_DT = NOW()
|
||||
WHERE
|
||||
BNF_EXTIKET_INNB = #{bnfExtiketInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
<!-- ✅ 새로 추가: 쿠폰 번호만 업데이트하는 쿼리 -->
|
||||
<update id="updateExchangeTicketCouponOnly"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO">
|
||||
-- 교환권에 쿠폰 번호만 업데이트
|
||||
UPDATE
|
||||
GC_BENEFIT_STMP_EXTIKET
|
||||
SET
|
||||
COUPON_INNB = #{couponInnb},
|
||||
UPDT_DT = NOW()
|
||||
WHERE
|
||||
BNF_EXTIKET_INNB = #{bnfExtiketInnb}
|
||||
AND EXCHNG_AT = 'Y' -- 이미 완료된 상태에서만 업데이트
|
||||
-- 추가 조건 제거하여 업데이트 확률 높임
|
||||
</update>
|
||||
|
||||
<!-- 교환권 사용 완료 후 적립카드 삭제 처리 -->
|
||||
<update id="deleteCompletedExchangeTicket" parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO">
|
||||
-- 교환권 사용 완료 후 적립카드 삭제 처리
|
||||
DELETE FROM
|
||||
GC_BENEFIT_STMP_EXTIKET
|
||||
WHERE
|
||||
BNF_EXTIKET_INNB = #{bnfExtiketInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND EXCHNG_AT = 'Y'
|
||||
</update>
|
||||
|
||||
<!-- 총 미교환 스탬프 수 조회 -->
|
||||
<select id="selectTotalUnexchangedStamps"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="int">
|
||||
-- ✅ 수정: 실제 사용 가능한 스탬프 수 조회 (완료된 교환권의 스탬프만 제외)
|
||||
SELECT
|
||||
GREATEST(0,
|
||||
(
|
||||
-- 총 적립된 스탬프 수
|
||||
SELECT IFNULL(SUM(STMP_CNT), 0)
|
||||
FROM GC_BENEFIT_STMP
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND STR_INNB = #{strInnb}
|
||||
AND REFUND_AT = 'N'
|
||||
) - (
|
||||
-- 완료된 교환권의 스탬프만 차감 (진행 중인 것은 제외)
|
||||
SELECT IFNULL(SUM(EXTIKET_STMP_CNT), 0)
|
||||
FROM GC_BENEFIT_STMP_EXTIKET
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND STR_INNB = #{strInnb}
|
||||
AND EXCHNG_AT = 'Y' -- 완료된 교환권만 차감
|
||||
)
|
||||
) AS AVAILABLE_STAMPS
|
||||
</select>
|
||||
|
||||
<!-- 잔액 조회 수정 (동적 스탬프 기준 금액 적용) -->
|
||||
<select id="selectRemainingAmount"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="java.lang.Double">
|
||||
-- 간단한 잔액 조회 (0으로 고정 - 매번 새로운 구매로 처리)
|
||||
SELECT 0.0 AS REMAINING_AMOUNT
|
||||
</select>
|
||||
|
||||
<!-- 교환권 갯수 조회 -->
|
||||
<select id="selectTotalRowCountFromBenefitExtiket"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="int">
|
||||
-- 특정 회원의 유효한 교환권 개수 조회
|
||||
SELECT
|
||||
COUNT(*) AS TOTAL_COUNT
|
||||
FROM
|
||||
GC_BENEFIT_STMP_EXTIKET
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
<if test="strInnb != null and strInnb != ''">
|
||||
AND STR_INNB = #{strInnb}
|
||||
</if>
|
||||
AND NOW() <= STMP_VALID_DT
|
||||
</select>
|
||||
|
||||
<!-- 스탬프 화면 정보 조회 (gc_benefit_content 테이블 연동) -->
|
||||
<select id="selectPurstmpScreenInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
-- 스탬프 적립 이벤트의 화면 정보 조회
|
||||
SELECT
|
||||
B.BNF_INNB AS BNF_INNB, -- 혜택 설정 고유번호
|
||||
BC.CN_SJ AS CN_SJ, -- 컨텐츠 제목
|
||||
BC.IMG_FIL_COURS AS IMG_FIL_COURS, -- 이미지 파일 경로
|
||||
BC.WORDS_CN AS WORDS_CN -- 안내 내용
|
||||
FROM
|
||||
GC_BENEFIT B
|
||||
INNER JOIN
|
||||
GC_BENEFIT_CONTENT BC ON B.BNF_INNB = BC.BNF_INNB
|
||||
WHERE
|
||||
B.BNF_DV_CD = '140' -- 스탬프 적립 이벤트 코드 (140)
|
||||
AND B.SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
B.BNF_INNB DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 관리자 설정 이달의 선물 정보 조회 -->
|
||||
<select id="selectMonthlyGiftInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
B.BNF_INNB AS BNF_INNB, -- 혜택 설정 고유번호
|
||||
BC.COUPON_INNB AS COUPON_INNB -- 쿠폰 고유번호
|
||||
FROM
|
||||
GC_BENEFIT B
|
||||
INNER JOIN
|
||||
GC_BENEFIT_REWARD BC ON B.BNF_INNB = BC.BNF_INNB
|
||||
WHERE
|
||||
B.BNF_DV_CD = '140' -- 스탬프 적립 이벤트 코드 (140)
|
||||
AND B.SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
B.BNF_INNB DESC
|
||||
</select>
|
||||
|
||||
<!-- selectCurrentExchangeTicket 수정 -->
|
||||
<select id="selectCurrentExchangeTicket"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
BNF_EXTIKET_INNB AS bnfExtiketInnb,
|
||||
EXTIKET_STMP_CNT AS extiketStmpCnt
|
||||
FROM
|
||||
GC_BENEFIT_STMP_EXTIKET
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND STR_INNB = #{strInnb}
|
||||
AND EXCHNG_AT = 'N'
|
||||
AND EXTIKET_STMP_CNT < 10
|
||||
AND NOW() <= STMP_VALID_DT
|
||||
ORDER BY
|
||||
REGIST_DT ASC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 교환권 스탬프 수 업데이트 -->
|
||||
<update id="updateExchangeTicketStampCount">
|
||||
-- 교환권의 스탬프 수를 업데이트
|
||||
UPDATE
|
||||
GC_BENEFIT_STMP_EXTIKET
|
||||
SET
|
||||
EXTIKET_STMP_CNT = EXTIKET_STMP_CNT + #{newStampCount},
|
||||
UPDT_DT = NOW()
|
||||
WHERE
|
||||
BNF_EXTIKET_INNB = #{extiketInnb}
|
||||
</update>
|
||||
|
||||
<!-- 쿠폰(교환권) 목록 조회 - 정렬 수정 -->
|
||||
<select id="selectCouponList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
-- 회원의 쿠폰(교환권) 목록 조회 (쿠폰 정보 포함, 매장명 개선)
|
||||
SELECT
|
||||
SE.BNF_EXTIKET_INNB AS bnfExtiketInnb,
|
||||
SE.SOPMAL_CD AS sopmalCd,
|
||||
SE.STR_INNB AS strInnb,
|
||||
CASE
|
||||
WHEN ST.STR_NM IS NOT NULL THEN ST.STR_NM
|
||||
WHEN ST.TENTCPN_NM IS NOT NULL THEN ST.TENTCPN_NM
|
||||
ELSE CONCAT('매장_', SE.STR_INNB)
|
||||
END AS branchName, -- 매장명 (gc_store 테이블 연동)
|
||||
SE.MBR_INNB AS mbrInnb,
|
||||
SE.MBR_DV_CD AS mbrDvCd,
|
||||
SE.EXTIKET_STMP_CNT AS extiketStmpCnt,
|
||||
DATE_FORMAT(SE.STMP_VALID_DT, '%Y-%m-%d %H:%i:%s') AS stmpValidDt,
|
||||
SE.EXCHNG_AT AS exchngAt,
|
||||
DATE_FORMAT(SE.EXCHNG_DT, '%Y-%m-%d %H:%i:%s') AS exchngDt,
|
||||
DATE_FORMAT(SE.REGIST_DT, '%Y-%m-%d %H:%i:%s') AS registDt,
|
||||
DATE_FORMAT(SE.UPDT_DT, '%Y-%m-%d %H:%i:%s') AS updtDt,
|
||||
SE.COUPON_INNB AS couponInnb,
|
||||
CASE
|
||||
WHEN SE.EXCHNG_AT = 'N' AND NOW() <= SE.STMP_VALID_DT AND SE.EXTIKET_STMP_CNT >= 10 THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS exchangeable,
|
||||
CASE
|
||||
WHEN SE.COUPON_INNB IS NOT NULL THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS hasCoupon
|
||||
FROM
|
||||
GC_BENEFIT_STMP_EXTIKET SE
|
||||
LEFT JOIN
|
||||
GC_STORE ST ON SE.STR_INNB = ST.STR_INNB
|
||||
WHERE
|
||||
SE.MBR_INNB = #{mbrInnb}
|
||||
AND SE.MBR_DV_CD = #{mbrDvCd}
|
||||
AND SE.SOPMAL_CD = #{sopmalCd}
|
||||
<if test="strInnb != null and strInnb != ''">
|
||||
AND SE.STR_INNB = #{strInnb}
|
||||
</if>
|
||||
ORDER BY
|
||||
-- 교환되지 않은 쿠폰을 먼저 표시
|
||||
CASE WHEN SE.EXCHNG_AT = 'N' THEN 0 ELSE 1 END ASC,
|
||||
-- 교환되지 않은 쿠폰들은 최신순으로, 교환된 쿠폰들도 최신순으로
|
||||
SE.REGIST_DT DESC
|
||||
</select>
|
||||
|
||||
<!-- 특정 교환권 정보 조회 -->
|
||||
<select id="selectSpecificVoucherInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
-- 특정 교환권의 상세 정보 조회
|
||||
SELECT
|
||||
SE.BNF_EXTIKET_INNB AS bnfExtiketInnb,
|
||||
SE.SOPMAL_CD AS sopmalCd,
|
||||
SE.STR_INNB AS strInnb,
|
||||
CASE
|
||||
WHEN ST.STR_NM IS NOT NULL THEN ST.STR_NM
|
||||
WHEN ST.TENTCPN_NM IS NOT NULL THEN ST.TENTCPN_NM
|
||||
ELSE CONCAT('매장_', SE.STR_INNB)
|
||||
END AS branchName,
|
||||
SE.MBR_INNB AS mbrInnb,
|
||||
SE.MBR_DV_CD AS mbrDvCd,
|
||||
SE.EXTIKET_STMP_CNT AS extiketStmpCnt,
|
||||
DATE_FORMAT(SE.STMP_VALID_DT, '%Y-%m-%d %H:%i:%s') AS stmpValidDt,
|
||||
SE.EXCHNG_AT AS exchngAt,
|
||||
DATE_FORMAT(SE.EXCHNG_DT, '%Y-%m-%d %H:%i:%s') AS exchngDt,
|
||||
DATE_FORMAT(SE.REGIST_DT, '%Y-%m-%d %H:%i:%s') AS registDt,
|
||||
DATE_FORMAT(SE.UPDT_DT, '%Y-%m-%d %H:%i:%s') AS updtDt
|
||||
FROM
|
||||
GC_BENEFIT_STMP_EXTIKET SE
|
||||
LEFT JOIN
|
||||
GC_STORE ST ON SE.STR_INNB = ST.STR_INNB
|
||||
WHERE
|
||||
SE.BNF_EXTIKET_INNB = #{bnfExtiketInnb}
|
||||
AND SE.MBR_INNB = #{mbrInnb}
|
||||
AND SE.MBR_DV_CD = #{mbrDvCd}
|
||||
AND SE.SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!-- 기존 구매 데이터 개수 조회 (더 정확한 조건) -->
|
||||
<select id="countExistingPurchaseData"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="int">
|
||||
-- 특정 회원의 기존 구매 데이터 개수 확인
|
||||
SELECT
|
||||
COUNT(*) AS PURCHASE_COUNT
|
||||
FROM
|
||||
GC_BENEFIT_STMP
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND REGIST_DT >= DATE_SUB(NOW(), INTERVAL 6 MONTH) -- 최근 6개월 데이터만 확인
|
||||
</select>
|
||||
|
||||
<!-- 기존 교환권 데이터 개수 조회 (더 정확한 조건) -->
|
||||
<select id="countExistingTicketData"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="int">
|
||||
-- 특정 회원의 기존 교환권 데이터 개수 확인
|
||||
SELECT
|
||||
COUNT(*) AS TICKET_COUNT
|
||||
FROM
|
||||
GC_BENEFIT_STMP_EXTIKET
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND REGIST_DT >= DATE_SUB(NOW(), INTERVAL 6 MONTH) -- 최근 6개월 데이터만 확인
|
||||
</select>
|
||||
|
||||
<!-- 스탬프 교환 보상 정보 조회 (gc_benefit_reward에서) -->
|
||||
<select id="selectStampExchangeReward"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
-- 스탬프 교환 보상 정보 조회 (쿠폰/마일리지)
|
||||
SELECT
|
||||
br.BNF_RWD_CATE_DV_CD AS BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
br.BNF_RWD_GODS_DV_CD AS BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
br.MLG_RWD_AMT AS MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
br.COUPON_INNB AS COUPON_INNB, -- 쿠폰 고유 번호
|
||||
COALESCE(cs.COUPON_SNDNG_NM, br.ITM_NM) AS ITM_NM -- 쿠폰 이름
|
||||
FROM
|
||||
GC_BENEFIT_REWARD br
|
||||
LEFT JOIN
|
||||
GC_COUPON_SNDNG cs ON br.COUPON_INNB = cs.COUPON_SNDNG_INNB
|
||||
AND cs.SOPMAL_CD = #{sopmalCd}
|
||||
WHERE
|
||||
br.BNF_INNB = #{bnfInnb}
|
||||
AND br.BNF_RWD_CATE_DV_CD LIKE '14%' -- 모바일스탬프(140) 관련 보상
|
||||
ORDER BY
|
||||
br.BNF_RWD_CATE_DV_CD
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 스탬프 혜택 참여 정보 저장 -->
|
||||
<insert id="insertStampParticipation"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
useGeneratedKeys="true"
|
||||
keyProperty="bnfPrtInnb"
|
||||
keyColumn="BNF_PRT_INNB">
|
||||
-- 스탬프 적립 시 혜택 참여 정보 저장
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_INNB, -- 혜택 고유 번호
|
||||
BNF_PRT_DT, -- 혜택 참여 일시
|
||||
MBR_INNB, -- 회원 고유 번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
STR_INNB, -- 매장 고유번호 (스탬프용)
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{strInnb},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 스탬프 혜택 설정 정보 조회 -->
|
||||
<select id="selectStampBenefitInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
-- 스탬프 혜택 설정 정보 조회
|
||||
SELECT
|
||||
BNF_INNB, -- 혜택 고유 번호
|
||||
USE_AT, -- 사용여부
|
||||
BNF_BGN_DT, -- 진행기간 시작일시
|
||||
BNF_END_DT, -- 진행기간 종료일시
|
||||
SCR_REPRSNT_IMG, -- 화면 대표 이미지 경로
|
||||
SCR_RWD_IMG, -- 보상 이미지 경로
|
||||
BNF_WORDS_CN -- 혜택 안내 문구
|
||||
FROM
|
||||
GC_BENEFIT
|
||||
WHERE
|
||||
BNF_DV_CD = '140' -- 모바일스탬프 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
BNF_INNB DESC
|
||||
LIMIT 1
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 혜택 보상 영수증 저장 수정 -->
|
||||
<insert id="insertMileageReceipt" parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
useGeneratedKeys="true" keyProperty="bnfRcvInnb" keyColumn="BNF_RCV_INNB">
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유 번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
COUPON_INNB, -- 쿠폰 고유 번호
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfPrtInnb},
|
||||
#{bnfRwdCateDvCd},
|
||||
#{bnfRwdGodsDvCd},
|
||||
#{mlgRwdAmt},
|
||||
#{couponInnb},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- Step 2: PK 기준 교환권 완료 처리 -->
|
||||
<update id="completeExchangeTicketByPk"
|
||||
parameterType="Long">
|
||||
-- PK 기준 교환권 완료 처리
|
||||
UPDATE
|
||||
GC_BENEFIT_STMP_EXTIKET
|
||||
SET
|
||||
EXCHNG_AT = 'Y',
|
||||
EXCHNG_DT = NOW(),
|
||||
UPDT_DT = NOW()
|
||||
WHERE
|
||||
BNF_EXTIKET_INNB = #{bnfExtiketInnb}
|
||||
</update>
|
||||
|
||||
<!-- 스탬프 적립 기준 금액 조회 (gc_benefit_chg_config에서) -->
|
||||
<select id="selectStampAccumulationAmount"
|
||||
parameterType="String"
|
||||
resultType="java.lang.Double">
|
||||
-- 스탬프 적립 기준 금액 조회 (gc_benefit_chg_config 테이블에서)
|
||||
SELECT
|
||||
AMT_FOR_CHG AS AMT_FOR_CHG
|
||||
FROM
|
||||
GC_BENEFIT_CHG_CONFIG
|
||||
WHERE
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
AND BNF_DV_CD = '140' -- 모바일스탬프 구분 코드
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 아직 스탬프 적립되지 않은 구매건만 조회 -->
|
||||
<select id="selectUnprocessedStoreOrders"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
-- 아직 스탬프 적립되지 않은 매장 구매건만 조회
|
||||
SELECT
|
||||
O.ORDR_INNB AS ordrInnb, -- 주문 고유번호
|
||||
O.STR_INNB AS strInnb, -- 매장 고유번호
|
||||
O.RL_SETLE_AMT AS rlSetleAmt, -- 실 결제금액
|
||||
CASE
|
||||
WHEN ST.STR_NM IS NOT NULL THEN ST.STR_NM
|
||||
WHEN ST.TENTCPN_NM IS NOT NULL THEN ST.TENTCPN_NM
|
||||
ELSE CONCAT('매장_', O.STR_INNB)
|
||||
END AS strNm, -- 매장명
|
||||
DATE_FORMAT(O.SETLE_COMPT_DT, '%Y-%m-%d %H:%i:%s') AS setleComptDt, -- 결제완료일시
|
||||
O.SLE_ENVRN_CD AS sleEnvrnCd, -- 판매환경코드
|
||||
O.SKN_ENVRN_CD AS sknEnvrnCd -- 스킨환경코드
|
||||
FROM
|
||||
GC_ORDER O
|
||||
LEFT JOIN
|
||||
GC_STORE ST ON O.STR_INNB = ST.STR_INNB
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_STMP BS ON O.ORDR_INNB = BS.PURCHS_INNB
|
||||
AND O.MBR_INNB = BS.MBR_INNB
|
||||
AND O.MBR_DV_CD = BS.MBR_DV_CD
|
||||
AND O.SOPMAL_CD = BS.SOPMAL_CD
|
||||
WHERE
|
||||
O.MBR_INNB = #{mbrInnb}
|
||||
AND O.MBR_DV_CD = #{mbrDvCd}
|
||||
AND O.SOPMAL_CD = #{sopmalCd}
|
||||
AND O.USE_AT = 'Y'
|
||||
AND O.ORDR_STTUS_CD IN ('25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80') -- 결제완료 이후 상태만
|
||||
AND (
|
||||
-- gc_order 참고사항: 매장 구매금액 조건
|
||||
O.SLE_ENVRN_CD IN ('S1', 'S2', 'S3')
|
||||
OR O.SKN_ENVRN_CD = 'POS'
|
||||
)
|
||||
<if test="strInnb != null and strInnb != '' and strInnb != 'null'">
|
||||
AND O.STR_INNB = #{strInnb}
|
||||
</if>
|
||||
AND O.SETLE_COMPT_DT IS NOT NULL
|
||||
AND O.SETLE_COMPT_DT >= DATE_SUB(NOW(), INTERVAL 12 MONTH) -- 최근 12개월 데이터만
|
||||
AND BS.BNF_STMP_INNB IS NULL -- 아직 스탬프 적립 기록이 없는 주문만
|
||||
ORDER BY
|
||||
O.SETLE_COMPT_DT DESC
|
||||
</select>
|
||||
|
||||
<!-- 첫 스탬프 적립일 조회 -->
|
||||
<select id="selectFirstStampAccumulationDate"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="java.sql.Date">
|
||||
-- 해당 매장의 첫 스탬프 적립일 조회
|
||||
SELECT
|
||||
MIN(DATE(REGIST_DT)) AS FIRST_STAMP_DATE
|
||||
FROM
|
||||
GC_BENEFIT_STMP
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND STR_INNB = #{strInnb}
|
||||
</select>
|
||||
|
||||
<!-- 특정 주문으로 적립된 스탬프 기록 조회 -->
|
||||
<select id="selectStampsByPurchaseOrder"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
BNF_STMP_INNB,
|
||||
STMP_CNT,
|
||||
REFUND_AT, -- EXCHNG_AT 대신 REFUND_AT 사용
|
||||
ORDR_INNB
|
||||
FROM
|
||||
GC_BENEFIT_STMP
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND ORDR_INNB = #{ordrInnb}
|
||||
AND STR_INNB = #{strInnb}
|
||||
AND REFUND_AT = 'N' -- 환불되지 않은 기록만 조회
|
||||
</select>
|
||||
|
||||
<!-- 스탬프 기록 삭제 → 환불 처리로 변경 -->
|
||||
<update id="updateStampRefundStatus" parameterType="Long">
|
||||
-- 스탬프 환불 처리 (삭제 대신 상태 변경)
|
||||
UPDATE GC_BENEFIT_STMP
|
||||
SET
|
||||
REFUND_AT = 'Y',
|
||||
REGIST_DT = NOW()
|
||||
WHERE
|
||||
BNF_STMP_INNB = #{bnfStmpInnb}
|
||||
AND REFUND_AT = 'N'
|
||||
</update>
|
||||
|
||||
<!-- 환불 처리 시 스탬프 차감용 UPDATE 쿼리 추가 -->
|
||||
<update id="updateRefundStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO">
|
||||
-- 환불 처리 시 스탬프 차감
|
||||
UPDATE GC_BENEFIT_STMP
|
||||
SET
|
||||
REFUND_AT = 'Y',
|
||||
UPDT_DT = NOW()
|
||||
WHERE
|
||||
ORDR_INNB = #{ordrInnb}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND REFUND_AT = 'N'
|
||||
</update>
|
||||
|
||||
<!-- 특정 주문의 스탬프 정보 조회 -->
|
||||
<select id="selectStampByOrder"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
-- 주문번호로 스탬프 정보 조회
|
||||
SELECT
|
||||
BS.BNF_STMP_INNB AS BNF_STMP_INNB,
|
||||
BS.ORDR_INNB AS ORDR_INNB,
|
||||
BS.REFUND_AT AS REFUND_AT,
|
||||
BS.PURCHS_AMT AS PURCHS_AMT,
|
||||
BS.RL_SETLE_AMT AS RL_SETLE_AMT,
|
||||
BS.STMP_CNT AS STMP_CNT,
|
||||
BS.AMT_FOR_CHG AS AMT_FOR_CHG,
|
||||
DATE_FORMAT(BS.SETLE_COMPT_DT, '%Y-%m-%d %H:%i:%s') AS SETLE_COMPT_DT,
|
||||
DATE_FORMAT(BS.REGIST_DT, '%Y-%m-%d %H:%i:%s') AS REGIST_DT
|
||||
FROM
|
||||
GC_BENEFIT_STMP BS
|
||||
WHERE
|
||||
BS.ORDR_INNB = #{ordrInnb}
|
||||
AND BS.MBR_INNB = #{mbrInnb}
|
||||
AND BS.MBR_DV_CD = #{mbrDvCd}
|
||||
AND BS.SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!-- 주문 처리 여부 확인 쿼리 추가 -->
|
||||
<select id="countProcessedOrder"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="int">
|
||||
SELECT COUNT(*)
|
||||
FROM GC_BENEFIT_STMP
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND ORDR_INNB = #{purchsInnb}
|
||||
</select>
|
||||
|
||||
<!-- 환불로 인해 영향받은 교환권 삭제 -->
|
||||
<delete id="deleteAffectedExchangeTickets"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO">
|
||||
<![CDATA[
|
||||
-- 환불된 스탬프로 인해 유효하지 않은 교환권 삭제
|
||||
DELETE FROM GC_BENEFIT_STMP_EXTIKET
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND STR_INNB = #{strInnb}
|
||||
AND EXCHNG_AT = 'N' -- 미교환 교환권만
|
||||
AND EXTIKET_STMP_CNT > (
|
||||
-- 현재 유효한 스탬프 수보다 교환권 스탬프가 많으면 삭제
|
||||
SELECT IFNULL(SUM(STMP_CNT), 0)
|
||||
FROM GC_BENEFIT_STMP
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND STR_INNB = #{strInnb}
|
||||
AND REFUND_AT = 'N'
|
||||
)
|
||||
]]>
|
||||
</delete>
|
||||
|
||||
<!-- 교환안된 교환권 조회 (오래된 순) -->
|
||||
<select id="selectUnexchangedTicketsForDeduction"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO"
|
||||
resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
BNF_EXTIKET_INNB,
|
||||
EXTIKET_STMP_CNT
|
||||
FROM
|
||||
GC_BENEFIT_STMP_EXTIKET
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND STR_INNB = #{strInnb}
|
||||
AND EXCHNG_AT = 'N' -- 교환안된 것만
|
||||
ORDER BY
|
||||
REGIST_DT ASC -- 오래된 것부터 처리
|
||||
</select>
|
||||
|
||||
<!-- 교환권 스탬프 수 감소 -->
|
||||
<update id="reduceExchangeTicketStamps"
|
||||
parameterType="com.wb.domainserver.domain.gcone.bnft.purstmp.vo.BOPurstmpStampVO">
|
||||
UPDATE GC_BENEFIT_STMP_EXTIKET
|
||||
SET
|
||||
EXTIKET_STMP_CNT = EXTIKET_STMP_CNT - #{deductStampCnt},
|
||||
UPDT_DT = NOW()
|
||||
WHERE
|
||||
BNF_EXTIKET_INNB = #{bnfExtiketInnb}
|
||||
AND EXTIKET_STMP_CNT >= #{deductStampCnt}
|
||||
</update>
|
||||
|
||||
<!-- 특정 교환권 삭제 -->
|
||||
<delete id="deleteSpecificExchangeTicket" parameterType="Long">
|
||||
DELETE FROM GC_BENEFIT_STMP_EXTIKET
|
||||
WHERE BNF_EXTIKET_INNB = #{bnfExtiketInnb}
|
||||
</delete>
|
||||
</mapper>
|
||||
@@ -0,0 +1,234 @@
|
||||
<?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.bnft.qrevnt.mapper.BOQREvntMapper">
|
||||
|
||||
<!-- QR이벤트 혜택 정보 조회 -->
|
||||
<select id="selectQREventBenefitInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.qrevnt.vo.BOQREvntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
b.BNF_INNB, -- 혜택 고유 번호
|
||||
b.BNF_SJ, -- 혜택 제목
|
||||
b.USE_AT, -- 사용여부
|
||||
b.BNF_BGN_DT, -- 진행기간 시작일시
|
||||
b.BNF_END_DT, -- 진행기간 종료일시
|
||||
b.SCR_REPRSNT_IMG, -- 화면 대표 이미지
|
||||
b.SCR_REPRSNT_IMG_NM, -- 화면 대표 이미지명
|
||||
b.SCR_REPRSNT_LINK_URL, -- 화면 대표 링크 URL
|
||||
b.SCR_RWD_IMG, -- 화면 보상 이미지
|
||||
b.SCR_RWD_IMG_NM, -- 화면 보상 이미지명
|
||||
b.SCR_RWD_LINK_URL, -- 화면 보상 링크 URL
|
||||
b.BNF_WORDS_CN, -- 혜택 안내
|
||||
gd.WORDS_CN_1, -- 안내문 1 (이벤트 설명)
|
||||
gd.WORDS_CN_2, -- 안내문 2 (쿠폰 사용법)
|
||||
gd.WORDS_CN_3 -- 안내문 3 (기타 안내)
|
||||
FROM
|
||||
GC_BENEFIT b
|
||||
LEFT JOIN GC_BENEFIT_GDCC gd ON b.BNF_DV_CD = gd.BNF_DV_CD
|
||||
AND b.SOPMAL_CD = gd.SOPMAL_CD
|
||||
WHERE
|
||||
b.BNF_DV_CD = '150' -- QR이벤트 혜택 구분 코드
|
||||
AND b.USE_AT = 'Y'
|
||||
AND DATE(NOW()) BETWEEN DATE(b.BNF_BGN_DT) AND DATE(b.BNF_END_DT)
|
||||
AND b.SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
b.BNF_INNB
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- QR이벤트 보상 정보 조회 -->
|
||||
<select id="selectQREventRewardInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.qrevnt.vo.BOQREvntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
br.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
br.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
br.MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
br.COUPON_INNB, -- 쿠폰 고유 번호
|
||||
COALESCE(cs.COUPON_SNDNG_NM, br.ITM_NM) AS ITM_NM, -- 쿠폰 이름
|
||||
br.PRZWIN_QY, -- 당첨수량
|
||||
br.PRZWIN_PRC, -- 당첨확률
|
||||
cs.DWLD_BGN_DT, -- 다운로드 시작일 (사용유효시작일 대체)
|
||||
cs.DWLD_END_DT, -- 다운로드 종료일 (사용유효종료일 대체)
|
||||
cs.COUPON_SNDNG_DC -- 쿠폰 설명 (사용조건내용 대체)
|
||||
FROM
|
||||
GC_BENEFIT_REWARD br
|
||||
LEFT JOIN GC_COUPON_SNDNG cs ON br.COUPON_INNB = cs.COUPON_SNDNG_INNB
|
||||
AND cs.SOPMAL_CD = #{sopmalCd}
|
||||
WHERE
|
||||
br.BNF_INNB = #{bnfInnb}
|
||||
ORDER BY
|
||||
br.PRZWIN_PRC DESC
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매장별 참여 여부 확인 -->
|
||||
<select id="selectStoreParticipationStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.qrevnt.vo.BOQREvntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*) AS participationCount -- 참여 횟수
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb} -- 회원 고유 번호
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb} -- 혜택 고유 번호
|
||||
AND STR_INNB = #{strInnb} -- 매장 고유 번호
|
||||
AND DATE(BNF_PRT_DT) BETWEEN DATE(#{bnfBgnDt}) AND DATE(#{bnfEndDt}) -- 이벤트 기간 내
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 전체 참여 여부 확인 (아이디당 1회) -->
|
||||
<select id="selectTotalParticipationStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.qrevnt.vo.BOQREvntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*) AS totalParticipationCount -- 전체 참여 횟수
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb} -- 회원 고유 번호
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_INNB = #{bnfInnb} -- 혜택 고유 번호
|
||||
AND DATE(BNF_PRT_DT) BETWEEN DATE(#{bnfBgnDt}) AND DATE(#{bnfEndDt}) -- 이벤트 기간 내
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매장 정보 조회 -->
|
||||
<select id="selectStoreInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.qrevnt.vo.BOQREvntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
STR_INNB, -- 매장 고유번호
|
||||
STR_NM, -- 매장명
|
||||
STR_CD, -- 매장 코드
|
||||
STR_ADRES, -- 매장 주소
|
||||
STR_RNM_ADRES, -- 매장 도로명 주소
|
||||
STR_TELNB, -- 매장 전화번호
|
||||
CTY_DO, -- 시도
|
||||
CTY_GUN_GU -- 시군구
|
||||
FROM
|
||||
GC_STORE
|
||||
WHERE
|
||||
STR_INNB = #{strInnb}
|
||||
AND TENT_STTUS = '02' -- 개점 상태
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- QR이벤트 참여 처리 -->
|
||||
<insert id="participateQREvent" parameterType="com.wb.domainserver.domain.gcone.bnft.qrevnt.vo.BOQREvntVO" useGeneratedKeys="true" keyProperty="bnfPrtInnb" keyColumn="BNF_PRT_INNB">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_INNB, -- 혜택 고유 번호
|
||||
BNF_PRT_DT, -- 혜택 참여 일시
|
||||
MBR_INNB, -- 회원 고유 번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
STR_INNB, -- 매장 고유 번호
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfInnb},
|
||||
NOW(),
|
||||
#{mbrInnb},
|
||||
#{mbrDvCd},
|
||||
#{strInnb},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- QR이벤트 당첨 결과 처리 (쿠폰 발급) -->
|
||||
<insert id="insertQREventReward" parameterType="com.wb.domainserver.domain.gcone.bnft.qrevnt.vo.BOQREvntVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유 번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유 번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
COUPON_INNB, -- 쿠폰 고유 번호
|
||||
GOODS_INNB, -- 상품 고유 번호
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfRcvInnb},
|
||||
#{bnfPrtInnb},
|
||||
#{bnfRwdCateDvCd},
|
||||
#{bnfRwdGodsDvCd},
|
||||
#{mlgRwdAmt},
|
||||
#{couponInnb},
|
||||
#{goodsInnb},
|
||||
#{regusr},
|
||||
NOW()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- QR이벤트 참여 내역 조회 -->
|
||||
<select id="selectQREventParticipationHistory" parameterType="com.wb.domainserver.domain.gcone.bnft.qrevnt.vo.BOQREvntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
p.BNF_PRT_INNB, -- 혜택 참여 고유 번호
|
||||
p.BNF_PRT_DT, -- 혜택 참여 일시
|
||||
p.STR_INNB, -- 매장 고유 번호
|
||||
s.STR_NM, -- 매장명
|
||||
s.STR_ADRES, -- 매장 주소
|
||||
r.BNF_RCV_INNB, -- 보상 수령 고유 번호 (당첨 여부 확인용)
|
||||
r.BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
r.BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
r.MLG_RWD_AMT, -- 마일리지 보상 금액
|
||||
r.COUPON_INNB, -- 쿠폰 고유 번호
|
||||
COALESCE(cs.COUPON_SNDNG_NM, br.ITM_NM) AS couponName, -- 쿠폰명
|
||||
cs.DWLD_BGN_DT, -- 다운로드 시작일 (사용유효시작일 대체)
|
||||
cs.DWLD_END_DT, -- 다운로드 종료일 (사용유효종료일 대체)
|
||||
cs.COUPON_SNDNG_DC -- 쿠폰 설명 (사용조건내용 대체)
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN p
|
||||
LEFT JOIN GC_STORE s ON p.STR_INNB = s.STR_INNB
|
||||
LEFT JOIN GC_BENEFIT_RECEIPT r ON p.BNF_PRT_INNB = r.BNF_PRT_INNB
|
||||
LEFT JOIN GC_BENEFIT_REWARD br ON p.BNF_INNB = br.BNF_INNB
|
||||
AND r.BNF_RWD_CATE_DV_CD = br.BNF_RWD_CATE_DV_CD
|
||||
AND r.BNF_RWD_GODS_DV_CD = br.BNF_RWD_GODS_DV_CD
|
||||
LEFT JOIN GC_COUPON_SNDNG cs ON r.COUPON_INNB = cs.COUPON_SNDNG_INNB
|
||||
AND cs.SOPMAL_CD = #{sopmalCd}
|
||||
WHERE
|
||||
p.MBR_INNB = #{mbrInnb} -- 회원 고유 번호
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
AND p.BNF_INNB = #{bnfInnb} -- 혜택 고유 번호
|
||||
ORDER BY
|
||||
p.BNF_PRT_DT DESC
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- QR이벤트 당첨 정보 상세 조회 -->
|
||||
<select id="selectQREventWinningDetail" parameterType="com.wb.domainserver.domain.gcone.bnft.qrevnt.vo.BOQREvntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
p.BNF_PRT_INNB, -- 혜택 참여 고유 번호
|
||||
p.BNF_PRT_DT, -- 혜택 참여 일시
|
||||
s.STR_NM, -- 참여 매장명
|
||||
s.STR_ADRES, -- 매장 주소
|
||||
r.BNF_RCV_INNB, -- 보상 수령 고유 번호
|
||||
r.COUPON_INNB AS couponNb, -- 쿠폰 번호 (발송 고유번호로 대체)
|
||||
cs.COUPON_SNDNG_NM AS couponName, -- 쿠폰명
|
||||
cs.COUPON_SNDNG_DC AS useCndtnCn, -- 쿠폰 설명 (사용조건으로 사용)
|
||||
br.DSCNT_AMT AS dscntAmt, -- 할인 금액
|
||||
br.DSCNT_RT AS dscntRt, -- 할인 율
|
||||
DATE_FORMAT(cs.DWLD_END_DT, '%Y-%m-%d') AS expiryDateTime -- 유효기간
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN p
|
||||
INNER JOIN GC_STORE s ON p.STR_INNB = s.STR_INNB
|
||||
INNER JOIN GC_BENEFIT_RECEIPT r ON p.BNF_PRT_INNB = r.BNF_PRT_INNB
|
||||
INNER JOIN GC_COUPON_SNDNG cs ON r.COUPON_INNB = cs.COUPON_SNDNG_INNB
|
||||
AND cs.SOPMAL_CD = #{sopmalCd}
|
||||
INNER JOIN GC_BENEFIT_REWARD br ON p.BNF_INNB = br.BNF_INNB
|
||||
AND r.BNF_RWD_CATE_DV_CD = br.BNF_RWD_CATE_DV_CD
|
||||
AND r.BNF_RWD_GODS_DV_CD = br.BNF_RWD_GODS_DV_CD
|
||||
WHERE
|
||||
p.BNF_PRT_INNB = #{bnfPrtInnb} -- 혜택 참여 고유 번호
|
||||
AND p.MBR_INNB = #{mbrInnb} -- 회원 고유 번호
|
||||
AND p.MBR_DV_CD = #{mbrDvCd}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,297 @@
|
||||
<?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.bnft.rougame.mapper.BORougameMapper">
|
||||
|
||||
<!-- 룰렛 혜택 기본 정보 조회 -->
|
||||
<select id="selectRougameBenefitInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
USE_AT, -- 사용여부
|
||||
BNF_BGN_DT, -- 진행기간 시작일시
|
||||
BNF_END_DT, -- 진행기간 종료일시
|
||||
SCR_REPRSNT_IMG, -- 화면 대표 이미지
|
||||
SCR_REPRSNT_LINK_URL, -- 화면 대표 링크 URL
|
||||
SCR_RWD_IMG, -- 화면 보상 이미지
|
||||
SCR_RWD_LINK_URL, -- 화면 보상 링크 URL
|
||||
BNF_WORDS_CN -- 혜택 안내
|
||||
FROM
|
||||
GC_BENEFIT
|
||||
WHERE
|
||||
BNF_DV_CD = '040' -- 룰렛 혜택 구분 코드
|
||||
AND USE_AT = 'Y'
|
||||
AND DATE(NOW()) BETWEEN DATE(BNF_BGN_DT) AND DATE(BNF_END_DT)
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 남은 게임 참여 기회 횟수 조회 수정 -->
|
||||
<select id="selectRemainingGameChances" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
#{mbrInnb} as MBR_INNB, -- 회원 고유번호
|
||||
'040' as BNF_DV_CD, -- 혜택 구분 코드
|
||||
(
|
||||
-- 할당된 총 기회 계산
|
||||
COALESCE(
|
||||
(SELECT SUM(CHG_CNT) FROM GC_BENEFIT_CHARGE
|
||||
WHERE MBR_INNB = #{mbrInnb} AND BNF_DV_CD = '040' AND SOPMAL_CD = #{sopmalCd} AND MBR_DV_CD = #{mbrDvCd})
|
||||
, 0)
|
||||
-
|
||||
-- 사용한 기회 계산
|
||||
COALESCE(
|
||||
(SELECT COUNT(*) FROM GC_BENEFIT_PARTCPTN BP
|
||||
INNER JOIN GC_BENEFIT B ON BP.BNF_INNB = B.BNF_INNB
|
||||
WHERE BP.MBR_INNB = #{mbrInnb}
|
||||
AND B.BNF_DV_CD = '040' AND B.SOPMAL_CD = #{sopmalCd} AND BP.MBR_DV_CD = #{mbrDvCd})
|
||||
, 0)
|
||||
) as remainingGameChances, -- 남아있는 게임 횟수
|
||||
-- 실제 GC_BENEFIT_CHARGE 테이블에 레코드가 있는지 확인
|
||||
(
|
||||
SELECT COUNT(*) FROM GC_BENEFIT_CHARGE
|
||||
WHERE MBR_INNB = #{mbrInnb} AND BNF_DV_CD = '040' AND SOPMAL_CD = #{sopmalCd} AND MBR_DV_CD = #{mbrDvCd}
|
||||
) as hasChargeRecord
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 룰렛 보상 정보 조회 -->
|
||||
<select id="selectRougameRewards" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
COUPON_INNB, -- 쿠폰 고유번호
|
||||
ITM_NM, -- 표시명
|
||||
PRZWIN_QY, -- 당첨수량
|
||||
PRZWIN_PRC, -- 당첨확률
|
||||
DSCNT_AMT, -- 할인금액
|
||||
DSCNT_RT -- 할인비율
|
||||
FROM
|
||||
GC_BENEFIT_REWARD
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb} -- 혜택 설정 고유번호 조건
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 초록잎 지급량 조회 -->
|
||||
<select id="selectLeafCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.atend.vo.BOAtendVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PYMNT_CNT, -- 지급 초록잎 개수
|
||||
SPECIAL_CNT -- 스페셜 지급 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN
|
||||
WHERE
|
||||
BNF_DV_CD = '040' -- 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!-- 룰렛 참여 정보 저장 (초록잎 적립 포함) -->
|
||||
<insert id="insertRougameParticipation" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO">
|
||||
<selectKey keyProperty="bnfPrtInnb" resultType="java.lang.Long" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_PRT_INNB), 0) + 1 FROM GC_BENEFIT_PARTCPTN
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_INNB, -- 혜택 설정 고유번호
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
BNF_PRT_DT, -- 혜택 참여 일시
|
||||
PRT_LEAF_CNT, -- 참여 초록잎 개수 (추가)
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfPrtInnb}, -- 혜택 참여 고유번호
|
||||
#{bnfInnb}, -- 혜택 설정 고유번호
|
||||
#{mbrInnb}, -- 회원 고유번호
|
||||
#{mbrDvCd}, -- 회원 구분 코드
|
||||
NOW(), -- 혜택 참여 일시 (현재 시간)
|
||||
#{paidLeafCnt}, -- 초록잎 지급량 (추가)
|
||||
#{regusr}, -- 등록자
|
||||
NOW() -- 등록 일시 (현재 시간)
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 마지막으로 삽입된 참여 고유번호 조회 -->
|
||||
<select id="selectLastInsertedParticipationId" resultType="long">
|
||||
<![CDATA[
|
||||
SELECT LAST_INSERT_ID()
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 혜택 보상 수령 정보 저장 -->
|
||||
<insert id="insertRougameReceipt" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유번호
|
||||
BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BNF_RWD_CATE_DV_CD, -- 보상 항목 구분 코드
|
||||
BNF_RWD_GODS_DV_CD, -- 보상 상품 구분 코드
|
||||
MLG_RWD_AMT, -- 마일리지 금액
|
||||
COUPON_INNB, -- 쿠폰고유번호
|
||||
GOODS_INNB, -- 상품고유번호
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
#{bnfRcvInnb}, -- 혜택 보상수령 고유번호
|
||||
#{bnfPrtInnb}, -- 혜택 참여 고유번호
|
||||
#{bnfRwdCateDvCd}, -- 보상 항목 구분 코드
|
||||
#{bnfRwdGodsDvCd}, -- 보상 상품 구분 코드
|
||||
#{mlgRwdAmt}, -- 마일리지 금액
|
||||
#{couponInnb}, -- 쿠폰고유번호
|
||||
#{goodsInnb}, -- 상품고유번호
|
||||
#{regusr}, -- 등록자
|
||||
NOW() -- 등록 일시 (현재 시간)
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 보상 당첨 수량 차감 -->
|
||||
<update id="decrementRewardQuantity" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_BENEFIT_REWARD
|
||||
SET PRZWIN_QY = CASE
|
||||
WHEN PRZWIN_QY > 0 THEN PRZWIN_QY - 1
|
||||
ELSE 0
|
||||
END
|
||||
WHERE BNF_INNB = #{bnfInnb}
|
||||
AND BNF_RWD_CATE_DV_CD = #{bnfRwdCateDvCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 혜택 충전 설정 정보 조회 -->
|
||||
<select id="selectBenefitChgConfig" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
AMT_FOR_CHG -- 기회 제공 기준 금액
|
||||
FROM
|
||||
GC_BENEFIT_CHG_CONFIG
|
||||
WHERE
|
||||
BNF_DV_CD = '040' -- 룰렛 혜택 구분 코드
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 추가
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 게임 기회 신규 등록 -->
|
||||
<insert id="insertGameChances" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_BENEFIT_CHARGE (
|
||||
BNF_PURCHS_RCV_LOG_INNB, -- 혜택 구매확정 수신 로그 고유번호
|
||||
SOPMAL_CD, -- 쇼핑몰 코드
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드 추가
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
CHG_CNT, -- 충전 횟수
|
||||
REGIST_DT -- 등록 일시
|
||||
) VALUES (
|
||||
0, -- 혜택 구매확정 수신 로그 고유번호
|
||||
#{sopmalCd}, -- 쇼핑몰 코드
|
||||
#{mbrInnb}, -- 회원 고유번호
|
||||
#{mbrDvCd}, -- 회원 구분 코드
|
||||
'040', -- 혜택 구분 코드 (룰렛)
|
||||
#{remainingGameChances}, -- 계산된 게임 기회
|
||||
NOW() -- 등록 일시 (현재 시간)
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 게임 기회 업데이트 -->
|
||||
<update id="updateGameChances" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_BENEFIT_CHARGE
|
||||
SET CHG_CNT = #{remainingGameChances},
|
||||
REGIST_DT = NOW()
|
||||
WHERE
|
||||
SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드 조건 추가
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드 추가
|
||||
AND BNF_DV_CD = '040'
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 전체 보상 수량 상태 조회 -->
|
||||
<select id="selectAllRewardsQuantityStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*) as totalRewards, -- 전체 보상 종류 수
|
||||
COUNT(CASE WHEN PRZWIN_QY > 0 THEN 1 END) as availableRewards, -- 수량이 있는 보상 수
|
||||
SUM(PRZWIN_QY) as totalQuantity -- 전체 남은 수량 합계
|
||||
FROM
|
||||
GC_BENEFIT_REWARD
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 실제 남은 수량을 계산하는 보상 조회 -->
|
||||
<select id="selectAvailableRewards" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
r.BNF_INNB,
|
||||
r.BNF_RWD_CATE_DV_CD,
|
||||
r.BNF_RWD_GODS_DV_CD,
|
||||
r.MLG_RWD_AMT,
|
||||
r.COUPON_INNB,
|
||||
r.ITM_NM,
|
||||
r.PRZWIN_QY, -- 설정된 당첨 수량
|
||||
r.PRZWIN_PRC,
|
||||
r.DSCNT_AMT,
|
||||
r.DSCNT_RT,
|
||||
-- 실제 당첨된 수량 계산
|
||||
COALESCE(
|
||||
(SELECT COUNT(*)
|
||||
FROM GC_BENEFIT_RECEIPT rcpt
|
||||
INNER JOIN GC_BENEFIT_PARTCPTN part ON rcpt.BNF_PRT_INNB = part.BNF_PRT_INNB
|
||||
WHERE part.BNF_INNB = r.BNF_INNB
|
||||
AND rcpt.BNF_RWD_CATE_DV_CD = r.BNF_RWD_CATE_DV_CD), 0
|
||||
) as ISSUED_QY, -- 실제 당첨된 수량
|
||||
-- 남은 수량 계산
|
||||
(r.PRZWIN_QY - COALESCE(
|
||||
(SELECT COUNT(*)
|
||||
FROM GC_BENEFIT_RECEIPT rcpt
|
||||
INNER JOIN GC_BENEFIT_PARTCPTN part ON rcpt.BNF_PRT_INNB = part.BNF_PRT_INNB
|
||||
WHERE part.BNF_INNB = r.BNF_INNB
|
||||
AND rcpt.BNF_RWD_CATE_DV_CD = r.BNF_RWD_CATE_DV_CD), 0
|
||||
)) as REMAINING_QY -- 남은 수량
|
||||
FROM
|
||||
GC_BENEFIT_REWARD r
|
||||
WHERE
|
||||
r.BNF_INNB = #{bnfInnb}
|
||||
-- 남은 수량이 0보다 큰 보상만 조회
|
||||
AND (r.PRZWIN_QY - COALESCE(
|
||||
(SELECT COUNT(*)
|
||||
FROM GC_BENEFIT_RECEIPT rcpt
|
||||
INNER JOIN GC_BENEFIT_PARTCPTN part ON rcpt.BNF_PRT_INNB = part.BNF_PRT_INNB
|
||||
WHERE part.BNF_INNB = r.BNF_INNB
|
||||
AND rcpt.BNF_RWD_CATE_DV_CD = r.BNF_RWD_CATE_DV_CD), 0
|
||||
)) > 0
|
||||
ORDER BY r.PRZWIN_PRC DESC
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 회원 디바이스 등록일 조회 -->
|
||||
<select id="selectMemberDeviceRegistDate" parameterType="com.wb.domainserver.domain.gcone.bnft.rougame.vo.BORougameVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
DATE_FORMAT(MDI.REGIST_DT, '%Y-%m-%d') as DEVICE_REGIST_DT
|
||||
FROM
|
||||
GC_MEMBER_DEVICE_INFO MDI
|
||||
INNER JOIN
|
||||
GC_MEMBER M ON MDI.MBR_INNB = M.MBR_INNB
|
||||
AND MDI.MBR_DV_CD = M.MBR_DV_CD
|
||||
WHERE
|
||||
MDI.SOPMAL_CD = #{sopmalCd}
|
||||
AND MDI.MBR_INNB = #{mbrInnb}
|
||||
AND MDI.MBR_DV_CD = #{mbrDvCd}
|
||||
ORDER BY MDI.REGIST_DT ASC
|
||||
LIMIT 1
|
||||
]]>
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,431 @@
|
||||
<?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.bnft.stepcnt.mapper.BOStepcntMapper">
|
||||
|
||||
<!-- 현재 회원의 최신 걸음 수 조회 -->
|
||||
<select id="selectCurrentStepCount" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
BP.BNF_PRT_INNB as BNF_PRT_INNB, -- 혜택 참여 고유번호
|
||||
BP.STEP_CNT as STEP_CNT, -- 현재 걸음 수
|
||||
BP.BNF_PRT_DT as participationDate, -- 참여 일시
|
||||
BP.MBR_INNB as memberNo -- 회원 고유번호
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN BP
|
||||
INNER JOIN
|
||||
GC_BENEFIT B ON BP.BNF_INNB = B.BNF_INNB
|
||||
WHERE
|
||||
BP.MBR_INNB = #{mbrInnb} -- 회원 고유번호 조건
|
||||
AND BP.MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드
|
||||
AND B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND DATE(BP.BNF_PRT_DT) = CURDATE() -- 오늘 날짜 기준
|
||||
ORDER BY
|
||||
BP.BNF_PRT_DT DESC -- 최신 정보 우선
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 이번 달 만보 달성 현황 조회 -->
|
||||
<select id="selectMonthlyStepCountAchievement" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
DATE(BP.BNF_PRT_DT) as achievementDate, -- 달성 일자
|
||||
MAX(BP.STEP_CNT) as stepCount, -- 일별 최대 걸음 수
|
||||
CASE WHEN MAX(BP.STEP_CNT) >= 10000 THEN 'Y' ELSE 'N' END as isAchieved -- 만보 달성 여부
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN BP
|
||||
INNER JOIN
|
||||
GC_BENEFIT B ON BP.BNF_INNB = B.BNF_INNB
|
||||
WHERE
|
||||
BP.MBR_INNB = #{mbrInnb} -- 회원 고유번호 조건
|
||||
AND BP.MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드
|
||||
AND B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND DATE_FORMAT(BP.BNF_PRT_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m') -- 이번 달 필터링
|
||||
GROUP BY
|
||||
DATE(BP.BNF_PRT_DT) -- 일자별 그룹화
|
||||
ORDER BY
|
||||
DATE(BP.BNF_PRT_DT) -- 날짜순 정렬
|
||||
</select>
|
||||
|
||||
<!-- 이번 달 만보 달성 횟수 조회 -->
|
||||
<select id="selectMonthlyStepCountAchievementCount" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="int">
|
||||
SELECT
|
||||
COUNT(DISTINCT DATE(BP.BNF_PRT_DT)) as achievementCount -- 만보 달성한 날짜 수
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN BP
|
||||
INNER JOIN
|
||||
GC_BENEFIT B ON BP.BNF_INNB = B.BNF_INNB
|
||||
WHERE
|
||||
BP.MBR_INNB = #{mbrInnb} -- 회원 고유번호 조건
|
||||
AND BP.MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드
|
||||
AND B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND DATE_FORMAT(BP.BNF_PRT_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m') -- 이번 달 필터링
|
||||
AND BP.STEP_CNT >= 10000 -- 만보 이상 조건
|
||||
</select>
|
||||
|
||||
<!-- 선택한 달의 일별 걸음 수 내역 조회 -->
|
||||
<select id="selectDailyStepCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
DATE(BP.BNF_PRT_DT) as recordDate, -- 기록 일자
|
||||
MAX(BP.STEP_CNT) as stepCount, -- 일별 최대 걸음 수
|
||||
CASE
|
||||
WHEN MAX(BP.STEP_CNT) >= 10000 THEN 100
|
||||
ELSE FLOOR(MAX(BP.STEP_CNT) * 100 / 10000)
|
||||
END as achievementRate, -- 달성률(%) 계산
|
||||
CASE
|
||||
WHEN MAX(BP.STEP_CNT) >= 10000 THEN 4 -- 만보 달성
|
||||
WHEN MAX(BP.STEP_CNT) >= 7500 THEN 3 -- 7500 이상
|
||||
WHEN MAX(BP.STEP_CNT) >= 5000 THEN 2 -- 5000 이상
|
||||
WHEN MAX(BP.STEP_CNT) >= 2500 THEN 1 -- 2500 이상
|
||||
ELSE 0 -- 2500 미만
|
||||
END as achievementLevel -- 달성 레벨(0~4)
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN BP
|
||||
INNER JOIN
|
||||
GC_BENEFIT B ON BP.BNF_INNB = B.BNF_INNB
|
||||
WHERE
|
||||
BP.MBR_INNB = #{mbrInnb} -- 회원 고유번호 조건
|
||||
AND BP.MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드
|
||||
AND B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND DATE_FORMAT(BP.BNF_PRT_DT, '%Y-%m') = #{yearMonth} -- 선택한 년월 기준
|
||||
GROUP BY
|
||||
DATE(BP.BNF_PRT_DT) -- 일자별 그룹화
|
||||
ORDER BY
|
||||
DATE(BP.BNF_PRT_DT) -- 날짜순 정렬
|
||||
</select>
|
||||
|
||||
<!-- 이번 달 만보기 사용 통계 조회 -->
|
||||
<select id="selectMonthlyStepCountStats" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
ROUND((SELECT AVG(STEP_CNT)
|
||||
FROM GC_BENEFIT_PARTCPTN
|
||||
WHERE MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE_FORMAT(BNF_PRT_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')
|
||||
), 0) as avgStepCount, -- 하루 평균 걸음 수 (조인 영향 없이 계산)
|
||||
rewardStats.surpriseGiftCount, -- 깜짝선물 획득 수
|
||||
rewardStats.totalMileage -- 획득한 마일리지 합계
|
||||
FROM (
|
||||
SELECT
|
||||
COUNT(CASE WHEN BR.BNF_RWD_CATE_DV_CD IN ('02030','02031','02032','02033','02034','02035','02036') THEN 1 END) as surpriseGiftCount,
|
||||
SUM(CASE WHEN BR.BNF_RWD_GODS_DV_CD = '010' THEN BR.MLG_RWD_AMT ELSE 0 END) as totalMileage
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN BP
|
||||
LEFT JOIN
|
||||
GC_BENEFIT_RECEIPT BR ON BR.BNF_PRT_INNB = BP.BNF_PRT_INNB
|
||||
LEFT JOIN
|
||||
GC_BENEFIT B ON BP.BNF_INNB = B.BNF_INNB AND B.BNF_DV_CD = '020'
|
||||
WHERE
|
||||
BP.MBR_INNB = #{mbrInnb}
|
||||
AND BP.MBR_DV_CD = #{mbrDvCd}
|
||||
AND DATE_FORMAT(BP.BNF_PRT_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')
|
||||
) rewardStats
|
||||
</select>
|
||||
|
||||
<!-- 보상 정보 조회 -->
|
||||
<select id="selectStepCountReward" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
B.BNF_INNB as bnfInnb, -- 혜택 고유번호
|
||||
BR.BNF_RWD_CATE_DV_CD as rewardCategoryCode, -- 보상 항목 구분 코드
|
||||
BR.BNF_RWD_GODS_DV_CD as rewardGoodsCode, -- 보상 상품 구분 코드
|
||||
BR.MLG_RWD_AMT as mileageAmount, -- 마일리지 보상 금액
|
||||
BR.COUPON_INNB as couponNo, -- 쿠폰 고유번호
|
||||
BR.RWD_CND_CNT as rewardConditionCount -- 보상 조건 걸음 수
|
||||
FROM
|
||||
GC_BENEFIT B
|
||||
INNER JOIN
|
||||
GC_BENEFIT_REWARD BR ON B.BNF_INNB = BR.BNF_INNB
|
||||
WHERE
|
||||
B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND B.USE_AT = 'Y' -- 사용 여부 체크
|
||||
AND B.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND (B.BNF_BGN_DT IS NULL OR B.BNF_BGN_DT <= NOW()) -- 시작일 체크
|
||||
AND (B.BNF_END_DT IS NULL OR B.BNF_END_DT >= NOW()) -- 종료일 체크
|
||||
AND BR.BNF_RWD_CATE_DV_CD = #{bnfRwdCateDvCd} -- 요청한 보상 카테고리
|
||||
</select>
|
||||
|
||||
<!-- 깜짝 선물 위치 정보 조회 (요일에 따라 변경) -->
|
||||
<select id="selectSurpriseGiftPosition" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
B.BNF_INNB as bnfInnb, -- 혜택 고유번호
|
||||
BR.BNF_RWD_CATE_DV_CD as rewardCategoryCode, -- 보상 항목 구분 코드
|
||||
BR.RWD_CND_CNT as surprisePosition -- 깜짝 선물 위치 (테이블에 정의된 값)
|
||||
FROM
|
||||
GC_BENEFIT B
|
||||
INNER JOIN
|
||||
GC_BENEFIT_REWARD BR ON B.BNF_INNB = BR.BNF_INNB
|
||||
WHERE
|
||||
B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND B.USE_AT = 'Y' -- 사용 여부 체크
|
||||
AND B.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND (B.BNF_BGN_DT IS NULL OR B.BNF_BGN_DT <= NOW()) -- 시작일 체크
|
||||
AND (B.BNF_END_DT IS NULL OR B.BNF_END_DT >= NOW()) -- 종료일 체크
|
||||
AND BR.BNF_RWD_CATE_DV_CD = CONCAT('0203', WEEKDAY(NOW())) -- 요일에 맞는 깜짝선물 코드
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 초록잎 지급 개수 조회 -->
|
||||
<select id="selectLeafCounts" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
PYMNT_CNT, -- 지급 초록잎 개수
|
||||
SPECIAL_CNT -- 스페셜 지급 초록잎 개수
|
||||
FROM
|
||||
GC_BENEFIT_CPSLMKN
|
||||
WHERE
|
||||
BNF_DV_CD = '020' -- 만보기 혜택 구분 코드로 수정
|
||||
AND SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
</select>
|
||||
|
||||
<!-- 걸음수 정보 저장/업데이트 -->
|
||||
<insert id="insertOrUpdateStepCount" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO">
|
||||
INSERT INTO GC_BENEFIT_PARTCPTN (
|
||||
BNF_INNB,
|
||||
BNF_PRT_DT,
|
||||
MBR_INNB,
|
||||
MBR_DV_CD,
|
||||
STEP_CNT,
|
||||
REGIST_DT,
|
||||
PRT_LEAF_CNT,
|
||||
REGUSR
|
||||
) VALUES (
|
||||
#{bnfInnb}, -- 혜택 고유번호
|
||||
NOW(), -- 현재 시간
|
||||
#{mbrInnb}, -- 회원 고유번호
|
||||
#{mbrDvCd}, -- 회원 구분 코드
|
||||
#{stepCnt}, -- 걸음 수
|
||||
NOW(), -- 등록 시간
|
||||
#{paidLeafCnt}, -- 적립된 초록잎 개수
|
||||
#{regusr} -- 등록자
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
STEP_CNT = #{stepCnt}, -- 걸음 수 업데이트
|
||||
UPDT_DT = NOW(), -- 수정 시간
|
||||
UPDUSR = #{updusr}, -- 수정자
|
||||
PRT_LEAF_CNT = CASE
|
||||
WHEN #{stepCnt} >= 10000 AND STEP_CNT < 10000 THEN #{paidLeafCnt}
|
||||
WHEN #{stepCnt} >= 10000 THEN PRT_LEAF_CNT
|
||||
ELSE PRT_LEAF_CNT
|
||||
END -- 만보 최초 달성 시에만 초록잎 추가
|
||||
</insert>
|
||||
|
||||
<!-- 보상 수령 내역 저장 -->
|
||||
<insert id="insertStepCountReward" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO">
|
||||
<selectKey keyProperty="bnfRcvInnb" resultType="java.math.BigInteger" order="BEFORE">
|
||||
SELECT IFNULL(MAX(BNF_RCV_INNB), 0) + 1 FROM GC_BENEFIT_RECEIPT
|
||||
</selectKey>
|
||||
INSERT INTO GC_BENEFIT_RECEIPT (
|
||||
BNF_RCV_INNB, -- 혜택 보상수령 고유 번호
|
||||
BNF_PRT_INNB,
|
||||
BNF_RWD_CATE_DV_CD,
|
||||
BNF_RWD_GODS_DV_CD,
|
||||
MLG_RWD_AMT,
|
||||
COUPON_INNB,
|
||||
REGUSR,
|
||||
REGIST_DT
|
||||
) VALUES (
|
||||
#{bnfRcvInnb}, -- 생성된 고유 번호
|
||||
#{bnfPrtInnb}, -- 혜택 참여 고유번호
|
||||
#{bnfRwdCateDvCd}, -- 보상 항목 구분 코드
|
||||
#{bnfRwdGodsDvCd}, -- 보상 상품 구분 코드
|
||||
#{mlgRwdAmt}, -- 마일리지 금액
|
||||
#{couponInnb}, -- 쿠폰 고유번호
|
||||
#{regusr}, -- 등록자(회원)
|
||||
NOW() -- 등록 시간
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 10회 달성 시 추가 보상 대상 상품 정보 조회 -->
|
||||
<select id="selectMonthlyAchievementReward" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
B.BNF_INNB as bnfInnb, -- 혜택 고유번호
|
||||
B.BNF_SJ as bnfTitle, -- 혜택 제목
|
||||
B.SCR_RWD_IMG as rewardImageUrl, -- 보상 이미지 URL
|
||||
B.SCR_RWD_LINK_URL as rewardLinkUrl, -- 보상 링크 URL
|
||||
BR.MLG_RWD_AMT as mileageAmount, -- 마일리지 보상 금액
|
||||
BR.ITM_NM as itemName -- 표시명
|
||||
FROM
|
||||
GC_BENEFIT B
|
||||
INNER JOIN
|
||||
GC_BENEFIT_REWARD BR ON B.BNF_INNB = BR.BNF_INNB
|
||||
WHERE
|
||||
B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND B.USE_AT = 'Y' -- 사용 여부 체크
|
||||
AND B.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND (B.BNF_BGN_DT IS NULL OR B.BNF_BGN_DT <= NOW()) -- 시작일 체크
|
||||
AND (B.BNF_END_DT IS NULL OR B.BNF_END_DT >= NOW()) -- 종료일 체크
|
||||
AND BR.BNF_RWD_CATE_DV_CD = '02020' -- 만보기 월누적10회 코드
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 만보기 동의 상태 조회 -->
|
||||
<select id="selectStepcntAgreement" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
AGRE_AT
|
||||
FROM
|
||||
GC_BENEFIT_AGREE
|
||||
WHERE
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
AND MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND BNF_DV_CD = '020'
|
||||
AND BNF_AGRE_DV_CD = '020'
|
||||
</select>
|
||||
|
||||
<!-- 만보기 동의 정보 저장/업데이트 -->
|
||||
<insert id="insertStepcntAgreement" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO">
|
||||
INSERT INTO GC_BENEFIT_AGREE (
|
||||
SOPMAL_CD, -- 쇼핑몰 코드
|
||||
MBR_INNB, -- 회원 고유번호
|
||||
MBR_DV_CD, -- 회원 구분 코드
|
||||
BNF_DV_CD, -- 혜택 구분 코드
|
||||
BNF_AGRE_DV_CD, -- 혜택 동의 구분 코드
|
||||
BNF_INNB, -- 혜택 고유번호
|
||||
AGRE_AT, -- 동의 여부
|
||||
REGUSR, -- 등록자
|
||||
REGIST_DT -- 등록 시간
|
||||
) VALUES (
|
||||
#{sopmalCd}, -- 쇼핑몰 코드
|
||||
#{mbrInnb}, -- 회원 고유번호
|
||||
#{mbrDvCd}, -- 회원 구분 코드
|
||||
'020', -- 혜택 구분 코드(만보기)
|
||||
'020', -- 혜택 동의 구분 코드(만보기)
|
||||
#{bnfInnb}, -- 혜택 고유번호
|
||||
#{agreeYn}, -- 동의 여부
|
||||
#{regusr}, -- 등록자(회원)
|
||||
NOW() -- 등록 시간
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 만보기 동의 정보 업데이트 -->
|
||||
<update id="updateStepcntAgreement" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO">
|
||||
UPDATE GC_BENEFIT_AGREE
|
||||
SET AGRE_AT = #{agreeYn}, -- 동의 여부
|
||||
REGIST_DT = NOW(), -- 등록 시간
|
||||
REGUSR = #{regusr} -- 등록자(회원)
|
||||
WHERE SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND MBR_INNB = #{mbrInnb} -- 회원 고유번호
|
||||
AND MBR_DV_CD = #{mbrDvCd} -- 회원 구분 코드
|
||||
AND BNF_DV_CD = '020' -- 혜택 구분 코드(만보기)
|
||||
AND BNF_AGRE_DV_CD = '020' -- 혜택 동의 구분 코드(만보기)
|
||||
</update>
|
||||
|
||||
<!-- 만보기 화면의 기본 정보 조회 -->
|
||||
<select id="selectStepcntBaseInfo" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
B.BNF_INNB as BNF_INNB, -- 혜택 고유번호
|
||||
B.BNF_SJ as BNF_TITLE, -- 혜택 제목
|
||||
B.BNF_WORDS_CN as BNF_GUIDANCE, -- 혜택 안내
|
||||
B.SCR_RWD_IMG as REWARD_IMG, -- 화면 대표 이미지
|
||||
B.SCR_REPRSNT_LINK_URL as REPRESENT_LINK_URL, -- 화면 대표 링크 URL
|
||||
B.SCR_RWD_LINK_URL as REWARD_LINK_URL, -- 화면 보상 링크 URL
|
||||
(
|
||||
SELECT BCT.CN_DC
|
||||
FROM GC_BENEFIT_CONTENT BCT
|
||||
WHERE BCT.BNF_INNB = B.BNF_INNB
|
||||
LIMIT 1
|
||||
) as CONTENT_DESCRIPTION, -- 내용 설명
|
||||
(
|
||||
SELECT GROUP_CONCAT(BR.BNF_RWD_CATE_DV_CD)
|
||||
FROM GC_BENEFIT_REWARD BR
|
||||
WHERE BR.BNF_INNB = B.BNF_INNB
|
||||
) as REWARD_CATEGORIES, -- 보상 항목 구분 코드 목록
|
||||
(
|
||||
SELECT BR.ITM_NM
|
||||
FROM GC_BENEFIT_REWARD BR
|
||||
WHERE BR.BNF_INNB = B.BNF_INNB
|
||||
AND BR.BNF_RWD_CATE_DV_CD = '02020' -- 만보기 월누적10회 코드
|
||||
LIMIT 1
|
||||
) as MONTHLY_REWARD_NAME, -- 10회 달성 시 받을 제품 이름
|
||||
(
|
||||
SELECT BR.MLG_RWD_AMT
|
||||
FROM GC_BENEFIT_REWARD BR
|
||||
WHERE BR.BNF_INNB = B.BNF_INNB
|
||||
AND BR.BNF_RWD_CATE_DV_CD = '02020' -- 만보기 월누적10회 코드
|
||||
LIMIT 1
|
||||
) as MONTHLY_REWARD_MILEAGE -- 10회 달성 시 받을 마일리지
|
||||
FROM
|
||||
GC_BENEFIT B
|
||||
WHERE
|
||||
B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND B.USE_AT = 'Y' -- 사용 여부 체크
|
||||
AND B.SOPMAL_CD = #{sopmalCd} -- 쇼핑몰 코드
|
||||
AND (B.BNF_BGN_DT IS NULL OR B.BNF_BGN_DT <= NOW()) -- 시작일 체크
|
||||
AND (B.BNF_END_DT IS NULL OR B.BNF_END_DT >= NOW()) -- 종료일 체크
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 이번 달 깜짝선물 획득 횟수 조회 -->
|
||||
<select id="selectMonthlySurpriseGiftCount" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="int">
|
||||
SELECT
|
||||
COUNT(BR.BNF_RCV_INNB) as surpriseGiftCount
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN BP
|
||||
INNER JOIN
|
||||
GC_BENEFIT_RECEIPT BR ON BR.BNF_PRT_INNB = BP.BNF_PRT_INNB
|
||||
INNER JOIN
|
||||
GC_BENEFIT B ON BP.BNF_INNB = B.BNF_INNB
|
||||
WHERE
|
||||
BP.MBR_INNB = #{mbrInnb}
|
||||
AND BP.MBR_DV_CD = #{mbrDvCd}
|
||||
AND B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND DATE_FORMAT(BP.BNF_PRT_DT, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m') -- 이번 달 필터링
|
||||
AND BR.BNF_RWD_CATE_DV_CD IN ('02030','02031','02032','02033','02034','02035','02036') -- 깜짝선물 카테고리 코드들
|
||||
</select>
|
||||
|
||||
<!-- 오늘 깜짝선물 수령 여부 확인 -->
|
||||
<select id="selectTodayGiftReceiptStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
COUNT(BR.BNF_RCV_INNB) as receiptCount,
|
||||
CASE WHEN COUNT(BR.BNF_RCV_INNB) > 0 THEN 'Y' ELSE 'N' END as isReceived
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN BP
|
||||
INNER JOIN
|
||||
GC_BENEFIT_RECEIPT BR ON BR.BNF_PRT_INNB = BP.BNF_PRT_INNB
|
||||
INNER JOIN
|
||||
GC_BENEFIT B ON BP.BNF_INNB = B.BNF_INNB
|
||||
WHERE
|
||||
BP.MBR_INNB = #{mbrInnb}
|
||||
AND BP.MBR_DV_CD = #{mbrDvCd}
|
||||
AND B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND DATE(BP.BNF_PRT_DT) = CURDATE() -- 오늘 날짜 기준
|
||||
AND BR.BNF_RWD_CATE_DV_CD = #{bnfRwdCateDvCd} -- 오늘의 깜짝선물 카테고리
|
||||
</select>
|
||||
|
||||
<!-- 오늘 마일리지 수령 여부 확인 -->
|
||||
<select id="selectTodayMileageReceiptStatus" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
COUNT(BR.BNF_RCV_INNB) as receiptCount,
|
||||
CASE WHEN COUNT(BR.BNF_RCV_INNB) > 0 THEN 'Y' ELSE 'N' END as isReceived
|
||||
FROM
|
||||
GC_BENEFIT_PARTCPTN BP
|
||||
INNER JOIN
|
||||
GC_BENEFIT_RECEIPT BR ON BR.BNF_PRT_INNB = BP.BNF_PRT_INNB
|
||||
INNER JOIN
|
||||
GC_BENEFIT B ON BP.BNF_INNB = B.BNF_INNB
|
||||
WHERE
|
||||
BP.MBR_INNB = #{mbrInnb}
|
||||
AND BP.MBR_DV_CD = #{mbrDvCd}
|
||||
AND B.BNF_DV_CD = '020' -- 만보기 혜택 코드
|
||||
AND DATE(BP.BNF_PRT_DT) = CURDATE() -- 오늘 날짜 기준
|
||||
AND BR.BNF_RWD_CATE_DV_CD = #{bnfRwdCateDvCd} -- 보상 카테고리 (02010: 일일만보, 02020: 월누적10회)
|
||||
</select>
|
||||
|
||||
<!-- 만보기 참여 안내 조회-->
|
||||
<select id="selectStepcntGuide" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
BNF_WORDS_CN
|
||||
FROM
|
||||
GC_BENEFIT
|
||||
WHERE
|
||||
BNF_INNB = #{bnfInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!-- BNF_INNB 조회 -->
|
||||
<select id="selectBnfInnb" parameterType="com.wb.domainserver.domain.gcone.bnft.stepcnt.vo.BOStepcntVO" resultType="com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
BNF_INNB
|
||||
FROM
|
||||
GC_BENEFIT
|
||||
WHERE
|
||||
BNF_DV_CD = '020'
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND USE_AT = 'Y'
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,336 @@
|
||||
<?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.common.mapper.BOCommonMapper">
|
||||
|
||||
<!-- 이미지 정보 수정 -->
|
||||
<update id="updateBOFileInfo" parameterType="com.wb.domainserver.domain.gcone.common.vo.BOCommonVO">
|
||||
<!-- 인트라넷 게시판 첨부파일 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'ITRB')">
|
||||
<![CDATA[
|
||||
DELETE FROM GC_INTRANET_BOARDDATA_FILE A
|
||||
WHERE A.SOPMAL_CD = #{shopCd} AND A.BBSCTT_ATCHMNFIL_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 게시판 첨부파일 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'BDFL')">
|
||||
<![CDATA[
|
||||
DELETE FROM GC_BOARDDATA_FILE A
|
||||
WHERE A.SOPMAL_CD = #{shopCd} AND A.BBSCTT_ATCHMNFIL_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 게시판 대표이미지 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'BDIG')">
|
||||
<![CDATA[
|
||||
UPDATE GC_BOARDDATA
|
||||
SET REPRSNT_IMG_ORGINL_FIL_NM=null, REPRSNT_IMG_SYS_FIL_NM=null
|
||||
WHERE SOPMAL_CD = #{shopCd} AND BBSCTT_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 배너관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'BANR')">
|
||||
<![CDATA[
|
||||
UPDATE GC_GOODS_BANNER
|
||||
SET ORGINL_FIL_NM=null, SYS_FIL_NM=null, FIL_MG=null, FIL_TY=null, FIL_COURS=null
|
||||
WHERE SOPMAL_CD = #{shopCd} AND BANNER_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 회원관리 등급이미지 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'MBRG')">
|
||||
<![CDATA[
|
||||
UPDATE GC_MEMBER_GRAD
|
||||
SET MBR_GRAD_ICON_COURS = null
|
||||
WHERE SOPMAL_CD = #{shopCd} AND MBR_GRAD_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 팝업관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'POUP')">
|
||||
<![CDATA[
|
||||
UPDATE GC_DESIGN_POPUP
|
||||
SET ORGINL_FIL_NM=null, SYS_FIL_NM=null, FIL_MG=null, FIL_TY=null, FIL_COURS=null
|
||||
WHERE SOPMAL_CD = #{shopCd} AND POPUP_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 이벤트관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'EVNT')">
|
||||
<![CDATA[
|
||||
UPDATE GC_EVENT
|
||||
SET ORGINL_FIL_NM=null, SYS_FIL_NM=null, FIL_MG=null, FIL_TY=null, FIL_COURS=null
|
||||
WHERE SOPMAL_CD = #{shopCd} AND EVT_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 메인화면관리(상단) -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'MANT')">
|
||||
<![CDATA[
|
||||
UPDATE GC_DESIGN
|
||||
SET TOP_ORGINL_FIL_NM=null, TOP_SYS_FIL_NM=null, TOP_FIL_MG=null, TOP_FIL_TY=null, TOP_FIL_COURS=null
|
||||
WHERE SOPMAL_CD = #{shopCd} AND MAIN_SITE_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 메인화면관리(하단) -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'MANB')">
|
||||
<![CDATA[
|
||||
UPDATE GC_DESIGN
|
||||
SET FOOTER_ORGINL_FIL_NM=null, FOOTER_SYS_FIL_NM=null, FOOTER_FIL_MG=null, FOOTER_FIL_TY=null, FOOTER_FIL_COURS=null
|
||||
WHERE SOPMAL_CD = #{shopCd} AND MAIN_SITE_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 메인컨텐츠관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'MANC')">
|
||||
<![CDATA[
|
||||
UPDATE GC_DESIGN_CONTENTS_ITEM
|
||||
SET ORGINL_FIL_NM=null, SYS_FIL_NM=null, FIL_MG=null, FIL_TY=null, FIL_COURS=null
|
||||
WHERE MAIN_SETUP_ITEM_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 메시지관리(인트라넷) -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'SMSI')">
|
||||
<![CDATA[
|
||||
DELETE FROM GC_INTRANET_SMS_FILE A
|
||||
WHERE A.F_SEQ = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 메시지관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'SMSF')">
|
||||
<![CDATA[
|
||||
DELETE FROM GC_SMS_FILE A
|
||||
WHERE A.SMS_FILE_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 대용량메시지관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'SMSQ')">
|
||||
<![CDATA[
|
||||
UPDATE GC_LGQY_SMS
|
||||
SET ORGINL_FIL_NM=null, SYS_FIL_NM=null, FIL_MG=null, FIL_TY=null, FIL_COURS=null
|
||||
WHERE SMS_LGQY_SNDNG_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 매장관리(대표이미지) -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'STOR')">
|
||||
<![CDATA[
|
||||
UPDATE GC_STORE
|
||||
SET STR_REPRSNT_IMG=null
|
||||
WHERE STR_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 상품 이미지 정보 수정 -->
|
||||
<!-- 상품정보 조회 -->
|
||||
<select id="selectGoodsInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.common.vo.BOCommonVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT A.CUT_NB, A.GOODS_INNB FROM GC_GOODS_IMAGE A WHERE A.GOODS_IMG_INNB = #{fileSeq} AND A.SOPMAL_CD = #{shopCd}
|
||||
]]>
|
||||
</select>
|
||||
<delete id="updateBOGoodsFileInfo" parameterType="com.wb.domainserver.domain.gcone.common.vo.BOCommonVO">
|
||||
<![CDATA[
|
||||
DELETE FROM GC_GOODS_IMAGE
|
||||
WHERE SOPMAL_CD = #{shopCd} and GOODS_INNB = #{goodsInnb} and CUT_NB = #{cutNb}
|
||||
]]>
|
||||
</delete>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- 이미지 경로 조회 -->
|
||||
<select id = "selectBOFileInfo"
|
||||
parameterType="com.wb.domainserver.domain.gcone.common.vo.BOCommonVO"
|
||||
resultType="dataMap">
|
||||
<!-- 인트라넷 게시판 첨부파일 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'ITRB')">
|
||||
<![CDATA[
|
||||
SELECT concat(A.FIL_COURS , CASE WHEN RIGHT(FIL_COURS, 1) = '/' THEN '' ELSE '/' END , A.SYS_FIL_NM) AS FILE_FULL_PATH
|
||||
, FIL_DV_CD, ORGINL_FIL_NM
|
||||
FROM GC_INTRANET_BOARDDATA_FILE A
|
||||
WHERE A.SOPMAL_CD = #{shopCd} AND A.BBSCTT_ATCHMNFIL_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 게시판 첨부파일 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'BDFL')">
|
||||
<![CDATA[
|
||||
SELECT concat(A.FIL_COURS , CASE WHEN RIGHT(FIL_COURS, 1) = '/' THEN '' ELSE '/' END , A.SYS_FIL_NM) AS FILE_FULL_PATH
|
||||
, FIL_DV_CD, ORGINL_FIL_NM
|
||||
FROM GC_BOARDDATA_FILE A
|
||||
WHERE A.SOPMAL_CD = #{shopCd} AND A.BBSCTT_ATCHMNFIL_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 게시판 대표이미지 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'BDIG')">
|
||||
<![CDATA[
|
||||
SELECT REPRSNT_IMG_SYS_FIL_NM AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , '' ORGINL_FIL_NM
|
||||
FROM GC_BOARDDATA
|
||||
WHERE SOPMAL_CD = #{shopCd} AND BBSCTT_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 배너관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'BANR')">
|
||||
<![CDATA[
|
||||
SELECT concat(A.FIL_COURS ,'/', A.SYS_FIL_NM) AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , ORGINL_FIL_NM
|
||||
FROM GC_GOODS_BANNER A
|
||||
WHERE SOPMAL_CD = #{shopCd} AND BANNER_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 회원관리 등급이미지 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'MBRG')">
|
||||
<![CDATA[
|
||||
SELECT MBR_GRAD_ICON_COURS AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , '' ORGINL_FIL_NM
|
||||
FROM GC_MEMBER_GRAD
|
||||
WHERE MBR_GRAD_INNB = #{fileSeq}
|
||||
AND SOPMAL_CD = #{shopCd}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 상품 이미지 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'GDIG')">
|
||||
<![CDATA[
|
||||
SELECT IMG AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , '' ORGINL_FIL_NM
|
||||
FROM GC_GOODS_IMAGE A
|
||||
WHERE A.SOPMAL_CD = 'NC' AND A.GOODS_IMG_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 팝업관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'POUP')">
|
||||
<![CDATA[
|
||||
SELECT concat(A.FIL_COURS ,'/', A.SYS_FIL_NM ) AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD, ORGINL_FIL_NM
|
||||
FROM GC_DESIGN_POPUP A
|
||||
WHERE A.POPUP_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 이벤트관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'EVNT')">
|
||||
<![CDATA[
|
||||
SELECT concat(A.FIL_COURS ,'/', A.SYS_FIL_NM) AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , ORGINL_FIL_NM
|
||||
FROM GC_EVENT A
|
||||
WHERE SOPMAL_CD = #{shopCd} AND EVT_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 메인화면관리(상단) -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'MANT')">
|
||||
<![CDATA[
|
||||
SELECT concat(A.TOP_FIL_COURS ,'/', A.TOP_SYS_FIL_NM) AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , TOP_ORGINL_FIL_NM AS ORGINL_FIL_NM
|
||||
FROM GC_DESIGN A
|
||||
WHERE SOPMAL_CD = #{shopCd} AND MAIN_SITE_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 메인화면관리(하단) -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'MANB')">
|
||||
<![CDATA[
|
||||
SELECT concat(A.FOOTER_FIL_COURS ,'/', A.FOOTER_SYS_FIL_NM) AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , FOOTER_ORGINL_FIL_NM AS ORGINL_FIL_NM
|
||||
FROM GC_DESIGN A
|
||||
WHERE SOPMAL_CD = #{shopCd} AND MAIN_SITE_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 메인컨텐츠관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'MANC')">
|
||||
<![CDATA[
|
||||
SELECT concat(A.FIL_COURS ,'/', A.SYS_FIL_NM) AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , ORGINL_FIL_NM
|
||||
FROM GC_DESIGN_CONTENTS_ITEM A
|
||||
WHERE MAIN_SETUP_ITEM_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 메시지관리(인트라넷) -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'SMSI')">
|
||||
<![CDATA[
|
||||
SELECT CONCAT(A.F_COURSE ,'/', A.F_NAME) AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , F_NAME_ORG AS ORGINL_FIL_NM
|
||||
FROM GC_INTRANET_SMS_FILE A
|
||||
WHERE A.F_SEQ = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 메시지관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'SMSF')">
|
||||
<![CDATA[
|
||||
SELECT concat(A.FIL_COURS ,'/', A.SYS_FIL_NM) AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , ORGINL_FIL_NM
|
||||
FROM GC_SMS_FILE A
|
||||
WHERE A.SMS_FILE_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 대용량메시지관리 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'SMSQ')">
|
||||
<![CDATA[
|
||||
SELECT concat(A.FIL_COURS ,'/', A.SYS_FIL_NM) AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , ORGINL_FIL_NM
|
||||
FROM GC_LGQY_SMS A
|
||||
WHERE A.SMS_LGQY_SNDNG_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 카테고리조회 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'CTGY')">
|
||||
<![CDATA[
|
||||
SELECT concat(FIL_COURS ,'/', SYS_FIL_NM) AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD , ORGINL_FIL_NM
|
||||
FROM GC_CATEGORY
|
||||
WHERE CTGRY_ID = #{fileSeq}
|
||||
AND SOPMAL_CD = #{shopCd}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 매장관리(대표이미지) -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(menuGb, 'STOR')">
|
||||
<![CDATA[
|
||||
SELECT STR_REPRSNT_IMG AS FILE_FULL_PATH
|
||||
, '01' FIL_DV_CD
|
||||
FROM GC_STORE
|
||||
WHERE STR_INNB = #{fileSeq}
|
||||
]]>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id = "selectEncptKey"
|
||||
parameterType="com.wb.domainserver.domain.gcone.common.vo.BOCommonVO"
|
||||
resultType = "java.lang.String">
|
||||
<![CDATA[
|
||||
SELECT ENCPT_KEY
|
||||
FROM GC_ENCPT_KEY A
|
||||
WHERE ENCPT_KEY_DV_CD = #{encptKeyDvCd}
|
||||
AND IDNTFC_INNB = #{idntfcInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<insert id="insertEncptKey" parameterType="com.wb.domainserver.domain.gcone.common.vo.BOCommonVO">
|
||||
|
||||
<selectKey order="BEFORE" keyProperty="encptKeyInnb" resultType="java.lang.String">
|
||||
<![CDATA[
|
||||
SELECT IFNULL(MAX(ENCPT_KEY_INNB), 0)+1
|
||||
FROM GC_ENCPT_KEY
|
||||
]]>
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_ENCPT_KEY (
|
||||
ENCPT_KEY_INNB,
|
||||
ENCPT_KEY_DV_CD,
|
||||
IDNTFC_INNB,
|
||||
ENCPT_KEY,
|
||||
REGUSR,
|
||||
REGIST_DT
|
||||
)
|
||||
VALUES (
|
||||
#{encptKeyInnb},
|
||||
#{encptKeyDvCd},
|
||||
#{idntfcInnb},
|
||||
#{encptKey},
|
||||
${regusr},
|
||||
SYSDATE()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,376 @@
|
||||
<?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.goods.banner.mapper.BOBannerMapper">
|
||||
|
||||
<!-- 배너 상세조회, 수정, 삭제 조건절-->
|
||||
<sql id="selectBOMapperKeyWhere">
|
||||
<![CDATA[
|
||||
WHERE 1=1
|
||||
AND BANNER_INNB = #{bannerInnb}
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<!-- 배너목록 카운트 -->
|
||||
<select id="selectBOBannerListCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO"
|
||||
resultType="java.lang.Integer">
|
||||
<![CDATA[
|
||||
SELECT count(*)
|
||||
FROM (SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM
|
||||
, TB.*
|
||||
FROM (SELECT BANNER_INNB
|
||||
, BANNER_NM
|
||||
, EXPSRLC_DV
|
||||
, EXPSRLC_DV_CD
|
||||
, DATE_FORMAT(EXPSR_BGN_DT, '%Y-%m-%d %h:%i:%s') AS EXPSR_BGN_DT
|
||||
, DATE_FORMAT(EXPSR_END_DT, '%Y-%m-%d %h:%i:%s') AS EXPSR_END_DT
|
||||
, REGUSR
|
||||
, REGIST_DT
|
||||
, DATE_FORMAT(REGIST_DT, '%Y-%m-%d') AS REGIST_DE
|
||||
, UPDUSR
|
||||
, UPDT_DT
|
||||
, DATE_FORMAT(UPDT_DT, '%Y-%m-%d') AS UPDT_DE
|
||||
, (SELECT COUNT(1) FROM GC_SHOP_GOODS_BANNER FSGB WHERE FSGB.BANNER_INNB = FGB.BANNER_INNB) AS GOODS_CNT
|
||||
FROM GC_GOODS_BANNER FGB
|
||||
WHERE 1=1
|
||||
AND USE_AT = 'Y'
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
BANNER_INNB DESC ) TB
|
||||
WHERE (@ROWNUM:=0) = 0 ) PV
|
||||
WHERE 1=1
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 배너 목록 조회 -->
|
||||
<select id="selectBOBannerList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT *
|
||||
FROM (SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM
|
||||
, TB.*
|
||||
FROM (SELECT BANNER_INNB
|
||||
, BANNER_NM
|
||||
, EXPSRLC_DV
|
||||
, EXPSRLC_DV_CD
|
||||
, DATE_FORMAT(EXPSR_BGN_DT, '%Y-%m-%d %h:%i:%s') AS EXPSR_BGN_DT
|
||||
, DATE_FORMAT(EXPSR_END_DT, '%Y-%m-%d %h:%i:%s') AS EXPSR_END_DT
|
||||
, REGUSR
|
||||
, REGIST_DT
|
||||
, DATE_FORMAT(REGIST_DT, '%Y-%m-%d') AS REGIST_DE
|
||||
, UPDUSR
|
||||
, UPDT_DT
|
||||
, DATE_FORMAT(UPDT_DT, '%Y-%m-%d') AS UPDT_DE
|
||||
, (SELECT COUNT(FSGB.GOODS_INNB) FROM GC_SHOP_GOODS_BANNER FSGB WHERE FSGB.BANNER_INNB = FGB.BANNER_INNB) AS GOODS_CNT
|
||||
, (SELECT COUNT(FSGB.CTGRY_ID) FROM GC_SHOP_GOODS_BANNER FSGB WHERE FSGB.BANNER_INNB = FGB.BANNER_INNB) AS CTGRY_CNT
|
||||
FROM GC_GOODS_BANNER FGB
|
||||
WHERE 1=1
|
||||
AND USE_AT = 'Y'
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY
|
||||
BANNER_INNB DESC ) TB
|
||||
WHERE (@ROWNUM:=0) = 0 ) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 배너 등록 -->
|
||||
<insert id="insertBOBanner"
|
||||
parameterType="com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO">
|
||||
<selectKey order="BEFORE" keyProperty="bannerInnb" resultType="java.lang.Integer">
|
||||
SELECT IFNULL(MAX(BANNER_INNB), 0)+1
|
||||
FROM GC_GOODS_BANNER
|
||||
</selectKey>
|
||||
INSERT INTO GC_GOODS_BANNER (
|
||||
BANNER_INNB
|
||||
, SOPMAL_CD
|
||||
, BANNER_NM
|
||||
, EXPSRLC_DV
|
||||
, EXPSRLC_DV_CD
|
||||
, EXPSR_BGN_DT
|
||||
, EXPSR_END_DT
|
||||
, GOODS_APPLC_DV_CD
|
||||
, BANNER_URL
|
||||
, ORGINL_FIL_NM
|
||||
, SYS_FIL_NM
|
||||
, FIL_MG
|
||||
, FIL_TY
|
||||
, FIL_COURS
|
||||
, BANNER_ORDR
|
||||
, USE_AT
|
||||
, REGUSR
|
||||
, REGIST_DT
|
||||
, UPDUSR
|
||||
, UPDT_DT
|
||||
)
|
||||
VALUES (
|
||||
#{bannerInnb}
|
||||
, #{sopmalCd}
|
||||
, #{bannerNm}
|
||||
, #{expsrlcDv}
|
||||
, #{expsrlcDvCd}
|
||||
<if test="expsrlcDvCd != '03'">
|
||||
, NULL
|
||||
, NULL
|
||||
</if>
|
||||
<if test="expsrlcDvCd == '03'">
|
||||
, #{expsrBgnDt}
|
||||
, #{expsrEndDt}
|
||||
</if>
|
||||
,#{goodsApplcDvCd}
|
||||
,#{bannerUrl}
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(orginlFilNm)">
|
||||
, #{orginlFilNm}
|
||||
, #{sysFilNm}
|
||||
, #{filMg}
|
||||
, #{filTy}
|
||||
, #{filCours}
|
||||
</when>
|
||||
<otherwise>
|
||||
, NULL
|
||||
, NULL
|
||||
, NULL
|
||||
, NULL
|
||||
, NULL
|
||||
</otherwise>
|
||||
</choose>
|
||||
, '99' -- 새로 등록한 배너 순서 맨뒤 지정
|
||||
, 'Y'
|
||||
, #{regusr}
|
||||
, now()
|
||||
, #{updusr}
|
||||
, now()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 배너 연결 상품 등록 -->
|
||||
<insert id="insertBOBannerIncludeGoods"
|
||||
parameterType="DataMap">
|
||||
<selectKey order="BEFORE" keyProperty="shopGoodsBannerInnb" resultType="java.lang.Integer">
|
||||
SELECT IFNULL(MAX(SHOP_GOODS_BANNER_INNB), 0)+1
|
||||
FROM GC_SHOP_GOODS_BANNER
|
||||
</selectKey>
|
||||
INSERT INTO GC_SHOP_GOODS_BANNER (
|
||||
SHOP_GOODS_BANNER_INNB
|
||||
, GOODS_INNB
|
||||
, SOPMAL_CD
|
||||
, BANNER_INNB
|
||||
, REGUSR
|
||||
, REGIST_DT
|
||||
)
|
||||
VALUES (
|
||||
#{shopGoodsBannerInnb}
|
||||
, #{goodsInnb}
|
||||
, #{sopmalCd}
|
||||
, #{bannerInnb}
|
||||
, #{regusr}
|
||||
, now()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 배너 연결 상품 카테고리ID 등록 -->
|
||||
<insert id="insertBOBannerIncludeGoodsCtgryId"
|
||||
parameterType="DataMap">
|
||||
<selectKey order="BEFORE" keyProperty="shopGoodsBannerInnb" resultType="java.lang.Integer">
|
||||
SELECT IFNULL(MAX(SHOP_GOODS_BANNER_INNB), 0)+1
|
||||
FROM GC_SHOP_GOODS_BANNER
|
||||
</selectKey>
|
||||
INSERT INTO GC_SHOP_GOODS_BANNER (
|
||||
SHOP_GOODS_BANNER_INNB
|
||||
, CTGRY_ID
|
||||
, SOPMAL_CD
|
||||
, BANNER_INNB
|
||||
, REGUSR
|
||||
, REGIST_DT
|
||||
)
|
||||
VALUES (
|
||||
#{shopGoodsBannerInnb}
|
||||
, #{ctgryId}
|
||||
, #{sopmalCd}
|
||||
, #{bannerInnb}
|
||||
, #{regusr}
|
||||
, now()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 배너수정 -->
|
||||
<update id="updateBOBannerDtl" parameterType="com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO">
|
||||
UPDATE GC_GOODS_BANNER
|
||||
SET
|
||||
BANNER_NM = #{bannerNm}
|
||||
, EXPSRLC_DV = #{expsrlcDv}
|
||||
, EXPSRLC_DV_CD = #{expsrlcDvCd}
|
||||
<if test="expsrlcDvCd == '03'">
|
||||
, EXPSR_BGN_DT = #{expsrBgnDt}
|
||||
, EXPSR_END_DT = #{expsrEndDt}
|
||||
</if>
|
||||
<if test="expsrlcDvCd != '03'">
|
||||
, EXPSR_BGN_DT = NULL
|
||||
, EXPSR_END_DT = NULL
|
||||
</if>
|
||||
<choose>
|
||||
<when test="fileUse == 'new'">
|
||||
, ORGINL_FIL_NM = #{orginlFilNm}
|
||||
, SYS_FIL_NM = #{sysFilNm}
|
||||
, FIL_MG = #{filMg}
|
||||
, FIL_TY = #{filTy}
|
||||
, FIL_COURS = #{filCours}
|
||||
</when>
|
||||
<when test="fileUse == 'none'">
|
||||
, ORGINL_FIL_NM = NULL
|
||||
, SYS_FIL_NM = NULL
|
||||
, FIL_MG = NULL
|
||||
, FIL_TY = NULL
|
||||
, FIL_COURS = NULL
|
||||
</when>
|
||||
<otherwise>
|
||||
</otherwise>
|
||||
</choose>
|
||||
, BANNER_URL = #{bannerUrl}
|
||||
, GOODS_APPLC_DV_CD = #{goodsApplcDvCd}
|
||||
, UPDUSR = #{updusr}
|
||||
, UPDT_DT = now()
|
||||
<include refid="selectBOMapperKeyWhere"/>
|
||||
</update>
|
||||
|
||||
<!-- 배너 삭제 -->
|
||||
<update id="deleteBOBanner" parameterType="com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_GOODS_BANNER
|
||||
SET USE_AT = 'N'
|
||||
, UPDUSR = #{updusr}
|
||||
, UPDT_DT = now()
|
||||
]]>
|
||||
<include refid="selectBOMapperKeyWhere"/>
|
||||
</update>
|
||||
|
||||
<!-- 배너 상세 조회 -->
|
||||
<select id="selectBOBannerDtlForm"
|
||||
parameterType="com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT GGB.BANNER_INNB
|
||||
, GGB.SOPMAL_CD
|
||||
, GGB.BANNER_NM
|
||||
, GGB.EXPSRLC_DV
|
||||
, GGB.EXPSRLC_DV_CD
|
||||
, DATE_FORMAT(GGB.EXPSR_BGN_DT, '%Y-%m-%d %h:%i:%s') AS EXPSR_BGN_DT
|
||||
, DATE_FORMAT(GGB.EXPSR_END_DT, '%Y-%m-%d %h:%i:%s') AS EXPSR_END_DT
|
||||
, DATE_FORMAT(GGB.EXPSR_BGN_DT, '%Y-%m-%d') AS EXPSR_BGN_YMD
|
||||
, DATE_FORMAT(GGB.EXPSR_END_DT, '%Y-%m-%d') AS EXPSR_END_YMD
|
||||
, DATE_FORMAT(GGB.EXPSR_BGN_DT, '%h:%i') AS EXPSR_BGN_TIME
|
||||
, DATE_FORMAT(GGB.EXPSR_END_DT, '%h:%i') AS EXPSR_END_TIME
|
||||
, GGB.BANNER_URL
|
||||
, GGB.ORGINL_FIL_NM
|
||||
, GGB.SYS_FIL_NM
|
||||
, GGB.FIL_MG
|
||||
, GGB.FIL_TY
|
||||
, GGB.FIL_COURS
|
||||
, GGB.REGUSR
|
||||
, GGB.REGIST_DT
|
||||
, DATE_FORMAT(GGB.REGIST_DT, '%Y-%m-%d') AS REGIST_DE
|
||||
, GGB.UPDUSR
|
||||
, GGB.UPDT_DT
|
||||
, DATE_FORMAT(GGB.UPDT_DT, '%Y-%m-%d') AS UPDT_DE
|
||||
, GGB.GOODS_APPLC_DV_CD
|
||||
FROM GC_GOODS_BANNER GGB
|
||||
WHERE 1=1
|
||||
AND GGB.BANNER_INNB =#{bannerInnb}
|
||||
AND GGB.SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 배너 연결 상품 조회 -->
|
||||
<select id="selectBOBannerIncludeGoods"
|
||||
parameterType="com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO"
|
||||
resultType="String">
|
||||
SELECT GOODS_INNB
|
||||
FROM GC_SHOP_GOODS_BANNER
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD =#{sopmalCd}
|
||||
AND BANNER_INNB = #{bannerInnb}
|
||||
</select>
|
||||
|
||||
<!--배너 카테고리 정보 조회-->
|
||||
<select id="selectBOBannerCtgry" parameterType="dataMap" resultType="dataMap">
|
||||
WITH RECURSIVE category AS (
|
||||
SELECT CTGRY_ID, CTGRY_NM, UPPER_CTGRY_ID, SOPMAL_CD, CTGRY_NM as full_path
|
||||
FROM GC_CATEGORY
|
||||
where SOPMAL_CD = #{sopmalCd}
|
||||
AND UPPER_CTGRY_ID = 2
|
||||
UNION ALL
|
||||
SELECT c.CTGRY_ID, c.CTGRY_NM, c.UPPER_CTGRY_ID, c.SOPMAL_CD, CONCAT(ch.full_path , ' > ', c.CTGRY_NM ) AS full_path
|
||||
FROM GC_CATEGORY c
|
||||
INNER JOIN category ch
|
||||
ON c.UPPER_CTGRY_ID = ch.CTGRY_ID
|
||||
AND c.sopmal_cd = ch.sopmal_cd
|
||||
)
|
||||
SELECT
|
||||
cc.CTGRY_ID,
|
||||
cc.CTGRY_NM,
|
||||
cc.UPPER_CTGRY_ID,
|
||||
cc.SOPMAL_CD,
|
||||
cc.full_path,
|
||||
GSGB.GOODS_INNB
|
||||
FROM category cc
|
||||
JOIN GC_SHOP_GOODS_BANNER GSGB
|
||||
where GSGB.SOPMAL_CD = cc.sopmal_cd
|
||||
AND GSGB.CTGRY_ID = cc.CTGRY_ID
|
||||
AND GSGB.sopmal_cd = #{sopmalCd}
|
||||
AND GSGB.BANNER_INNB = #{bannerInnb}
|
||||
ORDER BY CTGRY_ID;
|
||||
</select>
|
||||
|
||||
<!-- 배너 연결 상품 삭제 -->
|
||||
<delete id="deleteBOBannerIncludeGoods"
|
||||
parameterType="java.lang.Integer">
|
||||
DELETE FROM GC_SHOP_GOODS_BANNER
|
||||
WHERE 1=1
|
||||
AND BANNER_INNB = #{bannerInnb}
|
||||
</delete>
|
||||
|
||||
<!-- 배너 연결 상품 조회 -->
|
||||
<select id="selectBOBannerIncludeGoodsCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO"
|
||||
resultType="java.lang.Integer">
|
||||
SELECT count(1)
|
||||
FROM GC_SHOP_GOODS_BANNER
|
||||
WHERE 1=1
|
||||
AND BANNER_INNB = #{bannerInnb}
|
||||
</select>
|
||||
|
||||
<!--배너 순서지정팝업조회-->
|
||||
<select id="selectBOBannerOrdrPopup" parameterType="com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO" resultType="dataMap">
|
||||
SELECT
|
||||
GGB.BANNER_INNB,
|
||||
GGB.SOPMAL_CD,
|
||||
GGB.BANNER_NM,
|
||||
GGB.EXPSRLC_DV, -- 상단, 하단
|
||||
GGB.BANNER_ORDR
|
||||
FROM
|
||||
GC_GOODS_BANNER GGB
|
||||
WHERE
|
||||
1 = 1
|
||||
AND GGB.USE_AT = 'Y'
|
||||
AND GGB.SOPMAL_CD = #{sopmalCd}
|
||||
AND(CASE WHEN GGB.EXPSRLC_DV_CD = '01' THEN 'Y'
|
||||
WHEN GGB.EXPSRLC_DV_CD = '03' AND DATE_FORMAT(SYSDATE(), '%Y-%m-%d') BETWEEN GGB.EXPSR_BGN_DT AND GGB.EXPSR_END_DT THEN 'Y'
|
||||
ELSE 'N' END )='Y' -- 노출구분이 01 이거나 노출예약이면서 노출기간이 오늘 기준안에 있으면 Y 미노출이면 N)
|
||||
ORDER BY GGB.BANNER_ORDR ASC
|
||||
</select>
|
||||
<!--배너순서수정-->
|
||||
<update id="updateBOBannerOrdr" parameterType="com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO">
|
||||
UPDATE
|
||||
GC_GOODS_BANNER GGB
|
||||
SET
|
||||
GGB.BANNER_ORDR = #{bannerOrdr},
|
||||
GGB.UPDUSR = #{updusr},
|
||||
GGB.UPDT_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND GGB.SOPMAL_CD = #{sopmalCd}
|
||||
AND GGB.BANNER_INNB = #{bannerInnb}
|
||||
</update>
|
||||
</mapper>
|
||||
@@ -0,0 +1,108 @@
|
||||
<?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.goods.cmnuse.mapper.BOCmnuseMapper">
|
||||
|
||||
<!-- 상품 공용정보 목록 조회 -->
|
||||
<select id="selectBOCmnuseInfoList"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.goods.cmnuse.vo.BOCmnuseVO" >
|
||||
SELECT
|
||||
ROW_NUMBER() OVER(ORDER BY i.REGIST_DT ASC) RNUM
|
||||
,i.CMNUSE_INFO_INNB as CMNUSE_INFO_INNB
|
||||
,i.CMNUSE_INFO_SJ as CMNUSE_INFO_SJ
|
||||
,DATE_FORMAT(i.REGIST_DT, '%Y-%m-%d %H:%i') as REGIST_DT
|
||||
, IFNULL(fg.LINKGOODS, 0) as LINKGOODS
|
||||
FROM GC_GOODS_INFO i
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT
|
||||
CMNUSE_INFO_INNB
|
||||
,COUNT(GOODS_INNB) as LINKGOODS
|
||||
,SOPMAL_CD
|
||||
FROM GC_GOODS
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
GROUP BY CMNUSE_INFO_INNB
|
||||
) fg
|
||||
ON i.CMNUSE_INFO_INNB = fg.CMNUSE_INFO_INNB
|
||||
WHERE 1=1
|
||||
AND i.SOPMAL_CD =#{sopmalCd}
|
||||
AND i.USE_AT ='Y'
|
||||
ORDER BY REGIST_DT DESC
|
||||
</select>
|
||||
|
||||
<!-- 상품 공용정보 상세 조회 -->
|
||||
<select id="selectBOCmnuseInfoDtl">
|
||||
SELECT
|
||||
CMNUSE_INFO_INNB,
|
||||
SOPMAL_CD,
|
||||
CMNUSE_INFO_SJ,
|
||||
INFO_CN
|
||||
FROM GC_GOODS_INFO
|
||||
WHERE 1=1
|
||||
AND CMNUSE_INFO_INNB = #{cmnuseInfoInnb}
|
||||
AND USE_AT ='Y'
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!-- 상품 공용정보 등록 -->
|
||||
<insert id="insertBOCmnuseInfo"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.goods.cmnuse.vo.BOCmnuseVO" >
|
||||
<selectKey keyProperty="cmnuseInfoInnb" resultType="String" order="BEFORE">
|
||||
SELECT IFNULL(MAX(CMNUSE_INFO_INNB), 0) + 1
|
||||
FROM GC_GOODS_INFO
|
||||
</selectKey>
|
||||
INSERT INTO GC_GOODS_INFO
|
||||
(
|
||||
CMNUSE_INFO_INNB,
|
||||
SOPMAL_CD,
|
||||
<if test="bsnmInnb != null and bsnmInnb != ''">
|
||||
BSNM_INNB,
|
||||
</if>
|
||||
<if test="cmnuseInfoSj != null and cmnuseInfoSj != ''">
|
||||
CMNUSE_INFO_SJ,
|
||||
</if>
|
||||
<if test="infoCn != null and infoCn != ''">
|
||||
INFO_CN,
|
||||
</if>
|
||||
USE_AT,
|
||||
REGUSR,
|
||||
REGIST_DT
|
||||
)
|
||||
VALUES (
|
||||
#{cmnuseInfoInnb},
|
||||
#{sopmalCd},
|
||||
<if test="bsnmInnb != null and bsnmInnb != ''">
|
||||
#{bsnmInnb},
|
||||
</if>
|
||||
<if test="cmnuseInfoSj != null and cmnuseInfoSj != ''">
|
||||
#{cmnuseInfoSj},
|
||||
</if>
|
||||
<if test="infoCn != null and infoCn != ''">
|
||||
#{infoCn},
|
||||
</if>
|
||||
'Y',
|
||||
#{regusr},
|
||||
SYSDATE()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 상품 공용정보 수정 -->
|
||||
<update id="updateBOCmnuseInfoDtl">
|
||||
UPDATE GC_GOODS_INFO
|
||||
SET CMNUSE_INFO_SJ = #{cmnuseInfoSj},
|
||||
INFO_CN = #{infoCn},
|
||||
UPDUSR = #{updusr},
|
||||
UPDT_DT = now()
|
||||
WHERE CMNUSE_INFO_INNB = #{cmnuseInfoInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
<!-- 상품 공용정보 삭제 -->
|
||||
<update id="deleteBOCmnuseInfo">
|
||||
update GC_GOODS_INFO
|
||||
SET USE_AT = 'N'
|
||||
WHERE CMNUSE_INFO_INNB = #{cmnuseInfoInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1 @@
|
||||
<?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.goods.ctgry.mapper.BOCtgryMapper"></mapper>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,298 @@
|
||||
<?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.goods.goodsinfo.mapper.BOGoodsinfoMapper">
|
||||
|
||||
<!-- 상품 정보 목록 조회 -->
|
||||
<select id="selectBOGoodsInfoList"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO"
|
||||
resultType = "com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, BM.*
|
||||
FROM (
|
||||
SELECT
|
||||
GOODS_EXPSR_INFO_INNB,
|
||||
GOODS_INFO_SETUP_SJ,
|
||||
GOODS_NM_EXPSR_AT,
|
||||
GOODS_NM_EXPSR_ORDR,
|
||||
REPRSNT_DC_EXPSR_AT,
|
||||
REPRSNT_DC_EXPSR_ORDR,
|
||||
PRIC_EXPSR_AT,
|
||||
PRIC_EXPSR_ORDR,
|
||||
DLVY_EXPSR_AT,
|
||||
DLVY_EXPSR_ORDR,
|
||||
RVW_EVL_SCRE_EXPSR_AT,
|
||||
RVW_EVL_SCRE_EXPSR_ORDR,
|
||||
ICON_EXPSR_AT,
|
||||
ICON_EXPSR_ORDR,
|
||||
REGUSR,
|
||||
REGIST_DT,
|
||||
UPDUSR,
|
||||
UPDT_DT
|
||||
FROM
|
||||
GC_GOODS_EXPSR_INFO
|
||||
WHERE
|
||||
USE_AT = 'Y'
|
||||
) BM
|
||||
WHERE
|
||||
(@ROWNUM:=0)=0
|
||||
ORDER BY RNUM DESC
|
||||
) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
</select>
|
||||
<select id="selectBOGoodsInfoListCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO" resultType="Integer">
|
||||
SELECT
|
||||
COUNT(1)
|
||||
FROM
|
||||
GC_GOODS_EXPSR_INFO
|
||||
WHERE
|
||||
USE_AT = 'Y'
|
||||
</select>
|
||||
<select id="selectBOGoodsInfoDtl"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO"
|
||||
resultType = "com.wb.domainserver.util.dataaccess.DataMap">
|
||||
SELECT
|
||||
GOODS_EXPSR_INFO_INNB,
|
||||
GOODS_INFO_SETUP_SJ,
|
||||
GOODS_NM_EXPSR_AT,
|
||||
GOODS_NM_EXPSR_ORDR,
|
||||
REPRSNT_DC_EXPSR_AT,
|
||||
REPRSNT_DC_EXPSR_ORDR,
|
||||
PRIC_EXPSR_AT,
|
||||
PRIC_EXPSR_ORDR,
|
||||
DLVY_EXPSR_AT,
|
||||
DLVY_EXPSR_ORDR,
|
||||
RVW_EVL_SCRE_EXPSR_AT,
|
||||
RVW_EVL_SCRE_EXPSR_ORDR,
|
||||
ICON_EXPSR_AT,
|
||||
ICON_EXPSR_ORDR,
|
||||
REGUSR,
|
||||
REGIST_DT,
|
||||
UPDUSR,
|
||||
UPDT_DT
|
||||
FROM
|
||||
GC_GOODS_EXPSR_INFO
|
||||
WHERE
|
||||
1=1
|
||||
AND
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
<!-- 상품 정보 등록 -->
|
||||
<insert id="insertBOGoodsInfo"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO" >
|
||||
<selectKey keyProperty = "goodsExpsrInfoInnb" resultType = "String" order="BEFORE">
|
||||
SELECT IFNULL(MAX(GOODS_EXPSR_INFO_INNB),0) + 1
|
||||
FROM GC_GOODS_EXPSR_INFO
|
||||
</selectKey>
|
||||
INSERT
|
||||
INTO
|
||||
GC_GOODS_EXPSR_INFO (
|
||||
GOODS_EXPSR_INFO_INNB,
|
||||
SOPMAL_CD,
|
||||
GOODS_INFO_SETUP_SJ,
|
||||
<if test="goodsNmExpsrAt != null and goodsNmExpsrAt != ''">
|
||||
GOODS_NM_EXPSR_AT,
|
||||
</if>
|
||||
<if test="goodsNmExpsrOrdr != null and goodsNmExpsrOrdr != ''">
|
||||
GOODS_NM_EXPSR_ORDR,
|
||||
</if>
|
||||
<if test="reprsntDcExpsrAt != null and reprsntDcExpsrAt != ''">
|
||||
REPRSNT_DC_EXPSR_AT,
|
||||
</if>
|
||||
<if test="reprsntDcExpsrOrdr != null and reprsntDcExpsrOrdr != ''">
|
||||
REPRSNT_DC_EXPSR_ORDR,
|
||||
</if>
|
||||
<if test="pricExpsrAt != null and pricExpsrAt != ''">
|
||||
PRIC_EXPSR_AT,
|
||||
</if>
|
||||
<if test="pricExpsrOrdr != null and pricExpsrOrdr != ''">
|
||||
PRIC_EXPSR_ORDR,
|
||||
</if>
|
||||
<if test="dlvyExpsrAt != null and dlvyExpsrAt != ''">
|
||||
DLVY_EXPSR_AT,
|
||||
</if>
|
||||
<if test="dlvyExpsrOrdr != null and dlvyExpsrOrdr != ''">
|
||||
DLVY_EXPSR_ORDR,
|
||||
</if>
|
||||
<if test="rvwEvlScreExpsrAt != null and rvwEvlScreExpsrAt != ''">
|
||||
RVW_EVL_SCRE_EXPSR_AT,
|
||||
</if>
|
||||
<if test="rvwEvlScreExpsrOrdr != null and rvwEvlScreExpsrOrdr != ''">
|
||||
RVW_EVL_SCRE_EXPSR_ORDR,
|
||||
</if>
|
||||
<if test="iconExpsrAt != null and iconExpsrAt != ''">
|
||||
ICON_EXPSR_AT,
|
||||
</if>
|
||||
<if test="iconExpsrOrdr != null and iconExpsrOrdr != ''">
|
||||
ICON_EXPSR_ORDR,
|
||||
</if>
|
||||
USE_AT,
|
||||
REGUSR,
|
||||
REGIST_DT,
|
||||
UPDUSR,
|
||||
UPDT_DT
|
||||
)
|
||||
VALUES (
|
||||
#{goodsExpsrInfoInnb},
|
||||
#{sopmalCd},
|
||||
#{goodsInfoSetupSj},
|
||||
<if test="goodsNmExpsrAt != null and goodsNmExpsrAt != ''">
|
||||
#{goodsNmExpsrAt},
|
||||
</if>
|
||||
<if test="goodsNmExpsrOrdr != null and goodsNmExpsrOrdr != ''">
|
||||
#{goodsNmExpsrOrdr},
|
||||
</if>
|
||||
<if test="reprsntDcExpsrAt != null and reprsntDcExpsrAt != ''">
|
||||
#{reprsntDcExpsrAt},
|
||||
</if>
|
||||
<if test="reprsntDcExpsrOrdr != null and reprsntDcExpsrOrdr != ''">
|
||||
#{reprsntDcExpsrOrdr},
|
||||
</if>
|
||||
<if test="pricExpsrAt != null and pricExpsrAt != ''">
|
||||
#{pricExpsrAt},
|
||||
</if>
|
||||
<if test="pricExpsrOrdr != null and pricExpsrOrdr != ''">
|
||||
#{pricExpsrOrdr},
|
||||
</if>
|
||||
<if test="dlvyExpsrAt != null and dlvyExpsrAt != ''">
|
||||
#{dlvyExpsrAt},
|
||||
</if>
|
||||
<if test="dlvyExpsrOrdr != null and dlvyExpsrOrdr != ''">
|
||||
#{dlvyExpsrOrdr},
|
||||
</if>
|
||||
<if test="rvwEvlScreExpsrAt != null and rvwEvlScreExpsrAt != ''">
|
||||
#{rvwEvlScreExpsrAt},
|
||||
</if>
|
||||
<if test="rvwEvlScreExpsrOrdr != null and rvwEvlScreExpsrOrdr != ''">
|
||||
#{rvwEvlScreExpsrOrdr},
|
||||
</if>
|
||||
<if test="iconExpsrAt != null and iconExpsrAt != ''">
|
||||
#{iconExpsrAt},
|
||||
</if>
|
||||
<if test="iconExpsrOrdr != null and iconExpsrOrdr != ''">
|
||||
#{iconExpsrOrdr},
|
||||
</if>
|
||||
#{useAt},
|
||||
#{regusr},
|
||||
now(),
|
||||
#{regusr},
|
||||
now()
|
||||
)
|
||||
</insert>
|
||||
<!-- 상품 정보 수정 -->
|
||||
<update id="updateBOGoodsInfoDtl"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.bbs.bbs.vo.BOBbsVO">
|
||||
UPDATE
|
||||
GC_GOODS_EXPSR_INFO
|
||||
SET
|
||||
GOODS_INFO_SETUP_SJ = #{goodsInfoSetupSj},
|
||||
<if test="goodsNmExpsrAt != null and goodsNmExpsrAt != ''">
|
||||
GOODS_NM_EXPSR_AT = #{goodsNmExpsrAt},
|
||||
</if>
|
||||
<if test="goodsNmExpsrOrdr != null and goodsNmExpsrOrdr != ''">
|
||||
GOODS_NM_EXPSR_ORDR = #{goodsNmExpsrOrdr},
|
||||
</if>
|
||||
<if test="reprsntDcExpsrAt != null and reprsntDcExpsrAt != ''">
|
||||
REPRSNT_DC_EXPSR_AT = #{reprsntDcExpsrAt},
|
||||
</if>
|
||||
<if test="reprsntDcExpsrOrdr != null and reprsntDcExpsrOrdr != ''">
|
||||
REPRSNT_DC_EXPSR_ORDR = #{reprsntDcExpsrOrdr},
|
||||
</if>
|
||||
<if test="pricExpsrAt != null and pricExpsrAt != ''">
|
||||
PRIC_EXPSR_AT = #{pricExpsrAt},
|
||||
</if>
|
||||
<if test="pricExpsrOrdr != null and pricExpsrOrdr != ''">
|
||||
PRIC_EXPSR_ORDR = #{pricExpsrOrdr},
|
||||
</if>
|
||||
<if test="dlvyExpsrAt != null and dlvyExpsrAt != ''">
|
||||
DLVY_EXPSR_AT = #{dlvyExpsrAt},
|
||||
</if>
|
||||
<if test="dlvyExpsrOrdr != null and dlvyExpsrOrdr != ''">
|
||||
DLVY_EXPSR_ORDR = #{dlvyExpsrOrdr},
|
||||
</if>
|
||||
<if test="rvwEvlScreExpsrAt != null and rvwEvlScreExpsrAt != ''">
|
||||
RVW_EVL_SCRE_EXPSR_AT = #{rvwEvlScreExpsrAt},
|
||||
</if>
|
||||
<if test="rvwEvlScreExpsrOrdr != null and rvwEvlScreExpsrOrdr != ''">
|
||||
RVW_EVL_SCRE_EXPSR_ORDR = #{rvwEvlScreExpsrOrdr},
|
||||
</if>
|
||||
<if test="iconExpsrAt != null and iconExpsrAt != ''">
|
||||
ICON_EXPSR_AT = #{iconExpsrAt},
|
||||
</if>
|
||||
<if test="iconExpsrOrdr != null and iconExpsrOrdr != ''">
|
||||
ICON_EXPSR_ORDR = #{iconExpsrOrdr},
|
||||
</if>
|
||||
UPDUSR = #{updusr},
|
||||
UPDT_DT = now()
|
||||
WHERE
|
||||
1=1
|
||||
AND
|
||||
GOODS_EXPSR_INFO_INNB = #{goodsExpsrInfoInnb}
|
||||
</update>
|
||||
<!-- 상품정보 삭제 -->
|
||||
<update id="updateBOGoodsInfoDel"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO">
|
||||
UPDATE
|
||||
GC_GOODS_EXPSR_INFO
|
||||
SET
|
||||
USE_AT = 'N'
|
||||
WHERE
|
||||
1=1
|
||||
AND
|
||||
GOODS_EXPSR_INFO_INNB = #{goodsExpsrInfoInnb}
|
||||
|
||||
|
||||
</update>
|
||||
<!-- 상품정보 삭제 -->
|
||||
<!-- <delete id="deleteBOGoodsInfo"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO">
|
||||
DELETE FROM
|
||||
GC_GOODS_EXPSR_INFO
|
||||
WHERE
|
||||
1=1
|
||||
AND
|
||||
GOODS_EXPSR_INFO_INNB = #{goodsExpsrInfoInnb}
|
||||
|
||||
|
||||
</delete> -->
|
||||
|
||||
<select id="selectBOGoodsInfoListNotLimit" resultType = "DataMap">
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, BM.*
|
||||
FROM (
|
||||
SELECT
|
||||
GOODS_EXPSR_INFO_INNB,
|
||||
GOODS_INFO_SETUP_SJ,
|
||||
GOODS_NM_EXPSR_AT,
|
||||
GOODS_NM_EXPSR_ORDR,
|
||||
REPRSNT_DC_EXPSR_AT,
|
||||
REPRSNT_DC_EXPSR_ORDR,
|
||||
PRIC_EXPSR_AT,
|
||||
PRIC_EXPSR_ORDR,
|
||||
DLVY_EXPSR_AT,
|
||||
DLVY_EXPSR_ORDR,
|
||||
RVW_EVL_SCRE_EXPSR_AT,
|
||||
RVW_EVL_SCRE_EXPSR_ORDR,
|
||||
ICON_EXPSR_AT,
|
||||
ICON_EXPSR_ORDR,
|
||||
REGUSR,
|
||||
REGIST_DT,
|
||||
UPDUSR,
|
||||
UPDT_DT
|
||||
FROM
|
||||
GC_GOODS_EXPSR_INFO
|
||||
WHERE
|
||||
USE_AT = 'Y'
|
||||
) BM
|
||||
WHERE
|
||||
(@ROWNUM:=0)=0
|
||||
ORDER BY RNUM DESC
|
||||
) PV
|
||||
WHERE 1=1
|
||||
</select>
|
||||
</mapper>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,87 @@
|
||||
<?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.login.mapper.LoginMapper">
|
||||
|
||||
|
||||
<!--회원 정보조회-->
|
||||
<select id="selectMbrInfo" parameterType="com.wb.domainserver.domain.gcone.login.vo.LoginRequest" resultType="com.wb.domainserver.domain.gcone.login.vo.LoginUser">
|
||||
SELECT GM.MBR_INNB AS USER_INNB
|
||||
, GM.MBR_ID AS USER_ID
|
||||
, GM.MBR_DV_CD
|
||||
, GM.MBR_NM AS USER_NAME
|
||||
, GM.MBTLNB
|
||||
, GM.MBR_PASSWORD AS PASSWORD
|
||||
, #{sopmalCd} AS SOPMAL_CD
|
||||
, '01' AS SYS_DV_CD
|
||||
FROM GC_MEMBER GM
|
||||
WHERE 1=1
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(username)">
|
||||
AND GM.MBR_ID = #{username}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(userInnb) and userInnb != 0 ">
|
||||
AND GM.MBR_INNB = #{userInnb}
|
||||
</if>
|
||||
AND GM.USE_AT = 'Y'
|
||||
AND GM.MBR_DV_CD = #{mbrDvCd}
|
||||
</select>
|
||||
|
||||
<!--회원 마지막 로그인일시 업데이트 -->
|
||||
<update id="updateMbrLastLoginDt" parameterType="com.wb.domainserver.domain.gcone.login.vo.LoginUser">
|
||||
UPDATE GC_MEMBER_SITE
|
||||
SET VISIT_CNT = VISIT_CNT+1
|
||||
, LAST_LOGIN_DT = NOW()
|
||||
, FRST_LOGIN_DT = CASE WHEN FRST_LOGIN_DT IS NULL THEN NOW() ELSE FRST_LOGIN_DT END
|
||||
WHERE MBR_INNB = #{userInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
|
||||
</update>
|
||||
|
||||
<!--관리자 정보조회-->
|
||||
<select id="selectMngrInfo" parameterType="com.wb.domainserver.domain.gcone.login.vo.LoginRequest" resultType="com.wb.domainserver.domain.gcone.login.vo.LoginUser">
|
||||
SELECT
|
||||
MNGR_INNB AS USER_INNB
|
||||
,MNGR_NM AS USER_NAME
|
||||
,MNGR_ID AS USER_ID
|
||||
,PASSWORD
|
||||
,PARTNM
|
||||
,EMAIL
|
||||
,TELNB
|
||||
,MBTLNB
|
||||
, MNGR_DV
|
||||
,(SELECT SYS_DV_CD FROM site WHERE #{accessUrl} LIKE CONCAT('%',URL,'%')) AS SYS_DV_CD
|
||||
,#{sopmalCd} AS SOPMAL_CD
|
||||
FROM GC_MANAGER
|
||||
WHERE 1=1
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(username)">
|
||||
AND MNGR_ID = #{username}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(userInnb) and userInnb != 0 ">
|
||||
AND MNGR_INNB = #{userInnb}
|
||||
</if>
|
||||
AND MNGR_STTUS_CD = '01'
|
||||
</select>
|
||||
|
||||
<!--관리자 마지막 로그인일시 업데이트 -->
|
||||
<update id="updateMngrLastLoginDt" parameterType="com.wb.domainserver.domain.gcone.login.vo.LoginUser">
|
||||
UPDATE GC_MANAGER
|
||||
SET LAST_CONECT_DT = NOW()
|
||||
WHERE MNGR_ID = #{userId}
|
||||
</update>
|
||||
|
||||
<!--관리자 접속이력 저장-->
|
||||
<insert id="insertMngrConectLog" parameterType="com.wb.domainserver.domain.gcone.login.vo.LoginUser">
|
||||
INSERT INTO
|
||||
GC_MANAGER_CONECT_LOG
|
||||
(MNGR_INNB
|
||||
, CONECT_IP
|
||||
, CONECT_BRWSR
|
||||
, CONECT_DT)
|
||||
VALUES (
|
||||
#{userInnb} -- 관리자 고유번호
|
||||
, #{conectIp} -- 접속IP
|
||||
, #{conectBrwsr} -- 접속 브라우저
|
||||
,NOW() -- 접속일시
|
||||
)
|
||||
|
||||
</insert>
|
||||
</mapper>
|
||||
@@ -0,0 +1 @@
|
||||
<?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.markt.markt.mapper.BOMarktMapper"></mapper>
|
||||
@@ -0,0 +1,40 @@
|
||||
<?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.match.mapper.BOMatchMemberMapper">
|
||||
|
||||
<resultMap id="matchMemberResultMap" type="com.wb.domainserver.domain.gcone.match.vo.BOMatchMemberVO">
|
||||
<result property="mbtlnb" column="MBTLNB"/>
|
||||
<result property="mbrInnb" column="MBR_INNB"/>
|
||||
<result property="cnt" column="cnt"/>
|
||||
<result property="joinMthCd" column="JOIN_MTH_CD"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectMatchMember" resultMap="matchMemberResultMap">
|
||||
SELECT
|
||||
MBTLNB,
|
||||
MIN(MBR_INNB) AS MBR_INNB,
|
||||
SUM(cnt) AS cnt
|
||||
FROM (
|
||||
SELECT REPLACE(AES_DECRYPT(UNHEX(M.MBTLNB), #{secretKey}), '-', '') AS MBTLNB,
|
||||
M.MBR_INNB AS MBR_INNB,
|
||||
COUNT(O.ORDR_INNB) AS cnt
|
||||
FROM GC_MEMBER M
|
||||
LEFT JOIN GC_ORDER O
|
||||
ON O.MBR_INNB = M.MBR_INNB
|
||||
AND O.MBR_DV_CD = (SELECT CASE WHEN SOPMAL_TY_CD = '02' THEN SOPMAL_CD ELSE 'GC' END FROM GC_SHOP WHERE SOPMAL_CD = #{sopmalCd})
|
||||
AND O.ORDR_STTUS_CD BETWEEN 25 AND 75
|
||||
WHERE M.USE_AT = 'Y'
|
||||
AND M.MBTLNB IN
|
||||
<foreach item="item" collection="telnbList" open="(" separator="," close=")">
|
||||
HEX(AES_ENCRYPT(REPLACE(#{item}, '-', ''), #{secretKey}))
|
||||
</foreach>
|
||||
AND M.MBR_DV_CD = (SELECT CASE WHEN SOPMAL_TY_CD = '02' THEN SOPMAL_CD ELSE 'GC' END FROM GC_SHOP WHERE SOPMAL_CD = #{sopmalCd})
|
||||
GROUP BY MBTLNB, MBR_INNB
|
||||
) T
|
||||
GROUP BY MBTLNB
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
|
||||
4550
src/main/resources/mybatis/xml/mapper/gcone/mbr/mbr/BOMbrMapper.xml
Normal file
4550
src/main/resources/mybatis/xml/mapper/gcone/mbr/mbr/BOMbrMapper.xml
Normal file
File diff suppressed because it is too large
Load Diff
2102
src/main/resources/mybatis/xml/mapper/gcone/mbr/mlg/BOMlgMapper.xml
Normal file
2102
src/main/resources/mybatis/xml/mapper/gcone/mbr/mlg/BOMlgMapper.xml
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,443 @@
|
||||
<?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.mngrstr.mapper.BOMngrStrMapper">
|
||||
|
||||
<!-- 공통코드 조회 -->
|
||||
<select id = "selectBOMngrStrComnCd"
|
||||
parameterType="java.lang.String"
|
||||
resultType = "dataMap">
|
||||
<![CDATA[
|
||||
SELECT CD,
|
||||
CD_NM,
|
||||
CD_DV
|
||||
FROM GC_CODE
|
||||
WHERE GROUP_CD = #{param}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매장 검색 조건 WHERE -->
|
||||
<sql id="mngrStrListWhere">
|
||||
<![CDATA[
|
||||
WHERE 1 = 1
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(manageCpr)">
|
||||
<![CDATA[
|
||||
AND gs.MANAGE_CPR = #{manageCpr}
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(reprsntBrand)">
|
||||
<![CDATA[
|
||||
AND gs.REPRSNT_BRAND = #{reprsntBrand}
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(trtmntBrand)">
|
||||
<![CDATA[
|
||||
AND (
|
||||
]]>
|
||||
<foreach collection="trtmntBrand" item="trtmntBrand" open="" separator="OR" close="">
|
||||
<![CDATA[
|
||||
gs.TRTMNT_BRAND LIKE CONCAT('%', #{trtmntBrand}, '%')
|
||||
]]>
|
||||
</foreach>
|
||||
<![CDATA[
|
||||
)
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(strEstblDvCd)">
|
||||
<![CDATA[
|
||||
AND gs.STR_ESTBL_DV_CD IN
|
||||
]]>
|
||||
<foreach collection="strEstblDvCd" item="strEstblDvCd" open="(" separator="," close=")">
|
||||
<![CDATA[
|
||||
#{strEstblDvCd}
|
||||
]]>
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(strOperDv)">
|
||||
<![CDATA[
|
||||
AND gs.STR_OPER_DV IN
|
||||
]]>
|
||||
<foreach collection="strOperDv" item="strOperDv" open="(" separator="," close=")">
|
||||
<![CDATA[
|
||||
#{strOperDv}
|
||||
]]>
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(tentSttus)">
|
||||
<![CDATA[
|
||||
AND gs.TENT_STTUS IN
|
||||
]]>
|
||||
<foreach collection="tentSttus" item="tentSttus" open="(" separator="," close=")">
|
||||
<![CDATA[
|
||||
#{tentSttus}
|
||||
]]>
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(posCdDvVal)">
|
||||
<![CDATA[
|
||||
AND gs.POS_CD_DV_VAL = #{posCdDvVal}
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(posCdPassivInputVal)">
|
||||
<![CDATA[
|
||||
AND gs.pos_Cd_Passiv_Input_Val = #{posCdPassivInputVal}
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(tentcpnNm)">
|
||||
<![CDATA[
|
||||
AND gs.TENTCPN_NM like CONCAT('%', #{tentcpnNm}, '%')
|
||||
]]>
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<!-- 매장 개수 조회 -->
|
||||
<select id = "selectBOMngrStrListCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.mngrstr.vo.BOMngrStrVO"
|
||||
resultType = "java.lang.Integer">
|
||||
<![CDATA[
|
||||
SELECT COUNT(1)
|
||||
FROM GC_STORE gs
|
||||
]]>
|
||||
<include refid="mngrStrListWhere"/>
|
||||
</select>
|
||||
|
||||
<!-- 매장 목록 조회 -->
|
||||
<select id = "selectBOMngrStrListInqire"
|
||||
parameterType="com.wb.domainserver.domain.gcone.mngrstr.vo.BOMngrStrVO"
|
||||
resultType = "dataMap">
|
||||
<![CDATA[
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM,
|
||||
TB.*
|
||||
FROM (
|
||||
SELECT gs.STR_INNB,
|
||||
FN_GET_COMMCODE_NAME('MANAGE_CPR', gs.MANAGE_CPR) AS MANAGE_CPR,
|
||||
FN_GET_COMMCODE_NAME('REPRSNT_BRAND', gs.REPRSNT_BRAND) AS REPRSNT_BRAND,
|
||||
GROUP_CONCAT(gc.CD_NM ORDER BY FIND_IN_SET(gc.CD, REPLACE(gs.TRTMNT_BRAND, '/', ',')) SEPARATOR '/') AS TRTMNT_BRAND,
|
||||
FN_GET_COMMCODE_NAME('STR_DV', gs.STR_OPER_DV) AS STR_OPER_DV,
|
||||
TENT_STTUS AS TENT_STTUS_CD,
|
||||
FN_GET_COMMCODE_NAME('TENT_STTUS', gs.TENT_STTUS) AS TENT_STTUS,
|
||||
DATE_FORMAT(gs.OPBIZ_DE, '%Y-%m-%d') AS OPBIZ_DE,
|
||||
DATE_FORMAT(gs.CLSTR_DE, '%Y-%m-%d') AS CLSTR_DE,
|
||||
gs.POS_CD_DV_VAL,
|
||||
gs.POS_CD_PASSIV_INPUT_VAL,
|
||||
gs.TENTCPN_ID,
|
||||
gs.TENTCPN_NM,
|
||||
gs.REGIST_DT
|
||||
FROM GC_STORE gs
|
||||
LEFT JOIN GC_CODE gc
|
||||
ON FIND_IN_SET(gc.CD, REPLACE(gs.TRTMNT_BRAND, '/', ',')) > 0
|
||||
AND gc.GROUP_CD = 'TRTMNT_BRAND'
|
||||
]]>
|
||||
<include refid="mngrStrListWhere"/>
|
||||
<![CDATA[
|
||||
GROUP BY gs.STR_INNB,
|
||||
MANAGE_CPR,
|
||||
REPRSNT_BRAND,
|
||||
gs.TRTMNT_BRAND,
|
||||
STR_OPER_DV,
|
||||
TENT_STTUS_CD,
|
||||
TENT_STTUS,
|
||||
OPBIZ_DE,
|
||||
CLSTR_DE,
|
||||
gs.POS_CD_DV_VAL,
|
||||
gs.POS_CD_PASSIV_INPUT_VAL,
|
||||
gs.TENTCPN_ID,
|
||||
gs.TENTCPN_NM
|
||||
) TB
|
||||
WHERE (@rownum:=0)=0
|
||||
ORDER BY
|
||||
]]>
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(sortDv)">
|
||||
<![CDATA[
|
||||
TB.REGIST_DT DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(sortDv, 'registDt')">
|
||||
<![CDATA[
|
||||
TB.REGIST_DT DESC
|
||||
]]>
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(sortDv, 'tentcpnNm')">
|
||||
<![CDATA[
|
||||
TB.TENTCPN_NM ASC
|
||||
]]>
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(sortDv, 'tentcpnId')">
|
||||
<![CDATA[
|
||||
TB.TENTCPN_ID ASC
|
||||
]]>
|
||||
</when>
|
||||
</choose>
|
||||
<![CDATA[
|
||||
) PV
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매장 상세 조회 -->
|
||||
<select id = "selectBOMngrStrDtlInqire"
|
||||
parameterType="com.wb.domainserver.domain.gcone.mngrstr.vo.BOMngrStrVO"
|
||||
resultType = "dataMap">
|
||||
<![CDATA[
|
||||
SELECT gs.STR_INNB,
|
||||
-- 기본정보
|
||||
DATE_FORMAT(gs.REGIST_DT, '%Y-%m-%d %H:%i:%s') AS REGIST_DT,
|
||||
DATE_FORMAT(gs.LAST_LOGIN_DT, '%Y-%m-%d %H:%i:%s') AS LAST_LOGIN_DT,
|
||||
FN_GET_COMMCODE_NAME('MANAGE_CPR', gs.MANAGE_CPR) AS MANAGE_CPR,
|
||||
gs.MANAGE_CPR AS MANAGE_CPR_CD,
|
||||
FN_GET_COMMCODE_NAME('REPRSNT_BRAND', gs.REPRSNT_BRAND) AS REPRSNT_BRAND,
|
||||
gs.REPRSNT_BRAND AS REPRSNT_BRAND_CD,
|
||||
GROUP_CONCAT(gc.CD_NM ORDER BY FIND_IN_SET(gc.CD, REPLACE(gs.TRTMNT_BRAND, '/', ',')) SEPARATOR ' ■') AS TRTMNT_BRAND,
|
||||
FN_GET_COMMCODE_NAME('POS_HDQRTRS', gs.POS_CD_DV_VAL) AS POS_HDQRTRS,
|
||||
gs.POS_CD_DV_VAL,
|
||||
gs.POS_CD_PASSIV_INPUT_VAL,
|
||||
gs.STR_CD,
|
||||
FN_GET_COMMCODE_NAME('STR_ESTBL_DV', gs.STR_ESTBL_DV_CD) AS STR_ESTBL_DV_CD,
|
||||
FN_GET_COMMCODE_NAME('STR_DV', gs.STR_OPER_DV) AS STR_OPER_DV,
|
||||
FN_GET_COMMCODE_NAME('STR_KND', gs.DV) AS DV,
|
||||
FN_GET_COMMCODE_NAME('STR_KND_STTUS', gs.STR_KND_DTL) AS STR_KND_DTL,
|
||||
gs.SITE_EXPSR_AT,
|
||||
FN_GET_COMMCODE_NAME('TENT_STTUS', gs.TENT_STTUS) AS TENT_STTUS,
|
||||
DATE_FORMAT(gs.OPBIZ_DE, '%Y-%m-%d') AS OPBIZ_DE,
|
||||
DATE_FORMAT(gs.CLSTR_DE, '%Y-%m-%d') AS CLSTR_DE,
|
||||
gs.AW_LOGIN_AT,
|
||||
gs.TENTCPN_NM,
|
||||
gs.STR_NM,
|
||||
gs.TENTCPN_ID,
|
||||
gs.TENTCPN_PASSWORD,
|
||||
-- 매장정보
|
||||
gs.CHR_DSPTCH_NB,
|
||||
gs.STR_TELNB,
|
||||
gs.LOC,
|
||||
gs.CTY_DO,
|
||||
gs.CTY_GUN_GU,
|
||||
gs.STR_ADRES_DV,
|
||||
gs.STR_ZIP,
|
||||
gs.STR_ADRES,
|
||||
gs.STR_RNM_ADRES,
|
||||
gs.STR_DTL_ADRES,
|
||||
-- 지도
|
||||
gs.LA,
|
||||
gs.LO,
|
||||
gs.HTGH_PBTRNSP,
|
||||
gs.HTGH_PVTCAR,
|
||||
gs.HVOF_DE,
|
||||
gs.HVOF_DE_ADIT,
|
||||
gs.BSN_TME,
|
||||
-- 매장이미지
|
||||
gs.STR_REPRSNT_IMG,
|
||||
gs.STR_DTL_IMG,
|
||||
-- 사업자정보
|
||||
gs.ENTRPS_NM,
|
||||
gs.BSNM_NB,
|
||||
gs.REPRSNTVNM,
|
||||
FN_GET_COMMCODE_NAME('INDVDL_CPR_DV', gs.INDVDL_CPR_DV) AS INDVDL_CPR_DV,
|
||||
gs.BIZCND_INDUTY,
|
||||
gs.SVC,
|
||||
-- 사업자등록증 사본
|
||||
gs.ADRES_DV,
|
||||
gs.ENTRPS_ZIP,
|
||||
gs.ENTRPS_ADRES,
|
||||
gs.RNM_ADRES,
|
||||
gs.ENTRPS_DTL_ADRES,
|
||||
gs.COMM_SLE_DCL_NB,
|
||||
gs.SELER_TELNB,
|
||||
gs.SELER_EMAIL,
|
||||
gs.SELER_FAX,
|
||||
-- 대표자정보
|
||||
gs.REPRSNTV_INFO_REPRSNTVNM,
|
||||
gs.REPRSNTV_INFO_TELNB,
|
||||
gs.REPRSNTV_INFO_ADRES_DV,
|
||||
gs.REPRSNTV_INFO_ZIP,
|
||||
gs.REPRSNTV_INFO_ADRES,
|
||||
gs.REPRSNTV_INFO_RNM_ADRES,
|
||||
gs.REPRSNTV_INFO_DTL_ADRES,
|
||||
-- 고정지출비용
|
||||
gs.FIXING_EXPNDTR_RNTCHRG,
|
||||
gs.FIXING_EXPNDTR_MANAGECT,
|
||||
gs.FIXING_EXPNDTR_RYALTY,
|
||||
gs.FIXING_EXPNDTR_SYS_RNTFEE,
|
||||
gs.FIXING_EXPNDTR_LBCT,
|
||||
gs.FIXING_EXPNDTR_CARD_FEE,
|
||||
gs.FIXING_EXPNDTR_PRCT,
|
||||
gs.FIXING_EXPNDTR_STR_OPERCT,
|
||||
-- 처리내역
|
||||
gs.UPDT_DTLS
|
||||
FROM GC_STORE gs
|
||||
LEFT JOIN GC_CODE gc
|
||||
ON FIND_IN_SET(gc.CD, REPLACE(gs.TRTMNT_BRAND, '/', ',')) > 0
|
||||
AND gc.GROUP_CD = 'TRTMNT_BRAND'
|
||||
WHERE 1 = 1
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(strInnb)">
|
||||
<![CDATA[
|
||||
AND gs.STR_INNB = #{strInnb}
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(posCdPassivInputVal)">
|
||||
<![CDATA[
|
||||
AND CONCAT(gs.POS_CD_DV_VAL, gs.POS_CD_PASSIV_INPUT_VAL) = #{posCdPassivInputVal}
|
||||
]]>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY gs.STR_INNB,
|
||||
-- 기본정보
|
||||
REGIST_DT,
|
||||
LAST_LOGIN_DT,
|
||||
MANAGE_CPR,
|
||||
REPRSNT_BRAND,
|
||||
TRTMNT_BRAND,
|
||||
POS_HDQRTRS,
|
||||
gs.POS_CD_DV_VAL,
|
||||
gs.POS_CD_PASSIV_INPUT_VAL,
|
||||
gs.STR_CD,
|
||||
STR_ESTBL_DV_CD,
|
||||
STR_OPER_DV,
|
||||
DV,
|
||||
STR_KND_DTL,
|
||||
gs.SITE_EXPSR_AT,
|
||||
TENT_STTUS,
|
||||
OPBIZ_DE,
|
||||
CLSTR_DE,
|
||||
gs.AW_LOGIN_AT,
|
||||
gs.TENTCPN_NM,
|
||||
gs.STR_NM,
|
||||
gs.TENTCPN_ID,
|
||||
-- 매장정보
|
||||
gs.CHR_DSPTCH_NB,
|
||||
gs.STR_TELNB,
|
||||
gs.LOC,
|
||||
gs.CTY_DO,
|
||||
gs.CTY_GUN_GU,
|
||||
gs.STR_ADRES_DV,
|
||||
gs.STR_ZIP,
|
||||
gs.STR_ADRES,
|
||||
gs.STR_RNM_ADRES,
|
||||
gs.STR_DTL_ADRES,
|
||||
-- 지도
|
||||
gs.LA,
|
||||
gs.LO,
|
||||
gs.HTGH_PBTRNSP,
|
||||
gs.HTGH_PVTCAR,
|
||||
gs.HVOF_DE,
|
||||
gs.HVOF_DE_ADIT,
|
||||
gs.BSN_TME,
|
||||
-- 매장이미지
|
||||
gs.STR_REPRSNT_IMG,
|
||||
gs.STR_DTL_IMG,
|
||||
-- 사업자정보
|
||||
gs.ENTRPS_NM,
|
||||
gs.BSNM_NB,
|
||||
gs.REPRSNTVNM,
|
||||
INDVDL_CPR_DV,
|
||||
gs.BIZCND_INDUTY,
|
||||
gs.SVC,
|
||||
-- 사업자등록증 사본
|
||||
gs.ADRES_DV,
|
||||
gs.ENTRPS_ZIP,
|
||||
gs.ENTRPS_ADRES,
|
||||
gs.RNM_ADRES,
|
||||
gs.ENTRPS_DTL_ADRES,
|
||||
gs.COMM_SLE_DCL_NB,
|
||||
gs.SELER_TELNB,
|
||||
gs.SELER_EMAIL,
|
||||
gs.SELER_FAX,
|
||||
-- 대표자정보
|
||||
gs.REPRSNTV_INFO_REPRSNTVNM,
|
||||
gs.REPRSNTV_INFO_TELNB,
|
||||
gs.REPRSNTV_INFO_ADRES_DV,
|
||||
gs.REPRSNTV_INFO_ZIP,
|
||||
gs.REPRSNTV_INFO_ADRES,
|
||||
gs.REPRSNTV_INFO_RNM_ADRES,
|
||||
gs.REPRSNTV_INFO_DTL_ADRES,
|
||||
-- 고정지출비용
|
||||
gs.FIXING_EXPNDTR_RNTCHRG,
|
||||
gs.FIXING_EXPNDTR_MANAGECT,
|
||||
gs.FIXING_EXPNDTR_RYALTY,
|
||||
gs.FIXING_EXPNDTR_SYS_RNTFEE,
|
||||
gs.FIXING_EXPNDTR_LBCT,
|
||||
gs.FIXING_EXPNDTR_CARD_FEE,
|
||||
gs.FIXING_EXPNDTR_PRCT,
|
||||
gs.FIXING_EXPNDTR_STR_OPERCT,
|
||||
-- 처리내역
|
||||
gs.UPDT_DTLS
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--매장 아이디 중복 조회 -->
|
||||
<select id = "selectBOIdDplctCnfirm"
|
||||
parameterType="com.wb.domainserver.domain.gcone.mngrstr.vo.BOMngrStrVO"
|
||||
resultType = "Integer">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(1)
|
||||
FROM
|
||||
GC_STORE
|
||||
WHERE 1 = 1
|
||||
AND TENTCPN_ID = #{tentcpnId}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매장 상세 수정 -->
|
||||
<update id="updateBOMngrStrDtlU"
|
||||
parameterType="com.wb.domainserver.domain.gcone.mngrstr.vo.BOMngrStrVO">
|
||||
<![CDATA[
|
||||
UPDATE
|
||||
GC_STORE
|
||||
SET
|
||||
SITE_EXPSR_AT = #{siteExpsrAt},
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(awLoginAt)">
|
||||
<![CDATA[
|
||||
AW_LOGIN_AT = #{awLoginAt},
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(changeIdAt, 'Y')">
|
||||
<![CDATA[
|
||||
TENTCPN_ID = #{tentcpnId},
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(changePasswordAt, 'Y')">
|
||||
<![CDATA[
|
||||
TENTCPN_PASSWORD = #{newPassword},
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(chrDsptchNb)">
|
||||
<![CDATA[
|
||||
CHR_DSPTCH_NB = #{chrDsptchNb},
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(strReprsntImg)">
|
||||
<![CDATA[
|
||||
STR_REPRSNT_IMG = null,
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(strReprsntImg)">
|
||||
<![CDATA[
|
||||
STR_REPRSNT_IMG = #{strReprsntImg},
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(strDtlImg)">
|
||||
<![CDATA[
|
||||
STR_DTL_IMG = null,
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(strDtlImg)">
|
||||
<![CDATA[
|
||||
STR_DTL_IMG = #{strDtlImg},
|
||||
]]>
|
||||
</if>
|
||||
<![CDATA[
|
||||
HVOF_DE = #{hvofDe},
|
||||
HVOF_DE_ADIT = #{hvofDeAdit},
|
||||
BSN_TME = #{bsnTme},
|
||||
UPDUSR = #{updusr},
|
||||
UPDT_DT = SYSDATE()
|
||||
WHERE 1 = 1
|
||||
AND STR_INNB = #{strInnb}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
@@ -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>
|
||||
@@ -0,0 +1,517 @@
|
||||
<?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.ordr.atmcrcpmny.mapper.BOAtmcrcpmnyMapper">
|
||||
|
||||
<!-- 입금내역 목록 조회 FROM 절 -->
|
||||
<sql id="selectBOAtmcRcpmnyDtlsListInqireFrom">
|
||||
<![CDATA[
|
||||
FROM TBLBANK T
|
||||
LEFT JOIN GC_ORDER_SETLE S
|
||||
ON T.SOPMAL_CD = S.SOPMAL_CD
|
||||
AND T.ORDR_INNB = S.ORDR_INNB
|
||||
LEFT JOIN GC_ORDER O
|
||||
ON T.SOPMAL_CD = O.SOPMAL_CD
|
||||
AND T.ORDR_INNB = O.ORDR_INNB
|
||||
LEFT JOIN GC_MEMO M
|
||||
ON T.SOPMAL_CD = M.SOPMAL_CD
|
||||
AND T.Bkcode = M.BK_CODE
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<!-- 입금내역 목록 조회 WHERE 절 -->
|
||||
<sql id="selectBOAtmcRcpmnyDtlsListInqireWhere">
|
||||
<![CDATA[
|
||||
WHERE 1=1
|
||||
AND T.SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(searchWord)">
|
||||
<![CDATA[
|
||||
AND (
|
||||
T.BKJUKYO LIKE CONCAT('%', #{searchWord}, '%') OR
|
||||
T.BKNAME LIKE CONCAT('%', #{searchWord}, '%') OR
|
||||
T.BKINPUT LIKE CONCAT('%', #{searchWord}, '%') OR
|
||||
T.ORDR_INNB LIKE CONCAT('%', #{searchWord}, '%')
|
||||
)
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(searchAccount)">
|
||||
<choose>
|
||||
<when test="searchAccount=='all'">
|
||||
AND T.BKACCTNO LIKE CONCAT('%', '', '%')
|
||||
</when>
|
||||
<otherwise>
|
||||
AND T.BKACCTNO LIKE CONCAT('%', #{searchAccount}, '%')
|
||||
</otherwise>
|
||||
</choose>
|
||||
</if>
|
||||
|
||||
<if test='@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStartDate) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndDate)'>
|
||||
AND T.BKDATE BETWEEN REPLACE(#{srchStartDate}, '-', '') AND REPLACE(#{srchEndDate}, '-', '')
|
||||
</if>
|
||||
|
||||
<!-- 입금 확인 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStatus)">
|
||||
<![CDATA[
|
||||
AND
|
||||
]]>
|
||||
<foreach collection="srchStatus" item="srchStatus" open="(" close=")" separator="OR">
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchStatus, 'N')">
|
||||
<![CDATA[
|
||||
O.AUTODEPOSIT_TY IS NULL
|
||||
]]>
|
||||
</when>
|
||||
<otherwise>
|
||||
<![CDATA[
|
||||
O.AUTODEPOSIT_TY = #{srchStatus}
|
||||
]]>
|
||||
</otherwise>
|
||||
</choose>
|
||||
</foreach>
|
||||
</if>
|
||||
ORDER BY BKDATE DESC , BKTIME DESC
|
||||
|
||||
</sql>
|
||||
|
||||
<!-- 입금내역 목록 건수 조회 -->
|
||||
<select id = "selectBOAtmcRcpmnyDtlsListCnt"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO"
|
||||
resultType="java.lang.Integer">
|
||||
SELECT COUNT(1)
|
||||
FROM (
|
||||
SELECT
|
||||
T.BKDATE
|
||||
<include refid = "selectBOAtmcRcpmnyDtlsListInqireFrom"/>
|
||||
<include refid = "selectBOAtmcRcpmnyDtlsListInqireWhere"/>
|
||||
) AS A
|
||||
</select>
|
||||
|
||||
<!-- 입금내역 목록 조회 -->
|
||||
<select id="selectBOAtmcRcpmnyDtlsListInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO"
|
||||
resultType = "dataMap">
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, TB.*
|
||||
FROM (
|
||||
SELECT
|
||||
T.BKID,
|
||||
T.BKDATE,
|
||||
T.BKNAME,
|
||||
T.BKACCTNO,
|
||||
T.BKJUKYO,
|
||||
T.BKINPUT,
|
||||
T.BKTIME,
|
||||
T.SOPMAL_CD,
|
||||
T.ORDR_INNB,
|
||||
T.BKCODE,
|
||||
S.SETLE_DT,
|
||||
S.MEMOR_SETLE_AT,
|
||||
M.MEMO_CN,
|
||||
O.AUTODEPOSIT_TY,
|
||||
S.SETLE_AMT,
|
||||
S.BNNK_NM,
|
||||
S.DPSTR_NM,
|
||||
S.RCPMNY_ACNTNB,
|
||||
S.RCPMNYER_NM
|
||||
<include refid = "selectBOAtmcRcpmnyDtlsListInqireFrom"/>
|
||||
<include refid = "selectBOAtmcRcpmnyDtlsListInqireWhere"/>
|
||||
<![CDATA[
|
||||
) TB
|
||||
WHERE (@rownum:=0)=0
|
||||
) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 자동입금확인 메모 테이블 글 유무 조회 -->
|
||||
<select id="selectBORcpmnyDtlsMngrMemoRegistCnt"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmMemoVO"
|
||||
resultType="java.lang.Integer">
|
||||
SELECT COUNT(*)
|
||||
FROM GC_MEMO
|
||||
WHERE 1=1
|
||||
AND BK_CODE = #{bkcode}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!-- 자동입금확인 메모 글 작성 insert or update -->
|
||||
<insert id="insertBORcpmnyDtlsMngrMemoRegist"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmMemoVO">
|
||||
|
||||
<choose>
|
||||
<when test="insertOrUpdate > 0">
|
||||
<![CDATA[
|
||||
UPDATE GC_MEMO
|
||||
SET MEMO_CN = TRIM(#{memoCn}),
|
||||
UPDT_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND BK_CODE = #{bkcode}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</when>
|
||||
<otherwise>
|
||||
<![CDATA[
|
||||
INSERT INTO GC_MEMO (
|
||||
MEMO_SNB,
|
||||
SOPMAL_CD,
|
||||
BK_CODE,
|
||||
MEMO_CN,
|
||||
UPDT_DT)
|
||||
SELECT
|
||||
COALESCE(MAX(MEMO_SNB), 0) + 1,
|
||||
#{sopmalCd},
|
||||
#{bkcode},
|
||||
TRIM(#{memoCn}),
|
||||
SYSDATE()
|
||||
FROM GC_MEMO
|
||||
]]>
|
||||
</otherwise>
|
||||
</choose>
|
||||
</insert>
|
||||
|
||||
<!-- 입금내역 추가 -->
|
||||
<insert id="insertBORcpmnyDtlsColct"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO">
|
||||
|
||||
<selectKey order="BEFORE" keyProperty="bkid" resultType="java.lang.Integer">
|
||||
<![CDATA[
|
||||
SELECT IFNULL(MAX(BKID), 0)+1
|
||||
FROM TBLBANK
|
||||
]]>
|
||||
</selectKey>
|
||||
|
||||
<![CDATA[
|
||||
INSERT INTO TBLBANK (
|
||||
BKID,
|
||||
BKACCTNO,
|
||||
BKDATE,
|
||||
BKJUKYO,
|
||||
BKINPUT,
|
||||
BKOUTPUT,
|
||||
BKCODE,
|
||||
MID,
|
||||
BKNAME,
|
||||
BKTIME,
|
||||
BKCONTENT,
|
||||
BKETC,
|
||||
BKJANGO,
|
||||
BKXFERDATETIME,
|
||||
ORDR_INNB,
|
||||
ORDR_SETLE_INNB
|
||||
)
|
||||
VALUES (
|
||||
#{bkid},
|
||||
#{bkacctno},
|
||||
#{bkdate},
|
||||
#{bkjukyo},
|
||||
#{bkinput},
|
||||
#{bkoutput},
|
||||
#{bkcode},
|
||||
#{mid},
|
||||
#{bkname},
|
||||
#{bktime},
|
||||
#{bkcontent},
|
||||
#{bketc},
|
||||
#{bkjango},
|
||||
DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s'),
|
||||
"0",
|
||||
"0"
|
||||
)
|
||||
]]>
|
||||
|
||||
</insert>
|
||||
|
||||
<!-- 입금내역 자동 매칭 될 데이터 리스트 조회 -->
|
||||
<select id="selectBORcpmnyCnfirmExecut"
|
||||
parameterType="com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO"
|
||||
resultType="com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BKID,
|
||||
BKACCTNO,
|
||||
BKDATE,
|
||||
BKJUKYO,
|
||||
BKINPUT,
|
||||
BKTIME,
|
||||
SOPMAL_CD
|
||||
FROM TBLBANK
|
||||
WHERE 1=1
|
||||
AND ORDR_SETLE_INNB = 0
|
||||
AND BKDATE >= DATE_SUB(SYSDATE(), INTERVAL 1 WEEK)
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sopmalCd)">
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 입금내역 자동 매칭 될 데이터 조회 -->
|
||||
<select id="selectBORcpmnyCnfirmTrget"
|
||||
parameterType="com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO"
|
||||
resultType="com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
FOS.SOPMAL_CD,
|
||||
FOS.ORDR_INNB,
|
||||
FOS.ORDR_SETLE_INNB,
|
||||
FO.ORDR_RCEPT_DT,
|
||||
FO.ORDR_STTUS_CD AS CURR_ORDR_STTUS_CD
|
||||
FROM GC_ORDER_SETLE FOS
|
||||
INNER JOIN GC_ORDER FO
|
||||
ON FOS.ORDR_INNB = FO.ORDR_INNB
|
||||
AND FOS.SOPMAL_CD = FO.SOPMAL_CD
|
||||
WHERE 1=1
|
||||
AND FOS.SOPMAL_CD = #{sopmalCd}
|
||||
AND FOS.SETLE_TY_CD = '02'
|
||||
AND FOS.SETLE_COMPT_AT = 'N'
|
||||
AND FO.ORDR_STTUS_CD = '15'
|
||||
AND FO.AUTODEPOSIT_TY IS NULL
|
||||
AND FO.ORDR_RCEPT_DT >= DATE_SUB(SYSDATE(), INTERVAL 1 WEEK)
|
||||
AND FO.ORDR_RCEPT_DT <= STR_TO_DATE(CONCAT(#{bkdate}, #{bktime}), '%Y%m%d%H%i%s')
|
||||
AND FOS.RCPMNYER_NM = #{bkjukyo}
|
||||
AND REPLACE(FOS.RCPMNY_ACNTNB, '-', '') = ${bkacctno}
|
||||
AND FOS.SETLE_AMT = #{bkinput}
|
||||
ORDER BY FOS.ORDR_SETLE_INNB ASC
|
||||
LIMIT 1
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 수동 매칭 입금내역 업데이트 -->
|
||||
<update id="updateBORcpmnyCnfirmExecutRcpmny"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO">
|
||||
|
||||
<![CDATA[
|
||||
UPDATE TBLBANK
|
||||
SET ORDR_INNB = #{ordrInnb}
|
||||
,ORDR_SETLE_INNB = #{ordrSetleInnb}
|
||||
WHERE 1=1
|
||||
AND BKID = #{bkid}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 수동 매칭 주문 업데이트 -->
|
||||
<update id="updateBORcpmnyCnfirmExecutOrdr"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO">
|
||||
|
||||
<![CDATA[
|
||||
UPDATE GC_ORDER
|
||||
SET AUTODEPOSIT_TY = #{autodepositTy}
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND ORDR_INNB = #{ordrInnb}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 수동 매칭 주문결제 업데이트 -->
|
||||
<update id="updateBORcpmnyCnfirmExecutOrdrSetle"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO">
|
||||
|
||||
<![CDATA[
|
||||
UPDATE GC_ORDER_SETLE
|
||||
SET SETLE_COMPT_AT = #{setleComptAt}
|
||||
,SETLE_DT = STR_TO_DATE(CONCAT(#{bkdate}, #{bktime}), '%Y%m%d%H%i%s')
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND ORDR_SETLE_INNB = #{ordrSetleInnb}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 수동 매칭 뱅크다 데이터 유무 조회 -->
|
||||
<select id="selectBORcpmnyDtlsLastVal" resultType="String">
|
||||
<![CDATA[
|
||||
SELECT max(Bkcode)
|
||||
FROM TBLBANK
|
||||
WHERE 1=1
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 주문조회 팝업 목록 조회 where절 -->
|
||||
<sql id="selectBOAtmcRcpmnyOrdrInqireWhere">
|
||||
WHERE 1=1
|
||||
AND FOS.SOPMAL_CD = #{sopmalCd}
|
||||
<!-- 은행명 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchBnnkNm)">
|
||||
<![CDATA[
|
||||
AND FOS.BNNK_NM LIKE CONCAT('%', #{srchBnnkNm}, '%')
|
||||
]]>
|
||||
</if>
|
||||
<!-- 입금자명 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchRcpmnyerNm)">
|
||||
<![CDATA[
|
||||
AND FOS.RCPMNYER_NM LIKE CONCAT('%', #{srchRcpmnyerNm}, '%')
|
||||
]]>
|
||||
</if>
|
||||
<!-- 계좌번호 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchRcpmnyAcntnb)">
|
||||
<![CDATA[
|
||||
AND REPLACE(FOS.RCPMNY_ACNTNB, '-', '') = #{srchRcpmnyAcntnb}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 입금금액1 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSetleAmt1)">
|
||||
<![CDATA[
|
||||
AND FOS.SETLE_AMT >= #{srchSetleAmt1}
|
||||
]]>
|
||||
</if>
|
||||
<!-- 입금금액2 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchSetleAmt2)">
|
||||
<![CDATA[
|
||||
AND FOS.SETLE_AMT <= #{srchSetleAmt2}
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 주문일1 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStartDate)">
|
||||
<![CDATA[
|
||||
AND FO.ORDR_RCEPT_DT >= #{srchStartDate} ' 00:00:00'
|
||||
]]>
|
||||
</if>
|
||||
<!-- 주문일2 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndDate)">
|
||||
<![CDATA[
|
||||
AND FO.ORDR_RCEPT_DT <= #{srchEndDate} ' 23:59:59'
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 입금미확인만 체크 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchOrdrSttusCd2) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchOrdrSttusCd3)">
|
||||
<![CDATA[
|
||||
AND FO.AUTODEPOSIT_TY IS NULL
|
||||
]]>
|
||||
</if>
|
||||
<!-- 입금확인 체크 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchOrdrSttusCd1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd2) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchOrdrSttusCd3)">
|
||||
<![CDATA[
|
||||
AND FO.AUTODEPOSIT_TY IS NOT NULL
|
||||
]]>
|
||||
</if>
|
||||
<!-- 주문무효 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchOrdrSttusCd1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchOrdrSttusCd2) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd3)">
|
||||
<![CDATA[
|
||||
AND FO.ORDR_STTUS_CD = '95'
|
||||
]]>
|
||||
</if>
|
||||
<!-- 입금미확인, 입금확인 체크 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd2) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchOrdrSttusCd3)">
|
||||
<![CDATA[
|
||||
AND FO.ORDR_STTUS_CD BETWEEN '15' AND '75'
|
||||
]]>
|
||||
</if>
|
||||
<!-- 입금확인, 주문무효 체크 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchOrdrSttusCd1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd2) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd3)">
|
||||
<![CDATA[
|
||||
AND (FO.AUTODEPOSIT_TY IS NOT NULL OR FO.ORDR_STTUS_CD = '95')
|
||||
]]>
|
||||
</if>
|
||||
<!-- 입금미확인, 주문무효 체크 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchOrdrSttusCd2) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd3)">
|
||||
<![CDATA[
|
||||
AND (FO.AUTODEPOSIT_TY IS NULL OR FO.ORDR_STTUS_CD = '95')
|
||||
]]>
|
||||
</if>
|
||||
<!-- 입금미확인, 입금확인, 주문무효 체크 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd2) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrSttusCd3)">
|
||||
<![CDATA[
|
||||
AND FO.ORDR_STTUS_CD BETWEEN '15' AND '95'
|
||||
]]>
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<!-- 주문조회 팝업 목록 주문조회 from절 -->
|
||||
<sql id="selectBOAtmcRcpmnyOrdrInqireFrom">
|
||||
FROM GC_ORDER_SETLE FOS
|
||||
INNER JOIN GC_ORDER FO
|
||||
ON FOS.ORDR_INNB = FO.ORDR_INNB
|
||||
AND FOS.SOPMAL_CD = FO.SOPMAL_CD
|
||||
</sql>
|
||||
|
||||
<!-- 주문조회 팝업 목록 주문조회 건수 -->
|
||||
<select id = "selectBOAtmcRcpmnyOrdrInqireCnt"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO"
|
||||
resultType="java.lang.Integer">
|
||||
|
||||
SELECT COUNT(*)
|
||||
<include refid = "selectBOAtmcRcpmnyOrdrInqireFrom" />
|
||||
<include refid = "selectBOAtmcRcpmnyOrdrInqireWhere" />
|
||||
</select>
|
||||
|
||||
<!-- 주문조회 팝업 목록 주문조회 -->
|
||||
<select id = "selectBOAtmcRcpmnyOrdrInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM
|
||||
,TB.*
|
||||
FROM (
|
||||
SELECT
|
||||
FOS.ORDR_SETLE_INNB,
|
||||
FOS.ORDR_INNB,
|
||||
FOS.SOPMAL_CD,
|
||||
FOS.BNNK_NM,
|
||||
FOS.RCPMNY_ACNTNB,
|
||||
FOS.DPSTR_NM,
|
||||
FOS.RCPMNYER_NM,
|
||||
FOS.SETLE_AMT,
|
||||
FOS.SETLE_DT,
|
||||
FO.ORDR_RCEPT_DT,
|
||||
FO.ORDRR_NM,
|
||||
FO.ORDR_STTUS_CD,
|
||||
FN_GET_COMMCODE_NAME('ORDR_STTUS',FO.ORDR_STTUS_CD) AS ORDR_STTUS_CD_NM,
|
||||
FO.AUTODEPOSIT_TY
|
||||
]]>
|
||||
<include refid = "selectBOAtmcRcpmnyOrdrInqireFrom" />
|
||||
<include refid = "selectBOAtmcRcpmnyOrdrInqireWhere" />
|
||||
ORDER BY ORDR_RCEPT_DT DESC
|
||||
) TB
|
||||
WHERE (@rownum:=0)=0
|
||||
) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
</select>
|
||||
|
||||
<!-- 입금내역 테이블 계좌번호 조회 -->
|
||||
<select id = "selectRcpmnyDtlsAcntnbList"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
BKACCTNO
|
||||
FROM TBLBANK
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD IS NULL
|
||||
GROUP BY BKACCTNO
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 입금내역 테이블 쇼핑몰코드 추가 -->
|
||||
<update id="updateBORcpmnyDtlsColct"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO">
|
||||
|
||||
<![CDATA[
|
||||
UPDATE TBLBANK SET
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD IS NULL
|
||||
AND BKACCTNO = #{bkacctno}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 현재 주문상태 조회 -->
|
||||
<select id = "selectCurrOrdrSttusCd" parameterType = "com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO"
|
||||
resultType="String">
|
||||
<![CDATA[
|
||||
SELECT ORDR_STTUS_CD
|
||||
FROM GC_ORDER
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND ORDR_INNB = #{ordrInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,47 @@
|
||||
<?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.ordr.npay.mapper.BoIfLogMapper">
|
||||
|
||||
<!-- if 로그 등록 -->
|
||||
<insert id = "insertBoIfLog"
|
||||
parameterType="com.wb.domainserver.domain.gcone.ordr.npay.vo.BOIfLogVO">
|
||||
<selectKey keyProperty="ifSeq" resultType = "String" order="BEFORE">
|
||||
SELECT IFNULL(MAX(CAST(IF_SEQ AS UNSIGNED)), 0) + 1
|
||||
FROM GC_NPAY_IF_LOG
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
AND IF_KND_CD = #{ifKndCd}
|
||||
</selectKey>
|
||||
INSERT INTO GC_NPAY_IF_LOG (
|
||||
SOPMAL_CD,
|
||||
IF_KND_CD,
|
||||
IF_SEQ,
|
||||
IF_STTUS_CD,
|
||||
SEND_PARAM,
|
||||
RECEIVE_PARAM,
|
||||
REGIST_DT,
|
||||
TRAN_STTUS_CD,
|
||||
ERROR_MESSAGE,
|
||||
REQUEST_ID
|
||||
)VALUES(
|
||||
#{sopmalCd},
|
||||
#{ifKndCd},
|
||||
#{ifSeq},
|
||||
#{ifSttusCd},
|
||||
#{sendParam},
|
||||
#{receiveParam},
|
||||
SYSDATE(),
|
||||
#{tranSttusCd},
|
||||
#{errorMessage},
|
||||
#{requestId}
|
||||
)
|
||||
</insert>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,105 @@
|
||||
<?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.ordr.npay.mapper.BONpayConfigMapper">
|
||||
|
||||
<!-- insert GC_NPAY_CONFIG SQL -->
|
||||
<insert id="insertNpayConfig" parameterType="com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO">
|
||||
INSERT INTO GC_NPAY_CONFIG(
|
||||
SOPMAL_CD
|
||||
, SHOP_ID
|
||||
, CERTIFICATION_KEY
|
||||
, ACCESS_LICENSE
|
||||
, SECRET_KEY
|
||||
, BUTTON_KEY
|
||||
, COMMON_CERTI_KEY
|
||||
, REGIST_DT
|
||||
, REGUSR
|
||||
, UPDT_DT
|
||||
, UPDUSR
|
||||
) VALUES (
|
||||
#{sopmalCd}
|
||||
, #{shopId}
|
||||
, #{certificationKey}
|
||||
, #{accessLicense}
|
||||
, #{secretKey}
|
||||
, #{buttonKey}
|
||||
, #{commonCertiKey}
|
||||
, SYSDATE()
|
||||
, #{regusr}
|
||||
, SYSDATE()
|
||||
, #{updusr}
|
||||
)
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- Update GC_NPAY_CONFIG SQL -->
|
||||
<update id="updateNpayConfig" parameterType="com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO">
|
||||
UPDATE GC_NPAY_CONFIG SET
|
||||
SHOP_ID = #{shopId}
|
||||
, CERTIFICATION_KEY = #{certificationKey}
|
||||
, ACCESS_LICENSE = #{accessLicense}
|
||||
, SECRET_KEY = #{secretKey}
|
||||
, BUTTON_KEY = #{buttonKey}
|
||||
, COMMON_CERTI_KEY = #{commonCertiKey}
|
||||
, UPDT_DT = SYSDATE()
|
||||
, UPDUSR = #{updusr}
|
||||
WHERE
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
|
||||
<!-- Delete GC_NPAY_CONFIG SQL -->
|
||||
<delete id="deleteNpayConfig" parameterType="com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO">
|
||||
DELETE FROM GC_NPAY_CONFIG
|
||||
WHERE
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
</delete>
|
||||
|
||||
|
||||
<!-- Select Detail GC_NPAY_CONFIG SQL -->
|
||||
<select id="selectNpayConfigDetail" parameterType="com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO" resultType="com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO">
|
||||
SELECT
|
||||
SOPMAL_CD
|
||||
,SHOP_ID
|
||||
,CERTIFICATION_KEY
|
||||
,ACCESS_LICENSE
|
||||
,SECRET_KEY
|
||||
,BUTTON_KEY
|
||||
,COMMON_CERTI_KEY
|
||||
,ENVRN
|
||||
,DATE_FORMAT(REGIST_DT, '%Y.%m.%d %H:%i:%s') AS REGIST_DE
|
||||
,REGIST_DT
|
||||
,REGUSR
|
||||
,DATE_FORMAT(UPDT_DT, '%Y.%m.%d %H:%i:%s') AS UPDT_DE
|
||||
,UPDT_DT
|
||||
,UPDUSR
|
||||
FROM
|
||||
GC_NPAY_CONFIG
|
||||
WHERE
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
|
||||
<!-- Select List GC_NPAY_CONFIG SQL -->
|
||||
<select id="selectNpayConfigList" parameterType="com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO" resultType="com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO">
|
||||
SELECT
|
||||
SOPMAL_CD
|
||||
,SHOP_ID
|
||||
,CERTIFICATION_KEY
|
||||
,ACCESS_LICENSE
|
||||
,SECRET_KEY
|
||||
,BUTTON_KEY
|
||||
,COMMON_CERTI_KEY
|
||||
,DATE_FORMAT(REGIST_DT, '%Y.%m.%d %H:%i:%s') AS REGIST_DE
|
||||
,REGIST_DT
|
||||
,REGUSR
|
||||
,DATE_FORMAT(UPDT_DT, '%Y.%m.%d %H:%i:%s') AS UPDT_DE
|
||||
,UPDT_DT
|
||||
,UPDUSR
|
||||
FROM
|
||||
GC_NPAY_CONFIG
|
||||
WHERE
|
||||
SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,730 @@
|
||||
<?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.ordr.selngpruf.mapper.BOSelngprufMapper">
|
||||
|
||||
<!-- 매출증빙 목록 조회 FROM 절 -->
|
||||
<sql id="selectBOSelngPrufListInqireFrom">
|
||||
<![CDATA[
|
||||
FROM GC_SALES FS
|
||||
LEFT JOIN GC_ORDER_SETLE FOS
|
||||
ON FS.ORDR_SETLE_INNB = FOS.ORDR_SETLE_INNB
|
||||
INNER JOIN GC_ORDER FO
|
||||
ON FOS.ORDR_INNB = FO.ORDR_INNB
|
||||
AND FOS.SOPMAL_CD = FO.SOPMAL_CD
|
||||
LEFT JOIN GC_ORDER_REFUND FOR1
|
||||
ON FO.ORDR_INNB = FOR1.ORDR_INNB
|
||||
AND FO.SOPMAL_CD = FOR1.SOPMAL_CD
|
||||
LEFT JOIN GC_MEMBER FM
|
||||
ON FO.MBR_INNB = FM.MBR_INNB
|
||||
AND FO.MBR_DV_CD = FM.MBR_DV_CD
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<!-- 매출증빙 목록 조회 WHERE 절 -->
|
||||
<sql id="selectBOSelngPrufListInqireWhere">
|
||||
WHERE 1=1
|
||||
AND FO.SOPMAL_CD = #{sopmalCd}
|
||||
AND FO.ORDR_STTUS_CD NOT IN ('0', '95', '99')
|
||||
<!-- AND fo.ORDR_RCEPT_DT between '2022-07-19' and '2022-07-25' -->
|
||||
<!-- 검색어 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchWord)">
|
||||
AND (
|
||||
FO.ORDRR_NM LIKE CONCAT('%', #{srchWord}, '%') OR
|
||||
FO.ORDR_INNB LIKE CONCAT('%', #{srchWord}, '%')
|
||||
)
|
||||
</if>
|
||||
|
||||
<!-- 날짜 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchDate)">
|
||||
<choose>
|
||||
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDate, '1')">
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStartDate)">
|
||||
<![CDATA[
|
||||
AND FO.ORDR_RCEPT_DT >= #{srchStartDate} ' 00:00:00'
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndDate)">
|
||||
<![CDATA[
|
||||
AND FO.ORDR_RCEPT_DT <= #{srchEndDate} ' 23:59:59'
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDate, '2')">
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStartDate)">
|
||||
<![CDATA[
|
||||
AND FS.REGIST_DT >= #{srchStartDate} ' 00:00:00'
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndDate)">
|
||||
<![CDATA[
|
||||
AND FS.REGIST_DT <= #{srchEndDate} ' 23:59:59'
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDate, '3')">
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStartDate)">
|
||||
<![CDATA[
|
||||
AND FS.UPDT_DT >= #{srchStartDate} ' 00:00:00'
|
||||
]]>
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchEndDate)">
|
||||
<![CDATA[
|
||||
AND FS.UPDT_DT <= #{srchEndDate} ' 23:59:59'
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
|
||||
<!-- 증빙서류 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchReqst)">
|
||||
<![CDATA[
|
||||
AND FS.REQST_DV_CD IN
|
||||
]]>
|
||||
<foreach collection="srchReqst" item="srchReqst" open="(" close=")" separator=",">
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchReqst, '02')">
|
||||
<![CDATA[
|
||||
'02', '03'
|
||||
]]>
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchReqst, '04')">
|
||||
#{srchReqst}
|
||||
</when>
|
||||
</choose>
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<!-- 결제여부 입금 체크 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchRcpmny1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchRcpmny2)">
|
||||
<![CDATA[
|
||||
AND FO.ORDR_STTUS_CD > 15
|
||||
]]>
|
||||
</if>
|
||||
<!-- 결제여부 미입금 체크 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchRcpmny1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchRcpmny2)">
|
||||
<![CDATA[
|
||||
AND FO.ORDR_STTUS_CD = 15
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 환불유무 있음 체크 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchRefund1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchRefund2)">
|
||||
<![CDATA[
|
||||
AND FOR1.ORDER_REFUND_INNB IS NOT NULL
|
||||
]]>
|
||||
</if>
|
||||
<!-- 환불유무 없음 체크 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(srchRefund1) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchRefund2)">
|
||||
<![CDATA[
|
||||
AND FOR1.ORDER_REFUND_INNB IS NULL
|
||||
]]>
|
||||
</if>
|
||||
|
||||
<!-- 상태 -->
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStatus)">
|
||||
<![CDATA[
|
||||
AND
|
||||
]]>
|
||||
<foreach collection="srchStatus" item="srchStatus" open="(" close=")" separator="OR">
|
||||
<![CDATA[
|
||||
FS.ISSU_STTUS_CD = #{srchStatus}
|
||||
]]>
|
||||
</foreach>
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<!-- 매출증빙 목록 조회 GROUP BY 절 -->
|
||||
<sql id="selectBOSelngPrufListInqireGroupBy">
|
||||
GROUP BY FO.ORDR_INNB
|
||||
,FO.ORDR_RCEPT_DT
|
||||
,FO.ORDRR_NM
|
||||
,FM.MBR_ID
|
||||
,FOS.SETLE_TY_CD
|
||||
,FOS.SETLE_AMT
|
||||
,FO.ORDR_STTUS_CD
|
||||
,FS.REGIST_DT
|
||||
,FS.REQST_DV_CD
|
||||
,FS.SPLPRIC
|
||||
,FS.VAT_AMT
|
||||
,FS.AMT
|
||||
,FS.CANCL_AMT
|
||||
,FS.ISSU_DT
|
||||
,FS.ISSU_STTUS_CD
|
||||
,FS.MNGR_MEMO_CN
|
||||
,FS.SELNG_PRUF_INNB
|
||||
ORDER BY FO.ORDR_INNB DESC
|
||||
</sql>
|
||||
|
||||
<!-- 매출증빙 목록 건수 조회 -->
|
||||
<select id = "selectBOSelngPrufListCnt"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM (
|
||||
SELECT FO.ORDR_INNB
|
||||
<include refid = "selectBOSelngPrufListInqireFrom"/>
|
||||
<include refid = "selectBOSelngPrufListInqireWhere"/>
|
||||
<include refid = "selectBOSelngPrufListInqireGroupBy"/>
|
||||
) AS TEMP
|
||||
</select>
|
||||
|
||||
<!-- 매출증빙 목록 조회 -->
|
||||
<select id = "selectBOSelngPrufListInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="dataMap">
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, TB.*
|
||||
FROM (
|
||||
SELECT FO.ORDR_INNB
|
||||
,FO.ORDR_RCEPT_DT
|
||||
,FO.ORDRR_NM
|
||||
,FM.MBR_ID
|
||||
,FOS.SETLE_TY_CD
|
||||
,FOS.SETLE_AMT
|
||||
,FO.ORDR_STTUS_CD AS ORDR_STTUS_CD
|
||||
,FN_GET_COMMCODE_NAME('ORDR_STTUS',FO.ORDR_STTUS_CD) AS ORDR_STTUS_CD_NM
|
||||
,FS.REGIST_DT
|
||||
,FS.REQST_DV_CD AS REQST_DV_CD
|
||||
,FN_GET_COMMCODE_NAME('REQST_DV', FS.REQST_DV_CD) AS REQST_DV_CD_NM
|
||||
,FS.SPLPRIC
|
||||
,FS.VAT_AMT
|
||||
,FS.AMT
|
||||
,FS.CANCL_AMT
|
||||
,FS.ISSU_DT
|
||||
,FS.ISSU_STTUS_CD AS ISSU_STTUS_CD
|
||||
,FN_GET_COMMCODE_NAME('ISSU_STTUS', FS.ISSU_STTUS_CD) AS ISSU_STTUS_CD_NM
|
||||
,FS.MNGR_MEMO_CN
|
||||
,FO.SOPMAL_CD
|
||||
,GROUP_CONCAT(FOR1.ORDER_REFUND_INNB) AS ORDER_REFUND_INNB
|
||||
,FS.SELNG_PRUF_INNB
|
||||
,FS.ORDR_SETLE_INNB
|
||||
,FS.CSH_RCIPT_DELNG_NB
|
||||
,FS.CRTNB
|
||||
,FOS.PG_CMPNY_NM
|
||||
,FOS.PG_INNB
|
||||
,FS.UPDT_DT
|
||||
<include refid = "selectBOSelngPrufListInqireFrom"/>
|
||||
<include refid = "selectBOSelngPrufListInqireWhere"/>
|
||||
<include refid = "selectBOSelngPrufListInqireGroupBy"/>
|
||||
<![CDATA[
|
||||
) TB
|
||||
WHERE (@rownum:=0)=0
|
||||
) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매출증빙 관리자 메모 조회 -->
|
||||
<select id = "selectBOSelngPrufMngrMemoRegistPopupForm"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT DISTINCT
|
||||
ORDR_INNB,
|
||||
SOPMAL_CD,
|
||||
MNGR_MEMO_CN,
|
||||
SELNG_PRUF_INNB
|
||||
FROM GC_SALES
|
||||
WHERE 1=1
|
||||
AND SELNG_PRUF_INNB = #{selngPrufInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매출증빙 관리자 메모 등록, 수정 -->
|
||||
<update id = "updateBOSelngPrufMngrMemoRegistPopup"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_SALES
|
||||
SET MNGR_MEMO_CN = TRIM(#{mngrMemoCn})
|
||||
,UPDUSR = #{updusr}
|
||||
,UPDT_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND SELNG_PRUF_INNB = #{selngPrufInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 매출증빙 전송로그 건수 조회 -->
|
||||
<select id = "selectBOSelngPrufTrnsmisLogInqireCnt"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="java.lang.Integer">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM GC_SALES_LOG
|
||||
WHERE 1=1
|
||||
AND SELNG_PRUF_INNB = #{selngPrufInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매출증빙 전송로그 조회 -->
|
||||
<select id = "selectBOSelngPrufTrnsmisLogInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
*
|
||||
FROM GC_SALES_LOG
|
||||
WHERE 1=1
|
||||
AND SELNG_PRUF_INNB = #{selngPrufInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매출증빙 테이블 조회 -->
|
||||
<select id = "selectBOCshRcipt"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
FS.ISSU_STTUS_CD,
|
||||
FN_GET_COMMCODE_NAME("ISSU_STTUS", FS.ISSU_STTUS_CD) AS ISSU_STTUS_CD_NM,
|
||||
FS.REGIST_DT,
|
||||
FS.ISSU_TRGET_DV_CD,
|
||||
FN_GET_COMMCODE_NAME("ISSU_TRGET_DV",FS.ISSU_TRGET_DV_CD) AS ISSU_TRGET_DV_CD_NM,
|
||||
FS.CRTNB,
|
||||
FS.ORDRR_NM,
|
||||
CAST(AES_DECRYPT(UNHEX(FS.ORDRR_EMAIL) , '1df5be2f7e90ae36') AS CHAR(50)) AS ORDRR_EMAIL,
|
||||
FS.GOODS_NM,
|
||||
FS.AMT,
|
||||
FS.SPLPRIC,
|
||||
FS.VAT_AMT,
|
||||
FS.ORDR_INNB,
|
||||
FS.SOPMAL_CD,
|
||||
FS.ORDR_SETLE_INNB,
|
||||
FS.SELNG_PRUF_INNB
|
||||
FROM GC_SALES FS
|
||||
WHERE 1=1
|
||||
AND FS.SELNG_PRUF_INNB = #{selngPrufInnb}
|
||||
AND FS.SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매출증빙 현금영수증 정보 수정 -->
|
||||
<update id = "updateBOCshRcipt"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_SALES
|
||||
SET ISSU_TRGET_DV_CD = #{issuTrgetDvCd}
|
||||
,CRTNB = #{crtnb}
|
||||
]]>
|
||||
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ordrrNm)">
|
||||
,ORDRR_NM = #{ordrrNm}
|
||||
</if>
|
||||
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ordrrEmail)">
|
||||
,ORDRR_EMAIL = HEX(AES_ENCRYPT(#{ordrrEmail}, '1df5be2f7e90ae36'))
|
||||
</if>
|
||||
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(goodsNm)">
|
||||
,GOODS_NM = #{goodsNm}
|
||||
</if>
|
||||
<![CDATA[
|
||||
,UPDT_DT = SYSDATE()
|
||||
,UPDUSR = #{updusr}
|
||||
WHERE 1=1
|
||||
AND SELNG_PRUF_INNB = #{selngPrufInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 매출증빙 현금영수증 api 응답 값 업데이트
|
||||
<update id = "updateBOCashRciptRegistSelngPruf"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO">
|
||||
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(cshRciptDelngNb)">
|
||||
<![CDATA[
|
||||
UPDATE GC_SALES
|
||||
SET CSH_RCIPT_DELNG_NB = #{cshRciptDelngNb}
|
||||
,CSH_RCIPT_APVLNB = #{cshRciptApvlnb}
|
||||
,CSH_RCIPT_CONFM_DT = #{cshRciptConfmDt}
|
||||
,ISSU_TRGET_DV_CD = #{issuTrgetDvCd}
|
||||
,CRTNB = #{crtnb}
|
||||
,ORDRR_NM = #{ordrrNm}
|
||||
,ORDRR_EMAIL = HEX(AES_ENCRYPT(#{ordrrEmail}, '1df5be2f7e90ae36'))
|
||||
,ISSU_STTUS_CD = #{issuSttusCd}
|
||||
,UPDT_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND SELNG_PRUF_INNB = #{selngPrufInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</when>
|
||||
<otherwise>
|
||||
<![CDATA[
|
||||
UPDATE GC_SALES
|
||||
SET ISSU_STTUS_CD = #{issuSttusCd}
|
||||
,UPDT_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND SELNG_PRUF_INNB = #{selngPrufInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</otherwise>
|
||||
</choose>
|
||||
</update>
|
||||
-->
|
||||
|
||||
<!-- 매출증빙 현금영수증 api 응답 값 업데이트 -->
|
||||
<update id = "updateBOCashRciptRegistSelngPruf"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO">
|
||||
|
||||
<![CDATA[
|
||||
UPDATE GC_SALES
|
||||
SET CSH_RCIPT_DELNG_NB = #{cshRciptDelngNb}
|
||||
,CSH_RCIPT_APVLNB = #{cshRciptApvlnb}
|
||||
,CSH_RCIPT_CONFM_DT = #{cshRciptConfmDt}
|
||||
,ISSU_TRGET_DV_CD = #{issuTrgetDvCd}
|
||||
,CRTNB = #{crtnb}
|
||||
,ORDRR_NM = #{ordrrNm}
|
||||
,ORDRR_EMAIL = HEX(AES_ENCRYPT(#{ordrrEmail}, '1df5be2f7e90ae36'))
|
||||
,GOODS_NM = #{goodsNm}
|
||||
,ISSU_STTUS_CD = #{issuSttusCd}
|
||||
,UPDT_DT = SYSDATE()
|
||||
,ISSU_DT = SYSDATE()
|
||||
,UPDUSR = #{updusr}
|
||||
WHERE 1=1
|
||||
AND SELNG_PRUF_INNB = #{selngPrufInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 매출증빙로그 추가 -->
|
||||
<update id = "insertBOSelngPrufLogRegist"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_SALES_LOG (
|
||||
SELNG_PRUF_LOG_INNB,
|
||||
SELNG_PRUF_INNB,
|
||||
REGIST_DT,
|
||||
LOG_MSG
|
||||
)
|
||||
SELECT
|
||||
COALESCE(MAX(SELNG_PRUF_LOG_INNB), 0) + 1,
|
||||
#{selngPrufInnb},
|
||||
SYSDATE(),
|
||||
#{logMsg}
|
||||
FROM GC_SALES_LOG
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 엑셀다운로드(전체) -->
|
||||
<select id = "selectBOSopmalExcelAllList"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="dataMap">
|
||||
|
||||
SELECT FO.ORDR_INNB
|
||||
,DATE_FORMAT(FO.ORDR_RCEPT_DT, '%Y-%m-%d %H:%i:%s') AS ORDR_RCEPT_DT
|
||||
,FO.ORDRR_NM
|
||||
,FM.MBR_ID
|
||||
,FOS.SETLE_TY_CD
|
||||
,FN_GET_COMMCODE_NAME('SETLE_MTH',FOS.SETLE_TY_CD) AS SETLE_TY_CD_NM
|
||||
,FOS.SETLE_AMT
|
||||
,FO.ORDR_STTUS_CD AS ORDR_STTUS_CD
|
||||
,FN_GET_COMMCODE_NAME('ORDR_STTUS',FO.ORDR_STTUS_CD) AS ORDR_STTUS_CD_NM
|
||||
,DATE_FORMAT(FS.REGIST_DT, '%Y-%m-%d %H:%i:%s') AS REGIST_DT
|
||||
,FS.REQST_DV_CD AS REQST_DV_CD
|
||||
,FN_GET_COMMCODE_NAME('REQST_DV', FS.REQST_DV_CD) AS REQST_DV_CD_NM
|
||||
,FS.SPLPRIC
|
||||
,FS.VAT_AMT
|
||||
,FS.AMT
|
||||
,FS.CANCL_AMT
|
||||
,DATE_FORMAT(FS.UPDT_DT, '%Y-%m-%d %H:%i:%s') AS UPDT_DT
|
||||
,FS.ISSU_STTUS_CD AS ISSU_STTUS_CD
|
||||
,FN_GET_COMMCODE_NAME('ISSU_STTUS', FS.ISSU_STTUS_CD) AS ISSU_STTUS_CD_NM
|
||||
,FS.MNGR_MEMO_CN
|
||||
,FO.SOPMAL_CD
|
||||
,GROUP_CONCAT(FOR1.ORDER_REFUND_INNB) AS ORDER_REFUND_INNB
|
||||
,FS.SELNG_PRUF_INNB
|
||||
,FS.ORDR_SETLE_INNB
|
||||
,FS.CSH_RCIPT_DELNG_NB
|
||||
,FS.CRTNB
|
||||
,FOS.PG_CMPNY_NM
|
||||
,FOS.PG_INNB
|
||||
<include refid = "selectBOSelngPrufListInqireFrom"/>
|
||||
<include refid = "selectBOSelngPrufListInqireWhere"/>
|
||||
<include refid = "selectBOSelngPrufListInqireGroupBy"/>
|
||||
</select>
|
||||
|
||||
<!-- 엑셀다운로드(선택) -->
|
||||
<select id = "selectBOSopmalExcelList"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="dataMap">
|
||||
|
||||
SELECT FO.ORDR_INNB
|
||||
,DATE_FORMAT(FO.ORDR_RCEPT_DT, '%Y-%m-%d %H:%i:%s') AS ORDR_RCEPT_DT
|
||||
,FO.ORDRR_NM
|
||||
,FM.MBR_ID
|
||||
,FOS.SETLE_TY_CD
|
||||
,FN_GET_COMMCODE_NAME('SETLE_MTH',FOS.SETLE_TY_CD) AS SETLE_TY_CD_NM
|
||||
,FOS.SETLE_AMT
|
||||
,FO.ORDR_STTUS_CD AS ORDR_STTUS_CD
|
||||
,FN_GET_COMMCODE_NAME('ORDR_STTUS',FO.ORDR_STTUS_CD) AS ORDR_STTUS_CD_NM
|
||||
,DATE_FORMAT(FS.REGIST_DT, '%Y-%m-%d %H:%i:%s') AS REGIST_DT
|
||||
,FS.REQST_DV_CD AS REQST_DV_CD
|
||||
,FN_GET_COMMCODE_NAME('REQST_DV', FS.REQST_DV_CD) AS REQST_DV_CD_NM
|
||||
,FS.SPLPRIC
|
||||
,FS.VAT_AMT
|
||||
,FS.AMT
|
||||
,FS.CANCL_AMT
|
||||
,DATE_FORMAT(FS.UPDT_DT, '%Y-%m-%d %H:%i:%s') AS UPDT_DT
|
||||
,FS.ISSU_STTUS_CD AS ISSU_STTUS_CD
|
||||
,FN_GET_COMMCODE_NAME('ISSU_STTUS', FS.ISSU_STTUS_CD) AS ISSU_STTUS_CD_NM
|
||||
,FS.MNGR_MEMO_CN
|
||||
,FO.SOPMAL_CD
|
||||
,GROUP_CONCAT(FOR1.ORDER_REFUND_INNB) AS ORDER_REFUND_INNB
|
||||
,FS.SELNG_PRUF_INNB
|
||||
,FS.ORDR_SETLE_INNB
|
||||
,FS.CSH_RCIPT_DELNG_NB
|
||||
,FS.CRTNB
|
||||
,FOS.PG_CMPNY_NM
|
||||
,FOS.PG_INNB
|
||||
<include refid = "selectBOSelngPrufListInqireFrom"/>
|
||||
WHERE 1=1
|
||||
<![CDATA[
|
||||
AND FS.SELNG_PRUF_INNB IN
|
||||
]]>
|
||||
<foreach collection="selngPrufInnbArr" item="selngPrufInnbArr" open="(" close=")" separator=",">
|
||||
<![CDATA[
|
||||
#{selngPrufInnbArr}
|
||||
]]>
|
||||
</foreach>
|
||||
<include refid = "selectBOSelngPrufListInqireGroupBy"/>
|
||||
</select>
|
||||
|
||||
<!-- 쇼핑몰결제설정 테이블 조회 -->
|
||||
<select id = "selectBOSopmalSetleSetup"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
IF(PG_CMPNY_NM = 'kcp', 'kcp', 'toss') AS PG_CMPNY_NM,
|
||||
CASE WHEN IFNULL(OS.SETLE_MID, '') <> '' THEN OS.SETLE_MID
|
||||
WHEN OS.PG_CMPNY_NM = 'kcp' THEN PL.KCP_MID
|
||||
ELSE PL.OLD_TOSS_MID
|
||||
END AS MID
|
||||
FROM GC_ORDER_SETLE OS
|
||||
INNER JOIN GC_PAY_LINK PL
|
||||
ON OS.SOPMAL_CD = PL.SOPMAL_CD
|
||||
WHERE OS.SOPMAL_CD = #{sopmalCd}
|
||||
AND OS.ORDR_INNB = #{ordrInnb}
|
||||
ORDER BY PL.SETLE_SETUP_INNB
|
||||
LIMIT 1
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 매출증빙 테이블 현금영수증 취소 조회 -->
|
||||
<select id = "selectBOCshRciptCancel"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
SELNG_PRUF_INNB,
|
||||
ORDR_SETLE_INNB,
|
||||
ORDR_INNB,
|
||||
SOPMAL_CD,
|
||||
ROUND(AMT) AMT,
|
||||
ROUND(SPLPRIC) SPLPRIC,
|
||||
ROUND(VAT_AMT) VAT_AMT,
|
||||
GOODS_NM,
|
||||
REQST_DV_CD,
|
||||
ISSU_TRGET_DV_CD,
|
||||
CRTNB,
|
||||
CSH_RCIPT_DELNG_NB,
|
||||
CSH_RCIPT_APVLNB,
|
||||
CSH_RCIPT_CONFM_DT,
|
||||
ORDRR_NM,
|
||||
CAST(AES_DECRYPT(UNHEX(ORDRR_EMAIL) , '1df5be2f7e90ae36') AS CHAR(50)) AS ORDRR_EMAIL,
|
||||
ISSU_STTUS_CD,
|
||||
UPDUSR_DV_CD,
|
||||
REGUSR,
|
||||
REGIST_DT,
|
||||
UPDUSR,
|
||||
UPDT_DT,
|
||||
ISSU_DT,
|
||||
MNGR_MEMO_CN,
|
||||
CANCL_AMT,
|
||||
CANCL_SPLPRIC,
|
||||
CANCL_VAT_AMT
|
||||
FROM GC_SALES
|
||||
WHERE 1=1
|
||||
AND REQST_DV_CD = '02'
|
||||
AND ORDR_SETLE_INNB = #{ordrSetleInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND ISSU_STTUS_CD != '03'
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 매출증빙 현금영수증 취소 update -->
|
||||
<update id = "updateBOCshRciptCancel"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO">
|
||||
|
||||
<![CDATA[
|
||||
UPDATE GC_SALES
|
||||
SET CANCL_AMT = #{canclAmt}
|
||||
,CANCL_SPLPRIC = #{canclSplpric}
|
||||
,CANCL_VAT_AMT = #{canclVatAmt}
|
||||
,ISSU_STTUS_CD = #{issuSttusCd}
|
||||
,UPDT_DT = SYSDATE()
|
||||
,UPDUSR = #{updusr}
|
||||
,UPDUSR_DV_CD = #{updusrDvCd}
|
||||
WHERE 1=1
|
||||
AND SELNG_PRUF_INNB = #{selngPrufInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 매출증빙 테이블 추가 -->
|
||||
<insert id = "insertBOSelngPrufRegist"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
keyProperty="selngPrufInnb"
|
||||
useGeneratedKeys="true">
|
||||
|
||||
<![CDATA[
|
||||
INSERT INTO GC_SALES (
|
||||
ORDR_SETLE_INNB,
|
||||
ORDR_INNB,
|
||||
SOPMAL_CD,
|
||||
AMT,
|
||||
SPLPRIC,
|
||||
VAT_AMT,
|
||||
GOODS_NM,
|
||||
REQST_DV_CD,
|
||||
ISSU_TRGET_DV_CD,
|
||||
CRTNB,
|
||||
CSH_RCIPT_DELNG_NB,
|
||||
CSH_RCIPT_APVLNB,
|
||||
CSH_RCIPT_CONFM_DT,
|
||||
ORDRR_NM,
|
||||
ORDRR_EMAIL,
|
||||
ISSU_STTUS_CD,
|
||||
UPDUSR_DV_CD,
|
||||
REGUSR,
|
||||
REGIST_DT,
|
||||
UPDUSR,
|
||||
UPDT_DT,
|
||||
ISSU_DT,
|
||||
MNGR_MEMO_CN,
|
||||
CANCL_AMT,
|
||||
CANCL_SPLPRIC,
|
||||
CANCL_VAT_AMT
|
||||
)
|
||||
SELECT
|
||||
#{ordrSetleInnb},
|
||||
#{ordrInnb},
|
||||
#{sopmalCd},
|
||||
#{amt},
|
||||
#{splpric},
|
||||
#{vatAmt},
|
||||
#{goodsNm},
|
||||
#{reqstDvCd},
|
||||
#{issuTrgetDvCd},
|
||||
#{crtnb},
|
||||
#{cshRciptDelngNb},
|
||||
#{cshRciptApvlnb},
|
||||
#{cshRciptConfmDt},
|
||||
#{ordrrNm},
|
||||
HEX(AES_ENCRYPT(#{ordrrEmail}, '1df5be2f7e90ae36')),
|
||||
#{issuSttusCd},
|
||||
#{updusrDvCd},
|
||||
#{regusr},
|
||||
SYSDATE(),
|
||||
#{updusr},
|
||||
SYSDATE(),
|
||||
#{issuDt},
|
||||
#{mngrMemoCn},
|
||||
#{canclAmt},
|
||||
#{canclSplpric},
|
||||
#{canclVatAmt}
|
||||
FROM GC_SALES
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- 매출증빙 테이블 주문번호로 주문결제 번호 찾기 -->
|
||||
<select id = "selectBOCashRciptUpdt"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
SELNG_PRUF_INNB,
|
||||
ORDR_SETLE_INNB,
|
||||
ORDR_INNB,
|
||||
SOPMAL_CD,
|
||||
ROUND(AMT) AMT,
|
||||
ROUND(SPLPRIC) SPLPRIC,
|
||||
ROUND(VAT_AMT) VAT_AMT,
|
||||
GOODS_NM,
|
||||
REQST_DV_CD,
|
||||
ISSU_TRGET_DV_CD,
|
||||
CRTNB,
|
||||
CSH_RCIPT_DELNG_NB,
|
||||
CSH_RCIPT_APVLNB,
|
||||
CSH_RCIPT_CONFM_DT,
|
||||
ORDRR_NM,
|
||||
CAST(AES_DECRYPT(UNHEX(ORDRR_EMAIL) , '1df5be2f7e90ae36') AS CHAR(50)) AS ORDRR_EMAIL,
|
||||
ISSU_STTUS_CD,
|
||||
UPDUSR_DV_CD,
|
||||
REGUSR,
|
||||
REGIST_DT,
|
||||
UPDUSR,
|
||||
UPDT_DT,
|
||||
ISSU_DT,
|
||||
MNGR_MEMO_CN,
|
||||
CANCL_AMT,
|
||||
CANCL_SPLPRIC,
|
||||
CANCL_VAT_AMT
|
||||
FROM GC_SALES GS
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND ORDR_INNB = #{ordrInnb}
|
||||
AND REQST_DV_CD = '02'
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 매출증빙 테이블 쇼핑몰코드, 주문번호로 현금영수증 대상조회 -->
|
||||
<select id = "selectBOCshRciptRegist"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO"
|
||||
resultType="com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
FS.SELNG_PRUF_INNB,
|
||||
FS.SOPMAL_CD,
|
||||
FS.ORDR_INNB,
|
||||
FS.ORDR_SETLE_INNB,
|
||||
FS.ORDRR_NM,
|
||||
CAST(AES_DECRYPT(UNHEX(FS.ORDRR_EMAIL) , '1df5be2f7e90ae36') AS CHAR(50)) AS ORDRR_EMAIL,
|
||||
FS.CRTNB,
|
||||
FS.GOODS_NM,
|
||||
FS.ISSU_TRGET_DV_CD,
|
||||
FS.ISSU_STTUS_CD,
|
||||
ROUND(FS.AMT) AS AMT,
|
||||
ROUND(FS.SPLPRIC) AS SPLPRIC,
|
||||
ROUND(FS.VAT_AMT) AS VAT_AMT
|
||||
FROM GC_SALES FS
|
||||
INNER JOIN GC_ORDER_SETLE FOS
|
||||
ON FS.SOPMAL_CD = FOS.SOPMAL_CD
|
||||
AND FS.ORDR_SETLE_INNB = FOS.ORDR_SETLE_INNB
|
||||
INNER JOIN GC_ORDER FO
|
||||
ON FOS.SOPMAL_CD = FO.SOPMAL_CD
|
||||
AND FOS.ORDR_INNB = FO.ORDR_INNB
|
||||
WHERE 1=1
|
||||
AND FS.SOPMAL_CD = #{sopmalCd}
|
||||
AND FS.ORDR_INNB = #{ordrInnb}
|
||||
AND FS.REQST_DV_CD = '02'
|
||||
AND FS.ISSU_STTUS_CD = '01'
|
||||
AND FOS.SETLE_TY_CD = #{setleTyCd}
|
||||
AND FO.ORDR_STTUS_CD = '25'
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,90 @@
|
||||
<?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.pos.easywell.mapper.EasyWellMapper">
|
||||
|
||||
<!--이지웰 로그 등록-->
|
||||
<insert id="insertEasyWellLog" useGeneratedKeys="true" keyColumn="EZWELL_LOG_INNB" keyProperty="ezwellLogInnb" parameterType="map">
|
||||
INSERT INTO GC_EZWELL_LOG
|
||||
( EW_PROCS_STTUS,
|
||||
ORDR_INNB,
|
||||
ORDR_CD,
|
||||
STR_INNB,
|
||||
POS_HDQRTRS_CD,
|
||||
STR_CD,
|
||||
POSNB,
|
||||
RCIPT_NB,
|
||||
EW_JOB_DV,
|
||||
EW_DELNG_NB,
|
||||
EW_BRCD_NB,
|
||||
EW_ORDR_INNB,
|
||||
EW_USE_CANCL_AMT,
|
||||
EW_BLCE_NB,
|
||||
EW_CONFM_NB,
|
||||
EW_MBR_NB,
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(org_approv)">
|
||||
DELNG_CONFM_NB,
|
||||
</if>
|
||||
EW_RES_CD,
|
||||
EW_RES_MSG,
|
||||
REQ_DT
|
||||
)
|
||||
VALUES(
|
||||
'01',
|
||||
0,
|
||||
#{order_code},
|
||||
0,
|
||||
#{pgubun},
|
||||
#{pcode},
|
||||
#{poscode},
|
||||
#{pnumb},
|
||||
#{ew_act_cd},
|
||||
'',
|
||||
#{ew_code},
|
||||
#{ew_order_code},
|
||||
0,
|
||||
0,
|
||||
'',
|
||||
'',
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(org_approv)">
|
||||
#{org_approv},
|
||||
</if>
|
||||
'',
|
||||
'',
|
||||
SYSDATE()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!--이지웰 로그 수정-->
|
||||
<update id="updateEasyWellLog" parameterType="map">
|
||||
UPDATE GC_EZWELL_LOG
|
||||
SET EW_PROCS_STTUS= '02',
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ew_remain)">
|
||||
EW_BLCE_NB = #{ew_remain},
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ew_price)">
|
||||
EW_USE_CANCL_AMT = #{ew_price},
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ew_approv)">
|
||||
EW_CONFM_NB = #{ew_approv},
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(ew_member)">
|
||||
EW_MBR_NB = #{ew_member},
|
||||
</if>
|
||||
EW_RES_CD = #{logcode},
|
||||
EW_RES_MSG = #{msg},
|
||||
RES_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND EZWELL_LOG_INNB = #{ezwellLogInnb}
|
||||
</update>
|
||||
|
||||
<!--이지웰 로그 조회-->
|
||||
<select id="selectEasyWellLog" parameterType="map" resultType="dataMap">
|
||||
SELECT EW_USE_CANCL_AMT
|
||||
FROM GC_EZWELL_LOG
|
||||
WHERE 1=1
|
||||
AND EW_BRCD_NB = #{ew_code}
|
||||
AND EW_CONFM_NB= #{org_approv}
|
||||
AND ORDR_CD= #{org_order}
|
||||
AND EW_PROCS_STTUS = '02'
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,361 @@
|
||||
<?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.pos.pos.mapper.PosCouponMapper">
|
||||
|
||||
<!-- 포스 쿠폰 조회 -->
|
||||
<select id="selectPosCouponInqire">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
PC.POS_HDQRTRS_CD
|
||||
,PC.POS_COUPON_REGIST_YEAR
|
||||
,PC.POS_COUPON_CD
|
||||
,PC.COUPON_INNB
|
||||
,PC.SOPMAL_CD
|
||||
,#{AUTH_NO} AS OFLNE_COUPON_CRTNB
|
||||
FROM GC_COUPON_POS PC
|
||||
WHERE 1 = 1
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(pgubun)">
|
||||
AND PC.POS_HDQRTRS_CD = #{pgubun}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(COUPON_YEAR)">
|
||||
AND PC.POS_COUPON_REGIST_YEAR = #{COUPON_YEAR}
|
||||
</if>
|
||||
<![CDATA[
|
||||
AND PC.POS_COUPON_CD = #{COUPON_CODE}
|
||||
AND SUBSTRING(PC.COUPON_INNB, -3) = SUBSTRING(#{AUTH_NO}, 3, 3)
|
||||
AND PC.SOPMAL_CD = (
|
||||
SELECT
|
||||
SH.SOPMAL_CD
|
||||
FROM GC_SHOP SH
|
||||
WHERE SH.SOPMAL_NB = SUBSTRING(#{AUTH_NO}, 1, 2)
|
||||
)
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 유효 쿠폰 정보 조회 -->
|
||||
<select id="selectPosOflneCouponInqire">
|
||||
<![CDATA[
|
||||
(
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
DW.SOPMAL_CD AS coupon_site
|
||||
,DW.COUPON_INNB AS coupon_seq
|
||||
,DW.COUPON_DC AS coupon_desc
|
||||
,IFNULL(DW.VALIDPD_BGN_DT, C.VALIDPD_BGN_DT) AS issue_startdate
|
||||
,IFNULL(DW.VALIDPD_END_DT, C.VALIDPD_END_DT) AS issue_enddate
|
||||
,C.VALIDPD_KND_CD AS issue_priod_type
|
||||
,C.VALIDPD_DE_CNT AS after_issue_day
|
||||
,CASE
|
||||
WHEN DW.VALIDPD_BGN_DT <= SYSDATE() THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS START_DATE
|
||||
,CASE
|
||||
WHEN DW.VALIDPD_END_DT >= SYSDATE() THEN 'Y'
|
||||
ELSE 'N'
|
||||
END AS END_DATE
|
||||
,OFC.OFLNE_COUPON_INNB AS offline_seq
|
||||
,OFC.REGIST_DT AS OFLNE_REGIST_DT
|
||||
,OFC.OFLNE_COUPON_CRTNB AS offline_serialnumber
|
||||
,SD.COUPON_SNDNG_INNB
|
||||
,SD.COUPON_SNDNG_USE_AT AS issue_stop
|
||||
,DW.DWLD_COUPON_INNB AS download_seq
|
||||
,DW.MBR_DV_CD AS mbr_dv_cd
|
||||
,DW.MBR_INNB AS member_seq
|
||||
,DW.REGIST_DT AS DWLD_REGIST_DT
|
||||
,DW.COUPON_STTUS_CD AS use_status
|
||||
,DW.COUPON_USE_DT AS use_date
|
||||
FROM GC_COUPON C
|
||||
INNER JOIN GC_OFFLINE_COUPON OFC
|
||||
ON OFC.OFLNE_COUPON_CRTNB = #{oflneCouponCrtnb}
|
||||
AND C.SOPMAL_CD = OFC.SOPMAL_CD
|
||||
AND C.COUPON_INNB = OFC.COUPON_INNB
|
||||
INNER JOIN GC_DOWNLOAD DW
|
||||
ON OFC.OFLNE_COUPON_INNB = DW.OFLNE_COUPON_INNB
|
||||
AND OFC.SOPMAL_CD = DW.SOPMAL_CD
|
||||
AND OFC.COUPON_INNB = DW.COUPON_INNB
|
||||
AND DW.USE_AT = 'Y'
|
||||
INNER JOIN GC_COUPON_SNDNG SD
|
||||
ON DW.COUPON_SNDNG_INNB = SD.COUPON_SNDNG_INNB
|
||||
WHERE C.USE_AT = 'Y'
|
||||
AND C.SOPMAL_CD = #{sopmalCd}
|
||||
AND C.COUPON_INNB = #{couponInnb}
|
||||
LIMIT 1
|
||||
) AS primary_result
|
||||
)
|
||||
UNION ALL
|
||||
(
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
C.SOPMAL_CD AS coupon_site
|
||||
,C.COUPON_INNB AS coupon_seq
|
||||
,C.COUPON_DC AS coupon_desc
|
||||
,C.VALIDPD_BGN_DT AS issue_startdate
|
||||
,C.VALIDPD_END_DT AS issue_enddate
|
||||
,C.VALIDPD_KND_CD AS issue_priod_type
|
||||
,C.VALIDPD_DE_CNT AS after_issue_day
|
||||
,CASE
|
||||
WHEN C.VALIDPD_KND_CD = '01' AND C.VALIDPD_BGN_DT > SYSDATE() THEN 'N'
|
||||
WHEN C.VALIDPD_KND_CD = '01' AND C.VALIDPD_BGN_DT < SYSDATE() THEN 'Y'
|
||||
WHEN C.VALIDPD_KND_CD = '02' THEN 'Y'
|
||||
END AS START_DATE
|
||||
,CASE
|
||||
WHEN C.VALIDPD_KND_CD = '01' AND C.VALIDPD_END_DT < SYSDATE() THEN 'N'
|
||||
WHEN C.VALIDPD_KND_CD = '01' AND C.VALIDPD_END_DT > SYSDATE() THEN 'Y'
|
||||
WHEN C.VALIDPD_KND_CD = '02' AND C.VALIDPD_DE_CNT > 0 THEN 'Y'
|
||||
WHEN C.VALIDPD_KND_CD = '02' AND C.VALIDPD_DE_CNT <= 0 THEN 'N'
|
||||
END AS END_DATE
|
||||
,OFC.OFLNE_COUPON_INNB AS offline_seq
|
||||
,OFC.REGIST_DT AS OFLNE_REGIST_DT
|
||||
,OFC.OFLNE_COUPON_CRTNB AS offline_serialnumber
|
||||
,SD.COUPON_SNDNG_INNB
|
||||
,SD.COUPON_SNDNG_USE_AT AS issue_stop
|
||||
,'0' AS download_seq
|
||||
,'' AS mbr_dv_cd
|
||||
,0 AS member_seq
|
||||
,C.REGIST_DT AS DWLD_REGIST_DT
|
||||
,'02' AS use_status
|
||||
,'' AS use_date
|
||||
FROM GC_COUPON C
|
||||
INNER JOIN GC_OFFLINE_COUPON OFC
|
||||
ON OFC.OFLNE_COUPON_CRTNB = #{oflneCouponCrtnb}
|
||||
AND C.SOPMAL_CD = OFC.SOPMAL_CD
|
||||
AND C.COUPON_INNB = OFC.COUPON_INNB
|
||||
INNER JOIN GC_COUPON_SNDNG SD
|
||||
ON OFC.COUPON_SNDNG_INNB = SD.COUPON_SNDNG_INNB
|
||||
WHERE C.USE_AT = 'Y'
|
||||
AND C.SOPMAL_CD = #{sopmalCd}
|
||||
AND C.COUPON_INNB = #{couponInnb}
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM GC_COUPON C
|
||||
INNER JOIN GC_OFFLINE_COUPON OFC
|
||||
ON OFC.OFLNE_COUPON_CRTNB = #{oflneCouponCrtnb}
|
||||
AND C.SOPMAL_CD = OFC.SOPMAL_CD
|
||||
AND C.COUPON_INNB = OFC.COUPON_INNB
|
||||
INNER JOIN GC_DOWNLOAD DW
|
||||
ON OFC.OFLNE_COUPON_INNB = DW.OFLNE_COUPON_INNB
|
||||
AND OFC.SOPMAL_CD = DW.SOPMAL_CD
|
||||
AND OFC.COUPON_INNB = DW.COUPON_INNB
|
||||
AND DW.USE_AT = 'Y'
|
||||
INNER JOIN GC_COUPON_SNDNG SD
|
||||
ON DW.COUPON_SNDNG_INNB = SD.COUPON_SNDNG_INNB
|
||||
WHERE C.USE_AT = 'Y'
|
||||
AND C.SOPMAL_CD = #{sopmalCd}
|
||||
AND C.COUPON_INNB = #{couponInnb}
|
||||
)
|
||||
LIMIT 1
|
||||
) AS fallback_result
|
||||
)
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 다운로드 쿠폰 사용처리 -->
|
||||
<update id="updatePosDwldCouponSttusCdUpdt">
|
||||
<![CDATA[
|
||||
UPDATE GC_DOWNLOAD SET
|
||||
USEPLC_DV_CD = '02'
|
||||
,COUPON_STTUS_CD = '03'
|
||||
,COUPON_USE_DT = SYSDATE()
|
||||
,UPDUSR = #{useq}
|
||||
,UPDT_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND DWLD_COUPON_INNB = #{download_seq}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 오프라인 쿠폰 다운로드 insert -->
|
||||
<insert id="insertPosDwldCouponRegist"
|
||||
keyProperty="download_seq"
|
||||
useGeneratedKeys="true">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_DOWNLOAD (
|
||||
OFLNE_COUPON_INNB
|
||||
,COUPON_INNB
|
||||
,COUPON_SNDNG_INNB
|
||||
,SOPMAL_CD
|
||||
,MBR_INNB
|
||||
,MBR_DV_CD
|
||||
,CUPNPK_INNB
|
||||
,COUPON_SNDNG_TY_CD
|
||||
,CUPNPK_NM
|
||||
,CUPNPK_DC
|
||||
,COUP_NM
|
||||
,COUPON_DC
|
||||
,USE_ENVRN_CD
|
||||
,OTR_COUPON_SMTM_USE_AT
|
||||
,DPLCT_DWLD_AT
|
||||
,DPLCT_DSCNT_AT
|
||||
,USE_POSBL_AMT
|
||||
,GOODS_APPLC_DV_CD
|
||||
,VALIDPD_BGN_DT
|
||||
,VALIDPD_END_DT
|
||||
,OFLNE_COUPON_CRTNB
|
||||
,USEPLC_DV_CD
|
||||
,COUPON_STTUS_CD
|
||||
,COUPON_USE_DT
|
||||
,RECOVRY_ORGINL_COUPON
|
||||
,MBR_NM
|
||||
,MBTLNB
|
||||
,BNEF_DV_CD
|
||||
,ADIT_DSCNT_CD
|
||||
,ADIT_DSCNT_AMT
|
||||
,DSCNT_MXMM_AMT
|
||||
,DLVY_AMT_DSCNT_DV_CD
|
||||
,DLVY_AMT_DSCNT_AMT
|
||||
,DLVY_AMT_MXMM_DSCNT_AMT
|
||||
,USE_AT
|
||||
,REGUSR
|
||||
,REGIST_DT
|
||||
,UPDUSR
|
||||
,UPDT_DT
|
||||
) SELECT
|
||||
OFC.OFLNE_COUPON_INNB
|
||||
,OFC.COUPON_INNB
|
||||
,OFC.COUPON_SNDNG_INNB
|
||||
,OFC.SOPMAL_CD
|
||||
,#{useq} AS MBR_INNB
|
||||
,#{mbr_dv_cd} AS MBR_DV_CD
|
||||
,NULL AS CUPNPK_INNB
|
||||
,'03' AS COUPON_SNDN_TY_CD
|
||||
,NULL AS CUPNPK_NM
|
||||
,NULL AS CUPNPK_DC
|
||||
,C.COUP_NM
|
||||
,C.COUPON_DC
|
||||
,C.USE_ENVRN_CD
|
||||
,C.OTR_COUPON_SMTM_USE_AT
|
||||
,C.DPLCT_DWLD_AT
|
||||
,C.DPLCT_DSCNT_AT
|
||||
,C.USE_POSBL_AMT
|
||||
,C.GOODS_APPLC_DV_CD
|
||||
,CASE
|
||||
WHEN C.VALIDPD_KND_CD = '01' THEN C.VALIDPD_BGN_DT
|
||||
WHEN C.VALIDPD_KND_CD = '02' THEN CONCAT(CURDATE(), ' 00:00:00')
|
||||
END AS VALIDPD_BGN_DT
|
||||
,CASE
|
||||
WHEN C.VALIDPD_KND_CD = '01' THEN C.VALIDPD_END_DT
|
||||
WHEN C.VALIDPD_KND_CD = '02' THEN CONCAT(DATE(DATE_ADD(SYSDATE(), INTERVAL C.VALIDPD_DE_CNT DAY)), ' 23:59:59')
|
||||
END AS VALIDPD_END_DT
|
||||
,OFC.OFLNE_COUPON_CRTNB
|
||||
,'02' USEPLC_DV_CD
|
||||
,'03' AS COUPON_STTUS_CD
|
||||
,NOW() COUPON_USE_DT
|
||||
,NULL RECOVRY_ORGINL_COUPON
|
||||
,OFC.SNDNG_TRGTER_NM AS MBR_NM
|
||||
,OFC.SNDNG_TRGET_TELNB AS MBTLNB
|
||||
,C.BNEF_DV_CD
|
||||
,C.ADIT_DSCNT_CD
|
||||
,C.ADIT_DSCNT_AMT
|
||||
,C.DSCNT_MXMM_AMT
|
||||
,C.DLVY_AMT_DSCNT_DV_CD
|
||||
,C.DLVY_AMT_DSCNT_AMT
|
||||
,C.DLVY_AMT_MXMM_DSCNT_AMT
|
||||
,'Y' AS USE_AT
|
||||
,OFC.REGUSR AS REGUSR
|
||||
,SYSDATE() REGIST_DT
|
||||
,OFC.UPDUSR AS UPDUSR
|
||||
,SYSDATE() UPDT_DT
|
||||
FROM GC_OFFLINE_COUPON OFC
|
||||
INNER JOIN GC_COUPON C
|
||||
ON OFC.SOPMAL_CD = C.SOPMAL_CD
|
||||
AND OFC.COUPON_INNB = C.COUPON_INNB
|
||||
WHERE 1 = 1
|
||||
AND OFC.SOPMAL_CD = #{coupon_site}
|
||||
AND OFC.OFLNE_COUPON_CRTNB = #{offline_serialnumber}
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- 다운로드 쿠폰 사용 내역(로그) insert -->
|
||||
<insert id="insertPosDwldCouponUsedLogRegist" keyProperty="couponUseDtlsIdnb" useGeneratedKeys="true">
|
||||
<![CDATA[
|
||||
INSERT INTO GC_ORDER_COUPON (
|
||||
DWLD_COUPON_INNB,
|
||||
SOPMAL_CD,
|
||||
ORDR_INNB,
|
||||
COUPON_ISSU_SOPMAL_CD,
|
||||
OFLNE_COUPON_CRTNB,
|
||||
MANAGE_MEMO,
|
||||
CANCL_AT,
|
||||
REGUSR,
|
||||
REGIST_DT,
|
||||
UPDUSR,
|
||||
UPDT_DT
|
||||
) SELECT
|
||||
#{download_seq},
|
||||
#{sopmalCd},
|
||||
#{ordrInnb},
|
||||
#{coupon_site},
|
||||
DW.OFLNE_COUPON_CRTNB,
|
||||
#{manageMemo},
|
||||
'N',
|
||||
#{useq},
|
||||
SYSDATE(),
|
||||
#{useq},
|
||||
SYSDATE()
|
||||
FROM GC_DOWNLOAD DW
|
||||
LEFT JOIN GC_COUPON_SNDNG SD
|
||||
ON DW.COUPON_SNDNG_INNB = SD.COUPON_SNDNG_INNB
|
||||
WHERE DWLD_COUPON_INNB = #{download_seq}
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- 복원 쿠폰 조회 -->
|
||||
<select id="selectPosUseCouponListInqire">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
OC.DWLD_COUPON_INNB
|
||||
,OC.SOPMAL_CD
|
||||
,OC.ORDR_INNB
|
||||
,OC.COUPON_ISSU_SOPMAL_CD
|
||||
,OC.OFLNE_COUPON_CRTNB
|
||||
,OC.MANAGE_MEMO
|
||||
,OC.CANCL_AT
|
||||
,OC.CANCL_DT
|
||||
FROM GC_ORDER_COUPON OC
|
||||
WHERE 1 = 1
|
||||
AND OC.SOPMAL_CD = #{sopmalCd}
|
||||
AND OC.ORDR_INNB = #{ordrInnb}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 다운로드 쿠폰 복원처리 -->
|
||||
<update id="updatePosDwldCouponRecvryUpdt">
|
||||
<![CDATA[
|
||||
UPDATE GC_DOWNLOAD SET
|
||||
COUP_NM = CASE
|
||||
WHEN COUP_NM LIKE '[복원]%' THEN COUP_NM
|
||||
ELSE CONCAT('[복원]', COUP_NM)
|
||||
END
|
||||
,COUPON_STTUS_CD = '02'
|
||||
,UPDUSR = #{mbrInnb}
|
||||
,UPDT_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND DWLD_COUPON_INNB = #{dwldCouponInnb}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 다운로드 쿠폰 사용내역 취소처리 상태 업데이트 -->
|
||||
<update id="updatePosOrderCouponCancelUpdt">
|
||||
<![CDATA[
|
||||
UPDATE GC_ORDER_COUPON SET
|
||||
CANCL_AT = 'Y'
|
||||
,CANCL_DT = SYSDATE()
|
||||
,UPDUSR = #{mbrInnb}
|
||||
,UPDT_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND DWLD_COUPON_INNB = #{dwldCouponInnb }
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -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.pos.pos.mapper.PosMapper">
|
||||
<!--포스 - 매장 정보 조회-->
|
||||
<select id="selectBOPosStrSrch" parameterType="map" resultType="dataMap">
|
||||
SELECT
|
||||
STR_INNB
|
||||
,TENTCPN_NM -- 매장명
|
||||
,CONCAT('S', CAST(STR_OPER_DV AS UNSIGNED)) AS STR_OPER_DV -- 매장운영구분
|
||||
,POS_CD_DV_VAL
|
||||
,POS_CD_PASSIV_INPUT_VAL
|
||||
,STR_OPER_DV AS STR_OPER_DV_CD
|
||||
FROM GC_STORE
|
||||
WHERE 1=1
|
||||
AND MRHST_AT='Y'
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(search_corporate,'Y')">
|
||||
AND MANAGE_CPR = #{search_corporate}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(provider_status)">
|
||||
AND TENT_STTUS = #{provider_status}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(pgubun)">
|
||||
AND POS_CD_DV_VAL = #{pgubun}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(pcode)">
|
||||
AND POS_CD_PASSIV_INPUT_VAL = #{pcode}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(order_by)">
|
||||
ORDER BY #{order_by}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!--포스 - 매장 방문기록 수정-->
|
||||
<update id="updateMbrStrVisit" parameterType="map">
|
||||
UPDATE
|
||||
GC_MEMBER_SITE
|
||||
SET
|
||||
POS_STR_INNB = #{posStrInnb},
|
||||
POS_RECENT_VISIT_DT = SYSDATE(),
|
||||
UPDUSR = #{useq},
|
||||
UPDT_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND MBR_INNB = #{useq}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND MBR_DV_CD = 'GC'
|
||||
</update>
|
||||
|
||||
<!-- 포스-주문 가져오기 (get_order_posinfo) -->
|
||||
<select id="selectOrderPosInfo" parameterType="map" resultType="dataMap">
|
||||
SELECT
|
||||
P.*
|
||||
, IFNULL(O.MBR_INNB, 0) MBR_INNB
|
||||
, O.SOPMAL_CD
|
||||
, O.MBR_INNB
|
||||
, O.MBR_DV_CD
|
||||
FROM GC_ORDER_POSINFO P
|
||||
LEFT JOIN GC_ORDER O ON(O.ORDR_INNB=P.ORDER_SEQ)
|
||||
WHERE 1=1
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(storeSeq)">
|
||||
AND P.STORE_SEQ = #{storeSeq}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(pdate)">
|
||||
AND P.PDATE = DATE(#{pdate})
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(pono)">
|
||||
AND P.PONO = #{pono}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(pnumb)">
|
||||
AND P.PNUMB = #{pnumb}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 주문 아이템 가져오기 (get_order_item) -->
|
||||
<select id="selectOrderItem" parameterType="map" resultType="dataMap">
|
||||
SELECT ORDER_SEQ, ITEM_OPTION_SEQ, ITEM_SEQ, STEP, PRICE, ORI_PRICE, CONSUMER_PRICE, EA, REFUND_EA, UNIT_EMONEY, EMONEY_SALE_UNIT, EMONEY_SALE_REST
|
||||
FROM FM_ORDER_ITEM_OPTION
|
||||
WHERE 1=1
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(order_seq)">
|
||||
AND ORDER_SEQ = #{order_seq}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(g_poscode)">
|
||||
AND G_POSCODE = #{g_poscode}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 포스 주문 결제 등록 -->
|
||||
<insert id="insertPosOrder" parameterType="map" useGeneratedKeys="true" keyProperty="seq">
|
||||
INSERT INTO GC_ORDER_POSINFO (
|
||||
ORDER_SEQ -- 주문번호
|
||||
, STORE_SEQ
|
||||
, PGUBUN
|
||||
, PCODE
|
||||
, PONO
|
||||
, PDATE
|
||||
, PNUMB
|
||||
, EMP_CODE -- 판매사원 코드
|
||||
, EMP_NAME -- 판매사원 이름
|
||||
) VALUES (
|
||||
#{order_seq}
|
||||
, #{store_seq}
|
||||
, #{pgubun}
|
||||
, #{pcode}
|
||||
, #{pono}
|
||||
, #{pdate}
|
||||
, #{pnumb}
|
||||
, #{emp_code}
|
||||
, #{emp_name}
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 매출 - 매출검색 (as_is 쿼리임. 데이터 이관 후 테이블 보면서 to_be 작성예정 )-->
|
||||
<select id="selectBOPosOrderSrchList" parameterType="map" resultType="dataMap">
|
||||
select M.order_seq,
|
||||
date_format(M.deposit_date, '%Y%m%d') order_date,
|
||||
M.skintype,
|
||||
M.step,
|
||||
O.step,
|
||||
S.provider_seq,
|
||||
S.provider_name_home,
|
||||
S.corp_brand,
|
||||
P.pgubun,
|
||||
P.pcode,
|
||||
P.pono,
|
||||
P.pdate,
|
||||
P.pnumb,
|
||||
D.goods_seq,
|
||||
D.goods_code,
|
||||
D.goods_name,
|
||||
O.item_seq,
|
||||
O.ea,
|
||||
O.price,
|
||||
(O.price * O.ea) price_sum,
|
||||
(O.member_sale + O.member_sale_rest
|
||||
+ (O.mobile_sale_unit * O.ea) + O.mobile_sale_rest
|
||||
+ (O.fblike_sale_unit * O.ea) + O.fblike_sale_rest
|
||||
+ (O.coupon_sale_unit * O.ea) + O.coupon_sale_rest
|
||||
+ (O.code_sale_unit * O.ea) + O.code_sale_rest
|
||||
+ (O.referer_sale_unit * O.ea) + O.referer_sale_rest
|
||||
+ (O.emoney_sale_unit * O.ea) + O.emoney_sale_rest
|
||||
+ (O.cash_sale_unit * O.ea) + O.cash_sale_rest
|
||||
+ (O.enuri_sale_unit * O.ea) + O.enuri_sale_rest
|
||||
+ (O.npay_point_sale_unit * O.ea) + O.npay_point_sale_rest
|
||||
) sale_sum
|
||||
from fm_order M
|
||||
left join fm_order_item D on (D.order_seq = M.order_seq)
|
||||
left join fm_order_item_option O on (O.item_seq = D.item_seq)
|
||||
left join fm_order_posInfo P on (P.order_seq = M.order_seq)
|
||||
left join fm_provider S on (S.provider_seq = P.store_seq)
|
||||
where M.member_seq = #{member_seq}
|
||||
and M.deposit_date between #{from_date} ' 00:00:00' and #{to_date}' 23:59:59'
|
||||
and O.step between '25' and '85'
|
||||
order by order_date asc
|
||||
</select>
|
||||
|
||||
<!-- 주문 정보 가져오기 (get_order) -->
|
||||
<select id="selectOrder" parameterType="map" resultType="dataMap">
|
||||
SELECT O.ORDER_SEQ, O.MEMBER_SEQ, O.STEP, O.SETTLEPRICE, O.EMONEY, O.REGIST_DATE, O.DEPOSIT_DATE
|
||||
FROM FM_ORDER O
|
||||
WHERE 1=1
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(order_seq)">
|
||||
AND O.ORDER_SEQ = #{order_seq}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(member_seq)">
|
||||
AND O.MEMBER_SEQ = #{member_seq}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 포스-주문 가져오기 (get_order_posinfo : g_poscode) -->
|
||||
<select id="selectOrderGPosInfo" parameterType="String" resultType="dataMap">
|
||||
SELECT
|
||||
P.*, IFNULL(O.MEMBER_SEQ, 0) MEMBER_SEQ
|
||||
FROM FM_ORDER_POSINFO P
|
||||
LEFT JOIN FM_ORDER O ON(O.ORDER_SEQ=P.ORDER_SEQ)
|
||||
WHERE 1=1
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(gPoscode)">
|
||||
AND P.G_POSCODE = #{g_poscode}
|
||||
</if>
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
<!-- 주문 상품 가져오기 (get_goods) -->
|
||||
<select id="selectGoods" parameterType="dataMap" resultType="dataMap">
|
||||
SELECT GOODS_SEQ,
|
||||
PROVIDER_SEQ,
|
||||
GOODS_NAME,
|
||||
GOODS_CODE,
|
||||
GOODS_TYPE,
|
||||
GOODS_KIND,
|
||||
DEFAULT_CONSUMER_PRICE,
|
||||
DEFAULT_PRICE
|
||||
FROM GC_GOODS
|
||||
WHERE GOODS_SEQ = #{goods_seq}
|
||||
</select>
|
||||
|
||||
<!-- 주문 상품옵션 가져오기 (get_goods) -->
|
||||
<select id="selectGoodsItem" parameterType="dataMap" resultType="dataMap">
|
||||
SELECT OPTION_TITLE,
|
||||
OPTION1,
|
||||
OPTION2,
|
||||
OPTION3,
|
||||
OPTION4,
|
||||
OPTION5,
|
||||
PRICE,
|
||||
CONSUMER_PRICE
|
||||
FROM FM_GOODS_OPTION
|
||||
WHERE GOODS_SEQ = #{goods_seq}
|
||||
AND OPTION_SEQ = #{option_seq}
|
||||
</select>
|
||||
|
||||
<!-- 포스주문 날짜 업데이트 -->
|
||||
<update id="updateSetPosDay" parameterType="map">
|
||||
<![CDATA[
|
||||
UPDATE FM_MEMBER
|
||||
SET POS_DAY = #{posday} -- SYSDATE() yyyymmdd
|
||||
WHERE MEMBER_SEQ = #{memberSeq}
|
||||
AND (POS_DAY IS NULL OR POS_DAY < #{posday})
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!--포스 - 회원 건수 조회-->
|
||||
<select id="selectPosMbrCnt" parameterType="map" resultType="int">
|
||||
SELECT
|
||||
COUNT(1)
|
||||
FROM
|
||||
GC_MEMBER GM
|
||||
WHERE GM.USE_AT = 'Y'
|
||||
AND GM.MBR_DV_CD = 'GC'
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(search_key)">
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(search_item, 'uid')">
|
||||
AND GM.MBR_ID = #{search_key}
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(search_item, 'username')">
|
||||
AND GM.MBR_NM = #{search_key}
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(search_item, 'cp')">
|
||||
AND GM.MBTLNB = HEX(AES_ENCRYPT(REPLACE(#{search_key},'-',''), #{secretKey}))
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!--포스 - 회원 리스트 조회-->
|
||||
<select id="selectBOPosMbrList" parameterType="map" resultType="DataMap">
|
||||
SELECT
|
||||
A.MBR_INNB AS USEQ,
|
||||
A.MBR_ID AS UID,
|
||||
A.MBR_DV_CD,
|
||||
CASE
|
||||
WHEN A.APPN_CNT > 0 THEN CONCAT('[판매금지]',A.MBR_NM)
|
||||
WHEN A.APPN_CNT = 0 AND CONCAT(A.POS_CD_DV_VAL,A.POS_CD_PASSIV_INPUT_VAL) = #{storecode} THEN CONCAT(A.MBR_NM , ' (MY)')
|
||||
ELSE A.MBR_NM
|
||||
END AS USERNAME,
|
||||
A.MBR_NM AS DISPLAYNAME,
|
||||
A.BRTH_DE AS BIRTHDAY,
|
||||
A.ADDR1,
|
||||
A.ADDR2,
|
||||
CASE
|
||||
WHEN LENGTH(A.MBTLNB) = 11 THEN
|
||||
CONCAT(SUBSTR(A.MBTLNB, 1, 3), '-', SUBSTR(A.MBTLNB, 4, 4), '-', SUBSTR(A.MBTLNB, 8, 4))
|
||||
WHEN LENGTH(A.MBTLNB) = 10 AND A.MBTLNB LIKE '02%' THEN
|
||||
CONCAT(SUBSTR(A.MBTLNB, 1, 2), '-', SUBSTR(A.MBTLNB, 3, 4), '-', SUBSTR(A.MBTLNB, 7, 4))
|
||||
WHEN LENGTH(A.MBTLNB) = 10 AND A.MBTLNB NOT LIKE '02%' THEN
|
||||
CONCAT(SUBSTR(A.MBTLNB, 1, 3), '-', SUBSTR(A.MBTLNB, 4, 3), '-', SUBSTR(A.MBTLNB, 7, 4))
|
||||
WHEN LENGTH(A.MBTLNB) = 9 THEN
|
||||
CONCAT(SUBSTR(A.MBTLNB, 1, 2), '-', SUBSTR(A.MBTLNB, 3, 3), '-', SUBSTR(A.MBTLNB, 6, 4))
|
||||
WHEN LENGTH(A.MBTLNB) = 8 THEN
|
||||
CONCAT(SUBSTR(A.MBTLNB, 1, 4), '-', SUBSTR(A.MBTLNB, 5, 4))
|
||||
ELSE
|
||||
A.MBTLNB -- 포맷팅하지 않은 원본 값 반환
|
||||
END AS PHONE,
|
||||
CASE
|
||||
WHEN LENGTH(A.MBTLNB) = 11 THEN
|
||||
CONCAT(SUBSTR(A.MBTLNB, 1, 3), '-', SUBSTR(A.MBTLNB, 4, 4), '-', SUBSTR(A.MBTLNB, 8, 4))
|
||||
WHEN LENGTH(A.MBTLNB) = 10 AND A.MBTLNB LIKE '02%' THEN
|
||||
CONCAT(SUBSTR(A.MBTLNB, 1, 2), '-', SUBSTR(A.MBTLNB, 3, 4), '-', SUBSTR(A.MBTLNB, 7, 4))
|
||||
WHEN LENGTH(A.MBTLNB) = 10 AND A.MBTLNB NOT LIKE '02%' THEN
|
||||
CONCAT(SUBSTR(A.MBTLNB, 1, 3), '-', SUBSTR(A.MBTLNB, 4, 3), '-', SUBSTR(A.MBTLNB, 7, 4))
|
||||
WHEN LENGTH(A.MBTLNB) = 9 THEN
|
||||
CONCAT(SUBSTR(A.MBTLNB, 1, 2), '-', SUBSTR(A.MBTLNB, 3, 3), '-', SUBSTR(A.MBTLNB, 6, 4))
|
||||
WHEN LENGTH(A.MBTLNB) = 8 THEN
|
||||
CONCAT(SUBSTR(A.MBTLNB, 1, 4), '-', SUBSTR(A.MBTLNB, 5, 4))
|
||||
ELSE
|
||||
A.MBTLNB -- 포맷팅하지 않은 원본 값 반환
|
||||
END AS CP,
|
||||
CAST(ROUND(IFNULL(A.MLG,0),0) AS CHAR CHARACTER SET utf8mb4) AS TOTALPOINT
|
||||
FROM(SELECT
|
||||
GM.MBR_INNB,
|
||||
GM.MBR_ID,
|
||||
GM.MBR_NM,
|
||||
GM.MBR_DV_CD,
|
||||
DATE_FORMAT(GM.BRTH_DE,'%Y-%m-%d') AS BRTH_DE,
|
||||
CASE
|
||||
WHEN GM.ADRES_DV = '02' THEN GM.LNB_ADRES
|
||||
ELSE GM.RNM_ADRES
|
||||
END AS ADDR1,
|
||||
GM.DTL_ADRES AS ADDR2,
|
||||
CAST(AES_DECRYPT(UNHEX(GM.MBTLNB) ,#{secretKey}) AS CHAR(50))AS MBTLNB,
|
||||
GM.REGIST_DT,
|
||||
GS.STR_INNB,
|
||||
GS.STR_OPER_DV,
|
||||
GM.JOIN_MTH_CD,
|
||||
GS.POS_CD_DV_VAL,
|
||||
GS.POS_CD_PASSIV_INPUT_VAL,
|
||||
FN_GET_COMMCODE_NAME('STR_DV', GS.STR_OPER_DV) STR_OPER_NM,
|
||||
SUM( FMI.BLCE ) AS MLG,
|
||||
COUNT(GMA.APPN_INNB) AS APPN_CNT
|
||||
FROM GC_MEMBER GM
|
||||
LEFT JOIN GC_EXTRL_MEMBER GEM
|
||||
ON GM.MBR_INNB = GEM.MBR_INNB
|
||||
AND GM.MBR_DV_CD = GEM.MBR_DV_CD
|
||||
AND GEM.SOPMAL_CD = (SELECT REPRSNT_BRAND FROM GC_STORE WHERE CONCAT(POS_CD_DV_VAL,POS_CD_PASSIV_INPUT_VAL) = #{storecode})
|
||||
AND GEM.EXTRL_INTRLCK_DV_CD = '03'
|
||||
LEFT JOIN GC_STORE GS
|
||||
ON GEM.STR_INNB = GS.STR_INNB
|
||||
AND GEM.SOPMAL_CD = GS.REPRSNT_BRAND
|
||||
LEFT JOIN GC_MEMBER_APPN GMA
|
||||
ON GMA.MBR_IDNTFC_INFO = GM.MBR_INNB
|
||||
AND GMA.MBR_DV_CD = GM.MBR_DV_CD
|
||||
AND GMA.APPN_DV_CD = '02'
|
||||
LEFT JOIN GC_MILEAGE FMI
|
||||
ON GM.MBR_INNB = FMI.MBR_INNB
|
||||
AND GM.MBR_DV_CD = FMI.MBR_DV_CD
|
||||
AND FMI.BLCE > 0
|
||||
AND FMI.USE_POSBL_END_DT >= DATE_FORMAT(NOW(), '%Y-%m-01')
|
||||
AND FMI.MLG_ACCML_DV_CD IN ('add', 'up')
|
||||
AND FMI.CANCL_AT = 'N'
|
||||
WHERE 1=1
|
||||
AND GM.USE_AT = 'Y'
|
||||
AND GM.MBR_DV_CD = 'GC'
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(search_key)">
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(search_item, 'uid')">
|
||||
AND GM.MBR_ID = #{search_key}
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(search_item, 'username')">
|
||||
AND GM.MBR_NM = #{search_key}
|
||||
</when>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(search_item, 'cp')">
|
||||
AND GM.MBTLNB = HEX(AES_ENCRYPT(REPLACE(#{search_key},'-',''), #{secretKey}))
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
GROUP BY
|
||||
GM.MBR_INNB,
|
||||
GM.MBR_ID,
|
||||
GM.MBR_NM,
|
||||
GM.BRTH_DE,
|
||||
ADDR1,
|
||||
ADDR2,
|
||||
MBTLNB,
|
||||
GM.REGIST_DT,
|
||||
GS.STR_INNB,
|
||||
GS.STR_OPER_DV,
|
||||
GM.JOIN_MTH_CD,
|
||||
GS.POS_CD_DV_VAL,
|
||||
GS.POS_CD_PASSIV_INPUT_VAL,
|
||||
STR_OPER_NM
|
||||
)A
|
||||
ORDER BY A.MBR_NM
|
||||
LIMIT 40 OFFSET 0
|
||||
</select>
|
||||
|
||||
<select id = "selectPosMbrAppn" parameterType="map" resultType="int">
|
||||
SELECT COUNT(1) FROM GC_MEMBER_APPN WHERE IDNTFC_STDR_CD = 'order_mbtlnb' AND IDNTFC_INFO = HEX(AES_ENCRYPT(REPLACE(#{search_key},'-',''), #{secretKey})) AND APPN_DV_CD = '02'
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,447 @@
|
||||
<?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.puri.mapper.BOPuriMapper">
|
||||
|
||||
|
||||
<!-- 정수기 판매 및 설치 내역 조회 WHERE 절 -->
|
||||
<sql id="selectBOPuriOrderListFormWhere">
|
||||
<![CDATA[
|
||||
WHERE 1=1
|
||||
AND gpo.status != 'delete'
|
||||
]]>
|
||||
<choose>
|
||||
<when test="srchOrderDateType == 'purchsDe'">
|
||||
<if test="sndngOrderReqstSDate != null and sndngOrderReqstEDate != null">
|
||||
<![CDATA[
|
||||
AND gpo.purchs_de between #{sndngOrderReqstSDate} AND #{sndngOrderReqstEDate}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchOrderDateType == 'dlivyDe'">
|
||||
<if test="sndngOrderReqstSDate != null and sndngOrderReqstEDate != null">
|
||||
<![CDATA[
|
||||
AND gpo.dlivy_de between #{sndngOrderReqstSDate} AND #{sndngOrderReqstEDate}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchOrderDateType == 'visitDe'">
|
||||
<if test="sndngOrderReqstSDate != null and sndngOrderReqstEDate != null">
|
||||
<![CDATA[
|
||||
AND gpo.visit_de between #{sndngOrderReqstSDate} AND #{sndngOrderReqstEDate}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
|
||||
</choose>
|
||||
<choose>
|
||||
<when test="srchOrderInfoType == 'purchsrNm'">
|
||||
<if test="srchOrdrText != null and srchOrdrText != ''">
|
||||
<![CDATA[
|
||||
AND gpo.purchsr_nm = #{srchOrdrText}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchOrderInfoType == 'cttpc'">
|
||||
<if test="srchOrdrText != null and srchOrdrText != ''">
|
||||
<![CDATA[
|
||||
AND gpo.cttpc = HEX(AES_ENCRYPT(#{srchOrdrText}, #{secretKey}))
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchOrderInfoType == 'dlivyNm'">
|
||||
<if test="srchOrdrText != null and srchOrdrText != ''">
|
||||
<![CDATA[
|
||||
AND gpo.dlivy_nm = #{srchOrdrText}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchOrderInfoType == 'dlivyCttpc'">
|
||||
<if test="srchOrdrText != null and srchOrdrText != ''">
|
||||
<![CDATA[
|
||||
AND gpo.dlivy_cttpc = HEX(AES_ENCRYPT(#{srchOrdrText}, #{secretKey}))
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchOrderInfoType == 'goodsCd'">
|
||||
<if test="srchOrdrText != null and srchOrdrText != ''">
|
||||
<![CDATA[
|
||||
AND gpo.goods_cd = #{srchOrdrText}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchOrderInfoType == 'erpCode'">
|
||||
<if test="srchOrdrText != null and srchOrdrText != ''">
|
||||
<![CDATA[
|
||||
AND gpo.erp_code = #{srchOrdrText}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
|
||||
</choose>
|
||||
|
||||
<choose>
|
||||
<when test="srchMallCdType != ''">
|
||||
<![CDATA[
|
||||
AND gpo.purchs_cd = #{srchMallCdType}
|
||||
]]>
|
||||
</when>
|
||||
|
||||
</choose>
|
||||
|
||||
<choose>
|
||||
<when test="srchGoodsType != ''">
|
||||
<![CDATA[
|
||||
AND gpo.goods_cd = #{srchGoodsType}
|
||||
]]>
|
||||
</when>
|
||||
|
||||
</choose>
|
||||
|
||||
<choose>
|
||||
<when test="srchVisitType != ''">
|
||||
<![CDATA[
|
||||
AND gpo.visit_trgter_at = #{srchVisitType}
|
||||
]]>
|
||||
</when>
|
||||
|
||||
</choose>
|
||||
|
||||
<choose>
|
||||
<when test="srchAlimType != ''">
|
||||
<![CDATA[
|
||||
AND gpa.status = #{srchAlimType}
|
||||
]]>
|
||||
</when>
|
||||
|
||||
</choose>
|
||||
|
||||
<choose>
|
||||
<when test="srchSndngType == 'installDe'">
|
||||
<if test="sndngAllimReqstSDate != null and sndngAllimReqstEDate != null">
|
||||
<![CDATA[
|
||||
AND gpa.install_de between #{sndngAllimReqstSDate} AND #{sndngAllimReqstEDate}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchSndngType == 'frstSndngDe'">
|
||||
<if test="sndngAllimReqstSDate != null and sndngAllimReqstEDate != null">
|
||||
<![CDATA[
|
||||
AND gpa.frst_sndng_de between #{sndngAllimReqstSDate} AND #{sndngAllimReqstEDate}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchSndngType == 'prevSndngDe'">
|
||||
<if test="sndngAllimReqstSDate != null and sndngAllimReqstEDate != null">
|
||||
<![CDATA[
|
||||
AND gpa.prev_sndng_de between #{sndngAllimReqstSDate} AND #{sndngAllimReqstEDate}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchSndngType == 'nextSndngResveDe'">
|
||||
<if test="sndngAllimReqstSDate != null and sndngAllimReqstEDate != null">
|
||||
<![CDATA[
|
||||
AND gpa.next_sndng_resve_de between #{sndngAllimReqstSDate} AND #{sndngAllimReqstEDate}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
|
||||
</choose>
|
||||
|
||||
<choose>
|
||||
<when test="srchAlimInfoType == 'cstmrNm'">
|
||||
<if test="srchAllimText != null and srchAllimText != ''">
|
||||
<![CDATA[
|
||||
AND gpa.cstmr_nm = #{srchAllimText}
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
<when test="srchAlimInfoType == 'telnb'">
|
||||
<if test="srchAllimText != null and srchAllimText != ''">
|
||||
<![CDATA[
|
||||
AND gpa.telnb = HEX(AES_ENCRYPT(#{srchAllimText}, #{secretKey}))
|
||||
]]>
|
||||
</if>
|
||||
</when>
|
||||
|
||||
</choose>
|
||||
</sql>
|
||||
|
||||
<select id="selectBOPuriOrderList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.puri.vo.BOPuriSrchVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY gpo.puri_order_seq DESC) AS rnum,
|
||||
gpo.puri_order_seq,
|
||||
gpo.status,
|
||||
gpo.regist_dt,
|
||||
gpo.erp_code,
|
||||
gpo.purchs_dv,
|
||||
gpo.purchs_cd,
|
||||
gpo.purchs_nm,
|
||||
gpo.ordr_cd,
|
||||
gpo.purchs_de,
|
||||
gpo.purchs_dtls,
|
||||
gpo.ordr_rm,
|
||||
CONCAT(LEFT(gpo.purchsr_nm, 1), '*', RIGHT(gpo.purchsr_nm, 1)) AS purchsr_nm,
|
||||
gpo.purchsr_nm AS no_mask_purchsr_nm,
|
||||
CAST(
|
||||
CONCAT(
|
||||
LEFT(AES_DECRYPT(UNHEX(gpo.cttpc), #{secretKey}), 3),
|
||||
'-****-',
|
||||
RIGHT(AES_DECRYPT(UNHEX(gpo.cttpc), #{secretKey}), 4)
|
||||
) AS CHAR(50)
|
||||
) AS cttpc,
|
||||
CAST(
|
||||
CONCAT(
|
||||
LEFT(AES_DECRYPT(UNHEX(gpo.cttpc), #{secretKey}), 3),
|
||||
'-',
|
||||
SUBSTR(AES_DECRYPT(UNHEX(gpo.cttpc), #{secretKey}), 4, 4),
|
||||
'-',
|
||||
RIGHT(AES_DECRYPT(UNHEX(gpo.cttpc), #{secretKey}), 4)
|
||||
) AS CHAR(50)
|
||||
) AS no_mask_cttpc,
|
||||
gpo.goods_cd,
|
||||
gpo.goods_nm,
|
||||
gpo.dlivy_de,
|
||||
CONCAT(LEFT(gpo.dlivy_nm, 1), '*', RIGHT(gpo.dlivy_nm, 1)) AS dlivyNm,
|
||||
gpo.dlivy_nm AS no_mask_dlivy_nm,
|
||||
CAST(
|
||||
CONCAT(
|
||||
LEFT(AES_DECRYPT(UNHEX(gpo.dlivy_cttpc), #{secretKey}), 3),
|
||||
'-****-',
|
||||
RIGHT(AES_DECRYPT(UNHEX(gpo.dlivy_cttpc), #{secretKey}), 4)
|
||||
) AS CHAR(50)
|
||||
) AS dlivy_cttpc,
|
||||
CAST(
|
||||
CONCAT(
|
||||
LEFT(AES_DECRYPT(UNHEX(gpo.dlivy_cttpc), #{secretKey}), 3),
|
||||
'-',
|
||||
SUBSTR(AES_DECRYPT(UNHEX(gpo.dlivy_cttpc), #{secretKey}), 4, 4),
|
||||
'-',
|
||||
RIGHT(AES_DECRYPT(UNHEX(gpo.dlivy_cttpc), #{secretKey}), 4)
|
||||
) AS CHAR(50)
|
||||
) AS no_mask_dlivy_cttpc,
|
||||
gpo.visit_trgter_at,
|
||||
IF(gpo.visit_de > '2020-01-01', gpo.visit_de, NULL) AS visitDe,
|
||||
gpa.puri_allim_seq,
|
||||
CASE gpa.status
|
||||
WHEN 'wait' THEN '대기'
|
||||
WHEN 'send' THEN '발송'
|
||||
WHEN 'stop' THEN '중지'
|
||||
ELSE ''
|
||||
END AS allimStatus,
|
||||
gpa.cstmr_nm,
|
||||
CAST(
|
||||
CONCAT(
|
||||
LEFT(AES_DECRYPT(UNHEX(gpa.telnb), #{secretKey}), 3),
|
||||
'-',
|
||||
SUBSTR(AES_DECRYPT(UNHEX(gpa.telnb), #{secretKey}), 4, 4),
|
||||
'-',
|
||||
RIGHT(AES_DECRYPT(UNHEX(gpa.telnb), #{secretKey}), 4)
|
||||
) AS CHAR(50)
|
||||
) AS noMasktelnb,
|
||||
gpa.regist_dt AS allimRegistDt,
|
||||
gpa.install_de,
|
||||
IF(gpa.frst_sndng_de > '2020-01-01', gpa.frst_sndng_de, NULL) AS frstSndngDe,
|
||||
IF(gpa.prev_sndng_de > '2020-01-01', gpa.prev_sndng_de, NULL) AS prevSndngDe,
|
||||
IF(gpa.next_sndng_resve_de > '2020-01-01', gpa.next_sndng_resve_de, NULL) AS nextSndngResveDe
|
||||
FROM
|
||||
GC_PURI_ORDER gpo
|
||||
LEFT JOIN
|
||||
GC_PURI_ALLIM gpa ON (gpo.puri_order_seq = gpa.puri_order_seq)
|
||||
LEFT JOIN
|
||||
(SELECT puri_allim_seq, MAX(reg_date) AS latest_log_dt
|
||||
FROM GC_PURI_ALLIM_LOG
|
||||
GROUP BY puri_allim_seq) gpal ON (gpa.puri_allim_seq = gpal.puri_allim_seq)
|
||||
]]>
|
||||
<include refid = "selectBOPuriOrderListFormWhere"/>
|
||||
<![CDATA[
|
||||
ORDER BY gpo.puri_order_seq DESC
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectBOPuriOrderListCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.puri.vo.BOPuriSrchVO">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(1)
|
||||
FROM GC_PURI_ORDER gpo
|
||||
LEFT JOIN GC_PURI_ALLIM gpa
|
||||
ON (gpo.puri_order_seq = gpa.puri_order_seq)
|
||||
]]>
|
||||
<include refid = "selectBOPuriOrderListFormWhere"/>
|
||||
</select>
|
||||
|
||||
<select id="selectPuriAllimList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.puri.vo.BOPuriSrchVO"
|
||||
resultType="dataMap">
|
||||
SELECT
|
||||
@rownum := @rownum + 1 AS rnum,
|
||||
gpal.sndng_de,
|
||||
CAST(
|
||||
CONCAT(
|
||||
LEFT(AES_DECRYPT(UNHEX(gpal.telnb), #{secretKey}), 3),
|
||||
'-',
|
||||
SUBSTR(AES_DECRYPT(UNHEX(gpal.telnb), #{secretKey}), 4,4),
|
||||
'-',
|
||||
RIGHT(AES_DECRYPT(UNHEX(gpal.telnb), #{secretKey}), 4)
|
||||
) AS CHAR(50)
|
||||
) AS telnb,
|
||||
gpal.sndng_cn
|
||||
FROM (SELECT @rownum := 0) r,
|
||||
GC_PURI_ALLIM_LOG gpal
|
||||
WHERE puri_allim_seq = #{puriAllimSeq}
|
||||
AND act = 'send'
|
||||
</select>
|
||||
|
||||
<update id="updatePuriOrder">
|
||||
|
||||
UPDATE GC_PURI_ORDER set
|
||||
status = #{status},
|
||||
visit_trgter_at = #{visitTrgterAt},
|
||||
ordr_rm = #{ordrRm}
|
||||
WHERE puri_order_seq = #{puriOrderSeq}
|
||||
|
||||
</update>
|
||||
|
||||
<update id="updatePuriAllim">
|
||||
|
||||
UPDATE GC_PURI_ALLIM set
|
||||
status = #{alimStatus},
|
||||
cstmr_nm = #{cstmrNm},
|
||||
telnb = HEX(AES_ENCRYPT(#{telnb}, #{secretKey})),
|
||||
install_de = #{installDe}
|
||||
WHERE puri_allim_seq = #{puriAllimSeq}
|
||||
|
||||
</update>
|
||||
|
||||
<insert id="insertPuriAllim">
|
||||
INSERT INTO GC_PURI_ALLIM (status,regist_dt,puri_order_seq,cstmr_nm,telnb)
|
||||
VALUES('wait',NOW(),#{puriOrderSeq},#{cstmrNm},HEX(AES_ENCRYPT(#{telnb}, #{secretKey})))
|
||||
</insert>
|
||||
|
||||
<select id="selectPuriVisitUpdate">
|
||||
SELECT
|
||||
gpo.puri_order_seq AS puriOrderSeq,
|
||||
gpo.purchsr_nm AS purchsrNm,
|
||||
CAST(AES_DECRYPT(UNHEX(gpo.cttpc), #{secretKey}) AS CHAR(50)) AS cttpc,
|
||||
gpo.visit_de as visitDe,
|
||||
gpa.puri_allim_seq as puriAllimSeq,
|
||||
gpa.install_de as installDe,
|
||||
CAST(AES_DECRYPT(UNHEX(gpo.dlivy_cttpc), #{secretKey}) AS CHAR(50)) AS dlivyCttpc
|
||||
FROM GC_PURI_ORDER gpo
|
||||
LEFT JOIN GC_PURI_ALLIM gpa ON (gpo.puri_order_seq=gpa.puri_order_seq)
|
||||
where gpo.ordr_cd = #{ordrCd}
|
||||
|
||||
</select>
|
||||
|
||||
<update id="updatePuriVisitDate" parameterType="map">
|
||||
<foreach collection="puriOrderSeqArr" item="orderSeq" index="index" separator=";">
|
||||
UPDATE GC_PURI_ORDER SET
|
||||
visit_trgter_at = 'Y',
|
||||
visit_de = #{realUpdateVisitDateArr[${index}]}
|
||||
WHERE puri_order_seq = #{orderSeq}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<update id="updatePuriVisitCancelDate" parameterType="map">
|
||||
<![CDATA[
|
||||
UPDATE GC_PURI_ORDER SET
|
||||
visit_trgter_at = 'N',
|
||||
visit_de = ''
|
||||
WHERE puri_order_seq in
|
||||
]]>
|
||||
<foreach collection="item.puriOrderSeqArr" item="seq" open="(" separator="," close=")">
|
||||
#{seq}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<select id="selectDupPuriOrderAllimList">
|
||||
<![CDATA[
|
||||
select puri_order_seq, puri_allim_seq from GC_PURI_ALLIM
|
||||
where puri_order_seq = #{puriOrderSeq}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<insert id="insertPuriAllimList">
|
||||
<foreach collection="list" item="item" separator=";">
|
||||
<![CDATA[
|
||||
INSERT INTO gcone.GC_PURI_ALLIM (
|
||||
STATUS,
|
||||
REGIST_DT,
|
||||
PURI_ORDER_SEQ,
|
||||
CSTMR_NM,
|
||||
TELNB,
|
||||
INSTALL_DE,
|
||||
NEXT_SNDNG_RESVE_DE,
|
||||
CHNG_LOG
|
||||
) VALUES (
|
||||
#{item.status},
|
||||
SYSDATE(),
|
||||
#{item.puriOrderSeq},
|
||||
#{item.cstmrNm},
|
||||
HEX(AES_ENCRYPT(#{item.telnb}, #{item.secretKey})),
|
||||
#{item.installDe},
|
||||
#{item.nextSndngResveDe},
|
||||
#{item.chngLog}
|
||||
)
|
||||
]]>
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
|
||||
<delete id="deletePuriAllim">
|
||||
<foreach collection="list" item="item" separator=";">
|
||||
<![CDATA[
|
||||
delete from GC_PURI_ALLIM
|
||||
where puri_allim_seq = #{item.puriAllimSeq}
|
||||
]]>
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<update id="updatePuriAllimSeq" parameterType="java.util.List">
|
||||
<foreach collection="list" item="item" separator=";">
|
||||
<![CDATA[
|
||||
UPDATE GC_PURI_ORDER SET PURI_ALLIM_SEQ = #{item.puriAllimSeq}
|
||||
WHERE PURI_ORDER_SEQ = #{item.puriOrderSeq}
|
||||
]]>
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<select id="selectSameNumber">
|
||||
<foreach collection="list" item="item" separator=";">
|
||||
<![CDATA[
|
||||
select puri_allim_seq from GC_PURI_ALLIM
|
||||
where telnb = HEX(AES_ENCRYPT(#{item.telnb}, #{item.secretkey}))
|
||||
and puri_allim_seq != #{item.puriOrderSeq}
|
||||
and status in ('wait','send')
|
||||
]]>
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<insert id="insertPuriAllimLogFirst">
|
||||
<foreach collection="list" item="item" separator=";">
|
||||
<![CDATA[
|
||||
insert into GC_PURI_ALLIM_LOG (reg_date,puri_allim_seq,act,telnb,sndng_de,sndng_ty,sndng_cn)
|
||||
values (now(),#{item.puriAllimSeq},#{item.act},HEX(AES_ENCRYPT(#{item.telnb}, #{item.secretkey}),'','',#{item.sndngCn}))
|
||||
]]>
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<update id="updateStopAllim">
|
||||
<![CDATA[
|
||||
UPDATE GC_PURI_ALLIM
|
||||
SET status = 'stop',
|
||||
chng_log = #{item.chngLog}
|
||||
WHERE puri_allim_seq IN ]]>
|
||||
<foreach collection="item.puriAllimSeq" item="seq" open="(" separator="," close=")">
|
||||
#{seq}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<?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.sample.mapper.SampleMapper">
|
||||
|
||||
<insert id="insertGconeCheck" parameterType="com.wb.domainserver.domain.sample.vo.SampleVO">
|
||||
INSERT INTO tmp_order (message1, message2) VALUES(#{message1},#{message2})
|
||||
</insert>
|
||||
</mapper>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?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.setup.adscript.mapper.BOAdScriptMapper">
|
||||
|
||||
<!--광고스크립트 목록 조회-->
|
||||
<select id="selectBOAdScriptList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.adscript.vo.BOAdScriptVO"
|
||||
resultType="dataMap">
|
||||
SELECT
|
||||
AD_SCRIPT_INNB,
|
||||
GAS.SOPMAL_CD,
|
||||
AD_MEDIA_DV_CD,
|
||||
AD_MEDIA_ID,
|
||||
INSTL_PGE_DV_CD,
|
||||
INSTL_PGE_LBL,
|
||||
INSTL_PGE_ENVRN_CD,
|
||||
GNC.BUTTON_KEY AS NPAY_BUTTON_ID,
|
||||
TRIGR_DV_CD
|
||||
FROM
|
||||
GC_AD_SCRIPT GAS
|
||||
LEFT JOIN GC_NPAY_CONFIG GNC
|
||||
ON GAS.SOPMAL_CD = GNC.SOPMAL_CD
|
||||
WHERE
|
||||
1 = 1
|
||||
AND GAS.SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,316 @@
|
||||
<?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.setup.dlvygrp.mapper.BODlvygrpMapper">
|
||||
<!-- 배송그룹 목록조회 조건절 -->
|
||||
<sql id="selectDlvyListWhere">
|
||||
<![CDATA[
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND USE_AT = 'Y'
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<!-- 배송그룹 상세조회, 수정, 삭제 조건절 -->
|
||||
<sql id="selectDlvyKeyWhere">
|
||||
<![CDATA[
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND DLVY_GROUP_INNB = #{dlvyGroupInnb}
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<!-- 배송그룹 목록조회 From절 -->
|
||||
<sql id="selectDlvyFrom">
|
||||
<![CDATA[
|
||||
FROM GC_SHIPPING_GROUPING
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<!-- 배송그룹 목록건수조회 -->
|
||||
<select id="selectDlvyListCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO"
|
||||
resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT(1)
|
||||
<include refid="selectDlvyFrom"/>
|
||||
<include refid="selectDlvyListWhere"/>
|
||||
</select>
|
||||
<select id="selectDlvyListCntOld"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO"
|
||||
resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT(1)
|
||||
-- FROM (
|
||||
-- SELECT
|
||||
-- CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM
|
||||
-- , TB.*
|
||||
-- FROM (
|
||||
-- SELECT DLVY_GROUP_INNB
|
||||
-- ,DLVY_GROUP_DV_CD
|
||||
-- ,DLVY_GROUP_NM
|
||||
-- ,REGIST_DT
|
||||
-- ,DATE_FORMAT(REGIST_DT, '%Y-%m-%d') AS REGIST_DE
|
||||
-- ,UPDT_DT
|
||||
-- ,DATE_FORMAT(UPDT_DT, '%Y-%m-%d') AS UPDT_DE
|
||||
<include refid="selectDlvyFrom"/>
|
||||
<include refid="selectDlvyListWhere"/>
|
||||
-- ORDER BY DLVY_GROUP_INNB DESC ) TB
|
||||
-- WHERE (@ROWNUM:=0) = 0 ) PV
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 배송그룹 목록 -->
|
||||
<select id="selectBODlvyGroupList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO"
|
||||
resultType="datamap">
|
||||
SELECT
|
||||
*
|
||||
FROM (
|
||||
SELECT
|
||||
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, TB.*
|
||||
FROM (
|
||||
SELECT DLVY_GROUP_INNB
|
||||
,DLVY_GROUP_DV_CD
|
||||
,DLVY_GROUP_NM
|
||||
,REGIST_DT
|
||||
,DATE_FORMAT(REGIST_DT, '%Y-%m-%d') AS REGIST_DE
|
||||
,UPDT_DT
|
||||
,DATE_FORMAT(UPDT_DT, '%Y-%m-%d') AS UPDT_DE
|
||||
<include refid="selectDlvyFrom"/>
|
||||
<include refid="selectDlvyListWhere"/>
|
||||
ORDER BY
|
||||
DLVY_GROUP_INNB DESC ) TB
|
||||
WHERE (@ROWNUM:=0) = 0 ) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
</select>
|
||||
|
||||
<!-- 배송그룹 목록 -->
|
||||
<select id="selectBODlvyGroupAllList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO"
|
||||
resultType="datamap">
|
||||
SELECT DLVY_GROUP_INNB
|
||||
,DLVY_GROUP_DV_CD
|
||||
,DLVY_GROUP_NM
|
||||
,REGIST_DT
|
||||
,DATE_FORMAT(REGIST_DT, '%Y-%m-%d') AS REGIST_DE
|
||||
,UPDT_DT
|
||||
,DATE_FORMAT(UPDT_DT, '%Y-%m-%d') AS UPDT_DE
|
||||
<include refid="selectDlvyFrom"/>
|
||||
<include refid="selectDlvyListWhere"/>
|
||||
ORDER BY DLVY_GROUP_INNB DESC
|
||||
</select>
|
||||
|
||||
<!-- 배송그룹 등록 -->
|
||||
<insert id="insertBODlvyGroup"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO">
|
||||
<selectKey keyProperty="dlvyGroupInnb"
|
||||
resultType="java.lang.Integer"
|
||||
order="BEFORE">
|
||||
SELECT IFNULL(MAX(DLVY_GROUP_INNB),0) + 1 FROM GC_SHIPPING_GROUPING
|
||||
</selectKey>
|
||||
<![CDATA[
|
||||
INSERT
|
||||
INTO GC_SHIPPING_GROUPING
|
||||
(
|
||||
DLVY_GROUP_INNB
|
||||
,SOPMAL_CD
|
||||
,RTNLC_INNB
|
||||
,DLVY_GROUP_DV_CD
|
||||
,DLVY_GROUP_NM
|
||||
,DFT_DLVY_AMT
|
||||
,AMT_CND_USE_AT
|
||||
,AMT_CND_ADIT_AMT
|
||||
,CNT_CND_USE_AT
|
||||
,CNT_CND_ADIT_AMT
|
||||
,DLVY_AREA_ADIT_AT
|
||||
,AREA_ADIT_DLVY_AMT
|
||||
,BUNDLE_DLVY_USE_AT
|
||||
,BUNDLE_DLVY_CND_AMT
|
||||
,RETURN_DLVY_APPLC_AT
|
||||
,RETURN_DLVY_AMT
|
||||
,EXCHNG_DLVY_AMT
|
||||
,USE_AT
|
||||
,REGUSR
|
||||
,REGIST_DT
|
||||
,UPDUSR
|
||||
,UPDT_DT
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#{dlvyGroupInnb}
|
||||
,#{sopmalCd}
|
||||
,#{rtnlcInnb}
|
||||
,#{dlvyGroupDvCd}
|
||||
,#{dlvyGroupNm}
|
||||
,#{dftDlvyAmt}
|
||||
,#{amtCndUseAt}
|
||||
,#{amtCndAditAmt}
|
||||
,#{cntCndUseAt}
|
||||
,#{cntCndAditAmt}
|
||||
,#{dlvyAreaAditAt}
|
||||
,#{areaAditDlvyAmt}
|
||||
,#{bundleDlvyUseAt}
|
||||
,#{bundleDlvyCndAmt}
|
||||
,#{returnDlvyApplcAt}
|
||||
,#{returnDlvyAmt}
|
||||
,#{exchngDlvyAmt}
|
||||
,'Y'
|
||||
,#{regusr}
|
||||
,now()
|
||||
,#{regusr}
|
||||
,now()
|
||||
)
|
||||
]]>
|
||||
</insert>
|
||||
|
||||
<!-- 배송 반송지 등록 -->
|
||||
<insert id="insertBODlvyGroupAddress" parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO">
|
||||
<selectKey keyProperty="rtnlcInnb"
|
||||
resultType="java.lang.Integer"
|
||||
order="BEFORE">
|
||||
SELECT IFNULL(MAX(RTNLC_INNB),0) + 1 FROM GC_SHIPPING_ADDRESS WHERE SOPMAL_CD = #{sopmalCd}
|
||||
</selectKey>
|
||||
INSERT INTO GC_SHIPPING_ADDRESS
|
||||
(
|
||||
RTNLC_INNB
|
||||
, SOPMAL_CD
|
||||
, RTNLC_ZIP
|
||||
, RTNLC_ADRES
|
||||
, RTNLC_DTL_ADRES
|
||||
, RTNLC_TELNB
|
||||
, USE_AT
|
||||
, REGUSR
|
||||
, REGIST_DT
|
||||
, UPDUSR
|
||||
, UPDT_DT
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#{rtnlcInnb}
|
||||
, #{sopmalCd}
|
||||
, #{rtnlcZip}
|
||||
, #{rtnlcAdres}
|
||||
, #{rtnlcDtlAdres}
|
||||
, #{rtnlcTelnb}
|
||||
, 'Y'
|
||||
, #{regusr}
|
||||
, now()
|
||||
, #{regusr}
|
||||
, now()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 배송그룹 정보 조회 -->
|
||||
<select id="selectBODlvyGroupDtlForm"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO"
|
||||
resultType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO">
|
||||
SELECT
|
||||
SG.DLVY_GROUP_INNB
|
||||
,SG.DLVY_GROUP_DV_CD
|
||||
,SG.DLVY_GROUP_NM
|
||||
,SG.DFT_DLVY_AMT
|
||||
,SG.AMT_CND_USE_AT
|
||||
,SG.AMT_CND_ADIT_AMT
|
||||
,SG.CNT_CND_USE_AT
|
||||
,SG.CNT_CND_ADIT_AMT
|
||||
,SG.DLVY_AREA_ADIT_AT
|
||||
,SG.AREA_ADIT_DLVY_AMT
|
||||
,SG.BUNDLE_DLVY_USE_AT
|
||||
,SG.BUNDLE_DLVY_CND_AMT
|
||||
,SG.RETURN_DLVY_APPLC_AT
|
||||
,SG.RETURN_DLVY_AMT
|
||||
,SG.EXCHNG_DLVY_AMT
|
||||
,SG.RTNLC_INNB
|
||||
,SA.RTNLC_ZIP
|
||||
,SA.RTNLC_ADRES
|
||||
,SA.RTNLC_DTL_ADRES
|
||||
,SA.RTNLC_TELNB
|
||||
,SG.RETURN_DLVY_AMT
|
||||
,SG.EXCHNG_DLVY_AMT
|
||||
FROM GC_SHIPPING_GROUPING SG
|
||||
LEFT JOIN GC_SHIPPING_ADDRESS SA
|
||||
ON SG.RTNLC_INNB = SA.RTNLC_INNB
|
||||
AND SG.SOPMAL_CD = SA.SOPMAL_CD
|
||||
AND SG.USE_AT = 'Y'
|
||||
AND SA.USE_AT = 'Y'
|
||||
WHERE 1=1
|
||||
AND SG.SOPMAL_CD = #{sopmalCd}
|
||||
AND DLVY_GROUP_INNB = #{dlvyGroupInnb}
|
||||
</select>
|
||||
|
||||
<!-- 배송그룹 수정 -->
|
||||
<update id="updateBODlvyGroupDtl"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_SHIPPING_GROUPING
|
||||
SET DLVY_GROUP_DV_CD = #{dlvyGroupDvCd}
|
||||
,DLVY_GROUP_NM = #{dlvyGroupNm}
|
||||
,DFT_DLVY_AMT = #{dftDlvyAmt}
|
||||
,AMT_CND_USE_AT = #{amtCndUseAt}
|
||||
,AMT_CND_ADIT_AMT = #{amtCndAditAmt}
|
||||
,CNT_CND_USE_AT = #{cntCndUseAt}
|
||||
,CNT_CND_ADIT_AMT = #{cntCndAditAmt}
|
||||
,DLVY_AREA_ADIT_AT = #{dlvyAreaAditAt}
|
||||
,AREA_ADIT_DLVY_AMT = #{areaAditDlvyAmt}
|
||||
,BUNDLE_DLVY_USE_AT = #{bundleDlvyUseAt}
|
||||
,BUNDLE_DLVY_CND_AMT = #{bundleDlvyCndAmt}
|
||||
,RETURN_DLVY_APPLC_AT = #{returnDlvyApplcAt}
|
||||
,RETURN_DLVY_AMT = #{returnDlvyAmt}
|
||||
,EXCHNG_DLVY_AMT = #{exchngDlvyAmt}
|
||||
,UPDUSR = #{updusr}
|
||||
,UPDT_DT = NOW()
|
||||
]]>
|
||||
<include refid="selectDlvyKeyWhere"/>
|
||||
</update>
|
||||
|
||||
<!-- 배송그룹 수정 -->
|
||||
<update id="updateBODlvyGroupRtnlc"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO">
|
||||
UPDATE GC_SHIPPING_ADDRESS
|
||||
SET RTNLC_ZIP = #{rtnlcZip}
|
||||
, RTNLC_ADRES = #{rtnlcAdres}
|
||||
, RTNLC_DTL_ADRES = #{rtnlcDtlAdres}
|
||||
, RTNLC_TELNB = #{rtnlcTelnb}
|
||||
, UPDUSR = #{updusr}
|
||||
, UPDT_DT = NOW()
|
||||
WHERE 1=1
|
||||
AND RTNLC_INNB = #{rtnlcInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
<!-- 배송그룹 삭제(사용여부 Update y > n) -->
|
||||
<update id="deleteBODlvyGroup" parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_SHIPPING_GROUPING
|
||||
SET USE_AT = 'N'
|
||||
]]>
|
||||
<include refid="selectDlvyKeyWhere"/>
|
||||
</update>
|
||||
|
||||
<!-- 배송그룹 삭제(사용여부 Update y > n) -->
|
||||
<update id="deleteBODlvyGroupRtnlc" parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO">
|
||||
UPDATE GC_SHIPPING_ADDRESS
|
||||
SET USE_AT = 'N'
|
||||
WHERE RTNLC_INNB = #{rtnlcInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
<!-- 배송그룹 고유키로 연결 상품의 갯수 검색 -->
|
||||
<select id="isIncludeGoods"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO"
|
||||
resultType="java.lang.Integer">
|
||||
SELECT COUNT(1)
|
||||
FROM GC_GOODS
|
||||
WHERE DLVY_GROUP_INNB = #{dlvyGroupInnb}
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 배송 반송지 조회 -->
|
||||
<select id="selectBOReturnAddressInqire">
|
||||
<![CDATA[
|
||||
SELECT * FROM GC_SHIPPING_ADDRESS WHERE SOPMAL_CD = #{sopmalCd} AND USE_AT = 'Y' LIMIT 1
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,193 @@
|
||||
<?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.setup.gradbnef.mapper.BOGradbnefMapper">
|
||||
<!--회원 등급 상세 where절 -->
|
||||
<sql id="gradBnefDtlWhere">
|
||||
<![CDATA[
|
||||
WHERE 1=1
|
||||
AND FMGS.MBR_GRAD_INNB = #{mbrGradInnb}
|
||||
]]>
|
||||
</sql>
|
||||
<!--회원 등급 총 개수 -->
|
||||
<select id = "selectBOMbrGradListInqireTotCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.gradbnef.vo.BOGradbnefVO"
|
||||
resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT(1)
|
||||
FROM GC_MEMBER_GRAD FMG
|
||||
WHERE 1=1
|
||||
AND FMG.SOPMAL_CD = #{sopmalCd}
|
||||
AND FMG.USE_AT = 'Y'
|
||||
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(searchGradNm)">
|
||||
AND FMG.MBR_GRAD_NM LIKE CONCAT('%',#{searchGradNm},'%')
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!--회원 등급 목록 조회-->
|
||||
<select id = "selectBOMbrGradListInqire"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.gradbnef.vo.BOGradbnefVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED ) AS RNUM
|
||||
,TB.*
|
||||
FROM (
|
||||
SELECT
|
||||
FMG.MBR_GRAD_INNB ,
|
||||
FMG.MBR_GRAD_GROUP_INNB ,
|
||||
(
|
||||
SELECT
|
||||
SOPMAL_NM
|
||||
FROM GC_SHOP
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
) AS SOPMAL_NM,
|
||||
FMG.MBR_GRAD_NM,
|
||||
FMG.MLG_ACCML_UNIT_DV_CD ,
|
||||
FN_GET_COMMCODE_NAME('MLG_ACCML_UNIT_DV',FMG.MLG_ACCML_UNIT_DV_CD)MLG_ACCML_UNIT_DV_CD_NM,
|
||||
ROUND(FMG.MLG_ACCML_AMT) AS MLG_ACCML_AMT,
|
||||
ROUND(FMG.MLG_MXMM_ACCML_AMT) AS MLG_MXMM_ACCML_AMT,
|
||||
FMG.MLG_VALID_MT_CNT,
|
||||
ROUND(FMG.MBR_GRAD_AMT) AS MBR_GRAD_AMT,
|
||||
CASE
|
||||
WHEN FMG.MBR_GRAD_AMT >= 10000 THEN CONCAT(IFNULL(ROUND(FMG.MBR_GRAD_AMT / 10000), 0), '만원')
|
||||
WHEN FMG.MBR_GRAD_AMT < 10000 AND FMG.MBR_GRAD_AMT > 0 THEN CONCAT(FORMAT(ROUND(FMG.MBR_GRAD_AMT), 0), '원')
|
||||
ELSE ''
|
||||
END AS MBR_GRAD_AMT_SOP,
|
||||
FMG.MBR_GRAD_CND_CD ,
|
||||
FMG.SOPMAL_CD,
|
||||
FMG.REGUSR,
|
||||
FMG.REGIST_DT,
|
||||
FMG.UPDUSR,
|
||||
FMG.UPDT_DT,
|
||||
FN_GET_COMMCODE_NAME('MBR_GRAD_CND',FMG.MBR_GRAD_CND_CD)MBR_GRAD_CND_CD_NM,
|
||||
FMG.MBR_GRAD_ICON_COURS
|
||||
FROM GC_MEMBER_GRAD FMG
|
||||
WHERE 1=1
|
||||
AND FMG.SOPMAL_CD = #{sopmalCd}
|
||||
AND FMG.USE_AT = 'Y'
|
||||
]]>
|
||||
<if test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(searchGradNm)">
|
||||
AND FMG.MBR_GRAD_NM LIKE CONCAT('%',#{searchGradNm},'%')
|
||||
</if>
|
||||
<![CDATA[
|
||||
ORDER BY FMG.MBR_GRAD_ORDR ASC
|
||||
)TB
|
||||
WHERE (@ROWNUM:=0)=0
|
||||
) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 회원 등급 상세 조회 -->
|
||||
<select id = "selectBOGradBnefRegistInqire"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.gradbnef.vo.BOGradbnefVO"
|
||||
resultType="dataMap">
|
||||
SELECT
|
||||
FMG.MBR_GRAD_CND_CD,
|
||||
FN_GET_COMMCODE_NAME('MBR_GRAD_CND',FMG.MBR_GRAD_CND_CD)MBR_GRAD_CND_CD_NM,
|
||||
FMG.MBR_GRAD_INNB,
|
||||
FMG.MBR_GRAD_NM,
|
||||
FMG.MBR_GRAD_AMT,
|
||||
FMG.SOPMAL_CD,
|
||||
FMG.MLG_ACCML_UNIT_DV_CD ,
|
||||
FMG.MLG_ACCML_AMT ,
|
||||
FMG.MLG_MXMM_ACCML_AMT ,
|
||||
FMG.MLG_VALID_MT_CNT
|
||||
FROM
|
||||
GC_MEMBER_GRAD FMG
|
||||
WHERE
|
||||
1 = 1
|
||||
AND FMG.SOPMAL_CD = #{sopmalCd}
|
||||
AND FMG.MBR_GRAD_INNB = #{mbrGradInnb}
|
||||
</select>
|
||||
|
||||
<!-- 회원 등급 혜택 값 있을 시 수정 없으면 추가 -->
|
||||
<update id="updateBOGradBnefUpdt"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.setup.gradbnef.vo.BOGradbnefVO">
|
||||
<![CDATA[
|
||||
UPDATE
|
||||
GC_MEMBER_GRAD GMG , (SELECT MLG_VALID_PD FROM GC_SHOP WHERE SOPMAL_CD = #{sopmalCd}) AS GS
|
||||
SET
|
||||
GMG.MLG_ACCML_UNIT_DV_CD = #{mlgAccmlUnitDvCd},
|
||||
GMG.MLG_ACCML_AMT = IFNULL(REPLACE(#{mlgAccmlAmt}, ',', ''), NULL),
|
||||
GMG.MLG_MXMM_ACCML_AMT = IFNULL(REPLACE(#{mlgMxmmAccmlAmt}, ',', ''), NULL),
|
||||
GMG.MLG_VALID_MT_CNT = GS.MLG_VALID_PD,
|
||||
GMG.UPDUSR = #{updusr},
|
||||
GMG.UPDT_DT = SYSDATE()
|
||||
WHERE
|
||||
GMG.MBR_GRAD_INNB = #{mbrGradInnb}
|
||||
AND GMG.SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</update>
|
||||
|
||||
|
||||
<!--회원 등급 목록 조회 without pagination -->
|
||||
<select id = "selectBOMbrGradListInqireWithoutPaging"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.gradbnef.vo.BOGradbnefVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
FMG.MBR_GRAD_INNB ,
|
||||
FMG.MBR_GRAD_GROUP_INNB,
|
||||
(
|
||||
SELECT
|
||||
SOPMAL_NM
|
||||
FROM GC_SHOP
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
) AS SOPMAL_NM,
|
||||
FMG.MBR_GRAD_NM,
|
||||
FMG.MLG_ACCML_UNIT_DV_CD ,
|
||||
FN_GET_COMMCODE_NAME('MLG_ACCML_UNIT_DV',FMG.MLG_ACCML_UNIT_DV_CD)MLG_ACCML_UNIT_DV_CD_NM,
|
||||
FORMAT(ROUND(FMG.MLG_ACCML_AMT), 0) AS MLG_ACCML_AMT,
|
||||
FORMAT(ROUND(FMG.MLG_MXMM_ACCML_AMT), 0) AS MLG_MXMM_ACCML_AMT,
|
||||
FMG.MLG_VALID_MT_CNT,
|
||||
FORMAT(ROUND(FMG.MBR_GRAD_AMT), 0) AS MBR_GRAD_AMT,
|
||||
FMG.MBR_GRAD_CND_CD ,
|
||||
FN_GET_COMMCODE_NAME('MBR_GRAD_CND',FMG.MBR_GRAD_CND_CD)MBR_GRAD_CND_CD_NM,
|
||||
FMG.SOPMAL_CD,
|
||||
FMG.REGUSR,
|
||||
FMG.REGIST_DT,
|
||||
FMG.UPDUSR,
|
||||
FMG.UPDT_DT,
|
||||
FMG.MBR_GRAD_ICON_COURS,
|
||||
FN_GET_COMMCODE_NAME('MBR_GRAD_CND',FMG.MBR_GRAD_CND_CD)MBR_GRAD_CND_CD_NM
|
||||
FROM GC_MEMBER_GRAD FMG
|
||||
WHERE FMG.SOPMAL_CD = #{sopmalCd}
|
||||
AND FMG.USE_AT = 'Y'
|
||||
ORDER BY FMG.MBR_GRAD_ORDR ASC
|
||||
]]>
|
||||
</select >
|
||||
|
||||
<!-- 쇼핑몰별 회원 등급 매핑 수정 -->
|
||||
<update id="updateBOMbrGradMapingUpdt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO">
|
||||
UPDATE GC_MEMBER_GRAD_MAPPING
|
||||
SET
|
||||
MBR_GRAD_INNB = #{mbrGradInnb},
|
||||
GRAD_MDAT_DT = SYSDATE()
|
||||
WHERE
|
||||
MBR_INNB = #{mbrInnb}
|
||||
AND MBR_DV_CD = #{mbrDvCd}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
<!-- 회원 등급 수정시 이전 회원 등급명, 이후 회원 등급 명 조회 -->
|
||||
<select id="selectMbrChngGradNm" parameterType="com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO">
|
||||
SELECT
|
||||
(SELECT
|
||||
MBR_GRAD_NM
|
||||
FROM
|
||||
GC_MEMBER_GRAD
|
||||
WHERE
|
||||
MBR_GRAD_INNB = #{beforeMbrGradInnb})AS BEFORE_GRAD_NM,
|
||||
(SELECT
|
||||
MBR_GRAD_NM
|
||||
FROM
|
||||
GC_MEMBER_GRAD
|
||||
WHERE
|
||||
MBR_GRAD_INNB = #{mbrGradInnb})AS AFTER_GRAD_NM
|
||||
FROM DUAL
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1 @@
|
||||
<?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.setup.menu.mapper.BOMenuMapper"></mapper>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?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.setup.mngr.mapper.BOMngrInfoMapper">
|
||||
<update id="updateBOMngrInfoUpdt" parameterType="com.wb.domainserver.domain.gcone.setup.mngr.vo.BOMngrInfoVO">
|
||||
UPDATE GC_MANAGER
|
||||
SET MNGR_NM = #{mngrNm, jdbcType=VARCHAR}
|
||||
, EMAIL = HEX(AES_ENCRYPT(#{email, jdbcType=VARCHAR}, #{secretKey}))
|
||||
, TELNB = HEX(AES_ENCRYPT(#{telnb, jdbcType=VARCHAR}, #{secretKey}))
|
||||
, MBTLNB = HEX(AES_ENCRYPT(#{mbtlnb, jdbcType=VARCHAR}, #{secretKey}))
|
||||
, UPDUSR = #{updusr, jdbcType=VARCHAR}
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(pwChngAt, 'Y')">
|
||||
, PASSWORD = #{password}
|
||||
</if>
|
||||
WHERE MNGR_INNB = #{mngrInnb}
|
||||
</update>
|
||||
</mapper>
|
||||
@@ -0,0 +1,97 @@
|
||||
<?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.setup.nbkk.mapper.BONbkkMapper">
|
||||
<!--무통장 입금 계좌 조회-->
|
||||
<select id = "selectBOAcntSetup" parameterType="com.wb.domainserver.domain.gcone.setup.nbkk.vo.BOSetupNbkkVO" resultType="dataMap" >
|
||||
SELECT
|
||||
SOPMAL_CD,
|
||||
ACNT_DV_CD,
|
||||
ACNT_DTL_DV_CD,
|
||||
BANK_CD,
|
||||
FN_GET_COMMCODE_NAME("BANK_NM_DV",BANK_CD) AS BANK_NM,
|
||||
DPSTR_NM,
|
||||
ACNTNB,
|
||||
USE_AT
|
||||
FROM GC_ACNT_SETUP
|
||||
WHERE ACNT_DV_CD ='01'
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sopmalCd)">
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(useAt)">
|
||||
AND USE_AT = 'Y'
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(acntDtlDvCd)">
|
||||
AND ACNT_DTL_DV_CD = #{acntDtlDvCd}
|
||||
</if>
|
||||
</select>
|
||||
<!--환불 계좌 조회-->
|
||||
<select id = "selectBORefundAcntSetup" parameterType="com.wb.domainserver.domain.gcone.setup.nbkk.vo.BOSetupNbkkVO" resultType="dataMap" >
|
||||
SELECT SOPMAL_CD,
|
||||
ACNT_DV_CD,
|
||||
ACNT_DTL_DV_CD,
|
||||
BANK_CD,
|
||||
DPSTR_NM,
|
||||
ACNTNB,
|
||||
USE_AT
|
||||
FROM GC_ACNT_SETUP
|
||||
WHERE ACNT_DV_CD = '02'
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sopmalCd)">
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(useAt)">
|
||||
AND USE_AT = 'Y'
|
||||
</if>
|
||||
</select>
|
||||
<!--계좌 삭제-->
|
||||
<delete id = "deleteBOSopmalAcnt" parameterType="com.wb.domainserver.domain.gcone.setup.nbkk.vo.NbkkInfoVO" >
|
||||
DELETE FROM GC_ACNT_SETUP GAS WHERE GAS.SOPMAL_CD = #{sopmalCd}
|
||||
</delete>
|
||||
<!--계좌 등록-->
|
||||
<insert id = "insertBOSopmalAcnt" parameterType="com.wb.domainserver.domain.gcone.setup.nbkk.vo.NbkkInfoVO">
|
||||
<selectKey order="BEFORE" keyProperty="acntSetupInnb" resultType="BigInteger">
|
||||
SELECT IFNULL(MAX(ACNT_SETUP_INNB), 0) + 1
|
||||
FROM GC_ACNT_SETUP
|
||||
</selectKey>
|
||||
INSERT INTO GC_ACNT_SETUP
|
||||
(
|
||||
ACNT_SETUP_INNB,
|
||||
SOPMAL_CD,
|
||||
ACNT_DV_CD,
|
||||
ACNT_DTL_DV_CD,
|
||||
BANK_CD,
|
||||
DPSTR_NM,
|
||||
ACNTNB,
|
||||
USE_AT,
|
||||
REGUSR,
|
||||
REGIST_DT,
|
||||
UPDUSR,
|
||||
UPDT_DT
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#{acntSetupInnb},
|
||||
#{sopmalCd},
|
||||
#{acntDvCd},
|
||||
#{acntDtlDvCd},
|
||||
#{bankCd},
|
||||
#{dpstrNm},
|
||||
#{acntnb},
|
||||
#{useAt},
|
||||
#{regusr},
|
||||
NOW(),
|
||||
#{updusr},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 쇼핑몰 무통장자동입금 사용 여부 반환 -->
|
||||
<select id = "selectBOAcntUseAtInqire" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO" resultType="Integer" >
|
||||
SELECT
|
||||
COUNT(1)
|
||||
FROM GC_ACNT_SETUP
|
||||
WHERE ACNT_DV_CD ='01'
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND USE_AT = 'Y'
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,74 @@
|
||||
<?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.setup.ordrmngr.mapper.BOOrdrMngrMapper">
|
||||
<!--주문 설정 조회-->
|
||||
<select id="selectBOOrdrSetup">
|
||||
SELECT GS.MLG_PYMNT_AT,
|
||||
GS.MLG_PYMNT_DV_CD,
|
||||
GS.MLG_PYMNT_RT,
|
||||
GS.MLG_MXMM_PYMNT_AMT,
|
||||
GS.MLG_MXMM_PYMNT_AMT_AT,
|
||||
GS.MLG_VALID_PD,
|
||||
GS.MLG_VALID_PD_AT,
|
||||
GS.MULTI_DLVY_AT,
|
||||
GS.FDRM_DLVY_AT,
|
||||
GS.GIFT_DLVY_AT,
|
||||
GS.CASH_AT,
|
||||
GS.GIFT_DLVY_ATMC_CANCL_PD,
|
||||
GS.PC_DOMN_ADRES,
|
||||
GS.MBL_DOMN_ADRES,
|
||||
GS.SOPMAL_NM,
|
||||
GS.SOPMAL_CD,
|
||||
GS.FDRM_DLVY_AT,
|
||||
GS.GIFT_DLVY_AT,
|
||||
GS.FVICON_COURS,
|
||||
GS.CSC_TELNB_ORDR_POSBL_AT,
|
||||
GS.CSC_WKDAY_WORK_TME,
|
||||
GS.CSC_LUNCH_TME,
|
||||
GS.CSC_RSTDE,
|
||||
GS.CSC_TELNB,
|
||||
GS.META_DC,
|
||||
GS.META_KWRD,
|
||||
GS.META_SJ,
|
||||
GS.META_GOODS_AT,
|
||||
GS.META_GOODS_DC,
|
||||
GS.META_GOODS_KWRD,
|
||||
GS.META_GOODS_SJ,
|
||||
GS.SOPMAL_TY_CD
|
||||
FROM GC_SHOP GS
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
</select>
|
||||
|
||||
<!--주문 설정 수정-->
|
||||
<update id="updateBOOrdrSetup">
|
||||
UPDATE GC_SHOP
|
||||
SET MLG_PYMNT_AT = #{mlgPymntAt},
|
||||
MLG_PYMNT_DV_CD = #{mlgPymntDvCd},
|
||||
MLG_PYMNT_RT = REPLACE(#{mlgPymntRt},',',''),
|
||||
MLG_MXMM_PYMNT_AMT = REPLACE(#{mlgMxmmPymntAmt},',',''),
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgMxmmPymntAmtAt)">
|
||||
MLG_MXMM_PYMNT_AMT_AT = #{mlgMxmmPymntAmtAt},
|
||||
</when>
|
||||
<otherwise>
|
||||
MLG_MXMM_PYMNT_AMT_AT = 'Y',
|
||||
</otherwise>
|
||||
</choose>
|
||||
MLG_VALID_PD = #{mlgValidPd},
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(mlgValidPdAt)">
|
||||
MLG_VALID_PD_AT = #{mlgValidPdAt},
|
||||
</when>
|
||||
<otherwise>
|
||||
MLG_VALID_PD_AT = 'Y',
|
||||
</otherwise>
|
||||
</choose>
|
||||
CASH_AT = IFNULL(#{cashAt},'N'),
|
||||
MULTI_DLVY_AT = IFNULL(#{multiDlvyAt},'N'),
|
||||
FDRM_DLVY_AT = IFNULL(#{fdrmDlvyAt},'N'),
|
||||
GIFT_DLVY_AT = IFNULL(#{giftDlvyAt},'N'),
|
||||
GIFT_DLVY_ATMC_CANCL_PD = #{giftDlvyAtmcCanclPd}
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,232 @@
|
||||
<?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.setup.popup.mapper.BOPopupMapper">
|
||||
|
||||
<!-- 팝업 상세조회, 수정, 삭제 조건절-->
|
||||
<sql id="selectBOPopupKeyWhere">
|
||||
<![CDATA[
|
||||
WHERE 1=1
|
||||
AND POPUP_INNB = #{popupInnb}
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<!-- 팝업 등록 -->
|
||||
<insert id="insertBOPopup"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.popup.vo.BOPopupVO">
|
||||
<selectKey order="BEFORE" keyProperty="popupInnb" resultType="java.lang.Integer">
|
||||
<![CDATA[
|
||||
SELECT IFNULL(MAX(POPUP_INNB), 0)+1
|
||||
FROM GC_DESIGN_POPUP
|
||||
]]>
|
||||
</selectKey>
|
||||
INSERT INTO GC_DESIGN_POPUP (
|
||||
POPUP_INNB
|
||||
, SOPMAL_CD
|
||||
, POPUP_NM
|
||||
, POPUP_EXPSR_BGN_DT
|
||||
, POPUP_EXPSR_END_DT
|
||||
, CNNC_URL
|
||||
, POPUP_MG_WTH
|
||||
, POPUP_MG_VTC
|
||||
, POPUP_LC_X
|
||||
, POPUP_LC_Y
|
||||
, EXPSR_AT
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(tmeSetup)">
|
||||
, TME_SETUP
|
||||
</if>
|
||||
, USE_AT
|
||||
, ORGINL_FIL_NM
|
||||
, SYS_FIL_NM
|
||||
, FIL_MG
|
||||
, FIL_TY
|
||||
, FIL_COURS
|
||||
, REGUSR
|
||||
, REGIST_DT
|
||||
, UPDUSR
|
||||
, UPDT_DT
|
||||
, MBL_POPUP_MG_WTH
|
||||
, MBL_POPUP_MG_VTC
|
||||
, MBL_POPUP_LC_X
|
||||
, MBL_POPUP_LC_Y
|
||||
, TME_SETUP_AT
|
||||
)
|
||||
VALUES (
|
||||
#{popupInnb}
|
||||
, #{sopmalCd}
|
||||
, #{popupNm}
|
||||
, #{popupExpsrBgnDt}
|
||||
, #{popupExpsrEndDt}
|
||||
, #{cnncUrl}
|
||||
, #{popupMgWth}
|
||||
, #{popupMgVtc}
|
||||
, #{popupLcX}
|
||||
, #{popupLcY}
|
||||
, #{expsrAt}
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(tmeSetup)">
|
||||
, #{tmeSetup}
|
||||
</if>
|
||||
, 'Y'
|
||||
, #{orginlFilNm}
|
||||
, #{sysFilNm}
|
||||
, #{filMg}
|
||||
, #{filTy}
|
||||
, #{filCours}
|
||||
, #{regusr}
|
||||
, SYSDATE()
|
||||
, #{updusr}
|
||||
, SYSDATE()
|
||||
, #{mblPopupMgWth}
|
||||
, #{mblPopupMgVtc}
|
||||
, #{mblPopupLcX}
|
||||
, #{mblPopupLcY}
|
||||
, #{tmeSetupAt}
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 팝업 수정 -->
|
||||
<update id="updateBOPopupDtl" parameterType="com.wb.domainserver.domain.gcone.setup.popup.vo.BOPopupVO">
|
||||
UPDATE GC_DESIGN_POPUP
|
||||
SET
|
||||
POPUP_NM = #{popupNm}
|
||||
, SOPMAL_CD = #{sopmalCd}
|
||||
, POPUP_EXPSR_BGN_DT = #{popupExpsrBgnDt}
|
||||
, POPUP_EXPSR_END_DT = #{popupExpsrEndDt}
|
||||
, CNNC_URL = #{cnncUrl}
|
||||
, POPUP_MG_WTH = #{popupMgWth}
|
||||
, POPUP_MG_VTC = #{popupMgVtc}
|
||||
, POPUP_LC_X = #{popupLcX}
|
||||
, POPUP_LC_Y = #{popupLcY}
|
||||
, EXPSR_AT = #{expsrAt}
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(fileAddAt, 'Y')">
|
||||
, ORGINL_FIL_NM = #{orginlFilNm}
|
||||
, SYS_FIL_NM = #{sysFilNm}
|
||||
, FIL_MG = #{filMg}
|
||||
, FIL_TY = #{filTy}
|
||||
, FIL_COURS = #{filCours}
|
||||
</if>
|
||||
, UPDUSR = #{updusr}
|
||||
, UPDT_DT = SYSDATE()
|
||||
, MBL_POPUP_MG_WTH = #{mblPopupMgWth}
|
||||
, MBL_POPUP_MG_VTC = #{mblPopupMgVtc}
|
||||
, MBL_POPUP_LC_X = #{mblPopupLcX}
|
||||
, MBL_POPUP_LC_Y = #{mblPopupLcY}
|
||||
, TME_SETUP_AT = #{tmeSetupAt}
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(tmeSetupAt, 'Y')">
|
||||
, TME_SETUP = #{tmeSetup}
|
||||
</if>
|
||||
<include refid="selectBOPopupKeyWhere"/>
|
||||
</update>
|
||||
|
||||
<!-- 팝업 삭제 -->
|
||||
<update id="deleteBOPopup" parameterType="com.wb.domainserver.domain.gcone.setup.popup.vo.BOPopupVO">
|
||||
<![CDATA[
|
||||
UPDATE GC_DESIGN_POPUP
|
||||
SET USE_AT = 'N'
|
||||
, UPDUSR = #{updusr}
|
||||
, UPDT_DT = SYSDATE()
|
||||
]]>
|
||||
<include refid="selectBOPopupKeyWhere"/>
|
||||
</update>
|
||||
|
||||
<!-- 팝업 건수 -->
|
||||
<select id="selectBOPopupListCnt"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.popup.vo.BOPopupVO"
|
||||
resultType="java.lang.Integer">
|
||||
<![CDATA[
|
||||
SELECT COUNT(1)
|
||||
FROM GC_DESIGN_POPUP
|
||||
WHERE 1=1
|
||||
AND USE_AT = 'Y'
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 팝업 목록 조회 -->
|
||||
<select id="selectBOPopupList"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.popup.vo.BOPopupVO"
|
||||
resultType="dataMap">
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT TB.*
|
||||
, CAST(@ROWNUM:=@ROWNUM + 1 AS UNSIGNED) AS RNUM
|
||||
FROM (SELECT POPUP_INNB
|
||||
, SOPMAL_CD
|
||||
, POPUP_NM
|
||||
, DATE_FORMAT(POPUP_EXPSR_BGN_DT, '%Y-%m-%d %H:%i:%s') AS POPUP_EXPSR_BGN_DT
|
||||
, DATE_FORMAT(POPUP_EXPSR_END_DT, '%Y-%m-%d %H:%i:%s') AS POPUP_EXPSR_END_DT
|
||||
, CNNC_URL
|
||||
, POPUP_MG_WTH
|
||||
, POPUP_MG_VTC
|
||||
, POPUP_LC_X
|
||||
, POPUP_LC_Y
|
||||
, EXPSR_AT
|
||||
, TME_SETUP
|
||||
, USE_AT
|
||||
, ORGINL_FIL_NM
|
||||
, SYS_FIL_NM
|
||||
, FIL_MG
|
||||
, FIL_TY
|
||||
, FIL_COURS
|
||||
, REGUSR
|
||||
, REGIST_DT
|
||||
, DATE_FORMAT(REGIST_DT, '%Y-%m-%d') AS REGIST_DE
|
||||
, UPDUSR
|
||||
, UPDT_DT
|
||||
, DATE_FORMAT(UPDT_DT, '%Y-%m-%d') AS UPDT_DE
|
||||
FROM GC_DESIGN_POPUP
|
||||
WHERE 1=1
|
||||
AND USE_AT = 'Y'
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
ORDER BY REGIST_DT DESC
|
||||
) TB
|
||||
WHERE (@ROWNUM:=0)=0) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
</select>
|
||||
|
||||
<!-- 팝업 상세 조회 -->
|
||||
<select id="selectBOPopupDtl"
|
||||
parameterType="com.wb.domainserver.domain.gcone.setup.popup.vo.BOPopupVO"
|
||||
resultType="dataMap">
|
||||
<![CDATA[
|
||||
SELECT POPUP_INNB
|
||||
, POPUP_NM
|
||||
, SOPMAL_CD
|
||||
, POPUP_EXPSR_BGN_DT
|
||||
, DATE_FORMAT(POPUP_EXPSR_BGN_DT, '%Y-%m-%d') AS POPUP_EXPSR_BGN_DT_YYYYMMDD
|
||||
, DATE_FORMAT(POPUP_EXPSR_BGN_DT, '%H:%i') AS POPUP_EXPSR_BGN_DT_TIME
|
||||
, POPUP_EXPSR_END_DT
|
||||
, DATE_FORMAT(POPUP_EXPSR_END_DT, '%Y-%m-%d') AS POPUP_EXPSR_END_DT_YYYYMMDD
|
||||
, DATE_FORMAT(POPUP_EXPSR_END_DT, '%H:%i') AS POPUP_EXPSR_END_DT_TIME
|
||||
, CNNC_URL
|
||||
, POPUP_MG_WTH
|
||||
, POPUP_MG_VTC
|
||||
, POPUP_LC_X
|
||||
, POPUP_LC_Y
|
||||
, EXPSR_AT
|
||||
, TME_SETUP
|
||||
, DATE_FORMAT(TME_SETUP, '%Y-%m-%d') AS TME_SETUP_YYYYMMDD
|
||||
, DATE_FORMAT(TME_SETUP, '%H:%i') AS TME_SETUP_TIME
|
||||
, USE_AT
|
||||
, ORGINL_FIL_NM
|
||||
, SYS_FIL_NM
|
||||
, FIL_MG
|
||||
, FIL_TY
|
||||
, FIL_COURS
|
||||
, REGUSR
|
||||
, REGIST_DT
|
||||
, DATE_FORMAT(REGIST_DT, '%Y-%m-%d') AS REGIST_DE
|
||||
, UPDUSR
|
||||
, UPDT_DT
|
||||
, DATE_FORMAT(UPDT_DT, '%Y-%m-%d') AS UPDT_DE
|
||||
, MBL_POPUP_MG_WTH
|
||||
, MBL_POPUP_MG_VTC
|
||||
, MBL_POPUP_LC_X
|
||||
, MBL_POPUP_LC_Y
|
||||
, TME_SETUP_AT
|
||||
FROM GC_DESIGN_POPUP
|
||||
]]>
|
||||
<include refid="selectBOPopupKeyWhere"/>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,22 @@
|
||||
<?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.sms.mapper.BOSmsBillingMapper">
|
||||
|
||||
<select id="selectStoreList">
|
||||
SELECT CAST(STR_INNB AS CHAR) as STR_INNB, TENTCPN_NM, TENT_STTUS,
|
||||
CASE WHEN STR_OPER_DV = '01' THEN '[ 가맹 ]'
|
||||
WHEN STR_OPER_DV = '02' THEN '[ 직영 ]'
|
||||
WHEN STR_OPER_DV = '03' THEN '[ 유통 ]'
|
||||
ELSE ''
|
||||
END AS etc1
|
||||
FROM GC_STORE
|
||||
WHERE 1=1
|
||||
<if test="storeInnb != null and storeInnb != ''">
|
||||
AND STR_INNB = #{storeInnb}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
|
||||
@@ -0,0 +1,308 @@
|
||||
<?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.stats.adTraceAnals.mapper.BOAdTraceAnalsMapper">
|
||||
|
||||
<!--일별 추적코드 건수-->
|
||||
<select id="selectBODailyAdTraceCdTableCntInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.adTraceAnals.vo.BOAdTraceAnalsVO"
|
||||
resultType="java.lang.Integer">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY DT ASC) AS RNUM,
|
||||
AD_TRACE_CD AS AD_TRACE_CD, DT,
|
||||
COALESCE(ACCESS_USER_CNT, 0) AS ACCESS_USER_CNT,
|
||||
COALESCE(ORDR_CNT, 0) AS ORDR_CNT,
|
||||
COALESCE(RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
|
||||
IF(ACCESS_USER_CNT = 0, 0, ROUND(COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0))) AS RL_SETLE_AMT_RT,
|
||||
IF(ACCESS_USER_CNT = 0, 0, ROUND(COALESCE(RL_SETLE_AMT / ACCESS_USER_CNT, 0), 2)) AS ACCESS_USER_RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT
|
||||
A.AD_TRACE_CD, A.REGIST_DE AS DT,
|
||||
COUNT(DISTINCT A.AGENT_ID) AS ACCESS_USER_CNT,
|
||||
COUNT(DISTINCT gos.ORRE_INNB) AS ORDR_CNT,
|
||||
SUM(gos.RL_SETLE_AMT) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT REGIST_DE, AD_TRACE_CD, SOPMAL_CD ,AGENT_ID FROM GC_AD_TRACE_LOG
|
||||
GROUP BY REGIST_DE, AD_TRACE_CD, SOPMAL_CD, AGENT_ID
|
||||
) A
|
||||
LEFT JOIN GC_ORRE_STAT gos
|
||||
ON (A.SOPMAL_CD = gos.SOPMAL_CD
|
||||
AND A.AGENT_ID = gos.AGENT_ID
|
||||
AND A.REGIST_DE = DATE(gos.SETLE_COMPT_DT)
|
||||
AND gos.SOPMAL_CD = 'DT'
|
||||
AND gos.SETLE_COMPT_DT between CONCAT(#{srchStrtSndngDt},' 00:00:00') AND CONCAT(#{srchEndSndngDt},' 23:59:59')
|
||||
AND gos.ORDR_STTUS_CD BETWEEN 25 AND 75
|
||||
AND gos.ORRE_DV_CD = '01')
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.REGIST_DE between #{srchStrtSndngDt} AND #{srchEndSndngDt}
|
||||
GROUP BY DT, AD_TRACE_CD
|
||||
) A2
|
||||
ORDER BY ${ordrFinal}
|
||||
) TB
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--일별 추적코드 조회-->
|
||||
<select id="selectBODailyAdTraceCdTableInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.adTraceAnals.vo.BOAdTraceAnalsVO"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY DT ASC) AS RNUM,
|
||||
AD_TRACE_CD AS AD_TRACE_CD, DT,
|
||||
COALESCE(ACCESS_USER_CNT, 0) AS ACCESS_USER_CNT,
|
||||
COALESCE(ORDR_CNT, 0) AS ORDR_CNT,
|
||||
COALESCE(RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
|
||||
IF(ACCESS_USER_CNT = 0, 0, ROUND(COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0))) AS RL_SETLE_AMT_RT,
|
||||
IF(ACCESS_USER_CNT = 0, 0, ROUND(COALESCE(RL_SETLE_AMT / ACCESS_USER_CNT, 0), 2)) AS ACCESS_USER_RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT
|
||||
A.AD_TRACE_CD, A.REGIST_DE AS DT,
|
||||
COUNT(DISTINCT A.AGENT_ID) AS ACCESS_USER_CNT,
|
||||
COUNT(DISTINCT gos.ORRE_INNB) AS ORDR_CNT,
|
||||
SUM(gos.RL_SETLE_AMT) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT REGIST_DE, AD_TRACE_CD, SOPMAL_CD ,AGENT_ID FROM GC_AD_TRACE_LOG
|
||||
GROUP BY REGIST_DE, AD_TRACE_CD, SOPMAL_CD, AGENT_ID
|
||||
) A
|
||||
LEFT JOIN GC_ORRE_STAT gos
|
||||
ON (A.SOPMAL_CD = gos.SOPMAL_CD
|
||||
AND A.AGENT_ID = gos.AGENT_ID
|
||||
AND A.REGIST_DE = DATE(gos.SETLE_COMPT_DT)
|
||||
AND gos.SOPMAL_CD = 'DT'
|
||||
AND gos.SETLE_COMPT_DT between CONCAT(#{srchStrtSndngDt},' 00:00:00') AND CONCAT(#{srchEndSndngDt},' 23:59:59')
|
||||
AND gos.ORDR_STTUS_CD BETWEEN 25 AND 75
|
||||
AND gos.ORRE_DV_CD = '01')
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.REGIST_DE between #{srchStrtSndngDt} AND #{srchEndSndngDt}
|
||||
GROUP BY DT, AD_TRACE_CD
|
||||
) A2
|
||||
ORDER BY ${ordrFinal}
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
<!-- 주별 추적코드 조회 건수 -->
|
||||
<select id="selectBOWeeklyAdTraceCdTableCntInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.adTraceAnals.vo.BOAdTraceAnalsVO"
|
||||
resultType="java.lang.Integer">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM (
|
||||
SELECT
|
||||
AD_TRACE_CD AS AD_TRACE_CD,
|
||||
DT,
|
||||
COALESCE( ACCESS_USER_CNT, 0) AS ACCESS_USER_CNT,
|
||||
COALESCE( ORDR_CNT, 0) AS ORDR_CNT,
|
||||
COALESCE( RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
|
||||
IF( ACCESS_USER_CNT = 0 , 0, ROUND( COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0) )) AS RL_SETLE_AMT_RT,
|
||||
IF(ACCESS_USER_CNT = 0, 0, ROUND(COALESCE(RL_SETLE_AMT / ACCESS_USER_CNT, 0), 2)) AS ACCESS_USER_RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT
|
||||
AD_TRACE_CD,
|
||||
DAY_T.DT,
|
||||
SUM(ACCESS_USER_CNT) AS ACCESS_USER_CNT,
|
||||
SUM(ORDR_CNT) AS ORDR_CNT,
|
||||
SUM(RL_SETLE_AMT) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
WITH RECURSIVE DateSeries AS (
|
||||
SELECT #{srchStrtSndngDt} AS DT
|
||||
UNION ALL
|
||||
SELECT DT + INTERVAL 1 DAY
|
||||
FROM DateSeries
|
||||
WHERE DT < #{srchEndSndngDt}
|
||||
)
|
||||
SELECT DATE_FORMAT(DS.DT, '%Y-%m-%d') AS DT
|
||||
FROM DateSeries DS
|
||||
) DAY_T
|
||||
INNER JOIN (
|
||||
SELECT A.AD_TRACE_CD
|
||||
, A.REGIST_DE AS DT
|
||||
, COUNT(DISTINCT A.AGENT_ID ) AS ACCESS_USER_CNT
|
||||
, COUNT(DISTINCT gos.ORRE_INNB) AS ORDR_CNT
|
||||
, SUM(gos.RL_SETLE_AMT) AS RL_SETLE_AMT
|
||||
FROM GC_AD_TRACE_LOG A
|
||||
LEFT JOIN GC_ORRE_STAT gos
|
||||
ON (A.SOPMAL_CD = gos.SOPMAL_CD AND A.AGENT_ID = gos.AGENT_ID and gos.SOPMAL_CD = #{sopmalCd} AND DATE(gos.SETLE_COMPT_DT) BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} AND gos.ORDR_STTUS_CD BETWEEN 25 AND 75 AND gos.ORRE_DV_CD = '01')
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.REGIST_DE BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt}
|
||||
GROUP BY DT,AD_TRACE_CD
|
||||
) X
|
||||
ON DAY_T.DT = X.DT
|
||||
GROUP BY DT, AD_TRACE_CD
|
||||
)A2
|
||||
ORDER BY ${ordrFinal}
|
||||
) TB
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--주별 추적코드 조회-->
|
||||
<select id="selectBOWeeklyAdTraceCdTableInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.adTraceAnals.vo.BOAdTraceAnalsVO"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
*
|
||||
FROM (
|
||||
SELECT
|
||||
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, TB.*
|
||||
FROM (
|
||||
SELECT
|
||||
AD_TRACE_CD AS AD_TRACE_CD,
|
||||
DT,
|
||||
COALESCE( ACCESS_USER_CNT, 0) AS ACCESS_USER_CNT,
|
||||
COALESCE( ORDR_CNT, 0) AS ORDR_CNT,
|
||||
COALESCE( RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
|
||||
IF( ACCESS_USER_CNT = 0 , 0, ROUND( COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0) )) AS RL_SETLE_AMT_RT,
|
||||
IF(ACCESS_USER_CNT = 0, 0, ROUND(COALESCE(RL_SETLE_AMT / ACCESS_USER_CNT, 0), 2)) AS ACCESS_USER_RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT
|
||||
AD_TRACE_CD,
|
||||
DAY_T.DT,
|
||||
SUM(ACCESS_USER_CNT) AS ACCESS_USER_CNT,
|
||||
SUM(ORDR_CNT) AS ORDR_CNT,
|
||||
SUM(RL_SETLE_AMT) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
WITH RECURSIVE DateSeries AS (
|
||||
SELECT #{srchStrtSndngDt} AS DT
|
||||
UNION ALL
|
||||
SELECT DT + INTERVAL 1 DAY
|
||||
FROM DateSeries
|
||||
WHERE DT < #{srchEndSndngDt}
|
||||
)
|
||||
SELECT DATE_FORMAT(DS.DT, '%Y-%m-%d') AS DT
|
||||
FROM DateSeries DS
|
||||
) DAY_T
|
||||
INNER JOIN (
|
||||
SELECT A.AD_TRACE_CD
|
||||
, A.REGIST_DE AS DT
|
||||
, COUNT(DISTINCT A.AGENT_ID ) AS ACCESS_USER_CNT
|
||||
, COUNT(DISTINCT gos.ORRE_INNB) AS ORDR_CNT
|
||||
, SUM(gos.RL_SETLE_AMT) AS RL_SETLE_AMT
|
||||
FROM GC_AD_TRACE_LOG A
|
||||
LEFT JOIN GC_ORRE_STAT gos
|
||||
ON (A.SOPMAL_CD = gos.SOPMAL_CD AND A.AGENT_ID = gos.AGENT_ID AND DATE(gos.SETLE_COMPT_DT) BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} AND gos.ORDR_STTUS_CD BETWEEN 25 AND 75 AND gos.ORRE_DV_CD = '01')
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.REGIST_DE BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt}
|
||||
GROUP BY DT,AD_TRACE_CD
|
||||
) X
|
||||
ON DAY_T.DT = X.DT
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchAdTraceCd)">
|
||||
AND X.AD_TRACE_CD = #{srchAdTraceCd}
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY DT, AD_TRACE_CD
|
||||
)A2
|
||||
ORDER BY ${ordrFinal}
|
||||
) TB
|
||||
WHERE (@rownum:=0)=0
|
||||
) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--일별 추적코드 건수 (상품)-->
|
||||
<select id="selectBODailyAdTraceCdGoodsTableCntInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.adTraceAnals.vo.BOAdTraceAnalsVO"
|
||||
resultType="java.lang.Integer">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
count(*)
|
||||
FROM (
|
||||
SELECT
|
||||
A.AD_TRACE_CD,
|
||||
A.REGIST_DE AS DT,
|
||||
gogs.GOODS_INNB,
|
||||
gogs.GOODS_NM,
|
||||
COUNT(DISTINCT gogs.ORDR_INNB) AS ORDR_CNT,
|
||||
SUM(gogs.ORRE_AMT) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT REGIST_DE, AD_TRACE_CD, SOPMAL_CD ,AGENT_ID FROM GC_AD_TRACE_LOG
|
||||
GROUP BY REGIST_DE, AD_TRACE_CD, SOPMAL_CD, AGENT_ID
|
||||
) A
|
||||
LEFT JOIN GC_ORRE_STAT gos
|
||||
ON A.SOPMAL_CD = gos.SOPMAL_CD
|
||||
AND A.AGENT_ID = gos.AGENT_ID
|
||||
LEFT JOIN GC_ORRE_GOPTN_STAT gogs
|
||||
ON gos.SOPMAL_CD = gogs.SOPMAL_CD
|
||||
AND gos.ORRE_INNB = gogs.ORDR_INNB
|
||||
AND gogs.SOPMAL_CD = #{sopmalCd}
|
||||
AND gogs.SETLE_COMPT_DT BETWEEN CONCAT(#{srchStrtSndngDt},' 00:00:00') AND CONCAT(#{srchEndSndngDt},' 23:59:59')
|
||||
AND gogs.ORDR_STTUS_CD BETWEEN 25 AND 75
|
||||
AND gogs.ORRE_DV_CD = '01'
|
||||
WHERE A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.REGIST_DE BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt}
|
||||
GROUP BY DT, AD_TRACE_CD, GOODS_INNB, GOODS_NM
|
||||
) t
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--일별 추적코드 조회(상품)-->
|
||||
<select id="selectBODailyAdTraceCdGoodsTableInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.adTraceAnals.vo.BOAdTraceAnalsVO"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY DT ASC) AS RNUM,
|
||||
AD_TRACE_CD,
|
||||
DT,
|
||||
GOODS_INNB,
|
||||
GOODS_NM,
|
||||
COALESCE(ORDR_CNT,0) AS ORDR_CNT,
|
||||
COALESCE(RL_SETLE_AMT,0) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT
|
||||
A.AD_TRACE_CD,
|
||||
A.REGIST_DE AS DT,
|
||||
gogs.GOODS_INNB,
|
||||
gogs.GOODS_NM,
|
||||
COUNT(DISTINCT gogs.ORDR_INNB) AS ORDR_CNT,
|
||||
SUM(gogs.ORRE_AMT) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT REGIST_DE, AD_TRACE_CD, SOPMAL_CD ,AGENT_ID FROM GC_AD_TRACE_LOG
|
||||
GROUP BY REGIST_DE, AD_TRACE_CD, SOPMAL_CD, AGENT_ID
|
||||
) A
|
||||
LEFT JOIN GC_ORRE_STAT gos
|
||||
ON A.SOPMAL_CD = gos.SOPMAL_CD
|
||||
AND A.AGENT_ID = gos.AGENT_ID
|
||||
LEFT JOIN GC_ORRE_GOPTN_STAT gogs
|
||||
ON gos.SOPMAL_CD = gogs.SOPMAL_CD
|
||||
AND gos.ORRE_INNB = gogs.ORDR_INNB
|
||||
AND gogs.SOPMAL_CD = #{sopmalCd}
|
||||
AND gogs.SETLE_COMPT_DT BETWEEN CONCAT(#{srchStrtSndngDt},' 00:00:00') AND CONCAT(#{srchEndSndngDt},' 23:59:59')
|
||||
AND gogs.ORDR_STTUS_CD BETWEEN 25 AND 75
|
||||
AND gogs.ORRE_DV_CD = '01'
|
||||
WHERE A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.REGIST_DE BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt}
|
||||
GROUP BY DT, AD_TRACE_CD, GOODS_INNB, GOODS_NM
|
||||
) t
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<select id="selectBOMngrAdTraceCdList">
|
||||
<![CDATA[
|
||||
SELECT AD_TRACE_CD
|
||||
FROM GC_AD_TRACE_LOG
|
||||
WHERE SOPMAL_CD = #{sopmalCd}
|
||||
GROUP BY AD_TRACE_CD
|
||||
]]>
|
||||
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,157 @@
|
||||
<?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.stats.adtrace.mapper.BOAdTraceMapper">
|
||||
|
||||
<!--광고추적 목록 조회 개수-->
|
||||
<select id="selectBOAdTraceCount"
|
||||
parameterType="com.wb.domainserver.domain.gcone.stats.adtrace.vo.BOAdTraceVO" resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM
|
||||
GC_AD_TRACE
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
<include refid="where"/>
|
||||
</select>
|
||||
<!--광고추적 목록 조회-->
|
||||
<select id="selectBOAdTraceList" parameterType="com.wb.domainserver.domain.gcone.stats.adtrace.vo.BOAdTraceVO" resultType="dataMap">
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT TB.*
|
||||
, CAST(@ROWNUM:=@ROWNUM + 1 AS UNSIGNED) AS RNUM
|
||||
FROM (
|
||||
SELECT
|
||||
AD_TRACE_INNB
|
||||
, SOPMAL_CD
|
||||
, AD_TRACE_NM
|
||||
, AD_MEDIA_DV_CD
|
||||
, AD_MEDIA_NM
|
||||
, CMPGN_TY
|
||||
, CMPGN_NM
|
||||
, AD_GROUP_NM
|
||||
, MATR_NM
|
||||
, LANDING_URL
|
||||
, RM
|
||||
, REGIST_DT
|
||||
, UPDT_DT
|
||||
FROM
|
||||
GC_AD_TRACE
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
<include refid="where"/>
|
||||
ORDER BY REGIST_DT DESC
|
||||
) TB
|
||||
WHERE (@ROWNUM:=0)=0
|
||||
) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
</select>
|
||||
<!--광고추적 검색조건-->
|
||||
<sql id="where">
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStr)">
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchTy, 'adTraceNm')">
|
||||
AND AD_TRACE_NM LIKE CONCAT('%',#{srchStr}, '%')
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchTy, 'adMediaNm')">
|
||||
AND AD_MEDIA_NM LIKE CONCAT('%',#{srchStr}, '%')
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchTy, 'cmpgnTy')">
|
||||
AND CMPGN_TY = #{srchStr}
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchTy, 'cmpgnNm')">
|
||||
AND CMPGN_NM LIKE CONCAT('%',#{srchStr}, '%')
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchTy, 'adGroupNm')">
|
||||
AND AD_GROUP_NM LIKE CONCAT('%',#{srchStr}, '%')
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchTy, 'matrNm')">
|
||||
AND MATR_NM LIKE CONCAT('%',#{srchStr}, '%')
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchTy, 'rm')">
|
||||
AND RM LIKE CONCAT('%',#{srchStr}, '%')
|
||||
</if>
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<!--광고추적 등록-->
|
||||
<insert id="insertBOAdTrace" parameterType="com.wb.domainserver.domain.gcone.stats.adtrace.vo.BOAdTraceVO">
|
||||
<selectKey order="BEFORE" keyProperty="adTraceInnb" resultType="java.lang.String">
|
||||
<![CDATA[
|
||||
SELECT IFNULL(MAX(AD_TRACE_INNB), 0)+1
|
||||
FROM GC_AD_TRACE
|
||||
]]>
|
||||
</selectKey>
|
||||
INSERT INTO GC_AD_TRACE
|
||||
(
|
||||
AD_TRACE_INNB,
|
||||
SOPMAL_CD,
|
||||
AD_TRACE_NM,
|
||||
AD_MEDIA_DV_CD,
|
||||
AD_MEDIA_NM,
|
||||
CMPGN_TY,
|
||||
CMPGN_NM,
|
||||
AD_GROUP_NM,
|
||||
MATR_NM,
|
||||
LANDING_URL,
|
||||
RM,
|
||||
REGUSR,
|
||||
REGIST_DT
|
||||
)
|
||||
VALUES(
|
||||
#{adTraceInnb},
|
||||
#{sopmalCd},
|
||||
#{adTraceNm},
|
||||
#{adMediaDvCd},
|
||||
#{adMediaNm},
|
||||
#{cmpgnTy},
|
||||
#{cmpgnNm},
|
||||
#{adGroupNm},
|
||||
#{matrNm},
|
||||
#{landingUrl},
|
||||
#{rm},
|
||||
#{regusr},
|
||||
SYSDATE()
|
||||
)
|
||||
</insert>
|
||||
<!--광고추적 상세 조회-->
|
||||
<select id="selectBOAdTraceDtlForm" parameterType="com.wb.domainserver.domain.gcone.stats.adtrace.vo.BOAdTraceVO" resultType="dataMap">
|
||||
SELECT
|
||||
AD_TRACE_INNB
|
||||
, SOPMAL_CD
|
||||
, AD_TRACE_NM
|
||||
, AD_MEDIA_DV_CD
|
||||
, AD_MEDIA_NM
|
||||
, CMPGN_TY
|
||||
, CMPGN_NM
|
||||
, AD_GROUP_NM
|
||||
, MATR_NM
|
||||
, LANDING_URL
|
||||
, RM
|
||||
FROM
|
||||
GC_AD_TRACE
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND AD_TRACE_INNB = #{adTraceInnb}
|
||||
</select>
|
||||
|
||||
<!--광고추적 수정-->
|
||||
<update id="updateBOAdTraceDtl" parameterType="com.wb.domainserver.domain.gcone.stats.adtrace.vo.BOAdTraceVO">
|
||||
UPDATE GC_AD_TRACE
|
||||
SET
|
||||
AD_TRACE_NM = #{adTraceNm},
|
||||
AD_MEDIA_DV_CD = #{adMediaDvCd},
|
||||
AD_MEDIA_NM = #{adMediaNm},
|
||||
CMPGN_TY = #{cmpgnTy},
|
||||
CMPGN_NM = #{cmpgnNm},
|
||||
AD_GROUP_NM = #{adGroupNm},
|
||||
MATR_NM = #{matrNm},
|
||||
LANDING_URL = #{landingUrl},
|
||||
RM = #{rm},
|
||||
UPDUSR = #{updusr},
|
||||
UPDT_DT = SYSDATE()
|
||||
WHERE 1=1
|
||||
AND SOPMAL_CD = #{sopmalCd}
|
||||
AND AD_TRACE_INNB = #{adTraceInnb}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,936 @@
|
||||
<?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.stats.marktAnals.mapper.BOMarktAnalsMapper">
|
||||
|
||||
<!--
|
||||
어제 데이터 조회
|
||||
# 일별 유입수
|
||||
-->
|
||||
<select id="selectBOMngrMainDalyInflowCntInqire"
|
||||
parameterType = "DataMap"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
|
||||
FROM
|
||||
GC_ACCESS_STAT A
|
||||
WHERE 1 = 1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND DATE(A.BGN_DT) = CURDATE() - INTERVAL 1 DAY
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--
|
||||
#21 일별 시간대별 유입수와 결제수
|
||||
-->
|
||||
<select id="selectBOHourlySetleCntInflowCntInqire"
|
||||
parameterType = "DataMap"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
WITH RECURSIVE Hours AS (
|
||||
SELECT 1 AS HR
|
||||
UNION ALL
|
||||
SELECT HR + 1
|
||||
FROM Hours
|
||||
WHERE HR < 24
|
||||
)
|
||||
SELECT
|
||||
CONCAT( LPAD(H.HR, 2, '0'), '시') AS DT,
|
||||
COALESCE(SUM(A.ACCESS_USER_CNT), 0) AS ACCESS_USER_CNT,
|
||||
COALESCE(SUM(O.ORDR_CNT), 0) AS ORDR_CNT
|
||||
FROM Hours H
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
DATE_FORMAT(BGN_DT, '%H') AS HR,
|
||||
COUNT(DISTINCT AGENT_ID) AS ACCESS_USER_CNT
|
||||
FROM GC_ACCESS_STAT A
|
||||
WHERE A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY HR
|
||||
) A ON A.HR = H.HR
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
DATE_FORMAT(SETLE_COMPT_DT, '%H') AS ORD_HR,
|
||||
SUM(CASE WHEN ORRE_DV_CD = '01' and ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END) AS ORDR_CNT
|
||||
FROM GC_ORRE_STAT O
|
||||
WHERE O.SOPMAL_CD = #{sopmalCd}
|
||||
AND O.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
AND O.ORDR_STTUS_CD between '25' and '85'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND O.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY ORD_HR
|
||||
) O ON O.ORD_HR = H.HR
|
||||
GROUP BY H.HR
|
||||
ORDER BY H.HR ASC
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--
|
||||
# 통계 > 일별 유입수 및 결제수
|
||||
-->
|
||||
<select id="selectBODailyChartSetleCntInflowCntInqire"
|
||||
parameterType = "DataMap"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
WITH RECURSIVE DateSeries AS (
|
||||
SELECT #{srchStrtSndngDt} AS DT
|
||||
UNION ALL
|
||||
SELECT DATE_ADD(DT, INTERVAL 1 DAY)
|
||||
FROM DateSeries
|
||||
WHERE DT < date_sub( #{srchEndSndngDt}, interval 1 day)
|
||||
)
|
||||
SELECT
|
||||
DATE_FORMAT(DS.DT, '%Y%m%d') AS DT,
|
||||
COALESCE(SUM(X.ACCESS_USER_CNT), 0) AS ACCESS_USER_CNT,
|
||||
COALESCE(SUM(X.ORDR_CNT), 0) AS ORDR_CNT
|
||||
FROM DateSeries DS
|
||||
LEFT JOIN (
|
||||
SELECT DATE_FORMAT(A.BGN_DT, '%Y%m%d') AS DT
|
||||
, COUNT(DISTINCT A.AGENT_ID) AS ACCESS_USER_CNT
|
||||
, 0 AS ORDR_CNT
|
||||
FROM GC_ACCESS_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND CONCAT(#{srchEndSndngDt}, ' 23:59:59')
|
||||
GROUP BY DATE_FORMAT(A.BGN_DT, '%Y%m%d')
|
||||
UNION ALL
|
||||
SELECT DATE_FORMAT(A.SETLE_COMPT_DT, '%Y%m%d') AS ORD_DT
|
||||
, 0 AS ACCESS_USER_CNT
|
||||
, SUM(CASE WHEN A.ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END) AS ORDR_CNT
|
||||
FROM GC_ORRE_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND CONCAT(#{srchEndSndngDt}, ' 23:59:59')
|
||||
AND A.ORRE_DV_CD = '01' /* 25.03.12 수정*/
|
||||
AND A.ORDR_STTUS_CD between '25' and '75' /* 25.03.12 수정*/
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY DATE_FORMAT(A.SETLE_COMPT_DT, '%Y%m%d')
|
||||
) X ON DATE_FORMAT(DS.DT, '%Y%m%d') = X.DT
|
||||
GROUP BY DS.DT
|
||||
ORDER BY DS.DT ASC
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--
|
||||
#주별 유입수와 결제수
|
||||
-->
|
||||
<select id="selectBOWeeklyChartSetleCntInflowCntInqire"
|
||||
parameterType="DataMap"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
WEEK(DATE_SUB(X.DT, INTERVAL (WEEKDAY(X.DT) + 3) % 7 DAY), 1) AS YR_WK,
|
||||
MIN(X.DT) AS DT,
|
||||
COALESCE(SUM(X.ACCESS_USER_CNT), 0) AS ACCESS_USER_CNT,
|
||||
COALESCE(SUM(X.ORDR_CNT), 0) AS ORDR_CNT
|
||||
FROM (
|
||||
SELECT DATE_FORMAT(BGN_DT , '%Y%m%d') AS DT
|
||||
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
|
||||
, 0 ORDR_CNT
|
||||
FROM GC_ACCESS_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY DT
|
||||
UNION ALL
|
||||
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y%m%d') AS ORD_DT
|
||||
, 0 ACCESS_USER_CNT
|
||||
, SUM(CASE WHEN ORRE_DV_CD = '01' and ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
|
||||
FROM GC_ORRE_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
AND A.ORDR_STTUS_CD NOT IN ('95','99') /* 추가 조건 */
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY ORD_DT
|
||||
) X
|
||||
GROUP BY YR_WK
|
||||
ORDER BY DT ASC, YR_WK ASC
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--
|
||||
#월별 유입수와 결제수
|
||||
-->
|
||||
<select id="selectBOMonthlyChartSetleCntInflowCntInqire"
|
||||
parameterType="DataMap"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
DT ,
|
||||
COALESCE(SUM(X.ACCESS_USER_CNT), 0) AS ACCESS_USER_CNT,
|
||||
COALESCE(SUM(X.ORDR_CNT), 0) AS ORDR_CNT
|
||||
FROM (
|
||||
SELECT DATE_FORMAT(BGN_DT , '%Y%m') AS DT
|
||||
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
|
||||
, 0 ORDR_CNT
|
||||
FROM GC_ACCESS_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY DT
|
||||
UNION ALL
|
||||
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y%m') AS ORD_DT
|
||||
, 0 ACCESS_USER_CNT
|
||||
, SUM(CASE WHEN ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
|
||||
FROM GC_ORRE_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
AND A.ORDR_STTUS_CD NOT IN ('95','99') /* 추가 조건 */
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY ORD_DT
|
||||
) X
|
||||
GROUP BY DT
|
||||
ORDER BY DT ASC
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--
|
||||
#21 일별 시간대별 결제금액
|
||||
-->
|
||||
<select id="selectBOHourlySetleAmtInqire"
|
||||
parameterType = "DataMap"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
WITH RECURSIVE cal_hr AS (
|
||||
SELECT 1 AS HR
|
||||
UNION ALL
|
||||
SELECT HR + 1
|
||||
FROM cal_hr
|
||||
WHERE HR < 24
|
||||
)
|
||||
SELECT H.HR
|
||||
, CONCAT( LPAD(H.HR, 2, '0'), '시') AS DT_HR
|
||||
, COALESCE( SUM(ORDR_CNT), 0) AS ORDR_CNT #주문건수
|
||||
, COALESCE( SUM(REFUND_CNT), 0) AS REFUND_CNT #환불건수
|
||||
, COALESCE( SUM(RL_SETLE_AMT), 0) AS RL_SETLE_AMT #결제금액
|
||||
, COALESCE( SUM(REFUND_AMT), 0) AS REFUND_AMT #환불금액
|
||||
FROM cal_hr H
|
||||
LEFT JOIN (
|
||||
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%H') AS HR
|
||||
, SUM(CASE WHEN ORRE_DV_CD = '01' and ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
|
||||
, COUNT(DISTINCT CASE WHEN ORRE_DV_CD = '02' THEN PARNTS_ORDR_INNB ELSE NULL END ) AS REFUND_CNT
|
||||
, SUM(case when ORDR_STTUS_CD between '25' and '75' then RL_SETLE_AMT else NULL end ) RL_SETLE_AMT
|
||||
, SUM(REFUND_AMT) REFUND_AMT
|
||||
FROM GC_ORRE_STAT A
|
||||
WHERE A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
AND ORDR_STTUS_CD between '25' and '85'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY HR
|
||||
) TOT
|
||||
ON TOT.HR = H.HR
|
||||
GROUP BY H.HR
|
||||
ORDER BY H.HR
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<!--
|
||||
#22 일별 유입수와 결제수 표 건수 조회
|
||||
-->
|
||||
<select id="selectBODailySetleCntInflowCntTableCntInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
|
||||
resultType="java.lang.Integer">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM (
|
||||
SELECT
|
||||
DT,
|
||||
COALESCE( ACCESS_USER_CNT, 0) AS ACCESS_USER_CNT,
|
||||
COALESCE( ORDR_CNT, 0) AS ORDR_CNT,
|
||||
COALESCE( RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
|
||||
IF( ACCESS_USER_CNT = 0 , 0, ROUND( COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0) )) AS RL_SETLE_AMT_RT
|
||||
FROM (
|
||||
SELECT
|
||||
DAY_T.DT,
|
||||
SUM(ACCESS_USER_CNT) AS ACCESS_USER_CNT,
|
||||
SUM(ORDR_CNT) AS ORDR_CNT,
|
||||
SUM(RL_SETLE_AMT) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
WITH RECURSIVE DateSeries AS (
|
||||
SELECT #{srchStrtSndngDt} AS DT
|
||||
UNION ALL
|
||||
SELECT DT + INTERVAL 1 DAY
|
||||
FROM DateSeries
|
||||
WHERE DT < #{srchEndSndngDt}
|
||||
)
|
||||
SELECT DATE_FORMAT(DS.DT, '%Y-%m-%d') AS DT
|
||||
FROM DateSeries DS
|
||||
) DAY_T
|
||||
LEFT JOIN (
|
||||
SELECT DATE_FORMAT(BGN_DT , '%Y-%m-%d') AS DT
|
||||
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
|
||||
, 0 AS ORDR_CNT
|
||||
, 0 AS RL_SETLE_AMT
|
||||
FROM GC_ACCESS_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY DT
|
||||
UNION ALL
|
||||
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y-%m-%d') AS ORD_DT
|
||||
, 0 AS ACCESS_USER_CNT
|
||||
, SUM(CASE WHEN ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
|
||||
, SUM(RL_SETLE_AMT) RL_SETLE_AMT
|
||||
FROM GC_ORRE_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.ORRE_DV_CD = '01' /* 25.03.12 수정*/
|
||||
AND A.ORDR_STTUS_CD between '25' and '75' /* 25.03.12 수정*/
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY ORD_DT
|
||||
) X
|
||||
ON DAY_T.DT = X.DT
|
||||
GROUP BY DT
|
||||
)A2
|
||||
ORDER BY ${ordrFinal}
|
||||
) AS TEMP
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!--
|
||||
#12, 13.일별 실적 표 조회 표 조회
|
||||
-->
|
||||
<select id="selectBODailySetleCntInflowCntTableInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
*
|
||||
FROM (
|
||||
SELECT
|
||||
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, TB.*
|
||||
FROM (
|
||||
SELECT
|
||||
DT,
|
||||
COALESCE( ACCESS_USER_CNT, 0) AS ACCESS_USER_CNT,
|
||||
COALESCE( ORDR_CNT, 0) AS ORDR_CNT,
|
||||
COALESCE( RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
|
||||
IF( ACCESS_USER_CNT = 0 , 0, ROUND( COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0) )) AS RL_SETLE_AMT_RT
|
||||
FROM (
|
||||
SELECT
|
||||
DAY_T.DT,
|
||||
SUM(ACCESS_USER_CNT) AS ACCESS_USER_CNT,
|
||||
SUM(ORDR_CNT) AS ORDR_CNT,
|
||||
SUM(RL_SETLE_AMT) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
WITH RECURSIVE DateSeries AS (
|
||||
SELECT #{srchStrtSndngDt} AS DT
|
||||
UNION ALL
|
||||
SELECT DT + INTERVAL 1 DAY
|
||||
FROM DateSeries
|
||||
WHERE DT < date_sub( #{srchEndSndngDt}, interval 1 day)
|
||||
)
|
||||
SELECT DATE_FORMAT(DS.DT, '%Y-%m-%d') AS DT
|
||||
FROM DateSeries DS
|
||||
) DAY_T
|
||||
LEFT JOIN (
|
||||
SELECT DATE_FORMAT(BGN_DT , '%Y-%m-%d') AS DT
|
||||
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
|
||||
, 0 AS ORDR_CNT
|
||||
, 0 AS RL_SETLE_AMT
|
||||
FROM GC_ACCESS_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY DT
|
||||
UNION ALL
|
||||
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y-%m-%d') AS ORD_DT
|
||||
, 0 AS ACCESS_USER_CNT
|
||||
, SUM(CASE WHEN ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
|
||||
, SUM(RL_SETLE_AMT) RL_SETLE_AMT
|
||||
FROM GC_ORRE_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.ORRE_DV_CD = '01' /* 25.03.12 수정*/
|
||||
AND A.ORDR_STTUS_CD between '25' and '75' /* 25.03.12 수정*/
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY ORD_DT
|
||||
) X
|
||||
ON DAY_T.DT = X.DT
|
||||
GROUP BY DT
|
||||
)A2
|
||||
ORDER BY ${ordrFinal}
|
||||
) TB
|
||||
WHERE (@rownum:=0)=0
|
||||
) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!--
|
||||
#22 별 시간대별 유입수와 결제수 표 건수 조회
|
||||
-->
|
||||
<select id="selectBODailyHourlySetleCntInflowCntTableCntInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
|
||||
resultType="java.lang.Integer">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM (
|
||||
SELECT
|
||||
DT,
|
||||
HR,
|
||||
ACCESS_USER_CNT,
|
||||
COALESCE( ORDR_CNT, 0) AS ORDR_CNT,
|
||||
COALESCE( RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
|
||||
IF( ACCESS_USER_CNT = 0 , 0, ROUND( COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0) )) AS RL_SETLE_AMT_RT
|
||||
FROM (
|
||||
SELECT
|
||||
DT,
|
||||
HR,
|
||||
SUM(ACCESS_USER_CNT) AS ACCESS_USER_CNT,
|
||||
SUM(ORDR_CNT) AS ORDR_CNT,
|
||||
SUM(RL_SETLE_AMT) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT DT, HR
|
||||
, 0 ACCESS_USER_CNT
|
||||
, 0 ORDR_CNT
|
||||
, 0 RL_SETLE_AMT
|
||||
FROM (
|
||||
-- 시간테이블
|
||||
WITH RECURSIVE cal_day AS (
|
||||
SELECT #{srchStrtSndngDt} DT
|
||||
UNION ALL
|
||||
SELECT
|
||||
DT + interval 1 day
|
||||
FROM
|
||||
cal_day
|
||||
WHERE
|
||||
DT + interval 1 day <= #{srchEndSndngDt}
|
||||
)
|
||||
SELECT DT
|
||||
FROM cal_day
|
||||
) DAY_T
|
||||
JOIN (
|
||||
-- 시간테이블
|
||||
WITH RECURSIVE cal_hr AS (
|
||||
SELECT 1 HR
|
||||
UNION ALL
|
||||
SELECT
|
||||
HR + 1
|
||||
FROM
|
||||
cal_hr
|
||||
WHERE
|
||||
HR + 1 <= 24
|
||||
)
|
||||
SELECT lpad(HR-1, 2, '0') HR
|
||||
FROM cal_hr
|
||||
) HR_T
|
||||
ON 1=1
|
||||
UNION ALL
|
||||
SELECT DATE_FORMAT(BGN_DT , '%Y-%m-%d') AS DT
|
||||
, DATE_FORMAT(BGN_DT , '%H') AS HR
|
||||
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
|
||||
, 0 AS ORDR_CNT
|
||||
, 0 AS RL_SETLE_AMT
|
||||
FROM GC_ACCESS_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY DT, HR
|
||||
UNION ALL
|
||||
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y-%m-%d') AS ORD_DT
|
||||
, DATE_FORMAT(SETLE_COMPT_DT , '%H') AS ORD_HR
|
||||
, 0 AS ACCESS_USER_CNT
|
||||
, SUM(CASE WHEN ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
|
||||
, SUM(RL_SETLE_AMT) RL_SETLE_AMT
|
||||
FROM GC_ORRE_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.ORRE_DV_CD = '01' /* 25.03.12 수정*/
|
||||
AND A.ORDR_STTUS_CD between '25' and '75' /* 25.03.12 수정*/
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY ORD_DT, ORD_HR
|
||||
) A
|
||||
GROUP BY DT, HR
|
||||
)A2
|
||||
ORDER BY ${ordrFinal}
|
||||
) AS TEMP
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!--
|
||||
#22 일별 시간대별 유입수와 결제수 표 조회
|
||||
-->
|
||||
<select id="selectBODailyHourlySetleCntInflowCntTableInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
*
|
||||
FROM (
|
||||
SELECT
|
||||
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, TB.*
|
||||
FROM (
|
||||
SELECT
|
||||
DT,
|
||||
HR,
|
||||
ACCESS_USER_CNT,
|
||||
COALESCE( ORDR_CNT, 0) AS ORDR_CNT,
|
||||
COALESCE( RL_SETLE_AMT, 0) AS RL_SETLE_AMT,
|
||||
IF( ACCESS_USER_CNT = 0 , 0, ROUND( COALESCE(ORDR_CNT / ACCESS_USER_CNT * 100, 0) )) AS RL_SETLE_AMT_RT
|
||||
FROM (
|
||||
SELECT
|
||||
DT,
|
||||
HR,
|
||||
SUM(ACCESS_USER_CNT) AS ACCESS_USER_CNT,
|
||||
SUM(ORDR_CNT) AS ORDR_CNT,
|
||||
SUM(RL_SETLE_AMT) AS RL_SETLE_AMT
|
||||
FROM (
|
||||
SELECT DT, HR
|
||||
, 0 ACCESS_USER_CNT
|
||||
, 0 ORDR_CNT
|
||||
, 0 RL_SETLE_AMT
|
||||
FROM (
|
||||
-- 시간테이블
|
||||
WITH RECURSIVE cal_day AS (
|
||||
SELECT #{srchStrtSndngDt} DT
|
||||
UNION ALL
|
||||
SELECT
|
||||
DT + interval 1 day
|
||||
FROM
|
||||
cal_day
|
||||
WHERE
|
||||
DT + interval 1 day <= #{srchEndSndngDt}
|
||||
)
|
||||
SELECT DT
|
||||
FROM cal_day
|
||||
) DAY_T
|
||||
JOIN (
|
||||
-- 시간테이블
|
||||
WITH RECURSIVE cal_hr AS (
|
||||
SELECT 1 HR
|
||||
UNION ALL
|
||||
SELECT
|
||||
HR + 1
|
||||
FROM
|
||||
cal_hr
|
||||
WHERE
|
||||
HR + 1 <= 24
|
||||
)
|
||||
SELECT lpad(HR-1, 2, '0') HR
|
||||
FROM cal_hr
|
||||
) HR_T
|
||||
ON 1=1
|
||||
UNION ALL
|
||||
SELECT DATE_FORMAT(BGN_DT , '%Y-%m-%d') AS DT
|
||||
, DATE_FORMAT(BGN_DT , '%H') AS HR
|
||||
, COUNT(DISTINCT AGENT_ID ) AS ACCESS_USER_CNT
|
||||
, 0 AS ORDR_CNT
|
||||
, 0 AS RL_SETLE_AMT
|
||||
FROM GC_ACCESS_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.BGN_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY DT, HR
|
||||
UNION ALL
|
||||
SELECT DATE_FORMAT(SETLE_COMPT_DT , '%Y-%m-%d') AS ORD_DT
|
||||
, DATE_FORMAT(SETLE_COMPT_DT , '%H') AS ORD_HR
|
||||
, 0 AS ACCESS_USER_CNT
|
||||
, SUM(CASE WHEN ORRE_DV_CD = '01' and A.ORDR_STTUS_CD between '25' and '75' THEN 1 ELSE NULL END ) AS ORDR_CNT
|
||||
, SUM(RL_SETLE_AMT) RL_SETLE_AMT
|
||||
FROM GC_ORRE_STAT A
|
||||
WHERE 1=1
|
||||
AND A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.ORRE_DV_CD = '01' /* 25.03.12 수정*/
|
||||
AND A.ORDR_STTUS_CD between '25' and '75' /* 25.03.12 수정*/
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY ORD_DT, ORD_HR
|
||||
) A
|
||||
GROUP BY DT, HR
|
||||
)A2
|
||||
ORDER BY ${ordrFinal}
|
||||
) TB
|
||||
WHERE (@rownum:=0)=0
|
||||
) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!--
|
||||
쿠폰사용금액 표 건수 조회
|
||||
-->
|
||||
<select id="selectBOCoupUseValeTableCntInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
|
||||
resultType="java.lang.Integer">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM (
|
||||
-- 장바구니 쿠폰
|
||||
SELECT '장바구니' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
|
||||
, COALESCE( cart.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
|
||||
, COALESCE( cart.DISCOUNT_AMT, 0) AS DISCOUNT_AMT
|
||||
, COALESCE( cart.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
|
||||
FROM (
|
||||
SELECT GD.COUPON_INNB
|
||||
, GD.COUP_NM
|
||||
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
|
||||
FROM GC_DOWNLOAD GD
|
||||
WHERE GD.SOPMAL_CD = #{sopmalCd}
|
||||
AND GD.COUPON_STTUS_CD <> '04'
|
||||
AND GD.BNEF_DV_CD = '03' -- 장바구니 쿠폰
|
||||
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
|
||||
GROUP BY GD.COUPON_INNB, GD.COUP_NM
|
||||
) B
|
||||
LEFT JOIN (
|
||||
SELECT '장바구니' COUPON_DV, GD.COUPON_INNB, A.CART_COUP_NM AS COUPON_NM
|
||||
, SUM(A.SLEPRIC * A.ORRE_QY) AS SLEPRIC_SUM
|
||||
, SUM(A.CART_COUPON_DSCNT_UNIT * A.ORRE_QY + A.CART_COUPON_DSCNT_REST) AS DISCOUNT_AMT
|
||||
, COUNT(DISTINCT CASE WHEN GD.COUPON_STTUS_CD = '03' THEN GD.DWLD_COUPON_INNB ELSE NULL END) AS COUPON_USE_DCNT
|
||||
FROM GC_ORRE_GOPTN_STAT A
|
||||
JOIN GC_DOWNLOAD GD
|
||||
ON A.SOPMAL_CD = GD.SOPMAL_CD
|
||||
AND A.CART_DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
|
||||
WHERE A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.CART_DWLD_COUPON_INNB > ''
|
||||
AND A.ORRE_DV_CD = '01'
|
||||
AND A.ORDR_STTUS_CD between '25' AND '75'
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY 1,2,3
|
||||
) cart
|
||||
ON cart.COUPON_INNB = B.COUPON_INNB
|
||||
AND cart.COUPON_NM = B.COUP_NM
|
||||
UNION ALL
|
||||
-- 상품 쿠폰
|
||||
SELECT '상품' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
|
||||
, COALESCE( goods.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
|
||||
, COALESCE( goods.DISCOUNT_AMT, 0) AS DISCOUNT_AMT
|
||||
, COALESCE( goods.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
|
||||
FROM(
|
||||
SELECT GD.COUPON_INNB
|
||||
, GD.COUP_NM
|
||||
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
|
||||
FROM GC_DOWNLOAD GD
|
||||
WHERE GD.SOPMAL_CD = #{sopmalCd}
|
||||
AND GD.COUPON_STTUS_CD <> '04'
|
||||
AND GD.BNEF_DV_CD = '01' -- 상품 쿠폰
|
||||
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
|
||||
GROUP BY GD.COUPON_INNB, GD.COUP_NM
|
||||
) B
|
||||
LEFT JOIN (
|
||||
SELECT '상품' COUPON_DV, GD.COUPON_INNB, A.GOODS_COUP_NM AS COUPON_NM
|
||||
, SUM(A.SLEPRIC * A.ORRE_QY) AS SLEPRIC_SUM
|
||||
, SUM(A.GOODS_COUPON_DSCNT_UNIT * A.ORRE_QY + A.GOODS_COUPON_DSCNT_REST) AS DISCOUNT_AMT
|
||||
, COUNT(DISTINCT CASE WHEN GD.COUPON_STTUS_CD = '03' THEN GD.DWLD_COUPON_INNB ELSE NULL END) AS COUPON_USE_DCNT
|
||||
FROM GC_ORRE_GOPTN_STAT A
|
||||
JOIN GC_DOWNLOAD GD
|
||||
ON A.SOPMAL_CD = GD.SOPMAL_CD
|
||||
AND A.GOODS_DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
|
||||
WHERE A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.GOODS_DWLD_COUPON_INNB > ''
|
||||
AND A.ORRE_DV_CD = '01'
|
||||
AND A.ORDR_STTUS_CD between '25' AND '75'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY 1,2,3
|
||||
) goods
|
||||
ON goods.COUPON_INNB = B.COUPON_INNB
|
||||
AND goods.COUPON_NM = B.COUP_NM
|
||||
UNION ALL
|
||||
-- 배송비 쿠폰
|
||||
SELECT '배송' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
|
||||
, COALESCE( dlvy.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
|
||||
, COALESCE( dlvy.DLVY_DISCOUNT_AMT, 0) AS DISCOUNT_AMT
|
||||
, COALESCE( dlvy.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
|
||||
FROM (
|
||||
SELECT GD.COUPON_INNB
|
||||
, GD.COUP_NM
|
||||
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
|
||||
FROM GC_DOWNLOAD GD
|
||||
WHERE GD.SOPMAL_CD = #{sopmalCd}
|
||||
AND GD.COUPON_STTUS_CD <> '04'
|
||||
AND GD.BNEF_DV_CD = '02' -- 배송비 쿠폰
|
||||
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
|
||||
GROUP BY GD.COUPON_INNB, GD.COUP_NM
|
||||
) B
|
||||
LEFT JOIN (
|
||||
SELECT '배송' COUPON_DV, GD.COUPON_INNB, GD.COUP_NM AS COUPON_NM
|
||||
, SUM(B.RL_SETLE_AMT) AS SLEPRIC_SUM
|
||||
, SUM(A.DLVY_COUPON_DSCNT_AMT) AS DLVY_DISCOUNT_AMT
|
||||
, COUNT(DISTINCT A.DWLD_COUPON_INNB) AS COUPON_USE_DCNT
|
||||
FROM GC_ORDER_SHIPPING A
|
||||
JOIN GC_ORDER B
|
||||
ON A.SOPMAL_CD = B.SOPMAL_CD
|
||||
AND A.ORDR_INNB = B.ORDR_INNB
|
||||
JOIN GC_DOWNLOAD GD
|
||||
ON A.SOPMAL_CD = GD.SOPMAL_CD
|
||||
AND A.DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
|
||||
WHERE A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.DWLD_COUPON_INNB > ''
|
||||
AND A.ORDR_STTUS_CD between '25' AND '75'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND B.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
AND B.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY 1,2,3
|
||||
) dlvy
|
||||
ON dlvy.COUPON_INNB = B.COUPON_INNB
|
||||
AND dlvy.COUPON_NM = B.COUP_NM
|
||||
ORDER BY ${ordrFinal}
|
||||
) AS TEMP
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
<!--
|
||||
쿠폰사용금액 표 조회
|
||||
-->
|
||||
<select id="selectBOCoupUseValeTableInqire"
|
||||
parameterType = "com.wb.domainserver.domain.gcone.stats.marktAnals.vo.BOMarktAnalsVO"
|
||||
resultType="DataMap">
|
||||
|
||||
<![CDATA[
|
||||
SELECT
|
||||
*
|
||||
FROM (
|
||||
SELECT
|
||||
CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM, TB.*
|
||||
FROM (
|
||||
-- 장바구니 쿠폰
|
||||
SELECT '장바구니' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
|
||||
, COALESCE( cart.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
|
||||
, COALESCE( cart.DISCOUNT_AMT, 0) AS DISCOUNT_AMT
|
||||
, COALESCE( cart.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
|
||||
FROM (
|
||||
SELECT GD.COUPON_INNB
|
||||
, GD.COUP_NM
|
||||
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
|
||||
FROM GC_DOWNLOAD GD
|
||||
WHERE GD.SOPMAL_CD = #{sopmalCd}
|
||||
AND GD.COUPON_STTUS_CD <> '04'
|
||||
AND GD.BNEF_DV_CD = '03' -- 장바구니 쿠폰
|
||||
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
|
||||
GROUP BY GD.COUPON_INNB, GD.COUP_NM
|
||||
) B
|
||||
LEFT JOIN (
|
||||
SELECT '장바구니' COUPON_DV, GD.COUPON_INNB, A.CART_COUP_NM AS COUPON_NM
|
||||
, SUM(A.SLEPRIC * A.ORRE_QY) AS SLEPRIC_SUM
|
||||
, SUM(A.CART_COUPON_DSCNT_UNIT * A.ORRE_QY + A.CART_COUPON_DSCNT_REST) AS DISCOUNT_AMT
|
||||
, COUNT(DISTINCT CASE WHEN GD.COUPON_STTUS_CD = '03' THEN GD.DWLD_COUPON_INNB ELSE NULL END) AS COUPON_USE_DCNT
|
||||
FROM GC_ORRE_GOPTN_STAT A
|
||||
JOIN GC_DOWNLOAD GD
|
||||
ON A.SOPMAL_CD = GD.SOPMAL_CD
|
||||
AND A.CART_DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
|
||||
WHERE A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.CART_DWLD_COUPON_INNB > ''
|
||||
AND A.ORRE_DV_CD = '01'
|
||||
AND A.ORDR_STTUS_CD between '25' AND '75'
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
GROUP BY 1,2,3
|
||||
) cart
|
||||
ON cart.COUPON_INNB = B.COUPON_INNB
|
||||
AND cart.COUPON_NM = B.COUP_NM
|
||||
UNION ALL
|
||||
-- 상품 쿠폰
|
||||
SELECT '상품' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
|
||||
, COALESCE( goods.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
|
||||
, COALESCE( goods.DISCOUNT_AMT, 0) AS DISCOUNT_AMT
|
||||
, COALESCE( goods.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
|
||||
FROM(
|
||||
SELECT GD.COUPON_INNB
|
||||
, GD.COUP_NM
|
||||
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
|
||||
FROM GC_DOWNLOAD GD
|
||||
WHERE GD.SOPMAL_CD = #{sopmalCd}
|
||||
AND GD.COUPON_STTUS_CD <> '04'
|
||||
AND GD.BNEF_DV_CD = '01' -- 상품 쿠폰
|
||||
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
|
||||
GROUP BY GD.COUPON_INNB, GD.COUP_NM
|
||||
) B
|
||||
LEFT JOIN (
|
||||
SELECT '상품' COUPON_DV, GD.COUPON_INNB, A.GOODS_COUP_NM AS COUPON_NM
|
||||
, SUM(A.SLEPRIC * A.ORRE_QY) AS SLEPRIC_SUM
|
||||
, SUM(A.GOODS_COUPON_DSCNT_UNIT * A.ORRE_QY + A.GOODS_COUPON_DSCNT_REST) AS DISCOUNT_AMT
|
||||
, COUNT(DISTINCT CASE WHEN GD.COUPON_STTUS_CD = '03' THEN GD.DWLD_COUPON_INNB ELSE NULL END) AS COUPON_USE_DCNT
|
||||
FROM GC_ORRE_GOPTN_STAT A
|
||||
JOIN GC_DOWNLOAD GD
|
||||
ON A.SOPMAL_CD = GD.SOPMAL_CD
|
||||
AND A.GOODS_DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
|
||||
WHERE A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.GOODS_DWLD_COUPON_INNB > ''
|
||||
AND A.ORRE_DV_CD = '01'
|
||||
AND A.ORDR_STTUS_CD between '25' AND '75'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND A.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
AND A.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY 1,2,3
|
||||
) goods
|
||||
ON goods.COUPON_INNB = B.COUPON_INNB
|
||||
AND goods.COUPON_NM = B.COUP_NM
|
||||
UNION ALL
|
||||
-- 배송비 쿠폰
|
||||
SELECT '배송' gubun, B.COUPON_INNB, B.COUP_NM, B.COUPON_DWLD_CNT
|
||||
, COALESCE( dlvy.SLEPRIC_SUM, 0) AS SLEPRIC_SUM
|
||||
, COALESCE( dlvy.DLVY_DISCOUNT_AMT, 0) AS DISCOUNT_AMT
|
||||
, COALESCE( dlvy.COUPON_USE_DCNT, 0) AS COUPON_USE_DCNT
|
||||
FROM (
|
||||
SELECT GD.COUPON_INNB
|
||||
, GD.COUP_NM
|
||||
, COUNT(GD.DWLD_COUPON_INNB) AS COUPON_DWLD_CNT
|
||||
FROM GC_DOWNLOAD GD
|
||||
WHERE GD.SOPMAL_CD = #{sopmalCd}
|
||||
AND GD.COUPON_STTUS_CD <> '04'
|
||||
AND GD.BNEF_DV_CD = '02' -- 배송비 쿠폰
|
||||
AND GD.REGIST_DT BETWEEN #{srchStrtSndngDt2} AND #{srchEndSndngDt2} ' 23:59:59'
|
||||
GROUP BY GD.COUPON_INNB, GD.COUP_NM
|
||||
) B
|
||||
LEFT JOIN (
|
||||
SELECT '배송' COUPON_DV, GD.COUPON_INNB, GD.COUP_NM AS COUPON_NM
|
||||
, SUM(B.RL_SETLE_AMT) AS SLEPRIC_SUM
|
||||
, SUM(A.DLVY_COUPON_DSCNT_AMT) AS DLVY_DISCOUNT_AMT
|
||||
, COUNT(DISTINCT A.DWLD_COUPON_INNB) AS COUPON_USE_DCNT
|
||||
FROM GC_ORDER_SHIPPING A
|
||||
JOIN GC_ORDER B
|
||||
ON A.SOPMAL_CD = B.SOPMAL_CD
|
||||
AND A.ORDR_INNB = B.ORDR_INNB
|
||||
JOIN GC_DOWNLOAD GD
|
||||
ON A.SOPMAL_CD = GD.SOPMAL_CD
|
||||
AND A.DWLD_COUPON_INNB = GD.DWLD_COUPON_INNB
|
||||
WHERE A.SOPMAL_CD = #{sopmalCd}
|
||||
AND A.DWLD_COUPON_INNB > ''
|
||||
AND A.ORDR_STTUS_CD between '25' AND '75'
|
||||
]]>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchOrdrEnvrnCds)">
|
||||
AND B.SLE_ENVRN_CD IN
|
||||
<foreach collection="srchOrdrEnvrnCds" item="srchOrdrEnvrnCd" open="(" close=")" separator=",">
|
||||
#{srchOrdrEnvrnCd}
|
||||
</foreach>
|
||||
</if>
|
||||
<![CDATA[
|
||||
AND B.SETLE_COMPT_DT BETWEEN #{srchStrtSndngDt} AND #{srchEndSndngDt} ' 23:59:59'
|
||||
GROUP BY 1,2,3
|
||||
) dlvy
|
||||
ON dlvy.COUPON_INNB = B.COUPON_INNB
|
||||
AND dlvy.COUPON_NM = B.COUP_NM
|
||||
ORDER BY ${ordrFinal}
|
||||
) TB
|
||||
WHERE (@rownum:=0)=0
|
||||
) PV
|
||||
WHERE 1=1
|
||||
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,30 @@
|
||||
<?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.stats.memberStat.mapper.BOMemberStatMapper">
|
||||
|
||||
|
||||
<!--
|
||||
#일별 유입수와 결제수
|
||||
-->
|
||||
<select id="selectBOMngrMemberStatTableInqire"
|
||||
parameterType = "DataMap"
|
||||
resultType="DataMap">
|
||||
<![CDATA[
|
||||
select T.MBR_DV_CD,
|
||||
T.SOPMAL_CD,
|
||||
T.CNT,
|
||||
T.CNT_MAIN,
|
||||
T.CNT_OFFLINE,
|
||||
T.CNT_AGREE,
|
||||
T.CNT_LOGIN,
|
||||
T.CNT_LOGIN_YEAR,
|
||||
T.CNT_ORDER,
|
||||
T.CNT_ORDER_YEAR
|
||||
from GC_MEMBER_STAT_LOG T
|
||||
WHERE T.DT = DATE_FORMAT(NOW(),'%Y-%m-%d')
|
||||
order by IF(T.MBR_DV_CD='GC',1,2), T.SOPMAL_CD
|
||||
]]>
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
File diff suppressed because it is too large
Load Diff
593
src/main/resources/mybatis/xml/mapper/gcone/tm/BOTmMapper.xml
Normal file
593
src/main/resources/mybatis/xml/mapper/gcone/tm/BOTmMapper.xml
Normal file
@@ -0,0 +1,593 @@
|
||||
<?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.tm.mapper.BOTmMapper">
|
||||
<!--주문관련-->
|
||||
<!--주문 조회-->
|
||||
<select id="selectBOOrdrList" resultType="DataMap">
|
||||
SELECT GO.ORDR_INNB,
|
||||
GO.ORDR_STTUS_CD,
|
||||
FN_GET_COMMCODE_NAME('ORDR_STTUS',GO.ORDR_STTUS_CD) AS ORDR_STTUS_NM,
|
||||
GOS.ORDR_DLVY_INNB,
|
||||
GOS.DLVYLC_ADRES_DV_CD
|
||||
FROM GC_ORDER GO
|
||||
INNER JOIN GC_ORDER_SHIPPING GOS
|
||||
ON GO.ORDR_INNB = GOS.ORDR_INNB
|
||||
AND GO.SOPMAL_CD = GOS.SOPMAL_CD
|
||||
WHERE GO.ORDR_INNB = #{order_seq}
|
||||
AND GO.SOPMAL_CD = #{order_site}
|
||||
</select>
|
||||
|
||||
<!--분류 정보 -->
|
||||
<select id = "selectBOTmitmList" resultType="Map">
|
||||
SELECT (C.CTGRY_DEPTH - 2) AS level,
|
||||
CASE
|
||||
WHEN C.CTGRY_DEPTH - 2 = 3 THEN CONCAT(CASE WHEN CHAR_LENGTH(C.UPPER_CTGRY_ID) = 3 THEN CONCAT("0",C.UPPER_CTGRY_ID) ELSE C.UPPER_CTGRY_ID END,C.CTGRY_ID)
|
||||
WHEN C.CTGRY_DEPTH - 2 = 2 THEN CASE WHEN CHAR_LENGTH(C.CTGRY_ID) THEN CONCAT("0",C.CTGRY_ID) ELSE C.UPPER_CTGRY_ID END
|
||||
END AS category_code,
|
||||
C.CTGRY_NM AS title
|
||||
FROM GC_CATEGORY C
|
||||
WHERE 1=1
|
||||
AND C.SOPMAL_CD = #{order_site}
|
||||
AND C.USE_AT = 'Y'
|
||||
AND C.TM_EXPSR_AT = 'Y'
|
||||
ORDER BY
|
||||
C.CTGRY_DEPTH ,
|
||||
C.SORT_ORDR,
|
||||
C.CTGRY_ID
|
||||
</select>
|
||||
|
||||
<!--상품 목록 검색-->
|
||||
<!--상품 목록 건수-->
|
||||
<select id = "selectBOTmGoodsCnt" resultType="Integer">
|
||||
SELECT
|
||||
COUNT(DISTINCT O.GOODS_OPTN_INNB)
|
||||
FROM GC_GOODS G
|
||||
INNER JOIN GC_GOODS_OPTION O
|
||||
ON O.GOODS_INNB = G.GOODS_INNB
|
||||
AND O.SOPMAL_CD = G.SOPMAL_CD
|
||||
AND O.OPTN_EXPSR_AT = 'Y'
|
||||
INNER JOIN GC_CATEGORY_LINK GCL1
|
||||
ON G.GOODS_INNB = GCL1.GOODS_INNB
|
||||
AND G.SOPMAL_CD = GCL1.SOPMAL_CD
|
||||
INNER JOIN GC_CATEGORY C1
|
||||
ON C1.CTGRY_ID = GCL1.CTGRY_ID
|
||||
AND C1.SOPMAL_CD = G.SOPMAL_CD
|
||||
AND C1.USE_AT = 'Y'
|
||||
AND C1.TM_EXPSR_AT = 'Y'
|
||||
WHERE G.SOPMAL_CD = #{order_site}
|
||||
AND G.GOODS_STTUS_CD = '01'
|
||||
AND ((G.EXPSR_DV_CD = 01 OR (G.EXPSR_DV_CD = 03 AND DATE_FORMAT(SYSDATE(), '%Y-%m-%d') BETWEEN G.EXPSR_BGN_DT AND G.EXPSR_END_DT)) OR LEFT(G.GOODS_NM,2)='TM') /*노출 코드*/
|
||||
AND CASE WHEN CAST(IFNULL(#{sch_brand},'') AS UNSIGNED) = '' THEN 1
|
||||
ELSE (C1.CTGRY_ID = CAST(#{sch_brand} AS UNSIGNED) OR C1.UPPER_CTGRY_ID = CAST(#{sch_brand} AS UNSIGNED)) END
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sch_category)">/*2차 카테고리*/
|
||||
AND C1.CTGRY_ID = CASE
|
||||
WHEN LEFT(#{sch_category}, 4) = #{sch_brand} THEN SUBSTRING(#{sch_category}, 5)
|
||||
ELSE 0359360
|
||||
END
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sch_goods)">
|
||||
AND (G.GOODS_NM LIKE CONCAT('%',#{sch_goods},'%') OR O.OPTN_VAL_1 LIKE CONCAT('%',#{sch_goods},'%'))
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!--상품 목록 리스트-->
|
||||
<select id = "selectBOTmGoodsList" resultType="Map">
|
||||
SELECT
|
||||
DISTINCT C1.CTGRY_ID AS category_code,
|
||||
C1.CTGRY_NM AS title,
|
||||
G.GOODS_INNB AS goods_seq,
|
||||
fn_get_commcode_name('GOODS_STTUS',G.GOODS_STTUS_CD ) AS goods_status,
|
||||
'' AS goods_view,
|
||||
G.GOODS_CD AS goods_code,
|
||||
G.REPRSNT_GOODS_CD AS main_goods_code,
|
||||
G.GOODS_NM AS goods_name,
|
||||
'' AS oneplusone,
|
||||
'' AS oneplusone_ea,
|
||||
'' AS oneplusone_cnt,
|
||||
'' AS oneplusone_cross,
|
||||
O.GOODS_OPTN_INNB AS option_seq,
|
||||
'' AS default_option,
|
||||
CONCAT(IFNULL(O.OPTN_NM_1,''),IFNULL(O.OPTN_NM_2,''),IFNULL(O.OPTN_NM_3,''),IFNULL(O.OPTN_NM_4,'')) AS option_title,
|
||||
O.OPTN_VAL_1 AS option1,
|
||||
O.OPTN_CD_1 AS optioncode1,
|
||||
O.CNSMRPRIC AS consumer_price,
|
||||
O.SLEPRIC AS price,
|
||||
O.COMPNB_DSCNT_AT AS opt_multiple_sale_yn,
|
||||
O.SCTN_DSCNT_AT AS opt_cart_sale_yn,
|
||||
C1.CTGRY_ID, /*ORDER BY에 필요함*/
|
||||
C1.SORT_ORDR,
|
||||
GCL1.GOODS_ORDR ,
|
||||
O.GOODS_OPTN_INNB
|
||||
FROM GC_GOODS G
|
||||
INNER JOIN GC_GOODS_OPTION O
|
||||
ON O.GOODS_INNB = G.GOODS_INNB
|
||||
AND O.SOPMAL_CD = G.SOPMAL_CD
|
||||
AND O.OPTN_EXPSR_AT = 'Y'
|
||||
INNER JOIN GC_CATEGORY_LINK GCL1
|
||||
ON G.GOODS_INNB = GCL1.GOODS_INNB
|
||||
AND G.SOPMAL_CD = GCL1.SOPMAL_CD
|
||||
INNER JOIN GC_CATEGORY C1
|
||||
ON C1.CTGRY_ID = GCL1.CTGRY_ID
|
||||
AND C1.SOPMAL_CD = G.SOPMAL_CD
|
||||
AND C1.USE_AT = 'Y'
|
||||
AND C1.TM_EXPSR_AT = 'Y'
|
||||
WHERE G.SOPMAL_CD = #{order_site}
|
||||
AND G.GOODS_STTUS_CD = '01'
|
||||
AND ((G.EXPSR_DV_CD = 01 OR (G.EXPSR_DV_CD = 03 AND DATE_FORMAT(SYSDATE(), '%Y-%m-%d') BETWEEN G.EXPSR_BGN_DT AND G.EXPSR_END_DT)) OR LEFT(G.GOODS_NM,2)='TM') /*노출 코드*/
|
||||
AND CASE WHEN IFNULL(#{sch_brand},'') = '' THEN 1
|
||||
ELSE (C1.CTGRY_ID = #{sch_brand} OR C1.UPPER_CTGRY_ID = #{sch_brand} ) END
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sch_category)">/*2차 카테고리*/
|
||||
AND C1.CTGRY_ID = CASE
|
||||
WHEN LEFT(#{sch_category}, 4) = #{sch_brand} THEN SUBSTRING(#{sch_category}, 5)
|
||||
ELSE #{sch_category}
|
||||
END
|
||||
</if>
|
||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(sch_goods)">
|
||||
AND (G.GOODS_NM LIKE CONCAT('%',#{sch_goods},'%') OR O.OPTN_VAL_1 LIKE CONCAT('%',#{sch_goods},'%'))
|
||||
</if>
|
||||
ORDER BY C1.CTGRY_ID, C1.SORT_ORDR , GCL1.GOODS_ORDR , O.GOODS_OPTN_INNB
|
||||
LIMIT #{start}, #{lines}
|
||||
</select>
|
||||
|
||||
<!--상품정보-->
|
||||
<select id ="selectBOTmGoodsDtlInfo" resultType="Map">
|
||||
SELECT
|
||||
C1.CTGRY_ID AS category_code,
|
||||
C1.CTGRY_NM AS brand_name,
|
||||
G.GOODS_INNB AS goods_seq,
|
||||
G.GOODS_NM AS goods_name,
|
||||
G.GOODS_CD AS goods_code,
|
||||
G.REPRSNT_GOODS_CD AS main_goods_code,
|
||||
IF(LENGTH(G.MBL_GOODS_DC) > 10, G.MBL_GOODS_DC, G.GOODS_DC) AS contents
|
||||
FROM GC_GOODS G
|
||||
LEFT JOIN GC_CATEGORY_LINK GCL
|
||||
ON G.GOODS_INNB = GCL.GOODS_INNB
|
||||
AND G.SOPMAL_CD = GCL.SOPMAL_CD
|
||||
LEFT JOIN GC_CATEGORY C1
|
||||
ON C1.CTGRY_ID = GCL.CTGRY_ID
|
||||
AND C1.SOPMAL_CD = G.SOPMAL_CD
|
||||
AND (C1.USE_AT = 'Y' OR LEFT(C1.CTGRY_NM,2)= 'TM')
|
||||
AND C1.CTGRY_DEPTH = 4
|
||||
AND C1.TM_EXPSR_AT = 'Y'
|
||||
AND C1.URL_DV_CD = '01'
|
||||
WHERE G.SOPMAL_CD = #{order_site}
|
||||
AND C1.CTGRY_ID IS NOT NULL
|
||||
AND G.GOODS_INNB = #{goods_seq}
|
||||
AND G.GOODS_STTUS_CD = '01'
|
||||
AND ((G.EXPSR_DV_CD = 01 OR (G.EXPSR_DV_CD = 03 AND DATE_FORMAT(SYSDATE(), '%Y-%m-%d') BETWEEN G.EXPSR_BGN_DT AND G.EXPSR_END_DT)) OR LEFT(G.GOODS_NM,2)='TM')
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!--사은품 이벤트 조회-->
|
||||
<select id="selectBOTmEvtList" resultType="map">
|
||||
SELECT
|
||||
GE.EVT_INNB AS gift_seq,
|
||||
GE.EVTNM AS title,
|
||||
GE.EVT_BGN_DT AS start_date,
|
||||
GE.EVT_END_DT AS end_date,
|
||||
CASE
|
||||
WHEN GE.GOODS_APPLC_DV_CD = '01' THEN 'all'
|
||||
WHEN GE.GOODS_APPLC_DV_CD = '02' THEN 'category'
|
||||
WHEN GE.GOODS_APPLC_DV_CD = '03' THEN 'goods'
|
||||
WHEN GE.GOODS_APPLC_DV_CD = '04' THEN 'except_category'
|
||||
WHEN GE.GOODS_APPLC_DV_CD = '05' THEN 'except_goods'
|
||||
END AS goods_rule,
|
||||
GE.GOODS_APPLC_DV_CD AS goods_applc_dv_cd
|
||||
FROM
|
||||
GC_EVENT GE
|
||||
WHERE 1 =1
|
||||
AND GE.EVT_DV = '02' /* 사은품 이벤트 */
|
||||
AND SYSDATE() BETWEEN GE.EVT_BGN_DT AND GE.EVT_END_DT /* 현재 진행중인 이벤트이고 */
|
||||
AND GE.SOPMAL_CD = #{order_site}
|
||||
AND GE.USE_AT = 'Y'
|
||||
AND CASE WHEN IFNULL(GE.APPLC_DAY, '') = '' THEN 1
|
||||
ELSE GE.APPLC_DAY LIKE CONCAT('%', CONCAT('0', DAYOFWEEK(SYSDATE())), '%')
|
||||
END
|
||||
AND CASE WHEN IFNULL(GE.LMTT_BGNTME, '') = '' OR IFNULL(GE.LMTT_ENDTME, '') = '' THEN 1
|
||||
ELSE DATE_FORMAT(NOW(), '%H%i') BETWEEN GE.LMTT_BGNTME AND GE.LMTT_ENDTME -- EVT_BGN_DT => LMTT_BGNTME 로 변경
|
||||
END
|
||||
AND GE.EVT_TRGET_DV_CD = '01' /* 전체 대상인 이벤트만 적용 */
|
||||
</select>
|
||||
|
||||
<!--사은품 대상 상품/카테고리-->
|
||||
<select id="selectBOTmTgtGiftList" resultType="java.util.Map">
|
||||
SELECT MIN(EC.EVT_APPLC_GOODS_INNB) AS gift_choice_seq,
|
||||
EC.EVT_INNB AS gift_seq, GE.GOODS_APPLC_DV_CD,
|
||||
CASE
|
||||
WHEN GE.GOODS_APPLC_DV_CD = '01' THEN 'all'
|
||||
WHEN GE.GOODS_APPLC_DV_CD = '02' THEN 'goods' -- CTGRY
|
||||
WHEN GE.GOODS_APPLC_DV_CD = '03' THEN 'goods'
|
||||
WHEN GE.GOODS_APPLC_DV_CD = '04' THEN 'except_goods' -- CTGRY
|
||||
WHEN GE.GOODS_APPLC_DV_CD = '05' THEN 'except_goods'
|
||||
END AS choice_type, /*카테고리를 상품으로 치환해서 반환*/
|
||||
TMG.GOODS_INNB AS goods_seq,
|
||||
TMG.SOPMAL_CD
|
||||
-- TMG.CTGRY_ID,
|
||||
-- TMG.CTGRY_NM,
|
||||
-- TMG.UPPER_CTGRY_ID,
|
||||
-- TMG.CTGRY_DEPTH,
|
||||
-- TMG.CTGRY_CD,
|
||||
-- TMG.CTGRY_ID AS category_code
|
||||
FROM GC_EVENT GE
|
||||
INNER JOIN GC_EVENT_CHOICE EC
|
||||
ON EC.SOPMAL_CD = GE.SOPMAL_CD
|
||||
AND EC.EVT_INNB = GE.EVT_INNB
|
||||
INNER JOIN
|
||||
(
|
||||
SELECT G.GOODS_NM,
|
||||
G.GOODS_INNB,
|
||||
-- GGO.GOODS_OPTN_INNB,
|
||||
-- GGO.OPTN_TY,
|
||||
G.SOPMAL_CD,
|
||||
C1.CTGRY_ID,
|
||||
C1.CTGRY_NM,
|
||||
C1.UPPER_CTGRY_ID,
|
||||
C1.CTGRY_DEPTH,
|
||||
C1.CTGRY_CD
|
||||
FROM GC_GOODS G
|
||||
-- INNER JOIN GC_GOODS_OPTION GGO
|
||||
-- ON GGO.GOODS_INNB = G.GOODS_INNB
|
||||
-- AND GGO.SOPMAL_CD = G.SOPMAL_CD
|
||||
-- AND GGO.OPTN_EXPSR_AT = 'Y'
|
||||
INNER JOIN GC_CATEGORY_LINK GCL1
|
||||
ON G.GOODS_INNB = GCL1.GOODS_INNB
|
||||
AND G.SOPMAL_CD = GCL1.SOPMAL_CD
|
||||
INNER JOIN GC_CATEGORY C1
|
||||
ON C1.CTGRY_ID = GCL1.CTGRY_ID
|
||||
AND C1.SOPMAL_CD = G.SOPMAL_CD
|
||||
AND C1.USE_AT = 'Y'
|
||||
AND C1.TM_EXPSR_AT = 'Y'
|
||||
WHERE G.SOPMAL_CD = #{order_site}
|
||||
AND G.GOODS_STTUS_CD = '01'
|
||||
AND G.GOODS_KND_CD = '01'
|
||||
AND G.USE_AT = 'Y'
|
||||
AND (G.EXPSR_DV_CD = '01' OR (G.EXPSR_DV_CD = '03' AND DATE_FORMAT(SYSDATE(), '%Y-%m-%d') BETWEEN G.EXPSR_BGN_DT AND G.EXPSR_END_DT))
|
||||
) TMG
|
||||
ON EC.SOPMAL_CD = TMG.SOPMAL_CD
|
||||
AND CASE WHEN GE.GOODS_APPLC_DV_CD IN ('02', '04') THEN EC.CTGRY_ID = TMG.CTGRY_ID
|
||||
WHEN GE.GOODS_APPLC_DV_CD IN ('03', '05') THEN EC.GOODS_INNB = TMG.GOODS_INNB
|
||||
ELSE 0
|
||||
END
|
||||
WHERE 1 = 1
|
||||
AND GE.SOPMAL_CD = #{order_site}
|
||||
AND GE.EVT_INNB = #{gift_seq}
|
||||
GROUP BY gift_seq, GE.GOODS_APPLC_DV_CD,
|
||||
choice_type,
|
||||
goods_seq,
|
||||
TMG.SOPMAL_CD
|
||||
ORDER BY GOODS_SEQ
|
||||
</select>
|
||||
|
||||
<!--증정 상품-->
|
||||
<select id="selectBOTmGiftList" resultType="java.util.Map">
|
||||
SELECT GEB.EVT_BNEF_INNB AS gift_benefit_seq,
|
||||
GEB.EVT_INNB AS gift_seq,
|
||||
'' AS benefit_rule,
|
||||
GEB.BGN_AMT AS sprice,
|
||||
GEB.END_AMT AS eprice,
|
||||
GEB.PROVD_CNT AS ea,
|
||||
CASE
|
||||
WHEN COUNT(GEBG.GOODS_INNB) > 0 THEN GROUP_CONCAT(GEBG.GOODS_INNB)
|
||||
ELSE NULL
|
||||
END AS gift_goods_seq /*상품고유번호 concat해서 밑에 in절로 뽑음*/
|
||||
FROM GC_EVENT_BENEFITS GEB
|
||||
INNER JOIN GC_EVENT_BENEFIT_GIFT GEBG
|
||||
ON GEB.SOPMAL_CD = GEBG.SOPMAL_CD
|
||||
AND GEB.EVT_BNEF_INNB = GEBG.EVT_BNEF_INNB
|
||||
WHERE GEB.SOPMAL_CD = #{order_site}
|
||||
AND GEB.EVT_INNB = #{gift_seq}
|
||||
GROUP BY GEB.EVT_BNEF_INNB,
|
||||
GEB.EVT_INNB,
|
||||
GEB.BGN_AMT,
|
||||
GEB.END_AMT,
|
||||
GEB.PROVD_CNT
|
||||
ORDER BY GEB.BGN_AMT
|
||||
</select>
|
||||
|
||||
<!--상품 조회-->
|
||||
<select id="selectBOTmGiftGoodsList" resultType="java.util.Map">
|
||||
SELECT GG.GOODS_INNB AS goods_seq,
|
||||
CASE
|
||||
WHEN GG.GOODS_KND_CD = '01' THEN 'goods'
|
||||
ELSE 'gift'
|
||||
END AS goods_type,
|
||||
CASE
|
||||
WHEN GG.GOODS_STTUS_CD = '01' THEN 'normal'
|
||||
WHEN GG.GOODS_STTUS_CD = '02' THEN 'runout'
|
||||
WHEN GG.GOODS_STTUS_CD = '03' THEN 'unsold'
|
||||
END AS goods_status,
|
||||
CASE
|
||||
WHEN GG.EXPSR_DV_CD = '01' THEN 'look'
|
||||
WHEN GG.EXPSR_DV_CD = '02' THEN 'notLook'
|
||||
WHEN GG.EXPSR_DV_CD = '03' AND NOW() BETWEEN GG.EXPSR_BGN_DT AND GG.EXPSR_END_DT THEN 'look'
|
||||
ELSE 'notLook'
|
||||
END AS goods_view,
|
||||
GG.GOODS_CD AS goods_code,
|
||||
GG.GOODS_NM AS goods_name,
|
||||
GGO.GOODS_OPTN_INNB AS option_seq
|
||||
FROM GC_GOODS GG
|
||||
INNER JOIN GC_GOODS_OPTION GGO
|
||||
ON GG.GOODS_INNB = GGO.GOODS_INNB
|
||||
AND GG.SOPMAL_CD = GGO.SOPMAL_CD
|
||||
AND GGO.USE_AT = 'Y'
|
||||
WHERE GG.GOODS_INNB IN (${giftGoodsSeq})
|
||||
AND GG.SOPMAL_CD = #{order_site}
|
||||
</select>
|
||||
|
||||
<!--결제정보-->
|
||||
<select id="selectOrdrSetleInfo" resultType="Map">
|
||||
SELECT SETLE_COMPT_AT AS deposit_yn,
|
||||
SETLE_DT AS deposit_date,
|
||||
VIRTL_ACNTNB AS virtual_account
|
||||
FROM GC_ORDER_SETLE
|
||||
WHERE ORDR_INNB = #{order_seq}
|
||||
AND SOPMAL_CD = #{order_site}
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!--휴대전화로 회원검색-->
|
||||
<select id="selectBOTmMbrInfo" resultType="Map">
|
||||
SELECT
|
||||
MBR_INNB AS member_seq,
|
||||
MBR_NM AS user_name,
|
||||
CAST(AES_DECRYPT(UNHEX(GM.EMAIL) , #{secretKey}) AS CHAR(50)) AS email,
|
||||
'done' AS status
|
||||
FROM GC_MEMBER GM
|
||||
WHERE GM.USE_AT = 'Y'
|
||||
AND GM.MBR_DV_CD = 'GC'
|
||||
AND MBR_NM = #{user_name}
|
||||
AND MBTLNB = HEX(AES_ENCRYPT(REPLACE(#{cellphone}, '-', ''), #{secretKey}))
|
||||
ORDER BY MBR_INNB DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
|
||||
<!--결제성공시 또는 주문접수 완료시 필요 데이터 set-->
|
||||
<select id="selectBOTmOrdrInfo" resultType="Map">
|
||||
SELECT
|
||||
GO.TM_ORDR_INNB AS tm_order_seq,
|
||||
GO.ORDR_INNB AS order_seq,
|
||||
'결제성공' AS order_status,
|
||||
FN_GET_COMMCODE_NAME('ORDR_STTUS', GO.ORDR_STTUS_CD) AS order_msg,
|
||||
GOS.SETLE_COMPT_AT AS deposit_yn,
|
||||
GOS.SETLE_DT AS deposit_date,
|
||||
GOS.VIRTL_ACNTNB AS virtual_account,
|
||||
GOS.VIRTL_ACNT_RCPMNY_LMTT_DE_CTY AS virtual_date,
|
||||
GO.ORDR_STTUS_CD AS step
|
||||
FROM
|
||||
GC_ORDER GO
|
||||
INNER JOIN GC_ORDER_SETLE GOS
|
||||
ON GO.ORDR_INNB = GOS.ORDR_INNB
|
||||
AND GO.SOPMAL_CD = GOS.SOPMAL_CD
|
||||
WHERE
|
||||
GO.SOPMAL_CD = #{sopmalCd}
|
||||
AND GO.ORDR_INNB = #{ordrInnb}
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<!-- 싱크 관련 -->
|
||||
<!--최근 주문 내역-->
|
||||
<select id="selectBOTmRecentOrdrList" resultType="Map">
|
||||
SELECT
|
||||
O.ORDR_INNB AS order_seq,
|
||||
O.REGIST_DT AS regist_date,
|
||||
O.RL_SETLE_AMT AS settleprice,
|
||||
CASE
|
||||
WHEN GOS.SETLE_TY_CD = '01' THEN 'card'
|
||||
WHEN GOS.SETLE_TY_CD = '02' THEN 'bank'
|
||||
WHEN GOS.SETLE_TY_CD = '03' THEN 'account'
|
||||
WHEN GOS.SETLE_TY_CD = '04' THEN 'virtual'
|
||||
WHEN GOS.SETLE_TY_CD = '05' THEN 'escrow_virtual'
|
||||
WHEN GOS.SETLE_TY_CD = '06' THEN 'escrow_account'
|
||||
WHEN GOS.SETLE_TY_CD = '07' THEN 'cellphone'
|
||||
WHEN GOS.SETLE_TY_CD = '08' THEN 'point'
|
||||
WHEN GOS.SETLE_TY_CD = '09' THEN 'pos'
|
||||
WHEN GOS.SETLE_TY_CD = '10' THEN 'payco_coupon'
|
||||
WHEN GOS.SETLE_TY_CD = '11' THEN 'multi'
|
||||
END AS payment,
|
||||
FN_GET_COMMCODE_NAME('SETLE_MTH',GOS.SETLE_TY_CD) AS payment_name,
|
||||
IFNULL(S.TENTCPN_NM , '') AS store_name,
|
||||
GROUP_CONCAT(I.GOODS_NM, ' x ', D.ORDR_QY,IF(D.STEP85 > 0, concat('(-', D.STEP85, ')'), ''),'개'SEPARATOR ', ') AS goods_list
|
||||
FROM
|
||||
GC_ORDER O
|
||||
INNER JOIN GC_ORDER_ITEM I
|
||||
ON
|
||||
I.ORDR_INNB = O.ORDR_INNB
|
||||
AND O.SOPMAL_CD = I.SOPMAL_CD
|
||||
INNER JOIN GC_ORDER_ITEM_OPTION D
|
||||
ON
|
||||
D.ORDR_GOODS_INNB = I.ORDR_GOODS_INNB
|
||||
AND D.SOPMAL_CD = I.SOPMAL_CD
|
||||
INNER JOIN GC_ORDER_SETLE GOS
|
||||
ON
|
||||
O.ORDR_INNB = GOS.ORDR_INNB
|
||||
AND O.SOPMAL_CD = GOS.SOPMAL_CD
|
||||
LEFT JOIN GC_STORE S
|
||||
ON
|
||||
S.STR_INNB = O.STR_INNB
|
||||
WHERE
|
||||
O.MBR_INNB = #{member_seq}
|
||||
AND O.SOPMAL_CD = #{order_site}
|
||||
AND O.ORDR_STTUS_CD BETWEEN 25 AND 75
|
||||
AND D.ORDR_QY > D.STEP85
|
||||
GROUP BY
|
||||
O.ORDR_INNB,
|
||||
O.REGIST_DT,
|
||||
O.RL_SETLE_AMT,
|
||||
GOS.SETLE_TY_CD,
|
||||
S.TENTCPN_NM
|
||||
ORDER BY
|
||||
O.ORDR_INNB DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!--주문내역-->
|
||||
<select id="selectBOTmOrdrList">
|
||||
SELECT
|
||||
GROUP_CONCAT(
|
||||
IF(ISNULL(E.DLIVY_INNB), '', CONCAT('{','\"status\":\"', E.DLIVY_STTUS_CD, '\"',
|
||||
',\"company\":\"', ifnull(S.HDRYCPN_NM, ''), '\"',
|
||||
',\"delivery_company_code\":\"', ifnull(E.HDRYCPN_CD, ''), '\"',
|
||||
',\"delivery_number\":\"', ifnull(E.INVCNB, ''), '\"',
|
||||
',\"export_date\":\"', ifnull(E.DLIVY_DT, ''), '\"',
|
||||
',\"shipping_date\":\"', ifnull(E.DLVY_COMPT_DT, ''), '\"','}' )) SEPARATOR '|'
|
||||
) AS export_list,
|
||||
IFNULL((
|
||||
SELECT
|
||||
SUM(IFNULL(REFUND_AMT, 0))
|
||||
FROM GC_ORDER_REFUND
|
||||
WHERE ORDR_INNB = O.ORDR_INNB AND REFUND_PROCS_STTUS_CD = '03'
|
||||
), 0) AS refund_price,
|
||||
O.ORDR_STTUS_CD AS step,
|
||||
GOS.SETLE_COMPT_AT AS deposit_yn,
|
||||
DATE_FORMAT(GOS.SETLE_DT,'%Y-%m-%d %H:%i:%s') AS deposit_date,
|
||||
GOS.RCPMNYER_NM AS depositor,
|
||||
GOS.RCPMNY_ACNTNB AS bank_account,
|
||||
CASE
|
||||
WHEN O.ORDR_STTUS_CD = 15 THEN O.RL_SETLE_AMT
|
||||
ELSE 0
|
||||
END AS remain_price, /* 복합결제 안하니 주문접수일 때 실결제금액으로 남은금액 알려줌 */
|
||||
'' AS multi_pay_list,
|
||||
O.ORDR_INNB order_seq
|
||||
FROM GC_ORDER O
|
||||
INNER JOIN GC_ORDER_SETLE GOS
|
||||
ON O.SOPMAL_CD = GOS.SOPMAL_CD
|
||||
AND O.ORDR_INNB = GOS.ORDR_INNB
|
||||
LEFT JOIN GC_GOODS_EXPORT E
|
||||
ON E.ORDR_INNB = O.ORDR_INNB
|
||||
AND E.SOPMAL_CD = O.SOPMAL_CD
|
||||
LEFT JOIN GC_SWEET_TRACKER_CODE S
|
||||
ON S.GCONE_HDRYCPN_CD=E.HDRYCPN_CD
|
||||
WHERE 1=1
|
||||
AND O.SOPMAL_CD = #{order_site}
|
||||
AND O.ORDR_INNB IN <foreach collection="arr" item="arr" separator="," open="(" close=")">${arr}</foreach>
|
||||
GROUP BY
|
||||
O.ORDR_INNB ,
|
||||
O.ORDR_STTUS_CD,
|
||||
GOS.SETLE_COMPT_AT,
|
||||
GOS.SETLE_DT,
|
||||
GOS.RCPMNYER_NM,
|
||||
GOS.RCPMNY_ACNTNB,
|
||||
O.RL_SETLE_AMT
|
||||
</select>
|
||||
|
||||
<!--환불 동기화-->
|
||||
<select id="selectTmRefundList" resultType="Map">
|
||||
SELECT
|
||||
GOR.ORDER_REFUND_INNB AS refund_seq,
|
||||
CASE
|
||||
WHEN GOR.REFUND_PROCS_STTUS_CD = '01' THEN 'request'
|
||||
WHEN GOR.REFUND_PROCS_STTUS_CD = '02' THEN 'ing'
|
||||
WHEN GOR.REFUND_PROCS_STTUS_CD = '03' THEN 'complete'
|
||||
END AS status,
|
||||
GOR.REFUND_CD AS refund_code
|
||||
FROM
|
||||
GC_ORDER_REFUND GOR
|
||||
WHERE
|
||||
<choose>
|
||||
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(order_site)">GOR.SOPMAL_CD = #{order_site}</when>
|
||||
<otherwise>GOR.SOPMAL_CD IN ('CH','NC')</otherwise>
|
||||
</choose>
|
||||
AND GOR.REFUND_CD IN <foreach collection="arr" item="arr" separator="," open="(" close=")">${arr}</foreach>
|
||||
</select>
|
||||
|
||||
<!--반품 동기화-->
|
||||
<select id="selectTmReturnList" resultType="Map">
|
||||
SELECT
|
||||
GOR.ORDER_REFUND_INNB AS return_seq,
|
||||
CASE
|
||||
WHEN GOR.RETURN_PROCS_STTUS_CD = '01' THEN 'request'
|
||||
WHEN GOR.RETURN_PROCS_STTUS_CD = '02' THEN 'complete'
|
||||
END AS status,
|
||||
GOR.RETURN_CD AS return_code
|
||||
FROM
|
||||
GC_ORDER_REFUND GOR
|
||||
WHERE
|
||||
<choose>
|
||||
<when test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(order_site)">GOR.SOPMAL_CD = #{order_site}</when>
|
||||
<otherwise>GOR.SOPMAL_CD IN ('CH','NC')</otherwise>
|
||||
</choose>
|
||||
AND GOR.RETURN_CD IN <foreach collection="arr" item="arr" separator="," open="(" close=")">${arr}</foreach>
|
||||
</select>
|
||||
|
||||
<!--여러 회원 최근 주문 내역-->
|
||||
<select id="selectTmManyMbrRecentOrdrList" resultType="Map">
|
||||
SELECT
|
||||
O.MBR_INNB AS member_seq,
|
||||
O.ORDR_INNB AS order_seq,
|
||||
FN_GET_SOPMAL_NAME(O.SOPMAL_CD) AS shop_name,
|
||||
LEFT(O.REGIST_DT,10) AS regist_date,
|
||||
O.RL_SETLE_AMT AS settleprice,
|
||||
CASE
|
||||
WHEN GOS.SETLE_TY_CD = '01' THEN 'card'
|
||||
WHEN GOS.SETLE_TY_CD = '02' THEN 'bank'
|
||||
WHEN GOS.SETLE_TY_CD = '03' THEN 'account'
|
||||
WHEN GOS.SETLE_TY_CD = '04' THEN 'virtual'
|
||||
WHEN GOS.SETLE_TY_CD = '05' THEN 'escrow_virtual'
|
||||
WHEN GOS.SETLE_TY_CD = '06' THEN 'escrow_account'
|
||||
WHEN GOS.SETLE_TY_CD = '07' THEN 'cellphone'
|
||||
WHEN GOS.SETLE_TY_CD = '08' THEN 'point'
|
||||
WHEN GOS.SETLE_TY_CD = '09' THEN 'pos'
|
||||
WHEN GOS.SETLE_TY_CD = '10' THEN 'payco_coupon'
|
||||
WHEN GOS.SETLE_TY_CD = '11' THEN 'multi'
|
||||
END AS payment,
|
||||
IFNULL(R.TENTCPN_NM, '') AS store_name,
|
||||
GROUP_CONCAT(I.GOODS_NM, ' x ', GOIO.ORDR_QY, IF(GOIO.STEP85 > 0, concat('(-', GOIO.STEP85, ')'), ''), '개' SEPARATOR ', ') AS goods_list
|
||||
FROM
|
||||
GC_ORDER O
|
||||
INNER JOIN GC_ORDER_ITEM I
|
||||
ON O.ORDR_INNB = I.ORDR_INNB
|
||||
AND O.SOPMAL_CD = I.SOPMAL_CD
|
||||
AND I.GOODS_NM != ''
|
||||
INNER JOIN GC_ORDER_ITEM_OPTION GOIO
|
||||
ON I.ORDR_GOODS_INNB = GOIO.ORDR_GOODS_INNB
|
||||
AND I.SOPMAL_CD = GOIO.SOPMAL_CD
|
||||
AND GOIO.CNSMRPRIC > 0
|
||||
INNER JOIN GC_ORDER_SETLE GOS
|
||||
ON O.ORDR_INNB = GOS.ORDR_INNB
|
||||
AND O.SOPMAL_CD = GOS.SOPMAL_CD
|
||||
LEFT JOIN GC_ORDER_POSINFO GOP
|
||||
ON GOP.ORDER_SEQ = O.ORDR_INNB
|
||||
LEFT JOIN GC_STORE R
|
||||
ON GOP.STORE_SEQ = R.STR_INNB
|
||||
WHERE
|
||||
O.ORDR_INNB IN (
|
||||
SELECT
|
||||
MAX(O2.ORDR_INNB)
|
||||
FROM
|
||||
GC_ORDER O2
|
||||
INNER JOIN GC_ORDER_ITEM GOI
|
||||
ON O2.ORDR_INNB = GOI.ORDR_INNB
|
||||
AND O2.SOPMAL_CD = GOI.SOPMAL_CD
|
||||
INNER JOIN GC_ORDER_ITEM_OPTION GOIO
|
||||
ON GOI.ORDR_GOODS_INNB = GOIO.ORDR_GOODS_INNB
|
||||
AND GOI.SOPMAL_CD = GOIO.SOPMAL_CD
|
||||
WHERE
|
||||
1 = 1
|
||||
<choose>
|
||||
<when test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(order_site)">AND O2.SOPMAL_CD = #{order_site}</when>
|
||||
<otherwise>AND O2.SOPMAL_CD IN ('CH','NC')</otherwise>
|
||||
</choose>
|
||||
AND O2.MBR_INNB IN <foreach collection="arr" item="arr" separator="," open="(" close=")">${arr}</foreach>
|
||||
AND O2.MBR_DV_CD = 'GC'
|
||||
AND O2.SLE_ENVRN_CD <![CDATA[<>]]> 'TM'
|
||||
AND O2.ORDR_STTUS_CD BETWEEN '25' AND '75'
|
||||
AND GOIO.ORDR_QY > GOIO.STEP85
|
||||
GROUP BY
|
||||
O2.MBR_INNB)
|
||||
<choose>
|
||||
<when test = "@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(order_site)">AND O.SOPMAL_CD = #{order_site}</when>
|
||||
<otherwise>AND O.SOPMAL_CD IN ('CH','NC')</otherwise>
|
||||
</choose>
|
||||
AND O.MBR_INNB IN <foreach collection="arr" item="arr" separator="," open="(" close=")">${arr}</foreach>
|
||||
AND O.MBR_DV_CD = 'GC'
|
||||
GROUP BY
|
||||
O.MBR_INNB,
|
||||
O.ORDR_INNB,
|
||||
O.REGIST_DT,
|
||||
O.RL_SETLE_AMT,
|
||||
O.SOPMAL_CD ,
|
||||
GOS.SETLE_TY_CD,
|
||||
R.TENTCPN_NM
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user