diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/pay/vo/BOPayVO.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/pay/vo/BOPayVO.java index 5792a0da..9db9b8d7 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/pay/vo/BOPayVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/pay/vo/BOPayVO.java @@ -300,6 +300,8 @@ public class BOPayVO extends AbstractVO { private String ipAdres; /** 세션 ID */ private String sessionId; + /** 결제정보 - 세션ID */ + private String sesionId; /** 세션 gcpay token */ diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/mpage/ordr/controller/MyOrdrController.java b/src/main/java/com/wb/domainserver/domain/sopmal/mpage/ordr/controller/MyOrdrController.java index 53023ed2..37d580f3 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/mpage/ordr/controller/MyOrdrController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/mpage/ordr/controller/MyOrdrController.java @@ -2,20 +2,17 @@ package com.wb.domainserver.domain.sopmal.mpage.ordr.controller; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -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.store.sopmal.service.BOMaSopmalService; import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService; import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO; -import com.wb.domainserver.domain.gcone.common.service.BOCommonService; import com.wb.domainserver.domain.gcone.goods.goods.service.BOGoodsService; import com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO; import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderLogVO; 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.mbr.mbr.vo.BOWishVO; -import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService; import com.wb.domainserver.domain.gcone.ordr.dlivy.service.BODlivyService; import com.wb.domainserver.domain.gcone.ordr.dlivy.vo.BODlivyUpdtVO; import com.wb.domainserver.domain.gcone.ordr.dlivy.vo.BODlivyVO; @@ -30,43 +27,39 @@ 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.vo.BOSelngprufVO; -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.gradbnef.service.BOGradbnefService; import com.wb.domainserver.domain.gcone.setup.nbkk.service.BONbkkService; import com.wb.domainserver.domain.gcone.setup.nbkk.vo.BOSetupNbkkVO; -import com.wb.domainserver.domain.gcone.setup.ordrmngr.service.BOOrdrMngrService; import com.wb.domainserver.domain.gcone.setup.site.service.BOSiteService; import com.wb.domainserver.domain.gcone.setup.site.vo.BOSiteVO; -import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.*; +import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrDlvyVO; +import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrShippingVO; +import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyRefundVO; import com.wb.domainserver.exception.WnbtRestException; -import com.wb.domainserver.response.ApiResponse; -import com.wb.domainserver.response.WnbtResponse; +import com.wb.domainserver.response.WnbtResponse; import com.wb.domainserver.response.WnbtResponseBody; -import com.wb.domainserver.response.WnbtWebClientResponseHandler; +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.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.security.authorization.annotation.AuthPolicy; +import com.wb.domainserver.security.authorization.annotation.Policy; +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.util.Util; +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.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -93,30 +86,16 @@ public class MyOrdrController { @Autowired private BOMbrService service; @Autowired - private BOGradbnefService mbrGradService; - @Autowired private BOMaComncdService bOMaComncdService; @Autowired - private BOMaSopmalService maSopmalService; - @Autowired - private BOCommonService boCommonService; - @Autowired private PaginationProperties paginationProperties; @Autowired private BOGoodsService boGoodsService; @Autowired - private BOCommonService commonService; - @Autowired - private BOCouponService couponService; - @Autowired - private BOMssageService boMssageService; - @Autowired private BOSiteService boSiteService; @Autowired private BOOrdrService boOrdrService; @Autowired - private BOOrdrMngrService boOrdrMngrService; - @Autowired private BODlivyService dlivyService; @Autowired private BONbkkService nbkkService; diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/nmbr/controller/MyOrdrNmbrController.java b/src/main/java/com/wb/domainserver/domain/sopmal/nmbr/controller/MyOrdrNmbrController.java index 9e7e4a52..5fba481a 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/nmbr/controller/MyOrdrNmbrController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/nmbr/controller/MyOrdrNmbrController.java @@ -1,28 +1,51 @@ package com.wb.domainserver.domain.sopmal.nmbr.controller; import com.fasterxml.jackson.core.JsonProcessingException; -import com.wb.domainserver.common.msg.GconeMessageSource; -import com.wb.domainserver.domain.sopmal.nmbr.vo.MyDlivyVO; -import com.wb.domainserver.domain.sopmal.nmbr.vo.MyOrdrDlvyVO; -import com.wb.domainserver.domain.sopmal.nmbr.vo.MyOrdrVO; -import com.wb.domainserver.response.WnbtResponse; -import com.wb.domainserver.response.WnbtWebClientResponseHandler; -import com.wb.domainserver.security.authorization.annotation.AuthPolicy; -import com.wb.domainserver.security.authorization.annotation.Policy; -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.util.Util; +import com.wb.domainserver.common.msg.GconeMessageSource; +import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService; +import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO; +import com.wb.domainserver.domain.gcone.common.service.BOCommonService; +import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderLogVO; +import com.wb.domainserver.domain.gcone.ordr.dlivy.service.BODlivyService; +import com.wb.domainserver.domain.gcone.ordr.dlivy.vo.BODlivyUpdtVO; +import com.wb.domainserver.domain.gcone.ordr.dlivy.vo.BODlivyVO; +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.BOOrdrShippingVO; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO; +import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO; +import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.service.BORtngudrefndService; +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.vo.BOSelngprufVO; +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.nbkk.vo.BOSetupNbkkVO; +import com.wb.domainserver.exception.WnbtRestException; +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.dataaccess.DataMap; +import com.wb.domainserver.util.util.Util; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import java.math.BigInteger; import java.util.HashMap; +import java.util.List; +import java.util.Map; @Controller @RequestMapping("/sopmal/nmbr/ordr") @@ -38,19 +61,75 @@ public class MyOrdrNmbrController { @Autowired private GconeMessageSource gconeMessageSource; + @Autowired + private BOOrdrService service; + @Autowired + private BOMaComncdService bOMaComncdService; + @Autowired + private BONbkkService nbkkService; + @Autowired + private BOCommonService commonService; + @Autowired + private BODlvygrpService dlvyGroupService; + @Autowired + private BODlivyService dlivyService; + @Autowired + private BOSelngprufService boSelngprufService; + @Autowired + private BORtngudrefndService boRtngudrefndService; + + /** * 비회원 주문 상세 조회 > 주문 취소 상태 수정 * @param ordrDlvyVO * @return ResponseEntity - * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateCanclOrdr") - public ResponseEntity updateCanclOrdr(MyOrdrDlvyVO ordrDlvyVO) throws JsonProcessingException { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOCanclOrdr", ordrDlvyVO), - ReplyFromResrc::getReply + @RequestMapping(value="/updateCanclOrdr", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCanclOrdr(BOOrdrDlvyVO ordrDlvyVO) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + BOPayVO payVO = new BOPayVO(); + //주문 취소 상태 수정 +// Map message = service.updateCanclOrdr(ordrDlvyVO); + Map message = new HashMap<>(); {{ + message.put("status", "0"); + message.put("message", ""); + }}; + + try { + BOOrdrVO ordrVO = new BOOrdrVO(); + String[] ordrInnbs = {ordrDlvyVO.getOrdrInnb()}; + ordrVO.setSopmalCd(ordrDlvyVO.getSopmalCd()); // 쇼핑몰코드 + ordrVO.setOrdrInnbs(ordrInnbs); // 주문고유번호 + ordrVO.setOrdrSttusCd("95"); // 상태코드 + ordrVO.setMbrDvCd(user.getMbrDvCd());; + ordrVO.setOrdrrNm(user.getMbrNm());; + ordrVO.setCurrOrdrSttusCd(ordrDlvyVO.getCurrOrdrSttusCd()); + service.updateOrdrSttusCd(ordrVO); + } catch (Exception e) { + message.put("status", "1"); + message.put("message", "주문 취소를 실패하였습니다"); + }; + + // 회원 사이트정보 갱신 + try { + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrInnb(String.valueOf(user.getUserInnb())); + payVO.setMbrDvCd(user.getMbrDvCd()); + service.updateMbrSiteUpdtOrdrRefund(payVO); + } catch (Exception e) { + log.error("회원 사이트정보 갱신 실패!"); + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOCanclOrdr", ordrDlvyVO), +// ReplyFromResrc::getReply +// ); } /** @@ -60,27 +139,81 @@ public class MyOrdrNmbrController { * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updatePurchsDcsnByItem") - public ResponseEntity updatePurchsDcsnByItem(MyOrdrVO ordrVO) throws JsonProcessingException { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updatePurchsDcsnByItem", ordrVO), - ReplyFromResrc::getReply + @RequestMapping(value="/updatePurchsDcsnByItem", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updatePurchsDcsnByItem(BOOrdrVO ordrVO) throws JsonProcessingException { + Map content = new HashMap<>() {{ + put("status", "0"); + put("message", "구매확정을 완료 하였습니다."); + }}; + + BODlivyUpdtVO boDlivyVO = new BODlivyUpdtVO(); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + boDlivyVO.setSopmalCd(user.getSopmalCd()); + } + boDlivyVO.setRegusr(user.getUserInnb()); // 등록자 + boDlivyVO.setUpdusr(user.getUserInnb()); // 수정자 + boDlivyVO.setOpetrNm(user.getMbrNm()); // 처리자 명 + boDlivyVO.setMbrDvCd(user.getMbrDvCd()); // 회원 구분 + boDlivyVO.setMbrInnb(String.valueOf(user.getUserInnb())); // 회원 고유번호 + + try { + boDlivyVO.setOrdrGoodsOptnInnb(ordrVO.getOrdrGoodsOptnInnb()); + boDlivyVO.setOptnTy(ordrVO.getOptnTy()); + boDlivyVO.setOrdrInnb(ordrVO.getOrdrInnb()); + + dlivyService.updateBOPurchsDcsnSttusUpdt(boDlivyVO); + } catch (WnbtRestException wre) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception 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/updatePurchsDcsnByItem", ordrVO), +// ReplyFromResrc::getReply +// ); } /** * 비회원 주문 상세 조회 > 배송지 조회 - * @param param + * @param vo * @return ResponseEntity * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectOrdrDlvylc") - public ResponseEntity selectOrdrDlvylc(MyOrdrDlvyVO ordrDlvyVO){ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOOrdrDlvylc", ordrDlvyVO), - ReplyFromResrc::getReply + @RequestMapping(value="/selectOrdrDlvylc", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectOrdrDlvylc(BOOrdrShippingVO vo){ + Map content = new HashMap<>(); + String secretKey = null; + secretKey = commonService.selectSecretkey(); + vo.setSecretKey(secretKey); + content.put("dlvyInfo", service.selectBOOrdrDlvylc(vo)); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOOrdrDlvylc", ordrDlvyVO), +// ReplyFromResrc::getReply +// ); } /** @@ -90,17 +223,51 @@ public class MyOrdrNmbrController { * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateDlvylc") - public ResponseEntity updateDlvylc(MyOrdrDlvyVO ordrDlvyVO){ - if("01".equals(ordrDlvyVO.getDlvylcAdresDvCd())){//주소구분에 따라 지번,도로명주소 set - ordrDlvyVO.setDlvylcRnmAdres(ordrDlvyVO.getAdres()); - }else{ - ordrDlvyVO.setDlvylcLnbAdres(ordrDlvyVO.getAdres()); - } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylc", ordrDlvyVO), - ReplyFromResrc::getReply + @RequestMapping(value="/updateDlvylc", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateDlvylc(DataMap param){ + if("01".equals(param.get("dlvylcAdresDvCd"))){//주소구분에 따라 지번,도로명주소 set + param.put("dlvylcRnmAdres", param.get("adres")); + }else{ + param.put("dlvylcLnbAdres", param.get("adres")); + } + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + param.put("mbrInnb", user.getUserInnb()); + param.put("mbrDvCd", user.getMbrDvCd()); + if ("01".equals(user.getSysDvCd())) { + param.put("sopmalCd", user.getSopmalCd()); + } + Map message = service.updateDlvylc(param); + + // 배송지 정보 변경 주문 로그 + BOOrderLogVO logVO = new BOOrderLogVO(); + logVO.setOrdrInnb(BigInteger.valueOf(Long.valueOf((String) param.get("ordrInnb")))); + logVO.setSopmalCd((String) param.get("sopmalCd")); + if ("0".equals(message.get("status"))) { + logVO.setLogSj("배송지 정보 변경"); + logVO.setLogDtlCn("배송지 정보 변경을 처리하였습니다."); + } else { + logVO.setLogSj("배송지 정보 변경 실패"); + logVO.setLogDtlCn("배송지 정보 변경을 실패하였습니다."); + } + logVO.setLogDvCd("02"); + if ("01".equals(user.getSysDvCd())) { + logVO.setDvCd("01"); + } else { + logVO.setDvCd("02"); + } + logVO.setOpetrNm(user.getMbrNm()); + service.updateDlvylcInfoLogRegist(logVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylc", ordrDlvyVO), +// ReplyFromResrc::getReply +// ); } /** @@ -109,12 +276,14 @@ public class MyOrdrNmbrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectSetleCanclPopupForm") - public String selectSetleCanclPopupForm(HttpServletRequest request,ModelMap model, MyOrdrDlvyVO ordrDlvyVO) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO), - model, - "data" - ); + public String selectSetleCanclPopupForm(HttpServletRequest request,ModelMap model, BOOrdrVO ordrVO) { + Map content = selectBOSetleCanclRefndRegist(ordrVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO), +// model, +// "data" +// ); return Util.getDeviceType(request) + "/mpage/ordr/OrdrSetleCanclPopup"; } @@ -123,15 +292,47 @@ public class MyOrdrNmbrController { * 비회원 주문 상세 조회 > 결제취소 등록 * @param param * @return ResponseEntity - * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertSetleCanclRegist") - public ResponseEntity registSetleCancl(@RequestBody HashMap param) throws JsonProcessingException { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSetleCanclRegist", param), - ReplyFromResrc::getReply + @RequestMapping(value="/insertSetleCanclRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity registSetleCancl(@RequestBody DataMap param) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + param.put("sopmalCd", user.getSopmalCd()); + param.put("mbrInnb", user.getUserInnb()); + } else { + param.put("mngrInnb", user.getUserInnb()); + } + param.put("updusr", user.getUserInnb()); + param.put("mbrDvCd", user.getMbrDvCd()); + param.put("userName", user.getMbrNm()); + param.put("mbrNm", user.getMbrNm()); + + + log.debug("반품신청 테스트 param 확인 : {}", param); + Map message = service.insertSetleCanclRegist(param); + + // 회원 사이트정보 갱신 ============================================================== + try { + BOPayVO payVO = new BOPayVO(); + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrInnb(String.valueOf(user.getUserInnb())); + payVO.setMbrDvCd(user.getMbrDvCd()); + service.updateMbrSiteUpdtOrdrRefund(payVO); + } catch (Exception e) { + /*주문은 성공처리를 위해 throw하지 않음*/ + log.error("회원 사이트정보 갱신 실패!"); + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSetleCanclRegist", param), +// ReplyFromResrc::getReply +// ); } /** @@ -140,12 +341,22 @@ public class MyOrdrNmbrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectDlvyInqire") - public String selectDlvyInqire(MyDlivyVO dlivyVO, ModelMap model, HttpServletRequest request){ - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/dlivy/selectBOOrdrDlvyDtlsInqire", dlivyVO), - model, - "resultMap" - ); + public String selectDlvyInqire(BODlivyVO boDlivyVO, ModelMap model, HttpServletRequest request){ + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + boDlivyVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드 + } + + Map content = new HashMap<>(); + content = dlivyService.selectBOOrdrDlvyDtlsInqire(boDlivyVO); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/dlivy/selectBOOrdrDlvyDtlsInqire", dlivyVO), +// model, +// "resultMap" +// ); return Util.getDeviceType(request) + "/mpage/ordr/DlvyInqireR"; } @@ -157,12 +368,14 @@ public class MyOrdrNmbrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectRetrunRegistPopupForm") - public String selectRetrunRegistPopupForm(HttpServletRequest request,ModelMap model, MyOrdrDlvyVO ordrDlvyVO) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO), - model, - "data" - ); + public String selectRetrunRegistPopupForm(HttpServletRequest request,ModelMap model, BOOrdrVO ordrVO) { + Map content = selectBOSetleCanclRefndRegist(ordrVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO), +// model, +// "data" +// ); return Util.getDeviceType(request) + "/mpage/ordr/RefundRegistPopupC"; } @@ -172,23 +385,127 @@ public class MyOrdrNmbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateCashReceipt") - public ResponseEntity updateCashReceipt (MyOrdrVO vo){ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/selngpruf/updateCashReceipt", vo), - ReplyFromResrc::getReply + @RequestMapping(value="/updateCashReceipt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCashReceipt (BOSelngprufVO vo){ + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + Map message = boSelngprufService.updateCashReceipt(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/selngpruf/updateCashReceipt", vo), +// ReplyFromResrc::getReply +// ); } /** * 비회원 반품/환불 상세 조회 > 반품 취소 환불 정보 수정 * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateRtngudCanclRefndUpdt") - public ResponseEntity updateRtngudCanclRefndUpdt( com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyRefundVO refundVO, ModelMap model){ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/updateBOOrderReUpdt", refundVO), - ReplyFromResrc::getReply + @RequestMapping(value="/updateRtngudCanclRefndUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateRtngudCanclRefndUpdt(BORtngudrefndVO boRtngudrefndVO, ModelMap model){ + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + boRtngudrefndVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + } + boRtngudrefndVO.setRegusr(user.getUserInnb()); // 등록자 + boRtngudrefndVO.setUpdusr(user.getUserInnb()); // 수정자 + boRtngudrefndVO.setMbrDvCd(user.getMbrDvCd()); // 회원 구문 코드 + boRtngudrefndVO.setMbrNm(user.getMbrNm()); // 회원 명 + log.debug("넘겨받은 파라미터 확인 : {}", boRtngudrefndVO); + // 반품 환불 수정 + Map message = new HashMap<>(); + + message = boRtngudrefndService.updateBOOrderReUpdt(boRtngudrefndVO); + log.debug("환불 저장 컨트롤러 message : {}", message); + // 10. 회원 사이트정보 갱신 ============================================================== + try { + BOPayVO payVO = new BOPayVO(); + if ("01".equals(user.getSysDvCd())) { + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrInnb(String.valueOf(user.getUserInnb())); + payVO.setMbrDvCd(user.getMbrDvCd()); + }else{ + payVO.setSopmalCd(String.valueOf(boRtngudrefndVO.getSopmalCd())); + payVO.setMbrInnb(String.valueOf(boRtngudrefndVO.getSiteMbrInnb())); + payVO.setMbrDvCd(String.valueOf(boRtngudrefndVO.getSiteMbrDvCd())); + } + service.updateMbrSiteUpdtOrdrRefund(payVO); + } catch (Exception e) { + log.error("회원 사이트정보 갱신 실패!"); + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/updateBOOrderReUpdt", refundVO), +// ReplyFromResrc::getReply +// ); + } + + + /** + * bo로직 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문상세 조회 > 결제취소/환불신청 정보 조회 + */ + public Map selectBOSetleCanclRefndRegist(BOOrdrVO ordrVO) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrVO.setSopmalCd(user.getSopmalCd()); + ordrVO.setSysDvCd("S"); // 쇼핑몰 + } else { + ordrVO.setSysDvCd("A"); // 관리자 + } + + Map content = service.selectBOSetleCanclRefndRegist(ordrVO); + content.put("mbrInnb", user.getUserInnb()); + + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("KCP_BANK_CD"); // KCP은행코드 + List kcpBankCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + bOMaComncdVO.setGroupCd("TOSS_BANK_CD"); // TOSS은행코드 + List toosBankCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + DataMap order = (DataMap) content.get("order"); // TODO : ( 2024-08-22 ) 통장 코드 환불 선택해서 입력 Npay , 에스크로, 페이코 고려되어있지않음 확인시 수정 필요 + log.debug("order : {} ", order); + if (order != null && ("gcpay".equals(order.get("pgCmpnyNm")) || "toss".equals(order.get("pgCmpnyNm")) || "tosspay".equals(order.get("pgCmpnyNm")))) { + content.put("bankCdList", toosBankCdList); + } else if (order != null && ("kcp".equals(order.get("pgCmpnyNm")))) { + content.put("bankCdList", kcpBankCdList); + } else { + content.put("bankCdList", toosBankCdList); + } + + + // 무통장 계좌 정보 + BOSetupNbkkVO boShopSetupVO = new BOSetupNbkkVO(); + boShopSetupVO.setSopmalCd(ordrVO.getSopmalCd()); + boShopSetupVO.setUseAt("Y"); + Map setupJson = nbkkService.selectBOSopmalSetupList(boShopSetupVO); + List sopmalSetupVO = (List) setupJson.get("refundAcntSetup"); + log.debug("반품 배송비 계좌 json : {}", sopmalSetupVO); + + content.put("bankAccount", sopmalSetupVO); + + DataMap returnDataMap = new DataMap(); + returnDataMap = dlvyGroupService.selectBOReturnAddressInqire(ordrVO); + + String returnAddress = ""; + returnAddress = returnDataMap.get("rtnlcAdres") + " " + returnDataMap.get("rtnlcDtlAdres"); + content.put("returnAddress", returnAddress); + log.debug("반송지 : {}", content.get("returnAddress")); + + return content; } } diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/npay/controller/NPayController.java b/src/main/java/com/wb/domainserver/domain/sopmal/npay/controller/NPayController.java index dfc68d40..42edea02 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/npay/controller/NPayController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/npay/controller/NPayController.java @@ -1,11 +1,27 @@ package com.wb.domainserver.domain.sopmal.npay.controller; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Map; - -import com.wb.domainserver.util.util.Util; +import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService; +import com.wb.domainserver.domain.gcone.goods.goods.mapper.BOGoodsMapper; +import com.wb.domainserver.domain.gcone.goods.goods.service.BOGoodsService; +import com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO; +import com.wb.domainserver.domain.gcone.ordr.npay.service.*; +import com.wb.domainserver.domain.gcone.ordr.npay.vo.BOIfLogVO; +import com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO; +import com.wb.domainserver.domain.gcone.ordr.npay.vo.ItemStack; +import com.wb.domainserver.domain.gcone.ordr.npay.vo.NpayZzim; +import com.wb.domainserver.domain.sopmal.ordr.vo.SpbkVO; +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.dataaccess.DataMap; +import com.wb.domainserver.util.util.Util; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; @@ -18,20 +34,10 @@ import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.reactive.function.client.WebClient; -import com.wb.domainserver.domain.sopmal.ordr.vo.SpbkVO; -import com.wb.domainserver.response.WnbtResponse; -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.RESRC; -import com.wb.domainserver.util.communicate.ReplyFromResrc; -import com.wb.domainserver.util.communicate.SendToResrc; - -import jakarta.servlet.http.HttpServletRequest; -import lombok.extern.slf4j.Slf4j; +import java.text.SimpleDateFormat; +import java.util.*; /** * 샘플 Controller @@ -72,12 +78,45 @@ public class NPayController { @Value("${naverpay.order.real-mobile-Url}") String orderMobileRealUrl; + @Value("${naverpay.zzim.test-url}") + String zzimTestUrl; + + @Value("${naverpay.zzim.test-url}") + String zzimRealUrl; + + @Value("${host.img}") + String imgUrl; + + @Autowired + private BoOrderXmlService orderXmlservice; + + @Autowired + private BoProductXmlService productXmlService; + + @Autowired + private BOGoodsService goodsService; + + @Autowired + private BoIfLogService boIfLogService; + + @Autowired + private BONpayConfigService bONpayConfigService; + + @Autowired + private BOGoodsMapper mapper; + + @Autowired + private BoApiService boApiService; + + @Autowired + BOMaSopmalService bOMaSopmalService; + /** * 구매정보 연동(네이버페이 버튼 클릭시 동작) * 주문정보등록 -> 네이버페이 주문서페이지 redirect * * @param model - * @param benefitVO + * @param map * @return String */ @Policy(AuthPolicy.PUBLIC) @@ -117,10 +156,70 @@ public class NPayController { map.put("products", products); log.debug("sending map info > " + map.toString()); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/send",map) - ); + + Map resultMap = new HashMap<>(); + String orderXml = ""; + String status = ""; + String response = ""; + + try { + log.debug("bo Controller receive map info > " + map.toString()); + + resultMap.put("status", "success!!"); + + orderXml = orderXmlservice.createOrderXml(map, request); + log.debug("작성된 ORDER XML result > " + orderXml); + + //GC_NPAY_CONFIG에서 npay정보 가져오기 + BONpayConfigVO param = new BONpayConfigVO(); + param.setSopmalCd(map.get("sopmalCd").toString()); + DataMap detail = bONpayConfigService.loadNpayConfigDetail(param); + BONpayConfigVO rvo = (BONpayConfigVO) detail.get("npayConfigDetail"); + + // webClient 기본 설정 + String orderUrl; + if("TEST".equals(rvo.getEnvrn())){ + orderUrl = orderTestUrl; + }else{ + orderUrl = orderRealUrl; + } + WebClient webClient = WebClient.builder().baseUrl(orderUrl).build(); + + // naver pay api 요청 + response = + webClient.post().uri( + uriBuilder -> uriBuilder.path("o/customer/api/order/v20/register").build()) + .contentType(MediaType.APPLICATION_XML) + //.accept(MediaType.APPLICATION_XML) + .bodyValue(orderXml) + .retrieve().bodyToMono(String.class).block(); + + status = "SUCCESS"; + + System.out.println("result > " + response); + resultMap.put("status", "success!!"); + resultMap.put("result", response); + }catch(Exception e) { + System.out.println("에러 e.getMessage() 출력 > " + e.getMessage()); + response = e.getMessage(); + status = "FAIL"; + }finally { + + log.debug("map.toString() > " + map.toString()); + + // logging 수행 + BOIfLogVO vo = new BOIfLogVO(); + vo.setSopmalCd(map.get("sopmalCd").toString()); + vo.setIfKndCd("order"); + vo.setSendParam(orderXml); + vo.setReceiveParam(response); + vo.setIfSttusCd(status); + boIfLogService.insertBoIfLog(vo); + } + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/send",map) +// ); //agent 정보 String userAgent = request.getHeader("User-Agent"); @@ -135,11 +234,17 @@ public class NPayController { log.debug("currentUrl.toString() > " + currentUrl.toString()); //GC_NPAY_CONFIG에서 npay정보 가져오기 - Map param = new HashMap(); - param.put("sopmalCd", user.getSopmalCd()); - Map naverKey = responseHandler.handleResponseAsMap( - sendToResrc.ofGetWithParam(RESRC.GCONEBO, "/gcone/ordr/npay/config/loadNpayConfigDetail", param) - ); + BONpayConfigVO vo = new BONpayConfigVO(); + vo.setSopmalCd(user.getSopmalCd()); +// Map param = new HashMap(); +// param.put("sopmalCd", user.getSopmalCd()); + DataMap naverKey = new DataMap(); + naverKey = bONpayConfigService.loadNpayConfigDetail(vo); + naverKey.put("naverPayYn", bOMaSopmalService.selectBONpayUseAtByShop(vo.getSopmalCd())); +// Map naverKey = responseHandler.handleResponseAsMap( +// sendToResrc.ofGetWithParam(RESRC.GCONEBO, "/gcone/ordr/npay/config/loadNpayConfigDetail", param) +// ); + Map naverMap = (Map) naverKey.get("npayConfigDetail"); // 환경정보 @@ -180,12 +285,94 @@ public class NPayController { } @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/zzim") + @RequestMapping(value="/zzim", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity zzim(HttpServletRequest request, ModelMap model, @RequestParam Map map) throws Exception { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/zzim", map), - ReplyFromResrc::getReply + //주문상품 내역으로 items 데이터를 생성한다. ==> DB에서 읽어옴 + ItemStack items[] = new ItemStack[1]; + + // 상품 변수 세팅 처리 + String goodsCd = map.get("goodsInnb").toString(); + String sopmalCd = map.get("sopmalCd").toString(); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + BOGoodsVO vo = new BOGoodsVO(); + vo.setGoodsInnb(goodsCd); // request 변수 세팅해야함. + vo.setSopmalCd(sopmalCd); // request 변수 세팅해야함. + DataMap goodsInfo = goodsService.selectBOGoodsDtl(vo); + + //상품 일반옵션 getting + List optnList = mapper.selectBOGoodsOptionList(vo); + DataMap data = optnList.get(0); + + // 이미지 정보 getting 이거 이렇게 하는게 맞는것인지 확인 필요 + vo.setImgKnd("03"); + vo.setCutNb("1"); + List imgList = mapper.selectBOGoodsImg(vo); + log.debug("imgList.size() > " + imgList.size()); + DataMap imgInfo = imgList.get(0); + + // 상품 ID , 상품명 , 가격 , image url, 상품 상세 정보 url + items[0] = new ItemStack( + goodsInfo.get("goodsInnb").toString() + , goodsInfo.get("goodsNm").toString() + , Integer.parseInt(data.get("slepric").toString()) + , imgUrl + imgInfo.get("img").toString() + , imgUrl + imgInfo.get("img").toString() + , request.getHeader("X-Original-Host") + "/sopmal/goods/selectGoodsDtl?goodsInnb="+goodsInfo.get("goodsInnb").toString() ); + + //GC_NPAY_CONFIG에서 npay정보 가져오기 + BONpayConfigVO param = new BONpayConfigVO(); + param.setSopmalCd(sopmalCd); + DataMap detail = bONpayConfigService.loadNpayConfigDetail(param); + BONpayConfigVO rvo = (BONpayConfigVO) detail.get("npayConfigDetail"); + + String shopId = rvo.getShopId(); + String certificationKey = rvo.getCertificationKey(); + + String zzimUrl; + // 테스트 https://test-pay.naver.com/customer/api/wishlist.nhn + // 서비스 https://pay.naver.com/customer/api/wishlist.nhn + if("TEST".equals(rvo.getEnvrn())){ + zzimUrl = zzimTestUrl; + }else{ + zzimUrl = zzimRealUrl; + } + + NpayZzim npayZzim = new NpayZzim(zzimUrl+"/customer/api/wishlist.nhn"); + //ItemStack[] items + String[] prodSeqs = npayZzim.sendZzim(shopId, certificationKey, items); + //여기서 얻은prodSeqs로 zzim popup을 띄운다. + System.out.println("prodSeqs value > " + Arrays.toString(prodSeqs)); + System.out.println("prodSeqs.toString() > " + prodSeqs.toString()); + + String key = Arrays.toString(prodSeqs).replace("[", "").replace("]", ""); + System.out.println("key value > " + key); + + BOIfLogVO object = new BOIfLogVO(); + object.setSopmalCd(sopmalCd); + object.setIfKndCd("zzim"); + object.setSendParam(map.toString()); + object.setReceiveParam(key ); + object.setIfSttusCd("SUCCESS"); + boIfLogService.insertBoIfLog(object); + DataMap message = new DataMap(); + log.debug("BO zzim 호출 종료 확인 !!"); + message.put("message", "success"); + message.put("prodSeqs", key); + message.put("shopId", shopId); + message.put("certificationKey", certificationKey); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/zzim", map), +// ReplyFromResrc::getReply +// ); } /* @@ -200,11 +387,21 @@ public class NPayController { String[] orderArr = map.get("orderList").toString().split(","); map.put("orderList", orderArr); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetProductOrderInfoListRev",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + map.put("sopmalCd", user.getSopmalCd()); + Map result = boApiService.loadGetProductOrderInfoListRev(map); + log.debug("result > " + result.toString()); + + Map response = (Map) result.get("response"); + response.get("ProductOrderInfoList"); // 조회 성공한 상품 주문 정보 목록 + response.get("FailedProductOrderIDList>"); // 조회 실패한 상품 주문 정보 목록 + log.debug("처리 결과 > " + response.get("responseType").toString()); + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetProductOrderInfoListRev",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /loadGetProductOrderInfoListRev E N D"); } @@ -235,14 +432,52 @@ public class NPayController { @RequestMapping(value = "/loadGetChangedProductOrderList") public void loadGetChangedProductOrderList(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /loadGetChangedProductOrderList START"); - - //log.debug("map.get(\"LastChangedStatusCode\").toString() > " + map.get("LastChangedStatusCode").toString()); - //log.debug("map.get(\"InquiryExtraData\").toString() > " + map.get("InquiryExtraData").toString()); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetChangedProductOrderList",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + /* example start */ + SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-DD 'T' hh:mm:ss"); + Calendar fromDate = Calendar.getInstance(); // 조회 시작 일자 + log.debug("fromDate > " + dateFormat.format(fromDate.getTime())); + + Calendar endDate = Calendar.getInstance(); // 조회 종료 일자 + endDate.set(Calendar.HOUR_OF_DAY, 23); + endDate.set(Calendar.MINUTE, 59); + endDate.set(Calendar.SECOND, 59); + log.debug("endDate > " + dateFormat.format(endDate.getTime())); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + BONpayConfigVO param = new BONpayConfigVO(); + param.setSopmalCd(user.getSopmalCd()); + DataMap detail = bONpayConfigService.loadNpayConfigDetail(param); + BONpayConfigVO rvo = (BONpayConfigVO) detail.get("npayConfigDetail"); + + map.put("InquiryTimeFrom", map.get("InquiryTimeFrom").toString()); + if(map.get("InquiryExtraData") != null) { + map.put("InquiryExtraData", map.get("InquiryExtraData").toString()); + }else { + map.put("InquiryExtraData", ""); + } + + if(map.get("LastChangedStatusCode") != null) { + map.put("LastChangedStatusCode", map.get("LastChangedStatusCode").toString()); + }else { + map.put("LastChangedStatusCode", ""); + } + + map.put("MallID", rvo.getShopId()); + map.put("sopmalCd", user.getSopmalCd()); + /* example end */ + + Map result = boApiService.loadGetChangedProductOrderList(map); + + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + response.get("changedProductOrderInfoList"); // 변경 상품 주문 내역 + log.debug("처리 결과 > " + response.get("responseType").toString()); + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetChangedProductOrderList",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /loadGetChangedProductOrderList E N D"); } @@ -254,14 +489,56 @@ public class NPayController { @RequestMapping(value = "/loadGetChangedProductOrderListRev") public void loadGetChangedProductOrderListRev(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /loadGetChangedProductOrderListRev START"); - - //log.debug("map.get(\"LastChangedStatusCode\").toString() > " + map.get("LastChangedStatusCode").toString()); - //log.debug("map.get(\"InquiryExtraData\").toString() > " + map.get("InquiryExtraData").toString()); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetChangedProductOrderListRev",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + /* example start */ + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:sss"); + Calendar fromDate = Calendar.getInstance(); // 조회 시작 일자 + + // 조회조건은 무조건 하루만 됨 + fromDate.set(Calendar.HOUR_OF_DAY, 00); + fromDate.set(Calendar.MINUTE, 00); + fromDate.set(Calendar.SECOND, 00); + log.debug("fromDate > " + dateFormat.format(fromDate.getTime())); + + Calendar endDate = Calendar.getInstance(); // 조회 종료 일자 + endDate.set(Calendar.HOUR_OF_DAY, 23); + endDate.set(Calendar.MINUTE, 59); + endDate.set(Calendar.SECOND, 59); + log.debug("endDate > " + dateFormat.format(endDate.getTime())); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + BONpayConfigVO param = new BONpayConfigVO(); + param.setSopmalCd(user.getSopmalCd()); + DataMap detail = bONpayConfigService.loadNpayConfigDetail(param); + BONpayConfigVO rvo = (BONpayConfigVO) detail.get("npayConfigDetail"); + + map.put("InquiryTimeFrom", map.get("InquiryTimeFrom").toString()); + //map.put("InquiryTimeTo", endDate); + if(map.get("InquiryExtraData") != null) { + map.put("InquiryExtraData", map.get("InquiryExtraData").toString()); + }else { + map.put("InquiryExtraData", ""); + } + //map.put("LastChangedStatusCode", map.get("LastChangedStatusCode").toString()); + if (Optional.ofNullable(map.get("LastChangedStatusCode")).isEmpty()) { + map.put("LastChangedStatusCode", ""); + } else { + map.put("LastChangedStatusCode", map.get("LastChangedStatusCode").toString()); + } + map.put("MallID", rvo.getShopId()); + map.put("sopmalCd", user.getSopmalCd()); + /* example end */ + + Map result = boApiService.loadGetChangedProductOrderListRev(map); + + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + response.get("changedProductOrderInfoList"); // 변경 상품 주문 내역 + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetChangedProductOrderListRev",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /loadGetChangedProductOrderListRev E N D"); } @@ -274,11 +551,19 @@ public class NPayController { @RequestMapping(value = "/loadGetMigratedProductOrderList") public void loadGetMigratedProductOrderList(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /loadGetMigratedProductOrderList START"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetMigratedProductOrderList",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + map.put("sopmalCd", user.getSopmalCd()); + + Map result = boApiService.loadGetMigratedProductOrderList(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + response.get("migratedProductOrderList"); // (신) 상품 준문 번호 목록 + log.debug("처리 결과 > " + response.get("responseType").toString()); + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetMigratedProductOrderList",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /loadGetMigratedProductOrderList E N D"); } @@ -292,11 +577,16 @@ public class NPayController { public void loadGetPurchaseReviewList(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /loadGetPurchaseReviewList START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetPurchaseReviewList",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.loadGetPurchaseReviewList(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + response.get("purchaseReviewList"); // 리뷰 내역 + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetPurchaseReviewList",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /loadGetPurchaseReviewList E N D"); } @@ -310,11 +600,15 @@ public class NPayController { public void createPlaceProductOrder(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createPlaceProductOrder START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createPlaceProductOrder",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createPlaceProductOrder(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createPlaceProductOrder",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createPlaceProductOrder E N D"); } @@ -328,11 +622,15 @@ public class NPayController { public void createDelayProductOrder(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createDelayProductOrder START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createDelayProductOrder",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createDelayProductOrder(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createDelayProductOrder",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createDelayProductOrder E N D"); } @@ -345,11 +643,18 @@ public class NPayController { public void createCancelSale(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createCancelSale START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createCancelSale",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + map.put("sopmalCd", user.getSopmalCd()); + + Map result = boApiService.createCancelSale(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createCancelSale",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createCancelSale E N D"); } @@ -361,10 +666,15 @@ public class NPayController { @RequestMapping(value = "/createApproveCancelApplication") public void createApproveCancelApplication(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createApproveCancelApplication START"); - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createApproveCancelApplication",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createApproveCancelApplication(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createApproveCancelApplication",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createApproveCancelApplication E N D"); } @@ -377,11 +687,15 @@ public class NPayController { public void createRequestReturn(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createRequestReturn START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createRequestReturn",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createRequestReturn(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createRequestReturn",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createRequestReturn E N D"); } @@ -394,11 +708,15 @@ public class NPayController { public void createApproveReturnApplication(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createApproveReturnApplication START"); // map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createApproveReturnApplication",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createApproveReturnApplication(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createApproveReturnApplication",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createApproveReturnApplication E N D"); } @@ -411,11 +729,15 @@ public class NPayController { public void createApproveCollectedExchange(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createApproveCollectedExchange START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createApproveCollectedExchange",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createApproveCollectedExchange(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createApproveCollectedExchange",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createApproveCollectedExchange E N D"); } @@ -429,11 +751,15 @@ public class NPayController { public void createReDeliveryExchange(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createReDeliveryExchange START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createReDeliveryExchange",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createReDeliveryExchange(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createReDeliveryExchange",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createReDeliveryExchange E N D"); } @@ -446,11 +772,15 @@ public class NPayController { public void createRejectReturn(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createRejectReturn START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createRejectReturn",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createRejectReturn(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createRejectReturn",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createRejectReturn E N D"); } @@ -464,11 +794,15 @@ public class NPayController { public void createWithholdReturn(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createWithholdReturn START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createWithholdReturn",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createWithholdReturn(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createWithholdReturn",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createWithholdReturn E N D"); } @@ -481,11 +815,15 @@ public class NPayController { public void createReleaseReturnHold(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createReleaseReturnHold START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createReleaseReturnHold",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createReleaseReturnHold(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createReleaseReturnHold",map) +// ); + log.debug("result.toString() > " + result.toString()); log.debug("FO /createReleaseReturnHold E N D"); } @@ -499,11 +837,14 @@ public class NPayController { public void createRejectExchange(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createRejectExchange START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createRejectExchange",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createRejectExchange(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createRejectExchange",map) +// ); log.debug("FO /createRejectExchange E N D"); } @@ -517,11 +858,14 @@ public class NPayController { public void createWithholdExchange(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createWithholdExchange START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createWithholdExchange",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createWithholdExchange(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createWithholdExchange",map) +// ); log.debug("FO /createWithholdExchange E N D"); } @@ -534,11 +878,14 @@ public class NPayController { public void createReleaseExchangeHold(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createReleaseExchangeHold START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createReleaseExchangeHold",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createReleaseExchangeHold(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createReleaseExchangeHold",map) +// ); log.debug("FO /createReleaseExchangeHold E N D"); } @@ -553,11 +900,26 @@ public class NPayController { public void loadGetCustomerInquiryList(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /loadGetCustomerInquiryList START"); map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetCustomerInquiryList",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + // example + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:sss"); + Calendar endDate = Calendar.getInstance(); + log.debug("c.getTime() > " + endDate.getTime()); + Calendar fromDate = Calendar.getInstance(); + fromDate.add(Calendar.MONTH, -1); + log.debug("fromDate > " + dateFormat.format(fromDate.getTime())); + map.put("InquiryTimeFrom", fromDate); //조회 시작 일시 + map.put("InquiryTimeTo", endDate); //조회 종료 일시 + map.put("IsAnswered", false); //답변 여부 true or false + map.put("MallID", "np_bgbcp347244"); //가맹점 ID + + Map result = boApiService.loadGetCustomerInquiryList(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetCustomerInquiryList",map) +// ); log.debug("FO /loadGetCustomerInquiryList E N D"); } @@ -578,13 +940,21 @@ public class NPayController { map.put("AnswerContent", "test1"); map.put("AnswerContentID", "test1"); map.put("ActionType", "test1"); - - - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createAnswerCustomerInquiry",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + // example + map.put("InquiryID", "0001"); //쇼핑 문의 번호 Npay_ANSW_NB + map.put("AnswerContent", "조치해 드리겠습니다."); //답변 내용 + map.put("AnswerContentID", "1"); //답변 번호 (답변 메시지를 수정하는 경우에는 필수) + map.put("MallID", "np_bgbcp347244"); //가맹점 ID + map.put("ActionType", "INSERT"); //명령어 타입 코드("A.2.3 명령어 타입 코드" 참고) INSERT : 답변 등록 , UPDATE : 답변 수정 + + Map result = boApiService.createAnswerCustomerInquiry(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createAnswerCustomerInquiry",map) +// ); log.debug("FO /createAnswerCustomerInquiry E N D"); } @@ -592,10 +962,7 @@ public class NPayController { /** * naverPay측에서 request 함 * 네이버페이 API는 취소 요청, 반품 요청 등이 발생했을 때 가맹점에 이를 알리기 위한 알림(callback)을 제공한다. - * * - * @param model - * @param benefitVO * @return String */ @Policy(AuthPolicy.PUBLIC) @@ -612,12 +979,40 @@ public class NPayController { }else if(type.equals("CANCEL")){ // ... 시 처리 로직 수행 } - - - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/pruduct", map) - ); + + String productXml = ""; + String response = ""; + String status = ""; + Map resultMap = new HashMap<>(); + resultMap.put("status", "success!!"); + + log.debug("pruduct input param > " + map.toString()); + + try { + List products = (List) map.get("searchList"); + log.debug("전달 받은 상품조회 List > " + products.size()); + + response = productXmlService.createProductXml(map, request); + log.debug("생성된 XML CODE > " + response); + resultMap.put("xml", response); + status = "SUCCESS"; + }catch(Exception e) { + log.debug("네이버 페이 ProductXML 에러 메세지 출력 > " + e.getMessage()); + response = e.getMessage(); + status = "FAIL"; + }finally { + BOIfLogVO vo = new BOIfLogVO(); + vo.setSopmalCd(map.get("sopmalCd").toString()); + vo.setIfKndCd("product"); + vo.setSendParam(map.toString()); + vo.setReceiveParam(response); + vo.setIfSttusCd(status); + + boIfLogService.insertBoIfLog(vo); + } +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/pruduct", map) +// ); log.debug("FO /nPayCallback E N D"); @@ -640,11 +1035,14 @@ public class NPayController { public void createShipProductOrder(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /createShipProductOrder START"); //map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createShipProductOrder",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + Map result = boApiService.createShipProductOrder(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/createShipProductOrder",map) +// ); log.debug("FO /createShipProductOrder E N D"); } @@ -658,11 +1056,18 @@ public class NPayController { public void loadGetProductOrderIDList(HttpServletRequest request, @RequestParam Map map) throws Exception { log.debug("FO /loadGetProductOrderIDList START"); map.put("param", "test1"); - - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetProductOrderIDList",map) - ); - log.debug("resultMap.toString() > " + resultMap.toString()); + + // example + map.put("OrderID", "20241014-0001"); // 주문 번호 + map.put("MallID", "np_bgbcp347244"); // 가맹점 아이디 + + Map result = boApiService.loadGetProductOrderIDList(map); + log.debug("result > " + result.toString()); + Map response = (Map) result.get("response"); + log.debug("처리 결과 > " + response.get("responseType").toString()); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/api/loadGetProductOrderIDList",map) +// ); log.debug("FO /loadGetProductOrderIDList E N D"); } 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 30144342..951c99a6 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 @@ -4,13 +4,48 @@ 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.mvc.tags.ui.pagination.PaginationInfo; +import com.wb.domainserver.common.prop.PaginationProperties; +import com.wb.domainserver.domain.admin.instcSle.mtng.service.BOMaMtngService; +import com.wb.domainserver.domain.admin.instcSle.mtng.vo.BOInstcSleVO; +import com.wb.domainserver.domain.admin.instcSle.mtng.vo.BOPreOrderValidVO; +import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService; +import com.wb.domainserver.domain.admin.store.stplat.service.BOStplatService; +import com.wb.domainserver.domain.admin.store.stplat.vo.BOStplatVO; +import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService; +import com.wb.domainserver.domain.extra.ntcn.agree.service.BONmbrAgreeService; +import com.wb.domainserver.domain.extra.ntcn.agree.vo.BONmbrAgreeVO; +import com.wb.domainserver.domain.gcone.common.service.BOCommonService; +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.BOGoodsVO; +import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderLogVO; +import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderVO; +import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOPurchsrVO; +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; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOSpbkVO; +import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO; +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.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; @@ -19,6 +54,7 @@ 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; @@ -34,29 +70,26 @@ import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; 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.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.util.*; +import java.util.stream.Collectors; @Slf4j @Controller @RequestMapping("/sopmal/ordr") public class OrdrController { - @Autowired - private BOOrdrService service; - @Autowired private WnbtWebClientResponseHandler responseHandler; @@ -69,6 +102,43 @@ public class OrdrController { private Util utilClass; + @Autowired + private BOOrdrService service; + @Autowired + private BOOrdrLogService ordrLogService; + @Autowired + private BOOrderService orderService; + @Autowired + private BOMaComncdService bOMaComncdService; + @Autowired + private PaginationProperties paginationProperties; + @Autowired + private BONbkkService nbkkService; + @Autowired + private BOMaSopmalService boMaSopmalService; + @Autowired + private BOCommonService commonService; + @Autowired + private BODlvygrpService dlvyGroupService; + @Autowired + private BODlivyService dlivyService; + @Autowired + private BOGoodsService boGoodsService; + @Autowired + private BOCouponService couponService; + @Autowired + private BOMbrService mbrService; + @Autowired + private BONmbrAgreeService nmbrAgreeService; + @Autowired + private BOStplatService boStplatService; + @Autowired + private BONpayConfigService boNpayConfigService; + @Autowired + private BOMaMtngService boMaMtngService; + @Autowired + private BOPurchsService boPurchsService; + /* #################################### 사용자 > 상품 > 구매/결제 > 회원구매하기 시작 #################################### */ @@ -78,26 +148,37 @@ public class OrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectMbrPurchsForm") - public String selectIndvdlSetleInqire(HttpServletRequest request, ModelMap model, OrdrVO ordrVO) throws Exception { - - + public String selectIndvdlSetleInqire(HttpServletRequest request, ModelMap model, BOOrdrVO ordrVO) throws Exception { //결재 플랫폼 구분 코드 ordrVO.setSetlePltfomTyCd("PC".equals(request.getAttribute("env"))?"01":"02"); AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - DataMap map = new DataMap(); - map.put("pageIndex",1); - map.put("pageUnit",10); - map.put("nmbrPurchsAt", "Y"); - map.put("srchSopmalCd",user.getSopmalCd()); - Map stplat = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/stplat/selectBOStplatListInqire", map) - ); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrPurchsForm", ordrVO), - model, - "data" - ); + BOStplatVO stplatVO = new BOStplatVO(); + stplatVO.setPageIndex(1); + stplatVO.setPageUnit(paginationProperties.getPageUnit()); + stplatVO.setNmbrPurchsAt("Y"); + stplatVO.setSrchSopmalCd(user.getSopmalCd()); + + DataMap stplat = selectBOStplatListInqire(stplatVO); +// Map stplat = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/stplat/selectBOStplatListInqire", map) +// ); + + if ("01".equals(user.getSysDvCd())) { + ordrVO.setSopmalCd(user.getSopmalCd()); + } + ordrVO.setMbrInnb(user.getUserInnb()); + ordrVO.setMbrId(user.getMbrId()); + ordrVO.setMbrDvCd(user.getMbrDvCd()); + + Map content = service.selectMbrPurchs(ordrVO); + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrPurchsForm", ordrVO), +// model, +// "data" +// ); model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrVO)); model.addAttribute("deviceType", Util.getDeviceType(request)); model.addAttribute("stplat", stplat); @@ -107,17 +188,47 @@ public class OrdrController { /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > 주문상품 목록 조회 - * @param ordrVO + * @param param * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectOrderGoodsList") + @RequestMapping(value="/selectOrderGoodsList", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectOrderGoodsList(@RequestBody HashMap param) { + BOOrdrVO ordrVO = new BOOrdrVO(); + // ordrVO.setGoodsList((List) param.get("goodsList")); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOOrderGoodsList", param), - ReplyFromResrc::getReply + ObjectMapper objectMapper = new ObjectMapper(); + + // LinkedHashMap을 BOGoodsVO로 변환 + List> goodsListMap = (List>) param.get("goodsList"); + List goodsList = new ArrayList<>(); + + for (LinkedHashMap goodsMap : goodsListMap) { + BOGoodsVO goodsVO = objectMapper.convertValue(goodsMap, BOGoodsVO.class); + goodsList.add(goodsVO); + } + + ordrVO.setGoodsList(goodsList); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrVO.setSopmalCd(user.getSopmalCd()); + } + ordrVO.setMbrInnb(user.getUserInnb()); + ordrVO.setMbrId(user.getMbrId()); + ordrVO.setMbrDvCd(user.getMbrDvCd()); + + Map content = service.selectOrderGoodsList(ordrVO, param); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOOrderGoodsList", param), +// ReplyFromResrc::getReply +// ); } /** @@ -126,12 +237,26 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectDlvylcCouponList") - public ResponseEntity selectDlvylcCouponList(@RequestBody HashMap param) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcCouponList", param), - ReplyFromResrc::getReply + @RequestMapping(value="/selectDlvylcCouponList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectDlvylcCouponList(@RequestBody DataMap param) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + param.put("sopmalCd", user.getSopmalCd()); + param.put("mbrDvCd", String.valueOf(user.getMbrDvCd())); + param.put("mbrInnb", String.valueOf(user.getUserInnb())); + } + + Map content = service.selectDlvylcCouponList(param); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcCouponList", param), +// ReplyFromResrc::getReply +// ); } /** @@ -140,13 +265,51 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectDlvylcCouponListMulti") - public ResponseEntity selectDlvylcCouponListMulti(@RequestBody HashMap param) { + @RequestMapping(value="/selectDlvylcCouponListMulti", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectDlvylcCouponListMulti(@RequestBody DataMap param) { log.debug("selectDlvylcCouponListMulti param = {}", param); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcCouponListMulti", param), - ReplyFromResrc::getReply + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + param.put("sopmalCd", user.getSopmalCd()); + param.put("mbrDvCd", String.valueOf(user.getMbrDvCd())); + param.put("mbrInnb", String.valueOf(user.getUserInnb())); + } else { + LinkedHashMap multiOrdrDlvylcMap = (LinkedHashMap) param.get("multiOrdrDlvylc"); + List> dlvylcListMulti = (List>) multiOrdrDlvylcMap.get("dlvylc"); + if (!CollectionUtils.isEmpty(dlvylcListMulti)) { + int shippingIndex = 0; + for (LinkedHashMap dlvylcMapMulti : dlvylcListMulti) { + if (shippingIndex < 1) { + log.debug("dlvylcMapMulti : {}", dlvylcMapMulti); + List goodsListMulti = (List) dlvylcMapMulti.get("goodsList"); + if (!CollectionUtils.isEmpty(goodsListMulti)) { + int goodsIndex = 0; + for (LinkedHashMap goods : goodsListMulti) { + if (goodsIndex < 1) { + param.put("sopmalCd", goods.get("sopmalCd")); + param.put("mbrDvCd", String.valueOf(goods.get("mbrDvCd"))); + param.put("mbrInnb", String.valueOf(goods.get("mbrInnb"))); + } + goodsIndex++; + } + } + } + shippingIndex++; + } + } + } + + List> content = service.selectDlvylcCouponListMulti(param); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcCouponListMulti", param), +// ReplyFromResrc::getReply +// ); } /** @@ -155,12 +318,25 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectCartCouponList") - public ResponseEntity selectCartCouponList(@RequestBody HashMap param) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOCartCouponList", param), - ReplyFromResrc::getReply + @RequestMapping(value="/selectCartCouponList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectCartCouponList(@RequestBody DataMap param) { + 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 = service.selectCartCouponList(param); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOCartCouponList", param), +// ReplyFromResrc::getReply +// ); } /** @@ -169,29 +345,55 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectSetleExpectAmt") - public ResponseEntity selectSetleExpectAmt(HttpServletRequest request, @RequestBody HashMap param) { - + @RequestMapping(value="/selectSetleExpectAmt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSetleExpectAmt(HttpServletRequest request, @RequestBody DataMap 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 { + content = service.selectSetleExpectAmt(param); + } 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); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleExpectAmt", param), - ReplyFromResrc::getReply + 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 +// ); } @@ -202,7 +404,7 @@ public class OrdrController { * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGcpayToken") + @RequestMapping(value="/selectGcpayToken", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectGcpayToken(ModelMap model, HttpServletRequest request) throws JsonProcessingException { Enumeration params = request.getParameterNames(); @@ -211,7 +413,7 @@ public class OrdrController { System.out.print(name + " : " + request.getParameter(name) + " "); } - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); //리다이렉트 URL 뒤에는 다음과 같이 임시 인증 코드와 customerKey가 반환됩니다. //code: Access Token 발급에 필요한 Authorization Code(임시 인증 코드)입니다. @@ -223,9 +425,32 @@ public class OrdrController { log.debug("selectGcpayToken payVO {} :", payVO); - Map result = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOGcpayToken", payVO) - ); + Map result; + if ("01".equals(user.getSysDvCd())) { + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrInnb(String.valueOf(user.getUserInnb())); //회원번호 + } + payVO.setMbrNm(user.getMbrNm()); //회원명(관리자명) + + log.info("사용자 토큰 발급 payVo {} ", payVO); + + try { + result = service.selectGcpayToken(payVO); + result.put("mbrInnb", payVO.getMbrInnb()); + } catch (WnbtRestException wre) { + result = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + result = new HashMap<>() {{ + put("status", "1"); + put("message", "GCPAY 토큰발급을 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } +// Map result = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOGcpayToken", payVO) +// ); Map responseMap = (Map) result.get("response"); String accessToken = (String) responseMap.get("accessToken"); @@ -238,9 +463,13 @@ public class OrdrController { request.getSession().setAttribute("gcpay_id", mbrInnb); } - WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(result))).build(); - - return ResponseEntity.status(HttpStatus.OK).body(response); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(result)) + .build() + ); +// WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(result)).build(); +// return ResponseEntity.status(HttpStatus.OK).body(response); } /** @@ -250,12 +479,36 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGcpayCardPromtns") + @RequestMapping(value="/selectGcpayCardPromtns", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectGcpayCardPromtns(ModelMap model, HttpServletRequest request) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectGcpayCardPromtns", new HashMap<>()), - ReplyFromResrc::getReply + Map content; + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + String sopmalCd = user.getSopmalCd(); // 쇼핑몰코드 + + try { + content = service.selectGcpayCardPromtns(sopmalCd); + } catch (WnbtRestException wre) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", "GCPAY 카드 프로모션 조회를 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectGcpayCardPromtns", new HashMap<>()), +// ReplyFromResrc::getReply +// ); } @@ -266,10 +519,10 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGcpayMethod") + @RequestMapping(value="/selectGcpayMethod", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectGcpayMethod(ModelMap model, HttpServletRequest request) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); if(request.getSession().getAttribute("gcpay_token")!=null){ payVO.setSessionToken(request.getSession().getAttribute("gcpay_token").toString()); }else{ @@ -278,10 +531,41 @@ public class OrdrController { log.debug("selectGcpayMethod payvo {}",payVO); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectGcpayMethod", payVO), - ReplyFromResrc::getReply + Map content; + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + payVO.setSopmalCd(user.getSopmalCd()); + } + + log.debug("selectGcpayMethod payvo {}", payVO); + + try { + content = service.selectGcpayMethod(payVO); + } catch (WnbtRestException wre) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + + log.debug("selectGcpayMethod error {}", e.getMessage()); + + content = new HashMap<>() {{ + put("status", "1"); + put("message", "GCPAY 결제수단 조회를 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectGcpayMethod", payVO), +// ReplyFromResrc::getReply +// ); } @@ -292,18 +576,44 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGcpayInfo") - public ResponseEntity selectGcpayInfo(ModelMap model, HttpServletRequest request, @RequestBody HashMap param) { + @RequestMapping(value="/selectGcpayInfo", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGcpayInfo(ModelMap model, HttpServletRequest request, @RequestBody DataMap param) { log.debug("브랜드 페이 최초 등록 파라미터 확인 : {}", param); -// -// ReplyFromResrc reply = sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOGcpayInfo", new HashMap<>()); -// -// WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(reply.getReply())).build(); + Map content; + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOGcpayInfo", param), - ReplyFromResrc::getReply + if ("01".equals(user.getSysDvCd())) { + param.put("sopmalCd", user.getSopmalCd()); + param.put("mbrDvCd", user.getMbrDvCd()); + param.put("mbrInnb", user.getUserInnb()); + } + param.put("regusr", user.getUserInnb()); + param.put("updusr", user.getUserInnb()); + + try { + content = service.selectBOGcpayInfo(param); + } catch (WnbtRestException wre) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", "GCPAY 최초등록일 조회를 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOGcpayInfo", param), +// ReplyFromResrc::getReply +// ); // return ResponseEntity.status(HttpStatus.OK).body(response); } @@ -315,7 +625,7 @@ public class OrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertOrder") - public String insertOrder(ModelMap model, @RequestBody HashMap param, HttpServletRequest request) { + public String insertOrder(ModelMap model, @RequestBody DataMap param, HttpServletRequest request) { String agentId = ""; String jSesionId = ""; String ipAdres = ""; @@ -344,9 +654,10 @@ public class OrdrController { //결제플랫폼 구분코드 param.put("deviceType", "PC".equals(request.getAttribute("env"))?"P":"M"); log.debug("param.get(deviceType) {}", param.get("deviceType")); - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOOrder", param) - ); + Map resultMap = insertBOOrder(param); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOOrder", param) +// ); log.debug("resultMap = {}", resultMap); model.addAttribute("data", resultMap); @@ -401,7 +712,7 @@ public class OrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertSetle") public String insertSetle(ModelMap model, HttpServletRequest request) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordrInnb")); payVO.setAmount(request.getParameter("setleAmt")); @@ -440,11 +751,49 @@ public class OrdrController { ipAdres = util.get("XForwardedFor"); payVO.setIpAdres(ipAdres); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSetle", payVO), - model, - "data" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + payVO.setMbrNm(user.getMbrNm()); //회원명(관리자명) + if ("01".equals(user.getSysDvCd())) { + payVO.setDvCd("01"); + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrDvCd(user.getMbrDvCd()); + } else { + payVO.setDvCd("02"); + } + + Map content; + + try { + content = service.insertSetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertBOSetle : 무통장 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertBOSetle : 무통장 결제 정보 등록 : 실패"); + log.error(e.getMessage(), e); + + content = new HashMap<>() {{ + put("status", "1"); + put("message", "결제 정보 등록이 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + + if ("0".equals(content.get("status"))) { + // 주문 공통 후처리 + commonOrderPostProcess(payVO); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); return "sopmal/ordr/OrdrRspnsPayR"; @@ -459,7 +808,7 @@ public class OrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertGcpaySetle") public String insertGcpaySetle(ModelMap model, HttpServletRequest request) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("orderId")); payVO.setPaymentKey(request.getParameter("paymentKey")); @@ -501,11 +850,13 @@ public class OrdrController { ipAdres = util.get("XForwardedFor"); payVO.setIpAdres(ipAdres); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossSetle", payVO), - model, - "data" - ); + Map content = insertBOTossSetle(payVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); return "sopmal/ordr/OrdrRspnsKcpPayR"; @@ -523,7 +874,7 @@ public class OrdrController { log.debug("=================insertKcpSetle request {} ",request); - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordr_idxx")); payVO.setAmount(request.getParameter("good_mny")); @@ -549,7 +900,6 @@ public class OrdrController { // 쿠키를 가져옴 Cookie[] cookies = request.getCookies(); - //gc_agent_id 쿠키 있을 경우 가져옴 if (cookies != null) { for (Cookie cookie : cookies) { @@ -573,11 +923,13 @@ public class OrdrController { log.debug("=================insertKcpSetle util {} ",util); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpSetle", payVO), - model, - "data" - ); + Map content = insertBOKcpSetle(payVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpSetle", payVO), +// model, +// "data" +// ); log.debug("=================insertKcpSetle after "); @@ -592,13 +944,32 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectKcpTradeReg") + @RequestMapping(value="/selectKcpTradeReg", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectKcpTradeReg(@RequestBody HashMap param) { + Map content; + try { + content = service.selectBOKcpTradeReg(param); + } catch (WnbtRestException wre) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", "KCP 결제 정보 등록이 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOKcpTradeReg", param), - ReplyFromResrc::getReply - ); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOKcpTradeReg", param), +// ReplyFromResrc::getReply +// ); } /** @@ -614,11 +985,10 @@ public class OrdrController { while(params.hasMoreElements()) { String name = (String) params.nextElement(); - System.out.println(name + " : " + request.getParameter(name)); + log.debug(name + " : " + request.getParameter(name)); } - System.out.println("----------------------------------------------------------------------"); - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordr_idxx")); payVO.setAmount(request.getParameter("good_mny")); @@ -673,7 +1043,7 @@ public class OrdrController { String resCd = request.getParameter("res_cd"); if ("3001".equals(resCd)) { //사용자가 취소 - SpbkVO spbkVO = new SpbkVO(); + BOSpbkVO spbkVO = new BOSpbkVO(); spbkVO.setSopmalCd(payVO.getSopmalCd()); spbkVO.setMbrInnb(payVO.getMbrInnb()); @@ -681,21 +1051,25 @@ public class OrdrController { spbkVO.setSesionId(payVO.getSesionId()); spbkVO.setCartDvCd("01"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsList", spbkVO), - model, - "data" - ); + Map content = selectBOSpbkGoodsList(spbkVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsList", spbkVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); return "sopmal/ordr/OrdrRspnsKcpMobilePayR"; } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpSetle", payVO), - model, - "data" - ); + Map content = insertBOKcpSetle(payVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); return "sopmal/ordr/OrdrRspnsKcpPayR"; @@ -710,7 +1084,7 @@ public class OrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertTossSetle") public String insertTossSetle(ModelMap model, HttpServletRequest request) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("orderId")); payVO.setPaymentKey(request.getParameter("paymentKey")); @@ -751,11 +1125,13 @@ public class OrdrController { ipAdres = util.get("XForwardedFor"); payVO.setIpAdres(ipAdres); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossSetle", payVO), - model, - "data" - ); + Map content = insertBOTossSetle(payVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); return "sopmal/ordr/OrdrRspnsTossPayR"; @@ -770,7 +1146,7 @@ public class OrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertTosspaySetle") public String insertTosspaySetle(ModelMap model, HttpServletRequest request) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("orderId")); payVO.setPaymentKey(request.getParameter("paymentKey")); @@ -813,11 +1189,47 @@ public class OrdrController { ipAdres = util.get("XForwardedFor"); payVO.setIpAdres(ipAdres); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTosspaySetle", payVO), - model, - "data" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + payVO.setMbrNm(user.getMbrNm()); //회원명(관리자명) + if ("01".equals(user.getSysDvCd())) { + payVO.setDvCd("01"); + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrDvCd(user.getMbrDvCd()); + } else { + payVO.setDvCd("02"); + } + + Map content; + + try { + content = service.insertTosspaySetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertBOTosspaySetle : TOSSPAY 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertBOTosspaySetle : TOSSPAY 결제 정보 등록 : 실패"); + log.error(e.getMessage(), e); + + content = new HashMap<>() {{ + put("status", "1"); + put("message", "토스페이 결제 정보 등록이 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + if ("0".equals(content.get("status"))) { + commonOrderPostProcess(payVO); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTosspaySetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); return "sopmal/ordr/OrdrRspnsTossPayR"; @@ -829,12 +1241,15 @@ public class OrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectOrdrCompt") - public String selectOrdrCompt(HttpServletRequest request, ModelMap model, OrdrVO ordrVO) throws Exception { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOOrdrCompt", ordrVO), - model, - "data" - ); + public String selectOrdrCompt(HttpServletRequest request, ModelMap model, BOOrdrVO ordrVO) throws Exception { + Map content = service.selectOrdrCompt(ordrVO); + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOOrdrCompt", ordrVO), +// model, +// "data" +// ); model.addAttribute("paramVO", ordrVO); ObjectMapper objectMapper = new ObjectMapper(); @@ -853,11 +1268,6 @@ public class OrdrController { @RequestMapping(value="/selectOrdrFailr") public String selectOrdrFailrR(HttpServletRequest request, ModelMap model, OrdrVO ordrVO) throws Exception { -// responseHandler.handleResponse( -// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOOrdrFailr", ordrVO), -// model, -// "data" -// ); model.addAttribute("paramVO", ordrVO); // return "sopmal/ordr/OrdrFailrR"; @@ -866,16 +1276,23 @@ public class OrdrController { /** * 사용자 > 상품 > 구매/결제 > 회원구매하기 > 입금은행 목록 조회 - * @param param + * @param ordrVO * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectRcpmnyAcntnbList") - public ResponseEntity selectRcpmnyAcntnbList(@RequestBody HashMap param) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBORcpmnyAcntnbList", param), - ReplyFromResrc::getReply + @RequestMapping(value="/selectRcpmnyAcntnbList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectRcpmnyAcntnbList(@RequestBody BOOrdrVO ordrVO) { + Map content = service.selectRcpmnyAcntnbList(ordrVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBORcpmnyAcntnbList", param), +// ReplyFromResrc::getReply +// ); } /* #################################### 사용자 > 상품 > 구매/결제 > 회원구매하기 종료 @@ -890,8 +1307,7 @@ public class OrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectNmbrPurchsForm") - public String selectNmbrPurchsForm(HttpServletRequest request, ModelMap model, OrdrVO ordrVO) throws Exception { - + public String selectNmbrPurchsForm(HttpServletRequest request, ModelMap model, BOOrdrVO ordrVO) throws Exception { String jSessionId = ""; for(Cookie cookie : request.getCookies()){ if(cookie.getName().equals("JSESSIONID")){ @@ -900,25 +1316,36 @@ public class OrdrController { } } AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - DataMap map = new DataMap(); - map.put("pageIndex", 1); - map.put("pageUnit", 10); - map.put("nmbrPurchsAt", "Y"); - map.put("srchSopmalCd", user.getSopmalCd()); - Map stplat = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/stplat/selectBOStplatListInqire", map) - ); + BOStplatVO stplatVO = new BOStplatVO(); + stplatVO.setPageIndex(1); + stplatVO.setPageUnit(paginationProperties.getPageUnit()); + stplatVO.setNmbrPurchsAt("Y"); + stplatVO.setSrchSopmalCd(user.getSopmalCd()); + + DataMap stplat = selectBOStplatListInqire(stplatVO); +// Map stplat = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/stplat/selectBOStplatListInqire", map) +// ); log.debug("stplat {}", stplat); //결제플랫폼 구분코드 ordrVO.setSetlePltfomTyCd("PC".equals(request.getAttribute("env"))?"01":"02"); - ordrVO.setSesionId(jSessionId); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBONmbrPurchsForm", ordrVO), - model, - "data" - ); + if ("01".equals(user.getSysDvCd())) { + ordrVO.setSopmalCd(user.getSopmalCd()); + ordrVO.setMbrDvCd(user.getMbrDvCd()); + ordrVO.setMbrInnb(user.getUserInnb()); + } + + Map content = service.selectNmbrPurchsForm(ordrVO); + content.put("paramVO", ordrVO); + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBONmbrPurchsForm", ordrVO), +// model, +// "data" +// ); model.addAttribute("cartInnbs", Arrays.toString(ordrVO.getCartInnbs())); // model.addAttribute("paramVO", ordrVO); @@ -935,9 +1362,8 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectNmbrOrderGoodsList") - public ResponseEntity selectNmbrOrderGoodsList(HttpServletRequest request, @RequestBody OrdrVO ordrVO) { - + @RequestMapping(value="/selectNmbrOrderGoodsList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectNmbrOrderGoodsList(HttpServletRequest request, @RequestBody BOOrdrVO ordrVO) { String jSessionId = ""; for(Cookie cookie : request.getCookies()){ if(cookie.getName().equals("JSESSIONID")){ @@ -946,11 +1372,24 @@ public class OrdrController { break; } } + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrVO.setSopmalCd(user.getSopmalCd()); + ordrVO.setMbrDvCd(user.getMbrDvCd()); + ordrVO.setMbrInnb(user.getUserInnb()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBONmbrOrderGoodsList", ordrVO), - ReplyFromResrc::getReply + Map content = service.selectNmbrOrderGoodsList(ordrVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBONmbrOrderGoodsList", ordrVO), +// ReplyFromResrc::getReply +// ); } /* #################################### 사용자 > 상품 > 구매/결제 > 비회원 구매하기 종료 @@ -973,17 +1412,17 @@ public class OrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectIndvdlSetleForm") - public String selectIndvdlSetleForm(HttpServletRequest request, ModelMap model, OrdrVO ordrVO) throws Exception { - - + public String selectIndvdlSetleForm(HttpServletRequest request, ModelMap model, BOOrdrVO ordrVO) throws Exception { //결재 플랫폼 구분 코드 ordrVO.setSetlePltfomTyCd("PC".equals(request.getAttribute("env"))?"01":"02"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOIndvdlSetleForm", ordrVO), - model, - "data" - ); + Map content = service.selectIndvdlSetleForm(ordrVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOIndvdlSetleForm", ordrVO), +// model, +// "data" +// ); model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrVO)); model.addAttribute("deviceType", Util.getDeviceType(request)); @@ -997,12 +1436,28 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectIndvdlSetleOrderGoodsList") - public ResponseEntity selectIndvdlSetleOrderGoodsList(@RequestBody OrdrVO ordrVO) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOIndvdlSetleOrderGoodsList", ordrVO), - ReplyFromResrc::getReply + @RequestMapping(value="/selectIndvdlSetleOrderGoodsList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectIndvdlSetleOrderGoodsList(@RequestBody BOOrdrVO ordrVO) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrVO.setSopmalCd(user.getSopmalCd()); + ordrVO.setMbrDvCd(user.getMbrDvCd()); + ordrVO.setMbrInnb(user.getUserInnb()); + } + ordrVO.setMbrId(user.getMbrId()); + + Map content = service.selectIndvdlSetleOrderGoodsList(ordrVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOIndvdlSetleOrderGoodsList", ordrVO), +// ReplyFromResrc::getReply +// ); } /** @@ -1012,14 +1467,33 @@ public class OrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertIndvdlSetle") - public String insertIndvdlSetle(ModelMap model, @RequestBody HashMap param, HttpServletRequest request) { - + public String insertIndvdlSetle(ModelMap model, @RequestBody DataMap param, HttpServletRequest request) { //결제플랫폼 구분코드 param.put("deviceType", "PC".equals(request.getAttribute("env"))?"P":"M"); log.debug("param.get(deviceType) {}", param.get("deviceType")); - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOIndvdlSetle", param) - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + param.put("mbrInnb", user.getUserInnb()); + param.put("mbrDvCd", user.getMbrDvCd()); + } + + Map resultMap; + try { + resultMap = service.insertIndvdlSetle(param); + } catch (WnbtRestException wre) { + resultMap = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + resultMap = new HashMap<>() {{ + put("status", "1"); + put("message", "주문등록이 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOIndvdlSetle", param) +// ); model.addAttribute("data", resultMap); @@ -1077,30 +1551,51 @@ public class OrdrController { * @return SpbkPtinR.jsp */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/updateSpbkCartDvCd", method = RequestMethod.POST) - public ResponseEntity updateSpbkCartDvCd( @RequestBody SpbkVO spbkVO, HttpServletRequest request) { - - + @RequestMapping(value = "/updateSpbkCartDvCd", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateSpbkCartDvCd( @RequestBody BOSpbkVO spbkVO, HttpServletRequest request) { String sesionId =""; Cookie[] cookies = request.getCookies(); if(cookies != null){ - for(Cookie cookie : cookies ){ - if(cookie.getName().equals("JSESSIONID")){ sesionId = cookie.getValue(); spbkVO.setSesionId(sesionId); break; } - } } + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + spbkVO.setSopmalCd(user.getSopmalCd()); + spbkVO.setMbrInnb(String.valueOf(user.getUserInnb())); + spbkVO.setMbrDvCd(user.getMbrDvCd()); + } + spbkVO.setMbrId(user.getMbrId()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOSpbkCartDvCd", spbkVO), - ReplyFromResrc::getReply + Map content = new HashMap<>(); + DataMap param = new DataMap(); + param.put("sesionId", spbkVO.getSesionId()); + param.put("sopmalCd", user.getSopmalCd()); + param.put("mbrDvCd", user.getMbrDvCd()); + param.put("mbrInnb", user.getUserInnb()); + param.put("selCartDvCd", "01"); //카트를 + param.put("cartDvCd", "03");//초이스로 변경 + param.put("cartInnbs", spbkVO.getCartInnbs()); + + service.updateBOSpbkCartDvCd(param); + content.put("message", "success"); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOSpbkCartDvCd", spbkVO), +// ReplyFromResrc::getReply +// ); } /** @@ -1108,17 +1603,14 @@ public class OrdrController { * @return SpbkPtinR.jsp */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/insertSpbk", method = RequestMethod.POST) - public ResponseEntity insertSpbk(SpbkVO spbkVO, HttpServletRequest request) { - + @RequestMapping(value = "/insertSpbk", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertSpbk(BOSpbkVO spbkVO, HttpServletRequest request) { String sesionId =""; String agentId = ""; Cookie[] cookies = request.getCookies(); if(cookies != null){ - for(Cookie cookie : cookies ){ - if(cookie.getName().equals("JSESSIONID")){ sesionId = cookie.getValue(); spbkVO.setSesionId(sesionId); @@ -1135,12 +1627,85 @@ public class OrdrController { spbkVO.setIp(request.getAttribute("LoggingClientIp").toString()); } + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + spbkVO.setSopmalCd(user.getSopmalCd()); + spbkVO.setMbrInnb(String.valueOf(user.getUserInnb())); + spbkVO.setMbrDvCd(user.getMbrDvCd()); + } + spbkVO.setRegusr(user.getUserInnb()); + spbkVO.setUpdusr(user.getUserInnb()); + Map content = new HashMap<>(); + Map purchsrInfo = new HashMap<>(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSpbk", spbkVO), - ReplyFromResrc::getReply + try { + //기존 choice 상품 cart로 변경 + DataMap param = new DataMap(); + param.put("sopmalCd", user.getSopmalCd()); + param.put("sesionId", spbkVO.getSesionId()); + param.put("mbrInnb", String.valueOf(user.getUserInnb())); + param.put("mbrDvCd", StringUtil.isEmpty(user.getMbrDvCd()) ? "" : user.getMbrDvCd()); + param.put("selCartDvCd", "03"); // 초이스를 + param.put("cartDvCd", "01");// 카트로 변경 + service.updateBOSpbkCartDvCd(param); + + //기존 정보 삭제 + // 구매하기(cartDvCd 02) + // 또는 장바구니 담기시 상품옵션 중복선택으로 인한 재 담기시 + service.deleteSpbkGoodsDtl(spbkVO); + + //장바구니 담기 + for (BOSpbkVO tempVo : spbkVO.getAddCartList()) { + tempVo.setSopmalCd(spbkVO.getSopmalCd()); + tempVo.setMbrDvCd(StringUtil.isEmpty(user.getMbrDvCd()) ? "" : user.getMbrDvCd()); + tempVo.setMbrId(spbkVO.getMbrId()); + tempVo.setMbrInnb(spbkVO.getMbrInnb()); + tempVo.setSesionId(spbkVO.getSesionId()); + tempVo.setAgentId(spbkVO.getAgentId()); + tempVo.setIp(spbkVO.getIp()); + tempVo.setRegusr(spbkVO.getRegusr()); + tempVo.setUpdusr(spbkVO.getUpdusr()); + service.insertBOSpbkGoods(tempVo); + } + } catch (WnbtRestException wre) { + throw new WnbtRestException(wre.getMessage()); + } catch (Exception e) { + throw new WnbtRestException(e.getMessage()); + } + + purchsrInfo = service.selectSpbk(spbkVO.getAddCartList().get(0)); + + //장바구니 담기 로그 + for (BOSpbkVO tempVo : spbkVO.getAddCartList()) { + + com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO goodsVO = new com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO(); + + goodsVO.setGoodsInnb(tempVo.getGoodsInnb()); + goodsVO.setCartCnt(tempVo.getQy()); + goodsVO.setSopmalCd(user.getSopmalCd()); + boGoodsService.updateCartCnt(goodsVO); + } + + if (purchsrInfo.get("purchsr") == null || purchsrInfo.get("purchsr").equals("")) { + DataMap purchsr = new DataMap(); + purchsr.put("sesionId", spbkVO.getSesionId()); + purchsr.put("sopmalCd", spbkVO.getAddCartList().get(0).getSopmalCd()); + purchsrInfo.put("purchsr", purchsr); + } + + content.put("result", "success"); + content.put("purchsrInfo", purchsrInfo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSpbk", spbkVO), +// ReplyFromResrc::getReply +// ); } /** @@ -1149,15 +1714,11 @@ public class OrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectSpbk") - public String selectSpbk(HttpServletRequest request, ModelMap model, SpbkVO spbkVO) throws Exception { - + public String selectSpbk(HttpServletRequest request, ModelMap model, BOSpbkVO spbkVO) throws Exception { String sesionId =""; Cookie[] cookies = request.getCookies(); - if(cookies != null){ - for(Cookie cookie : cookies ){ - if(cookie.getName().equals("JSESSIONID")){ sesionId = cookie.getValue(); spbkVO.setSesionId(sesionId); @@ -1166,20 +1727,69 @@ public class OrdrController { } } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbk", spbkVO), - model, - "data" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + spbkVO.setSopmalCd(user.getSopmalCd()); + } + spbkVO.setMbrInnb(String.valueOf(user.getUserInnb())); + spbkVO.setMbrDvCd(user.getMbrDvCd()); + spbkVO.setMbrId(user.getMbrId()); + + + Map content = service.selectSpbk(spbkVO); + + //장바구니 상품그룹 상품 목록 조회 + DataMap goodsGroupInfo = service.selectCartGoodsListInqire(spbkVO); + content.put("goodsListInqire", goodsGroupInfo); + + //선물하기 여러곳 배송 사용여부 확인 + DataMap dlvyAt = service.selectBOSpbkGiftMultiDlvyAt(spbkVO); + content.put("dlvyAt", dlvyAt); + + + //장바구니 구분 02(direct) 삭제 + service.deleteBOSpbkDirect(spbkVO); + + //장바구니 구분 03(choice) -> 01(cart)로 변경 + DataMap param = new DataMap(); + param.put("sopmalCd", spbkVO.getSopmalCd()); + param.put("mbrInnb", spbkVO.getMbrInnb()); + param.put("mbrDvCd", spbkVO.getMbrDvCd()); + param.put("sesionId", spbkVO.getSesionId()); + param.put("selCartDvCd", "03"); // 초이스를 cartDvCd + param.put("cartDvCd", "01");// 카트로 변경 + service.updateBOSpbkCartDvCd(param); + + //AD SCRIPT + spbkVO.setCartDvCd("01"); + Map goodsList = service.selectSpbkGoodsList(spbkVO); + + // List goodsListObj = (List) goodsList; + // int goodsTotalAmt = goodsListObj.stream().mapToInt(obj -> (int) obj.get("subSlepric")).sum(); + + ObjectMapper objectMapper = new ObjectMapper(); + content.put("adScriptGoodsList", objectMapper.writeValueAsString(goodsList)); + // content.put("adScriptTotalAmt", objectMapper.writeValueAsString(goodsTotalAmt)); + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbk", spbkVO), +// model, +// "data" +// ); // 네이버 페이 config Data gethering - AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - Map param = new HashMap(); - param.put("sopmalCd", user.getSopmalCd()); - Map naverKey = responseHandler.handleResponseAsMap( - //sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/config/loadNpayConfigDetail", param) - sendToResrc.ofGetWithParam(RESRC.GCONEBO, "/gcone/ordr/npay/config/loadNpayConfigDetail", param) - ); + BONpayConfigVO vo = new BONpayConfigVO(); + vo.setSopmalCd(user.getSopmalCd()); + DataMap naverKey = new DataMap(); + naverKey = boNpayConfigService.loadNpayConfigDetail(vo); + naverKey.put("naverPayYn", boMaSopmalService.selectBONpayUseAtByShop(vo.getSopmalCd())); + +// Map naverKey = responseHandler.handleResponseAsMap( +// //sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/config/loadNpayConfigDetail", param) +// sendToResrc.ofGetWithParam(RESRC.GCONEBO, "/gcone/ordr/npay/config/loadNpayConfigDetail", param) +// ); Map naverMap = (Map) naverKey.get("npayConfigDetail"); log.debug("naverKey value checking > " + naverMap.toString()); @@ -1199,15 +1809,11 @@ public class OrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectSpbkGoodsList") - public String selectSpbkGoodsList(HttpServletRequest request, ModelMap model, @RequestBody SpbkVO spbkVO) throws Exception { - + public String selectSpbkGoodsList(HttpServletRequest request, ModelMap model, @RequestBody BOSpbkVO spbkVO) throws Exception { String sesionId =""; Cookie[] cookies = request.getCookies(); - if(cookies != null){ - for(Cookie cookie : cookies ){ - if(cookie.getName().equals("JSESSIONID")){ sesionId = cookie.getValue(); spbkVO.setSesionId(sesionId); @@ -1215,9 +1821,11 @@ public class OrdrController { } } } - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsList", spbkVO) - ); + + Map resultMap = selectBOSpbkGoodsList(spbkVO); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsList", spbkVO) +// ); model.addAttribute("data", resultMap); model.addAttribute("jsonData", new Gson().toJson(resultMap)); @@ -1231,17 +1839,12 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/deleteSpbkGoods") - public ResponseEntity deleteSpbkGoods(HttpServletRequest request, @RequestBody List goodsVOList) { - - + @RequestMapping(value="/deleteSpbkGoods", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteSpbkGoods(HttpServletRequest request, @RequestBody List goodsVOList) { String sesionId =""; Cookie[] cookies = request.getCookies(); - if(cookies != null){ - for(Cookie cookie : cookies ){ - if(cookie.getName().equals("JSESSIONID")){ sesionId = cookie.getValue(); break; @@ -1249,14 +1852,48 @@ public class OrdrController { } } - for(GoodsVO goodsVO : goodsVOList){ + for(BOGoodsVO goodsVO : goodsVOList){ goodsVO.setSesionId(sesionId); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/deleteBOSpbkGoods", goodsVOList), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + for (BOGoodsVO goodsVO : goodsVOList) { + if ("01".equals(user.getSysDvCd())) { + goodsVO.setSopmalCd(user.getSopmalCd()); + goodsVO.setMbrInnb(String.valueOf(user.getUserInnb())); + goodsVO.setMbrDvCd(user.getMbrDvCd()); + } + } + + Map content = new HashMap<>() {{ + put("status", "0"); + put("message", "장바구니 상품 삭제를 완료 하였습니다."); + }}; + + try { + service.deleteSpbkGoods(goodsVOList); + } catch (WnbtRestException wre) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception 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/deleteBOSpbkGoods", goodsVOList), +// ReplyFromResrc::getReply +// ); } /** @@ -1265,9 +1902,8 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateSpbkGoodsQy") - public ResponseEntity updateSpbkGoodsQy(HttpServletRequest request, @RequestBody GoodsVO goodsVO) { - + @RequestMapping(value="/updateSpbkGoodsQy", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateSpbkGoodsQy(HttpServletRequest request, @RequestBody BOGoodsVO goodsVO) { String jSessionId = ""; if(request.getCookies() != null) { for(Cookie cookie : request.getCookies()){ @@ -1277,13 +1913,44 @@ public class OrdrController { } } } - goodsVO.setSesionId(jSessionId); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOSpbkGoodsQy", goodsVO), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + goodsVO.setSopmalCd(user.getSopmalCd()); + goodsVO.setMbrInnb(String.valueOf(user.getUserInnb())); + goodsVO.setMbrDvCd(user.getMbrDvCd()); + } + + Map content = new HashMap<>() {{ + put("status", "0"); + put("message", "장바구니 상품 수정 완료 하였습니다."); + }}; + + try { + service.updateSpbkGoodsQy(goodsVO); + } catch (WnbtRestException wre) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception 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/updateBOSpbkGoodsQy", goodsVO), +// ReplyFromResrc::getReply +// ); } /** @@ -1304,10 +1971,8 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectSpbkGoodsOptnList") - public ResponseEntity selectSpbkGoodsOptnList(@RequestBody GoodsVO goodsVO, HttpServletRequest request) { - - + @RequestMapping(value="/selectSpbkGoodsOptnList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSpbkGoodsOptnList(@RequestBody BOGoodsVO goodsVO, HttpServletRequest request) { String jSessionId = ""; if(request.getCookies() != null) { for(Cookie cookie : request.getCookies()){ @@ -1319,10 +1984,25 @@ public class OrdrController { } goodsVO.setSesionId(jSessionId); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsOptnList", goodsVO), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + goodsVO.setSopmalCd(user.getSopmalCd()); + goodsVO.setMbrInnb(String.valueOf(user.getUserInnb())); + goodsVO.setMbrDvCd(user.getMbrDvCd()); + } + + Map content = service.selectBOSpbkGoodsOptnList(goodsVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsOptnList", goodsVO), +// ReplyFromResrc::getReply +// ); } /** @@ -1331,9 +2011,8 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectSpbkGoodsNomalOptn") - public ResponseEntity selectSpbkGoodsNomalOptn(GoodsVO goodsVO, HttpServletRequest request) { - + @RequestMapping(value="/selectSpbkGoodsNomalOptn", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSpbkGoodsNomalOptn(BOGoodsVO goodsVO, HttpServletRequest request) { String jSessionId = ""; if(request.getCookies() != null) { for(Cookie cookie : request.getCookies()){ @@ -1344,11 +2023,25 @@ public class OrdrController { } } goodsVO.setSesionId(jSessionId); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + goodsVO.setSopmalCd(user.getSopmalCd()); + goodsVO.setMbrInnb(String.valueOf(user.getUserInnb())); + goodsVO.setMbrDvCd(user.getMbrDvCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsNomalOptn", goodsVO), - ReplyFromResrc::getReply + Map content = service.selectSpbkGoodsNomalOptn(goodsVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsNomalOptn", goodsVO), +// ReplyFromResrc::getReply +// ); } /** @@ -1357,9 +2050,8 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectSpbkGoodsStockOptnList") - public ResponseEntity selectSpbkGoodsStockOptnList(GoodsVO goodsVO, HttpServletRequest request) { - + @RequestMapping(value="/selectSpbkGoodsStockOptnList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSpbkGoodsStockOptnList(BOGoodsVO goodsVO, HttpServletRequest request) { String jSessionId = ""; if(request.getCookies() != null) { for(Cookie cookie : request.getCookies()){ @@ -1370,11 +2062,25 @@ public class OrdrController { } } goodsVO.setSesionId(jSessionId); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + goodsVO.setSopmalCd(user.getSopmalCd()); + goodsVO.setMbrInnb(String.valueOf(user.getUserInnb())); + goodsVO.setMbrDvCd(user.getMbrDvCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsStockOptnList", goodsVO), - ReplyFromResrc::getReply + Map content = service.selectSpbkGoodsStockOptnList(goodsVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsStockOptnList", goodsVO), +// ReplyFromResrc::getReply +// ); } /** @@ -1383,9 +2089,8 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectSpbkGoodsAddOptnList") - public ResponseEntity selectSpbkGoodsAddOptnList(@RequestBody GoodsVO goodsVO, HttpServletRequest request) { - + @RequestMapping(value="/selectSpbkGoodsAddOptnList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSpbkGoodsAddOptnList(@RequestBody BOGoodsVO goodsVO, HttpServletRequest request) { String jSessionId = ""; if(request.getCookies() != null) { for(Cookie cookie : request.getCookies()){ @@ -1396,11 +2101,25 @@ public class OrdrController { } } goodsVO.setSesionId(jSessionId); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + goodsVO.setSopmalCd(user.getSopmalCd()); + goodsVO.setMbrInnb(String.valueOf(user.getUserInnb())); + goodsVO.setMbrDvCd(user.getMbrDvCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsAddOptnList", goodsVO), - ReplyFromResrc::getReply + Map content = service.selectSpbkGoodsAddOptnList(goodsVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSpbkGoodsAddOptnList", goodsVO), +// ReplyFromResrc::getReply +// ); } /** @@ -1409,9 +2128,8 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateSpbk") - public ResponseEntity updateSpbk(@RequestBody List goodsVOList, HttpServletRequest request) { - + @RequestMapping(value="/updateSpbk", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateSpbk(@RequestBody List goodsVOList, HttpServletRequest request) { String jSessionId = ""; if(request.getCookies() != null) { for(Cookie cookie : request.getCookies()){ @@ -1422,14 +2140,47 @@ public class OrdrController { } } - for(GoodsVO goodsVO : goodsVOList){ + for(BOGoodsVO goodsVO : goodsVOList){ goodsVO.setSesionId(jSessionId); } + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + for (BOGoodsVO goodsVO : goodsVOList) { + if ("01".equals(user.getSysDvCd())) { + goodsVO.setSopmalCd(user.getSopmalCd()); + goodsVO.setMbrInnb(String.valueOf(user.getUserInnb())); + goodsVO.setMbrDvCd(user.getMbrDvCd()); + } + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOSpbk", goodsVOList), - ReplyFromResrc::getReply + Map content = new HashMap<>() {{ + put("status", "0"); + put("message", "장바구니 상품 수정 완료 하였습니다."); + }}; + + try { + service.updateSpbk(goodsVOList); + } catch (WnbtRestException wre) { + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception 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/updateBOSpbk", goodsVOList), +// ReplyFromResrc::getReply +// ); } /** @@ -1438,30 +2189,43 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectCartList") - public ResponseEntity updateSpbk(HttpServletRequest request, @RequestBody SpbkVO spbkVO) { - - + @RequestMapping(value="/selectCartList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateSpbk(HttpServletRequest request, @RequestBody BOSpbkVO spbkVO) { String sesionId = ""; Cookie[] cookies = request.getCookies(); - if(cookies != null){ - for(Cookie cookie : cookies ){ - if(cookie.getName().equals("JSESSIONID")){ sesionId = cookie.getValue(); spbkVO.setSesionId(sesionId); break; } - } } + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + spbkVO.setSopmalCd(user.getSopmalCd()); + spbkVO.setMbrInnb(String.valueOf(user.getUserInnb())); + spbkVO.setMbrDvCd(user.getMbrDvCd()); + } + spbkVO.setMbrId(user.getMbrId()); + spbkVO.setSesionId(spbkVO.getSesionId()); + spbkVO.setIp(spbkVO.getIp()); + spbkVO.setAgentId(spbkVO.getAgentId()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOCartList", spbkVO), - ReplyFromResrc::getReply + Map content = new HashMap<>(); + content = service.selectBOCartList(spbkVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOCartList", spbkVO), +// ReplyFromResrc::getReply +// ); } /** @@ -1470,23 +2234,18 @@ public class OrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectCartCntRefresh") + @RequestMapping(value="/selectCartCntRefresh", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectCartCntRefresh(HttpServletRequest request) { - String sesionId = ""; - BOSiteVO boSiteVO = new BOSiteVO(); - if( request.getCookies() != null){ Cookie[] cookies = request.getCookies(); for(Cookie cookie : cookies ){ - if(cookie.getName().equals("JSESSIONID")){ sesionId = cookie.getValue(); boSiteVO.setSessionId(sesionId); break; } - } } @@ -1736,13 +2495,12 @@ public class OrdrController { * @return OrdrReqstPayR.jsp */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectBlclist") - public ResponseEntity selectBlclist(ModelMap model, @RequestBody HashMap param, HttpServletRequest request) { + @RequestMapping(value="/selectBlclist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectBlclist(ModelMap model, @RequestBody DataMap param, HttpServletRequest request) { log.debug("selectBlclist(param = {})", param); Map util = new HashMap<>(); util = utilClass.getRequestInfo(request); - String agentId = ""; String jSesionId = ""; String ipAdres = ""; @@ -1770,27 +2528,739 @@ public class OrdrController { param.put("ipAdres", ipAdres); log.debug("param = {}", param); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/admin/instcSle/mtng/selectBOBlclist", param), - ReplyFromResrc::getReply + Map content = selectBlclist(param); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/admin/instcSle/mtng/selectBOBlclist", param), +// ReplyFromResrc::getReply +// ); } /** * 사용자 > 기본배송지 조회 - * @param param + * @param purchsrVO * @return OrdrReqstPayR.jsp */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectDftDlvylc") - public ResponseEntity selectDftDlvylc(@RequestBody HashMap param) { - log.debug("selectDftDlvylc(param = {})", param); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBODftDlvylc", param), - ReplyFromResrc::getReply + @RequestMapping(value="/selectDftDlvylc", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectDftDlvylc(@RequestBody BOPurchsrVO purchsrVO) { + log.debug("selectDftDlvylc(param = {})", purchsrVO); + Map content = new HashMap<>(); + + DataMap dftDlvylc = boPurchsService.selectDftDlvylc(purchsrVO); + content.put("dftDlvylc", dftDlvylc); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBODftDlvylc", param), +// ReplyFromResrc::getReply +// ); } + /** + * 주문 결제 후 처리 + * @param payVO + */ + public void commonOrderPostProcess(BOPayVO payVO) { + + // 종 기능 로그 + BOOrderLogVO logVO = new BOOrderLogVO(); + + BOOrderVO orderVO = new BOOrderVO(); + orderVO.setSopmalCd(payVO.getSopmalCd()); + orderVO.setOrdrInnb(new BigInteger(payVO.getOrderId())); + if (StringUtils.hasText(payVO.getMbrInnb())) { + orderVO.setMbrInnb(new BigInteger(payVO.getMbrInnb())); + } + + //모바일 kcp 결제시 값 누락으로 분기처리 + if(!StringUtils.hasText(payVO.getMbrDvCd())) { + + BOMbrVO boMbrVO = new BOMbrVO(); + boMbrVO.setSopmalCd(payVO.getSopmalCd()); + payVO.setMbrDvCd(mbrService.selectBOMbrDvCd(boMbrVO)); + } + + try { + + // 2.가용재고수량 수정 ============================================================== + try { + boGoodsService.updateOrdrUsefulInvntryQy(orderVO); + } catch (Exception e) { + logVO.setFailContent("상품 재고수량 업데이트 실패"); + log.error("{} 상품 재고수량 업데이트 실패!", payVO.getOrderId()); +// throw new WnbtOrderBellRestException(payVO.getOrderId(), payVO.getSopmalCd(), OrderBellCode.INVENTORY_UPDATE_FAILED); + } + + // 3. 부정판매 식별 및 등록 ============================================================== + try { + service.updateInstcSle(payVO); + } catch (Exception e) { + log.error("{} 부정판매 식별 및 등록 실패!", payVO.getOrderId()); + } + + // 4. 현금영수증 발급 ================================================ + try { + // 무통장일 경우 타도 되는지 확인 필요 + service.updateCshRciptRegist(payVO); + } catch (Exception e) { + log.error("{} 실시간계좌이체 현금영수증 발급 실패!", payVO.getOrderId()); + } + + // 5. 회원 사이트정보 갱신 ============================================================== + try { + service.updateMbrSiteUpdtOrdrRefund(payVO); + } catch (Exception e) { + log.error("{} 회원 사이트정보 갱신 실패!", payVO.getOrderId()); + } + + // 6. 선물하기 메세지 ============================================================== + try { + service.selectBOPresentOrdrSmsInfoInqire(payVO); + } catch (Exception e) { + log.error("{} 선물하기 메세지 발송 실패!", payVO.getOrderId()); + } + + // 7.장바구니 비우기 =============================================================== + try { + service.deleteBOCart(orderVO); + } catch (Exception e) { + log.error("{} 장바구니 비우기 실패!", payVO.getOrderId()); + } + + // 8. 첫 구매 쿠폰 지급 ============================================================== + // TODO : 24년 12월 정도 시점에 첫구매쿠폰의 정의가 쇼핑몰 별로 달라 쿼리로 발행해주고 첫 구매시 지급은 막았음 추후 방안 결정 필요 + // -- 실제로 첫 주문이 첫 구매 쿠폰이다 | 이전 한달 기준으로 환불한건 제외하고 실제 첫 구매가 있을 경우만 첫 구매 쿠폰이다. | 첫구매를하고 다시 구매하게 재구매 유도 쿠폰이 첫 구매 쿠폰이다. + // -- 위 세가지 경우가 때문에 임시로 막힘 배치에도 첫구매쿠폰 소스가 있음. + try { + // couponService.insertBOFirstOrdrCouponPayment(payVO); + } catch (Exception e) { + log.error("회원 사이트정보 갱신 실패!"); + } + + } catch (Exception e) { + log.info("주문 후처리 중 실패 {}", payVO.getOrderId()); + } finally { + log.debug("commonOrderPostProcess finally {}", payVO.getOrderId()); + // TODO CJH : 종기능 로그 insert 각각 뭐가 실패했는지 남겨야함. + ordrLogService.insertBOOrderBellLogRegist(logVO); + } + + } + /** + * bo로직 약관 목록 조회 + */ + public DataMap selectBOStplatListInqire(BOStplatVO stplat) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + stplat.setRegusr(user.getUserInnb()); + stplat.setUpdusr(user.getUserInnb()); + + List resultList = new ArrayList<>(); + List codeList = new ArrayList<>(); + DataMap content = new DataMap(); + DataMap map = new DataMap(); + // pagination + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(stplat.getPageIndex()); + paginationInfo.setRecordCountPerPage(stplat.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + stplat.setPaginationInfo(paginationInfo); + stplat.setFirstIndex(paginationInfo.getFirstRecordIndex()); + stplat.setLastIndex(paginationInfo.getLastRecordIndex()); + stplat.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + // 약관 목록 조회 + resultList = boStplatService.selectBOStplatList(stplat); + // 그룹 코드 조회 + map = boStplatService.selectGroupCd(); + + codeList.add(map); + content.put("stplat", stplat); + content.put("resultList", resultList); + content.put("codeList", codeList); + content.put("paginationInfo", stplat.getPaginationInfo()); + return content; + } + + /** + * bo로직 사용자 > 상품 > 구매/결제 > 회원구매하기 > 구매 정보 등록 + */ + public Map insertBOOrder(DataMap param) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + param.put("mbrDvCd", user.getMbrDvCd()); + param.put("mbrInnb", user.getUserInnb()); + } + + Map content; + + try { + content = service.insertOrder(param); + } catch (WnbtRestException wre) { + log.error("insertBOMngrOrdrRegist wre :", wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.error("insertBOMngrOrdrRegist e :", e); + content = new HashMap<>() {{ + put("status", "1"); + put("message", "주문등록이 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + + //회원, 비회원에 따른 광고 수신 동의 처리 + LinkedHashMap purchsr = (LinkedHashMap) param.get("purchsr"); + String secretKey = commonService.selectSecretkey(); + String mbtlnb = (String) purchsr.get("mbtlnb"); + int mbrInnb = 0; + String mbrDvCd = ""; + String sopmalCd = ""; + if (!"".equals(StringUtil.isNullToString(param.get("mbrInnb")))) { + mbrInnb = (int) param.get("mbrInnb"); + mbrDvCd = (String) param.get("mbrDvCd"); + } + if ("01".equals(user.getSysDvCd())) { //쇼핑몰 기준 + sopmalCd = user.getSopmalCd(); + } + if (sopmalCd.length() == 2) { + if (mbrInnb > 0) { //회원 동의 수정 + if (!StringUtil.isEmpty((String) param.get("marktRecptnAgreAt"))) { + BOMbrVO mbrVO = new BOMbrVO(); + /*회원고유번호*/ + mbrVO.setMbrInnb(String.valueOf(mbrInnb)); + /*쇼핑몰코드*/ + mbrVO.setMainSopmalCd(sopmalCd); + mbrVO.setSopmalCd(sopmalCd); + /*회원구분코드*/ + mbrVO.setMbrDvCd(mbrDvCd); + /*휴대폰번호*/ + mbrVO.setMbtlnb(mbtlnb); + /*이름*/ + mbrVO.setMbrNm((String) purchsr.get("mbrNm")); + /*시크릿키*/ + mbrVO.setSecretKey(secretKey); + /*마케팅광고수신동의여부*/ + mbrVO.setMarktRecptnAgreAt((String) param.get("marktRecptnAgreAt")); + mbrVO.setBeforeMarktRecptnAgreAt((String) param.get("beforeMarktRecptnAgreAt")); + /*등록자,수정자*/ + mbrVO.setUpdusr(mbrInnb); + mbrVO.setRegusr(mbrInnb); + Map mbr = mbrService.updateBOMarkRecptnAgreUpdt(mbrVO); + //마케팅 동의 성공시 회원가입 쿠폰 전송 + if ("success".equals(mbr.get("result"))) { + couponService.insertBOMbrBnefCouponPayment(mbrVO); + } + } + } else {//비회원 동의 등록 + if ("Y".equals((String) param.get("marktRecptnAgreAt"))) { + BONmbrAgreeVO nmbrAgreeVO = new BONmbrAgreeVO(); + /*요청구분*/ + nmbrAgreeVO.setRequestDv("api"); + /*시크릿키*/ + nmbrAgreeVO.setSecretKey(secretKey); + /*쇼핑몰 코드*/ + nmbrAgreeVO.setSopmalCd(sopmalCd); + /*이름*/ + nmbrAgreeVO.setNm((String) purchsr.get("mbrNm")); + /*전화번호*/ + nmbrAgreeVO.setMbtlnb(mbtlnb); + /*등록 아이피*/ + nmbrAgreeVO.setRegistIp((String) param.get("ipAdres")); + /*주소*/ + String adres = ""; + LinkedHashMap shipping = (LinkedHashMap) param.get("shipping"); + if ("01".equals(shipping.get("dlvylcAdresDvCd"))) { + adres = (String) shipping.get("dlvylcRnmAdres") + (String) shipping.get("dlvylcAdresDtl"); + } else { + adres = (String) shipping.get("dlvylcLnbAdres") + (String) shipping.get("dlvylcAdresDtl"); + } + nmbrAgreeVO.setAdres(adres); + /*비회원 동의 등록*/ + nmbrAgreeService.insertBONmbrAdRecptnAgre(nmbrAgreeVO); + } + } + } + + String ordrTyCd = (String) param.get("ordrTyCd"); + + if ("01".equals(ordrTyCd)) { + //회원, 기본배송지 설정 안할 시 기본배송지 자동등록 + if (mbrInnb > 0) { + DataMap mbrInfo = new DataMap(); + mbrInfo.put("mbrInnb", mbrInnb); + mbrInfo.put("mbrDvCd", mbrDvCd); + String at = service.selectBOdftDlvylcAt(mbrInfo); + if ("N".equals(at)) { + LinkedHashMap shipping = (LinkedHashMap) param.get("shipping"); // 배송정보 + BOCrmDlvylcVO crmDlvylcVO = new BOCrmDlvylcVO(); + crmDlvylcVO.setRecpntNm((String) shipping.get("recpntNm")); + crmDlvylcVO.setTelnb((String) shipping.get("recpntTelnb")); + crmDlvylcVO.setMbtlnb((String) shipping.get("recpntMbtlnb")); + crmDlvylcVO.setZip((String) shipping.get("dlvylcZip")); + crmDlvylcVO.setAdresDv((String) shipping.get("dlvylcAdresDvCd")); + crmDlvylcVO.setLnbAdres((String) shipping.get("dlvylcLnbAdres")); + crmDlvylcVO.setRnmAdres((String) shipping.get("dlvylcRnmAdres")); + crmDlvylcVO.setDtlAdres((String) shipping.get("dlvylcAdresDtl")); + crmDlvylcVO.setDftDlvylcAt("Y"); + crmDlvylcVO.setRegusr(user.getUserInnb()); + crmDlvylcVO.setUpdusr(user.getUserInnb()); + crmDlvylcVO.setMbrInnb(mbrInnb); + crmDlvylcVO.setMbrDvCd(mbrDvCd); + + service.insertBODlvylcRegist(crmDlvylcVO); + } + } + + } + return content; + } + + + /** + * bo로직 사용자 > 상품 > 구매/결제 > 회원구매하기 > TOSS 결제 정보 등록 + */ + public Map insertBOTossSetle(BOPayVO payVO) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + payVO.setMbrNm(user.getMbrNm()); //회원명(관리자명) + if ("01".equals(user.getSysDvCd())) { + payVO.setDvCd("01"); + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrDvCd(user.getMbrDvCd()); + } else { + payVO.setDvCd("02"); + } + + Map content; + + try { + content = service.insertTossSetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertBOTossSetle : TOSS 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertBOTossSetle : TOSS 결제 정보 등록 : 실패"); + log.error(e.getMessage(), e); + + content = new HashMap<>() {{ + put("status", "1"); + put("message", "토스 결제 정보 등록이 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + if ("0".equals(content.get("status"))) { + BOOrderVO orderVO = new BOOrderVO(); + orderVO.setSopmalCd(payVO.getSopmalCd()); + orderVO.setOrdrInnb(new BigInteger(payVO.getOrderId())); + if (StringUtils.hasText(payVO.getMbrInnb())) { + orderVO.setMbrInnb(new BigInteger(payVO.getMbrInnb())); + } + // 주문 공통 후처리 + commonOrderPostProcess(payVO); + } + return content; + } + + /** + * 사용자 > 상품 > 구매/결제 > 회원구매하기 > KCP 결제 정보 등록 + */ + public Map insertBOKcpSetle(BOPayVO payVO) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + payVO.setMbrNm(user.getMbrNm()); //회원명(관리자명) + if ("01".equals(user.getSysDvCd())) { + payVO.setDvCd("01"); + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrDvCd(user.getMbrDvCd()); + } else { + payVO.setDvCd("02"); + } + + Map content; + + try { + content = service.insertKcpSetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertBOKcpSetle : KCP 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertBOKcpSetle : KCP 결제 정보 등록 : 실패"); + log.error(e.getMessage(), e); + + content = new HashMap<>() {{ + put("status", "1"); + put("message", "KCP 결제 정보 등록이 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + if ("0".equals(content.get("status"))) { + BOOrderVO orderVO = new BOOrderVO(); + orderVO.setSopmalCd(payVO.getSopmalCd()); + orderVO.setOrdrInnb(new BigInteger(payVO.getOrderId())); + if (StringUtils.hasText(payVO.getMbrInnb())) { + orderVO.setMbrInnb(new BigInteger(payVO.getMbrInnb())); + } + // 주문 공통 후처리 + commonOrderPostProcess(payVO); + } + + return content; + } + + + /** + * bo로직 사용자 > 상품 > 장바구니 > 장바구니 조회 > 장바구니 상품 목록 조회 + */ + public Map selectBOSpbkGoodsList(BOSpbkVO spbkVO) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + spbkVO.setSopmalCd(user.getSopmalCd()); + spbkVO.setMbrInnb(String.valueOf(user.getUserInnb())); + spbkVO.setMbrDvCd(user.getMbrDvCd()); + } + spbkVO.setMbrId(user.getMbrId()); + //장바구니 상품 조회 + Map content = service.selectSpbkGoodsList(spbkVO); + + return content; + } + + + /** + * 블랙리스트체크 + 구매 전 요청된 구매정보에 따른 구매가능여부 재확인 + */ + public Map selectBlclist(DataMap param) { + Map content = new HashMap<>(); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + String temp = user.getSopmalCd(); + param.put("sopmalCd", temp); + + LinkedHashMap purchsr = (LinkedHashMap) param.get("purchsr"); // 구매자 정보 + LinkedHashMap shipping = (LinkedHashMap) param.get("shipping"); // 배송지 정보 + LinkedHashMap multiOrdrDlvylc = (LinkedHashMap) param.get("multiOrdrDlvylc"); // 주문배송정보 (여러곳 배송) + // 결제 예정 금액 계산시 배송정보를 'dlvylc' 객체를 사용 + param.put("dlvylc", shipping); + List goodsList = (List) param.get("goodsList"); // 상품정보 + LinkedHashMap enuri = null; + LinkedHashMap setle = null; + + //회원일 경우에만 enuri정보 존재 + if(user.getUserInnb() > 0){ + enuri = (LinkedHashMap) param.get("enuri"); //할인정보 + setle = (LinkedHashMap) param.get("setle"); //결제정보 + }else{ + //비회원일 경우 enuri 없고 setle만 존재 + enuri = (LinkedHashMap) param.get("setle"); //결제정보 + setle = (LinkedHashMap) param.get("setle"); //결제정보 + } + + if (CollectionUtils.isEmpty(purchsr)) { + log.info("구매자 정보를 찾을 수 없습니다."); + content.put("result","Y"); + content.put("message", "구매자 정보를 찾을 수 없습니다."); +// throw new WnbtRestException("구매자 정보를 찾을 수 없습니다."); + return content; + } + + if ("05".equals(param.get("ordrTyCd"))) { + if (CollectionUtils.isEmpty(multiOrdrDlvylc)) { + log.info("배송지 정보를 찾을 수 없습니다."); + content.put("result","Y"); + content.put("message", "배송지 정보를 찾을 수 없습니다."); + // throw new WnbtRestException("주문유형 정보를 찾을 수 없습니다."); + return content; + } + } else { + if (CollectionUtils.isEmpty(shipping)) { + log.info("배송지 정보를 찾을 수 없습니다."); + content.put("result","Y"); + content.put("message", "배송지 정보를 찾을 수 없습니다."); + // throw new WnbtRestException("주문유형 정보를 찾을 수 없습니다."); + return content; + } + } + + if (CollectionUtils.isEmpty(goodsList)) { + log.info("상품 정보를 찾을 수 없습니다."); + content.put("result","Y"); + content.put("message", "상품 정보를 찾을 수 없습니다."); + return content; + } + + + if (CollectionUtils.isEmpty(enuri)) { + log.info("할인 또는 결제 정보를 찾을 수 없습니다."); + content.put("result","Y"); + content.put("message", "할인 또는 결제 정보를 찾을 수 없습니다."); + return content; + } + + + String sopmalCd = (String) param.get("sopmalCd"); + String ordrTyCd = (String) param.get("ordrTyCd"); + String mbrInnb = (String) goodsList.get(0).get("mbrInnb"); + String mbrDvCd = (String) goodsList.get(0).get("mbrDvCd"); + String ordrrMbtlnb = (String) purchsr.get("mbtlnb"); + + String adres = ""; + String[] adresArray = null; // 배송지별 배송지 주소 + String[] receptMbtlnbArray = null; // 배송지 받는이 휴대폰번호 + + if ("01".equals(ordrTyCd) || "03".equals(ordrTyCd) || "06".equals(ordrTyCd)) { // 일반주문, 회원개인결제, 정기배송 + if ( + StringUtil.isEmpty((String) shipping.get("dlvylcZip")) || + StringUtil.isEmpty((String) shipping.get("dlvylcAdresDvCd")) || + ( "01".equals(shipping.get("dlvylcAdresDvCd")) && StringUtil.isEmpty((String) shipping.get("dlvylcRnmAdres")) ) || + ( "02".equals(shipping.get("dlvylcAdresDvCd")) && StringUtil.isEmpty((String) shipping.get("dlvylcLnbAdres")) ) || + StringUtil.isEmpty((String) shipping.get("dlvylcAdresDtl")) + ) { + content.put("result","Y"); + content.put("message", "배송지 정보를 찾을 수 없습니다. 다시 시도해 주세요."); + return content; + } + + String dlvylcAdresDvCd = (String) shipping.get("dlvylcAdresDvCd"); + String dlvylcLnbAdres = (String) shipping.get("dlvylcLnbAdres"); + String dlvylcRnmAdres = (String) shipping.get("dlvylcRnmAdres"); + String dlvylcAdresDtl = (String) shipping.get("dlvylcAdresDtl"); + + adres = "01".equals(dlvylcAdresDvCd) ? dlvylcRnmAdres + " " + dlvylcAdresDtl : dlvylcLnbAdres + " " + dlvylcAdresDtl; + + String recpntMbtlnb = StringUtil.isNullToString(shipping.get("recpntMbtlnb")); + receptMbtlnbArray = new String[]{recpntMbtlnb}; + } else if ("05".equals(ordrTyCd)) { // 여러곳 배송 + if (!CollectionUtils.isEmpty(multiOrdrDlvylc)) { + + // 배송지 리스트 + List> dlvylcListMulti = (List>) multiOrdrDlvylc.get("dlvylc"); + + /** ----------------------------------------------- 배송지별 주문 상품 수량 검사 START ----------------------------------------------- */ + content = checkDistributedQyMatchesOrder(goodsList, dlvylcListMulti); + if (!"0".equals(content.get("status"))) { + return content; + } + /** ----------------------------------------------- 배송지별 주문 상품 수량 검사 END ----------------------------------------------- */ + + // 부정판매 체크를 위한 배송지 정렬 + if (!CollectionUtils.isEmpty(dlvylcListMulti)) { + + boolean hasInvalidAddress = dlvylcListMulti.stream().anyMatch(map -> { + String dlvylcZip = StringUtil.isNullToString(map.get("dlvylcZip")); + String adresDvCd = StringUtil.isNullToString(map.get("dlvylcAdresDvCd")); + String dlvylcLnbAdres = StringUtil.isNullToString(map.get("dlvylcLnbAdres")); + String dlvylcRnmAdres = StringUtil.isNullToString(map.get("dlvylcRnmAdres")); + String adresDtl = StringUtil.isNullToString(map.get("dlvylcAdresDtl")); + + return StringUtil.isEmpty(dlvylcZip) + || StringUtil.isEmpty(adresDvCd) + || ("01".equals(adresDvCd) && StringUtil.isEmpty(dlvylcRnmAdres)) + || ("02".equals(adresDvCd) && StringUtil.isEmpty(dlvylcLnbAdres)) + || StringUtil.isEmpty(adresDtl); + }); + + if (hasInvalidAddress) { + content.put("result","Y"); + content.put("message", "배송지 정보를 찾을 수 없습니다. 다시 시도해 주세요."); + return content; + } + + List adresList = dlvylcListMulti.stream() + .map(map -> { + String adresDvCd = StringUtil.isNullToString(map.get("dlvylcAdresDvCd")); + String adresDtl = StringUtil.isNullToString(map.get("dlvylcAdresDtl")); + String dlvylcLnbAdres = StringUtil.isNullToString(map.get("dlvylcLnbAdres")); + String dlvylcRnmAdres = StringUtil.isNullToString(map.get("dlvylcRnmAdres")); + String adresMulti; + if ("01".equals(adresDvCd)) { + adresMulti = dlvylcRnmAdres + " " + adresDtl; + } else { + adresMulti = dlvylcLnbAdres + " " + adresDtl; + } + + return adresMulti; + }) + .collect(Collectors.toList()); + + adresArray = adresList.toArray(new String[0]); + + List receptMbtlnbList = dlvylcListMulti.stream() + .map(map -> { + return StringUtil.isNullToString(map.get("recpntMbtlnb")); + }) + .collect(Collectors.toList()); + + receptMbtlnbArray = receptMbtlnbList.toArray(new String[0]); + + } + } + } else if ("04".equals(ordrTyCd)) { // 선물하기 + if ( + !StringUtil.isEmpty((String) shipping.get("dlvylcZip")) || + !StringUtil.isEmpty((String) shipping.get("dlvylcAdresDvCd")) || + !StringUtil.isEmpty((String) shipping.get("dlvylcLnbAdres")) || + !StringUtil.isEmpty((String) shipping.get("dlvylcRnmAdres")) || + !StringUtil.isEmpty((String) shipping.get("dlvylcAdresDtl")) + ) { + content.put("result","Y"); + content.put("message", "구매정보가 변경 되었습니다. 다시 시도해 주세요."); + return content; + } + } + + BOInstcSleVO instcSleVO = new BOInstcSleVO(); + + String agentId = StringUtil.isNullToString(param.get("agentId")); + instcSleVO.setOrdrTyCd(ordrTyCd); + instcSleVO.setSopmalCd(sopmalCd); + instcSleVO.setMbrInnb(mbrInnb); + instcSleVO.setMbrDvCd(mbrDvCd); + instcSleVO.setOrdrrMbtlnb(ordrrMbtlnb); + instcSleVO.setOrdrrMbtlnb(ordrrMbtlnb); + instcSleVO.setAdres(adres); + instcSleVO.setAdresMulti(adresArray); + instcSleVO.setRecpntMbtlnbArr(receptMbtlnbArray); + instcSleVO.setAgentId(agentId); + instcSleVO.setAppnDvCd("02"); //02:블랙리스트 + + //블랙리스트 여부 + content = boMaMtngService.checkInstcSle(instcSleVO); + + //구매금액재계산 사용여부 + String useAt = boMaMtngService.selectPurchsValidUseAt(sopmalCd); + if("Y".equals(useAt)){ + //총금액 계산 + try { + //계산결과 총결제금액 + String resultSetleAmt = ""; + //주문요청 총결제금액 + //회원/비회원 총결제금액 + String reqSetleAmt = StringUtil.isNullToString(setle.get("rlSetleAmt")); + //재계산된 총결제금액관련정보 + Map resultAmt = service.selectSetleExpectAmt(param); + + if(resultAmt.containsKey("setleExpectAmt")){ + LinkedHashMap setleExpectAmt = (LinkedHashMap) resultAmt.get("setleExpectAmt"); + if(setleExpectAmt.containsKey("setleAmt")){ + resultSetleAmt = StringUtil.isNullToString(setleExpectAmt.get("setleAmt")); + } + + //주문요청의 총결제금액과 계산된 총결제금액이 서로 다를 경우 + if(!resultSetleAmt.equals(reqSetleAmt) + && StringUtils.hasText(reqSetleAmt) + && StringUtils.hasText(resultSetleAmt)){ + content.put("result", "Y"); + content.put("message", PurchsValidCode.purchsValidMsg("setleAmt")); + } + } + } catch (WnbtRestException wre) { + log.error(wre.getMessage()); + Map wreExetption = new HashMap<>(); + wreExetption.put("result", "Y"); + wreExetption.put("message", wre.getMessage()); + + return wreExetption; + } + catch (Exception e) { + log.error(e.getMessage()); + Map exception = new HashMap<>(); + exception.put("result", "Y"); + exception.put("message", "예기치 못한 오류가 발생하였습니다.\n관리자에게 문의하시기 바랍니다."); + + return exception; + } + + //블랙리스트 여부 및 총금액 계산 통과시 주문정보 재확인 + if("N".equals(content.get("result"))){ + //주문 전 요청 주문 정보에 따른 현재 컨디션 재확인관련 데이터(vo) 전처리 + List validVOList = boMaMtngService.selectBOPreOrderValidationList(param); + //주문 전 사용 쿠폰 컨디션 재확인 + content = boMaMtngService.selectBOPreOrderValidationCouponList(validVOList); + //사용 쿠폰 컨디션 통과시 + if("N".equals(content.get("result"))) { + //주문 전 요청 주문 정보에 따른 현재 컨디션 재확인 + content = boMaMtngService.selectBOPreOrderValidation(validVOList); + } + } + } + return content; + } + + /** + * 여러곳 배송 > 배송지별 상품 분배 수량 검증 + * @param goodsList + * @param dlvylcListMulti + * @return + */ + public Map checkDistributedQyMatchesOrder(List goodsList, List> dlvylcListMulti) { + Map content = new HashMap<>(); + + // (1) 주문 상품 기준: goodsOptnInnb별 총 주문 수량 계산 + Map requiredQuantityMap = goodsList.stream() + .collect(Collectors.groupingBy( + goods -> (Integer) goods.get("goodsOptnInnb"), + Collectors.summingInt(goods -> (Integer) goods.get("qy")) + )); + + log.debug("requiredQuantityMap : {}", requiredQuantityMap); + + // (2) 배송지별 분배 수량 집계 + Map distributedQuantityMap = new HashMap<>(); + + if (!CollectionUtils.isEmpty(dlvylcListMulti)) { + + for (LinkedHashMap dlvylcMapMulti : dlvylcListMulti) { + log.debug("dlvylcMapMulti : {}", dlvylcMapMulti); + + // 배송지별 상품 목록 + List goodsListMulti = (List) dlvylcMapMulti.get("goodsList"); + + for (LinkedHashMap goods : goodsListMulti) { + Integer goodsOptnInnb = (Integer) goods.get("goodsOptnInnb"); + Integer ordrQy = (Integer) goods.get("qy"); + + distributedQuantityMap.merge(goodsOptnInnb, ordrQy, Integer::sum); + } + } + + // (3) 상품별 분배 수량 검증 + for (Map.Entry entry : requiredQuantityMap.entrySet()) { + Integer goodsOptnInnb = entry.getKey(); + int requiredQty = entry.getValue(); + int distributedQty = distributedQuantityMap.getOrDefault(goodsOptnInnb, 0); + + if (requiredQty != distributedQty) { + log.info("상품 [{}] 주문 수량: {}, 배송지 분배 수량: {} → 불일치", goodsOptnInnb, requiredQty, distributedQty); + content.put("status","1"); + content.put("result","Y"); + content.put("message", "배송지별 분배 수량이 맞지 않습니다."); + break; + } else { + content.put("status","0"); + log.info("상품 [{}] 수량 검증 통과: {}", goodsOptnInnb, requiredQty); + } + } + } + + return content; + }; } diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/PayController.java b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/PayController.java index 0484b60d..2f1a423a 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/PayController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/ordr/controller/PayController.java @@ -5,17 +5,24 @@ import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Base64; +import java.util.HashMap; +import java.util.Map; +import com.wb.domainserver.domain.gcone.ordr.pay.service.BOPayService; +import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO; import com.wb.domainserver. exception.code.ErrCode; import com.wb.domainserver.exception.WnbtException; +import com.wb.domainserver.response.ApiResponse; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -45,6 +52,8 @@ public class PayController { @Autowired private SendToResrc sendToResrc; + @Autowired + private BOPayService service; /* ********************************************* * 토스 결제 관련 ********************************************* */ @@ -170,11 +179,11 @@ public class PayController { * @author 이경숙 */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/tossPayWidgetSuccss") + @RequestMapping(value="/tossPayWidgetSuccss",produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity confirmPaymentWiget(@RequestBody String jsonBody) throws Exception { JSONParser parser = new JSONParser(); - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); try { // 클라이언트에서 받은 JSON 요청 바디입니다. JSONObject requestData = (JSONObject) parser.parse(jsonBody); @@ -185,10 +194,16 @@ public class PayController { throw new RuntimeException(e); }; - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/tossPayProc", payVO), - ReplyFromResrc::getReply + Map content = insertTossPay(payVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/tossPayProc", payVO), +// ReplyFromResrc::getReply +// ); } @@ -200,18 +215,18 @@ public class PayController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/tossPaySuccss") public String confirmPayment(HttpServletRequest request, ModelMap model) throws Exception { - - PayVO payVO = new PayVO(); - + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("orderId")); payVO.setPaymentKey(request.getParameter("paymentKey")); payVO.setAmount(request.getParameter("amount")); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/tossPayProc", payVO), - model, - "message" - ); + Map content = insertTossPay(payVO); + model.addAttribute("message", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/tossPayProc", payVO), +// model, +// "message" +// ); return "sopmal/ordr/PayTossPaySucsC"; } @@ -224,13 +239,24 @@ public class PayController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/tossPayKeyinSuccss") - public String confirmPaymentKeyin(PayVO payVO,ModelMap model) { + public String confirmPaymentKeyin(BOPayVO payVO,ModelMap model) { + Map message; + String sopmalCd = payVO.getSopmalCd(); + try { + message = service.insertTossPayKeyin(payVO); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/tossPayKeyinProc", payVO), - model, - "message" - ); + } catch (Exception e) { + message = new HashMap<>() {{ + put("response", "결제를 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + model.addAttribute("message", message); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/tossPayKeyinProc", payVO), +// model, +// "message" +// ); return "sopmal/ordr/PayTossPaySucsC"; } @@ -243,13 +269,24 @@ public class PayController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/tossPayCancel") - public String cancelTossPay(PayVO payVO,ModelMap model) { + public String cancelTossPay(BOPayVO payVO,ModelMap model) { + Map message; + String sopmalCd = payVO.getSopmalCd(); + try { + message = service.cancelTossPay(payVO); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/cancelTossPay", payVO), - model, - "message" - ); + } catch (Exception e) { + message = new HashMap<>() {{ + put("response", "결제취소를 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + model.addAttribute("message", message); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/cancelTossPay", payVO), +// model, +// "message" +// ); return "sopmal/ordr/PayTossPaySucsC"; } @@ -307,7 +344,7 @@ public class PayController { @RequestMapping(value="/kcpPaySuccss") public String confirmPaymentKcp(HttpServletRequest request, ModelMap model) throws Exception { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordr_idxx")); payVO.setAmount(request.getParameter("good_mny")); @@ -317,11 +354,23 @@ public class PayController { payVO.setEncData(request.getParameter("enc_data")); payVO.setTranCd(request.getParameter("tran_cd")); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/kcpPayProc", payVO), - model, - "message" - ); + Map message; + String sopmalCd = payVO.getSopmalCd(); + try { + message = service.insertKcpPay(payVO); + + } catch (Exception e) { + message = new HashMap<>() {{ + put("response", "결제를 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + model.addAttribute("message", message); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/kcpPayProc", payVO), +// model, +// "message" +// ); return "sopmal/ordr/PayKcpSucsC"; } @@ -335,13 +384,24 @@ public class PayController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/kcpPayKeyinSuccss") - public String confirmPaymentKcpKeyin(PayVO payVO,ModelMap model) { + public String confirmPaymentKcpKeyin(BOPayVO payVO,ModelMap model) { + Map message; + String sopmalCd = payVO.getSopmalCd(); + try { + message = service.insertKcpPayKeyin(payVO); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/kcpPayKeyinProc", payVO), - model, - "message" - ); + } catch (Exception e) { + message = new HashMap<>() {{ + put("response", "결제를 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + model.addAttribute("message", message); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/kcpPayKeyinProc", payVO), +// model, +// "message" +// ); return "sopmal/ordr/PayKcpSucsC"; } @@ -353,12 +413,27 @@ public class PayController { * @author 이경숙 */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/kcpPayCancel") - public ResponseEntity cancelKcpPay(PayVO payVO) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/cancelKcpPay", payVO), - ReplyFromResrc::getReply + @RequestMapping(value="/kcpPayCancel",produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity cancelKcpPay(BOPayVO payVO) { + Map message; + String sopmalCd = payVO.getSopmalCd(); + try { + message = service.cancelKcpPay(payVO); + } catch (Exception e) { + message = new HashMap<>() {{ + put("response", "KCP 결제 취소를 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/cancelKcpPay", payVO), +// ReplyFromResrc::getReply +// ); } @@ -409,12 +484,31 @@ public class PayController { * @author 이경숙 */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/CashReceipt") - public ResponseEntity insertCashReceipt(PayVO payVO) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/cashReceipt", payVO), - ReplyFromResrc::getReply + @RequestMapping(value="/CashReceipt",produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertCashReceipt(BOPayVO payVO) { + Map message; + String sopmalCd = payVO.getSopmalCd(); + try { + //쇼핑몰에 따라 pg사 구분함 + if(sopmalCd.equals("NC")) { + message = service.insertKcpCashReceipt(payVO); //kcp + }else { + message = service.insertTossCashReceipt(payVO); //토스 + } + } catch (Exception e) { + message = new HashMap<>() {{ + put("response", "현금영수증 발급을 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/cashReceipt", payVO), +// ReplyFromResrc::getReply +// ); } @@ -423,12 +517,31 @@ public class PayController { * @author 이경숙 */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/CashReceiptCancel") - public ResponseEntity cancelCashReceipt(PayVO payVO) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/cashReceiptCancel", payVO), - ReplyFromResrc::getReply + @RequestMapping(value="/CashReceiptCancel",produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity cancelCashReceipt(BOPayVO payVO) { + Map message; + String sopmalCd = payVO.getSopmalCd(); + try { + //쇼핑몰에 따라 pg사 구분함 + if(sopmalCd.equals("NC")) { + message = service.cancelKcpCashReceipt(payVO); //kcp + }else { + message = service.cancelTossCashReceipt(payVO); //토스 + } + } catch (Exception e) { + message = new HashMap<>() {{ + put("response", "현금영수증 발급취소를 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/pay/cashReceiptCancel", payVO), +// ReplyFromResrc::getReply +// ); } @@ -496,12 +609,25 @@ public class PayController { } catch (WnbtException e) { throw new WnbtException(ErrCode.BAD_REQUEST, e.getMessage()); } - - - - return ResponseEntity.status(code).body(jsonObject); } + /** + * bo로직 토스뱅크 결제 + */ + public Map insertTossPay(BOPayVO payVO) { + Map message; + String sopmalCd = payVO.getSopmalCd(); + try { + message = service.insertTossPay(payVO); + + } catch (Exception e) { + message = new HashMap<>() {{ + put("response", "결제를 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + return message; + } + }