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 8f0a3c38..5192a2ed 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 @@ -3821,50 +3821,6 @@ 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 @@ -6186,6 +6142,119 @@ public class BOOrdrService{ 사용자 > 상품 > 구매/결제 > 비회원구매하기 종료 #################################### */ + /* #################################### + 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 시작 + #################################### */ + /** + * 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 구독서비스 결제 화면 정보 조회 + * @param ordrVO + * @return Map + */ + public Map selectSubsvcPurchs(BOOrdrVO ordrVO) { + Map content = new HashMap<>(); + + //구독서비스 조회 + BOSubsvcVO subsvcVO = new BOSubsvcVO(); + subsvcVO.setSopmalCd(ordrVO.getSopmalCd()); + subsvcVO.setSubsvcInnb(ordrVO.getSubsvcInnb()); + + DataMap subsvcOne = subsvcService.selectBOSubsvcDetail(subsvcVO); + + BOPurchsrVO purchsrVO = new BOPurchsrVO(); + + purchsrVO.setSopmalCd(ordrVO.getSopmalCd()); + purchsrVO.setMbrDvCd(ordrVO.getMbrDvCd()); + purchsrVO.setMbrInnb(String.valueOf(ordrVO.getMbrInnb())); + purchsrVO.setMbrId(ordrVO.getMbrId()); + + BOCashVO cashVO = new BOCashVO(); + cashVO.setSopmalCd(ordrVO.getSopmalCd()); + cashVO.setMbrDvCd(ordrVO.getMbrDvCd()); + cashVO.setMbrInnb(String.valueOf(ordrVO.getMbrInnb())); + //구매자조회 + DataMap purchsrMap = purchsService.selectPurchsr(purchsrVO); + + if (!CollectionUtils.isEmpty(purchsrMap)) { + BOMlgVO mlgVo = new BOMlgVO(); + + mlgVo.setMbrDvCd((String) purchsrMap.get("mbrDvCd")); + mlgVo.setMbrInnb(purchsrMap.get("mbrInnb").toString()); + + // 마일리지 잔액 총액 + BigDecimal blceSum = mlgService.selectBOMlgBlceSum(mlgVo); + + // 충전형 마일리지 잔액 총액 + BigDecimal cashBlceSum = mlgService.selectBOCashBlce(cashVO); + + purchsrMap.put("sopmalCd", ordrVO.getSopmalCd()); + purchsrMap.put("dftDlvylc", purchsService.selectDftDlvylc(purchsrVO)); + purchsrMap.put("ableMlgAmt", blceSum.intValue()); + purchsrMap.put("ableCashMlgAmt", cashBlceSum.intValue()); + } + + DataMap paramMap = new DataMap(){{ + put("sopmalCd", ordrVO.getSopmalCd()); + put("setlePltfomTyCd", ordrVO.getSetlePltfomTyCd()); // PC + }}; + + DataMap payInfo = purchsMapper.selectPayInfo(paramMap); + + DataMap shopInfo = purchsMapper.selectOrdrShopInfo(ordrVO); + + content.put("purchsr", purchsrMap); + content.put("mlgAccmlNtcList", purchsMapper.selectMlgAccmlNtcList(purchsrVO)); + content.put("subsvcOne", subsvcOne); + content.put("payInfo", payInfo); + content.put("shopInfo", shopInfo); + + 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); + BigDecimal setleAmt = new BigDecimal(0); + + LinkedHashMap subsvcOne = (LinkedHashMap) param.get("subsvcOne"); + log.debug("subsvcOne : {}", subsvcOne); + + goodsAmt = BigDecimal.valueOf((Integer) subsvcOne.get("selpric")); + setleAmt = BigDecimal.valueOf((Integer) subsvcOne.get("selpric")); + + // ############################################## 결제 예정 금액 적용 ############################################## + setleExpectAmtMap.put("goodsAmt", goodsAmt.intValue()); + setleExpectAmtMap.put("setleAmt", setleAmt.intValue()); + + content.put("setleExpectAmt", setleExpectAmtMap); + content.put("subsvcOne", param.get("subsvcOne")); + + return content; + } + /* #################################### + 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 종료 + #################################### */ + /* #################################### 사용자 > 상품 > 구매/결제 > 개인결제 시작 #################################### */ diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrVO.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrVO.java index 65777108..d26b4033 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrVO.java @@ -151,6 +151,9 @@ public class BOOrdrVO extends AbstractVO { /** 장바구니 고유번호 배열 */ private String[] cartInnbs; + /** 구독서비스 고유번호 */ + private String subsvcInnb; + /** 주문배송 고유번호 */ private String ordrDlvyInnb; 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 0cd7a349..b83b505b 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 @@ -3,7 +3,7 @@ package com.wb.domainserver.domain.sopmal.ordr.controller; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.nimbusds.jose.shaded.gson.Gson; -import com.wb.domainserver.common.msg.GconeMessageSource; +import com.wb.domainserver.common.msg.GconeMessageSource; import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo; import com.wb.domainserver.common.prop.PaginationProperties; import com.wb.domainserver.domain.admin.instcSle.mtng.service.BOMaMtngService; @@ -20,12 +20,13 @@ import com.wb.domainserver.domain.gcone.goods.goods.service.BOGoodsService; 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.service.BOMbrService; import com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO; import com.wb.domainserver.domain.gcone.ordr.dlivy.service.BODlivyService; import com.wb.domainserver.domain.gcone.ordr.npay.service.BONpayConfigService; import com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO; -import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrderCommonService; import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrLogService; import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService; import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOCrmDlvylcVO; @@ -36,36 +37,27 @@ import com.wb.domainserver.domain.gcone.promtn.coupon.service.BOCouponService; import com.wb.domainserver.domain.gcone.setup.dlvygrp.service.BODlvygrpService; import com.wb.domainserver.domain.gcone.setup.nbkk.service.BONbkkService; import com.wb.domainserver.domain.gcone.setup.site.vo.BOSiteVO; -import com.wb.domainserver.domain.sample.vo.PrevewVO; -import com.wb.domainserver.domain.sopmal.goods.vo.GoodsVO; -import com.wb.domainserver.domain.sopmal.ordr.vo.OrdrVO; -import com.wb.domainserver.domain.sopmal.ordr.vo.PayVO; -import com.wb.domainserver.domain.sopmal.ordr.vo.SpbkVO; +import com.wb.domainserver.domain.sopmal.ordr.vo.OrdrVO; import com.wb.domainserver.exception.WnbtRestException; import com.wb.domainserver.exception.code.PurchsValidCode; -import com.wb.domainserver.response.ApiResponse; -import com.wb.domainserver.response.WnbtResponse; -import com.wb.domainserver.response.WnbtResponseBody; -import com.wb.domainserver.response.WnbtWebClientResponseHandler; -import com.wb.domainserver.security.authentication.AnonymousUser; -import com.wb.domainserver.security.authentication.MemberJwtContextHolder; -import com.wb.domainserver.security.authorization.annotation.AuthPolicy; -import com.wb.domainserver.security.authorization.annotation.Policy; -import com.wb.domainserver.util.CookieUtils; -import com.wb.domainserver.util.communicate.RESRC; -import com.wb.domainserver.util.communicate.ReplyFromResrc; -import com.wb.domainserver.util.communicate.SendToResrc; -import com.wb.domainserver.util.cookie.CookieUtil; -import com.wb.domainserver.util.dataaccess.DataMap; -import com.wb.domainserver.util.string.StringUtil; -import com.wb.domainserver.util.util.Util; +import com.wb.domainserver.response.WnbtResponse; +import com.wb.domainserver.response.WnbtResponseBody; +import com.wb.domainserver.response.WnbtWebClientResponseHandler; +import com.wb.domainserver.security.authentication.AnonymousUser; +import com.wb.domainserver.security.authentication.MemberJwtContextHolder; +import com.wb.domainserver.security.authorization.annotation.AuthPolicy; +import com.wb.domainserver.security.authorization.annotation.Policy; +import com.wb.domainserver.util.communicate.SendToResrc; +import com.wb.domainserver.util.cookie.CookieUtil; +import com.wb.domainserver.util.dataaccess.DataMap; +import com.wb.domainserver.util.string.StringUtil; +import com.wb.domainserver.util.util.Util; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.apache.logging.log4j.util.Base64Util; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -74,7 +66,10 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; import java.io.InputStream; import java.io.InputStreamReader; @@ -136,6 +131,8 @@ public class OrdrController { private BOMaMtngService boMaMtngService; @Autowired private BOPurchsService boPurchsService; + @Autowired + private BOSubsvcService subsvcService; /* #################################### 사용자 > 상품 > 구매/결제 > 회원구매하기 시작 @@ -399,6 +396,73 @@ public class OrdrController { // ); } + /* #################################### + 사용자 > 구독상품 > 구매/결제 > 회원구매하기 시작 + #################################### */ + /** + * 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 구독서비스 결제 화면 이동 + * @return SubsvcPurchsC.jsp + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value="/selectSubsvcPurchsForm") + public String selectSubsvcSetleInqire(HttpServletRequest request, ModelMap model, BOOrdrVO ordrVO) throws Exception { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + //결재 플랫폼 구분 코드 + ordrVO.setSetlePltfomTyCd("PC".equals(request.getAttribute("env"))?"01":"02"); + + //약관정보 세팅 + BOStplatVO stplatVO = new BOStplatVO(); + stplatVO.setPageIndex(1); + stplatVO.setPageUnit(paginationProperties.getPageUnit()); + stplatVO.setNmbrPurchsAt("Y"); + stplatVO.setSrchSopmalCd(user.getSopmalCd()); + + DataMap stplat = selectBOStplatListInqire(stplatVO); + + //주문 상품정보 세팅 + if ("01".equals(user.getSysDvCd())) { + ordrVO.setSopmalCd(user.getSopmalCd()); + } + ordrVO.setMbrInnb(user.getUserInnb()); + ordrVO.setMbrId(user.getMbrId()); + ordrVO.setMbrDvCd(user.getMbrDvCd()); + + Map content = service.selectSubsvcPurchs(ordrVO); + + model.addAttribute("data", content); + model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrVO)); + model.addAttribute("deviceType", Util.getDeviceType(request)); + model.addAttribute("stplat", stplat); + + return Util.getDeviceType(request) + "/ordr/SubsvcPurchsC"; + } + + /** + * 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 구독서비스 조회 + * @param param + * @return ResponseEntity + */ + @Policy(AuthPolicy.RESTRICTED) + @RequestMapping(value="/selectOrderSubsvcOne", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectOrderSubsvcOne(@RequestBody HashMap param) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + BOSubsvcVO subsvcVO = new BOSubsvcVO(); + + if ("01".equals(user.getSysDvCd())) { + subsvcVO.setSopmalCd(user.getSopmalCd()); + } + subsvcVO.setSubsvcInnb(String.valueOf(param.get("subsvcInnb"))); + + DataMap content = subsvcService.selectBOSubsvcDetail(subsvcVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); + } + /** * 사용자 > 구독상품 > 구매/결제 > 구독서비스 결제 > 결제 예정금액 조회 * @param param diff --git a/src/main/webapp/WEB-INF/views/sopmal/main/SubscribeR.jsp b/src/main/webapp/WEB-INF/views/sopmal/main/SubscribeR.jsp index e6cc3a8e..80c71ed5 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/main/SubscribeR.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/main/SubscribeR.jsp @@ -77,6 +77,9 @@ }); } + /****************************************************** + * 숫자 자릿점 포메팅 + * ****************************************************/ const fn_format_number = function(number) { return Number(number).toLocaleString(); } @@ -176,7 +179,7 @@
-
+

구독 서비스

diff --git a/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrSubscribeC.jsp b/src/main/webapp/WEB-INF/views/sopmal/ordr/SubsvcPurchsC.jsp similarity index 97% rename from src/main/webapp/WEB-INF/views/sopmal/ordr/MbrSubscribeC.jsp rename to src/main/webapp/WEB-INF/views/sopmal/ordr/SubsvcPurchsC.jsp index 24851cfa..aef40457 100644 --- a/src/main/webapp/WEB-INF/views/sopmal/ordr/MbrSubscribeC.jsp +++ b/src/main/webapp/WEB-INF/views/sopmal/ordr/SubsvcPurchsC.jsp @@ -8,7 +8,7 @@ <%-- - Class Name : MbrSubscribeC.jsp + Class Name : SubsvcPurchsC.jsp Description : 회원 구독상품 구매하기 Modification Information @@ -84,7 +84,7 @@ 'mbrDvCd':mbrDvCd, 'mbrId':mbrId, 'sopmalCd':sopmalCd, - 'goodsList':JSON.parse('${data.goodsListByJson}') + 'subsvcInnb':${data.subsvcOne.subsvcInnb} }; fn_get_goods_list(param, null); @@ -1950,7 +1950,7 @@ $.ajax({ type: 'post', contentType: 'application/json', - url: '', + url: '', data: JSON.stringify(param), // data: JSON.stringify(requestData), dataType: 'json', @@ -1969,9 +1969,9 @@ return false; } - localStorage.setItem('goodsList', JSON.stringify(result.goodsList)); + localStorage.setItem('subsvcOne', JSON.stringify(result)); - fn_set_goods_list(result.goodsList); + fn_set_goods_list(result); fn_set_prsnt_list(result.prsnt); @@ -1993,75 +1993,71 @@ let tr = ''; if (!fn_is_empty(data)) { - for (let i = 0; i < data.length; i++) { - const goods = data[i]; + tr += ''; + tr += ' '; + tr += '
'; + tr += ' '; + tr += '
'; + tr += ' ' + data.subsvcNm + ''; + tr += ' 옵션 ' + data.subsvcGnrNm + ''; - tr += ''; - tr += ' '; - tr += '
'; - tr += ' '; - tr += '
'; - tr += ' ' + goods.goodsNm + ''; - tr += ' 옵션 ' + goods.optn + ''; + // if (!fn_is_empty(goods.inputOptnText)) { + // tr += ' ' + goods.inputOptnText + ''; + // } - if (!fn_is_empty(goods.inputOptnText)) { - tr += ' ' + goods.inputOptnText + ''; - } + tr += '
'; + tr += '
' + // tr += ' '; + // tr += ' '; + // tr += ' '; + // tr += ' '; + // tr += ' '; + // tr += ' '; + // tr += ' '; + // tr += ' '; + // tr += ' '; + // tr += ' '; + // tr += ' '; + // tr += ' '; + tr += ' '; + tr += ' '; + tr += ' ' + 1 + ''; + tr += ' '; + tr += ' '; + tr += ' (-)' + 0 + '' + curUnit + ''; + tr += ' '; + tr += ' '; + tr += ' ' + (data.cnsmrpric).toLocaleString() + '' + curUnit + ''; + tr += ' ' + (data.selpric).toLocaleString() + '' + curUnit + ''; + tr += ' '; + tr += ''; - tr += '
'; - tr += '
' - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ' ' + goods.qy + ''; - tr += ' '; - tr += ' '; - tr += ' (-)' + (goods.dscntAmt).toLocaleString() + '' + curUnit + ''; - tr += ' '; - tr += ' '; - tr += ' ' + (goods.subCnsmrpric).toLocaleString() + '' + curUnit + ''; - tr += ' ' + (goods.dscntApplyAmt).toLocaleString() + '' + curUnit + ''; - tr += ' '; - tr += ''; - - if (!fn_is_empty(goods.goodsCouponList)) { - tr += ''; - tr += ' '; - tr += ' '; - tr += ' '; - tr += ''; - } - } + // if (!fn_is_empty(goods.goodsCouponList)) { + // tr += ''; + // tr += ' '; + // tr += ' '; + // tr += ' '; + // tr += ''; + // } } else { tr += ''; } @@ -2460,7 +2456,7 @@ setle['sopmalCd'] = $('#sopmalCd').val(); setle['dlvylc'] = JSON.parse(localStorage.getItem('dlvylc')); - setle['goodsList'] = JSON.parse(localStorage.getItem('goodsList')); + setle['subsvcOne'] = JSON.parse(localStorage.getItem('subsvcOne')); setle['enuri'] = JSON.parse(localStorage.getItem('enuri')); setle['dlvylcZip'] = localStorage.getItem('dlvylcZip'); setle['dlvylcAreaCd'] = localStorage.getItem('dlvylcAreaCd'); @@ -2471,7 +2467,7 @@ $.ajax({ type: 'post', contentType: 'application/json', - url: '', + url: '', data: JSON.stringify(setle), dataType: 'json', async : false, @@ -3708,7 +3704,7 @@
-
+ <%--

사은품

@@ -3731,7 +3727,7 @@
-
+
--%>

배송지 정보 1