구독서비스 결제 - 결제취소 처리 후 재고 및 상태 변경

This commit is contained in:
이대환
2026-04-10 15:45:29 +09:00
parent 9d376958b7
commit e40b140926
6 changed files with 74 additions and 30 deletions

View File

@@ -33,6 +33,8 @@ public interface BOSubsvcMapper {
/** 구독서비스 주문에 따른 판매재고수량 수정*/ /** 구독서비스 주문에 따른 판매재고수량 수정*/
public void updateSubsvcOrdrUsefulInvntryQy(BOSubsvcVO vo); public void updateSubsvcOrdrUsefulInvntryQy(BOSubsvcVO vo);
/** 구독서비스 환불에 따른 판매재고수량 수정*/
public void updateSubsvcRefundUsefulInvntryQy(BOSubsvcVO vo);
/** 판매재고수량 변경에 따른 구독서비스 상태 수정*/ /** 판매재고수량 변경에 따른 구독서비스 상태 수정*/
public void updateInvntryPolicySubsvcSttusChng(BOSubsvcVO vo); public void updateInvntryPolicySubsvcSttusChng(BOSubsvcVO vo);
} }

View File

@@ -1,9 +1,8 @@
package com.wb.domainserver.domain.gcone.goods.subsvc.service; package com.wb.domainserver.domain.gcone.goods.subsvc.service;
import com.wb.domainserver.domain.comm.vo.AbstractVO;
import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderVO;
import com.wb.domainserver.domain.gcone.goods.subsvc.mapper.BOSubsvcMapper; import com.wb.domainserver.domain.gcone.goods.subsvc.mapper.BOSubsvcMapper;
import com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO; import com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO;
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO;
import com.wb.domainserver.util.dataaccess.DataMap; import com.wb.domainserver.util.dataaccess.DataMap;
import io.micrometer.common.util.StringUtils; import io.micrometer.common.util.StringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -142,18 +141,33 @@ public class BOSubsvcService {
/** /**
* 주문에 따른 판매재고수량 수정 * 주문에 따른 판매재고수량 수정
* @param orderVO * @param ordrVO
* @return * @return
*/ */
@Transactional @Transactional
public void updateSubsvcOrdrUsefulInvntryQy(BOOrderVO orderVO) throws Exception { public void updateSubsvcOrdrUsefulInvntryQy(BOOrdrVO ordrVO) throws Exception {
BOSubsvcVO subsvcVO = new BOSubsvcVO(); BOSubsvcVO subsvcVO = new BOSubsvcVO();
BeanUtils.copyProperties(orderVO, subsvcVO); BeanUtils.copyProperties(ordrVO, subsvcVO);
subsvcVO.setSubsvcInnb(orderVO.getSubsvcInnb().toString());
//판매수량 수정 //판매수량 수정
mapper.updateSubsvcOrdrUsefulInvntryQy(subsvcVO); mapper.updateSubsvcOrdrUsefulInvntryQy(subsvcVO);
//구독서비스 상태 수정 //구독서비스 상태 수정
mapper.updateInvntryPolicySubsvcSttusChng(subsvcVO); mapper.updateInvntryPolicySubsvcSttusChng(subsvcVO);
} }
/**
* 환불에 따른 판매재고수량 수정
* @param ordrVO
* @return
*/
@Transactional
public void updateSubsvcRefundUsefulInvntryQy(BOOrdrVO ordrVO) throws Exception {
BOSubsvcVO subsvcVO = new BOSubsvcVO();
BeanUtils.copyProperties(ordrVO, subsvcVO);
//판매수량 수정
mapper.updateSubsvcRefundUsefulInvntryQy(subsvcVO);
//구독서비스 상태 수정
mapper.updateInvntryPolicySubsvcSttusChng(subsvcVO);
}
} }

View File

@@ -110,7 +110,7 @@ private static final long serialVersionUID = 1L;
/** 회원구분코드 */ /** 회원구분코드 */
private String mbrDvCd; private String mbrDvCd;
/** 주문고유번호 */ /** 주문고유번호 */
private BigInteger ordrInnb; private String ordrInnb;
/** 결제상품정보 */ /** 결제상품정보 */

View File

