merge master into develop - CscListRForm.jsp FAQ 아코디언 버그 수정
This commit is contained in:
@@ -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>
|
||||
Reference in New Issue
Block a user