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