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

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

View File

@@ -0,0 +1,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>