fix : 관리자 구독서비스 상품준비 관리

This commit is contained in:
jazz
2026-02-06 16:22:16 +09:00
parent 543a05b5f5
commit 006d3f5a09
14 changed files with 1581 additions and 22 deletions

View File

@@ -343,6 +343,8 @@
, CAST(@ROWNUM:=@ROWNUM + 1 AS UNSIGNED) AS RNUM
FROM (
SELECT FG.GOODS_INNB
, FGO.GOODS_OPTN_INNB
, FGO.OPTN_TY
, FG.DLVY_GROUP_INNB
, FG.SOPMAL_CD
, FG.GOODS_NM
@@ -378,6 +380,7 @@
, FGO.CNSMRPRIC
, FGO.SLEPRIC
, FGO.SOPMAL_CD
, FGO.OPTN_TY
FROM GC_GOODS_OPTION FGO
WHERE FGO.OPTN_EXPSR_AT = 'Y'
AND FGO.STDR_DV_AT = 'Y'

View File

@@ -0,0 +1,240 @@
<?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.ordr.subsvc.mapper.BOSubsvcOrdrMapper">
<!--구독서비스 상품준비 관리 목록-->
<select id="selectBOSubsvcOrderList" parameterType="com.wb.domainserver.domain.gcone.ordr.subsvc.vo.BOSubsvcOrderVO" resultType="dataMap">
SELECT *
FROM (
SELECT CAST(@ROWNUM:=@ROWNUM + 1 AS UNSIGNED) AS RNUM
, COUNT(*) OVER() AS TOT_CNT
, MAIN.*
FROM (
SELECT ROW_NUMBER() OVER(PARTITION BY GO.ORDR_INNB ORDER BY GO.ORDR_INNB ASC, GOIO.ORDR_STTUS_CD ASC, GOI.ORDR_GOODS_INNB ASC, GOIO.ORDR_GOODS_OPTN_INNB ASC) AS LINE
, GO.ORDR_INNB
, GOI.ORDR_GOODS_INNB
, GOIO.ORDR_GOODS_OPTN_INNB /*일괄처리 대상 주문상품옵션고유번호*/
, GOIO.ORDR_DLVY_INNB
, GS.SUBSVC_NM
, GS.SUBSVC_GNR
, GS.SUBSVC_GNR_NM
, GM.MBR_NM
, GM.MBR_ID
, GM.MBR_DV_CD
, GM.MBR_INNB
, fn_get_member_grad_name(GO.SOPMAL_CD, GM.MBR_DV_CD, GM.MBR_INNB) AS GRADE
, SUM(CASE WHEN GOIO.ORDR_STTUS_CD BETWEEN '35' AND '75' THEN 1 ELSE 0 END) OVER(PARTITION BY GO.ORDR_INNB)+1 AS CURT_PROCS_ODR
, SUM(CASE WHEN GOIO.ORDR_STTUS_CD BETWEEN '35' AND '75' THEN 1 ELSE 0 END) OVER(PARTITION BY GO.ORDR_INNB) AS MBR_LAST_PROCS_ODR /*회원별 최종차수 상품준비 ~ 배송완료*/
, MAX(GOIO.UPDT_DT) OVER(PARTITION BY GO.ORDR_INNB) AS LAST_PRCS_DT/*최종처리일*/
, IFNULL(GS.LAST_PROCS_ODR,0) AS LAST_PROCS_ODR /*최종차수*/
, GOIO.ORDR_STTUS_CD
FROM GC_ORDER GO
JOIN GC_SUBSVC GS ON GS.SOPMAL_CD = GO.SOPMAL_CD AND GS.SUBSVC_INNB = GO.SUBSVC_INNB
JOIN GC_MEMBER GM ON GM.MBR_DV_CD = GO.MBR_DV_CD AND GM.MBR_INNB = GO.MBR_INNB
JOIN GC_ORDER_ITEM GOI ON GO.SOPMAL_CD =GOI.SOPMAL_CD AND GO.ORDR_INNB = GOI.ORDR_INNB
JOIN GC_ORDER_ITEM_OPTION GOIO ON GOI.SOPMAL_CD = GOIO.SOPMAL_CD AND GOI.ORDR_GOODS_INNB = GOIO.ORDR_GOODS_INNB AND GOIO.OPTN_TY = '01'
WHERE GO.USE_AT = 'Y'
AND GO.SUBSVC_AT = 'Y'
AND GO.SOPMAL_CD = #{sopmalCd}
<if test="srchSelSubsvcNm != null and srchSelSubsvcNm != ''">
AND GS.SUBSVC_NM = #{srchSelSubsvcNm} /*구독서비스 명*/
</if>
<if test="srchSelSubsvcGnr != null and srchSelSubsvcGnr != ''">
AND GS.SUBSVC_GNR = #{srchSelSubsvcGnr} /*기수*/
</if>
<if test="srchSubsvcNm != null and srchSubsvcNm != ''">
AND GS.SUBSVC_NM LIKE CONCAT('%',#{srchSubsvcNm},'%') /*구독서비스 명*/
</if>
<if test="srchSubsvcGnrNm != null and srchSubsvcGnrNm != ''">
AND GS.SUBSVC_GNR_NM LIKE CONCAT('%',#{srchSubsvcGnrNm},'%') /*기수명*/
</if>
) MAIN
WHERE (@ROWNUM:=0)=0
AND MAIN.LINE = 1
AND MAIN.ORDR_STTUS_CD = '25'
<if test='srchCurMonExclude!= null and srchCurMonExclude == "Y"'>
<![CDATA[
AND MAIN.LAST_PRCS_DT < CONCAT(DATE_FORMAT(NOW(),'%Y-%m'),'-01') /*당월 처리자 제외*/
]]>
</if>
<choose>
<when test="sortDv == 'subsvcGnrAsc'">
ORDER BY SUBSVC_NM ASC, SUBSVC_GNR ASC /*구독서비스명+기수*/
</when>
<when test="sortDv == 'subsvcGnrDesc'">
ORDER BY SUBSVC_NM DESC, SUBSVC_GNR DESC /*구독서비스명+기수*/
</when>
<when test="sortDv == 'mbrAsc'">
ORDER BY MBR_NM ASC, MBR_ID ASC /*주문자순*/
</when>
<when test="sortDv == 'mbrDesc'">
ORDER BY MBR_NM DESC, MBR_ID DESC /*주문자순*/
</when>
<when test="sortDv == 'ordrAsc'">
ORDER BY ORDR_INNB ASC /*주문번호순*/
</when>
<when test="sortDv == 'ordrDesc'">
ORDER BY ORDR_INNB DESC /*주문번호순*/
</when>
<when test="sortDv == 'lastPrcsDtAsc'">
ORDER BY LAST_PRCS_DT ASC /*최종처리일순*/
</when>
<when test="sortDv == 'lastPrcsDtDesc'">
ORDER BY LAST_PRCS_DT ASC /*최종처리일순*/
</when>
<otherwise>
ORDER BY GS.SUBSVC_NM ASC, GS.SUBSVC_GNR ASC
</otherwise>
</choose>
) PV
WHERE 1=1
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select>
<!--구독서비스 상품준비 관리 목록 배송내역 팝업 배송내역목록-->
<select id="selectBOSubsvcOrderDlvyList" parameterType="com.wb.domainserver.domain.gcone.ordr.subsvc.vo.BOSubsvcOrderVO" resultType="dataMap">
SELECT CAST(@ROWNUM:=@ROWNUM + 1 AS UNSIGNED) AS RNUM
, GOIO.ORDR_GOODS_OPTN_INNB
, GO.ORDR_INNB
, GM.MBR_NM
, GM.MBR_ID
, GM.MBR_DV_CD
, GM.MBR_INNB
, fn_get_member_grad_name(GO.SOPMAL_CD, GM.MBR_DV_CD, GM.MBR_INNB) AS GRADE
, IFNULL(GOIO.UPDT_DT, GOIO.REGIST_DT) AS PROCS_DT /*발생일자*/
, GOI.GOODS_IMG_COURS
, GOI.GOODS_NM
, GOIO.OPTN_NM_1
, GOIO.OPTN_VAL_1
, GOIO.CNSMRPRIC /*정가*/
, GOIO.SLEPRIC /*판매가*/
, fn_get_commcode_name('ORDR_STTUS', GOIO.ORDR_STTUS_CD) AS ORDR_STTUS
FROM GC_ORDER GO
JOIN GC_MEMBER GM ON GM.MBR_DV_CD = GO.MBR_DV_CD AND GM.MBR_INNB = GO.MBR_INNB
JOIN GC_ORDER_ITEM GOI ON GOI.SOPMAL_CD = GO.SOPMAL_CD AND GOI.ORDR_INNB = GO.ORDR_INNB
JOIN GC_ORDER_ITEM_OPTION GOIO ON GOI.SOPMAL_CD = GOIO.SOPMAL_CD AND GOI.ORDR_GOODS_INNB = GOIO.ORDR_GOODS_INNB AND GOIO.OPTN_TY = '01'
WHERE (@ROWNUM:=0)=0
AND GOI.ORDR_INNB = #{ordrInnb}
AND GOI.SOPMAL_CD = #{sopmalCd}
ORDER BY GOIO.ORDR_GOODS_OPTN_INNB ASC
</select>
<!--구독서비스 상품준비 관리 상품매칭 - 1. GC_ORDER update-->
<update id="updateBOSubsvcGoodsMappgOrdr" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
<foreach collection="arrOrdrInnb" item="ordrInnb" separator=";">
UPDATE GC_ORDER
SET ORDR_STTUS_CD = (CASE WHEN ORDR_STTUS_CD = '25' THEN '35' ELSE ORDR_STTUS_CD END)
, UPDT_DT = NOW()
WHERE SOPMAL_CD = #{sopmalCd}
AND ORDR_INNB = #{ordrInnb}
</foreach>
</update>
<!--구독서비스 상품준비 관리 상품매칭 - 2. GC_ORDER_ITEM update-->
<update id="updateBOSubsvcGoodsMappgOrdrItem" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
<foreach collection="arrOrdrGoodsInnb" item="ordrGoodsInnb" separator=";">
UPDATE GC_ORDER_ITEM GOI, (SELECT GG.GOODS_INNB, GG.GOODS_NM, GGI.IMG
FROM GC_GOODS GG
JOIN GC_GOODS_IMAGE GGI ON GGI.SOPMAL_CD = GG.SOPMAL_CD AND GGI.GOODS_INNB = GG.GOODS_INNB AND GGI.CUT_NB = 1 AND GGI.IMG_KND = '02'
WHERE GG.GOODS_INNB = #{goodsInnb}
LIMIT 1) G
SET GOI.GOODS_INNB = G.GOODS_INNB
, GOI.GOODS_NM = G.GOODS_NM
, GOI.GOODS_IMG_COURS = G.IMG
WHERE SOPMAL_CD = #{sopmalCd}
AND GOI.ORDR_GOODS_INNB = #{ordrGoodsInnb}
</foreach>
</update>
<!--구독서비스 상품준비 관리 상품매칭 - 3. GC_ORDER_ITEM_OPTION update-->
<update id="updateBOSubsvcGoodsMappgOrdrItemOptn" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
<foreach collection="arrOrdrGoodsOptnInnb" item="ordrGoodsOptnInnb" separator=";">
UPDATE GC_ORDER_ITEM_OPTION GOIO, (SELECT GOODS_OPTN_INNB
, OPTN_TY
, OPTN_NM_1
, OPTN_NM_2
, OPTN_NM_3
, OPTN_NM_4
, OPTN_VAL_1
, OPTN_VAL_2
, OPTN_VAL_3
, OPTN_VAL_4
, OPTN_CD_1
, OPTN_CD_2
, OPTN_CD_3
, OPTN_CD_4
, OPTN_INFO
, CNSMRPRIC
, SLEPRIC
, GG.TAX_AT
FROM GC_GOODS_OPTION GGO
JOIN GC_GOODS GG ON GG.SOPMAL_CD = GGO.SOPMAL_CD AND GG.GOODS_INNB = GGO.GOODS_INNB
WHERE GGO.GOODS_OPTN_INNB = #{goodsOptnInnb}
AND GGO.OPTN_TY = #{optnTy}
LIMIT 1) G
SET GOIO.GOODS_OPTN_INNB = G.GOODS_OPTN_INNB
, GOIO.OPTN_TY = G.OPTN_TY
, GOIO.OPTN_NM_1 = G.OPTN_NM_1
, GOIO.OPTN_NM_2 = G.OPTN_NM_2
, GOIO.OPTN_NM_3 = G.OPTN_NM_3
, GOIO.OPTN_NM_4 = G.OPTN_NM_4
, GOIO.OPTN_VAL_1 = G.OPTN_VAL_1
, GOIO.OPTN_VAL_2 = G.OPTN_VAL_2
, GOIO.OPTN_VAL_3 = G.OPTN_VAL_3
, GOIO.OPTN_VAL_4 = G.OPTN_VAL_4
, GOIO.OPTN_CD_1 = G.OPTN_CD_1
, GOIO.OPTN_CD_2 = G.OPTN_CD_2
, GOIO.OPTN_CD_3 = G.OPTN_CD_3
, GOIO.OPTN_CD_4 = G.OPTN_CD_4
, GOIO.OPTN_INFO = G.OPTN_INFO
, GOIO.CNSMRPRIC = G.CNSMRPRIC
, GOIO.SLEPRIC = G.SLEPRIC
, GOIO.TAX_AT = G.TAX_AT
, GOIO.STEP85 = 0
, GOIO.STEP35 = GOIO.ORDR_QY
, GOIO.STEP45 = 0
, GOIO.STEP55 = 0
, GOIO.STEP65 = 0
, GOIO.STEP75 = 0
, GOIO.ORDR_STTUS_CD = '35'
, GOIO.UPDT_DT = NOW()
WHERE GOIO.SOPMAL_CD = #{sopmalCd}
AND GOIO.ORDR_GOODS_OPTN_INNB = #{ordrGoodsOptnInnb}
</foreach>
</update>
<!--구독서비스 상품준비 관리 상품매칭 - 4. GC_ORDER_SHIPPING update-->
<update id="updateBOSubsvcGoodsMappgShipping" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
<foreach collection="arrOrdrDlvyInnb" item="ordrDlvyInnb" separator=";">
UPDATE GC_ORDER_SHIPPING
SET ORDR_STTUS_CD = '35'
, UPDT_DT = NOW()
WHERE SOPMAL_CD = #{sopmalCd}
AND ORDR_DLVY_INNB = #{ordrDlvyInnb}
</foreach>
</update>
<!--구독서비스 상품준비 관리 상품매칭 - 5. GC_SUBSVC update-->
<update id="updateBOSubsvcGoodsMappgSubsvc" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
UPDATE GC_SUBSVC GS, ( SELECT SOPMAL_CD, SUBSVC_INNB, MAX(LAST_PROCS_ODR) LAST_PROCS_ODR
FROM (
SELECT GOIO.SOPMAL_CD, GO.SUBSVC_INNB, SUM(CASE WHEN GOIO.ORDR_STTUS_CD BETWEEN '35' AND '75' THEN 1 ELSE 0 END) OVER(PARTITION BY GO.SOPMAL_CD, GO.ORDR_INNB) AS LAST_PROCS_ODR
FROM GC_ORDER GO
JOIN GC_ORDER_ITEM GOI ON GOI.SOPMAL_CD = GO.SOPMAL_CD AND GOI.ORDR_INNB = GO.ORDR_INNB
JOIN GC_ORDER_ITEM_OPTION GOIO ON GOIO.SOPMAL_CD = GOI.SOPMAL_CD AND GOI.ORDR_GOODS_INNB = GOIO.ORDR_GOODS_INNB
WHERE GO.SUBSVC_AT = 'Y'
AND GO.SOPMAL_CD = #{sopmalCd}
AND GO.SUBSVC_INNB IN (SELECT DISTINCT SUBSVC_INNB
FROM GC_ORDER
WHERE SOPMAL_CD = #{sopmalCd}
AND ORDR_INNB IN
<foreach collection="arrOrdrInnb" item="ordrInnb" open="(" close=")" separator=",">
#{ordrInnb}
</foreach>
)
) M
GROUP BY SOPMAL_CD, SUBSVC_INNB
) MAIN
SET GS.LAST_PROCS_ODR = MAIN.LAST_PROCS_ODR
, UPDT_DT = NOW()
WHERE GS.SOPMAL_CD = MAIN.SOPMAL_CD
AND GS.SUBSVC_INNB = MAIN.SUBSVC_INNB
</update>
</mapper>