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,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>