diff --git a/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/vo/BOMbrVO.java b/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/vo/BOMbrVO.java index e669bc9e..90d49eeb 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/vo/BOMbrVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/vo/BOMbrVO.java @@ -3,6 +3,7 @@ package com.wb.domainserver.domain.gcone.mbr.mbr.vo; import com.wb.domainserver.domain.comm.vo.AbstractVO; import com.wb.domainserver.domain.crm.mbr.vo.CrmMbrVO; import com.wb.domainserver.util.dataaccess.DataMap; +import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; @@ -63,10 +64,12 @@ public class BOMbrVO extends AbstractVO{ private String mbrTyCd; /**회원id*/ private String mbrId; - /**회원비밀번호*/ + /** 회원비밀번호 */ private String mbrPassword; /** 변경할 비밀번호 */ private String newPassword; + /** 변경할 비밀번호 확인 비밀번호 */ + private String checkPassword; /** 회원비밀번호 확인 */ private String mbrPasswordChk; /**비밀번호변경일자*/ diff --git a/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/vo/BOWishVO.java b/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/vo/BOWishVO.java index 2ea035ac..fe5a86b8 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/vo/BOWishVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/vo/BOWishVO.java @@ -51,6 +51,11 @@ public class BOWishVO extends AbstractVO{ private String[] wslistInnbArr; + /** AGENT */ + private String agent; + + private String serverDv; + } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOCrmDlvylcVO.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOCrmDlvylcVO.java index d13639ed..27887828 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOCrmDlvylcVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOCrmDlvylcVO.java @@ -69,4 +69,6 @@ public class BOCrmDlvylcVO extends AbstractVO{ /* formId */ private String formId; + /*모바일 여부 확인*/ + private String isMobile; } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrDlvyVO.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrDlvyVO.java index 2d3ce25a..19e425ec 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrDlvyVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrDlvyVO.java @@ -39,4 +39,8 @@ public class BOOrdrDlvyVO extends AbstractVO { /** 현재 주문 상태 */ private String currOrdrSttusCd; + private String dateRange; // 기간 + private String serverDv; // 서버 구분 + private String mpageAt; // 마이페이지 여부 + private String[] cookieValArr;//쿠키 } 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/gcone/ordr/rtngudrefnd/vo/BORtngudrefndVO.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/rtngudrefnd/vo/BORtngudrefndVO.java index 8d3919f2..1fe3d75f 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/rtngudrefnd/vo/BORtngudrefndVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/rtngudrefnd/vo/BORtngudrefndVO.java @@ -199,4 +199,9 @@ public class BORtngudrefndVO extends AbstractVO{ /** 실 환불 GC 머니 금액 */ private String prosbleCancelCashAmt; + + //** 반품처리상태 */ + private String[] returnProcsStuusCd; + + private String serverDv; } diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/mbr/controller/MbrController.java b/src/main/java/com/wb/domainserver/domain/sopmal/mbr/controller/MbrController.java index 9c0e546b..c6ad07a4 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/mbr/controller/MbrController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/mbr/controller/MbrController.java @@ -15,9 +15,7 @@ import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService; 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.promtn.coupon.service.BOCouponService; -import com.wb.domainserver.domain.sopmal.main.vo.MaSopmalVO; import com.wb.domainserver.domain.sopmal.mbr.vo.MbrVO; -import com.wb.domainserver.domain.sopmal.mpage.mbr.vo.MyMbrPwdChngVO; import com.wb.domainserver.exception.WnbtRestException; import com.wb.domainserver.realm.util.UrlExtractor; import com.wb.domainserver.response.WnbtResponse; @@ -27,8 +25,6 @@ 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.communicate.ValidateResultConverter; import com.wb.domainserver.util.dataaccess.DataMap; @@ -39,6 +35,7 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; 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; @@ -284,7 +281,7 @@ public class MbrController { * @author 이대환 */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/insertPhoneAuth") + @RequestMapping(value="/insertPhoneAuth", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity insertPhoneAuth(BOMbrVO vo, BindingResult bindingResult){ AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); @@ -348,7 +345,7 @@ public class MbrController { * @author 이대환 */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectPhoneAuth") + @RequestMapping(value="/selectPhoneAuth", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectPhoneAuth(BOMbrVO vo, BindingResult bindingResult){ DataMap content = new DataMap(); @@ -366,7 +363,7 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/insertUsrJoinRegist") + @RequestMapping(value="/insertUsrJoinRegist", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity insertUsrJoinRegist(HttpServletRequest request, HttpServletResponse response, @Validated BOMbrVO vo, BindingResult bindingResult){ HttpSession session = request.getSession(); @@ -549,7 +546,7 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectMbrwithdrawalSearch") + @RequestMapping(value="/selectMbrwithdrawalSearch", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectMbrwithdrawalSearch(BOMbrVO vo, BindingResult bindingResult){ AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); @@ -581,7 +578,7 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectIdDplctCnfirm") + @RequestMapping(value="/selectIdDplctCnfirm", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectIdDplctCnfirm(BOMbrVO vo, BindingResult bindingResult){ AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); @@ -618,7 +615,7 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectUsrLogin") + @RequestMapping(value="/selectUsrLogin", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectUsrLogin(BOMbrVO vo, BindingResult bindingResult){ Map content = new HashMap<>(); @@ -637,7 +634,7 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectNmbrOrdrInqire") + @RequestMapping(value="/selectNmbrOrdrInqire", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectNmbrOrdrInqire(BOMbrVO vo, BindingResult bindingResult){ Map content = new HashMap<>(); @@ -666,7 +663,7 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectPasswordSearch") + @RequestMapping(value="/selectPasswordSearch", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectIdPasswordSearch(BOMbrVO vo){ List> errorList = new ArrayList<>(); @@ -730,7 +727,7 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectIdSearch") + @RequestMapping(value="/selectIdSearch", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectIdSearch(BOMbrVO vo){ List> errorList = new ArrayList<>(); @@ -807,7 +804,7 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/insertMbrLoginInfo") + @RequestMapping(value="/insertMbrLoginInfo", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity insertMbrLoginInfo(BOMbrVO vo){ //쇼핑몰코드 set AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); @@ -878,8 +875,8 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping("/updatePasswordChng") - public ResponseEntity passWordChng(@Validated MyMbrPwdChngVO mymbrVO, @Validated BOMbrVO vo, BindingResult bindingResult) { + @RequestMapping(value = "/updatePasswordChng", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity passWordChng(@Validated BOMbrVO mymbrVO, @Validated BOMbrVO vo, BindingResult bindingResult) { // 정합성 검사 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); @@ -887,9 +884,9 @@ public class MbrController { //비밀번호 변경시 /*1 비밀번호 변경 시 현재 비밀번호 확인*/ - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrPasswordCnfirm", mymbrVO) - ); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrPasswordCnfirm", mymbrVO) +// ); // 사용자 정보 추출 및 적용 AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); @@ -957,7 +954,7 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping("/updatePasswordChngLater") + @RequestMapping(value = "/updatePasswordChngLater", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity passWordChngLater(BOMbrVO vo) { // 사용자 정보 추출 및 적용 AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); @@ -988,8 +985,6 @@ public class MbrController { @Policy(AuthPolicy.PUBLIC) @RequestMapping("/selectMbrMarktAgreePopup") public String selectMbrMarktAgreePopup(HttpServletRequest request, BOMaSopmalVO vo, ModelMap model) { - - AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); vo.setSopmalCd(user.getSopmalCd()); @@ -1017,7 +1012,7 @@ public class MbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping("/updateMarkRecptnAgreUpdt") + @RequestMapping(value = "/updateMarkRecptnAgreUpdt", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity updateMarkRecptnAgreUpdt(BOMbrVO vo) { //마케팅 수신동의 수정 @@ -1031,7 +1026,6 @@ public class MbrController { vo.setRegusr(user.getUserInnb()); vo.setUpdusr(user.getUserInnb()); - Map content = new HashMap<>(); DataMap dataMap = new DataMap(); @@ -1060,13 +1054,12 @@ public class MbrController { .resBody(new WnbtResponseBody(content)) .build() ); - } /** * 코드 디코딩 * @param code - * @return ResponseEntity + * @return int */ public int code2seq(String code) { // HEX 제외 문자 배열 diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/mpage/act/controller/MyActController.java b/src/main/java/com/wb/domainserver/domain/sopmal/mpage/act/controller/MyActController.java index 6589e866..f16f7728 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/mpage/act/controller/MyActController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/mpage/act/controller/MyActController.java @@ -1,25 +1,52 @@ package com.wb.domainserver.domain.sopmal.mpage.act.controller; import com.wb.domainserver.common.msg.GconeMessageSource; -import com.wb.domainserver.domain.sopmal.csc.vo.GnrlBbscttVO; -import com.wb.domainserver.domain.sopmal.mpage.act.vo.RvwVO; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo; +import com.wb.domainserver.common.prop.PaginationProperties; +import com.wb.domainserver.domain.gcone.bbs.bbs.service.BOBbsService; +import com.wb.domainserver.domain.gcone.bbs.bbs.vo.BOBbsVO; +import com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.service.BOGnrlbbscttService; +import com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.vo.BODelInfoVO; +import com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.vo.BOGnrlbbscttVO; +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.mbr.mbr.service.BOMbrService; +import com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO; +import com.wb.domainserver.domain.gcone.mbr.mlg.service.BOMlgService; +import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOMlgVO; +import com.wb.domainserver.domain.gcone.setup.site.service.BOSiteService; +import com.wb.domainserver.domain.gcone.setup.site.vo.BOSiteVO; 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.*; +import com.wb.domainserver.util.communicate.SendToResrc; +import com.wb.domainserver.util.dataaccess.DataMap; import com.wb.domainserver.util.file.service.FileStorageService; 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.util.CollectionUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * MyActController Class (back) * @@ -55,30 +82,53 @@ public class MyActController { @Autowired private FileStorageService filestore; - /** + + @Autowired + private BOGnrlbbscttService service; + @Autowired + private BOBbsService bbsService; + @Autowired + private BOMlgService mlgService; + @Autowired + private BOGoodsService goodsService; + @Autowired + private BOMbrService boMbrService; + @Autowired + private BOCommonService boCommonService; + @Autowired + private PaginationProperties paginationProperties; + @Autowired + private BOSiteService boSiteService; + + + /** * 상품 Q&A 조회 * @param bbsctt * @return String */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectGoodsQnaInqire") - public String selectGoodsQnaInqire(HttpServletRequest request, ModelMap model, GnrlBbscttVO bbsctt){ + public String selectGoodsQnaInqire(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO bbsctt, BOMbrVO vo){ bbsctt.setBbsTyCd("05"); bbsctt.setServerDv("sopmal"); bbsctt.setReqUrl("mpage"); - //BO에서 API 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt), - model, - "resultMap" - ); + DataMap content = selectBOBbscttListInqire(bbsctt); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt), +// model, +// "resultMap" +// ); + + Map content2 = selectBOMpageInfoInqire(vo); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt), - model, - "mpageResultMap" - ); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request)+"/mpage/act/MyGoodsQaR"; } @@ -88,16 +138,23 @@ public class MyActController { * @return String */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectGoodsQnaInqireAjax") - public ResponseEntity selectGoodsQnaInqireAjax(GnrlBbscttVO bbsctt){ + @RequestMapping(value="/selectGoodsQnaInqireAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGoodsQnaInqireAjax(BOGnrlbbscttVO bbsctt){ bbsctt.setBbsTyCd("05"); bbsctt.setServerDv("sopmal"); bbsctt.setReqUrl("mpage"); //게시글 노출 항목 설정값과 게시판 목록 조회 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt), - ReplyFromResrc::getReply + + DataMap content = selectBOBbscttListInqire(bbsctt); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt), +// ReplyFromResrc::getReply +// ); } /** @@ -106,14 +163,25 @@ public class MyActController { * @return String */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectFileInfo") - public ResponseEntity selectFileInfo(HttpServletRequest request, ModelMap model, GnrlBbscttVO bbsctt){ + @RequestMapping(value="/selectFileInfo", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectFileInfo(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); - //BO에서 API 호출 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOFileInfo",bbsctt), - ReplyFromResrc::getReply + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + DataMap content = new DataMap(); + content.put("fileInfo", service.selectFileInfo(bbsctt)); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOFileInfo",bbsctt), +// ReplyFromResrc::getReply +// ); } /** @@ -123,22 +191,73 @@ public class MyActController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectGoodsQnaDtlUpdtForm") - public String selectGoodsQnaDtlUpdtForm(HttpServletRequest request, ModelMap model,GnrlBbscttVO bbsctt){ + public String selectGoodsQnaDtlUpdtForm(HttpServletRequest request, ModelMap model,BOGnrlbbscttVO bbsctt, BOMbrVO vo){ bbsctt.setServerDv("sopmal"); - //BO에서 API 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + ; + if (user.getUserInnb() > 0) { + if ("mngr".equals(bbsctt.getServerDv())) { + bbsctt.setRegusrDvCd("02"); //관리자 + } else { + bbsctt.setRegusrDvCd("01"); //회원 + bbsctt.setAnswMbtlnb(user.getMbtlnb()); + } + } else { + bbsctt.setRegusrDvCd("99");//비회원 + } + bbsctt.setSecretKey(boCommonService.selectSecretkey()); + // 게시판 설정 정보 + BOBbsVO bbsVO = new BOBbsVO(); + // bbsVO에 쇼핑몰코드, 해당 게시판 set + bbsVO.setSopmalCd(bbsctt.getSopmalCd()); + bbsVO.setBbsId(bbsctt.getBbsId()); + bbsVO.setBbsTyCd(bbsctt.getBbsTyCd()); + DataMap bbsInfo = new DataMap(); + bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO); + + // 게시글 상세 조회 + Map bbscttInfo = new HashMap(); + bbscttInfo = service.selectBOBbscttUpdt(bbsctt); + + // 분류 조회 + List itmList = new ArrayList<>(); + itmList = service.selectBOBbscttItmInqire(bbsctt); + + //추가 항목 조회, 추가항목 항목 조회 + Map qesitmList = new HashMap(); + qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt); + + //리뷰항목 리스트, 리뷰항목 항목 리스트 + Map rvwQesitmList = new HashMap(); + rvwQesitmList = service.selectBOStarItm(bbsctt); + + Map content = new HashMap(); + content.put("bbsInfo", bbsInfo); + content.put("bbscttVO", bbsctt); + content.put("bbscttInfo", bbscttInfo); + content.put("itmList", itmList); + content.put("qesitmList", qesitmList); + content.put("rvwQesitmList", rvwQesitmList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt), +// model, +// "resultMap" +// ); model.addAttribute("bbsctt", bbsctt); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(vo); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request)+"/mpage/act/MyGoodsQnaDtlUpdtU"; } @@ -150,20 +269,29 @@ public class MyActController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectMyRvwInqireForm") - public String selectMyRvwInqireForm(HttpServletRequest request, ModelMap model,GnrlBbscttVO bbsctt){ - //BO에서 API 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBORvwBnefInfo",bbsctt), - model, - "mlgAccmlNtc" - ); + public String selectMyRvwInqireForm(HttpServletRequest request, ModelMap model,BOGnrlbbscttVO bbsctt, BOMbrVO vo){ + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + + /*리뷰 조회 폼*/ + DataMap rvwBnefInfo = new DataMap(); + rvwBnefInfo = service.selectBORvwBnefInfo(bbsctt); + + model.addAttribute("mlgAccmlNtc", rvwBnefInfo); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBORvwBnefInfo",bbsctt), +// model, +// "mlgAccmlNtc" +// ); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(vo); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt), +// model, +// "mpageResultMap" +// ); model.addAttribute("vo",bbsctt); return Util.getDeviceType(request)+"/mpage/act/MyRvwRForm"; } @@ -174,15 +302,17 @@ public class MyActController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectWritngPosblRvwInqire") - public String selectWritngPosblRvwInqire(HttpServletRequest request, ModelMap model,RvwVO rvwVO){ + public String selectWritngPosblRvwInqire(HttpServletRequest request, ModelMap model,BOGnrlbbscttVO rvwVO){ rvwVO.setRvwBbscttDv("rvw"); rvwVO.setServerDv("sopmal"); - //BO에서 API 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw",rvwVO), - model, - "resultMap" - ); + + Map content = selectBOWritPosblRvw(rvwVO); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw",rvwVO), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/mpage/act/WritngPosblRvwR"; } /** @@ -191,15 +321,21 @@ public class MyActController { * @return String */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectWritngPosblRvwInqireAjax") - public ResponseEntity selectWritngPosblRvwInqireAjax(RvwVO rvwVO){ + @RequestMapping(value="/selectWritngPosblRvwInqireAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectWritngPosblRvwInqireAjax(BOGnrlbbscttVO rvwVO){ rvwVO.setRvwBbscttDv("rvw"); rvwVO.setServerDv("sopmal"); - //BO에서 API 호출 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw",rvwVO), - ReplyFromResrc::getReply + + Map content = selectBOWritPosblRvw(rvwVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw",rvwVO), +// ReplyFromResrc::getReply +// ); } /** @@ -209,16 +345,18 @@ public class MyActController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectMyRvwInqire") - public String selectMyRvwInqire(HttpServletRequest request, ModelMap model,RvwVO rvwVO){ + public String selectMyRvwInqire(HttpServletRequest request, ModelMap model,BOGnrlbbscttVO rvwVO){ rvwVO.setReqUrl("mpage"); rvwVO.setServerDv("sopmal"); rvwVO.setUseAt("Y"); - //BO에서 API 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire",rvwVO), - model, - "resultMap" - ); + + DataMap content = selectBOMyRvwListInqire(rvwVO); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire",rvwVO), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/mpage/act/MyRvwR"; } @@ -228,16 +366,22 @@ public class MyActController { * @return String */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/selectMyRvwInqireAjax") - public ResponseEntity selectMyRvwInqireAjax(RvwVO rvwVO){ + @RequestMapping(value="/selectMyRvwInqireAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMyRvwInqireAjax(BOGnrlbbscttVO rvwVO){ rvwVO.setReqUrl("mpage"); rvwVO.setServerDv("sopmal"); rvwVO.setUseAt("Y"); - //BO에서 API 호출 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire",rvwVO), - ReplyFromResrc::getReply + + DataMap content = selectBOMyRvwListInqire(rvwVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire",rvwVO), +// ReplyFromResrc::getReply +// ); } /** @@ -247,15 +391,18 @@ public class MyActController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectRvwWritngPopupForm") - public String selectRvwWritngPopupForm(HttpServletRequest request, ModelMap model, RvwVO rvwVO){ + public String selectRvwWritngPopupForm(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO rvwVO){ rvwVO.setRvwBbscttDv("rvw"); rvwVO.setServerDv("sopmal"); //리뷰 등록 가능 여부 true시 등록폼 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",rvwVO), - model, - "resultMap" - ); + + Map content = selectBOBbscttRegistPopupForm(rvwVO); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",rvwVO), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/mpage/act/RvwWritngPopupC"; } @@ -267,15 +414,120 @@ public class MyActController { * @return ResponseEntity */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/deleteRvwBbscttDel", method = RequestMethod.POST) - public ResponseEntity deleteRvwBbscttDel(@RequestBody GnrlBbscttVO bbsctt) { + @RequestMapping(value = "/deleteRvwBbscttDel", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteRvwBbscttDel(@RequestBody BOGnrlbbscttVO bbsctt) { bbsctt.setServerDv("sopmal"); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } - //BO에서 API 호출 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttDel",bbsctt), - ReplyFromResrc::getReply + // 작성자 정보 추출 + if (user.getUserInnb() > 0) { //회원 , 관리자 + bbsctt.setUpdusr(user.getUserInnb()); + } else { // 비회원 + bbsctt.setUpdusr(0); + } + + Map content = new HashMap<>(); + + /*게시글 삭제*/ + DataMap bbscttDelResult = service.updateBOBbscttDel(bbsctt); + content.put("result", bbscttDelResult); + /*삭제 성공 시*/ + if ("success".equals(bbscttDelResult.get("result"))) { + //리뷰 관련 처리 + if ("06".equals(bbsctt.getBbsTyCd()) || "07".equals(bbsctt.getBbsTyCd())) { + if (!CollectionUtils.isEmpty(bbsctt.getDelInfoArr())) { + /*해당 정보로 마일리지 금액 조회하기*/ + List accmlmnyAmtInfoArr = new ArrayList<>(); + BOMlgVO mlgVo = new BOMlgVO(); + for (BODelInfoVO delInfo : bbsctt.getDelInfoArr()) { + if ("01".equals(delInfo.getRegusrDvCd())) { + if ("03".equals(user.getSysDvCd())) { //관리자 삭제시 마일리지 회수 + /*공통 파라미터*/ + mlgVo.setMbrInnb(String.valueOf(delInfo.getRegusr())); + mlgVo.setMbrDvCd(delInfo.getMbrDvCd()); + mlgVo.setSopmalCd(bbsctt.getSopmalCd()); + mlgVo.setBbscttInnb(BigInteger.valueOf(delInfo.getBbscttInnb())); + mlgVo.setMlgApplcDvCd("06"); + mlgVo.setMlgApplcResn("[회수]리뷰(구매후기) 삭제에 의한 마일리지 차감"); + mlgVo.setRegusrDvCd("02"); + mlgVo.setUpdusrDvCd("02"); + mlgVo.setRegusr(user.getUserInnb()); + mlgVo.setUpdusr(user.getUserInnb()); + + /*마일리지 수동 회수 여부*/ + if ("N".equals(bbsctt.getMlgPassivRtrvlAt())) { // 선택 삭제시 + DataMap accmlmnyAmtInfo = new DataMap(); + accmlmnyAmtInfo = mlgService.selectBOMlgByBbscttInnb(mlgVo); + if (accmlmnyAmtInfo != null) { + mlgVo.setMbrInnb(String.valueOf(accmlmnyAmtInfo.get("regusr"))); + mlgVo.setMbrDvCd((String) accmlmnyAmtInfo.get("mbrDvCd")); + mlgVo.setSopmalCd((String) accmlmnyAmtInfo.get("sopmalCd")); + mlgVo.setBbscttInnb((BigInteger) accmlmnyAmtInfo.get("bbscttInnb")); + mlgVo.setAccmlmnyAmt((BigDecimal) accmlmnyAmtInfo.get("accmlmnyAmt")); + mlgService.insertBOMngrMlgDn(mlgVo); + } + } else { //단독 삭제시*/ + if (delInfo.getRtrvlMlgAmt() != null) { + if (delInfo.getRtrvlMlgAmt().compareTo(BigDecimal.valueOf(0)) > 0) { + mlgVo.setAccmlmnyAmt(delInfo.getRtrvlMlgAmt()); + mlgService.insertBOMngrMlgDn(mlgVo); + } + } + } + } + //회원 관련 + if (delInfo.getRegusr() != null) { + BOGnrlbbscttVO mbrSite = new BOGnrlbbscttVO(); + mbrSite.setSopmalCd(bbsctt.getSopmalCd()); + if ("sopmal".equals(bbsctt.getServerDv())) { + mbrSite.setRegusr(user.getUserInnb()); + mbrSite.setMbrDvCd(user.getMbrDvCd()); + } else { + mbrSite.setRegusr(delInfo.getRegusr()); + mbrSite.setMbrDvCd(delInfo.getMbrDvCd()); + } + service.updateBORvwWritngCnt(mbrSite); + } + } + + //상품관련 집계와 회원관련 집계는 관리자혹은 사용자가 모두 삭제 시 처리가 되어야해 + //상품 관련 + if (delInfo.getGoodsInnb() != null) { + BOGoodsVO goodsVO = new BOGoodsVO(); + goodsVO.setGoodsInnb(String.valueOf(delInfo.getGoodsInnb())); + goodsVO.setSopmalCd(bbsctt.getSopmalCd()); + /*상품정보 > 상품후기건수 차감*/ + goodsService.updateRvwRelateSm(goodsVO); + } + } + } + } else if ("05".equals(bbsctt.getBbsTyCd())) {//상품qna는 상품문의 집계만 + //상품 관련 + if (!CollectionUtils.isEmpty(bbsctt.getGoodsInnbArr())) { + for (String goodsInnb : bbsctt.getGoodsInnbArr()) { + BOGoodsVO goodsVO = new BOGoodsVO(); + goodsVO.setGoodsInnb(goodsInnb); + goodsVO.setSopmalCd(bbsctt.getSopmalCd()); + + /*상품정보 > 상품후기건수 차감*/ + goodsService.updateGoodsInqryCnt(goodsVO); + } + } + } + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttDel",bbsctt), +// ReplyFromResrc::getReply +// ); } /** @@ -286,14 +538,263 @@ public class MyActController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectRvwEasyRegistForm", method = RequestMethod.POST) - public String selectRvwEasyRegistForm(@RequestBody RvwVO vo, ModelMap model, HttpServletRequest request) { + public String selectRvwEasyRegistForm(@RequestBody BOGnrlbbscttVO vo, ModelMap model, HttpServletRequest request) { vo.setRvwBbscttDv("rvw"); - //BO에서 API 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm", vo), - model, - "resultMap" - ); + + Map content = selectBOBbscttRegistPopupForm(vo); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/mpage/act/RvwEasyRegistC"; } + + + /** + * bo로직 게시글 목록 조회 + * + */ + public DataMap selectBOBbscttListInqire(BOGnrlbbscttVO bbsctt) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if ("01".equals(user.getSysDvCd())) {//사용자 조회 일 경우 + bbsctt.setSopmalCd(user.getSopmalCd()); + } + + if (!"crm".equals(bbsctt.getReqUrl())) { + if (user.getUserInnb() > 0) { + bbsctt.setRegusr(user.getUserInnb()); + if ("sopmal".equals(bbsctt.getServerDv())) { + bbsctt.setRegusrDvCd("01"); + } else { + bbsctt.setRegusrDvCd("02"); + } + } else { + bbsctt.setRegusr(0); + bbsctt.setRegusrDvCd("99"); + } + } + // pagination + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(bbsctt.getPageIndex()); + paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + bbsctt.setPaginationInfo(paginationInfo); + bbsctt.setFirstIndex(paginationInfo.getFirstRecordIndex()); + bbsctt.setLastIndex(paginationInfo.getLastRecordIndex()); + bbsctt.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + // 게시글 목록조회 + Map resultList = new HashMap(); + resultList = service.selectBOBbscttListInqire(bbsctt); + + // 게시판 설정 정보 조회 + BOBbsVO bbsVO = new BOBbsVO(); + // bbsVO에 쇼핑몰코드, 해당 게시판 set + bbsVO.setSopmalCd(bbsctt.getSopmalCd()); + bbsVO.setBbsId(bbsctt.getBbsId()); + bbsVO.setBbsTyCd(bbsctt.getBbsTyCd()); + DataMap bbsInfo = new DataMap(); + bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO); + DataMap content = new DataMap(); + + content.put("bbsInfo", bbsInfo); + content.put("bbsctt", bbsctt); + content.put("resultList", resultList); + content.put("paginationInfo", bbsctt.getPaginationInfo()); + return content; + } + + /** + * bo로직 사이트 메인페이지 등급, 마일리지, 쿠폰, 위시리스트, 배송중 정보 조회 + * + */ + public Map selectBOMpageInfoInqire(BOMbrVO vo) { + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setSopmalCd(user.getSopmalCd()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + + // 상품 옵션 조회 + Map message = new HashMap<>(); + message = boMbrService.selectBOMpageInfoInqire(vo); + + BOSiteVO siteVO = new BOSiteVO(); + siteVO.setSopmalCd(vo.getSopmalCd()); + siteVO.setCookieValArr(vo.getCookieValArr()); + + List recentGoods = null; + if (vo.getCookieValArr() != null) { + recentGoods = boSiteService.selectBOMainRecentGoods(siteVO); + message.put("recentGoods", recentGoods); + } + return message; + } + + /** + * bo로직 작성 가능한 리뷰 + * + */ + public Map selectBOWritPosblRvw(BOGnrlbbscttVO bbsctt) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + bbsctt.setRegusr(user.getUserInnb()); + bbsctt.setMbrDvCd(user.getMbrDvCd()); + // pagination + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(bbsctt.getPageIndex()); + paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + bbsctt.setPaginationInfo(paginationInfo); + bbsctt.setFirstIndex(paginationInfo.getFirstRecordIndex()); + bbsctt.setLastIndex(paginationInfo.getLastRecordIndex()); + bbsctt.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + List resultList = new ArrayList<>(); + resultList = service.selectBOWritPosblRvw(bbsctt); + + Map content = new HashMap<>(); + content.put("bbscttVO", bbsctt); + content.put("resultList", resultList); + content.put("paginationInfo", bbsctt.getPaginationInfo()); + return content; + } + + /** + * bo로직 마이페이지 > 나의 활동 > 나의리뷰 조회 + * + */ + public DataMap selectBOMyRvwListInqire(BOGnrlbbscttVO bbsctt) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + if (!"crm".equals(bbsctt.getReqUrl())) { + bbsctt.setRegusr(user.getUserInnb()); + } + // pagination + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(bbsctt.getPageIndex()); + paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + bbsctt.setPaginationInfo(paginationInfo); + bbsctt.setFirstIndex(paginationInfo.getFirstRecordIndex()); + bbsctt.setLastIndex(paginationInfo.getLastRecordIndex()); + bbsctt.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + // 게시글 목록조회 + Map resultList = new HashMap(); + resultList = service.selectBOMyRvwListInqire(bbsctt); + + DataMap content = new DataMap(); + content.put("bbscttVO", bbsctt); + content.put("resultList", resultList); + content.put("paginationInfo", bbsctt.getPaginationInfo()); + return content; + } + + /** + * 게시글 등록 팝업 + */ + public Map selectBOBbscttRegistPopupForm(BOGnrlbbscttVO bbsctt) { + Map content = new HashMap(); + // 작성자 정보 추출 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + ; + + BOGnrlbbscttVO regusrInfo = new BOGnrlbbscttVO(); + DataMap mbrInfo = new DataMap(); + if (user.getUserInnb() > 0) { + bbsctt.setRegusr(user.getUserInnb()); + if (!"01".equals(user.getSysDvCd())) { + bbsctt.setRegusrDvCd("02"); //관리자 + } else { + bbsctt.setRegusrDvCd("01"); //회원 + bbsctt.setMbrDvCd(user.getMbrDvCd()); + DataMap mbr = new DataMap(); + mbr.put("mbrInnb", String.valueOf(bbsctt.getRegusr())); + mbr.put("mbrDvCd", bbsctt.getMbrDvCd()); + mbr.put("secretKey", boCommonService.selectSecretkey()); + mbr.put("sopmalCd", bbsctt.getSopmalCd()); + mbrInfo = boMbrService.selectSimpleMbrInfo(mbr); + regusrInfo.setAnswMbtlnb((String) mbrInfo.get("mbtlnb")); + } + regusrInfo.setRegusrNm(user.getMbrNm()); + regusrInfo.setRegusrId(user.getMbrId()); + regusrInfo.setRegusr(user.getUserInnb()); + regusrInfo.setRegusrDvCd(bbsctt.getRegusrDvCd()); + } else { + regusrInfo.setRegusr(0); + regusrInfo.setRegusrDvCd("99");//비회원 + } + + // 게시판 설정 정보 + BOBbsVO bbsVO = new BOBbsVO(); + // bbsVO에 쇼핑몰코드, 해당 게시판 set + bbsVO.setSopmalCd(bbsctt.getSopmalCd()); + bbsVO.setBbsId(bbsctt.getBbsId()); + bbsVO.setBbsTyCd(bbsctt.getBbsTyCd()); + DataMap bbsInfo = new DataMap(); + bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO); + + // 분류 + List itmList = new ArrayList<>(); + itmList = service.selectBOBbscttItmInqire(bbsctt); + + //리뷰항목 리스트, 리뷰항목 항목 리스트 + Map rvwQesitmList = new HashMap(); + rvwQesitmList = service.selectBOStarItm(bbsctt); + + //추가항목 리스트, 추가항목 항목 리스트 + Map qesitmList = new HashMap(); + qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt); + + //사용자 > 리뷰 상품 조회 + DataMap rvwGoodsInfo = new DataMap(); + DataMap mlgInfo = new DataMap(); + if ("sopmal".equals(bbsctt.getServerDv())) { + if ("rvw".equals(bbsctt.getRvwBbscttDv())) { + rvwGoodsInfo = service.selectBORvwGoods(bbsctt); + content.put("rvwGoodsInfo", rvwGoodsInfo); + mlgInfo = service.selectBORvwBnefInfo(bbsctt); + content.put("mlgInfo", mlgInfo); + + List rvwItmList = new ArrayList<>(); + List starItmList = new ArrayList<>(); + //사용자 별표 평점 역으로 리스트 set(퍼블리싱으로 인한 역처리) + if (rvwQesitmList.get("starItmCnList") != null) { + rvwItmList = (List) rvwQesitmList.get("starItmCnList"); + for (int i = rvwItmList.size() - 1; i >= 0; i--) { + starItmList.add(rvwItmList.get(i)); + } + content.put("starItmList", starItmList); + } + } + } + + //사용자 > 상품q&a 상품 조회 + DataMap qnaGoodsInfo = new DataMap(); + if ("sopmal".equals(bbsctt.getServerDv())) { + if ("modal".equals(bbsctt.getReqUrl())) { + qnaGoodsInfo = service.selectTargetGoodsInfo(bbsctt); + } + } + content.put("qnaGoodsInfo", qnaGoodsInfo); + content.put("regusrInfo", regusrInfo); + content.put("bbscttVO", bbsctt); + content.put("itmList", itmList); + content.put("bbsInfo", bbsInfo); + content.put("qesitmList", qesitmList); + content.put("rvwQesitmList", rvwQesitmList); + return content; + } } diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/mpage/bnef/controller/MyBnefController.java b/src/main/java/com/wb/domainserver/domain/sopmal/mpage/bnef/controller/MyBnefController.java index b6d4ccc8..ee1c23bd 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/mpage/bnef/controller/MyBnefController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/mpage/bnef/controller/MyBnefController.java @@ -1,22 +1,42 @@ package com.wb.domainserver.domain.sopmal.mpage.bnef.controller; import com.wb.domainserver.common.msg.GconeMessageSource; -import com.wb.domainserver.domain.sopmal.mpage.bnef.vo.MyBnefCashVO; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo; +import com.wb.domainserver.common.prop.PaginationProperties; +import com.wb.domainserver.domain.admin.store.mbrgrad.service.BOMaMbrgradService; +import com.wb.domainserver.domain.admin.store.mbrgrad.vo.BOMaMbrgradVO; +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.mbr.mbr.service.BOMbrService; +import com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO; +import com.wb.domainserver.domain.gcone.mbr.mlg.service.BOMlgService; +import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOCashVO; +import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOMlgSrchVO; +import com.wb.domainserver.domain.gcone.promtn.coupon.service.BOCouponService; +import com.wb.domainserver.domain.gcone.promtn.coupon.vo.BODwldCouponVO; +import com.wb.domainserver.domain.gcone.setup.gradbnef.service.BOGradbnefService; +import com.wb.domainserver.domain.gcone.setup.gradbnef.vo.BOGradbnefVO; +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.bnef.vo.MyBnefCouponVO; -import com.wb.domainserver.domain.sopmal.mpage.bnef.vo.MyBnefMbrGradVO; import com.wb.domainserver.domain.sopmal.mpage.bnef.vo.MyBnefMlgVO; 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.RESRC; -import com.wb.domainserver.util.communicate.ReplyFromResrc; 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; @@ -24,6 +44,11 @@ import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestMapping; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + @Controller @RequestMapping("/sopmal/mpage/bnef") @Slf4j @@ -38,6 +63,29 @@ public class MyBnefController { @Autowired private GconeMessageSource gconeMessageSource; + @Autowired + private BOGradbnefService boGradbnefService; + @Autowired + private BOMaMbrgradService maMbrgradService; + @Autowired + private PaginationProperties paginationProperties; + @Autowired + private BOMbrService boMbrService; + @Autowired + private BOSiteService boSiteService; + @Autowired + private BOMlgService boMlgService; + @Autowired + private BOMaSopmalService sopmalService; + @Autowired + private BOMaComncdService bOMaComncdService; // 공통 코드 service + @Autowired + private BOCommonService boCommonService; + @Autowired + private BOCouponService service; + @Autowired + private BOCommonService commonService; + /** @@ -49,21 +97,62 @@ public class MyBnefController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectMbrGradInqire") - public String selectCscMainForm(HttpServletRequest request, ModelMap model, MyBnefMbrGradVO gradVO) { + public String selectCscMainForm(HttpServletRequest request, ModelMap model, BOMbrVO gradVO, BOGradbnefVO paramVO) { gradVO.setServerDv("sopmal"); + paramVO.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/setup/gradbnef/selectBOMbrGradListInqire", gradVO), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + paramVO.setSopmalCd(user.getSopmalCd()); + } + + Map content = new HashMap<>(); + //페이징 정보 set + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(paramVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(paramVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + paramVO.setPaginationInfo(paginationInfo); + paramVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + paramVO.setLastIndex(paginationInfo.getLastRecordIndex()); + paramVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + //회원 등급 목록 조회 + List resultList = boGradbnefService.selectBOMbrGradListInqire(paramVO); + + //회원 등급 산정 기간 조회(사용자) + Map gradGroup = new HashMap<>(); + if("sopmal".equals(paramVO.getServerDv())){ + BOMaMbrgradVO maMbrgradVO = new BOMaMbrgradVO(); + if("01".equals(user.getSysDvCd())){ + maMbrgradVO.setSopmalCd(paramVO.getSopmalCd()); + } + maMbrgradVO.setServerDv(paramVO.getServerDv()); + gradGroup = maMbrgradService.selectBOMbrGradUpdtForm(maMbrgradVO); + } + + //회원 등급 목록 조회 결과 및 페이징정보 넣기 + content.put("paramVO", paramVO); + content.put("resultList", resultList); + content.put("gradGroup", gradGroup); + content.put("paginationInfo", paramVO.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/setup/gradbnef/selectBOMbrGradListInqire", gradVO), +// model, +// "resultMap" +// ); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", gradVO), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(gradVO); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", gradVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/bnef/MbrGradR"; } @@ -77,22 +166,79 @@ public class MyBnefController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectMlgDtlsInqireForm") - public String selectMlgDtlsInqireForm(MyBnefMlgVO mlgVO, ModelMap model, HttpServletRequest request) { + public String selectMlgDtlsInqireForm(MyBnefMlgVO mlgVO, BOMlgSrchVO boMlgSrchVO, BOMbrVO gradVO, ModelMap model, HttpServletRequest request) { mlgVO.setServerDv("sopmal"); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", mlgVO), - model, - "resultMap" - ); + if ("sopmal".equals(boMlgSrchVO.getServerDv())) { + boMlgSrchVO.setMbrDvCd(user.getMbrDvCd()); + boMlgSrchVO.setMbrInnb(user.getUserInnb()); + } + + if("01".equals(user.getSysDvCd())){ + boMlgSrchVO.setSopmalCd(user.getSopmalCd()); + } + + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + //마일리지 적립 구분 코드 + bOMaComncdVO.setGroupCd("MLG_ACCML_DV"); + List mlgAccmlDv = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + //마일리지 적용 사유 구분 코드 + bOMaComncdVO.setGroupCd("MLG_APPLC_DV"); + List mlgApplcDv = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + //마일리지 지급/차감 구분 + bOMaComncdVO.setGroupCd("MLG_DV"); + List mlgDv = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + List sopmalList = sopmalService.selectBOSopmalCdNm(); + + // Map객체에 필요 정보 할당 + DataMap content = new DataMap(); + content.put("paramVO", boMlgSrchVO); + content.put("mlgAccmlDv", mlgAccmlDv); + content.put("mlgApplcDv", mlgApplcDv); + content.put("mlgDv", mlgDv); + content.put("sopmalList", sopmalList); + //관리자명 + content.put("mngrId", user.getMbrId()); + DataMap mngrInfoParamMap = new DataMap(); + mngrInfoParamMap.put("mngrId", user.getMbrId()); + mngrInfoParamMap.put("mngrInnb", user.getUserInnb()); + content.put("mngrNm", boMlgService.selectBOMlgMngrInfoInqire(mngrInfoParamMap)); + + //회원명 + content.put("mbrInfoMap", boMlgService.selectBOMlgMbrInfoInqire(boMlgSrchVO)); + + //마일리지 기본 유효기간 조회 + content.put("mlgValidPd", boMlgService.selectBOMlgValidPd(boMlgSrchVO)); + + //잔액 합계 + BigDecimal blceSum = boMlgService.selectBOMlgBlceSum(boMlgSrchVO); + content.put("blceSum", blceSum); + //30일이내 소멸예정 합계 + BigDecimal endInMnthBlceSum = boMlgService.selectBOEndInMnthMlgBlceSum(boMlgSrchVO); + content.put("endInMnthBlceSum", endInMnthBlceSum); + + // 적립 예정 마일리지 + String accmlPrearngeSum = boMlgService.selectBOAccmlPrearngeSum(boMlgSrchVO); + content.put("accmlPrearngeSum", accmlPrearngeSum); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", mlgVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", mlgVO); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", mlgVO), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(gradVO); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", mlgVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/bnef/MlgDtlsRForm"; } @@ -106,14 +252,17 @@ public class MyBnefController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectMlgDtlsInqire") - public String selectMlgDtlsInqire(MyBnefMlgVO mlgVO, ModelMap model, HttpServletRequest request) { + public String selectMlgDtlsInqire(MyBnefMlgVO mlgVO, BOMlgSrchVO boMlgSrchVO, ModelMap model, HttpServletRequest request) { mlgVO.setServerDv("sopmal"); + boMlgSrchVO.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgListInqire", mlgVO), - model, - "resultMap" - ); + Map content = selectBOMlgListInqire(boMlgSrchVO); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgListInqire", mlgVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", mlgVO); return Util.getDeviceType(request) + "/mpage/bnef/MlgDtlsR"; @@ -123,18 +272,23 @@ public class MyBnefController { /** * 마이페이지 > 마일리지 목록 조회 > 스크롤 * @param mlgVO - * @param model * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectMlgDtlsScrolInqire") - public ResponseEntity selectMlgDtlsScrolInqire(MyBnefMlgVO mlgVO) { + @RequestMapping(value = "/selectMlgDtlsScrolInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMlgDtlsScrolInqire(BOMlgSrchVO mlgVO) { mlgVO.setServerDv("sopmal"); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgListInqire", mlgVO), - ReplyFromResrc::getReply + Map content = selectBOMlgListInqire(mlgVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgListInqire", mlgVO), +// ReplyFromResrc::getReply +// ); } @@ -145,20 +299,41 @@ public class MyBnefController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectCouponDtlsForm") - public String selectCouponDtlsForm(MyBnefCouponVO couponVO, ModelMap model, HttpServletRequest request) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOHoldCouponDtlsForm", couponVO), - model, - "resultMap" - ); + public String selectCouponDtlsForm(MyBnefCouponVO couponVO, BODwldCouponVO dwldCouponVO, BOMbrVO gradVO, ModelMap model, HttpServletRequest request) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + dwldCouponVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드 + dwldCouponVO.setMbrDvCd(user.getMbrDvCd()); // 회원 구분 코드 + dwldCouponVO.setMbrInnb(Integer.valueOf(user.getUserInnb())); // 회원 고유번호 + } + dwldCouponVO.setRegusr(user.getUserInnb()); // 등록자 + dwldCouponVO.setUpdusr(user.getUserInnb()); // 수정자 + + + log.debug("couponPkSndngVO : {}", dwldCouponVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + + content = service.selectBOMyCouponListCnt(dwldCouponVO); + content.put("paramVO", dwldCouponVO); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOHoldCouponDtlsForm", couponVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", couponVO); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", couponVO), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(gradVO); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", couponVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/bnef/CouponDtlsRForm"; } @@ -171,14 +346,17 @@ public class MyBnefController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectCouponUsePosblDtlsInqire") - public String selectCouponUsePosblDtlsInqire(MyBnefCouponVO couponVO, ModelMap model, HttpServletRequest request) { + public String selectCouponUsePosblDtlsInqire(MyBnefCouponVO couponVO, BODwldCouponVO dwldCouponVO, ModelMap model, HttpServletRequest request) { couponVO.setServerDv("sopmal"); + dwldCouponVO.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponUsePosblDtlsInqire", couponVO), - model, - "resultMap" - ); + Map content = selectBOCouponUsePosblDtlsInqire(dwldCouponVO); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponUsePosblDtlsInqire", couponVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", couponVO); return Util.getDeviceType(request) + "/mpage/bnef/UsePosblCouponDtlsR"; @@ -187,19 +365,24 @@ public class MyBnefController { /** * 마이페이지 > 쿠폰 > 사용가능 쿠폰 조회 > 스크롤 - * @param couponVO - * @param model + * @param dwldCouponVO * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectCouponUsePosblDtlsScrolInqire") - public ResponseEntity selectCouponUsePosblDtlsScrolInqire(MyBnefCouponVO couponVO) { - couponVO.setServerDv("sopmal"); + @RequestMapping(value = "/selectCouponUsePosblDtlsScrolInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectCouponUsePosblDtlsScrolInqire(BODwldCouponVO dwldCouponVO) { + dwldCouponVO.setServerDv("sopmal"); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponUsePosblDtlsInqire", couponVO), - ReplyFromResrc::getReply + Map content = selectBOCouponUsePosblDtlsInqire(dwldCouponVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponUsePosblDtlsInqire", couponVO), +// ReplyFromResrc::getReply +// ); } @@ -210,14 +393,16 @@ public class MyBnefController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectDwldCouponDtlsInqire") - public String selectDwldCouponDtlsInqire(MyBnefCouponVO couponVO, ModelMap model, HttpServletRequest request) { + public String selectDwldCouponDtlsInqire(BODwldCouponVO couponVO, ModelMap model, HttpServletRequest request) { couponVO.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldCouponDtlsInqire", couponVO), - model, - "resultMapDwld" - ); + Map content = selectBODwldCouponDtlsInqire(couponVO); + model.addAttribute("resultMapDwld", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldCouponDtlsInqire", couponVO), +// model, +// "resultMapDwld" +// ); model.addAttribute("paramVO", couponVO); // return "sopmal/mpage/bnef/DwldCouponDtlsR"; @@ -228,36 +413,53 @@ public class MyBnefController { /** * 마이페이지 > 쿠폰 > 다운로드 가능 쿠폰 조회 > 스크롤 * @param couponVO - * @param model * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectDwldCouponDtlsScrolInqire") - public ResponseEntity selectDwldCouponDtlsScrolInqire(MyBnefCouponVO couponVO) { + @RequestMapping(value = "/selectDwldCouponDtlsScrolInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectDwldCouponDtlsScrolInqire(BODwldCouponVO couponVO) { couponVO.setServerDv("sopmal"); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldCouponDtlsInqire", couponVO), - ReplyFromResrc::getReply + Map content = selectBODwldCouponDtlsInqire(couponVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldCouponDtlsInqire", couponVO), +// ReplyFromResrc::getReply +// ); } /** * 쿠폰 정보 조회 팝업 * - * @param CouponVO couponVO + * @param dwldCouponVO * @param model * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectCouponDtlInfoInqirePopup") - public String selectCouponDtlInfoInqirePopup(MyBnefCouponVO couponVO, ModelMap model, HttpServletRequest request) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponInfoInqirePopup", couponVO), - model, - "resultMap" - ); + public String selectCouponDtlInfoInqirePopup(BODwldCouponVO dwldCouponVO, ModelMap model, HttpServletRequest request) { + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + Map content = new HashMap<>(); + + log.debug("vo is {}", dwldCouponVO); + + DataMap result = service.selectBOCouponInfoInqirePopup(dwldCouponVO); + log.debug("vo is {}", result); + content.put("dwldCouponVO", result); // 발송정보 + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponInfoInqirePopup", couponVO), +// model, +// "resultMap" +// ); // return "sopmal/mpage/bnef/UsePosblCouponDtlPopupR"; return Util.getDeviceType(request) + "/mpage/bnef/UsePosblCouponDtlPopupR"; @@ -267,18 +469,28 @@ public class MyBnefController { /** * 쿠폰 정보 조회 팝업 *z - * @param CouponVO couponVO + * @param couponVO * @param model * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectDwldYCouponDtlInfoInqirePopup") - public String selectDwldYCouponDtlInfoInqirePopup(MyBnefCouponVO couponVO, ModelMap model, HttpServletRequest request) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldYCouponInfoInqirePopup", couponVO), - model, - "resultMap" - ); + public String selectDwldYCouponDtlInfoInqirePopup(BODwldCouponVO couponVO, ModelMap model, HttpServletRequest request) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + Map content = new HashMap<>(); + log.debug("vo is {}", couponVO); + + DataMap result = service.selectBODwldYCouponInfoInqirePopup(couponVO); + log.debug("vo is {}", result); + content.put("dwldCouponVO", result); // 발송정보 + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldYCouponInfoInqirePopup", couponVO), +// model, +// "resultMap" +// ); // return "sopmal/mpage/bnef/UsePosblCouponDtlPopupR"; return Util.getDeviceType(request) + "/mpage/bnef/UsePosblCouponDtlPopupR"; @@ -291,12 +503,34 @@ public class MyBnefController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/insertCouponRegist") - public ResponseEntity insertCouponRegist(@Validated MyBnefCouponVO couponVO, BindingResult bindingResult) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBOCodeCouponRegist", couponVO), - ReplyFromResrc::getReply + @RequestMapping(value = "/insertCouponRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertCouponRegist(@Validated BODwldCouponVO dwldCouponVO, BindingResult bindingResult) { + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + dwldCouponVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드 + } + dwldCouponVO.setRegusr(user.getUserInnb()); // 등록자 + dwldCouponVO.setUpdusr(user.getUserInnb()); // 수정자 + dwldCouponVO.setMbrInnb(Integer.valueOf(user.getUserInnb())); // 회원 고유번호 + dwldCouponVO.setMbrDvCd(user.getMbrDvCd()); // 회원 구분 코드 + dwldCouponVO.setMbrNm(user.getMbrNm()); // 회원 명 + String secretKey = commonService.selectSecretkey(); + dwldCouponVO.setSecretKey(secretKey); + + // service 호출 + Map message = new HashMap<>(); + message = service.insertBOCodeCouponRegist(dwldCouponVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBOCodeCouponRegist", couponVO), +// ReplyFromResrc::getReply +// ); } @@ -306,12 +540,18 @@ public class MyBnefController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/insertDwldCouponAllRegist") - public ResponseEntity insertDwldCouponAllRegist(@Validated MyBnefCouponVO couponVO, BindingResult bindingResult) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBODwldCouponAllRegist", couponVO), - ReplyFromResrc::getReply + @RequestMapping(value = "/insertDwldCouponAllRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertDwldCouponAllRegist(@Validated BODwldCouponVO couponVO, BindingResult bindingResult) { + Map content = insertBODwldCouponAllRegist(couponVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBODwldCouponAllRegist", couponVO), +// ReplyFromResrc::getReply +// ); } @@ -321,12 +561,18 @@ public class MyBnefController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/insertDwldCouponRegist") - public ResponseEntity insertDwldCouponRegist(@Validated MyBnefCouponVO couponVO, BindingResult bindingResult) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBODwldCouponAllRegist", couponVO), - ReplyFromResrc::getReply + @RequestMapping(value = "/insertDwldCouponRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertDwldCouponRegist(@Validated BODwldCouponVO couponVO, BindingResult bindingResult) { + Map content = insertBODwldCouponAllRegist(couponVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBODwldCouponAllRegist", couponVO), +// ReplyFromResrc::getReply +// ); } /** @@ -335,12 +581,24 @@ public class MyBnefController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectCouponDownYn") - public ResponseEntity selectCouponDownYn(@Validated MyBnefCouponVO couponVO) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectCouponDownYn", couponVO), - ReplyFromResrc::getReply + @RequestMapping(value = "/selectCouponDownYn", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectCouponDownYn(@Validated BODwldCouponVO vo) { + DataMap content = new DataMap(); + + String couponInnb = ""; + log.debug("쿠폰 다운로드 여부 파라메타 : {}", vo); + couponInnb = service.selectCouponDownYn(vo); + content.put("couponInnb", couponInnb); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectCouponDownYn", couponVO), +// ReplyFromResrc::getReply +// ); } @@ -356,21 +614,45 @@ public class MyBnefController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectCashDtlsInqireForm") - public String selectCashDtlsInqireForm(MyBnefMlgVO mlgVO, ModelMap model, HttpServletRequest request) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashBlce", mlgVO), - model, - "resultMap" - ); + public String selectCashDtlsInqireForm(MyBnefMlgVO mlgVO, BOCashVO cashVo, BOMbrVO gradVO, ModelMap model, HttpServletRequest request) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if("01".equals(user.getSysDvCd())){ + cashVo.setSopmalCd(user.getSopmalCd()); + cashVo.setMbrDvCd(user.getMbrDvCd()); + cashVo.setMbrInnb(String.valueOf(user.getUserInnb())); + } + + // service 호출 + DataMap content = new DataMap(); + + //충전형 마일리지 잔액 조회 + BigDecimal blce = boMlgService.selectBOCashBlce(cashVo); + content.put("blce", blce); + + //마일리지 적립 구분 코드 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("MLG_ACCML_DV"); + List mlgAccmlDv = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + content.put("mlgAccmlDv", mlgAccmlDv); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashBlce", mlgVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", mlgVO); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 충전형 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", mlgVO), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(gradVO); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", mlgVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/bnef/CashDtlsRForm"; } @@ -384,12 +666,14 @@ public class MyBnefController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectCashDtlsInqire") - public String selectCashDtlsInqire(MyBnefMlgVO mlgVO, ModelMap model, HttpServletRequest request) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashList", mlgVO), - model, - "resultMap" - ); + public String selectCashDtlsInqire(MyBnefMlgVO mlgVO, BOCashVO cashVo, ModelMap model, HttpServletRequest request) { + DataMap content = selectBOCashList(cashVo); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashList", mlgVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", mlgVO); return Util.getDeviceType(request) + "/mpage/bnef/CashDtlsR"; @@ -398,49 +682,348 @@ public class MyBnefController { /** * 마이페이지 > 충전형 마일리지 목록 조회 > 스크롤 - * @param mlgVO + * @param cashVo * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectCashDtlsScrolInqire") - public ResponseEntity selectCashDtlsScrolInqire(MyBnefMlgVO mlgVO) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashList", mlgVO), - ReplyFromResrc::getReply + @RequestMapping(value = "/selectCashDtlsScrolInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectCashDtlsScrolInqire(BOCashVO cashVo) { + DataMap content = selectBOCashList(cashVo); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashList", mlgVO), +// ReplyFromResrc::getReply +// ); } /** * 마이페이지 > 충전형 마일리지 > 상품권번호조회 - * @param mlgVO + * @param cashVo * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectGiftCardCrtfcNb") - public ResponseEntity selectGiftCardCrtfcNb(MyBnefCashVO vo) { - if (vo.getCrtfcNb() == null || vo.getCrtfcNb().isEmpty()) { + @RequestMapping(value = "/selectGiftCardCrtfcNb", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGiftCardCrtfcNb(BOCashVO cashVo) { + if (cashVo.getCrtfcNb() == null || cashVo.getCrtfcNb().isEmpty()) { throw new WnbtRestException("상품권 인증번호를 입력해주세요"); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOGiftCardCrtfcNb", vo), - ReplyFromResrc::getReply + + // service 호출 + DataMap message = new DataMap(); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if ("01".equals(user.getSysDvCd())) { + cashVo.setSopmalCd(user.getSopmalCd()); + } + + log.debug("상품권 등록 컨트롤러 cashVO is {} ", cashVo); + message = boMlgService.selectBOGiftCardCrtfcNb(cashVo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOGiftCardCrtfcNb", vo), +// ReplyFromResrc::getReply +// ); } /** * 마이페이지 > 충전형 마일리지 > 상품권 등록 - * @param mlgVO + * @param cashVo * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/insertGiftCard") - public ResponseEntity insertGiftCard(MyBnefCashVO vo) { - if (vo.getPinNb() == null || vo.getPinNb().isEmpty()) { + @RequestMapping(value = "/insertGiftCard", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertGiftCard(BOCashVO cashVo) { + if (cashVo.getPinNb() == null || cashVo.getPinNb().isEmpty()) { throw new WnbtRestException("상품권 pin 번호를 입력해주세요"); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/insertBOCashReg", vo), - ReplyFromResrc::getReply + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if("01".equals(user.getSysDvCd())){ + cashVo.setSopmalCd(user.getSopmalCd()); + cashVo.setMbrDvCd(user.getMbrDvCd()); + cashVo.setMbrInnb(String.valueOf(user.getUserInnb())); + cashVo.setUpdusr(user.getUserInnb()); + } + + // service 호출 + DataMap message = new DataMap(); + + log.debug("상품권 등록 컨트롤러 cashVO is {} ", cashVo); + message = boMlgService.insertBOCashReg(cashVo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/insertBOCashReg", vo), +// ReplyFromResrc::getReply +// ); + } + + /** + * bo로직 사이트 메인페이지 등급, 마일리지, 쿠폰, 위시리스트, 배송중 정보 조회 + * + */ + public Map selectBOMpageInfoInqire(BOMbrVO vo) { + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setSopmalCd(user.getSopmalCd()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + + // 상품 옵션 조회 + Map message = new HashMap<>(); + message = boMbrService.selectBOMpageInfoInqire(vo); + + BOSiteVO siteVO = new BOSiteVO(); + siteVO.setSopmalCd(vo.getSopmalCd()); + siteVO.setCookieValArr(vo.getCookieValArr()); + + List recentGoods = null; + + if (vo.getCookieValArr() != null) { + recentGoods = boSiteService.selectBOMainRecentGoods(siteVO); + message.put("recentGoods", recentGoods); + } + + return message; + } + + /** + * bo로직 마일리지 목록 조회 + */ + public Map selectBOMlgListInqire(BOMlgSrchVO boMlgSrchVO) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if ("sopmal".equals(boMlgSrchVO.getServerDv())) { + boMlgSrchVO.setMbrDvCd(user.getMbrDvCd()); + boMlgSrchVO.setMbrInnb(user.getUserInnb()); + } + + if("01".equals(user.getSysDvCd())){ + boMlgSrchVO.setSopmalCd(user.getSopmalCd()); + } + + //페이징 처리를 위한 pagination 객체 생성 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(boMlgSrchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(boMlgSrchVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + //페이징 처리를 위한 값 설정 + boMlgSrchVO.setPaginationInfo(paginationInfo); + boMlgSrchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + boMlgSrchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + boMlgSrchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + // 목록 조회 + List resultList = null; + resultList = boMlgService.selectBOMlgListInqire(boMlgSrchVO); + + //마일리지 목록 조회 결과 및 페이징정보 넣기 + Map content = new HashMap<>(); + content.put("paginationInfo", boMlgSrchVO.getPaginationInfo()); + content.put("resultList",resultList); + + //회원정보 + DataMap mbr = new DataMap(); + mbr.put("secretKey", boCommonService.selectSecretkey()); + mbr.put("mbrInnb", boMlgSrchVO.getMbrInnb()); + mbr.put("mbrDvCd", boMlgSrchVO.getMbrDvCd()); + DataMap mbrInfo = new DataMap(); + mbrInfo = boMbrService.selectSimpleMbrInfo(mbr); + content.put("mbrInfo", mbrInfo); + content.put("mlgSrchVo", boMlgSrchVO); + + //잔액 합계 + BigDecimal blceSum = boMlgService.selectBOMlgBlceSum(boMlgSrchVO); + content.put("blceSum", blceSum); + + //30일이내 소멸예정 합계 + BigDecimal endInMnthBlceSum = boMlgService.selectBOEndInMnthMlgBlceSum(boMlgSrchVO); + content.put("endInMnthBlceSum", endInMnthBlceSum); + + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + //마일리지 적용 사유 구분 코드 + bOMaComncdVO.setGroupCd("MLG_ACCML_DV"); + List mlgAccmlDv = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + content.put("mlgAccmlDv", mlgAccmlDv); + + return content; + } + + /** + * bo로직 회원 사용가능 쿠폰 목록 조회 ( 마이페이지, CRM ) + */ + public Map selectBOCouponUsePosblDtlsInqire(BODwldCouponVO dwldCouponVO) { + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + dwldCouponVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드 + dwldCouponVO.setMbrDvCd(user.getMbrDvCd()); // 회원 구분 코드 + dwldCouponVO.setMbrInnb(Integer.valueOf(user.getUserInnb())); // 회원 고유번호 + } else { + dwldCouponVO.setServerDv("admin"); + } + dwldCouponVO.setRegusr(user.getUserInnb()); // 등록자 + dwldCouponVO.setUpdusr(user.getUserInnb()); // 수정자 + + log.debug("couponPkSndngVO : {}", dwldCouponVO); + + // 페이징 객체 생성 & 페이징정보 할당 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(dwldCouponVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(dwldCouponVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + dwldCouponVO.setPaginationInfo(paginationInfo); + dwldCouponVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + dwldCouponVO.setLastIndex(paginationInfo.getLastRecordIndex()); + dwldCouponVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + // 목록 조회 + List resultList = null; + resultList = service.selectBOCouponUsePosblDtlsInqire(dwldCouponVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("paramVO", dwldCouponVO); + content.put("resultList", resultList); + content.put("paginationInfo", dwldCouponVO.getPaginationInfo()); + + return content; + } + + /** + * bo로직 회원 다운로드 가능 쿠폰 목록 조회 ( 마이페이지, CRM ) + */ + public Map selectBODwldCouponDtlsInqire(BODwldCouponVO dwldCouponVO) { + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + dwldCouponVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드 + dwldCouponVO.setMbrDvCd(user.getMbrDvCd()); // 회원 구분 코드 + dwldCouponVO.setMbrInnb(Integer.valueOf(user.getUserInnb())); // 회원 고유번호 + } + dwldCouponVO.setRegusr(user.getUserInnb()); // 등록자 + dwldCouponVO.setUpdusr(user.getUserInnb()); // 수정자 + + + log.debug("couponPkSndngVO : {}", dwldCouponVO); + + // 페이징 객체 생성 & 페이징정보 할당 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(dwldCouponVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(dwldCouponVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + dwldCouponVO.setPaginationInfo(paginationInfo); + dwldCouponVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + dwldCouponVO.setLastIndex(paginationInfo.getLastRecordIndex()); + dwldCouponVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + // 목록 조회 + List resultList = null; + resultList = service.selectBODwldCouponDtlsInqire(dwldCouponVO); + log.debug(" 쿠폰 목록 확인 : {}", resultList); + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("paramVO", dwldCouponVO); + content.put("resultList", resultList); + content.put("paginationInfo", dwldCouponVO.getPaginationInfo()); + log.debug("컨텐츠 맵 확인 : {}", content); + return content; + } + + /** + * bo로직 모든 쿠폰 다운로드 + */ + public Map insertBODwldCouponAllRegist(BODwldCouponVO dwldCouponVO) { + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + dwldCouponVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드 + dwldCouponVO.setMbrInnb(user.getUserInnb()); // 회원 고유번호 + dwldCouponVO.setMbrDvCd(user.getMbrDvCd()); // 회원 구분 코드 + dwldCouponVO.setMbrNm(user.getMbrNm()); // 회원 명 + dwldCouponVO.setMbtlnb(user.getMbtlnb()); //전화번호 + } else { + dwldCouponVO.setMbrInnb(dwldCouponVO.getMbrInnb()); // 회원 고유번호 + dwldCouponVO.setMbrDvCd(dwldCouponVO.getMbrDvCd()); // 회원 구분 코드 + dwldCouponVO.setMbrNm(dwldCouponVO.getMbrNm()); // 회원 명 + dwldCouponVO.setMbtlnb(dwldCouponVO.getMbtlnb()); //전화번호 + } + dwldCouponVO.setRegusr(user.getUserInnb()); // 등록자 + dwldCouponVO.setUpdusr(user.getUserInnb()); // 수정자 + dwldCouponVO.setSecretKey(commonService.selectSecretkey()); + + log.debug("쿠폰 다운로드 쿠폰 값 확인 : {}", dwldCouponVO); + + // service 호출 + Map message = new HashMap<>(); + message = service.insertBODwldCouponAllRegist(dwldCouponVO); + + return message; + } + + /** + * bo로직 충전형 마일리지 내역 조회 + */ + public DataMap selectBOCashList(BOCashVO cashVo) { + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if ("01".equals(user.getSysDvCd())) { + cashVo.setSopmalCd(user.getSopmalCd()); + cashVo.setMbrDvCd(user.getMbrDvCd()); + cashVo.setMbrInnb(String.valueOf(user.getUserInnb())); + } + //페이징 처리를 위한 pagination 객체 생성 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(cashVo.getPageIndex()); + paginationInfo.setRecordCountPerPage(cashVo.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + cashVo.setPaginationInfo(paginationInfo); + + //페이징 처리를 위한 값 설정 + cashVo.setFirstIndex(paginationInfo.getFirstRecordIndex()); + cashVo.setLastIndex(paginationInfo.getLastRecordIndex()); + cashVo.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + // service 호출 + //회원정보 + DataMap mbr = new DataMap(); + mbr.put("secretKey", boCommonService.selectSecretkey()); + mbr.put("mbrInnb", cashVo.getMbrInnb()); + mbr.put("mbrDvCd", cashVo.getMbrDvCd()); + DataMap mbrInfo = new DataMap(); + mbrInfo = boMbrService.selectSimpleMbrInfo(mbr); + + // 충전형 마일리지 목록 조회 + List cashList = boMlgService.selectBOCashList(cashVo); + + //충전형 마일리지 잔액 조회 + BigDecimal blce = boMlgService.selectBOCashBlce(cashVo); + + DataMap content = new DataMap(); + content.put("cashList", cashList); + content.put("paginationInfo", paginationInfo); + content.put("mbrInfo", mbrInfo); + content.put("blce", blce); + + return content; } } diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/mpage/mbr/controller/MyMbrController.java b/src/main/java/com/wb/domainserver/domain/sopmal/mpage/mbr/controller/MyMbrController.java index 5c8ca7e8..9fa2eb38 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/mpage/mbr/controller/MyMbrController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/mpage/mbr/controller/MyMbrController.java @@ -1,5 +1,60 @@ package com.wb.domainserver.domain.sopmal.mpage.mbr.controller; +import com.fasterxml.jackson.databind.ObjectMapper; +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.store.sopmal.vo.BOMaSopmalVO; +import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO; +import com.wb.domainserver.domain.gcone.bbs.bbs.service.BOBbsService; +import com.wb.domainserver.domain.gcone.bbs.bbs.vo.BOBbsVO; +import com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.service.BOGnrlbbscttService; +import com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.vo.BOGnrlbbscttVO; +import com.wb.domainserver.domain.gcone.common.service.BOCommonService; +import com.wb.domainserver.domain.gcone.common.vo.BOCommonVO; +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.mbr.mbr.vo.BOWithdrawalVO; +import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService; +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.BOOrdrDlvyVO; +import com.wb.domainserver.domain.gcone.setup.gradbnef.service.BOGradbnefService; +import com.wb.domainserver.domain.gcone.setup.gradbnef.vo.BOGradbnefVO; +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.mbr.vo.*; +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.RESRC; +import com.wb.domainserver.util.communicate.SendToResrc; +import com.wb.domainserver.util.communicate.ValidateResultConverter; +import com.wb.domainserver.util.dataaccess.DataMap; +import com.wb.domainserver.util.string.StringUtil; +import com.wb.domainserver.util.util.Util; +import jakarta.servlet.http.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.math.BigInteger; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -7,41 +62,6 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.wb.domainserver.domain.sopmal.csc.vo.GnrlBbscttVO; -import com.wb.domainserver.domain.sopmal.mbr.vo.MbrVO; -import com.wb.domainserver.domain.sopmal.mpage.mbr.vo.*; -import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrDlvyVO; -import com.wb.domainserver.util.string.StringUtil; -import com.wb.domainserver.util.util.Util; -import jakarta.servlet.http.HttpServletRequest; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -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.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.wb.domainserver.common.msg.GconeMessageSource; -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.authorization.annotation.AuthPolicy; -import com.wb.domainserver.security.authorization.annotation.Policy; -import com.wb.domainserver.util.communicate.BoResultMapConverter; -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.communicate.ValidateResultConverter; - -import lombok.extern.slf4j.Slf4j; - /** * * 마이페이지 회원 @@ -76,6 +96,28 @@ public class MyMbrController { @Autowired private GconeMessageSource gconeMessageSource; + @Autowired + private BOMbrService service; + @Autowired + private BOGradbnefService mbrGradService; + @Autowired + private BOMaSopmalService maSopmalService; + @Autowired + private BOCommonService boCommonService; + @Autowired + private PaginationProperties paginationProperties; + @Autowired + private BOCommonService commonService; + @Autowired + private BOMssageService boMssageService; + @Autowired + private BOSiteService boSiteService; + @Autowired + private BOOrdrService boOrdrService; + @Autowired + private BOGnrlbbscttService boGnrlbbscttService; + @Autowired + private BOBbsService bbsService; /** @@ -85,50 +127,194 @@ public class MyMbrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectMpageMainInqire") - public String selectMpageMainInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception { + public String selectMpageMainInqire(HttpServletRequest request, ModelMap model, BOOrdrDlvyVO ordrDlvyVO, BOWishVO wishVO, BOMbrVO vo) throws Exception { model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO)); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMpageOrdrSttusInqire", ordrDlvyVO), - model, - "ordrSttusMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrDlvyVO.setSopmalCd(user.getSopmalCd()); + ordrDlvyVO.setMbrInnb(BigInteger.valueOf(user.getUserInnb())); + ordrDlvyVO.setMbrDvCd(user.getMbrDvCd()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqire", ordrDlvyVO), - model, - "wishListMap" - ); + Map content = new HashMap<>(); + List resultList = boOrdrService.selectBOMpageOrdrSttusInqire(ordrDlvyVO); + content.put("resultList", resultList); + + model.addAttribute("ordrSttusMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMpageOrdrSttusInqire", ordrDlvyVO), +// model, +// "ordrSttusMap" +// ); + + // 사용자 정보 추출 및 적용 + wishVO.setSopmalCd(user.getSopmalCd()); + wishVO.setMbrInnb(user.getUserInnb()); + wishVO.setMbrDvCd(user.getMbrDvCd()); + + // 페이징 객체 생성 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(wishVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(wishVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + // 페이징정보 할당 + wishVO.setPaginationInfo(paginationInfo); + wishVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + wishVO.setLastIndex(paginationInfo.getLastRecordIndex()); + wishVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + // 목록 조회 + List resultList2 = null; + resultList2 = service.selectBOWslistInqire(wishVO); + + // Map객체에 필요 정보 할당 + Map content2 = new HashMap<>(); + content2.put("paramVO", wishVO); + content2.put("resultList", resultList2); + content2.put("paginationInfo", wishVO.getPaginationInfo()); + + model.addAttribute("wishListMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqire", ordrDlvyVO), +// model, +// "wishListMap" +// ); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO), - model, - "mpageResultMap" - ); + // 사용자 정보 추출 및 적용 + vo.setSopmalCd(user.getSopmalCd()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + + // 상품 옵션 조회 + Map message = new HashMap<>(); + message = service.selectBOMpageInfoInqire(vo); + + BOSiteVO siteVO = new BOSiteVO(); + siteVO.setSopmalCd(vo.getSopmalCd()); + siteVO.setCookieValArr(vo.getCookieValArr()); + + List recentGoods = null; + if (vo.getCookieValArr() != null) { + recentGoods = boSiteService.selectBOMainRecentGoods(siteVO); + + message.put("recentGoods", recentGoods); + } + + model.addAttribute("mpageResultMap", message); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO), +// model, +// "mpageResultMap" +// ); String diviceTy = Util.getDeviceType(request); if("sopmal".equals(diviceTy)){ //pc버전만 조회 //qna 조회 - GnrlBbscttVO bbsctt = new GnrlBbscttVO(); + BOGnrlbbscttVO bbsctt = new BOGnrlbbscttVO(); bbsctt.setBbsTyCd("05"); bbsctt.setBbsId("goods_qna"); bbsctt.setServerDv("sopmal"); bbsctt.setReqUrl("mpage"); bbsctt.setPageUnit(5); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt), - model, - "qnaResultMap" - ); + + if ("01".equals(user.getSysDvCd())) {//사용자 조회 일 경우 + bbsctt.setSopmalCd(user.getSopmalCd()); + } + + if (!"crm".equals(bbsctt.getReqUrl())) { + if (user.getUserInnb() > 0) { + bbsctt.setRegusr(user.getUserInnb()); + if ("sopmal".equals(bbsctt.getServerDv())) { + bbsctt.setRegusrDvCd("01"); + } else { + bbsctt.setRegusrDvCd("02"); + } + } else { + bbsctt.setRegusr(0); + bbsctt.setRegusrDvCd("99"); + } + } + // pagination + PaginationInfo paginationInfo2 = new PaginationInfo(); + paginationInfo2.setCurrentPageNo(bbsctt.getPageIndex()); + paginationInfo2.setRecordCountPerPage(bbsctt.getPageUnit()); + paginationInfo2.setPageSize(paginationProperties.getPageSize()); + + bbsctt.setPaginationInfo(paginationInfo2); + bbsctt.setFirstIndex(paginationInfo2.getFirstRecordIndex()); + bbsctt.setLastIndex(paginationInfo2.getLastRecordIndex()); + bbsctt.setRecordCountPerPage(paginationInfo2.getRecordCountPerPage()); + + // 게시글 목록조회 + Map resultList3 = new HashMap(); + resultList3 = boGnrlbbscttService.selectBOBbscttListInqire(bbsctt); + + // 게시판 설정 정보 조회 + BOBbsVO bbsVO = new BOBbsVO(); + // bbsVO에 쇼핑몰코드, 해당 게시판 set + bbsVO.setSopmalCd(bbsctt.getSopmalCd()); + bbsVO.setBbsId(bbsctt.getBbsId()); + bbsVO.setBbsTyCd(bbsctt.getBbsTyCd()); + DataMap bbsInfo = new DataMap(); + bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO); + DataMap content3 = new DataMap(); + + content3.put("bbsInfo", bbsInfo); + content3.put("bbsctt", bbsctt); + content3.put("resultList", resultList3); + content3.put("paginationInfo", bbsctt.getPaginationInfo()); + + model.addAttribute("qnaResultMap", content3); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt), +// model, +// "qnaResultMap" +// ); //리뷰 조회 - bbsctt.setUseAt("Y"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire", bbsctt), - model, - "rvw" - ); + BOGnrlbbscttVO bbsctt2 = new BOGnrlbbscttVO(); + bbsctt2.setBbsTyCd("05"); + bbsctt2.setBbsId("goods_qna"); + bbsctt2.setServerDv("sopmal"); + bbsctt2.setReqUrl("mpage"); + bbsctt2.setPageUnit(5); + bbsctt2.setUseAt("Y"); + + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + if (!"crm".equals(bbsctt.getReqUrl())) { + bbsctt.setRegusr(user.getUserInnb()); + } + // pagination + PaginationInfo paginationInfo3 = new PaginationInfo(); + paginationInfo3.setCurrentPageNo(bbsctt2.getPageIndex()); + paginationInfo3.setRecordCountPerPage(bbsctt2.getPageUnit()); + paginationInfo3.setPageSize(paginationProperties.getPageSize()); + + bbsctt2.setPaginationInfo(paginationInfo3); + bbsctt2.setFirstIndex(paginationInfo3.getFirstRecordIndex()); + bbsctt2.setLastIndex(paginationInfo3.getLastRecordIndex()); + bbsctt2.setRecordCountPerPage(paginationInfo3.getRecordCountPerPage()); + // 게시글 목록조회 + Map resultList4 = new HashMap(); + resultList4 = boGnrlbbscttService.selectBOMyRvwListInqire(bbsctt2); + + DataMap content4 = new DataMap(); + content4.put("bbscttVO", bbsctt2); + content4.put("resultList", resultList4); + content4.put("paginationInfo", bbsctt2.getPaginationInfo()); + + model.addAttribute("rvw", content4); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire", bbsctt), +// model, +// "rvw" +// ); } return diviceTy + "/mpage/main/MpageMainR"; @@ -141,12 +327,18 @@ public class MyMbrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectMbrInfoUpdtPasswordCnfirmForm") - public String selectMbrInfoUpdtPasswordCnfirmForm(MyMbrVO mymbrVO, ModelMap model, HttpServletRequest request){ + public String selectMbrInfoUpdtPasswordCnfirmForm(BOMbrVO mymbrVO, ModelMap model, HttpServletRequest request){ + // 사용자 정보 추출 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + mymbrVO.setMbrDvCd(user.getMbrDvCd()); + mymbrVO.setMbrInnb(String.valueOf(user.getUserInnb())); - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOExtrlIntrlckAt", mymbrVO) - ); - mymbrVO.setExtrlIntrlckAt((String) resultMap.get("extrlIntrlckAt")); + String result = service.selectBOExtrlIntrlckAt(mymbrVO); + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOExtrlIntrlckAt", mymbrVO) +// ); + mymbrVO.setExtrlIntrlckAt(result); if(mymbrVO.getExtrlIntrlckAt().equals("Y")) { return selectMbrInfoUpdtForm(mymbrVO, model, request); @@ -157,16 +349,21 @@ public class MyMbrController { /** * 회원 비밀번호 확인 * @param mymbrVO - * @param bindingResult * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectMbrInfoUpdtPasswordCnfirm") - public ResponseEntity selectMbrInfoUpdtPasswordCnfirm(MyMbrVO mymbrVO){ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrPasswordCnfirm", mymbrVO), - ReplyFromResrc::getReply + @RequestMapping(value="/selectMbrInfoUpdtPasswordCnfirm", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMbrInfoUpdtPasswordCnfirm(BOMbrVO mymbrVO){ + Map content = selectBOMbrPasswordCnfirm(mymbrVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrPasswordCnfirm", mymbrVO), +// ReplyFromResrc::getReply +// ); } @@ -177,14 +374,52 @@ public class MyMbrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectMbrInfoUpdtForm") - public String selectMbrInfoUpdtForm(MyMbrVO mymbrVO, ModelMap model, HttpServletRequest request){ - mymbrVO.setServerDv("sopmal"); + public String selectMbrInfoUpdtForm(BOMbrVO vo, ModelMap model, HttpServletRequest request){ + vo.setServerDv("sopmal"); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrInfoUpdtInqire", mymbrVO), - model, - "resultMap" - ); + //시크릿키 set + String secretKey = ""; + secretKey = commonService.selectSecretkey(); + vo.setSecretKey(secretKey); + + //회원정보 수정 조회 + DataMap result = new DataMap(); + result = service.selectBOMbrInfoUpdtInqire(vo); + + //회원등급 조회 + BOGradbnefVO paramVO = new BOGradbnefVO(); + paramVO.setSopmalCd(vo.getSopmalCd()); + List gradList = null; + gradList = mbrGradService.selectBOMbrGradListInqireWithoutPaging(paramVO); + + //이메일 주소 + BOMaComncdVO cdVO = new BOMaComncdVO(); + List email = new ArrayList<>(); + cdVO.setGroupCd("EMAIL_ADRES"); + email = service.selectCommCode(cdVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("result", result); + content.put("paramVO", vo); + content.put("gradList", gradList); + content.put("email", email); + content.put("extrlIntrlckAt", service.selectBOIdSearch(vo).get("extrlIntrlckAt")); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrInfoUpdtInqire", mymbrVO), +// model, +// "resultMap" +// ); return Util.getDeviceType(request) + "/mpage/mbr/MbrInfoUpdtU"; } @@ -194,8 +429,8 @@ public class MyMbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateMbrIdUpdt" , method = RequestMethod.POST) - public ResponseEntity updateMbrIdUpdt(@Validated MyMbrIdChngVO mymbrVO, BindingResult bindingResult){ + @RequestMapping(value="/updateMbrIdUpdt" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateMbrIdUpdt(@Validated MyMbrIdChngVO mymbrVO, BOMbrVO vo, BindingResult bindingResult){ // 정합성 검사 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); @@ -221,11 +456,36 @@ public class MyMbrController { if (password.equals(mymbrVO.getMbrId())) { throw new WnbtRestException("비밀번호는 아이디와 동일할 수 없습니다."); } + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setSopmalCd(user.getSopmalCd()); + vo.setUpdusr(user.getUserInnb()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrIdUpdt", mymbrVO), - ReplyFromResrc::getReply + BOCommonVO commVO = new BOCommonVO(); + commVO.setPass(vo.getNewPassword()); // 변경할 비밀번호 + commVO.setEncptKeyDvCd("01"); // 회원 + commVO.setIdntfcInnb(String.valueOf(user.getUserInnb())); // 회원고유번호 + + //변경할 비밀번호 암호화 + String newPwd = commonService.generateKey(commVO); + vo.setNewPassword(newPwd); + + Map content = new HashMap<>(); + + // 아이디 수정 + content = service.selectBOMbrIdUpdt(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrIdUpdt", mymbrVO), +// ReplyFromResrc::getReply +// ); } /** @@ -234,8 +494,8 @@ public class MyMbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateMbrPasswordUpdt" , method = RequestMethod.POST) - public ResponseEntity updateMbrPasswordUpdt(@Validated MyMbrPwdChngVO mymbrVO, BindingResult bindingResult){ + @RequestMapping(value="/updateMbrPasswordUpdt" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateMbrPasswordUpdt(@Validated MyMbrPwdChngVO mymbrVO, BOMbrVO vo, BindingResult bindingResult){ // 정합성 검사 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); @@ -243,9 +503,10 @@ public class MyMbrController { //비밀번호 변경시 /*1 비밀번호 변경 시 현재 비밀번호 확인*/ - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrPasswordCnfirm", mymbrVO) - ); + Map resultMap = selectBOMbrPasswordCnfirm(vo); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrPasswordCnfirm", mymbrVO) +// ); int result = (int) resultMap.get("result"); if (result == 0) { throw new WnbtRestException("현재 비밀번호가 일치하지 않습니다"); @@ -279,29 +540,77 @@ public class MyMbrController { throw new WnbtRestException("현재 비밀번호와 동일한 비밀번호를 재사용할 수 없습니다."); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrPasswordUpdt", mymbrVO), - ReplyFromResrc::getReply + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setSopmalCd(user.getSopmalCd()); + vo.setUpdusr(user.getUserInnb()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + + BOCommonVO commVO = new BOCommonVO(); + commVO.setPass(vo.getNewPassword()); // 변경할 비밀번호 + commVO.setEncptKeyDvCd("01"); // 회원 + commVO.setIdntfcInnb(String.valueOf(user.getUserInnb())); // 회원고유번호 + + //변경할 비밀번호 암호화 + String newPwd = commonService.generateKey(commVO); + vo.setNewPassword(newPwd); + + Map content = new HashMap<>(); + + // 비밀번호 수정 + content = service.selectBOMbrPasswordUpdt(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrPasswordUpdt", mymbrVO), +// ReplyFromResrc::getReply +// ); } - @Policy(AuthPolicy.PUBLIC)@RequestMapping(value="/selectCrtnbSndng")public String selectCrtnbSndng(){return "/0";} + @Policy(AuthPolicy.PUBLIC) + @RequestMapping(value="/selectCrtnbSndng" + )public String selectCrtnbSndng(){return "/0";} /** * 회원 정보 수정 (휴대폰번호 수정) - * @param mymbrVO + * @param vo * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateMbrMblphonInfoUpdt") - public ResponseEntity updateMbrMblphonInfoUpdt(@Validated MyMbrVO mymbrVO, BindingResult bindingResult){ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrMblphonInfoUpdt", mymbrVO), - ReplyFromResrc::getReply + @RequestMapping(value="/updateMbrMblphonInfoUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateMbrMblphonInfoUpdt(@Validated BOMbrVO vo, BindingResult bindingResult){ + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setSopmalCd(user.getSopmalCd()); + vo.setUpdusr(user.getUserInnb()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + + String secretKey = boCommonService.selectSecretkey(); + vo.setSecretKey(secretKey); + + Map content = new HashMap<>(); + content = service.updateBOMbrMblphonInfoUpdt(vo); + // Map객체에 필요 정보 할당 + content.put("paramVO", vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrMblphonInfoUpdt", mymbrVO), +// ReplyFromResrc::getReply +// ); } @@ -312,59 +621,105 @@ public class MyMbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateMbrEmailInfoUpdt") + @RequestMapping(value="/updateMbrEmailInfoUpdt", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity updateMbrEmailInfoUpdt(@Validated MyMbrEmailChngVO mymbrVO, BindingResult bindingResult){ // 정합성 검사 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + BOMbrVO vo = new BOMbrVO(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrEmailInfoUpdt", mymbrVO), - ReplyFromResrc::getReply + vo.setEmail(mymbrVO.getEmail()); + vo.setSopmalCd(user.getSopmalCd()); + vo.setUpdusr(user.getUserInnb()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + + String secretKey = boCommonService.selectSecretkey(); + vo.setSecretKey(secretKey); + + Map content = new HashMap<>(); + content = service.updateBOMbrEmailInfoUpdt(vo); + // Map객체에 필요 정보 할당 + content.put("paramVO", vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrEmailInfoUpdt", mymbrVO), +// ReplyFromResrc::getReply +// ); } /** * 계정 연동 활성화 - * @param mymbrVO + * @param vo * @param bindingResult * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/insertAcntCnncSttusRegist" , method = RequestMethod.POST) - public ResponseEntity insertAcntCnncSttusRegist(MyMbrVO mymbrVO, BindingResult bindingResult){ + @RequestMapping(value="/insertAcntCnncSttusRegist" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertAcntCnncSttusRegist(BOMbrVO vo, BindingResult bindingResult){ // 정합성 검사 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setSopmalCd(user.getSopmalCd()); + vo.setUpdusr(user.getUserInnb()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/insertBOAcntCnncSttusRegist", mymbrVO), - ReplyFromResrc::getReply + Map message = new HashMap<>(); + message = service.insertBOAcntCnncSttusRegist(vo); // 계정 연동 등록 + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/insertBOAcntCnncSttusRegist", mymbrVO), +// ReplyFromResrc::getReply +// ); } /** * 계정 연동 비활성화 - * @param mymbrVO + * @param vo * @param bindingResult * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/deleteAcntCnncSttusDel" , method = RequestMethod.POST) - public ResponseEntity deleteAcntCnncSttusDel(MyMbrVO mymbrVO, BindingResult bindingResult){ + @RequestMapping(value="/deleteAcntCnncSttusDel" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteAcntCnncSttusDel(BOMbrVO vo, BindingResult bindingResult){ // 정합성 검사 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setSopmalCd(user.getSopmalCd()); + vo.setUpdusr(user.getUserInnb()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/deleteBOAcntCnncSttusDel", mymbrVO), - ReplyFromResrc::getReply + Map message = new HashMap<>(); + message = service.deleteBOAcntCnncSttusDel(vo); // 계정 연동 삭제 + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/deleteBOAcntCnncSttusDel", mymbrVO), +// ReplyFromResrc::getReply +// ); } @@ -374,21 +729,33 @@ public class MyMbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateMbrInfoUpdt") - public ResponseEntity updateMbrInfoUpdt(@Validated MyMbrVO mymbrVO, BindingResult bindingResult){ - mymbrVO.setServerDv("sopmal"); + @RequestMapping(value="/updateMbrInfoUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateMbrInfoUpdt(@Validated MyMbrVO mymbrVO, BOMbrVO vo, BindingResult bindingResult){ + vo.setServerDv("sopmal"); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); // 정합성 검사 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } - mymbrVO.setMbtlnb(mymbrVO.getMbtlnb().replace("-","")); + vo.setMbtlnb(vo.getMbtlnb().replace("-","")); //모바일일 시 진행 if("mobile".equals(mymbrVO.getUtilDv())){ - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrMbtlnbCompare", mymbrVO) - ); - int result = (Integer) resultMap.get("result"); + if("01".equals(user.getSysDvCd())){ + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + } + + //시크릿키 set + String secretKey = ""; + secretKey = commonService.selectSecretkey(); + vo.setSecretKey(secretKey); + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrMbtlnbCompare", mymbrVO) +// ); + int result = service.selectBOMbrMbtlnbCompare(vo); if(result == 0){ if(!"Y".equals(mymbrVO.getMbtlnbChngAt())){ throw new WnbtRestException("휴대폰 인증이 필요합니다."); @@ -396,18 +763,36 @@ public class MyMbrController { } } - if (mymbrVO.getBrthDe() != null) { - mymbrVO.setBrthDe(mymbrVO.getBrthDe().replace(",", "")); + if (vo.getBrthDe() != null) { + vo.setBrthDe(vo.getBrthDe().replace(",", "")); } - if (mymbrVO.getMarktRecptnAgreAt() == null || mymbrVO.getMarktRecptnAgreAt().isEmpty()) { - mymbrVO.setMarktRecptnAgreAt("N"); + if (vo.getMarktRecptnAgreAt() == null || vo.getMarktRecptnAgreAt().isEmpty()) { + vo.setMarktRecptnAgreAt("N"); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrInfoUpdt", mymbrVO), - ReplyFromResrc::getReply + vo.setSopmalCd(user.getSopmalCd()); + vo.setRegusr(user.getUserInnb()); + vo.setUpdusr(user.getUserInnb()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + + String secretKey = ""; + secretKey = commonService.selectSecretkey(); + vo.setSecretKey(secretKey); + + Map message = new HashMap<>(); + message = service.updateBOMbrInfoUpdt(vo); // 회원 정보 수정 + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrInfoUpdt", mymbrVO), +// ReplyFromResrc::getReply +// ); } @@ -418,13 +803,26 @@ public class MyMbrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectMbrSecsnForm") - public String selectMbrSecsnForm(ModelMap model, HttpServletRequest request, MyMbrVO mymbrVO) { - mymbrVO.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrSecsnForm", mymbrVO), - model, - "resultMap" - ); + public String selectMbrSecsnForm(ModelMap model, HttpServletRequest request, BOMbrVO vo) { + vo.setServerDv("sopmal"); + BOMaSopmalVO sopmalVo = new BOMaSopmalVO(); + if ("sopmal".equals(vo.getServerDv())) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(String.valueOf(user.getMbrDvCd())); + sopmalVo.setSopmalCd(user.getSopmalCd()); + } + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("paramVO", vo); + content.put("sopmalInfo", maSopmalService.selectBOSopmalFooterInfo(sopmalVo).get("sopmalInfo")); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrSecsnForm", mymbrVO), +// model, +// "resultMap" +// ); return Util.getDeviceType(request) + "/mpage/mbr/MbrSecsnU"; } @@ -435,22 +833,92 @@ public class MyMbrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateMbrSecsn") - public ResponseEntity updateMbrSecsn(@Validated WithdrawalVO vo, BindingResult bindingResult, HttpServletRequest request){ + @RequestMapping(value="/updateMbrSecsn", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateMbrSecsn(@Validated BOWithdrawalVO bowithdrawalVO, BindingResult bindingResult, HttpServletRequest request){ //validation 체크 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } - vo.setServerDv("sopmal"); + + bowithdrawalVO.setServerDv("sopmal"); //ip주소 get Map requestInfo = Util.getRequestInfo(request); String ip = (String) requestInfo.get("XForwardedFor"); - vo.setRegistIp(ip); + bowithdrawalVO.setRegistIp(ip); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrSecsn", vo), - ReplyFromResrc::getReply + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if (StringUtil.isEmpty(bowithdrawalVO.getSopmalCd())) {//사용자 + bowithdrawalVO.setSopmalCd(user.getSopmalCd()); + } + bowithdrawalVO.setRegusr(user.getUserInnb()); + bowithdrawalVO.setUpdusr(user.getUserInnb()); + bowithdrawalVO.setSecretKey(commonService.selectSecretkey()); + + + if ("sopmal".equals(bowithdrawalVO.getServerDv())) { + List mbrArr = new ArrayList<>(); + List mbrDvCdArr = new ArrayList<>(); + mbrArr.add(String.valueOf(user.getUserInnb())); + mbrDvCdArr.add(String.valueOf(user.getMbrDvCd())); + bowithdrawalVO.setMbrarr(mbrArr); + bowithdrawalVO.setMbrDvCdArr(mbrDvCdArr); + } + + //관리자 로그 문장 만듦 + DataMap mngrLog = new DataMap(); + DataMap data = new DataMap(); + data.put("id", user.getMbrId()); + data.put("registIp", bowithdrawalVO.getRegistIp()); + data.put("before", "일반회원"); + data.put("after", "탈퇴회원"); + data.put("actionDv", "withdrawal"); + + mngrLog = service.makeMngrLog(data); + + bowithdrawalVO.setMngrLogStrt(StringUtil.isNullToString(mngrLog.get("mngrLogStrt"))); + bowithdrawalVO.setMngrLogEnd(StringUtil.isNullToString(mngrLog.get("mngrLogEnd"))); + + //회원탈퇴 + Map message = new HashMap<>(); + message = service.updateBOMbrSecsn(bowithdrawalVO); + + //회원탈퇴 안내문자 + String result = (String) message.get("result"); + if ("success".equals(result)) { + //메세지 타겟 대상 + List messageTarget = new ArrayList<>(); + List withdrawalList = new ArrayList<>(); + withdrawalList = (List) message.get("withdrawalList"); + //회원 고유번호 + if (!CollectionUtils.isEmpty(withdrawalList)) { + //메시지 + Map sopmalInfoMap = new HashMap<>(); + BOMaSopmalVO vo = new BOMaSopmalVO(); + vo.setSopmalCd(bowithdrawalVO.getSopmalCd()); + DataMap sopmalInfo = (DataMap) sopmalInfoMap.get("sopmalInfo"); + for (DataMap withdrawal : withdrawalList) { + DataMap mbrInfo = new DataMap(); + mbrInfo = service.selectSimpleMbrInfo(withdrawal); + withdrawal.put("formDvCd", "FORM_DV_MBR"); + withdrawal.put("formDtlDvCd", "02"); + withdrawal.put("userid",mbrInfo.get("mbrId")); + withdrawal.put("sopmalCd", vo.getSopmalCd()); + messageTarget.add(withdrawal); + } + + boMssageService.insertBOAtmcsndng(messageTarget); + } + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrSecsn", vo), +// ReplyFromResrc::getReply +// ); } @@ -458,7 +926,6 @@ public class MyMbrController { /** * 배송지 관리 목록 조회 이동 * @param dlvylcVO - * @param ModelMap * @return MbrDlvylcListInqireR.jsp */ @Policy(AuthPolicy.PUBLIC) @@ -467,13 +934,14 @@ public class MyMbrController { return Util.getDeviceType(request)+"/mpage/mbr/DlvylcManageRForm"; } + /** * 배송지 관리 * @return */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectDlvylcManagePopup") - public String selectDlvylcManagePopup(HttpServletRequest request, DlvylcVO dlvylcVO, ModelMap model){ + public String selectDlvylcManagePopup(HttpServletRequest request, BOCrmDlvylcVO dlvylcVO, ModelMap model){ String jspPath = ""; dlvylcVO.setServerDv("sopmal"); //popUp or page 호출인지에 따라 페이지유닛 및 경로 분기 @@ -493,12 +961,37 @@ public class MyMbrController { jspPath = Util.getDeviceType(request)+"/mpage/mbr/DlvylcManageR"; } dlvylcVO.setServerDv("sopmal"); - //BO에서 API 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrDlvylcListInqire", dlvylcVO), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + dlvylcVO.setMbrInnb(user.getUserInnb()); + dlvylcVO.setMbrDvCd(user.getMbrDvCd()); + } + + //페이징 정보 set + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(dlvylcVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(dlvylcVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + dlvylcVO.setPaginationInfo(paginationInfo); + dlvylcVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + dlvylcVO.setLastIndex(paginationInfo.getLastRecordIndex()); + dlvylcVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + /*목록 조회*/ + List resultList = boOrdrService.selectBOMbrDlvylcListInqire(dlvylcVO); + + Map content = new HashMap<>(); + content.put("paramVO", dlvylcVO); + content.put("resultList", resultList); + content.put("paginationInfo", dlvylcVO.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrDlvylcListInqire", dlvylcVO), +// model, +// "resultMap" +// ); //기존 페이지 유지 model.addAttribute("pageIndex", dlvylcVO.getPageIndex()); model.addAttribute("formId", dlvylcVO.getFormId()); @@ -515,14 +1008,16 @@ public class MyMbrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectDlvylcUpdtPopupForm") - public String selectDlvylcUpdtPopupForm(HttpServletRequest request, ModelMap model, DlvylcVO dlvylcVO){ + public String selectDlvylcUpdtPopupForm(HttpServletRequest request, ModelMap model, BOCrmDlvylcVO dlvylcVO){ dlvylcVO.setServerDv("sopmal"); - //BO API 호출하여 상세 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcUpdtPopupForm",dlvylcVO), - model, - "dtlDlvylc" - ); + + Map content = selectBODlvylcUpdtPopupForm(dlvylcVO); + model.addAttribute("dtlDlvylc", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcUpdtPopupForm",dlvylcVO), +// model, +// "dtlDlvylc" +// ); model.addAttribute("pageIndex",dlvylcVO.getPageIndex()); return Util.getDeviceType(request)+"/mpage/mbr/DlvylcUpdtPopupU"; } @@ -533,14 +1028,16 @@ public class MyMbrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectDlvylcUpdtMobilePopupForm") - public String selectDlvylcUpdtMobilePopupForm(HttpServletRequest request, ModelMap model, DlvylcVO dlvylcVO){ - Map paramMap = new HashMap<>(); + public String selectDlvylcUpdtMobilePopupForm(HttpServletRequest request, ModelMap model, BOCrmDlvylcVO dlvylcVO){ dlvylcVO.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcUpdtPopupForm", dlvylcVO), - model, - "dtlDlvylc" - ); + + Map content = selectBODlvylcUpdtPopupForm(dlvylcVO); + model.addAttribute("dtlDlvylc", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcUpdtPopupForm", dlvylcVO), +// model, +// "dtlDlvylc" +// ); //모델 객체에 상세 조회 및 페이지 인덱스,회원고유번호 담음 // model.addAttribute("dtlDlvylc",BoResultMapConverter.convert(new ObjectMapper(), reply.getReply())); @@ -553,16 +1050,15 @@ public class MyMbrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @PostMapping(value="/updateDlvylcUpdt") - public ResponseEntity updateDlvylcUpdt(@Validated DlvylcVO dlvylcVO, - BindingResult bindingResult){ + @PostMapping(value="/updateDlvylcUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateDlvylcUpdt(@Validated DlvylcVO dlvylcVO, BOCrmDlvylcVO crmDlvylcVO, BindingResult bindingResult){ //입력값 정합성 점검결과 처리 if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } //휴대폰번호 정합성 체크 - String mbtlnb = dlvylcVO.getMbtlnb(); + String mbtlnb = crmDlvylcVO.getMbtlnb(); mbtlnb = mbtlnb.replace("-", ""); int mbtlnbLen = mbtlnb.length(); if (!(mbtlnbLen >= 8 && mbtlnbLen <= 12)) { @@ -571,18 +1067,39 @@ public class MyMbrController { //도로명 지번 분기처리 하여 vo에 set함 if("01".equals(dlvylcVO.getAdresDv())) { - dlvylcVO.setRnmAdres(dlvylcVO.getAdres()); - dlvylcVO.setLnbAdres(null); + crmDlvylcVO.setRnmAdres(dlvylcVO.getAdres()); + crmDlvylcVO.setLnbAdres(null); }else if("02".equals(dlvylcVO.getAdresDv())){ - dlvylcVO.setLnbAdres(dlvylcVO.getAdres()); - dlvylcVO.setRnmAdres(null); + crmDlvylcVO.setLnbAdres(dlvylcVO.getAdres()); + crmDlvylcVO.setRnmAdres(null); } dlvylcVO.setServerDv("sopmal"); - //BO API 호출 => 배송지 수정 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylcUpdt", dlvylcVO), - ReplyFromResrc::getReply + //수정자 set + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + crmDlvylcVO.setMbrInnb(user.getUserInnb()); + crmDlvylcVO.setMbrDvCd(user.getMbrDvCd()); + } + crmDlvylcVO.setUpdusr(user.getUserInnb()); + //기본배송지 + String dftDlvylcAt = crmDlvylcVO.getDftDlvylcAt(); + // 기본 배송지 체크 시('Y') 다른 배송지 N으로 수정 + if (dftDlvylcAt.equals("Y")) { + boOrdrService.updateBODftDlvylcAt(crmDlvylcVO); + } + + //자주쓰는 배송지 수정 + Map message = boOrdrService.updateBODlvylc(crmDlvylcVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylcUpdt", dlvylcVO), +// ReplyFromResrc::getReply +// ); } /** * 배송지 등록 팝업 이동 @@ -601,36 +1118,58 @@ public class MyMbrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @PostMapping(value="/insertDlvylcRegist") - public ResponseEntity insertDlvylcRegist(@Validated DlvylcVO dlvylcVO, - BindingResult bindingResult){ + @PostMapping(value="/insertDlvylcRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertDlvylcRegist(@Validated DlvylcVO dlvylcVO, BOCrmDlvylcVO crmDlvylcVO, BindingResult bindingResult){ //입력값 정합성 점검결과 처리 if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } //휴대폰번호 정합성 체크 - String mbtlnb = dlvylcVO.getMbtlnb(); + String mbtlnb = crmDlvylcVO.getMbtlnb(); mbtlnb = mbtlnb.replace("-",""); int mbtlnbLen = mbtlnb.length(); if(!(mbtlnbLen >= 8 && mbtlnbLen <= 12)){ throw new WnbtRestException("번호는 8자~12자 입니다."); } - dlvylcVO.setServerDv("sopmal"); + crmDlvylcVO.setServerDv("sopmal"); //등록 jsp에서 넘어온 주소를 도로명 지번 분기처리 하여 vo에 set함 - if("01".equals(dlvylcVO.getAdresDv())) { - dlvylcVO.setRnmAdres(dlvylcVO.getAdres()); - dlvylcVO.setLnbAdres(null); - }else if("02".equals(dlvylcVO.getAdresDv())){ - dlvylcVO.setLnbAdres(dlvylcVO.getAdres()); - dlvylcVO.setRnmAdres(null); + if("01".equals(crmDlvylcVO.getAdresDv())) { + crmDlvylcVO.setRnmAdres(crmDlvylcVO.getAdres()); + crmDlvylcVO.setLnbAdres(null); + }else if("02".equals(crmDlvylcVO.getAdresDv())){ + crmDlvylcVO.setLnbAdres(crmDlvylcVO.getAdres()); + crmDlvylcVO.setRnmAdres(null); } - //BO API 호출 => 배송지 등록 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBODlvylcRegist", dlvylcVO), - ReplyFromResrc::getReply + + //등록자 set + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + crmDlvylcVO.setRegusr(user.getUserInnb()); + crmDlvylcVO.setUpdusr(user.getUserInnb()); + if ("01".equals(user.getSysDvCd())) { + crmDlvylcVO.setMbrInnb(user.getUserInnb()); + crmDlvylcVO.setMbrDvCd(user.getMbrDvCd()); + } + //기본 배송지 체크 여부 확인 + String dftDlvylcAt = crmDlvylcVO.getDftDlvylcAt(); + //등록시 체크 여부에 따라 'Y'일 시 기존 자주쓰는 배송지 'N'으로 UPDATE + if (dftDlvylcAt.equals("Y")) { + boOrdrService.updateBODftDlvylcAt(crmDlvylcVO); + } + log.debug("insertDlvylcRegist CrmDlvylc : {}", crmDlvylcVO); + //service에서 등록 결과 메시지 담음 + Map message = boOrdrService.insertBODlvylcRegist(crmDlvylcVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBODlvylcRegist", dlvylcVO), +// ReplyFromResrc::getReply +// ); } /** * 배송지 삭제 @@ -638,14 +1177,25 @@ public class MyMbrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @PostMapping(value="/deleteDlvylcDel") - public ResponseEntity deleteDlvylcDel(DlvylcVO dlvylcVO){ + @PostMapping(value="/deleteDlvylcDel", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteDlvylcDel(BOCrmDlvylcVO dlvylcVO){ dlvylcVO.setServerDv("sopmal"); - //BO API 호출 => 배송지 삭제 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/deleteBODlvylcDel", dlvylcVO), - ReplyFromResrc::getReply + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + dlvylcVO.setMbrInnb(user.getUserInnb()); + dlvylcVO.setMbrDvCd(user.getMbrDvCd()); + } + //service에서 삭제 결과 갖고 옴 + Map message = boOrdrService.deleteBODlvylc(dlvylcVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/deleteBODlvylcDel", dlvylcVO), +// ReplyFromResrc::getReply +// ); } /** * 기본배송지 수정 @@ -653,14 +1203,63 @@ public class MyMbrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @PostMapping(value="/updatedftDlvylcAtUpdt") - public ResponseEntity updatedftDlvylcAtUpdt(DlvylcVO dlvylcVO){ + @PostMapping(value="/updatedftDlvylcAtUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updatedftDlvylcAtUpdt(BOCrmDlvylcVO dlvylcVO){ dlvylcVO.setServerDv("sopmal"); - //BO API 호출 => 기본배송지 수정 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOdftDlvylcAtUpdt", dlvylcVO), - ReplyFromResrc::getReply + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + dlvylcVO.setMbrInnb(user.getUserInnb()); + dlvylcVO.setMbrDvCd(user.getMbrDvCd()); + } + Map message = boOrdrService.updateBOdftDlvylcAtUpdt(dlvylcVO); + message = boOrdrService.updateBODftDlvylcAtYset(dlvylcVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOdftDlvylcAtUpdt", dlvylcVO), +// ReplyFromResrc::getReply +// ); } + + /** + * 회원 비밀번호 확인 + */ + public Map selectBOMbrPasswordCnfirm(BOMbrVO vo) { + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setMbrDvCd(user.getMbrDvCd()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + + Integer result = null; + result = service.selectBOMbrPasswordCnfirm(vo); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("result", result); + + return content; + } + + /** + * bo로직 회원 자주쓰는 배송지 상세 조회 + */ + public Map selectBODlvylcUpdtPopupForm(BOCrmDlvylcVO crmDlvylcVO) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + crmDlvylcVO.setMbrInnb(user.getUserInnb()); + crmDlvylcVO.setMbrDvCd(user.getMbrDvCd()); + } + //회원 자주쓰는 배송지 상세 조회 + BOCrmDlvylcVO resultVO = boOrdrService.selectBODlvylcUpdtPopupForm(crmDlvylcVO); + + //상세 조회 정보 resultVO에 put + Map content = new HashMap<>(); + content.put("resultVO", resultVO); + return content; + } } 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 10215343..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,23 +2,59 @@ 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.domain.sopmal.mpage.ordr.vo.*; -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.cookie.CookieUtil; -import com.wb.domainserver.util.util.Util; +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.sys.comncd.service.BOMaComncdService; +import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO; +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.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.BOIndvdlSetleVO; +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.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.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.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.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.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.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 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; @@ -28,7 +64,10 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import java.math.BigInteger; import java.util.HashMap; +import java.util.List; +import java.util.Map; @Controller @RequestMapping("/sopmal/mpage/ordr") @@ -44,6 +83,28 @@ public class MyOrdrController { @Autowired private GconeMessageSource gconeMessageSource; + @Autowired + private BOMbrService service; + @Autowired + private BOMaComncdService bOMaComncdService; + @Autowired + private PaginationProperties paginationProperties; + @Autowired + private BOGoodsService boGoodsService; + @Autowired + private BOSiteService boSiteService; + @Autowired + private BOOrdrService boOrdrService; + @Autowired + private BODlivyService dlivyService; + @Autowired + private BONbkkService nbkkService; + @Autowired + private BODlvygrpService dlvyGroupService; + @Autowired + private BORtngudrefndService boRtngudrefndService; + @Autowired + private BOSelngprufService boSelngprufService; /* #################################### 사용자 > 마이페이지 > MY쇼핑 > 주문/배송조회 시작 @@ -55,15 +116,17 @@ public class MyOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectMpageInfoRefreshInqire") - public String selectMpageInfoRefreshInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception { + public String selectMpageInfoRefreshInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO, BOMbrVO vo) throws Exception { model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO)); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO), - model, - "mpageResultMap" - ); + Map content = selectBOMpageInfoInqire(vo); + model.addAttribute("mpageResultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO), +// model, +// "mpageResultMap" +// ); // return Util.getDeviceType(request) + "/mpage/MypageRight"; return "comm/mpage/MypageRight"; @@ -76,15 +139,17 @@ public class MyOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectMbrOrdrListInqire") - public String selectMbrOrdrListInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception { + public String selectMbrOrdrListInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO, BOMbrVO vo) throws Exception { model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO)); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO), - model, - "mpageResultMap" - ); + Map content = selectBOMpageInfoInqire(vo); + model.addAttribute("mpageResultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/ordr/OrdrDlvyListR"; } @@ -97,13 +162,15 @@ public class MyOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectMbrOrdrListInqireAjax") - public String selectMbrOrdrListInqireAjax(ModelMap model, MyOrdrDlvyVO ordrDlvyVO) { + public String selectMbrOrdrListInqireAjax(ModelMap model, BOOrdrDlvyVO ordrDlvyVO) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO), - model, - "data" - ); + Map content = selectBOMbrOrdrListInqireAjax(ordrDlvyVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO), +// model, +// "data" +// ); return "sopmal/mpage/ordr/OrdrDlvyListRList"; } @@ -116,13 +183,15 @@ public class MyOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectMbrOrdrListInqireMapge") - public String selectMbrOrdrListInqireMapge(ModelMap model, MyOrdrDlvyVO ordrDlvyVO) { + public String selectMbrOrdrListInqireMapge(ModelMap model, BOOrdrDlvyVO ordrDlvyVO) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO), - model, - "data" - ); + Map content = selectBOMbrOrdrListInqireAjax(ordrDlvyVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO), +// model, +// "data" +// ); return "sopmal/mpage/ordr/OrdrDlvyListMpageRList"; } @@ -134,13 +203,19 @@ public class MyOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectMbrOrdrListInqireScrollAjax") - public ResponseEntity selectMbrOrdrListInqireScrollAjax(ModelMap model, MyOrdrDlvyVO ordrDlvyVO) { + @RequestMapping(value="/selectMbrOrdrListInqireScrollAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMbrOrdrListInqireScrollAjax(ModelMap model, BOOrdrDlvyVO ordrDlvyVO) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO), - ReplyFromResrc::getReply + Map content = selectBOMbrOrdrListInqireAjax(ordrDlvyVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO), +// ReplyFromResrc::getReply +// ); } /** @@ -150,93 +225,162 @@ public class MyOrdrController { * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateCanclOrdr") - public ResponseEntity updateCanclOrdr(MyOrdrDlvyVO ordrDlvyVO) throws JsonProcessingException { + @RequestMapping(value="/updateCanclOrdr", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCanclOrdr(BOOrdrDlvyVO ordrDlvyVO) throws JsonProcessingException { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + BOPayVO payVO = new BOPayVO(); + //주문 취소 상태 수정 + Map message = new HashMap<>(); {{ + message.put("status", "0"); + message.put("message", ""); + }}; - /** - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOCanclOrdr", ordrDlvyVO) - ); + 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()); + boOrdrService.updateOrdrSttusCd(ordrVO); + } catch (Exception e) { + message.put("status", "1"); + message.put("message", "주문 취소를 실패하였습니다"); + }; - if ("1".equals(resultMap.get("status"))) { - List> errorList = new ArrayList<>(); - - errorList.add(ValidateResultConverter.setErrorMap("error", (String) resultMap.get("message"))); - - throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList)); + // 회원 사이트정보 갱신 + try { + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrInnb(String.valueOf(user.getUserInnb())); + payVO.setMbrDvCd(user.getMbrDvCd()); + boOrdrService.updateMbrSiteUpdtOrdrRefund(payVO); + } catch (Exception e) { + log.error("회원 사이트정보 갱신 실패!"); } - WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(resultMap))).build(); - */ - - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOCanclOrdr", ordrDlvyVO), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOCanclOrdr", ordrDlvyVO), +// ReplyFromResrc::getReply +// ); } /** * 마이 페이지 > MY쇼핑 > 주문/배송조회 > 주문 기준 구매 확정 * @param ordrVO * @return ResponseEntity - * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updatePurchsDcsnByOrdr") - public ResponseEntity updateBOPurchsDcsnByOrdr(MyOrdrVO ordrVO) throws JsonProcessingException { + @RequestMapping(value="/updatePurchsDcsnByOrdr", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBOPurchsDcsnByOrdr(BOOrdrVO ordrVO) { + Map content = new HashMap<>() {{ + put("status", "0"); + put("message", "구매확정을 완료 하였습니다."); + }}; - /** - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOPurchsDcsnByOrdr", ordrVO) - ); + BODlivyUpdtVO boDlivyVO = new BODlivyUpdtVO(); - if ("1".equals(resultMap.get("status"))) { - List> errorList = new ArrayList<>(); + // 작성자 정보 할당 + 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())); // 회원 고유번호 - errorList.add(ValidateResultConverter.setErrorMap("error", (String) resultMap.get("message"))); + try { + // service.updatePurchsDcsnByOrdr(ordrVO); - throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList)); + 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관리자에게 문의하시기 바랍니다."); + }}; } - WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(resultMap))).build(); - */ - - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOPurchsDcsnByOrdr", ordrVO), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOPurchsDcsnByOrdr", ordrVO), +// ReplyFromResrc::getReply +// ); } /** * 마이 페이지 > MY쇼핑 > 주문/배송조회 > 상품 기준 구매 확정 * @param ordrVO * @return ResponseEntity - * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updatePurchsDcsnByItem") - public ResponseEntity updatePurchsDcsnByItem(MyOrdrVO ordrVO) throws JsonProcessingException { + @RequestMapping(value="/updatePurchsDcsnByItem", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updatePurchsDcsnByItem(BOOrdrVO ordrVO) { + Map content = new HashMap<>() {{ + put("status", "0"); + put("message", "구매확정을 완료 하였습니다."); + }}; - /** - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updatePurchsDcsnByItem", ordrVO) - ); + BODlivyUpdtVO boDlivyVO = new BODlivyUpdtVO(); - if ("1".equals(resultMap.get("status"))) { - List> errorList = new ArrayList<>(); + // 작성자 정보 할당 + 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())); // 회원 고유번호 - errorList.add(ValidateResultConverter.setErrorMap("error", (String) resultMap.get("message"))); + try { + // service.updatePurchsDcsnByItem(ordrVO); + boDlivyVO.setOrdrGoodsOptnInnb(ordrVO.getOrdrGoodsOptnInnb()); + boDlivyVO.setOptnTy(ordrVO.getOptnTy()); + boDlivyVO.setOrdrInnb(ordrVO.getOrdrInnb()); - throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList)); + 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관리자에게 문의하시기 바랍니다."); + }}; } - WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(resultMap))).build(); - */ - - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updatePurchsDcsnByItem", ordrVO), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updatePurchsDcsnByItem", ordrVO), +// ReplyFromResrc::getReply +// ); } /** @@ -245,21 +389,35 @@ public class MyOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectMbrOrdrDtlInqire") - public String selectOrdrDtlInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrDtlInqire", ordrDlvyVO), - model, - "data" - ); + public String selectOrdrDtlInqire(HttpServletRequest request, ModelMap model, BOOrdrDlvyVO ordrDlvyVO, BOMbrVO vo) throws Exception { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrDlvyVO.setSopmalCd(user.getSopmalCd()); + } + Map message = boOrdrService.selectMbrOrdrDtlInqire(ordrDlvyVO); + /**발급대상구분코드*/ + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("ISSU_TRGET_DV"); + List issuTrgetDv = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + message.put("issuTrgetDv", issuTrgetDv); + model.addAttribute("data", message); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrDtlInqire", ordrDlvyVO), +// model, +// "data" +// ); model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO)); model.addAttribute("vo", ordrDlvyVO); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO), - model, - "mpageResultMap" - ); + Map content = selectBOMpageInfoInqire(vo); + model.addAttribute("mpageResultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/ordr/OrdrDtlR"; } @@ -268,33 +426,47 @@ public class MyOrdrController { * 마이 페이지 > MY쇼핑 > 주문/배송조회 > 배송지 수정 * @param param * @return ResponseEntity - * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateDlvylc") - public ResponseEntity updateDlvylc(@RequestBody HashMap param) throws JsonProcessingException { - - /** - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylc", param) - ); - - if ("1".equals(resultMap.get("status"))) { - List> errorList = new ArrayList<>(); - - errorList.add(ValidateResultConverter.setErrorMap("error", (String) resultMap.get("message"))); - - throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList)); + @RequestMapping(value="/updateDlvylc", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateDlvylc(@RequestBody DataMap param) { + 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 = boOrdrService.updateDlvylc(param); - WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(resultMap))).build(); + // 배송지 정보 변경 주문 로그 + 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()); + boOrdrService.updateDlvylcInfoLogRegist(logVO); - // return ResponseEntity.status(HttpStatus.OK).body(response); - */ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylc", param), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylc", param), +// ReplyFromResrc::getReply +// ); } /** @@ -303,13 +475,15 @@ public class MyOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectSetleCanclPopupForm") - public String selectSetleCanclPopupForm(HttpServletRequest request,ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws JsonProcessingException { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO), - model, - "data" - ); + public String selectSetleCanclPopupForm(HttpServletRequest request,ModelMap model, BOOrdrVO ordrDlvyVO) throws JsonProcessingException { + Map content = selectBOSetleCanclRefndRegist(ordrDlvyVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO), +// model, +// "data" +// ); ObjectMapper objectMapper = new ObjectMapper(); model.addAttribute("adscript", Base64Util.encode(objectMapper.writeValueAsString(model.getAttribute("data")))); @@ -324,31 +498,44 @@ public class MyOrdrController { * @throws JsonProcessingException */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertSetleCanclRegist") - public ResponseEntity registSetleCancl(@RequestBody HashMap param) throws JsonProcessingException { + @RequestMapping(value="/insertSetleCanclRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity registSetleCancl(@RequestBody DataMap param) throws JsonProcessingException { + 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()); - /** - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSetleCanclRegist", param) - ); - if ("1".equals(resultMap.get("status"))) { - List> errorList = new ArrayList<>(); + log.debug("반품신청 테스트 param 확인 : {}", param); + Map message = boOrdrService.insertSetleCanclRegist(param); - errorList.add(ValidateResultConverter.setErrorMap("error", (String) resultMap.get("message"))); - - throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList)); + // 회원 사이트정보 갱신 ============================================================== + try { + BOPayVO payVO = new BOPayVO(); + payVO.setSopmalCd(user.getSopmalCd()); + payVO.setMbrInnb(String.valueOf(user.getUserInnb())); + payVO.setMbrDvCd(user.getMbrDvCd()); + boOrdrService.updateMbrSiteUpdtOrdrRefund(payVO); + } catch (Exception e) { + log.error("회원 사이트정보 갱신 실패!"); } - WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(resultMap))).build(); - - */ - - // return ResponseEntity.status(HttpStatus.OK).body(response); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSetleCanclRegist", param), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSetleCanclRegist", param), +// ReplyFromResrc::getReply +// ); } /* #################################### 사용자 > 마이페이지 > MY쇼핑 > 주문/배송조회 종료 @@ -363,14 +550,16 @@ public class MyOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectIndvdlSetleInqire") - public String selectIndvdlSetleInqire(HttpServletRequest request, ModelMap model, MyIndvdlSetleVO indvdlSetleVO) { + public String selectIndvdlSetleInqire(HttpServletRequest request, ModelMap model, BOMbrVO vo) { // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", indvdlSetleVO), - model, - "mpageResultMap" - ); + Map content = selectBOMpageInfoInqire(vo); + model.addAttribute("mpageResultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", indvdlSetleVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/ordr/IndvdlSetleR"; } @@ -381,13 +570,14 @@ public class MyOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectIndvdlSetleInqireAjax") - public String selectIndvdlSetleInqireAjax(HttpServletRequest request, ModelMap model, MyIndvdlSetleVO indvdlSetleVO) { - - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOIndvdlSetleInqireAjax", indvdlSetleVO), - model, - "data" - ); + public String selectIndvdlSetleInqireAjax(HttpServletRequest request, ModelMap model, BOIndvdlSetleVO indvdlSetleVO) { + Map content = selectBOIndvdlSetleInqireAjax(indvdlSetleVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOIndvdlSetleInqireAjax", indvdlSetleVO), +// model, +// "data" +// ); return Util.getDeviceType(request) + "/mpage/ordr/IndvdlSetleRList"; } @@ -397,13 +587,18 @@ public class MyOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectIndvdlSetleInqireScrollAjax") - public ResponseEntity selectIndvdlSetleInqireScrollAjax(ModelMap model, MyIndvdlSetleVO indvdlSetleVO) { - - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOIndvdlSetleInqireAjax", indvdlSetleVO), - ReplyFromResrc::getReply + @RequestMapping(value="/selectIndvdlSetleInqireScrollAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectIndvdlSetleInqireScrollAjax(ModelMap model, BOIndvdlSetleVO indvdlSetleVO) { + Map content = selectBOIndvdlSetleInqireAjax(indvdlSetleVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOIndvdlSetleInqireAjax", indvdlSetleVO), +// ReplyFromResrc::getReply +// ); } /* #################################### 사용자 > 마이페이지 > MY쇼핑 > 개인결제 종료 @@ -415,14 +610,22 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectDlvyInqire") - public String selectDlvyInqire(MyDlivyVO dlivyVO, ModelMap model, HttpServletRequest request){ + 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); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/dlivy/selectBOOrdrDlvyDtlsInqire", dlivyVO), - model, - "resultMap" - ); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/dlivy/selectBOOrdrDlvyDtlsInqire", dlivyVO), +// model, +// "resultMap" +// ); // return "sopmal/mpage/ordr/DlvyInqireR"; return Util.getDeviceType(request) + "/mpage/ordr/DlvyInqireR"; @@ -435,21 +638,49 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectRtngudCanclRefndForm") - public String selectRtngudCanclRefndForm(MyRefundVO refundVO, ModelMap model, HttpServletRequest request) throws JsonProcessingException { - refundVO.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBORtngudRefndListInqireForm", refundVO), - model, - "resultMap" - ); - model.addAttribute("paramVO", refundVO); + public String selectRtngudCanclRefndForm(BORtngudrefndVO boRtngudrefndVO, BOMbrVO vo, ModelMap model, HttpServletRequest request) throws JsonProcessingException { + boRtngudrefndVO.setServerDv("sopmal"); + vo.setServerDv("sopmal"); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + boRtngudrefndVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + } + + Map content = new HashMap<>(); + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + //환불 처리 상태 공통 코드 + bOMaComncdVO.setGroupCd("REFUND_PROCS_STTUS"); + List refndProcsSttus = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + content.put("refndProcsSttus", refndProcsSttus); + //반품 처리 상태 공통 코드 + bOMaComncdVO.setGroupCd("RETURN_PROCS_STTUS"); + List rtngudProcsSttus = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + content.put("rtngudProcsSttus", rtngudProcsSttus); + // 반품 방법 코드 + bOMaComncdVO.setGroupCd("RETURN_MTH"); + List returnMtcCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + content.put("returnMtcCdList", returnMtcCdList); + // Map객체에 필요 정보 할당 + content.put("paramVO", boRtngudrefndVO); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBORtngudRefndListInqireForm", refundVO), +// model, +// "resultMap" +// ); + model.addAttribute("paramVO", boRtngudrefndVO); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", refundVO), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(vo); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", refundVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/ordr/RtngudCanclRefndListFormR"; } @@ -460,13 +691,16 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectRtngudCanclRefndInqire") - public String selectRtngudCanclRefndInqire(MyRefundVO refundVO, ModelMap model, HttpServletRequest request){ + public String selectRtngudCanclRefndInqire(MyRefundVO refundVO, BORtngudrefndSrchVO boRtngudrefndSrchVO, ModelMap model, HttpServletRequest request){ refundVO.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBOMbrRefundListInqire", refundVO), - model, - "resultMap" - ); + + Map content = selectBOMbrRefundListInqire(boRtngudrefndSrchVO); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBOMbrRefundListInqire", refundVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", refundVO); // return "sopmal/mpage/ordr/RtngudCanclRefndListR"; @@ -476,18 +710,21 @@ public class MyOrdrController { /** * 마이페이지 > 반품/환불 목록 조회 > 스크롤 - * @param mlgVO - * @param model * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectRtngudCanclRefndScrolInqire") - public ResponseEntity selectRtngudCanclRefndScrolInqire(MyRefundVO refundVO) { - refundVO.setServerDv("sopmal"); - return responseHandler.handleMapResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBOMbrRefundListInqire", refundVO), - result -> ResponseEntity.status(HttpStatus.OK).body(result) + @RequestMapping(value = "/selectRtngudCanclRefndScrolInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectRtngudCanclRefndScrolInqire(BORtngudrefndSrchVO boRtngudrefndSrchVO) { + Map content = selectBOMbrRefundListInqire(boRtngudrefndSrchVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleMapResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBOMbrRefundListInqire", refundVO), +// result -> ResponseEntity.status(HttpStatus.OK).body(result) +// ); } @@ -497,22 +734,89 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectRtngudCanclRefndDtlInqire") - public String selectRtngudCanclRefndDtlInqire(MyRefundVO refundVO, ModelMap model, HttpServletRequest request){ - refundVO.setServerDv("sopmal"); + public String selectRtngudCanclRefndDtlInqire(BORtngudrefndVO boRtngudrefndVO, BOMbrVO vo, ModelMap model, HttpServletRequest request){ + boRtngudrefndVO.setServerDv("sopmal"); + vo.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBORtngudRefndDtlInqire", refundVO), - model, - "resultMap" - ); - model.addAttribute("paramVO", refundVO); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + boRtngudrefndVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + } + + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("RETURN_DLVY_PYMNT_TY"); // 반품배송비 지불 타입 코드 + List returnDlvyPymntTyCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("RETURN_RESN_DTL"); // 반품상세사유 + List returnResnDtlCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("RETURN_DLVY_RSPNSBL"); // 반품배송비 지불 책임 코드 + List returnDlvyRspnsbl = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("SETLE_MTH"); // 환불방법 + List refundMth = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("RETURN_PROCS_STTUS"); // 반품 처리상태 코드 + List returnProcsSttusCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("REFUND_PROCS_STTUS"); // 환불 처리상태 코드 + List refundProcsSttusCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("RETURN_MTH"); // 반품 방법 코드 : 회수 방법 + List returnMthCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + bOMaComncdVO.setGroupCd("TOSS_BANK_CD"); // TOSS은행코드 + List kcpBankCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + bOMaComncdVO.setGroupCd("TOSS_BANK_CD"); // TOSS은행코드 + List toosBankCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + // 무통장 계좌 정보 + BOSetupNbkkVO boShopSetupVO = new BOSetupNbkkVO(); + boShopSetupVO.setSopmalCd(boRtngudrefndVO.getSopmalCd()); + boShopSetupVO.setUseAt("Y"); + Map setupJson = nbkkService.selectBOSopmalSetupList(boShopSetupVO); + List sopmalSetupVO = (List) setupJson.get("refundAcntSetup"); + log.debug("반품 배송비 계좌 json : {}", sopmalSetupVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + + content.put("result", boRtngudrefndService.selectBORtngudRefndDtlInqire(boRtngudrefndVO)); + content.put("paramVO", boRtngudrefndVO); + content.put("returnDlvyPymntTyCdList", returnDlvyPymntTyCdList); + content.put("returnResnList", returnResnDtlCdList); + content.put("returnDlvyRspnsbl", returnDlvyRspnsbl); + content.put("refundMth", refundMth); + content.put("returnProcsSttusCdList", returnProcsSttusCdList); + content.put("refundProcsSttusCdList", refundProcsSttusCdList); + content.put("returnMthCdList", returnMthCdList); + content.put("bankAccount", sopmalSetupVO); + + Map resultData = (Map) content.get("result"); // TODO : ( 2024-08-22 ) 통장 코드 환불 선택해서 입력 Npay , 에스크로, 페이코 고려되어있지않음 확인시 수정 필요 + DataMap order = new DataMap(); + order = (DataMap) resultData.get("refnd"); + 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); + } + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBORtngudRefndDtlInqire", refundVO), +// model, +// "resultMap" +// ); + model.addAttribute("paramVO", boRtngudrefndVO); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", refundVO), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(vo); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", refundVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/ordr/RtngudCanclRefndDtlR"; } @@ -522,14 +826,50 @@ public class MyOrdrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateRtngudCanclRefndUpdt") - public ResponseEntity updateRtngudCanclRefndUpdt(MyRefundVO refundVO, ModelMap model){ - log.debug("ordrVO is {}", refundVO); + @RequestMapping(value="/updateRtngudCanclRefndUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateRtngudCanclRefndUpdt(BORtngudrefndVO boRtngudrefndVO, ModelMap model){ + log.debug("ordrVO is {}", boRtngudrefndVO); + // 작성자 정보 할당 + 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<>(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/updateBOOrderReUpdt", refundVO), - ReplyFromResrc::getReply + 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())); + } + boOrdrService.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 +// ); } @@ -540,13 +880,15 @@ public class MyOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectRetrunRegistPopupForm") - public String selectRetrunRegistPopupForm(HttpServletRequest request,ModelMap model, MyOrdrDlvyVO ordrDlvyVO) { + public String selectRetrunRegistPopupForm(HttpServletRequest request,ModelMap model, BOOrdrVO ordrDlvyVO) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO), - model, - "data" - ); + Map content = selectBOSetleCanclRefndRegist(ordrDlvyVO); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO), +// model, +// "data" +// ); return Util.getDeviceType(request) + "/mpage/ordr/RefundRegistPopupC"; } @@ -558,23 +900,34 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectGiftListInqireForm") - public String selectGiftListInqireForm(MyOrdrShippingVO ordrShippingVO, ModelMap model, HttpServletRequest request) throws JsonProcessingException { - log.debug("선물함 이동 ordrShippingVO is {}", ordrShippingVO); - model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrShippingVO)); + public String selectGiftListInqireForm(BOOrdrShippingVO ordrSrchVO, BOMbrVO vo, ModelMap model, HttpServletRequest request) throws JsonProcessingException { + log.debug("선물함 이동 ordrShippingVO is {}", ordrSrchVO); + model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrSrchVO)); + Map content = new HashMap<>(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftOrdrListInqireForm", ordrShippingVO), - model, - "resultMap" - ); + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd(""); // + List purchsEvtDvList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + content.put("paramVO", ordrSrchVO); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftOrdrListInqireForm", ordrShippingVO), +// model, +// "resultMap" +// ); // model.addAttribute("paramVO", ordrShippingVO); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrShippingVO), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(vo); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrShippingVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/ordr/GiftListFormR"; } @@ -586,14 +939,15 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectGiftListInqire") - public String selectGiftListInqire(MyOrdrShippingVO ordrShippingVO, ModelMap model, HttpServletRequest request){ + public String selectGiftListInqire(BOOrdrShippingVO ordrShippingVO, ModelMap model, HttpServletRequest request){ log.debug("ordrShippingVO is {}", ordrShippingVO); - - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftOrdrListInqireAjax", ordrShippingVO), - model, - "resultMap" - ); + Map content = selectBOUserGiftOrdrListInqireAjax(ordrShippingVO); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftOrdrListInqireAjax", ordrShippingVO), +// model, +// "resultMap" +// ); return Util.getDeviceType(request) + "/mpage/ordr/GiftListR"; } @@ -605,13 +959,19 @@ public class MyOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectMbrGfitListInqireScrollAjax") - public ResponseEntity selectMbrGfitListInqireScrollAjax(ModelMap model, MyOrdrDlvyVO ordrDlvyVO) { + @RequestMapping(value="/selectMbrGfitListInqireScrollAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMbrGfitListInqireScrollAjax(ModelMap model, BOOrdrShippingVO ordrDlvyVO) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftOrdrListInqireAjax", ordrDlvyVO), - ReplyFromResrc::getReply + Map content = selectBOUserGiftOrdrListInqireAjax(ordrDlvyVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftOrdrListInqireAjax", ordrDlvyVO), +// ReplyFromResrc::getReply +// ); } @@ -621,13 +981,27 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectGiftOrdrSittnPopupForm") - public String selectGiftOrdrSittnPopupForm(MyOrdrShippingVO ordrShippingVO, ModelMap model, HttpServletRequest request){ - log.debug("ordrShippingVO is {}", ordrShippingVO); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftShippSittnPopup", ordrShippingVO), - model, - "resultMap" - ); + public String selectGiftOrdrSittnPopupForm(BOOrdrShippingVO ordrSrchVO, ModelMap model, HttpServletRequest request){ + log.debug("ordrShippingVO is {}", ordrSrchVO); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrSrchVO.setSopmalCd(user.getSopmalCd()); + } + + Map content = new HashMap<>(); + + List resultList = boOrdrService.selectBOUserGiftShippSittnPopup(ordrSrchVO); + + content.put("resultList", resultList); + content.put("paramVO", ordrSrchVO); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftShippSittnPopup", ordrShippingVO), +// model, +// "resultMap" +// ); return Util.getDeviceType(request) + "/mpage/ordr/GiftOrdrSittnPopupR"; } @@ -639,22 +1013,35 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectWslistInqireForm") - public String selectWslistInqireForm(MyWishVO wishVO, ModelMap model, HttpServletRequest request){ + public String selectWslistInqireForm(BOWishVO wishVO, BOMbrVO vo, ModelMap model, HttpServletRequest request){ wishVO.setServerDv("sopmal"); + vo.setServerDv("sopmal"); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + wishVO.setSopmalCd(user.getSopmalCd()); + wishVO.setMbrInnb(user.getUserInnb()); + wishVO.setMbrDvCd(user.getMbrDvCd()); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqireForm", wishVO), - model, - "resultMap" - ); + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("paramVO", wishVO); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqireForm", wishVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", wishVO); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", wishVO), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(vo); + model.addAttribute("mpageResultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", wishVO), +// model, +// "mpageResultMap" +// ); return Util.getDeviceType(request) + "/mpage/ordr/WslistInqireRForm"; } @@ -664,12 +1051,9 @@ public class MyOrdrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/insertWslistGoods") - public ResponseEntity insertWslistGoods(MyWishVO wishVO, HttpServletRequest request){ - - + @RequestMapping(value="/insertWslistGoods", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertWslistGoods(BOWishVO wishVO, HttpServletRequest request){ String agentId = ""; - Cookie[] cookies = request.getCookies(); if(cookies != null){ @@ -678,13 +1062,31 @@ public class MyOrdrController { wishVO.setAgentId(agentId); } } - wishVO.setIp(request.getAttribute("LoggingClientIp").toString()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/insertBOWslistGoods", wishVO), - ReplyFromResrc::getReply + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + wishVO.setSopmalCd(user.getSopmalCd()); + wishVO.setRegusr(user.getUserInnb()); + wishVO.setUpdusr(user.getUserInnb()); + wishVO.setMbrDvCd(user.getMbrDvCd()); + wishVO.setMbrInnb(user.getUserInnb()); + + DataMap message = service.insertWslistGoods(wishVO); + BOGoodsVO boGoodsVO = new BOGoodsVO(); + boGoodsVO.setGoodsInnb(String.valueOf(wishVO.getGoodsInnb())); + boGoodsVO.setSopmalCd(wishVO.getSopmalCd()); + boGoodsService.updateWslistCnt(boGoodsVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/insertBOWslistGoods", wishVO), +// ReplyFromResrc::getReply +// ); } @@ -694,14 +1096,16 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectWslistInqire") - public String selectWslistInqire(MyWishVO wishVO, ModelMap model, HttpServletRequest request){ + public String selectWslistInqire(BOWishVO wishVO, ModelMap model, HttpServletRequest request){ wishVO.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqire", wishVO), - model, - "resultMap" - ); + Map content = selectBOWslistInqire(wishVO); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqire", wishVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", wishVO); // return "sopmal/mpage/ordr/WslistInqireR"; @@ -711,19 +1115,23 @@ public class MyOrdrController { /** * 마이페이지 > 위시리스트 목록 조회 > 스크롤 - * @param mlgVO - * @param model * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectWslistScrolInqire") - public ResponseEntity selectWslistScrolInqire(MyWishVO wishVO) { + @RequestMapping(value = "/selectWslistScrolInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectWslistScrolInqire(BOWishVO wishVO) { wishVO.setServerDv("sopmal"); - return responseHandler.handleMapResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqire", wishVO), - result -> ResponseEntity.status(HttpStatus.OK).body(result) + Map content = selectBOWslistInqire(wishVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleMapResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqire", wishVO), +// result -> ResponseEntity.status(HttpStatus.OK).body(result) +// ); } @@ -733,15 +1141,35 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectGoodsOptnSlcPopup") - public String selectGoodsOptnSlcPopup(@RequestBody MyWishVO wishVO, ModelMap model, HttpServletRequest request){ -// ReplyFromResrc reply = sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", wishVO); -// model.addAttribute("resultMap", BoResultMapConverter.convert(new ObjectMapper(), reply.getReply())); + public String selectGoodsOptnSlcPopup(@RequestBody BOGoodsVO vo, ModelMap model, HttpServletRequest request){ + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setMbrInnb(String.valueOf(user.getUserInnb())); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", wishVO), - model, - "resultMap" - ); + Map content = new HashMap<>(); + DataMap optnList = new DataMap(); + DataMap goodsDtl = new DataMap(); + optnList = boGoodsService.selectBOGoodsOptionList(vo); + goodsDtl = boGoodsService.selectBOGoodsDtlInfo(vo); + + // 장바구니구분코드 + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("CART_DV"); + List cartDvList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("cartDvList", cartDvList); + content.put("goodsDtl", goodsDtl); + content.put("optnList", optnList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", wishVO), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/mpage/ordr/GoodsSlcPopupR"; } @@ -754,40 +1182,72 @@ public class MyOrdrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/deleteWslistGoodsDel" , method = RequestMethod.POST) - public ResponseEntity deleteWslistGoodsDel(@Validated MyWishVO wishVO, BindingResult bindingResult ){ + @RequestMapping(value="/deleteWslistGoodsDel" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteWslistGoodsDel(@Validated BOWishVO wishVO, BindingResult bindingResult ){ + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + wishVO.setSopmalCd(user.getSopmalCd()); + wishVO.setMbrInnb(user.getUserInnb()); + wishVO.setMbrDvCd(user.getMbrDvCd()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/deleteBOWslistGoodsDel", wishVO), - ReplyFromResrc::getReply + // 상품 옵션 조회 + Map message = new HashMap<>(); + message = service.deleteBOWslistGoodsDel(wishVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/deleteBOWslistGoodsDel", wishVO), +// ReplyFromResrc::getReply +// ); } /** * 정기 배송 관리 목록 폼 이동 - * @param ordrShippingVO + * @param ordrSrchVO * @param model * @return */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectFdrmDlvyInqireForm") - public String selectFdrmDlvyInqireForm(MyOrdrShippingVO ordrShippingVO, ModelMap model){ - log.debug("wishVO is {}", ordrShippingVO); + public String selectFdrmDlvyInqireForm(BOOrdrShippingVO ordrSrchVO, BOMbrVO vo, ModelMap model){ + log.debug("wishVO is {}", ordrSrchVO); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrSrchVO.setSopmalCd(user.getSopmalCd()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOFdrmDlvyForm", ordrShippingVO), - model, - "resultMap" - ); - model.addAttribute("paramVO", ordrShippingVO); + Map content = new HashMap<>(); + + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("PURCHS_EVT_DV"); // 배송주기 코드 + List dlvyCycleCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + content.put("paramVO", ordrSrchVO); + content.put("dlvyCycleCdList", dlvyCycleCdList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOFdrmDlvyForm", ordrShippingVO), +// model, +// "resultMap" +// ); + model.addAttribute("paramVO", ordrSrchVO); // 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 ) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrShippingVO), - model, - "mpageResultMap" - ); + Map content2 = selectBOMpageInfoInqire(vo); + model.addAttribute("resultMap", content2); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrShippingVO), +// model, +// "mpageResultMap" +// ); return "sopmal/mpage/ordr/FdrmDlvyFormR"; } @@ -795,20 +1255,44 @@ public class MyOrdrController { /** * 정기 배송 관리 목록 조회 - * @param ordrShippingVO + * @param ordrSrchVO * @param model * @return */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectFdrmDlvyInqire") - public String selectFdrmDlvyInqire(MyOrdrShippingVO ordrShippingVO, ModelMap model){ - log.debug("wishVO is {}", ordrShippingVO); + public String selectFdrmDlvyInqire(BOOrdrShippingVO ordrSrchVO, ModelMap model){ + log.debug("wishVO is {}", ordrSrchVO); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrSrchVO.setSopmalCd(user.getSopmalCd()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOFdrmDlvyInqire", ordrShippingVO), - model, - "resultMap" - ); + Map content = new HashMap<>(); + + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(ordrSrchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(ordrSrchVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + ordrSrchVO.setPaginationInfo(paginationInfo); + ordrSrchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + ordrSrchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + ordrSrchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + List allOrdrList = boOrdrService.selectBOFdrmDlvyInqire(ordrSrchVO); + + content.put("allOrdrList", allOrdrList); + content.put("paramVO", ordrSrchVO); + content.put("paginationInfo", ordrSrchVO.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOFdrmDlvyInqire", ordrShippingVO), +// model, +// "resultMap" +// ); return "sopmal/mpage/ordr/FdrmDlvyR"; } @@ -822,14 +1306,31 @@ public class MyOrdrController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectFdrmDlvyCycleChngForm") - public String selectFdrmDlvyCycleChngForm(MyOrdrShippingVO ordrShippingVO, ModelMap model){ + public String selectFdrmDlvyCycleChngForm(BOOrdrShippingVO ordrShippingVO, ModelMap model){ log.debug("wishVO is {}", ordrShippingVO); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrShippingVO.setSopmalCd(user.getSopmalCd()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOFdrmDlvyCycleChngForm", ordrShippingVO), - model, - "resultMap" - ); + Map content = new HashMap<>(); + + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("DLVY_CYCLE"); // 배송주기 코드 + List dlvyCycleCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + log.debug("DLVY_CYCLE : {}", dlvyCycleCdList); + content.put("paramVO", ordrShippingVO); + content.put("dlvyCycleCdList", dlvyCycleCdList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOFdrmDlvyCycleChngForm", ordrShippingVO), +// model, +// "resultMap" +// ); return "sopmal/mpage/ordr/FdrmDlvyCycleChngU"; } @@ -841,7 +1342,7 @@ public class MyOrdrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateFdrmDlvyCycleChng ") + @RequestMapping(value="/updateFdrmDlvyCycleChng ", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity updateFdrmDlvyCycleChng (MyOrdrShippingVO ordrShippingVO){ log.debug("ordrShippingVO is {}", ordrShippingVO); @@ -858,12 +1359,23 @@ public class MyOrdrController { * @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 +// ); } @@ -874,13 +1386,277 @@ public class MyOrdrController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/updateCashReceiptInfo") - public ResponseEntity updateCashReceiptInfo(MyOrdrVO vo) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/selngpruf/updateBOCshRcipt", vo), - ReplyFromResrc::getReply - ); - } - + @RequestMapping(value = "/updateCashReceiptInfo", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCashReceiptInfo(BOSelngprufVO vo) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setUpdusr(user.getUserInnb()); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + Map message = boSelngprufService.updateBOCshRcipt(vo); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/selngpruf/updateBOCshRcipt", vo), +// ReplyFromResrc::getReply +// ); + } + + + /** + * bo로직 사이트 메인페이지 등급, 마일리지, 쿠폰, 위시리스트, 배송중 정보 조회 + * + */ + public Map selectBOMpageInfoInqire(BOMbrVO vo) { + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setSopmalCd(user.getSopmalCd()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + + // 상품 옵션 조회 + Map message = new HashMap<>(); + message = service.selectBOMpageInfoInqire(vo); + + BOSiteVO siteVO = new BOSiteVO(); + siteVO.setSopmalCd(vo.getSopmalCd()); + siteVO.setCookieValArr(vo.getCookieValArr()); + + List recentGoods = null; + if (vo.getCookieValArr() != null) { + recentGoods = boSiteService.selectBOMainRecentGoods(siteVO); + message.put("recentGoods", recentGoods); + } + return message; + } + + /** + * 사용자 > 마이페이지 > 주문/배송 조회 + */ + public Map selectBOMbrOrdrListInqireAjax(BOOrdrDlvyVO ordrDlvyVO) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrDlvyVO.setSopmalCd(user.getSopmalCd()); + } + ordrDlvyVO.setMbrInnb(BigInteger.valueOf(user.getUserInnb())); + ordrDlvyVO.setMbrDvCd(user.getMbrDvCd()); + + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(ordrDlvyVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(ordrDlvyVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + ordrDlvyVO.setPaginationInfo(paginationInfo); + ordrDlvyVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + ordrDlvyVO.setLastIndex(paginationInfo.getLastRecordIndex()); + ordrDlvyVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + ordrDlvyVO.setMbrInnb(BigInteger.valueOf(MemberJwtContextHolder.getMemberInfo().getUserInnb())); + + List resultList = boOrdrService.selectMbrOrdrListInqireAjax(ordrDlvyVO); + + Map content = new HashMap<>(); + + content.put("resultList", resultList); + content.put("paginationInfo", ordrDlvyVO.getPaginationInfo()); + + return content; + } + + /** + * 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 = boOrdrService.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; + } + + /** + * bo로직 사용자 > 마이페이지 > MY쇼핑 > 개인결제 목록 조회 + */ + public Map selectBOIndvdlSetleInqireAjax(BOIndvdlSetleVO indvdlSetleVO) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + indvdlSetleVO.setSopmalCd(user.getSopmalCd()); + } + + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(indvdlSetleVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(indvdlSetleVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + indvdlSetleVO.setPaginationInfo(paginationInfo); + indvdlSetleVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + indvdlSetleVO.setLastIndex(paginationInfo.getLastRecordIndex()); + indvdlSetleVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + indvdlSetleVO.setMbrInnb(new BigInteger(String.valueOf(MemberJwtContextHolder.getMemberInfo().getUserInnb()))); + + List resultList = boOrdrService.selectIndvdlSetleInqireAjax(indvdlSetleVO); + + Map content = new HashMap<>(); + + content.put("resultList", resultList); + content.put("paginationInfo", indvdlSetleVO.getPaginationInfo()); + + return content; + } + + /** + * 반품 환불 목록 조회 ( 사용자 ) + */ + public Map selectBOMbrRefundListInqire(BORtngudrefndSrchVO boRtngudrefndSrchVO) { + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + boRtngudrefndSrchVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + } + boRtngudrefndSrchVO.setRegusr(user.getUserInnb()); // 등록자 + boRtngudrefndSrchVO.setUpdusr(user.getUserInnb()); // 수정자 + boRtngudrefndSrchVO.setMbrInnb(user.getUserInnb()); // 회원 고유번호 + boRtngudrefndSrchVO.setMbrDvCd(user.getMbrDvCd()); // 회원 구분코드 + + // 페이징 객체 생성 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(boRtngudrefndSrchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(boRtngudrefndSrchVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + // 페이징정보 할당 + boRtngudrefndSrchVO.setPaginationInfo(paginationInfo); + boRtngudrefndSrchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + boRtngudrefndSrchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + boRtngudrefndSrchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + // 목록 조회 + List resultList = null; + resultList = boRtngudrefndService.selectBOMbrRefundListInqire(boRtngudrefndSrchVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("paramVO", boRtngudrefndSrchVO); + content.put("resultList", resultList); + content.put("paginationInfo", boRtngudrefndSrchVO.getPaginationInfo()); + + return content; + } + + + /** + * bo로직 사용자 > 마이페이지 > 선물함 주문 목록 조회 + */ + public Map selectBOUserGiftOrdrListInqireAjax(BOOrdrShippingVO ordrSrchVO) { + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrSrchVO.setSopmalCd(user.getSopmalCd()); + ordrSrchVO.setMbrDvCd(user.getMbrDvCd()); + ordrSrchVO.setMbrInnb(user.getUserInnb()); + } + + Map content = new HashMap<>(); + + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(ordrSrchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(ordrSrchVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + ordrSrchVO.setPaginationInfo(paginationInfo); + ordrSrchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + ordrSrchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + ordrSrchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + List allOrdrList = boOrdrService.selectBOUserGiftOrdrListInqireAjax(ordrSrchVO); + + content.put("allOrdrList", allOrdrList); + content.put("resultList", allOrdrList); + content.put("paramVO", ordrSrchVO); + content.put("paginationInfo", ordrSrchVO.getPaginationInfo()); + + return content; + } + + /** + * 위시리스트 목록 조회 + */ + public Map selectBOWslistInqire(BOWishVO wishVO) { + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + wishVO.setSopmalCd(user.getSopmalCd()); + wishVO.setMbrInnb(user.getUserInnb()); + wishVO.setMbrDvCd(user.getMbrDvCd()); + + // 페이징 객체 생성 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(wishVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(wishVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + // 페이징정보 할당 + wishVO.setPaginationInfo(paginationInfo); + wishVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + wishVO.setLastIndex(paginationInfo.getLastRecordIndex()); + wishVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + // 목록 조회 + List resultList = null; + resultList = service.selectBOWslistInqire(wishVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("paramVO", wishVO); + content.put("resultList", resultList); + content.put("paginationInfo", wishVO.getPaginationInfo()); + + return content; + } } 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; + } + }