@@ -1,53 +1,45 @@
package com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.service; package com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.service;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.wb.domainserver.domain.gcone.goods.goods.service.BOGoodsService; import com.wb.domainserver.domain.gcone.goods.goods.service.BOGoodsService;
import com.wb.domainserver.domain.gcone.goods.purchs.mapper.BOPurchsMapper; import com.wb.domainserver.domain.gcone.goods.purchs.mapper.BOPurchsMapper;
import com.wb.domainserver.domain.gcone.goods.purchs.service.BOOrderService; import com.wb.domainserver.domain.gcone.goods.purchs.service.BOOrderService;
import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderLogVO; import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderLogVO;
import com.wb.domainserver.domain.gcone.goods.subsvc.service.BOSubsvcService;
import com.wb.domainserver.domain.gcone.mbr.mlg.service.BOMlgService; import com.wb.domainserver.domain.gcone.mbr.mlg.service.BOMlgService;
import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOCashVO; import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOCashVO;
import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOMlgVO; import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOMlgVO;
import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService; import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService;
import com.wb.domainserver.domain.gcone.ordr.ordr.mapper.BOOrdrMapper; import com.wb.domainserver.domain.gcone.ordr.ordr.mapper.BOOrdrMapper;
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService;
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrDlvyVO;
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrRefundVO; import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrRefundVO;
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO;
import com.wb.domainserver.domain.gcone.ordr.pay.service.BOPayService; import com.wb.domainserver.domain.gcone.ordr.pay.service.BOPayService;
import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO; import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO;
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.mapper.BORtngudrefndMapper;
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BOOrderReItemVO; import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BOOrderReItemVO;
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORefundSetleVO; import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORefundSetleVO;
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORtngudrefndSrchVO;
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORtngudrefndVO;
import com.wb.domainserver.domain.gcone.ordr.selngpruf.service.BOSelngprufService; import com.wb.domainserver.domain.gcone.ordr.selngpruf.service.BOSelngprufService;
import com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO; import com.wb.domainserver.domain.gcone.ordr.selngpruf.vo.BOSelngprufVO;
import com.wb.domainserver.domain.gcone.promtn.coupon.service.BOCouponService; import com.wb.domainserver.domain.gcone.promtn.coupon.service.BOCouponService;
import com.wb.domainserver.domain.gcone.promtn.coupon.vo.BODwldCouponVO; import com.wb.domainserver.domain.gcone.promtn.coupon.vo.BODwldCouponVO;
import com.wb.domainserver.domain.gcone.setup.site.mapper.BOSiteMapper; import com.wb.domainserver.domain.gcone.setup.site.mapper.BOSiteMapper;
import com.wb.domainserver.domain.gcone.setup.site.vo.BOSetupContentsItemVO;
import com.wb.domainserver.exception.WnbtRestException; import com.wb.domainserver.exception.WnbtRestException;
import com.wb.domainserver.util.dataaccess.DataMap;
import com.wb.domainserver.util.string.StringUtil; import com.wb.domainserver.util.string.StringUtil;
import lombok.Data; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.mapper.BORtngudrefndMapper;
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORtngudrefndSrchVO;
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.vo.BORtngudrefndVO;
import com.wb.domainserver.util.dataaccess.DataMap;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.support.WebExchangeBindException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.*;
/** /**
* *
@@ -87,6 +79,9 @@ public class BORtngudrefndService {
@Autowired @Autowired
private BOOrderService orderService; private BOOrderService orderService;
@Autowired
private BOSubsvcService subsvcService;
@Autowired @Autowired
private BORtngudrefndMapper mapper; private BORtngudrefndMapper mapper;
@@ -1331,7 +1326,18 @@ public class BORtngudrefndService {
if ("0".equals(message.get("status"))) { if ("0".equals(message.get("status"))) {
// ########################################### 상품 재고 ########################################### // ########################################### 상품 재고 ###########################################
BOOrdrVO ordrVO = new BOOrdrVO();
ordrVO.setOrdrInnb(refundVO.getOrdrInnb());
ordrVO.setSopmalCd(refundVO.getSopmalCd());
DataMap ordrDtl = ordrMapper.selectOrdrDtl(ordrVO);
boolean subsvcAt = "Y".equals(ordrDtl.get("subsvcAt"));
if(subsvcAt) {
ordrVO.setSubsvcInnb(ordrDtl.get("subsvcInnb").toString());
subsvcService.updateSubsvcRefundUsefulInvntryQy(ordrVO);
} else {
boGoodsService.updateRefundUsefulInvntryQy(refundVO); boGoodsService.updateRefundUsefulInvntryQy(refundVO);
}
// ########################################### 쿠폰 복원 ########################################### // ########################################### 쿠폰 복원 ###########################################

View File

@@ -2905,8 +2905,8 @@ public class OrdrController {
DataMap ordrDtl = (DataMap) service.selectOrdrDtlInqire(ordrVO).get("dtl"); DataMap ordrDtl = (DataMap) service.selectOrdrDtlInqire(ordrVO).get("dtl");
boolean subsvcAt = "Y".equals(ordrDtl.get("subsvcAt")); boolean subsvcAt = "Y".equals(ordrDtl.get("subsvcAt"));
if(subsvcAt) { if(subsvcAt) {
orderVO.setSubsvcInnb(((Number) ordrDtl.get("subsvcInnb")).intValue()); ordrVO.setSubsvcInnb(ordrDtl.get("subsvcInnb").toString());
subsvcService.updateSubsvcOrdrUsefulInvntryQy(orderVO); subsvcService.updateSubsvcOrdrUsefulInvntryQy(ordrVO);
} else { } else {
boGoodsService.updateOrdrUsefulInvntryQy(orderVO); boGoodsService.updateOrdrUsefulInvntryQy(orderVO);
} }

View File

@@ -334,6 +334,28 @@
]]> ]]>
</update> </update>
<!-- 구독서비스 환불에 따른 판매재고수량 수정 -->
<update id="updateSubsvcRefundUsefulInvntryQy" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
<![CDATA[
UPDATE GC_SUBSVC GS
INNER JOIN (
SELECT
GO.SUBSVC_INNB,
SUM(CASE WHEN GOR.REFUND_TY_CD = '01' THEN 1 ELSE 0 END) AS REFUND_QY
FROM GC_ORDER GO
INNER JOIN GC_ORDER_REFUND GOR
ON GO.ORDR_INNB = GOR.ORDR_INNB
WHERE GO.SOPMAL_CD = #{sopmalCd}
AND GO.ORDR_INNB = #{ordrInnb}
GROUP BY
GO.SUBSVC_INNB
) SUBQUERY
ON GS.SUBSVC_INNB = SUBQUERY.SUBSVC_INNB
SET GS.USEFUL_INVNTRY_QY = IFNULL(GS.USEFUL_INVNTRY_QY, 0) - SUBQUERY.REFUND_QY
WHERE GS.SUBSVC_INNB = SUBQUERY.SUBSVC_INNB
]]>
</update>
<!-- 판매재고수량 변경에 따른 구독서비스 상태 수정 --> <!-- 판매재고수량 변경에 따른 구독서비스 상태 수정 -->
<update id="updateInvntryPolicySubsvcSttusChng" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO"> <update id="updateInvntryPolicySubsvcSttusChng" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
<![CDATA[ <![CDATA[