From 9c52b23fc0e69bd2ef37005da7aa75b32f5c59a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=8C=80=ED=99=98?= Date: Tue, 24 Feb 2026 10:19:05 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B5=AC=EB=8F=85=EC=84=9C=EB=B9=84=EC=8A=A4?= =?UTF-8?q?=20=EA=B2=B0=EC=A0=9C=20=ED=99=94=EB=A9=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ordr/ordr/service/BOOrdrService.java | 49 + .../ordr/controller/OrdrController.java | 63 +- .../views/sopmal/ordr/MbrSubscribeC.jsp | 4553 +++++++++++++++++ 3 files changed, 4664 insertions(+), 1 deletion(-) create mode 100644 src/main/webapp/WEB-INF/views/sopmal/ordr/MbrSubscribeC.jsp diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java index 8f7896f0..816658c5 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/service/BOOrdrService.java @@ -13,6 +13,8 @@ import com.wb.domainserver.domain.gcone.goods.purchs.service.BOOrderNoService; import com.wb.domainserver.domain.gcone.goods.purchs.service.BOOrderService; import com.wb.domainserver.domain.gcone.goods.purchs.service.BOPurchsService; import com.wb.domainserver.domain.gcone.goods.purchs.vo.*; +import com.wb.domainserver.domain.gcone.goods.subsvc.service.BOSubsvcService; +import com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO; import com.wb.domainserver.domain.gcone.mbr.mbr.mapper.BOMbrMapper; import com.wb.domainserver.domain.gcone.mbr.mbr.service.BOMbrService; import com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrAppnVO; @@ -144,6 +146,9 @@ public class BOOrdrService{ @Autowired private BOOrderNoService orderNoService; + @Autowired + private BOSubsvcService subsvcService; + @Autowired private PropertyService propertyService; @@ -3807,6 +3812,50 @@ public class BOOrdrService{ return content; } + /** + * 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 결제 예정금액 + * @param param + * @return Map + */ + public Map selectSubsvcSetleExpectAmt(DataMap param) throws Exception { + Map content = new HashMap<>(); + + log.debug("selectSetleExpectAmt-param : {}", param); + + LinkedHashMap setleExpectAmtMap = new LinkedHashMap() {{ + put("goodsAmt", 0); + put("dlvyAmt", 0); + put("evtDscntAmt", 0); + put("goodsCouponDscntAmt", 0); + put("dlvyCouponDscntAmt", 0); + put("cartCouponDscntAmt", 0); + put("useMlgAmt", 0); + put("useCashMlgAmt", 0); + put("dscntAmt", 0); + put("setleAmt", 0); + put("accmlMlgAmt", 0); + }}; + + BigDecimal goodsAmt = new BigDecimal(0); + + List goodsList = (List) param.get("goodsList"); + log.debug("goodsList : {}", goodsList); + + BOSubsvcVO subsvcVO = new BOSubsvcVO(); + subsvcVO.setSubsvcInnb((String) param.get("subsvcInnb")); + subsvcVO.setSopmalCd((String) param.get("sopmalCd")); + DataMap subsvcDetail = subsvcService.selectBOSubsvcDetail(subsvcVO); + goodsAmt = (BigDecimal) subsvcDetail.get("subsvcCt"); + + // ############################################## 결제 예정 금액 적용 ############################################## + setleExpectAmtMap.put("goodsAmt", goodsAmt.intValue()); + + content.put("setleExpectAmt", setleExpectAmtMap); + content.put("goodsList", goodsList); + + return content; + } + /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > 구매 정보 등록 * @param param diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java index 307775bd..9d3476f1 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/OrdrController.java @@ -181,7 +181,7 @@ public class OrdrController { model.addAttribute("deviceType", Util.getDeviceType(request)); model.addAttribute("stplat", stplat); - return Util.getDeviceType(request) + "/ordr/MbrPurchsC"; + return Util.getDeviceType(request) + "/ordr/MbrSubscribeC"; } /** @@ -398,6 +398,67 @@ public class OrdrController { // ); } + /** + * 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 결제 예정금액 조회 + * @param param + * @return ResponseEntity + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value="/selectSubsvcSetleExpectAmt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSubsvcSetleExpectAmt(HttpServletRequest request, @RequestBody HashMap param) { + String sesionId =""; + Cookie[] cookies = request.getCookies(); + if(cookies != null){ + for(Cookie cookie : cookies ){ + if(cookie.getName().equals("JSESSIONID")){ + sesionId = cookie.getValue(); + param.put("sesionId", sesionId); + break; + } + } + } + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + param.put("sopmalCd", user.getSopmalCd()); + param.put("mbrDvCd", user.getMbrDvCd()); + param.put("mbrInnb", user.getUserInnb()); + } + Map content = new HashMap<>(); + try { + DataMap datamap = new DataMap(); + param.entrySet().forEach(map -> { + datamap.put(map.getKey(), map.getValue()); + }); + content = service.selectSubsvcSetleExpectAmt(datamap); + } catch (WnbtRestException wre) { + log.debug("결제예정금액 ordr wre"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + put("mlgMxmmUseAmt", wre.getCode()); + }}; + } catch (Exception e) { + log.debug("결제예정금액 ordr e"); + log.error(e.getMessage(), e); + + content = new HashMap<>() {{ + put("status", "1"); + put("message", "예기치 못한 오류가 발생하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleExpectAmt", param), +// ReplyFromResrc::getReply +// ); + } + /** * 관리자 주문 > 브랜드페이 > 토큰발급 diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrSubscribeC.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrSubscribeC.jsp new file mode 100644 index 00000000..24851cfa --- /dev/null +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrSubscribeC.jsp @@ -0,0 +1,4553 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%> +<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%> + + +<%-- + Class Name : MbrSubscribeC.jsp + Description : 회원 구독상품 구매하기 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2026-02-23 이대환 최초 생성 +--%> + + + + + + <%-- 공통 include --%> + + + + + + + + + + + + + + + + + + + + + + + + +<%-- 공통 Header --%> + + + +
+
+
+
+ + +

구독서비스 결제

+
+
+
+
+ + "> + "> + "> + "> + "> +
+
+
+ + +
+ +
+ + +
+
+ +
+ + +
+
+
+
+
+

주문자 정보

+
+ + + + + + + + + + + + + + + + + + + + +
주문자 정보
이름 + " class="input-text" title="이름" placeholder="" + + readonly + + > +
휴대폰 번호" class="input-text number" title="휴대폰번호" placeholder="휴대폰번호 입력 (’-’ 없이)">
이메일" class="input-text" title="이메일" placeholder="이메일을 입력하세요.">
+
+
+ +
+

배송지 정보

+
+ "> + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> + + + + + + + + + + +
배송지 정보
배송지 선택 +
+
+ + +
+
+ + +
+<%-- --%> +<%--
--%> +<%-- --%> +<%-- --%> +<%--
--%> +<%--
--%> +
+ + <%--일본 배송지 추가 - 일부 기능 삭제--%> +<%-- --%> +
받는분 + "> + +
주소 + "> + "> + "> + "> + "> + "> + "> + + + + + +
휴대폰번호 + "> + +
배송요청사항 +
+
+ +
+ +
+
배송비쿠폰 + +
+ +
+
+
+ +
+
+

주문 상품

+
+
+ + + + + + + + + + + + + + + + + + +
주문 상품
상품명주문수량할인금액상품금액
+
+
+
+ +
+

사은품

+
+
+ + + + + + + + + + + + + + + + +
사은품
상품명수량수령여부
+
+
+
+ +
+

배송지 정보 1

+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> + +
해당 테이블에 대한 설명
상품명주문수량할인금액상품금액
--%> +<%--
--%> +<%-- --%> +<%--
--%> +<%-- 초임계--%> +<%-- 식물성 알티지 오메가3 fd fd--%> +<%-- --%> +<%-- 옵션--%> +<%-- 식물성알티지오메가3 1박스--%> +<%-- --%> +<%--
--%> +<%--
--%> +<%--
--%> +<%--
--%> +<%-- +<%-- class="product-count__amount-btn minus"> +<%-- class="visually-hidden">감소--%> +<%-- 1--%> +<%-- --%> +<%--
--%> +<%--
--%> +<%-- ( 2 / 10 )--%> +<%--
--%> +<%--
--%> +<%-- +<%-- class="cartItem__discountMinus">(-) +<%-- class="comma">20000 +<%-- class="priceUnit">${curUnit}--%> +<%-- --%> +<%-- +<%-- class="comma">79000${curUnit}--%> +<%-- +<%-- class="comma">59000 +<%-- class="priceUnit">${curUnit}--%> +<%-- --%> +<%-- +<%-- class=" comma">3000 +<%-- class="priceUnit">${curUnit}--%> +<%--
+
+
+
+ + + +
+ +
+ +
+ +
+
+ + + + +<%--
--%> +<%--

할인 정보

--%> +<%--
--%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- ">--%> +<%-- ">--%> +<%-- --%> +<%-- --%> +<%--
--%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%--
할인 정보
장바구니 쿠폰--%> +<%--
--%> +<%-- --%> +<%--
--%> +<%--
마일리지--%> +<%--
--%> +<%--
--%> +<%-- ">--%> +<%-- --%> +<%-- --%> +<%--
--%> +<%-- 사용가능 마일리지 : 점--%> +<%--
--%> +<%--
GC 머니--%> +<%--
--%> +<%--
--%> +<%-- ">--%> +<%-- --%> +<%-- --%> +<%--
--%> +<%-- 사용가능 GC 머니 : ${curUnit}--%> +<%--
--%> +<%--
--%> +<%--
--%> +<%--
--%> +<%--
--%> +<%--
예상 적립혜택
--%> +<%--
    --%> +<%--
  • 구매 확정 시 적립--%> +<%-- --%> +<%--
  • --%> +<%-- --%> +<%-- --%> +<%-- 리뷰 작성시 일반리뷰 점 적립, 사진리뷰 점 적립--%> +<%-- --%> +<%-- --%> +<%-- 한달리뷰 점 적립--%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> +<%-- --%> + +<%-- ( ~ 까지 점 추가 적립)--%> +<%-- --%> +<%--
  • --%> +<%-- --%> +<%--
--%> +<%--
--%> +<%--
--%> + +
+ + + + + + + <%-- GCpay 일때만 보여줌 --%> + +
+
+ +

[EVENT] GC PAY 간편결제 등록 시 500점 쿠폰 증정 (계정당 최초 1회)

+

사용 조건 : 3000${curUnit} 이상 구매 시 사용 가능 (자사몰, 오프라인 매장)
유효 기간 : 발급일 기준 15일 이내 사용 가능

+
+

GC PAY 기존 등록 고객은 "[GC PAY 설정]을 눌러 본인인증 후 좌측상단의 [<]를 클릭"하시면 목록에 보입니다.

+
+
+ +
+

결제 정보

+
+
+
+ +
+ + + + "> + "> + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +
+
+
+ +
+
+ +
+
+ +
+ + +
+ + +
+
+
+
+
+
+ +
+
+
+
+
+ + <%-- 퀵계좌이체 시작 --%> + +
+ + +
+ +
+ <%-- 퀵계좌이체 끝 --%> + + <%-- toss 결제 시작 --%> + +
+ + +
+ +
+ <%-- toss 결제 종료 --%> + + <%-- kcp 결제 시작 --%> + +
+ + +
+ +
+ <%-- kcp 결제 종료 --%> +
+
+
+
+
+ +
+
+
+
결제예정금액
+
    +
  • + 총 주문금액 + 0${curUnit} +
  • +
  • + 배송비 + 0${curUnit} +
  • +
  • + 총 할인금액 + (-)0${curUnit} +
  • +
+
+ 총 결제금액 + 0${curUnit} +
+ <%--광고 수신 동의 여부가 null 일 시 --%> + + + + +
+
+ + +
+ + ');">보기 + +
+
+
+
+
+
+ <%-- +
+ + + +
+ --%> +
+ <%-- +
+
+
+
+
NAVER 네이버 ID로 간편구매 네이버페이
+ + + + + + + +
+ + 네이버페이 구매하기 @@@@@@@@@@@@@@@ + + + + 찜하기 + +
+
+ +
+
+
+ --%> +
+
+
+
+
+
+
+ +<%-- 공통 Footer --%> + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +