fix : 마이페이지 구독서비스 주문/배송 목록조회 화면

This commit is contained in:
jazz
2026-01-22 14:58:33 +09:00
parent 542ec44a3c
commit a1a107cfe1
10 changed files with 2360 additions and 2 deletions

View File

@@ -3939,6 +3939,7 @@
AND GOR.SOPMAL_CD = #{sopmalCd}
AND GOR.MBR_DV_CD = #{mbrDvCd}
AND GOR.MBR_INNB = #{mbrInnb}
AND GOR.SUBSVC_INNB IS NULL /*구독서비스 제외*/
)
GROUP BY FOI.ORDR_INNB
) ITEM ON ITEM.SOPMAL_CD = FO.SOPMAL_CD
@@ -3946,6 +3947,7 @@
LEFT JOIN GC_ORDER_SETLE FOS ON FOS.SOPMAL_CD = FO.SOPMAL_CD
AND FOS.ORDR_INNB = FO.ORDR_INNB
WHERE FO.USE_AT = 'Y'
AND FO.SUBSVC_INNB IS NULL /*구독서비스 제외*/
AND ( ( FO.ORDR_STTUS_CD BETWEEN '15' AND '75' ) OR FO.ORDR_STTUS_CD = '95' )
AND FO.SOPMAL_CD = #{sopmalCd}
AND FO.MBR_DV_CD = #{mbrDvCd}
@@ -5247,6 +5249,163 @@
]]>
</select>
<!-- 사용자 > 마이페이지 > 구독서비스 주문/배송 목록 조회 -->
<select id="selectMbrSubsvcOrdrList" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrDlvyVO" resultType="dataMap">
<![CDATA[
SELECT *
FROM (
SELECT CAST(@ROWNUM:=@ROWNUM + 1 AS UNSIGNED) AS RNUM
, TB.*
FROM (
SELECT COUNT(*) OVER() TOT_CNT
, FO.SOPMAL_CD
, CAST(FO.ORDR_INNB AS CHAR) AS ORDR_INNB
, FO.ORDR_RCEPT_DT
, DATE_FORMAT(FO.ORDR_RCEPT_DT, '%Y.%m.%d') AS ORDR_DT
, GS.IMG AS GOODS_IMAGE_URL
, CONCAT(GS.SUBSVC_NM, '[', GS.SUBSVC_GNR_NM, ']') AS GOODS_NM
, FN_GET_ORDER_GOODS_OPTN_NAME(FO.SOPMAL_CD, FO.ORDR_INNB, 0) AS OPTN_NM
, GS.SUBSVC_INNB AS GOODS_INNB
, ITEM.ORDR_DLVY_INNB
, FO.RL_SETLE_AMT AS SETLE_AMT
, FO.ORDR_STTUS_CD
, CASE
WHEN FO.ORDR_STTUS_CD = '95' THEN '주문취소'
ELSE FN_GET_COMMCODE_NAME('ORDR_STTUS', FO.ORDR_STTUS_CD)
END AS ORDR_STTUS_NM
, (
SELECT
FN_GET_COMMCODE_NAME('GIFT_STTUS', SH.GIFT_STTUS_CD) AS GIFT_STTUS_CD
FROM GC_ORDER_SHIPPING SH
WHERE 1 =1
AND SH.SOPMAL_CD = FO.SOPMAL_CD
AND SH.ORDR_INNB = FO.ORDR_INNB
LIMIT 1
) AS GIFT_STTUS_CD_NM
, (
SELECT
SH.GIFT_STTUS_CD
FROM GC_ORDER_SHIPPING SH
WHERE 1 =1
AND SH.SOPMAL_CD = FO.SOPMAL_CD
AND SH.ORDR_INNB = FO.ORDR_INNB
LIMIT 1
) AS GIFT_STTUS_CD
, FO.ORDR_TY_CD
, FO.SKN_ENVRN_CD
, FN_GET_COMMCODE_NAME('ORDR_TY', FO.ORDR_TY_CD) AS ORDR_TY_CD_NM
, FO.MBR_INNB
, FO.MBR_DV_CD
, CASE
WHEN EXISTS (
SELECT 1
FROM GC_ORDER_ITEM_OPTION FOIO
INNER JOIN GC_ORDER_ITEM FOI
ON FOIO.SOPMAL_CD = FOI.SOPMAL_CD
AND FOIO.ORDR_GOODS_INNB = FOI.ORDR_GOODS_INNB
INNER JOIN GC_GOODS FG
ON FOI.GOODS_INNB = FG.GOODS_INNB
AND FOI.SOPMAL_CD = FG.SOPMAL_CD
AND FG.GOODS_KND_CD = '01'
LEFT JOIN LATERAL ( SELECT FBG.ORDR_GOODS_OPTN_INNB
, FBG.SOPMAL_CD
, SUM(CASE WHEN FB.BBS_ID = 'goods_review' THEN 1 ELSE 0 END) RVW_CNT
, SUM(CASE WHEN FB.BBS_ID = 'goods_review_month' THEN 1 ELSE 0 END) MT_RVW_CNT
FROM GC_BOARDDATA_GOODS FBG
INNER JOIN GC_BOARDDATA FB
ON FBG.BBSCTT_INNB = FB.BBSCTT_INNB
AND FBG.SOPMAL_CD = FB.SOPMAL_CD
AND FB.BBS_ID IN ('goods_review','goods_review_month')
WHERE FOIO.ORDR_GOODS_OPTN_INNB = FBG.ORDR_GOODS_OPTN_INNB
GROUP BY FBG.ORDR_GOODS_OPTN_INNB, FBG.SOPMAL_CD
)RVW
ON FOIO.ORDR_GOODS_OPTN_INNB = RVW.ORDR_GOODS_OPTN_INNB
AND FOIO.SOPMAL_CD = RVW.SOPMAL_CD
WHERE 1 = 1
AND FOIO.SOPMAL_CD = FO.SOPMAL_CD
AND FOI.ORDR_INNB = FO.ORDR_INNB
AND FOIO.PURCHS_DCSN_QY > 0
AND FOIO.OPTN_TY <> '04'
AND ((FG.RVW_WRITNG_POSBL_AT = 'Y' AND (CASE WHEN IFNULL(FOIO.PURCHS_DCSN_QY,0) < IFNULL(FOIO.ORDR_QY,0) - IFNULL(STEP85,0) THEN IFNULL(FOIO.PURCHS_DCSN_QY,0)
ELSE IFNULL(FOIO.ORDR_QY,0) - IFNULL(STEP85,0) END) > IFNULL(RVW.RVW_CNT,0) )
OR (FG.MT_RVW_WRITNG_POSBL_AT = 'Y' AND IFNULL(MT_RVW_CNT,0) < 1))
AND FOIO.PURCHS_DCSN_DT > DATE_SUB(SYSDATE(),INTERVAL 6 MONTH)
) THEN 'Y'
ELSE 'N'
END AS REVIEW_AT
, CASE
WHEN EXISTS (
SELECT
1
FROM GC_ORDER_ITEM_OPTION OIOP
INNER JOIN GC_ORDER_SHIPPING SH ON OIOP.SOPMAL_CD = SH.SOPMAL_CD
AND OIOP.ORDR_DLVY_INNB = SH.ORDR_DLVY_INNB
WHERE 1 = 1
AND OIOP.PURCHS_DCSN_AT = 'N'
AND FO.SOPMAL_CD = SH.SOPMAL_CD
AND FO.ORDR_INNB = SH.ORDR_INNB
AND OIOP.ORDR_STTUS_CD BETWEEN '50' AND '75'
) THEN 'Y'
ELSE 'N'
END AS PURCHS_DCSN_AT
,FOS.SETLE_TY_CD
FROM GC_ORDER FO
INNER JOIN GC_SUBSVC GS ON FO.SUBSVC_INNB = GS.SUBSVC_INNB
INNER JOIN (
SELECT FOI.SOPMAL_CD
, FOI.ORDR_INNB
, MAX(FOI.GOODS_INNB) AS GOODS_INNB
, MAX(FOIO.ORDR_DLVY_INNB) AS ORDR_DLVY_INNB
, COUNT(DISTINCT FOI.ORDR_GOODS_INNB) AS CNT
, SUM(FOIO.ORDR_QY) AS ORDR_QY
, MAX(FN_GET_ORDER_INPUT_OPTN(FOI.SOPMAL_CD, FOI.ORDR_INNB, FOI.ORDR_GOODS_INNB, FOIO.ORDR_GOODS_OPTN_INNB)) AS INPUT_OPTN_TEXT
, MAX(FOI.GOODS_IMG_COURS) AS GOODS_IMG_COURS
FROM GC_ORDER_ITEM FOI
INNER JOIN GC_ORDER_ITEM_OPTION FOIO ON FOI.SOPMAL_CD = FOIO.SOPMAL_CD
AND FOI.ORDR_GOODS_INNB = FOIO.ORDR_GOODS_INNB
WHERE FOI.SOPMAL_CD = #{sopmalCd}
AND FOI.GOODS_KND_CD = '01'
AND (FOI.SOPMAL_CD, FOI.ORDR_INNB) IN (
SELECT GOR.SOPMAL_CD
, GOR.ORDR_INNB
FROM GC_ORDER GOR
WHERE GOR.USE_AT = 'Y'
AND GOR.SOPMAL_CD = #{sopmalCd}
AND GOR.MBR_DV_CD = #{mbrDvCd}
AND GOR.MBR_INNB = #{mbrInnb}
AND GOR.SUBSVC_INNB IS NOT NULL /*구독서비스*/
)
GROUP BY FOI.ORDR_INNB
) ITEM ON ITEM.SOPMAL_CD = FO.SOPMAL_CD
AND ITEM.ORDR_INNB = FO.ORDR_INNB
LEFT JOIN GC_ORDER_SETLE FOS ON FOS.SOPMAL_CD = FO.SOPMAL_CD
AND FOS.ORDR_INNB = FO.ORDR_INNB
WHERE FO.USE_AT = 'Y'
AND FO.SUBSVC_INNB IS NOT NULL /*구독서비스*/
AND ( ( FO.ORDR_STTUS_CD BETWEEN '15' AND '75' ) OR FO.ORDR_STTUS_CD = '95' )
AND FO.SOPMAL_CD = #{sopmalCd}
AND FO.MBR_DV_CD = #{mbrDvCd}
AND FO.MBR_INNB = #{mbrInnb}
ORDER BY FO.REGIST_DT DESC
) TB
WHERE (@rownum:=0) = 0
]]>
<include refid="mbrOrdrSubsvcListWhere"/>
) PV
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select>
<sql id="mbrOrdrSubsvcListWhere">
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchwrd)">
AND (
TB.ORDR_INNB LIKE CONCAT('%', #{srchwrd}, '%') OR
TB.GOODS_NM LIKE CONCAT('%', #{srchwrd}, '%')
)
</if>
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(bgnDt) and @com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(endDt)">
AND TB.ORDR_RCEPT_DT BETWEEN DATE(#{bgnDt}) AND DATE(#{endDt}) + 1
</if>
</sql>
</mapper>