diff --git a/src/main/java/com/wb/domainserver/domain/crm/bbs/controller/CrmBbsController.java b/src/main/java/com/wb/domainserver/domain/crm/bbs/controller/CrmBbsController.java index 6692ced1..06109add 100644 --- a/src/main/java/com/wb/domainserver/domain/crm/bbs/controller/CrmBbsController.java +++ b/src/main/java/com/wb/domainserver/domain/crm/bbs/controller/CrmBbsController.java @@ -1,14 +1,20 @@ package com.wb.domainserver.domain.crm.bbs.controller; 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.crm.cnslt.vo.CrmCnsltVO; -import com.wb.domainserver.domain.mngr.bbs.gnrlsctt.vo.GnrlscttVO; -import com.wb.domainserver.domain.mngr.bbs.rvw.vo.RvwVO; +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.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.dataaccess.DataMap; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -16,6 +22,11 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestMapping; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + @Slf4j @Controller @RequestMapping("/crm/bbs") @@ -31,6 +42,15 @@ public class CrmBbsController { /** 공통 메시지 처리를 위한 메시지 객체 */ @Autowired private GconeMessageSource gconeMessageSource; + + + @Autowired + private BOGnrlbbscttService service; + @Autowired + private BOBbsService bbsService; + @Autowired + private PaginationProperties paginationProperties; + /** * 리뷰 목록 조회 폼 * @return String @@ -49,15 +69,42 @@ public class CrmBbsController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectGoodsRvwInqire") - public String selectGoodsRvwInqire(ModelMap model, RvwVO rvwVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - rvwVO.setReqUrl("crm"); - rvwVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire", rvwVO), - model, - "resultMap" - ); - model.addAttribute("pageUnit",rvwVO.getPageUnit()); + public String selectGoodsRvwInqire(ModelMap model, BOGnrlbbscttVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + bbsctt.setReqUrl("crm"); + bbsctt.setSopmalCd(authSopmalCd); + 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()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire", rvwVO), +// model, +// "resultMap" +// ); + model.addAttribute("pageUnit",bbsctt.getPageUnit()); return "crm/bbs/GoodsRvwListR"; } @@ -68,16 +115,78 @@ public class CrmBbsController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectGoodsInqryInqireForm") - public String selectGoodsInqryInqireForm(CrmCnsltVO vo , GnrlscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectGoodsInqryInqireForm(CrmCnsltVO vo , BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { bbsctt.setReqUrl("crm"); bbsctt.setBbsId("goods_qna"); bbsctt.setBbsTyCd("05"); bbsctt.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt), - model, - "resultMap" - ); + + Map content = new HashMap(); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + bbsctt.setMbrDvCd(user.getMbrDvCd()); + bbsctt.setMbrInnb(user.getUserInnb()); + } + if ("mpage".equals(bbsctt.getReqUrl()) || "crm".equals(bbsctt.getReqUrl())) { + if (user.getUserInnb() > 0) { + bbsctt.setRegusr(user.getUserInnb()); + bbsctt.setRegusrDvCd("01"); + } else { + bbsctt.setRegusr(0); + bbsctt.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 evtBbsList = new ArrayList<>(); + if ("sopmal".equals(bbsctt.getServerDv())) { + if ("03".equals((String) bbsInfo.get("bbsTyCd")) || "11".equals((String) bbsInfo.get("bbsTyCd"))) { + evtBbsList = bbsService.selectBOEvtBbsList(bbsVO); + content.put("evtBbsList", evtBbsList); + } + } + // 분류 조회 + List itmList = new ArrayList<>(); + itmList = service.selectBOBbscttItmInqire(bbsctt); + + // 게시판 목록 조회 및 게시글 개수 조회(관리자 페이지) + List bbsListCnt = new ArrayList<>(); + if (!"01".equals(user.getSysDvCd())) { + bbsListCnt = bbsService.selectBOBbsttListInqire(bbsVO); + content.put("bbsListCnt", bbsListCnt); + } + Map qesitmList = new HashMap(); + Map rvwQesitmList = new HashMap(); + //리뷰 목록 조회일 시 service 호출 + if ("rvw".equals(bbsctt.getRvwBbscttDv())) { + //추가항목 리스트, 추가항목 항목 리스트(리뷰) + qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt); + //리뷰항목 리스트, 리뷰항목 항목 리스트 + rvwQesitmList = service.selectBOStarItm(bbsctt); + } + content.put("bbsInfo", bbsInfo); + content.put("itmList", itmList); + if ("rvw".equals(bbsctt.getRvwBbscttDv())) { + content.put("qesitmList", qesitmList); + content.put("rvwQesitmList", rvwQesitmList); + } + content.put("bbsctt", bbsctt); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt), +// model, +// "resultMap" +// ); /*left 값 세팅*/ model.addAttribute("cnsltVO",vo); return "crm/bbs/GoodsInqryListRForm"; @@ -90,14 +199,75 @@ public class CrmBbsController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectGoodsInqryInqire") - public String selectGoodsInqryInqire(GnrlscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectGoodsInqryInqire(BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ bbsctt.setReqUrl("crm"); bbsctt.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt), - model, - "resultMap" - ); + Map content = new HashMap(); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + bbsctt.setMbrDvCd(user.getMbrDvCd()); + bbsctt.setMbrInnb(user.getUserInnb()); + } + if ("mpage".equals(bbsctt.getReqUrl()) || "crm".equals(bbsctt.getReqUrl())) { + if (user.getUserInnb() > 0) { + bbsctt.setRegusr(user.getUserInnb()); + bbsctt.setRegusrDvCd("01"); + } else { + bbsctt.setRegusr(0); + bbsctt.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 evtBbsList = new ArrayList<>(); + if ("sopmal".equals(bbsctt.getServerDv())) { + if ("03".equals((String) bbsInfo.get("bbsTyCd")) || "11".equals((String) bbsInfo.get("bbsTyCd"))) { + evtBbsList = bbsService.selectBOEvtBbsList(bbsVO); + content.put("evtBbsList", evtBbsList); + } + } + // 분류 조회 + List itmList = new ArrayList<>(); + itmList = service.selectBOBbscttItmInqire(bbsctt); + + // 게시판 목록 조회 및 게시글 개수 조회(관리자 페이지) + List bbsListCnt = new ArrayList<>(); + if (!"01".equals(user.getSysDvCd())) { + bbsListCnt = bbsService.selectBOBbsttListInqire(bbsVO); + content.put("bbsListCnt", bbsListCnt); + } + Map qesitmList = new HashMap(); + Map rvwQesitmList = new HashMap(); + //리뷰 목록 조회일 시 service 호출 + if ("rvw".equals(bbsctt.getRvwBbscttDv())) { + //추가항목 리스트, 추가항목 항목 리스트(리뷰) + qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt); + //리뷰항목 리스트, 리뷰항목 항목 리스트 + rvwQesitmList = service.selectBOStarItm(bbsctt); + } + content.put("bbsInfo", bbsInfo); + content.put("itmList", itmList); + if ("rvw".equals(bbsctt.getRvwBbscttDv())) { + content.put("qesitmList", qesitmList); + content.put("rvwQesitmList", rvwQesitmList); + } + content.put("bbsctt", bbsctt); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt), +// model, +// "resultMap" +// ); model.addAttribute("pageUnit",bbsctt.getPageUnit()); return "crm/bbs/GoodsInqryListR"; diff --git a/src/main/java/com/wb/domainserver/domain/crm/cnslt/controller/CrmCnsltController.java b/src/main/java/com/wb/domainserver/domain/crm/cnslt/controller/CrmCnsltController.java index a81309ab..0bf66cc6 100644 --- a/src/main/java/com/wb/domainserver/domain/crm/cnslt/controller/CrmCnsltController.java +++ b/src/main/java/com/wb/domainserver/domain/crm/cnslt/controller/CrmCnsltController.java @@ -1,17 +1,30 @@ package com.wb.domainserver.domain.crm.cnslt.controller; 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.auth.controller.AuthController; import com.wb.domainserver.domain.crm.cnslt.vo.CrmCnsltVO; +import com.wb.domainserver.domain.gcone.bbs.cnslt.service.BOCnsltService; +import com.wb.domainserver.domain.gcone.bbs.cnslt.vo.BOCnsltVO; +import com.wb.domainserver.domain.gcone.common.service.BOCommonService; +import com.wb.domainserver.domain.gcone.mbr.mbr.service.BOMbrService; 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.*; +import com.wb.domainserver.util.dataaccess.DataMap; import com.wb.domainserver.util.string.StringUtil; 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; @@ -21,6 +34,7 @@ import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -57,8 +71,16 @@ public class CrmCnsltController { private GconeMessageSource gconeMessageSource; @Autowired - private AuthController authController; + private BOCnsltService service; + @Autowired + private BOMaComncdService bOMaComncdService; + + @Autowired + private PaginationProperties paginationProperties; + + @Autowired + private BOCommonService boCommonService; /** @@ -67,14 +89,25 @@ public class CrmCnsltController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectCnsltDtlsForm") - public String selectCnsltDtlsForm(CrmCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectCnsltDtlsForm(BOCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { cnsltVO.setSopmalCd(authSopmalCd); + Map content = new HashMap<>(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCstmrCnsltUnityBbscttListInqireForm", cnsltVO), - model, - "resultMap" - ); + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("COUNSEL_PROCS_STTUS"); // 상담처리상태 + List procsSttusCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + // 공통코드와 리스트를 넣어줌 + content.put("paramVO", cnsltVO); + content.put("procsSttusCdList", procsSttusCdList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCstmrCnsltUnityBbscttListInqireForm", cnsltVO), +// model, +// "resultMap" +// ); model.addAttribute("cnsltVO", cnsltVO); return "crm/cnslt/CnsltDtlsRForm"; @@ -87,15 +120,47 @@ public class CrmCnsltController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectCnsltDtlsInqire") - public String selectCnsltDtlsInqire(CrmCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectCnsltDtlsInqire(BOCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { cnsltVO.setSopmalCd(authSopmalCd); cnsltVO.setCrmAt("Y"); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + cnsltVO.setSopmalCd(user.getSopmalCd()); + } + Map content = new HashMap<>(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCstmrCnsltUnityBbscttListInqire", cnsltVO), - model, - "resultMap" - ); + // 페이징 객체 생성 & 페이징정보 할당 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(cnsltVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(cnsltVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + cnsltVO.setPaginationInfo(paginationInfo); + + cnsltVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + cnsltVO.setLastIndex(paginationInfo.getLastRecordIndex()); + cnsltVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("COUNSEL_PROCS_STTUS"); // 상담처리상태 + List procsSttusCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + cnsltVO.setSecretKey(boCommonService.selectSecretkey()); + List resultList = service.selectBOCstmrCnsltUnityBbscttListInqire(cnsltVO); + + // 맵에 페이징 정보와 리스트를 넣어줌 + content.put("paramVO", cnsltVO); + content.put("resultList", resultList); + content.put("paginationInfo", cnsltVO.getPaginationInfo()); + content.put("procsSttusCdList", procsSttusCdList); // 상담처리상태 + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCstmrCnsltUnityBbscttListInqire", cnsltVO), +// model, +// "resultMap" +// ); return "crm/cnslt/CnsltDtlsR"; } @@ -108,13 +173,39 @@ public class CrmCnsltController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectCnsltRegistPopupForm") - public String selectCnsltRegistPopupForm(CrmCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectCnsltRegistPopupForm(BOCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { cnsltVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCnsltRegistPopupForm", cnsltVO), - model, - "resultMap" - ); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + cnsltVO.setSopmalCd(user.getSopmalCd()); + } + cnsltVO.setRegusr(user.getUserInnb()); // 등록자 + cnsltVO.setUpdusr(user.getUserInnb()); // 수정자 + cnsltVO.setMbrNm(user.getMbrNm()); // 상담자명 + + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("COUNSEL_PROCS_STTUS"); // 상담처리상태 + List procsSttusCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("TELNB_DV"); // 인콜/아웃콜 + List telnbDvCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("LRGE_CL"); // 대분류 + List lrgeClCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("cnsltVO", cnsltVO); + content.put("procsSttusCdList", procsSttusCdList); + content.put("telnbDvCdList", telnbDvCdList); + content.put("lrgeClCdList", lrgeClCdList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCnsltRegistPopupForm", cnsltVO), +// model, +// "resultMap" +// ); model.addAttribute("cnsltVO", cnsltVO); @@ -127,13 +218,60 @@ public class CrmCnsltController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/selectCnsltRegistPopupFormCmmnCdArray") - public ResponseEntity selectCnsltRegistPopupFormCmmnCdArray(CrmCnsltVO cnsltVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/selectCnsltRegistPopupFormCmmnCdArray", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectCnsltRegistPopupFormCmmnCdArray(BOCnsltVO cnsltVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { cnsltVO.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCnsltRegistPopupFormCmmnCdArray", cnsltVO), - ReplyFromResrc::getReply + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + cnsltVO.setSopmalCd(user.getSopmalCd()); + } + cnsltVO.setRegusr(user.getUserInnb()); // 등록자 + cnsltVO.setUpdusr(user.getUserInnb()); // 수정자 + + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("LRGE_CL"); // 대분류 + List lrgeClCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("MIDDL_CL_1"); // 중분류1 + List middlClCdList1 = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("MIDDL_CL_2"); // 중분류2 + List middlClCdList2 = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("MIDDL_CL_3"); // 중분류3 + List middlClCdList3 = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("MIDDL_CL_4"); // 중분류4 + List middlClCdList4 = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("MIDDL_CL_5"); // 중분류5 + List middlClCdList5 = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("MIDDL_CL_6"); // 중분류6 + List middlClCdList6 = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("MIDDL_CL_7"); // 중분류7 + List middlClCdList7 = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("MIDDL_CL_8"); // 중분류8 + List middlClCdList8 = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("cnsltVO", cnsltVO); + content.put("lrgeClCdList", lrgeClCdList); + content.put("middlClCdList01", middlClCdList1); + content.put("middlClCdList02", middlClCdList2); + content.put("middlClCdList03", middlClCdList3); + content.put("middlClCdList04", middlClCdList4); + content.put("middlClCdList05", middlClCdList5); + content.put("middlClCdList06", middlClCdList6); + content.put("middlClCdList07", middlClCdList7); + content.put("middlClCdList08", middlClCdList8); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCnsltRegistPopupFormCmmnCdArray", cnsltVO), +// ReplyFromResrc::getReply +// ); } @@ -144,8 +282,8 @@ public class CrmCnsltController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/insertCnsltRegist") - public ResponseEntity insertCnsltRegist(@Validated CrmCnsltVO cnsltVO,BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/insertCnsltRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertCnsltRegist(@Validated BOCnsltVO cnsltVO,BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { List> errorList = new ArrayList<>(); if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); @@ -165,10 +303,32 @@ public class CrmCnsltController { if("".equals(cnsltVO.getGoodsInqryBbscttNb())){cnsltVO.setGoodsInqryBbscttNb(null);} if("".equals(cnsltVO.getGoodsRvwBbscttNb())){cnsltVO.setGoodsRvwBbscttNb(null);} cnsltVO.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/insertBOCnsltRegist", cnsltVO), - ReplyFromResrc::getReply + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + cnsltVO.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + cnsltVO.setRegusr(user.getUserInnb()); //등록자 + cnsltVO.setUpdusr(user.getUserInnb()); // 수정자 + cnsltVO.setMngrInnb(String.valueOf(user.getUserInnb()));//관리자고유번호 + + String secretKey = boCommonService.selectSecretkey(); + cnsltVO.setSecretKey(secretKey); + + // 상담 등록 로직 + Map message = new HashMap<>(); + message = service.insertBOCnsltRegist(cnsltVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/insertBOCnsltRegist", cnsltVO), +// ReplyFromResrc::getReply +// ); } @@ -178,13 +338,38 @@ public class CrmCnsltController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectCnsltDtlUpdtInqirePopup") - public String selectCnsltDtlUpdtInqirePopup(CrmCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectCnsltDtlUpdtInqirePopup(BOCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { cnsltVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCnsltDtlUpdtInqirePopup", cnsltVO), - model, - "resultMap" - ); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + cnsltVO.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + + Map content = new HashMap<>(); + + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("COUNSEL_PROCS_STTUS"); // 상담처리상태 + List procsSttusCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("TELNB_DV"); // 인콜/아웃콜 + List telnbDvCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + //시크릿키 set + cnsltVO.setSecretKey(boCommonService.selectSecretkey()); + DataMap result = new DataMap(); + result = service.selectBOCnsltDtlUpdtInqirePopup(cnsltVO); + + content.put("cnsltVO", result); + content.put("procsSttusCdList", procsSttusCdList); + content.put("telnbDvCdList", telnbDvCdList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCnsltDtlUpdtInqirePopup", cnsltVO), +// model, +// "resultMap" +// ); return "crm/cnslt/CnsltDtlUpdtPopupU"; } @@ -195,8 +380,8 @@ public class CrmCnsltController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateCnsltUpdt") - public ResponseEntity updateCstmrCnsltUpdt(@Validated CrmCnsltVO cnsltVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateCnsltUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCstmrCnsltUpdt(@Validated BOCnsltVO cnsltVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { log.debug("cnsltVO is {}", cnsltVO); // 정합성 검사 if(bindingResult.hasErrors()) { @@ -226,10 +411,25 @@ public class CrmCnsltController { if("".equals(cnsltVO.getGoodsRvwBbscttNb())){cnsltVO.setGoodsRvwBbscttNb(null);} cnsltVO.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/updateBOCnsltUpdt", cnsltVO), - ReplyFromResrc::getReply + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + cnsltVO.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + cnsltVO.setUpdusr(user.getUserInnb()); // 수정자 + + Map message = new HashMap<>(); + message = service.updateBOCnsltUpdt(cnsltVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/updateBOCnsltUpdt", cnsltVO), +// ReplyFromResrc::getReply +// ); } diff --git a/src/main/java/com/wb/domainserver/domain/crm/coupon/controller/CrmCouponController.java b/src/main/java/com/wb/domainserver/domain/crm/coupon/controller/CrmCouponController.java index 65a59b9e..155e4b32 100644 --- a/src/main/java/com/wb/domainserver/domain/crm/coupon/controller/CrmCouponController.java +++ b/src/main/java/com/wb/domainserver/domain/crm/coupon/controller/CrmCouponController.java @@ -1,19 +1,26 @@ package com.wb.domainserver.domain.crm.coupon.controller; 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.crm.cnslt.vo.CrmCnsltVO; -import com.wb.domainserver.domain.crm.coupon.vo.CrmCouponVO; +import com.wb.domainserver.domain.gcone.common.service.BOCommonService; +import com.wb.domainserver.domain.gcone.promtn.coupon.service.BOCouponService; +import com.wb.domainserver.domain.gcone.promtn.coupon.vo.BODwldCouponVO; 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.communicate.ValidateResultConverter; +import com.wb.domainserver.util.dataaccess.DataMap; 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; @@ -23,6 +30,10 @@ import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * * CRM 쿠폰 @@ -55,6 +66,14 @@ public class CrmCouponController { @Autowired private GconeMessageSource gconeMessageSource; + @Autowired + private BOCouponService service; + + @Autowired + private PaginationProperties paginationProperties; + + @Autowired + private BOCommonService commonService; /** * 쿠폰내역 목록 폼 이동 @@ -62,14 +81,33 @@ public class CrmCouponController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectHoldCouponDtlsForm") - public String selectHoldCouponDtlsForm(CrmCnsltVO vo, CrmCouponVO couponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - couponVO.setSopmalCd(authSopmalCd); + public String selectHoldCouponDtlsForm(CrmCnsltVO vo, BODwldCouponVO dwldCouponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + dwldCouponVO.setSopmalCd(authSopmalCd); + // 작성자 정보 할당 + 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()); // 수정자 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOHoldCouponDtlsForm", couponVO), - model, - "resultMap" - ); + + log.debug("couponPkSndngVO : {}", dwldCouponVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + + content = service.selectBOMyCouponListCnt(dwldCouponVO); + content.put("paramVO", dwldCouponVO); + + model.addAttribute("", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOHoldCouponDtlsForm", couponVO), +// model, +// "resultMap" +// ); model.addAttribute("cnsltVO",vo); return "crm/coupon/HoldCouponDtlsRForm"; } @@ -81,14 +119,49 @@ public class CrmCouponController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectHoldCouponDtlsInqire") - public String selectHoldCouponDtlsInqire(CrmCouponVO couponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - couponVO.setSopmalCd(authSopmalCd); + public String selectHoldCouponDtlsInqire(BODwldCouponVO dwldCouponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + dwldCouponVO.setSopmalCd(authSopmalCd); + // 작성자 정보 할당 + 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()); // 수정자 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponUsePosblDtlsInqire", couponVO), - model, - "resultMap" - ); + 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()); + + model.addAttribute("", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponUsePosblDtlsInqire", couponVO), +// model, +// "resultMap" +// ); return "crm/coupon/HoldCouponDtlsR"; } @@ -100,13 +173,24 @@ public class CrmCouponController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectHoldCouponDtlPopupForm") - public String selectHoldCouponDtlPopupForm(CrmCouponVO couponVO, ModelMap model) { + public String selectHoldCouponDtlPopupForm(BODwldCouponVO dwldCouponVO, ModelMap model) { + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponInfoInqirePopup", couponVO), - model, - "resultMap" - ); + 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("", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponInfoInqirePopup", couponVO), +// model, +// "resultMap" +// ); return "crm/coupon/HoldCouponDtlPopupR"; } @@ -117,18 +201,37 @@ public class CrmCouponController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateCouponPdUpdt", method = RequestMethod.POST) - public ResponseEntity updateCouponPdUpdt(@Validated CrmCouponVO couponVO, BindingResult bindingResult) { - log.debug("couponVO info inqire {}", couponVO); + @RequestMapping(value = "/updateCouponPdUpdt", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCouponPdUpdt(@Validated BODwldCouponVO dwldCouponVO, BindingResult bindingResult) { + log.debug("couponVO info inqire {}", dwldCouponVO); // 정합성 검사 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/updateBOCouponValidPdUpdt", couponVO), - ReplyFromResrc::getReply + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + dwldCouponVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드 + } + dwldCouponVO.setRegusr(user.getUserInnb()); // 등록자 + dwldCouponVO.setUpdusr(user.getUserInnb()); // 수정자 + + // + log.debug("vo 확인 : {}", dwldCouponVO); + + Map message = new HashMap<>(); + message = service.updateBOCouponValidPdUpdt(dwldCouponVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/updateBOCouponValidPdUpdt", couponVO), +// ReplyFromResrc::getReply +// ); } @@ -138,14 +241,48 @@ public class CrmCouponController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectDwldPosblCouponDtlsInqire") - public String selectDwldPosblCouponDtlsInqire(CrmCouponVO couponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - couponVO.setSopmalCd(authSopmalCd); + public String selectDwldPosblCouponDtlsInqire(BODwldCouponVO dwldCouponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + dwldCouponVO.setSopmalCd(authSopmalCd); + // 작성자 정보 할당 + 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()); // 수정자 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldCouponDtlsInqire", couponVO), - model, - "resultMapDwld" - ); + + 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()); + + model.addAttribute("", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldCouponDtlsInqire", couponVO), +// model, +// "resultMapDwld" +// ); return "crm/coupon/DwldPosblCouponDtlsR"; } @@ -156,14 +293,43 @@ public class CrmCouponController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/insertCrmDwldCouponAllRegist") - public ResponseEntity insertCrmDwldCouponAllRegist(CrmCouponVO couponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - couponVO.setSopmalCd(authSopmalCd); - log.debug("CRM 쿠폰 다운로드 : {}", couponVO); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBODwldCouponAllRegist", couponVO), - ReplyFromResrc::getReply + @RequestMapping(value = "/insertCrmDwldCouponAllRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertCrmDwldCouponAllRegist(BODwldCouponVO dwldCouponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + dwldCouponVO.setSopmalCd(authSopmalCd); + log.debug("CRM 쿠폰 다운로드 : {}", 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 ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBODwldCouponAllRegist", couponVO), +// ReplyFromResrc::getReply +// ); } diff --git a/src/main/java/com/wb/domainserver/domain/crm/dlvylc/controller/CrmDlvylcController.java b/src/main/java/com/wb/domainserver/domain/crm/dlvylc/controller/CrmDlvylcController.java index f110f516..3cb5e3ed 100644 --- a/src/main/java/com/wb/domainserver/domain/crm/dlvylc/controller/CrmDlvylcController.java +++ b/src/main/java/com/wb/domainserver/domain/crm/dlvylc/controller/CrmDlvylcController.java @@ -1,20 +1,27 @@ package com.wb.domainserver.domain.crm.dlvylc.controller; 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.crm.cnslt.vo.CrmCnsltVO; import com.wb.domainserver.domain.crm.dlvylc.vo.CrmDlvylcVO; +import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOCrmDlvylcVO; 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.communicate.ValidateResultConverter; +import com.wb.domainserver.util.dataaccess.DataMap; import com.wb.domainserver.util.string.StringUtil; 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 +31,10 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * CRM 배송지 관리 Controller * @@ -55,9 +66,16 @@ public class CrmDlvylcController { /** 공통 메시지 처리를 위한 메시지 객체 */ @Autowired private GconeMessageSource gconeMessageSource; + + @Autowired + private BOOrdrService service; + + @Autowired + private PaginationProperties paginationProperties; + /** * 배송지 관리 목록 조회 이동 - * @param crmDlvylcVO + * @param vo * @param model * @return MbrDlvylcListInqireR.jsp */ @@ -75,7 +93,32 @@ public class CrmDlvylcController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping("/selectRpuseDlvylcListInqire") - public String selectRpuseDlvylcListInqire(CrmDlvylcVO crmDlvylcVO,ModelMap model) { + public String selectRpuseDlvylcListInqire(BOCrmDlvylcVO crmDlvylcVO,ModelMap model) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + crmDlvylcVO.setMbrInnb(user.getUserInnb()); + crmDlvylcVO.setMbrDvCd(user.getMbrDvCd()); + } + + //페이징 정보 set + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(crmDlvylcVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(crmDlvylcVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + crmDlvylcVO.setPaginationInfo(paginationInfo); + crmDlvylcVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + crmDlvylcVO.setLastIndex(paginationInfo.getLastRecordIndex()); + crmDlvylcVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + /*목록 조회*/ + List resultList = service.selectBOMbrDlvylcListInqire(crmDlvylcVO); + + Map content = new HashMap<>(); + content.put("paramVO", crmDlvylcVO); + content.put("resultList", resultList); + content.put("paginationInfo", crmDlvylcVO.getPaginationInfo()); + log.debug("배송지 관리 : {}", crmDlvylcVO); String jspPath = ""; //popUp or page 호출인지에 따라 페이지유닛 및 경로 분기 @@ -85,12 +128,13 @@ public class CrmDlvylcController { } else { jspPath = "crm/dlvylc/RpuseDlvylcListInqireR"; } - //BO에서 API 호출(자주쓰는 배송지 조회) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrDlvylcListInqire", crmDlvylcVO), - model, - "resultMap" - ); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrDlvylcListInqire", crmDlvylcVO), +// model, +// "resultMap" +// ); //BO에서 API 호출(자주쓰는 배송지 조회) //기존 페이지 유지 model.addAttribute("pageIndex", crmDlvylcVO.getPageIndex()); @@ -109,37 +153,67 @@ public class CrmDlvylcController { /** * 최근 배송지 조회 - * @param CrmOrdrVO - * @param ModelMap + * @param vo + * @param model * @return RecentDlvylcListInqireR.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectRecentDlvylcListInqire") - public String selectRecentDlvylcListInqire(CrmDlvylcVO crmDlvylcVO, ModelMap model) { - //BO에서 API 호출(최근 배송지 조회) - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBORecentDlvylcListInqire", crmDlvylcVO), - model, - "resultMap" - ); - model.addAttribute("ordering",crmDlvylcVO.getOrdering()); + public String selectRecentDlvylcListInqire(BOCrmDlvylcVO vo, ModelMap model) { + //페이징 정보 set + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(vo.getPageIndex()); + paginationInfo.setRecordCountPerPage(vo.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + vo.setPaginationInfo(paginationInfo); + vo.setFirstIndex(paginationInfo.getFirstRecordIndex()); + vo.setLastIndex(paginationInfo.getLastRecordIndex()); + vo.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + List resultList = service.selectBORecentDlvylcListInqire(vo); + + Map content = new HashMap<>(); + content.put("paramVO", vo); + content.put("resultList", resultList); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBORecentDlvylcListInqire", crmDlvylcVO), +// model, +// "resultMap" +// ); + model.addAttribute("ordering",vo.getOrdering()); return "crm/dlvylc/RecentDlvylcListInqireR"; } /** * 배송지 수정 상세 조회 - * @param CrmOrdrVO + * @param crmDlvylcVO * @return String */ @Policy(AuthPolicy.RESTRICTED) @GetMapping(value="/selectDlvylcUpdtPopupForm") - public String selectDlvylcUpdtPopupForm(ModelMap model, CrmDlvylcVO crmDlvylcVO){ - //BO API 호출하여 상세 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcUpdtPopupForm", crmDlvylcVO), - model, - "dtlDlvylc" - ); + public String selectDlvylcUpdtPopupForm(ModelMap model, BOCrmDlvylcVO crmDlvylcVO){ + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + crmDlvylcVO.setMbrInnb(user.getUserInnb()); + crmDlvylcVO.setMbrDvCd(user.getMbrDvCd()); + } + //회원 자주쓰는 배송지 상세 조회 + BOCrmDlvylcVO resultVO = service.selectBODlvylcUpdtPopupForm(crmDlvylcVO); + + //상세 조회 정보 resultVO에 put + Map content = new HashMap<>(); + content.put("resultVO", resultVO); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcUpdtPopupForm", crmDlvylcVO), +// model, +// "dtlDlvylc" +// ); //모델 객체에 상세 조회 및 페이지 인덱스,회원고유번호 담음 model.addAttribute("pageIndex",crmDlvylcVO.getPageIndex()); model.addAttribute("mbrInnb",crmDlvylcVO.getMbrInnb()); @@ -152,9 +226,8 @@ public class CrmDlvylcController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @PostMapping(value="/updateDlvylcUpdt") - public ResponseEntity updateDlvylcUpdt(@Validated CrmDlvylcVO crmDlvylcVO, - BindingResult bindingResult){ + @PostMapping(value="/updateDlvylcUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateDlvylcUpdt(@Validated BOCrmDlvylcVO crmDlvylcVO, BindingResult bindingResult){ //입력값 정합성 점검결과 처리 if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); @@ -181,12 +254,32 @@ public class CrmDlvylcController { if (StringUtil.isEmpty(crmDlvylcVO.getDtlAdres())) { crmDlvylcVO.setDtlAdres("."); } + //수정자 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")) { + service.updateBODftDlvylcAt(crmDlvylcVO); + } - //BO API 호출 => 배송지 수정 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylcUpdt", crmDlvylcVO), - ReplyFromResrc::getReply + //자주쓰는 배송지 수정 + Map message = service.updateBODlvylc(crmDlvylcVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylcUpdt", crmDlvylcVO), +// ReplyFromResrc::getReply +// ); } /** * 배송지 등록 팝업 이동 @@ -201,14 +294,13 @@ public class CrmDlvylcController { /** * 배송지 등록 - * @param CrmOrdrVO + * @param crmDlvylcVO * @param bindingResult * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @PostMapping(value="/insertDlvylcRegist") - public ResponseEntity insertDlvylcRegist(@Validated CrmDlvylcVO crmDlvylcVO, - BindingResult bindingResult){ + @PostMapping(value="/insertDlvylcRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertDlvylcRegist(@Validated BOCrmDlvylcVO crmDlvylcVO, BindingResult bindingResult){ //입력값 정합성 점검결과 처리 if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); @@ -233,27 +325,61 @@ public class CrmDlvylcController { if(StringUtil.isEmpty(crmDlvylcVO.getDtlAdres())){ crmDlvylcVO.setDtlAdres("."); } + //등록자 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")) { + service.updateBODftDlvylcAt(crmDlvylcVO); + } + log.debug("insertBODlvylcRegist's CrmDlvylc : {}", crmDlvylcVO); + //service에서 등록 결과 메시지 담음 + Map message = service.insertBODlvylcRegist(crmDlvylcVO); - //BO API 호출 => 배송지 등록 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBODlvylcRegist", crmDlvylcVO), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBODlvylcRegist", crmDlvylcVO), +// ReplyFromResrc::getReply +// ); } /** * 배송지 삭제 - * @param CrmOrdrVO + * @param crmDlvylcVO * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @PostMapping(value="/deleteDlvylcDel") - public ResponseEntity deleteDlvylcDel(CrmDlvylcVO crmDlvylcVO){ + @PostMapping(value="/deleteDlvylcDel", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteDlvylcDel(BOCrmDlvylcVO crmDlvylcVO){ log.debug("deleteDlvylcDel's crmDlvylcVO {}", crmDlvylcVO); - //BO API 호출 => 배송지 삭제 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/deleteBODlvylcDel", crmDlvylcVO), - ReplyFromResrc::getReply + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + crmDlvylcVO.setMbrInnb(user.getUserInnb()); + crmDlvylcVO.setMbrDvCd(user.getMbrDvCd()); + } + //service에서 삭제 결과 갖고 옴 + Map message = service.deleteBODlvylc(crmDlvylcVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/deleteBODlvylcDel", crmDlvylcVO), +// ReplyFromResrc::getReply +// ); } } diff --git a/src/main/java/com/wb/domainserver/domain/crm/main/controller/CrmMainController.java b/src/main/java/com/wb/domainserver/domain/crm/main/controller/CrmMainController.java index b8a9088b..88f980c5 100644 --- a/src/main/java/com/wb/domainserver/domain/crm/main/controller/CrmMainController.java +++ b/src/main/java/com/wb/domainserver/domain/crm/main/controller/CrmMainController.java @@ -1,25 +1,39 @@ package com.wb.domainserver.domain.crm.main.controller; import com.wb.domainserver.common.msg.GconeMessageSource; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo; +import com.wb.domainserver.common.prop.PaginationProperties; +import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService; +import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService; +import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO; import com.wb.domainserver.domain.auth.controller.AuthController; import com.wb.domainserver.domain.auth.vo.AuthVO; import com.wb.domainserver.domain.crm.main.vo.CrmMainVO; import com.wb.domainserver.domain.crm.main.vo.CrmMbrSrchVO; -import com.wb.domainserver.domain.mngr.ordr.ordrmngr.vo.OrdrSrchVO; +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.BOMbrSrchVO; +import com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO; +import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BODwldItmVO; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO; +import com.wb.domainserver.domain.gcone.setup.nbkk.service.BONbkkService; 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.string.StringUtil; import jakarta.servlet.http.HttpServletRequest; 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.beans.factory.annotation.Value; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; @@ -27,6 +41,10 @@ import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * * CRM 메인 페이지 @@ -65,6 +83,31 @@ public class CrmMainController { // @Value("${spring.security.oauth2.resourceserver.jwt.issuer-uri}") String issuerUri; + + @Autowired + private BOMbrService service; + + @Autowired + private BOMaComncdService bOMaComncdService; + + @Autowired + private BOCommonService boCommonService; + + @Autowired + private PaginationProperties paginationProperties; + + @Autowired + private BOCommonService commonService; + + @Autowired + private BOOrdrService boOrdrService; + + @Autowired + private BONbkkService nbkkService; + + @Autowired + private BOMaSopmalService boMaSopmalService; + /** * CRM 메인 화면 이동 * @return @@ -87,6 +130,7 @@ public class CrmMainController { /** * CRM 로그아웃 * @return + * TODO. 로그아웃 처리 확인필요(cookie삭제로직, redirect url 등) */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/crm/logout") @@ -119,9 +163,7 @@ public class CrmMainController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/crm/main/selectCrmMbrSrchForm") - public String selectCrmMbrSrchForm(CrmMbrSrchVO mbrSrchVO, ModelMap model, HttpSession session, HttpServletRequest request, HttpServletResponse response, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - - + public String selectCrmMbrSrchForm(BOMbrSrchVO mbrSrchVO, ModelMap model, HttpSession session, HttpServletRequest request, HttpServletResponse response, @CookieValue(value = "authSopmalCd") String authSopmalCd) { // crm 전화받은게 아니면. if(StringUtil.isEmpty(mbrSrchVO.getSopmalCd())) { mbrSrchVO.setSopmalCd(authSopmalCd); @@ -132,13 +174,23 @@ public class CrmMainController { authController.selectMngrSopmalSite(authVO, request, response); } + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + mbrSrchVO.setSopmalCd(user.getSopmalCd()); + } + mbrSrchVO.setUpdusr(user.getUserInnb()); + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("paramVO", mbrSrchVO); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMbrSrchPopupForm", mbrSrchVO), - model, - "resultMap" - ); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMbrSrchPopupForm", mbrSrchVO), +// model, +// "resultMap" +// ); model.addAttribute("cnsltVO", mbrSrchVO); return "crm/main/CrmMbrSrchPopupRForm"; @@ -150,18 +202,56 @@ public class CrmMainController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/crm/main/selectCrmMbrSrch") - public String selectCrmMbrSrch(CrmMbrSrchVO mbrSrchVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - + public String selectCrmMbrSrch(CrmMbrSrchVO srchVO, BOMbrSrchVO mbrSrchVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + srchVO.setSopmalCd(authSopmalCd); mbrSrchVO.setSopmalCd(authSopmalCd); + // 페이징 객체 생성 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(mbrSrchVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(5); // CMR 회원 검색 팝업 5개씩 고정 + paginationInfo.setPageSize(paginationProperties.getPageSize()); + // 페이징정보 할당 + mbrSrchVO.setPaginationInfo(paginationInfo); + mbrSrchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + mbrSrchVO.setLastIndex(paginationInfo.getLastRecordIndex()); + mbrSrchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + mbrSrchVO.setSopmalCd(user.getSopmalCd()); + } + mbrSrchVO.setUpdusr(user.getUserInnb()); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMbrSrch", mbrSrchVO), - model, - "resultMap" - ); - model.addAttribute("cnsltVO", mbrSrchVO); + // 목록 조회 + + List resultList = null; + String secretKey = commonService.selectSecretkey(); + mbrSrchVO.setSecretKey(secretKey); + resultList = service.selectBOCrmMbrSrch(mbrSrchVO); + + Integer listSize = null; + if (resultList != null && resultList.size() > 0) { + listSize = resultList.size(); + } else { + listSize = 0; + } + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("paramVO", mbrSrchVO); + content.put("resultList", resultList); + content.put("listSize", listSize); + content.put("paginationInfo", mbrSrchVO.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMbrSrch", mbrSrchVO), +// model, +// "resultMap" +// ); + model.addAttribute("cnsltVO", srchVO); return "crm/main/CrmMbrSrchPopupR"; } @@ -172,14 +262,96 @@ public class CrmMainController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/crm/main/selectCrmOrdrSrchPopupForm") - public String selectCrmOrdrSrchPopupForm(ModelMap model ,OrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectCrmOrdrSrchPopupForm(ModelMap model ,BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { ordrSrchVO.setSopmalCd(authSopmalCd); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrSrchVO.setSopmalCd(user.getSopmalCd()); + } + ordrSrchVO.setUpdusr(user.getUserInnb()); // 수정자 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOAllOrdrListInqire", ordrSrchVO), - model, - "cond" - ); + Map content = new HashMap<>(); + + content.put("sopmalCd", ordrSrchVO.getSopmalCd()); + + List storeList = boOrdrService.selectBOStoreList(ordrSrchVO); + + content.put("storeList", storeList); // 매장 + + BODwldItmVO dwldItmVO = new BODwldItmVO(); + dwldItmVO.setSopmalCd(ordrSrchVO.getSopmalCd()); + + List dwldItmSetupFormList = boOrdrService.selectDwldItmSetupFormList(dwldItmVO); + + content.put("dwldItmSetupFormList", dwldItmSetupFormList); // 엑셀다운로드 양식 폼 목록 + + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("ORDR_STTUS"); + + List ordrSttusCdList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("ordrSttusCdList", ordrSttusCdList); // 주문상태 + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("SLE_ENVRN"); // 주문환경 + + List ordrEnvrnDvCdList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("ordrEnvrnDvCdList", ordrEnvrnDvCdList); + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("DLVY_MTH"); // 배송방법 + + List dlvyMthCdList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("dlvyMthCdList", dlvyMthCdList); + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("ORDR_TY"); // 주문유형 + + List ordrTyCdList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("ordrTyCdList", ordrTyCdList); + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("RESVE_SNDNG_DV"); // 희망배송일, 상품예약발송일 + + List resveSndngDvCdList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("resveSndngDvCdList", resveSndngDvCdList); + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("SETLE_MTH"); // 모든 결제수단 + + List setleMthList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("setleMthList", setleMthList); + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("PG_CMPNY"); // 모든결제사 + + List setlePgCmpnyList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("setlePgCmpnyList", setlePgCmpnyList); + + // 무통장자동입금 사용 여부 + String acntUseAt = nbkkService.selectBOAcntUseAtInqire(ordrSrchVO); + content.put("acntUseAt", acntUseAt); + + // 네이버페이 사용 여부 + String npayUseAt = boMaSopmalService.selectBONpayUseAtByShop(ordrSrchVO.getSopmalCd()); + content.put("npayUseAt", npayUseAt); + + // Map객체에 필요 정보 할당 + content.put("paramVO", ordrSrchVO); + + model.addAttribute("cond", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOAllOrdrListInqire", ordrSrchVO), +// model, +// "cond" +// ); model.addAttribute("paramVO", ordrSrchVO); return "crm/main/CrmOrdrSrchPopupRForm"; @@ -191,13 +363,40 @@ public class CrmMainController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/crm/main/selectCrmOrdrSrch", method = RequestMethod.POST) - public String selectCrmOrdrSrch (ModelMap model , OrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectCrmOrdrSrch (ModelMap model , BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { ordrSrchVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectAllOrdrListInqireAjax", ordrSrchVO), - model, - "resultMap" - ); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrSrchVO.setSopmalCd(user.getSopmalCd()); + } + + 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()); + + /*시크릿 키 set*/ + ordrSrchVO.setSecretKey(commonService.selectSecretkey()); + List allOrdrList = boOrdrService.selectAllOrdrListInqireAjax(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/selectAllOrdrListInqireAjax", ordrSrchVO), +// model, +// "resultMap" +// ); return "crm/main/CrmOrdrSrchPopupR"; } @@ -209,8 +408,6 @@ public class CrmMainController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/crm/main/callCenterCnncButton") public String callCenterCnncButton () { - - return "crm/main/ctiUnion"; } @@ -219,15 +416,30 @@ public class CrmMainController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/crm/main/selectCrmMbrInfo") - public ResponseEntity selectCrmMbrInfo (CrmMainVO mainVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - mainVO.setSopmalCd(authSopmalCd); + @RequestMapping(value = "/crm/main/selectCrmMbrInfo", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectCrmMbrInfo (BOMbrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); - /*검색어에 해당하는 회원 조회*/ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMenuMbrInfoInqire", mainVO), - ReplyFromResrc::getReply + //쇼핑몰코드 set + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + String secretKey = boCommonService.selectSecretkey(); + vo.setSecretKey(secretKey); + + Map mbr = service.selectBOCrmMenuMbrInfoInqire(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(mbr)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMenuMbrInfoInqire", mainVO), +// ReplyFromResrc::getReply +// ); } /** @@ -235,15 +447,26 @@ public class CrmMainController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/crm/main/selectCrmNmbrInfo") - public ResponseEntity selectCrmNmbrInfo (CrmMainVO mainVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - mainVO.setSopmalCd(authSopmalCd); + @RequestMapping(value = "/crm/main/selectCrmNmbrInfo", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectCrmNmbrInfo (BOMbrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + //쇼핑몰코드 set + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - /*검색어에 해당하는 회원 조회*/ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMenuNmbrInfoInqire", mainVO), - ReplyFromResrc::getReply + String secretKey = boCommonService.selectSecretkey(); + vo.setSecretKey(secretKey); + Map mbr = new HashMap<>(); + mbr = service.selectBOCrmMenuNmbrInfoInqire(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(mbr)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMenuNmbrInfoInqire", mainVO), +// ReplyFromResrc::getReply +// ); } /** @@ -251,14 +474,23 @@ public class CrmMainController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/crm/main/selectSopmalNm") - public ResponseEntity selectSopmalNm(CrmMainVO mainVO) { + @RequestMapping(value = "/crm/main/selectSopmalNm", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSopmalNm(DataMap vo) { + DataMap result = service.selectBOSopmalNm(vo); + // 응답 메세지 객체 + Map content = new HashMap<>(); + content.put("resultMap", result); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOSopmalNm", mainVO), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOSopmalNm", mainVO), +// ReplyFromResrc::getReply +// ); } diff --git a/src/main/java/com/wb/domainserver/domain/crm/mbr/controller/CrmMbrController.java b/src/main/java/com/wb/domainserver/domain/crm/mbr/controller/CrmMbrController.java index ee815fe2..30ffe1fe 100644 --- a/src/main/java/com/wb/domainserver/domain/crm/mbr/controller/CrmMbrController.java +++ b/src/main/java/com/wb/domainserver/domain/crm/mbr/controller/CrmMbrController.java @@ -1,32 +1,54 @@ package com.wb.domainserver.domain.crm.mbr.controller; import com.wb.domainserver.common.msg.GconeMessageSource; +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.service.BOMaComncdService; +import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO; +import com.wb.domainserver.domain.admin.user.mngr.service.BOJobUserService; +import com.wb.domainserver.domain.admin.user.mngr.vo.BOJobUserVO; import com.wb.domainserver.domain.crm.cnslt.vo.CrmCnsltVO; import com.wb.domainserver.domain.crm.mbr.vo.CrmMbrVO; +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.BOMbrAppnVO; +import com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO; +import com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOWithdrawalVO; +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.ordrmngr.service.BOOrdrMngrService; +import com.wb.domainserver.domain.gcone.setup.ordrmngr.vo.BOSetupOrdrVO; 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.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.CookieValue; 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; import java.util.Map; import java.util.regex.Matcher; @@ -47,22 +69,63 @@ public class CrmMbrController { @Autowired private GconeMessageSource gconeMessageSource; + + @Autowired + private BOMbrService service; + + @Autowired + private BOGradbnefService mbrGradService; + + @Autowired + private BOMaComncdService bOMaComncdService; + + @Autowired + private BOMaSopmalService maSopmalService; + + @Autowired + private BOCommonService boCommonService; + + @Autowired + private BOCommonService commonService; + + @Autowired + private BOOrdrMngrService boOrdrMngrService; + + @Autowired + private BOJobUserService boJobUserService; + /** * 로그/메모 폼 이동 * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectLogMemoInqire") - public String selectLogMemoInqire(CrmCnsltVO vo , CrmMbrVO mbrVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setPageDv("crm"); - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrInfoLogCrm", mbrVO), - model, - "resultMap" - ); + public String selectLogMemoInqire(CrmCnsltVO crmCnsltVO , BOMbrVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setPageDv("crm"); + vo.setSopmalCd(authSopmalCd); - model.addAttribute("cnsltVO",vo); + //시크릿키 set + String secretKey = ""; + secretKey = commonService.selectSecretkey(); + vo.setSecretKey(secretKey); + + //회원정보 수정 조회 + DataMap result = new DataMap(); + result = service.selectBOMbrInfoUpdtInqire(vo); + + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("result", result); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrInfoLogCrm", mbrVO), +// model, +// "resultMap" +// ); + + model.addAttribute("cnsltVO",crmCnsltVO); return "crm/mbr/LogMemoR"; } @@ -71,13 +134,26 @@ public class CrmMbrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateMemoUpdt") - public ResponseEntity updateMemoUpdt(@Validated CrmMbrVO mbrVO,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrMemoUpdt", mbrVO), - ReplyFromResrc::getReply + @RequestMapping(value = "/updateMemoUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateMemoUpdt(@Validated BOMbrVO vo,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setUpdusr(user.getUserInnb()); + + // service 호출 + Map message = new HashMap<>(); + message = service.updateBOMbrMemoUpdt(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrMemoUpdt", mbrVO), +// ReplyFromResrc::getReply +// ); } /** @@ -87,14 +163,74 @@ public class CrmMbrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrInfoUpdtInqire") - public String selectMbrInfoUpdtInqire(CrmCnsltVO vo,CrmMbrVO mbrVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrInfoUpdtInqireCrm", mbrVO), - model, - "resultMap" - ); - model.addAttribute("cnsltVO",vo); + public String selectMbrInfoUpdtInqire(CrmCnsltVO crmCnsltVO,BOMbrVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + //시크릿키 set + String secretKey = ""; + secretKey = commonService.selectSecretkey(); + vo.setSecretKey(secretKey); + + //회원정보 수정 조회 + DataMap result = new DataMap(); + result = service.selectBOMbrInfoUpdtInqire(vo); + + //pos 가입 매장 조회 + DataMap pos = new DataMap(); + pos = service.selectBOJoinStrInqire(vo); + + //외부연동 조회 + List extrlMember = new ArrayList<>(); + extrlMember = service.selectBOMbrExtrlMbrInfoInqire(vo); + + //회원등급 조회 + BOGradbnefVO paramVO = new BOGradbnefVO(); + paramVO.setSopmalCd(vo.getSopmalCd()); + List gradList = null; + gradList = mbrGradService.selectBOMbrGradListInqireWithoutPaging(paramVO); + + //성별 + BOMaComncdVO cdVO = new BOMaComncdVO(); + List sex = new ArrayList<>(); + cdVO.setGroupCd("SEX"); + sex = service.selectCommCode(cdVO); + + //리셀러 구분 + List rslr = new ArrayList<>(); + cdVO.setGroupCd("RSLR_APPN_DV"); + rslr = service.selectCommCode(cdVO); + + //쇼핑몰 타입별 쇼핑몰 목록 + BOMaSopmalVO sopmalVo = new BOMaSopmalVO(); + sopmalVo.setSopmalCd(vo.getSopmalCd()); + List sopmalList = new ArrayList<>(); + sopmalList = maSopmalService.selectSopmalGroupList(sopmalVo); + + //해당 회원 브랜드 별 마케팅 동의 여부 + List agreeAtList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(sopmalList)){ + vo.setSopmalList(sopmalList); + agreeAtList = service.selectBOMarkRecptnAgreList(vo); + } + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("result", result); + content.put("extrlMember", extrlMember); + content.put("pos", pos); + content.put("paramVO", vo); + content.put("gradList", gradList); + content.put("sex", sex); + content.put("rslr", rslr); + content.put("sopmalList", sopmalList); + content.put("agreeAtList", agreeAtList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrInfoUpdtInqireCrm", mbrVO), +// model, +// "resultMap" +// ); + model.addAttribute("cnsltVO",crmCnsltVO); return "crm/mbr/MbrInfoUpdtU"; } @@ -104,8 +240,8 @@ public class CrmMbrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateMbrInfoUpdt", method = RequestMethod.POST) - public ResponseEntity updateMbrInfoUpdt(@Validated CrmMbrVO mbrVO, HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd, BindingResult bindingResult) { + @RequestMapping(value = "/updateMbrInfoUpdt", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateMbrInfoUpdt(@Validated BOMbrVO mbrVO, HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd, BindingResult bindingResult) { // 정합성 검사 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); @@ -138,13 +274,22 @@ public class CrmMbrController { } //쇼핑몰 코드 set mbrVO.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); //아이디 중복 체크 if("Y".equals(mbrVO.getMbrIdChngAt())){ //아이디 중복 체크 - Map idResult = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOIdDplctCnfirm", mbrVO) - ); + if("01".equals(user.getSysDvCd())){ + mbrVO.setSopmalCd(user.getSopmalCd()); + } + mbrVO.setMbrDvCd(service.selectBOMbrDvCd(mbrVO)); + + DataMap idResult = new DataMap(); + idResult = service.selectBOIdDplctCnfirm(mbrVO); + +// Map idResult = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOIdDplctCnfirm", mbrVO) +// ); String possibleAt = (String) idResult.get("message"); if("impossible".equals(possibleAt)){ throw new WnbtRestException("중복된 아이디입니다."); @@ -153,10 +298,16 @@ public class CrmMbrController { //비밀번호 체크 if("Y".equals(mbrVO.getMbrPwdChngAt())){ /*1 비밀번호 변경 시 관리자 비밀번호 확인*/ - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/admin/user/mngr/selectBOJobUserPasswordInqire", mbrVO) - ); - int result = (int) resultMap.get("result"); + BOJobUserVO vo = new BOJobUserVO(); + vo.setPassword(mbrVO.getPassword()); + vo.setMngrDv(user.getMbrDvCd()); + vo.setMngrInnb(new BigInteger(String.valueOf(user.getUserInnb()))); + + int result = boJobUserService.selectBOJobUserPasswordInqire(vo); + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/admin/user/mngr/selectBOJobUserPasswordInqire", mbrVO) +// ); if (result == 0) { throw new WnbtRestException("관리자 비밀번호가 일치하지 않습니다"); }else{ @@ -179,10 +330,96 @@ public class CrmMbrController { String ip = (String) Util.getRequestInfo(request).get("XForwardedFor"); mbrVO.setRegistIp(ip); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrInfoUpdtCrm", mbrVO), - ReplyFromResrc::getReply + mbrVO.setUpdusr(user.getUserInnb()); + mbrVO.setMngrId(user.getMbrId()); + + String secretKey = ""; + secretKey = commonService.selectSecretkey(); + mbrVO.setSecretKey(secretKey); + + Map message = new HashMap<>(); + //비밀번호 수정 + if ("Y".equals(mbrVO.getMbrPwdChngAt())) { + BOCommonVO commVO = new BOCommonVO(); + commVO.setPass(mbrVO.getMbrPassword()); // 변경할 비밀번호 + commVO.setEncptKeyDvCd("01"); // 회원 + commVO.setIdntfcInnb(mbrVO.getMbrInnb()); // 회원고유번호 + + //변경할 비밀번호 암호화 + String newPwd = commonService.generateKey(commVO); + mbrVO.setNewPassword(newPwd); + } + + // CRM > 회원 정보 수정 + if ("01".equals(mbrVO.getAdresDv())) { + mbrVO.setRnmAdres(mbrVO.getAdres()); + } else { + mbrVO.setLnbAdres(mbrVO.getAdres()); + } + message = service.updateBOMbrInfoUpdtCrm(mbrVO); + + //리셀러 등록 or 수정 + String beforeAppnDvCd = StringUtil.isEmpty(mbrVO.getBeforeAppnDvCd()) ? "01" : mbrVO.getBeforeAppnDvCd(); + if (!beforeAppnDvCd.equals(mbrVO.getAppnDvCd())) { + BOMbrAppnVO appnVO = new BOMbrAppnVO(); + appnVO.setAppnDvCd(mbrVO.getAppnDvCd()); + appnVO.setOriginDvCd("02"); + appnVO.setAppnMemo(mbrVO.getAppnMemo()); + appnVO.setIdntfcStdrCd("mbr_innb"); + List mbrDvCdArr = new ArrayList<>(); + mbrDvCdArr.add(mbrVO.getMbrDvCd()); + appnVO.setMbrDvCdArr(mbrDvCdArr); + List mbrInnbArr = new ArrayList<>(); + mbrInnbArr.add(mbrVO.getMbrInnb()); + appnVO.setIdntfcInfoArr(mbrInnbArr); + appnVO.setAppnInnbArr(mbrVO.getAppnInnbArr()); + appnVO.setSopmalCd(mbrVO.getSopmalCd()); + appnVO.setUpdusr(user.getUserInnb()); + appnVO.setRegusr(user.getUserInnb()); + appnVO.setSecretKey(mbrVO.getSecretKey()); + service.updateBOMbrRslr(appnVO); + } + + // 회원 등급 수정 + if (!mbrVO.getBeforeMbrGradInnb().equals(mbrVO.getMbrGradInnb())) { + Integer gradUpdtResult = mbrGradService.updateBOMbrGradMapingUpdt(mbrVO); + //회원 등급 메모 수정 등급명 set + if (gradUpdtResult > 0) { + //회원등급 명 조회 + DataMap gradNm = new DataMap(); + gradNm = mbrGradService.selectMbrChngGradNm(mbrVO); + String beforeGradNm = (String) gradNm.get("beforeGradNm"); + String afterGradNm = (String) gradNm.get("afterGradNm"); + mbrVO.setBeforeGradNm(beforeGradNm); + mbrVO.setAfterGradNm(afterGradNm); + mbrVO.setMngrNm(user.getMbrNm()); + + //관리자 로그 문장 만듦 + DataMap mngrLog = new DataMap(); + DataMap data = new DataMap(); + data.put("id", user.getMbrId()); + data.put("registIp", mbrVO.getRegistIp()); + data.put("before", mbrVO.getBeforeGradNm()); + data.put("after", mbrVO.getAfterGradNm()); + data.put("actionDv", "mbrGrad"); + + mngrLog = service.makeMngrLog(data); + + mbrVO.setMngrLogStrt(StringUtil.isNullToString(mngrLog.get("mngrLogStrt"))); + mbrVO.setMngrLogEnd(StringUtil.isNullToString(mngrLog.get("mngrLogEnd"))); + service.updateBOMbrGradMemoUpdt(mbrVO); + } + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrInfoUpdtCrm", mbrVO), +// ReplyFromResrc::getReply +// ); } @@ -202,18 +439,54 @@ public class CrmMbrController { /** * 회원 CRM 팝업 폼 ( 아이디 클릭시 바로 옆에 띄워지는 고객 CRM 팝업 화면 ) * - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrCrmInfoPopupForm") - public String selectMbrCrmInfoPopupForm(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrCrmInfoPopupInqire", mbrVO), - model, - "resultMap" - ); + public String selectMbrCrmInfoPopupForm(BOMbrVO vo, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + }else if ("04".equals(user.getSysDvCd())){//인트라넷이면 대표브랜드로 검색 + vo.setSopmalCd(user.getReprsntBrand()); + } + + String secretKey = commonService.selectSecretkey(); + vo.setSecretKey(secretKey); + // 회원 활동 정보 조회 ( 마일리지, 쿠폰, 누적 결재 금액, 누적 주문 건수, 최근 로그인 ip, 최근 수정일시 ) + DataMap result = new DataMap(); + result = service.selectBOMbrActInfoInqire(vo); + + + // sns 연동 조회 + List sns = new ArrayList<>(); + sns = service.selectBOMbrExtrlMbrInfoInqire(vo); + + // 고객 주문관련, 게시글관련 데이터 조회 + Map orderData = new HashMap<>(); + orderData = service.selectBOMbrDataOrderInqireCrmPopup(vo); + + // Shop 정보 조회 + BOSetupOrdrVO boOrdrVO = new BOSetupOrdrVO(); + boOrdrVO.setSopmalCd(vo.getSopmalCd()); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("shopInfo", boOrdrMngrService.selectBOOrdrSetupList(boOrdrVO)); + content.put("result", result); + content.put("sns", sns); + content.put("acttData", orderData); + content.put("paramVO", vo); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrCrmInfoPopupInqire", mbrVO), +// model, +// "resultMap" +// ); return "crm/mbr/MbrCrmInfoPopupR"; } @@ -221,38 +494,82 @@ public class CrmMbrController { /** * 비회원 CRM 팝업 폼 ( 아이디 클릭시 바로 옆에 띄워지는 고객 CRM 팝업 화면 ) * - * @param mbrVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectNmbrCrmInfoPopupForm") - public String selectNmbrCrmInfoPopupForm(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMenuNmbrInfoInqire", mbrVO), - model, - "resultMap" - ); - model.addAttribute("vo",mbrVO); + public String selectNmbrCrmInfoPopupForm(BOMbrVO vo, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + //쇼핑몰코드 set + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + String secretKey = boCommonService.selectSecretkey(); + vo.setSecretKey(secretKey); + Map mbr = new HashMap<>(); + mbr = service.selectBOCrmMenuNmbrInfoInqire(vo); + + model.addAttribute("resultMap", mbr); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMenuNmbrInfoInqire", mbrVO), +// model, +// "resultMap" +// ); + model.addAttribute("vo",vo); return "crm/mbr/NmbrCrmInfoPopupR"; } /** * CRM 회원 정보 조회 이동 * - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectCstmrInfoInqire") - public String selectCstmrInfoInqire(CrmCnsltVO vo,CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCstmrInfoInqire", mbrVO), - model, - "resultMap" - ); - model.addAttribute("cnsltVO",vo); + public String selectCstmrInfoInqire(CrmCnsltVO crmCnsltVO,BOMbrVO vo, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + String secretKey = commonService.selectSecretkey(); + vo.setSecretKey(secretKey); + + // 회원 정보 조회 + DataMap result = new DataMap(); + result = service.selectBOMbrInfoUpdtInqire(vo); + + + // 고객 주문관련, 게시글관련 데이터 조회 + Map orderData = new HashMap<>(); + orderData = service.selectBOMbrDataOrderInqire(vo); + + + //공통코드 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("SEX"); + List sex = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + bOMaComncdVO.setGroupCd("JOIN_ENVRN"); + List joinEnvrn = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("result", result); + content.put("acttData", orderData); + content.put("paramVO", vo); + content.put("sex", sex); + content.put("joinEnvrn", joinEnvrn); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCstmrInfoInqire", mbrVO), +// model, +// "resultMap" +// ); + model.addAttribute("cnsltVO",crmCnsltVO); return "crm/mbr/CstmrInfoInqireR"; } @@ -260,20 +577,29 @@ public class CrmMbrController { /** * CRM 회원 정보 조회 > 관리매장 변경 팝업 * - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectManageStrChngPopupForm") - public String selectManageStrChngPopupForm(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOManageStrChngPopupForm", mbrVO), - model, - "resultMap" - ); + public String selectManageStrChngPopupForm(BOMbrVO vo, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + //인트라넷 => 해당 로그인 대표브랜드 set + // crm => session에 있는 브랜드 fo에서 넘어옴 + if("04".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getReprsntBrand()); + } + Map contents = new HashMap<>(); + contents = service.selectBOManageStrChngPopupForm(vo); + model.addAttribute("resultMap", contents); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOManageStrChngPopupForm", mbrVO), +// model, +// "resultMap" +// ); return "crm/mbr/ManageStrChngPopupU"; } @@ -281,39 +607,76 @@ public class CrmMbrController { /** * 탈퇴사유조회 * - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/selectSecsnResn") - public ResponseEntity selectSecsnResn(HttpServletRequest request, CrmMbrVO mbrVO,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrwithdrawal", mbrVO), - ReplyFromResrc::getReply + @RequestMapping(value = "/selectSecsnResn", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSecsnResn(HttpServletRequest request, BOWithdrawalVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + DataMap result = service.selectBOMbrwithdrawal(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(result)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrwithdrawal", mbrVO), +// ReplyFromResrc::getReply +// ); } /** * CRM 회원 정보 조회 > 관리매장 수정 * - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateManageStrUpdt") - public ResponseEntity updateManageStrUpdt(HttpServletRequest request, CrmMbrVO mbrVO,@CookieValue(value = "authSopmalCd") String authSopmalCd) { //등록 ip 설정 + @RequestMapping(value = "/updateManageStrUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateManageStrUpdt(HttpServletRequest request, BOMbrVO vo,@CookieValue(value = "authSopmalCd") String authSopmalCd) { //등록 ip 설정 String ip = (String) Util.getRequestInfo(request).get("XForwardedFor"); - mbrVO.setRegistIp(ip); - mbrVO.setSopmalCd(authSopmalCd); + vo.setRegistIp(ip); + vo.setSopmalCd(authSopmalCd); //관리매장 없을시 set - if(StringUtil.isEmpty(mbrVO.getBeforeStrNm())){ - mbrVO.setBeforeStrNm("관리매장 없음"); + if(StringUtil.isEmpty(vo.getBeforeStrNm())){ + vo.setBeforeStrNm("관리매장 없음"); + } + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOManageStrUpdt", mbrVO), - ReplyFromResrc::getReply + vo.setUpdusr(user.getUserInnb()); + + //관리자 로그 문장 만듦 + DataMap mngrLog = new DataMap(); + DataMap data = new DataMap(); + data.put("id", user.getMbrId()); + data.put("registIp", vo.getRegistIp()); + data.put("before", vo.getBeforeStrNm()); + data.put("after", vo.getStrNm()); + data.put("actionDv", "store"); + + mngrLog = service.makeMngrLog(data); + vo.setMngrLogStrt(StringUtil.isNullToString(mngrLog.get("mngrLogStrt"))); + vo.setMngrLogEnd(StringUtil.isNullToString(mngrLog.get("mngrLogEnd"))); + + // service 호출 + Map message = new HashMap<>(); + message = service.updateBOManageStrUpdt(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOManageStrUpdt", mbrVO), +// ReplyFromResrc::getReply +// ); } @@ -321,107 +684,232 @@ public class CrmMbrController { /** * CRM 회원 활동 정보 조회 이동 * - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrActInfoInqire") - public String selectMbrActInfoInqire(CrmCnsltVO vo ,CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selecBOtMbrActInfoInqire", mbrVO), - model, - "resultMap" - ); - model.addAttribute("cnsltVO",vo); + public String selectMbrActInfoInqire(CrmCnsltVO crmCnsltVO ,BOMbrVO vo, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + // 회원 활동 정보 조회 ( 마일리지, 쿠폰, 누적 결재 금액, 누적 주문 건수, 최근 로그인 ip, 최근 수정일시 ) + DataMap result = new DataMap(); + result = service.selectBOMbrActInfoInqire(vo); + + // 고객 상품, 검색 관련 데이터 조회 + DataMap acttData = new DataMap(); + acttData = service.selectBOMbrDataGoodsInqire(vo); + + // String recentVisitSopmalNm = service.selectBORecentVisitStrInqire(); + // SELECT FN_GET_SOPMAL_NAME(ML.SOPMAL_CD) AS SOPMAL_NM FROM FM_MEMBER_LOGIN ML WHERE ML.MBR_DV_CD = 'GC' AND ML.MBR_INNB = 4 ORDER BY ML.REGIST_DT DESC LIMIT 0, 1; + + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("result", result); + content.put("acttData", acttData); + content.put("paramVO", vo); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selecBOtMbrActInfoInqire", mbrVO), +// model, +// "resultMap" +// ); + model.addAttribute("cnsltVO",crmCnsltVO); return "crm/mbr/MbrActInfoInqireR"; } /** * CRM 회원 활동 정보 (고객 데이터 : 최근 본 상품 ) - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrDataGoodsInqireToday") - public String selectMbrDataGoodsInqireToday(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireToday", mbrVO), - model, - "resultMap" - ); + public String selectMbrDataGoodsInqireToday(BOMbrVO vo, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + // 고객 상품, 검색 관련 데이터 조회 + List todayList = null; + todayList = service.selectBOMbrDataGoodsInqireToday(vo); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("result", todayList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireToday", mbrVO), +// model, +// "resultMap" +// ); return "crm/mbr/MbrDataInqireR"; } /** * CRM 회원 활동 정보 (고객 데이터 : 위시리스트에 담은 상품 ) - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrDataGoodsInqireWish") - public String selectMbrDataGoodsInqireWish(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireWish", mbrVO), - model, - "resultMap" - ); + public String selectMbrDataGoodsInqireWish(BOMbrVO vo, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + // 고객 상품, 검색 관련 데이터 조회 + List wishList = null; + wishList = service.selectBOMbrDataGoodsInqireWish(vo); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("result", wishList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireWish", mbrVO), +// model, +// "resultMap" +// ); return "crm/mbr/MbrDataInqireR"; } /** * CRM 회원 활동 정보 (고객 데이터 : 장바구니에 담은 상품 ) - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrDataGoodsInqireCart") - public String selectMbrDataGoodsInqireCart(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireCart", mbrVO), - model, - "resultMap" - ); + public String selectMbrDataGoodsInqireCart(BOMbrVO vo, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + + // 고객 상품, 검색 관련 데이터 조회 + List cartList = null; + cartList = service.selectBOMbrDataGoodsInqireCart(vo); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("result", cartList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireCart", mbrVO), +// model, +// "resultMap" +// ); return "crm/mbr/MbrDataInqireR"; } /** * CRM 회원 활동 정보 (고객 데이터 : 최근 검색어 ) - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrDataGoodsInqireSrch") - public String selectMbrDataGoodsInqireSrch(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireSrch", mbrVO), - model, - "resultMap" - ); + public String selectMbrDataGoodsInqireSrch(BOMbrVO vo, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + // 고객 상품, 검색 관련 데이터 조회 + List srchKeywordList = null; + srchKeywordList = service.selectBOMbrDataGoodsInqireSrch(vo); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("result", srchKeywordList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireSrch", mbrVO), +// model, +// "resultMap" +// ); return "crm/mbr/MbrDataSrchKeywordR"; } /** * CRM 회원 정보 조회 * - * @param paramVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/selectMbrCrmInfo") - public ResponseEntity selectMbrCrmInfo(CrmMbrVO mbrVO,@CookieValue(value = "authSopmalCd") String authSopmalCd) { - mbrVO.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrCrmInfoPopupInqire", mbrVO), - ReplyFromResrc::getReply + @RequestMapping(value = "/selectMbrCrmInfo", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMbrCrmInfo(BOMbrVO vo,@CookieValue(value = "authSopmalCd") String authSopmalCd) { + vo.setSopmalCd(authSopmalCd); + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + }else if ("04".equals(user.getSysDvCd())){//인트라넷이면 대표브랜드로 검색 + vo.setSopmalCd(user.getReprsntBrand()); + } + + String secretKey = commonService.selectSecretkey(); + vo.setSecretKey(secretKey); + // 회원 활동 정보 조회 ( 마일리지, 쿠폰, 누적 결재 금액, 누적 주문 건수, 최근 로그인 ip, 최근 수정일시 ) + DataMap result = new DataMap(); + result = service.selectBOMbrActInfoInqire(vo); + + + // sns 연동 조회 + List sns = new ArrayList<>(); + sns = service.selectBOMbrExtrlMbrInfoInqire(vo); + + // 고객 주문관련, 게시글관련 데이터 조회 + Map orderData = new HashMap<>(); + orderData = service.selectBOMbrDataOrderInqireCrmPopup(vo); + + // Shop 정보 조회 + BOSetupOrdrVO boOrdrVO = new BOSetupOrdrVO(); + boOrdrVO.setSopmalCd(vo.getSopmalCd()); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("shopInfo", boOrdrMngrService.selectBOOrdrSetupList(boOrdrVO)); + content.put("result", result); + content.put("sns", sns); + content.put("acttData", orderData); + content.put("paramVO", vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrCrmInfoPopupInqire", mbrVO), +// ReplyFromResrc::getReply +// ); } } diff --git a/src/main/java/com/wb/domainserver/domain/crm/mlg/controller/CrmMlgController.java b/src/main/java/com/wb/domainserver/domain/crm/mlg/controller/CrmMlgController.java index 370158de..768d0bed 100644 --- a/src/main/java/com/wb/domainserver/domain/crm/mlg/controller/CrmMlgController.java +++ b/src/main/java/com/wb/domainserver/domain/crm/mlg/controller/CrmMlgController.java @@ -1,27 +1,46 @@ package com.wb.domainserver.domain.crm.mlg.controller; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo; +import com.wb.domainserver.common.prop.PaginationProperties; +import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService; +import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService; +import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO; import com.wb.domainserver.domain.crm.cnslt.vo.CrmCnsltVO; -import com.wb.domainserver.domain.crm.mlg.vo.CrmMlgVO; -import com.wb.domainserver.domain.crm.mlg.vo.PosReqVO; +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.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.mbr.mlg.vo.BOMlgVO; +import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService; +import com.wb.domainserver.domain.gcone.ntcn.mssage.vo.BOMssageVO; import com.wb.domainserver.domain.mngr.mbr.vo.MlgSrchVO; 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.string.StringUtil; 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; import org.springframework.web.bind.annotation.CookieValue; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; /** @@ -54,6 +73,26 @@ public class CrmMlgController { @Autowired private SendToResrc sendToResrc; + @Autowired + private BOMlgService service; + + @Autowired + private BOMaSopmalService sopmalService; + + @Autowired + private BOMaComncdService bOMaComncdService; // 공통 코드 service + + @Autowired + private PaginationProperties paginationProperties; + + @Autowired + private BOMssageService boMssageService; + + @Autowired + private BOMbrService boMbrService; + + @Autowired + private BOCommonService boCommonService; /** * 마일리지 내역 폼 이동 @@ -61,15 +100,70 @@ public class CrmMlgController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMlgDtlsForm") - public String selectMlgDtlsForm(CrmCnsltVO cnsltVO , CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); + public String selectMlgDtlsForm(CrmCnsltVO cnsltVO, BOMlgSrchVO boMlgSrchVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + boMlgSrchVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + 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()); + } + + 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(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", vo), - model, - "resultMap" - ); + // 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", service.selectBOMlgMngrInfoInqire(mngrInfoParamMap)); + + //회원명 + content.put("mbrInfoMap", service.selectBOMlgMbrInfoInqire(boMlgSrchVO)); + + //마일리지 기본 유효기간 조회 + content.put("mlgValidPd", service.selectBOMlgValidPd(boMlgSrchVO)); + + //잔액 합계 + BigDecimal blceSum = service.selectBOMlgBlceSum(boMlgSrchVO); + content.put("blceSum", blceSum); + //30일이내 소멸예정 합계 + BigDecimal endInMnthBlceSum = service.selectBOEndInMnthMlgBlceSum(boMlgSrchVO); + content.put("endInMnthBlceSum", endInMnthBlceSum); + + // 적립 예정 마일리지 + String accmlPrearngeSum = service.selectBOAccmlPrearngeSum(boMlgSrchVO); + content.put("accmlPrearngeSum", accmlPrearngeSum); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", vo), +// model, +// "resultMap" +// ); model.addAttribute("cnsltVO",cnsltVO); return "crm/mlg/MlgDtlsRForm"; } @@ -81,37 +175,152 @@ public class CrmMlgController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMlgDtlsInqire") - public String selectMlgDtlsInqire(CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); + public String selectMlgDtlsInqire(BOMlgSrchVO boMlgSrchVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + boMlgSrchVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("sopmal".equals(boMlgSrchVO.getServerDv())) { + boMlgSrchVO.setMbrDvCd(user.getMbrDvCd()); + boMlgSrchVO.setMbrInnb(user.getUserInnb()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgListInqire", vo), - model, - "resultMap" - ); + 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 = service.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 = service.selectBOMlgBlceSum(boMlgSrchVO); + content.put("blceSum", blceSum); + + //30일이내 소멸예정 합계 + BigDecimal endInMnthBlceSum = service.selectBOEndInMnthMlgBlceSum(boMlgSrchVO); + content.put("endInMnthBlceSum", endInMnthBlceSum); + + // 공통코드 호출 + 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/selectBOMlgListInqire", vo), +// model, +// "resultMap" +// ); return "crm/mlg/MlgDtlsR"; } /** * 마일리지 팝업 목록 검색 폼 - * @param mlgSrchVO + * @param boMlgSrchVO * @return String */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectMlgManagePopupForm") - public String selectMlgManagePopupForm(ModelMap model,MlgSrchVO mlgSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - mlgSrchVO.setSopmalCd(authSopmalCd); + public String selectMlgManagePopupForm(ModelMap model,BOMlgSrchVO boMlgSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + boMlgSrchVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", mlgSrchVO), - 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", service.selectBOMlgMngrInfoInqire(mngrInfoParamMap)); + + //회원명 + content.put("mbrInfoMap", service.selectBOMlgMbrInfoInqire(boMlgSrchVO)); + + //마일리지 기본 유효기간 조회 + content.put("mlgValidPd", service.selectBOMlgValidPd(boMlgSrchVO)); + + + + //잔액 합계 + BigDecimal blceSum = service.selectBOMlgBlceSum(boMlgSrchVO); + content.put("blceSum", blceSum); + //30일이내 소멸예정 합계 + BigDecimal endInMnthBlceSum = service.selectBOEndInMnthMlgBlceSum(boMlgSrchVO); + content.put("endInMnthBlceSum", endInMnthBlceSum); + + // 적립 예정 마일리지 + String accmlPrearngeSum = service.selectBOAccmlPrearngeSum(boMlgSrchVO); + content.put("accmlPrearngeSum", accmlPrearngeSum); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", mlgSrchVO), +// model, +// "resultMap" +// ); //BO 회원 목록조회 API 결과를 Map으로 변환하여 설정 - model.addAttribute("mbrSrchVO",mlgSrchVO); + model.addAttribute("mbrSrchVO",boMlgSrchVO); return "mngr/mbr/MlgManagePopupCForm"; } @@ -122,14 +331,72 @@ public class CrmMlgController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMlgDtlsPopupInqire") - public String selectMlgDtlsPopupInqire(CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); + public String selectMlgDtlsPopupInqire(BOMlgSrchVO boMlgSrchVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + boMlgSrchVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgListInqire", vo), - model, - "resultMap" - ); + 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 = service.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 = service.selectBOMlgBlceSum(boMlgSrchVO); + content.put("blceSum", blceSum); + + //30일이내 소멸예정 합계 + BigDecimal endInMnthBlceSum = service.selectBOEndInMnthMlgBlceSum(boMlgSrchVO); + content.put("endInMnthBlceSum", endInMnthBlceSum); + + // 공통코드 호출 + 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/selectBOMlgListInqire", vo), +// model, +// "resultMap" +// ); return "mngr/mbr/MlgManagePopupR"; } @@ -140,15 +407,83 @@ public class CrmMlgController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/insertCrmMlgMngrUpDn") - public ResponseEntity insertCrmMlgMngrUp(CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - log.debug("CrmMlgVO {}", vo); + @RequestMapping(value = "/insertCrmMlgMngrUpDn", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertCrmMlgMngrUp(BOMlgVO mlgVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + mlgVO.setSopmalCd(authSopmalCd); + log.debug("CrmMlgVO {}", mlgVO); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + mlgVO.setRegusr(user.getUserInnb()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/insertBOMlgMngrUpDn", vo), - ReplyFromResrc::getReply + if("01".equals(user.getSysDvCd())){ + mlgVO.setSopmalCd(user.getSopmalCd()); + } + + //마일리지 적용 로직 + DataMap message = new DataMap(); + + //등록자 구분 - 02 관리자 + mlgVO.setRegusrDvCd("02"); + + //01 : 지급, 02 : 차감 + if("01".equals(mlgVO.getMlgDvCd())) { + message = service.insertBOMngrMlgUp(mlgVO); + } else { + message = service.insertBOMngrMlgDn(mlgVO); + } + + //문자 발송 + if(!"".equals(StringUtil.isNullToString(mlgVO.getMlgSmsCn()))) { + DataMap dataMap = new DataMap(); + //dataMap.put("") + BOMssageVO boMssageVO = new BOMssageVO(); + boMssageVO.setSopmalCd(mlgVO.getSopmalCd()); + boMssageVO.setRegusr(user.getUserInnb()); + boMssageVO.setCn(mlgVO.getMlgSmsCn()); + DataMap sndngNbMap = boMssageService.selectBOShopNb(boMssageVO); + String sndngNb = StringUtil.isNullToString(sndngNbMap.get("smsAtmcSndngDsptchNb")); + boMssageVO.setSndngNb(sndngNb); + boMssageVO.setRegusrDv("02"); + boMssageVO.setSmsNm("surem"); + boMssageVO.setRecptnNb(mlgVO.getMbtlnb()); + boMssageVO.setSndngIdnb(BigInteger.ZERO); + boMssageVO.setSttus("REG"); + boMssageVO.setStrInnb(BigInteger.ZERO); + boMssageVO.setStrNm(""); + boMssageVO.setStrDv(""); + boMssageVO.setCstmrNm(StringUtil.isNullToString(mlgVO.getMbrNm())); + String mbrInnb = mlgVO.getMbrInnb(); + boMssageVO.setCstmrIdnb(!"".equals(mbrInnb) ? new BigInteger(mbrInnb) : BigInteger.ZERO); + + DataMap mssageRslt = boMssageService.insertBOMssageSndng(boMssageVO); + + DataMap paramMap = new DataMap(); + paramMap.put("srchSmsInnb", boMssageVO.getSmsInnb()); + List srchSttusList = new ArrayList(); + srchSttusList.add("REG"); + paramMap.put("srchSttus", srchSttusList); + DataMap messageSureInsert = new DataMap(); + messageSureInsert = boMssageService.insertBOMssageSureReigst(paramMap); + message.put("messageSureInsert", messageSureInsert); + DataMap cntResult = new DataMap(); + DataMap syncResult = new DataMap(); + //대상 수 재설정 + cntResult = boMssageService.updateBOMssageSureCnt(paramMap); + + //싱크 + syncResult = boMssageService.updateBOMssageSync(paramMap); + message.put("syncResult", syncResult); + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/insertBOMlgMngrUpDn", vo), +// ReplyFromResrc::getReply +// ); } @@ -157,15 +492,31 @@ public class CrmMlgController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateCrmMlgUsePosblEndDt") - public ResponseEntity updateCrmMlgUsePosblEndDt(CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - log.debug("CrmMlgVO {}", vo); + @RequestMapping(value = "/updateCrmMlgUsePosblEndDt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCrmMlgUsePosblEndDt(BOMlgVO mlgVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + mlgVO.setSopmalCd(authSopmalCd); + log.debug("CrmMlgVO {}", mlgVO); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/updateBOMlgUsePosblEndDt", vo), - ReplyFromResrc::getReply + // 사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + mlgVO.setUpdusr(user.getUserInnb()); + if("01".equals(user.getSysDvCd())){ + mlgVO.setSopmalCd(user.getSopmalCd()); + } + + // service 호출 + DataMap message = new DataMap(); + message = service.updateBOMlgUsePosblEndDt(mlgVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/updateBOMlgUsePosblEndDt", vo), +// ReplyFromResrc::getReply +// ); } @@ -174,7 +525,7 @@ public class CrmMlgController { ******/ /** * 포스 마일리지 테스트 페이지 - * @param WithdrawalVO + * @param mlgSrchVO * @return String */ @Policy(AuthPolicy.RESTRICTED) @@ -186,38 +537,38 @@ public class CrmMlgController { /** * 포스 마일리지 적립 - * @param boMlgVO + * @param vo * @return ResponseEntity */ - @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/insertPosMlgAdd") - public ResponseEntity insertPosMlgAdd(@RequestBody PosReqVO vo) { - - log.debug("마일리지 적용 파라미터 확인{}",vo); - - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/insertBOPosMlgAdd", vo), - ReplyFromResrc::getReply - ); - } +// @Policy(AuthPolicy.PUBLIC) +// @RequestMapping(value = "/insertPosMlgAdd") +// public ResponseEntity insertPosMlgAdd(@RequestBody PosReqVO vo) { +// +// log.debug("마일리지 적용 파라미터 확인{}",vo); +// +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/insertBOPosMlgAdd", vo), +// ReplyFromResrc::getReply +// ); +// } /** * 포스 마일리지 환불 여부 확인 - * @param boMlgVO + * @param map * @return ResponseEntity */ - @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectChkPosRefundable") - public ResponseEntity selectChkPosRefundable(@RequestBody HashMap map, HttpSession session) { - - log.debug("마일리지 적용 파라미터 확인{}",map); - - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOPosChkRefundable", map), - ReplyFromResrc::getReply - ); - } +// @Policy(AuthPolicy.PUBLIC) +// @RequestMapping(value = "/selectChkPosRefundable") +// public ResponseEntity selectChkPosRefundable(@RequestBody HashMap map, HttpSession session) { +// +// log.debug("마일리지 적용 파라미터 확인{}",map); +// +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOPosChkRefundable", map), +// ReplyFromResrc::getReply +// ); +// } /******** * 충전형 마일리지 @@ -229,15 +580,72 @@ public class CrmMlgController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectCashDtlsForm") - public String selectCashDtlsForm(CrmCnsltVO cnsltVO, CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); + public String selectCashDtlsForm(CrmCnsltVO cnsltVO, BOMlgSrchVO boMlgSrchVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + boMlgSrchVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + 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()); + } + + 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(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", vo), - model, - "resultMap" - ); + // 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", service.selectBOMlgMngrInfoInqire(mngrInfoParamMap)); + + //회원명 + content.put("mbrInfoMap", service.selectBOMlgMbrInfoInqire(boMlgSrchVO)); + + //마일리지 기본 유효기간 조회 + content.put("mlgValidPd", service.selectBOMlgValidPd(boMlgSrchVO)); + + + + //잔액 합계 + BigDecimal blceSum = service.selectBOMlgBlceSum(boMlgSrchVO); + content.put("blceSum", blceSum); + //30일이내 소멸예정 합계 + BigDecimal endInMnthBlceSum = service.selectBOEndInMnthMlgBlceSum(boMlgSrchVO); + content.put("endInMnthBlceSum", endInMnthBlceSum); + + // 적립 예정 마일리지 + String accmlPrearngeSum = service.selectBOAccmlPrearngeSum(boMlgSrchVO); + content.put("accmlPrearngeSum", accmlPrearngeSum); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", vo), +// model, +// "resultMap" +// ); model.addAttribute("cnsltVO", cnsltVO); return "crm/mlg/CashDtlsRForm"; } @@ -250,15 +658,54 @@ public class CrmMlgController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectCashDtlsInqire") - public String selectCashDtlsInqire(CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); + public String selectCashDtlsInqire(BOCashVO cashVo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + cashVo.setSopmalCd(authSopmalCd); + 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); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashList", vo), - model, - "resultMap" - ); + //페이징 처리를 위한 값 설정 + 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 = service.selectBOCashList(cashVo); + + //충전형 마일리지 잔액 조회 + BigDecimal blce = service.selectBOCashBlce(cashVo); + + DataMap content = new DataMap(); + content.put("cashList", cashList); + content.put("paginationInfo", paginationInfo); + content.put("mbrInfo", mbrInfo); + content.put("blce", blce); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashList", vo), +// model, +// "resultMap" +// ); return "crm/mlg/CashDtlsR"; } diff --git a/src/main/java/com/wb/domainserver/domain/crm/ordr/controller/CrmOrdrController.java b/src/main/java/com/wb/domainserver/domain/crm/ordr/controller/CrmOrdrController.java index 5e724467..c20210dc 100644 --- a/src/main/java/com/wb/domainserver/domain/crm/ordr/controller/CrmOrdrController.java +++ b/src/main/java/com/wb/domainserver/domain/crm/ordr/controller/CrmOrdrController.java @@ -1,34 +1,71 @@ package com.wb.domainserver.domain.crm.ordr.controller; import com.fasterxml.jackson.core.JsonProcessingException; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo; +import com.wb.domainserver.common.prop.PaginationProperties; +import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService; +import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService; +import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO; import com.wb.domainserver.domain.crm.cnslt.vo.CrmCnsltVO; import com.wb.domainserver.domain.crm.ordr.vo.CrmGoodsVO; import com.wb.domainserver.domain.crm.ordr.vo.CrmPurchsrVO; import com.wb.domainserver.domain.crm.ordr.vo.PayVO; +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.mbr.mlg.service.BOMlgService; +import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOCashVO; +import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOMlgVO; +import com.wb.domainserver.domain.gcone.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.BODwldItmVO; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO; +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.setup.nbkk.service.BONbkkService; import com.wb.domainserver.domain.mngr.ordr.ordrmngr.vo.OrdrSrchVO; import com.wb.domainserver.domain.mngr.ordr.ordrmngr.vo.OrdrVO; import com.wb.domainserver.domain.mngr.ordr.refnd.vo.RefndSrchVO; import com.wb.domainserver.domain.mngr.ordr.refnd.vo.RefndVO; +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.string.StringUtil; import jakarta.servlet.http.HttpServletRequest; 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; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import java.math.BigDecimal; +import java.math.BigInteger; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -47,44 +84,191 @@ public class CrmOrdrController { @Autowired private SendToResrc sendToResrc; - /** + @Autowired + private BOOrdrService boOrdrService; + + @Autowired + private PaginationProperties paginationProperties; + + @Autowired + private BOMaComncdService bOMaComncdService; + + @Autowired + private BONbkkService nbkkService; + + @Autowired + private BOMaSopmalService boMaSopmalService; + + @Autowired + private BOCommonService commonService; + + @Autowired + private BORtngudrefndService boRtngudrefndService; + + @Autowired + private BOPurchsService service; + + @Autowired + private BOOrderService orderService; + + @Autowired + private BOOrdrService ordrService; + + @Autowired + private BOMaComncdService comncdService; + + @Autowired + private BOMlgService mlgService; + + @Autowired + private BOMbrService mbrService; + + @Autowired + private BOGoodsService boGoodsService; + + @Autowired + private BOOrdrLogService ordrLogService; + + /** * 회원 주문 조회 폼 - * @param CrmOrdrVO - * @param ModelMap * @return MbrOrdrListInqireRForms.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrOrdrListInqireForm") - public String selectMbrOrdrListInqireForm(CrmCnsltVO vo , ModelMap model , OrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectMbrOrdrListInqireForm(CrmCnsltVO vo , ModelMap model , BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { ordrSrchVO.setSopmalCd(authSopmalCd); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrSrchVO.setSopmalCd(user.getSopmalCd()); + } + ordrSrchVO.setUpdusr(user.getUserInnb()); // 수정자 + Map content = new HashMap<>(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOAllOrdrListInqire", ordrSrchVO), - model, - "cond" - ); + content.put("sopmalCd", ordrSrchVO.getSopmalCd()); + + List storeList = boOrdrService.selectBOStoreList(ordrSrchVO); + + content.put("storeList", storeList); // 매장 + + BODwldItmVO dwldItmVO = new BODwldItmVO(); + dwldItmVO.setSopmalCd(ordrSrchVO.getSopmalCd()); + + List dwldItmSetupFormList = boOrdrService.selectDwldItmSetupFormList(dwldItmVO); + + content.put("dwldItmSetupFormList", dwldItmSetupFormList); // 엑셀다운로드 양식 폼 목록 + + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("ORDR_STTUS"); + + List ordrSttusCdList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("ordrSttusCdList", ordrSttusCdList); // 주문상태 + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("SLE_ENVRN"); // 주문환경 + + List ordrEnvrnDvCdList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("ordrEnvrnDvCdList", ordrEnvrnDvCdList); + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("DLVY_MTH"); // 배송방법 + + List dlvyMthCdList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("dlvyMthCdList", dlvyMthCdList); + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("ORDR_TY"); // 주문유형 + + List ordrTyCdList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("ordrTyCdList", ordrTyCdList); + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("RESVE_SNDNG_DV"); // 희망배송일, 상품예약발송일 + + List resveSndngDvCdList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("resveSndngDvCdList", resveSndngDvCdList); + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("SETLE_MTH"); // 모든 결제수단 + + List setleMthList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("setleMthList", setleMthList); + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("PG_CMPNY"); // 모든결제사 + + List setlePgCmpnyList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("setlePgCmpnyList", setlePgCmpnyList); + + // 무통장자동입금 사용 여부 + String acntUseAt = nbkkService.selectBOAcntUseAtInqire(ordrSrchVO); + content.put("acntUseAt", acntUseAt); + + // 네이버페이 사용 여부 + String npayUseAt = boMaSopmalService.selectBONpayUseAtByShop(ordrSrchVO.getSopmalCd()); + content.put("npayUseAt", npayUseAt); + + // Map객체에 필요 정보 할당 + content.put("paramVO", ordrSrchVO); + + model.addAttribute("cond", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOAllOrdrListInqire", ordrSrchVO), +// model, +// "cond" +// ); model.addAttribute("cnsltVO",vo); model.addAttribute("ordrSrchVO",ordrSrchVO); return "crm/ordr/MbrOrdrListInqireRForm"; } /** * 회원 주문 조회 - * @param OrdrSrchVO - * @param ModelMap * @return MbrOrdrListInqireR.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrOrdrListInqire") - public String selectMbrOrdrListInqire(ModelMap model , OrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectMbrOrdrListInqire(ModelMap model , BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { ordrSrchVO.setSopmalCd(authSopmalCd); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrSrchVO.setSopmalCd(user.getSopmalCd()); + } + Map content = new HashMap<>(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectAllOrdrListInqireAjax", ordrSrchVO), - model, - "resultMap" - ); + 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()); + + /*시크릿 키 set*/ + ordrSrchVO.setSecretKey(commonService.selectSecretkey()); + List allOrdrList = boOrdrService.selectAllOrdrListInqireAjax(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/selectAllOrdrListInqireAjax", ordrSrchVO), +// model, +// "resultMap" +// ); return "crm/ordr/MbrOrdrListInqireR"; } @@ -92,20 +276,43 @@ public class CrmOrdrController { /** * 회원 반품 환불 내역 조회 폼 - * @param CrmOrdrVO - * @param ModelMap * @return MbrRtngudRefndDtlsInqireRForm.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrRtngudRefndDtlsInqireForm") - public String selectMbrRtngudRefndDtlsInqireForm(CrmCnsltVO vo ,ModelMap model , RefndSrchVO refndSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - refndSrchVO.setSopmalCd(authSopmalCd); + public String selectMbrRtngudRefndDtlsInqireForm(CrmCnsltVO vo , ModelMap model , BORtngudrefndVO boRtngudrefndVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + boRtngudrefndVO.setSopmalCd(authSopmalCd); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + boRtngudrefndVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBORtngudRefndListInqireForm", refndSrchVO), - model, - "resultMap" - ); + 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", refndSrchVO), +// model, +// "resultMap" +// ); model.addAttribute("cnsltVO",vo); return "crm/ordr/MbrRtngudRefndDtlsInqireRForm"; } @@ -119,14 +326,44 @@ public class CrmOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMbrRtngudRefndDtlsInqire") - public String selectMbrRtngudRefndDtlsInqire(ModelMap model , RefndVO refndSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - refndSrchVO.setSopmalCd(authSopmalCd); - log.debug(",,{}",refndSrchVO); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBORtngudRefndListInqire", refndSrchVO), - model, - "resultMap" - ); + public String selectMbrRtngudRefndDtlsInqire(ModelMap model , BORtngudrefndVO boRtngudrefndSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + boRtngudrefndSrchVO.setSopmalCd(authSopmalCd); + log.debug(",,{}",boRtngudrefndSrchVO); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + boRtngudrefndSrchVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + } + + // 페이징 객체 생성 + 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()); + + // 목록 조회 + boRtngudrefndSrchVO.setSecretKey(commonService.selectSecretkey()); + List resultList = null; + resultList = boRtngudrefndService.selectBORtngudRefndListInqire(boRtngudrefndSrchVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("paramVO", boRtngudrefndSrchVO); + content.put("resultList", resultList); + content.put("paginationInfo", boRtngudrefndSrchVO.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBORtngudRefndListInqire", refndSrchVO), +// model, +// "resultMap" +// ); return "crm/ordr/MbrRtngudRefndDtlsInqireR"; } @@ -141,16 +378,26 @@ public class CrmOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectMngrOrdrRegistForm") - public String selectMngrOrdrRegistForm(CrmCnsltVO vo ,ModelMap model, CrmPurchsrVO purchsrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectMngrOrdrRegistForm(CrmCnsltVO vo ,ModelMap model, BOPurchsrVO purchsrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { purchsrVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + purchsrVO.setSopmalCd(user.getSopmalCd()); + } + String mngrInnb = String.valueOf(MemberJwtContextHolder.getMemberInfo().getUserInnb()); + + Map content = service.selectMngrOrdrRegistForm(purchsrVO, mngrInnb); + log.debug("purchsrVOpurchsrVOpurchsrVOpurchsrVO {}", purchsrVO); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBoMngrOrdrRegistForm", purchsrVO), - model, - "data" - ); + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBoMngrOrdrRegistForm", purchsrVO), +// model, +// "data" +// ); model.addAttribute("purchsrVO", purchsrVO); model.addAttribute("cnsltVO", vo); @@ -166,14 +413,27 @@ public class CrmOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectPurchsrInqirePopupForm") - public String selectPurchsrInqirePopupForm(ModelMap model, CrmPurchsrVO purchsrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectPurchsrInqirePopupForm(ModelMap model, BOPurchsrVO purchsrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { purchsrVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + purchsrVO.setSopmalCd(user.getSopmalCd()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOPurchsrInqire", purchsrVO), - model, - "data" - ); + Map content = new HashMap<>(); + + List mrbGradList = service.selectMrbGradList(purchsrVO); + + content.put("mrbGradList", mrbGradList); + content.put("sopmalCd", purchsrVO.getSopmalCd()); + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOPurchsrInqire", purchsrVO), +// model, +// "data" +// ); return "crm/ordr/PurchsrInqirePopupR"; } @@ -186,13 +446,39 @@ public class CrmOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectPurchsrList") - public String selectPurchsrList(ModelMap model, CrmPurchsrVO purchsrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectPurchsrList(ModelMap model, BOPurchsrVO purchsrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { purchsrVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOPurchsrList", purchsrVO), - model, - "data" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + purchsrVO.setSopmalCd(user.getSopmalCd()); + } + + Map content = new HashMap<>(); + + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(purchsrVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(purchsrVO.getRecordCountPerPage()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + purchsrVO.setPaginationInfo(paginationInfo); + purchsrVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + purchsrVO.setLastIndex(paginationInfo.getLastRecordIndex()); + purchsrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + List purchsrList = service.selectPurchsrList(purchsrVO); + + content.put("purchsrList", purchsrList); + content.put("paramVO", purchsrVO); + content.put("paginationInfo", purchsrVO.getPaginationInfo()); + + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOPurchsrList", purchsrVO), +// model, +// "data" +// ); return "crm/ordr/PurchsrInqirePopupRList"; } @@ -203,14 +489,53 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectPurchsr") - public ResponseEntity selectPurchsr(CrmPurchsrVO purchsrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value="/selectPurchsr", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectPurchsr(BOPurchsrVO purchsrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { purchsrVO.setSopmalCd(authSopmalCd); + Map content = new HashMap<>(); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + purchsrVO.setSopmalCd(user.getSopmalCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOPurchsr", purchsrVO), - ReplyFromResrc::getReply + DataMap purchsrMap = service.selectPurchsr(purchsrVO); + + if (!CollectionUtils.isEmpty(purchsrMap)) { + DataMap dftDlvylc = service.selectDftDlvylc(purchsrVO); + + purchsrMap.put("dftDlvylc", dftDlvylc); + + BOMlgVO mlgVo = new BOMlgVO(); + + mlgVo.setMbrDvCd((String) purchsrMap.get("mbrDvCd").toString()); + mlgVo.setMbrInnb((String) purchsrMap.get("mbrInnb").toString()); + + BigDecimal blceSum = mlgService.selectBOMlgBlceSum(mlgVo); + + purchsrMap.put("ableMlgAmt", blceSum); // 가용 마일지리 조회 및 세팅, add by jws + + BOCashVO cashVO = new BOCashVO(); + + cashVO.setMbrDvCd((String) purchsrMap.get("mbrDvCd").toString()); + cashVO.setMbrInnb((String) purchsrMap.get("mbrInnb").toString()); + + BigDecimal cashBlceSum = mlgService.selectBOCashBlce(cashVO); + + purchsrMap.put("ableCashMlgAmt", cashBlceSum); // 가용 마일지리 조회 및 세팅, add by cjh + } + + content.put("purchsr", purchsrMap); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOPurchsr", purchsrVO), +// ReplyFromResrc::getReply +// ); } /** @@ -220,14 +545,51 @@ public class CrmOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectOrdrGoodsInqirePopupForm") - public String selectOrdrGoodsInqirePopupForm(ModelMap model, CrmGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectOrdrGoodsInqirePopupForm(ModelMap model, BOGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { goodsVO.setSopmalCd(authSopmalCd); + Map content = new HashMap<>(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOOrdrGoodsInqire", goodsVO), - model, - "data" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + goodsVO.setSopmalCd(user.getSopmalCd()); + } + + content.put("sopmalCd", goodsVO.getSopmalCd()); + + goodsVO.setUpperCtgryId("1"); + + List GoodsCategoryList = service.selectGoodsCategoryList(goodsVO); + + content.put("goodsCategoryList", GoodsCategoryList); // 카테고리 depth1 + + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("EXPSR"); + + List cgo014List = comncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("expsrCdList", cgo014List); // 노출 + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("GOODS_STTUS"); + + List cgo012List = comncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("goodsDftinfoSttusList", cgo012List); // 판매상태 + + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("INVNTRY_POLICY"); + + List cgo134List = comncdService.selectBOCommcdDetailList(maComncdVO); + + content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매 + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOOrdrGoodsInqire", goodsVO), +// model, +// "data" +// ); return "crm/ordr/OrdrGoodsInqirePopupR"; } @@ -238,14 +600,26 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGoodsCategoryList") - public ResponseEntity selectGoodsCategoryList(CrmGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value="/selectGoodsCategoryList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGoodsCategoryList(BOGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { goodsVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + goodsVO.setSopmalCd(user.getSopmalCd()); + } + Map content = new HashMap<>(); + content.put("goodsCategoryList", service.selectGoodsCategoryList(goodsVO)); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoodsCategoryList", goodsVO), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoodsCategoryList", goodsVO), +// ReplyFromResrc::getReply +// ); } /** @@ -256,31 +630,70 @@ public class CrmOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectGoodsList") - public String selectGoodsList(ModelMap model, CrmGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectGoodsList(ModelMap model, BOGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { goodsVO.setSopmalCd(authSopmalCd); + Map content = new HashMap<>(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoodsList", goodsVO), - model, - "data" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + goodsVO.setSopmalCd(user.getSopmalCd()); + } + + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(goodsVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(goodsVO.getRecordCountPerPage()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + goodsVO.setPaginationInfo(paginationInfo); + goodsVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + goodsVO.setLastIndex(paginationInfo.getLastRecordIndex()); + goodsVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + List goodsList = service.selectGoodsList(goodsVO); + + content.put("goodsList", goodsList); + content.put("paramVO", goodsVO); + content.put("paginationInfo", goodsVO.getPaginationInfo()); + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoodsList", goodsVO), +// model, +// "data" +// ); return "crm/ordr/OrdrGoodsInqirePopupRList"; } /** * 관리자 주문 > 상품조회 > 적용 상품 목록 조회 - * @param goodsVOs + * @param goodsVOList * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectApplyGoodsList") - public ResponseEntity selectApplyGoodsList(@RequestBody List goodsVOs, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value="/selectApplyGoodsList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectApplyGoodsList(@RequestBody List goodsVOList, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOApplyGoodsList", goodsVOs), - ReplyFromResrc::getReply + if("01".equals(user.getSysDvCd())){ + for(BOGoodsVO vo :goodsVOList){ + vo.setSopmalCd(user.getSopmalCd()); + } + } + + Map content = service.selectApplyGoodsList(goodsVOList); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOApplyGoodsList", goodsVOs), +// ReplyFromResrc::getReply +// ); } @@ -291,14 +704,22 @@ public class CrmOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectOrdrGoodsOptnChoicePopupForm") - public String selectOrdrGoodsOptnChoicePopupForm(ModelMap model, CrmGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectOrdrGoodsOptnChoicePopupForm(ModelMap model, BOGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { goodsVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + goodsVO.setSopmalCd(user.getSopmalCd()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoods", goodsVO), - model, - "data" - ); + Map content = service.selectGoods(goodsVO); + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoods", goodsVO), +// model, +// "data" +// ); return "crm/ordr/OrdrGoodsOptnChoicePopupR"; } @@ -309,14 +730,26 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGoodsNomalOptn") - public ResponseEntity selectGoodsNomalOptn(CrmGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value="/selectGoodsNomalOptn", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGoodsNomalOptn(BOGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { goodsVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + goodsVO.setSopmalCd(user.getSopmalCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoodsNomalOptn", goodsVO), - ReplyFromResrc::getReply + Map content = service.selectBOGoodsNomalOptn(goodsVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoodsNomalOptn", goodsVO), +// ReplyFromResrc::getReply +// ); } /** @@ -325,14 +758,26 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGoodsStockOptnList") - public ResponseEntity selectGoodsStockOptnList(CrmGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value="/selectGoodsStockOptnList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGoodsStockOptnList(BOGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { goodsVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + goodsVO.setSopmalCd(user.getSopmalCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoodsStockOptnList", goodsVO), - ReplyFromResrc::getReply + Map content = service.selectGoodsStockOptnList(goodsVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoodsStockOptnList", goodsVO), +// ReplyFromResrc::getReply +// ); } /** @@ -341,30 +786,57 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGoodsAddOptnList") - public ResponseEntity selectGoodsAddOptnList(@RequestBody CrmGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value="/selectGoodsAddOptnList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGoodsAddOptnList(@RequestBody BOGoodsVO goodsVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { goodsVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + goodsVO.setSopmalCd(user.getSopmalCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoodsAddOptnList", goodsVO), - ReplyFromResrc::getReply + Map content = service.selectGoodsAddOptnList(goodsVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOGoodsAddOptnList", goodsVO), +// ReplyFromResrc::getReply +// ); } /** * 관리자 주문 > 상품조회 > 상품옵션 > 선택 주문 상품 목록 조회 - * @param goodsVOs + * @param goodsVOList * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectChoiceOrderGoodsList") - public ResponseEntity selectChoiceOptionList(@RequestBody List goodsVOs) { + @RequestMapping(value="/selectChoiceOrderGoodsList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectChoiceOptionList(@RequestBody List goodsVOList) { + log.debug("goodsVOs : {}", goodsVOList); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - log.debug("goodsVOs : {}", goodsVOs); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOChoiceOrderGoodsList", goodsVOs), - ReplyFromResrc::getReply + if("01".equals(user.getSysDvCd())){ + for(BOGoodsVO goodsVO:goodsVOList){ + goodsVO.setSopmalCd(user.getSopmalCd()); + } + } + + Map content = service.selectChoiceOrderGoodsList(goodsVOList); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOChoiceOrderGoodsList", goodsVOs), +// ReplyFromResrc::getReply +// ); } /** @@ -373,13 +845,25 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectDlvylcCouponList") - public ResponseEntity selectDlvylcCouponList(@RequestBody HashMap param, HttpSession session) { + @RequestMapping(value="/selectDlvylcCouponList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectDlvylcCouponList(@RequestBody DataMap param, HttpSession session) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + param.put("sopmalCd", user.getSopmalCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBODlvylcCouponList", param), - ReplyFromResrc::getReply + Map content = service.selectDlvylcCouponList(param); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBODlvylcCouponList", param), +// ReplyFromResrc::getReply +// ); } /** @@ -388,13 +872,51 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectDlvylcCouponListMulti") - public ResponseEntity selectDlvylcCouponListMulti(@RequestBody HashMap param, HttpSession session) { + @RequestMapping(value="/selectDlvylcCouponListMulti", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectDlvylcCouponListMulti(@RequestBody DataMap param, HttpSession session) { 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 = boOrdrService.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 +// ); } /** @@ -403,14 +925,29 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectMultiDlvylcList") - public ResponseEntity selectDlvylcAdresList(CrmPurchsrVO purchsrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value="/selectMultiDlvylcList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectDlvylcAdresList(BOPurchsrVO purchsrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { purchsrVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + purchsrVO.setSopmalCd(user.getSopmalCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOMultiDlvylcList", purchsrVO), - ReplyFromResrc::getReply + List dlvylcList = service.selectBOMultiDlvylcList(purchsrVO); + Map content = new HashMap<>() {{ + put("dlvylcList", dlvylcList); + }}; + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOMultiDlvylcList", purchsrVO), +// ReplyFromResrc::getReply +// ); } /** @@ -418,43 +955,83 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectDlvyCycleList") + @RequestMapping(value="/selectDlvyCycleList", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectDlvyCycleList() { + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("DLVY_CYCLE"); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBODlvyCycleList", new HashMap()), - ReplyFromResrc::getReply + Map content = new HashMap<>() {{ + put("dlvyCycleList", comncdService.selectBOCommcdDetailList(maComncdVO)); + }}; + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBODlvyCycleList", new HashMap()), +// ReplyFromResrc::getReply +// ); } /** * 관리자 주문 > 여러곳 배송 > 배송지별 상룸 목록 조회 - * @param goodsVOs + * @param paramList * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectMultiDlvylcGoodsList") - public ResponseEntity selectMultiDlvylcGoodsList(@RequestBody List> goodsVOs) { + @RequestMapping(value="/selectMultiDlvylcGoodsList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMultiDlvylcGoodsList(@RequestBody List paramList) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOMultiDlvylcGoodsList", goodsVOs), - ReplyFromResrc::getReply + if("01".equals(user.getSysDvCd())){ + for(DataMap param:paramList) { + param.put("sopmalCd",user.getSopmalCd()); + } + } + + Map content = service.selectBOMultiDlvylcGoodsList(paramList); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOMultiDlvylcGoodsList", goodsVOs), +// ReplyFromResrc::getReply +// ); } /** * 관리자 주문 > 여러곳 배송 > 배송지별 배송지 쿠폰 목록 조회 - * @param param + * @param paramList * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectMultiDlvylcCouponList") - public ResponseEntity selectMultiDlvylcCouponList(@RequestBody List> param) { + @RequestMapping(value="/selectMultiDlvylcCouponList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMultiDlvylcCouponList(@RequestBody List paramList) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + for(DataMap param:paramList){ + param.put("sopmalCd", user.getSopmalCd()); + } + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOMultiDlvylcCouponList", param), - ReplyFromResrc::getReply + Map content = service.selectMultiDlvylcCouponList(paramList); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOMultiDlvylcCouponList", param), +// ReplyFromResrc::getReply +// ); } /** @@ -463,13 +1040,26 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectCartCouponList") - public ResponseEntity selectCartCouponList(@RequestBody HashMap param, HttpSession session) { + @RequestMapping(value="/selectCartCouponList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectCartCouponList(@RequestBody DataMap param, HttpSession session) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOCartCouponList", param), - ReplyFromResrc::getReply + if("01".equals(user.getSysDvCd())){ + param.put("sopmalCd",user.getSopmalCd()); + } + + Map content = service.selectCartCouponList(param); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOCartCouponList", param), +// ReplyFromResrc::getReply +// ); } /** @@ -478,14 +1068,47 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectSetleExpectAmt") - public ResponseEntity selectSetleAmt(@RequestBody HashMap param, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value="/selectSetleExpectAmt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSetleAmt(@RequestBody DataMap param, @CookieValue(value = "authSopmalCd") String authSopmalCd) { param.put("sopmalCd", authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOSetleExpectAmt", param), - ReplyFromResrc::getReply + if("01".equals(user.getSysDvCd())){ + param.put("sopmalCd",user.getSopmalCd()); + } + + // Map content = service.selectSetleExpectAmt(param); + + Map content = new HashMap<>(); + try { + content = ordrService.selectSetleExpectAmt(param); + } catch (WnbtRestException wre) { + log.debug("결제예정금액 purchs 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("결제예정금액 purchs e"); + log.error(e.getMessage(), e); + content = new HashMap<>() {{ + put("status", "1"); + put("message", "예기치 못한 오류가 발생하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOSetleExpectAmt", param), +// ReplyFromResrc::getReply +// ); } /** @@ -494,29 +1117,55 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectPrsntList") - public ResponseEntity selectPrsntList(@RequestBody List> paramList) { + @RequestMapping(value="/selectPrsntList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectPrsntList(@RequestBody List paramList) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + for(DataMap param :paramList){ + param.put("sopmalCd", user.getSopmalCd()); + } + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOPrsntList", paramList), - ReplyFromResrc::getReply + Map content = service.selectPrsntList(paramList); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBOPrsntList", paramList), +// ReplyFromResrc::getReply +// ); } /** * 관리자 주문 > 입금은행 목록 조회 - * @param param + * @param ordrVO * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectRcpmnyAcntnbList") - public ResponseEntity selectRcpmnyAcntnbList(@RequestBody HashMap param, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - param.put("sopmalCd", authSopmalCd); + @RequestMapping(value="/selectRcpmnyAcntnbList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectRcpmnyAcntnbList(@RequestBody BOOrdrVO ordrVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + ordrVO.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + ordrVO.setSopmalCd(user.getSopmalCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBORcpmnyAcntnbList", param), - ReplyFromResrc::getReply + Map content = service.selectRcpmnyAcntnbList(ordrVO); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/selectBORcpmnyAcntnbList", param), +// ReplyFromResrc::getReply +// ); } /** @@ -526,16 +1175,77 @@ public class CrmOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertOrder") - public String insertOrder(ModelMap model, @RequestBody HashMap param, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String insertOrder(ModelMap model, @RequestBody DataMap param, @CookieValue(value = "authSopmalCd") String authSopmalCd) { param.put("sopmalCd", authSopmalCd); - //결제플랫폼 구분코드 param.put("deviceType", "P"); log.debug("param.get(deviceType) {}", param.get("deviceType")); - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/insertBOMngrOrdrRegist",param) - ); + Map resultMap = null; + + try { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + resultMap = orderService.insertMngrOrdrRegist(param, user); + + String ordrTyCd = (String) param.get("ordrTyCd"); + + if ("01".equals(ordrTyCd)) { + + //회원, 기본배송지 설정 안할 시 기본배송지 자동등록 + LinkedHashMap purchsr = (LinkedHashMap) param.get("purchsr"); // 구매자 정보 + if (StringUtils.hasText((String) purchsr.get("mbrId"))) { // 회원 + if ("MM".equals(user.getMbrDvCd())) { //관리자 + int mbrInnb = (int) purchsr.get("mbrInnb"); + String mbrDvCd = (String) purchsr.get("mbrDvCd"); + if (mbrInnb > 0) { + DataMap mbrInfo = new DataMap(); + mbrInfo.put("mbrInnb", mbrInnb); + mbrInfo.put("mbrDvCd", mbrDvCd); + String at = ordrService.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); + + ordrService.insertBODlvylcRegist(crmDlvylcVO); + } + } + } + } + + } + + } catch (WnbtRestException wre) { + log.error("insertBOMngrOrdrRegist wre :", wre); + resultMap = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + + } catch (Exception e) { + log.error("insertBOMngrOrdrRegist e :", e); + resultMap = new HashMap<>() {{ + put("status", "1"); + put("message", "주문등록이 실패하였습니다.\n관리자에게 문의하시기 바랍니다."); + }}; + } + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/purchs/insertBOMngrOrdrRegist",param) +// ); model.addAttribute("data", resultMap); @@ -594,7 +1304,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertSetle") public String insertSetle(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordrInnb")); payVO.setAmount(request.getParameter("setleAmt")); @@ -609,11 +1319,48 @@ public class CrmOrdrController { payVO.setSetleTyCd(request.getParameter("setleTyCd")); payVO.setSetlerNm(request.getParameter("ordrrNm")); - 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 = boOrdrService.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); String sleEnvrnCd = StringUtil.isNullToString(request.getParameter("sleEnvrnCd")); @@ -633,7 +1380,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertSetleTm") public String insertSetleTm(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordrInnb")); payVO.setAmount(request.getParameter("setleAmt")); @@ -648,11 +1395,48 @@ public class CrmOrdrController { payVO.setSetleTyCd(request.getParameter("setleTyCd")); payVO.setSetlerNm(request.getParameter("ordrrNm")); - 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 = boOrdrService.insertSetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertSetleTm : 무통장 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertSetleTm : 무통장 결제 정보 등록 : 실패"); + 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" +// ); log.info("/insertSetleTm 결과 확인 {}", model.getAttribute("data")); model.addAttribute("paramVO", payVO); @@ -675,7 +1459,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertGcpaySetle") public String insertGcpaySetle(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("orderId")); payVO.setPaymentKey(request.getParameter("paymentKey")); @@ -691,11 +1475,57 @@ public class CrmOrdrController { payVO.setSetlerNm(request.getParameter("ordrrNm")); payVO.setModGubun("brandPay"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossSetle", 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 = boOrdrService.insertTossSetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertGcpaySetle : TOSS 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertGcpaySetle : 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); + + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); return "crm/ordr/OrdrRspnsPayR"; @@ -710,7 +1540,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertKcpSetle") public String insertKcpSetle(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordr_idxx")); payVO.setAmount(request.getParameter("good_mny")); @@ -729,11 +1559,56 @@ public class CrmOrdrController { payVO.setSetleTyCd(request.getParameter("setle_ty_cd")); payVO.setSetlerNm(request.getParameter("buyr_name")); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpSetle", 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 = boOrdrService.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); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpSetle", payVO), +// model, +// "data" +// ); //에스크로 정보추가 /*payVO.setEscwUsed(request.getParameter("escw_used")); payVO.setPayMod(request.getParameter("pay_mod")); @@ -765,7 +1640,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertKcpSetleTm") public String insertKcpSetleTm(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordr_idxx")); payVO.setAmount(request.getParameter("good_mny")); @@ -784,11 +1659,56 @@ public class CrmOrdrController { payVO.setSetleTyCd(request.getParameter("setle_ty_cd")); payVO.setSetlerNm(request.getParameter("buyr_name")); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpSetle", 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 = boOrdrService.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); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpSetle", payVO), +// model, +// "data" +// ); //에스크로 정보추가 /*payVO.setEscwUsed(request.getParameter("escw_used")); payVO.setPayMod(request.getParameter("pay_mod")); @@ -822,7 +1742,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertTossSetle") public String insertTossSetle(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("orderId")); payVO.setPaymentKey(request.getParameter("paymentKey")); @@ -838,11 +1758,56 @@ public class CrmOrdrController { payVO.setSetlerNm(request.getParameter("ordrrNm")); payVO.setModGubun("toss"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossSetle", 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 = boOrdrService.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); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); String sleEnvrnCd = StringUtil.isNullToString(request.getParameter("sleEnvrnCd")); @@ -862,7 +1827,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertTossSetleTm") public String insertTossSetleTm(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("orderId")); payVO.setPaymentKey(request.getParameter("paymentKey")); @@ -878,11 +1843,56 @@ public class CrmOrdrController { payVO.setSetlerNm(request.getParameter("ordrrNm")); payVO.setModGubun("toss"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossSetle", 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 = boOrdrService.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); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); log.info("/insertTossSetleTm 결과 확인 {}", model.getAttribute("data")); String sleEnvrnCd = StringUtil.isNullToString(request.getParameter("sleEnvrnCd")); @@ -903,7 +1913,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertTosspaySetle") public String insertTosspaySetle(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("orderId")); payVO.setPaymentKey(request.getParameter("paymentKey")); @@ -920,11 +1930,47 @@ public class CrmOrdrController { if("tosspay".equals(payVO.getPgCmpnyNm())) payVO.setModGubun("tosspay"); //토스페이 else payVO.setModGubun("easyPay"); //네이버페이, 카카오페이 - 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 = boOrdrService.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 "crm/ordr/OrdrRspnsPayR"; @@ -939,7 +1985,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertKcpKeyInSetle") public String insertKcpKeyInSetle(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordr_idxx")); payVO.setOrderName(request.getParameter("good_name")); @@ -969,11 +2015,54 @@ public class CrmOrdrController { payVO.setSetleTyCd(request.getParameter("setle_ty_cd")); payVO.setSetlerNm(request.getParameter("buyr_name")); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpKeyInSetle", 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 = boOrdrService.insertKcpKeyInSetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertBOKcpKeyInSetle : KCP 카드 수기 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertBOKcpKeyInSetle : 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); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpKeyInSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); String sleEnvrnCd = StringUtil.isNullToString(request.getParameter("sleEnvrnCd")); @@ -993,7 +2082,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertKcpKeyInSetleTm") public String insertKcpKeyInSetleTm(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordr_idxx")); payVO.setOrderName(request.getParameter("good_name")); @@ -1024,11 +2113,54 @@ public class CrmOrdrController { payVO.setSetlerNm(request.getParameter("buyr_name")); payVO.setAmount(request.getParameter("good_mny")); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpKeyInSetle", 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 = boOrdrService.insertKcpKeyInSetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertBOKcpKeyInSetle : KCP 카드 수기 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertBOKcpKeyInSetle : 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); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOKcpKeyInSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); log.info("/insertKcpKeyInSetleTm 결과 확인 {}", model.getAttribute("data")); String sleEnvrnCd = StringUtil.isNullToString(request.getParameter("sleEnvrnCd")); @@ -1049,7 +2181,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertTossKeyInSetle") public String insertTossKeyInSetle(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordrInnb")); payVO.setOrderName(request.getParameter("goodsNm")); @@ -1082,11 +2214,56 @@ public class CrmOrdrController { payVO.setSetleTyCd(request.getParameter("setleTyCd")); payVO.setSetlerNm(request.getParameter("ordrrNm")); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossKeyInSetle", 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"); + } + payVO.setRegusr(user.getUserInnb()); + + Map content; + + try { + content = boOrdrService.insertTossKeyInSetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertBOTossKeyInSetle : TOSSPAY 카드 수기 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertBOTossKeyInSetle : TOSSPAY 카드 수기 결제 정보 등록 : 실패"); + 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); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossKeyInSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); String sleEnvrnCd = StringUtil.isNullToString(request.getParameter("sleEnvrnCd")); @@ -1107,7 +2284,7 @@ public class CrmOrdrController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertTossKeyInSetleTm") public String insertTossKeyInSetleTm(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); payVO.setOrderId(request.getParameter("ordrInnb")); payVO.setOrderName(request.getParameter("goodsNm")); @@ -1140,11 +2317,56 @@ public class CrmOrdrController { payVO.setSetleTyCd(request.getParameter("setleTyCd")); payVO.setSetlerNm(request.getParameter("ordrrNm")); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossKeyInSetle", 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"); + } + payVO.setRegusr(user.getUserInnb()); + + Map content; + + try { + content = boOrdrService.insertTossKeyInSetle(payVO); + } catch (WnbtRestException wre) { + log.info("insertBOTossKeyInSetle : TOSSPAY 카드 수기 결제 정보 등록 : 실패 WnbtRestException"); + log.error(wre.getMessage(), wre); + content = new HashMap<>() {{ + put("status", "1"); + put("message", wre.getMessage()); + }}; + } catch (Exception e) { + log.info("insertBOTossKeyInSetle : TOSSPAY 카드 수기 결제 정보 등록 : 실패"); + 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); + } + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOTossKeyInSetle", payVO), +// model, +// "data" +// ); model.addAttribute("paramVO", payVO); log.info("/insertTossKeyInSetleTm 결과 확인 {}", model.getAttribute("data")); String sleEnvrnCd = StringUtil.isNullToString(request.getParameter("sleEnvrnCd")); @@ -1162,10 +2384,10 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGcpayToken") + @RequestMapping(value="/selectGcpayToken", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectGcpayToken( @CookieValue(value = "authSopmalCd") String authSopmalCd, ModelMap model, HttpServletRequest request, HttpSession session) throws JsonProcessingException { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); //리다이렉트 URL 뒤에는 다음과 같이 임시 인증 코드와 customerKey가 반환됩니다. //code: Access Token 발급에 필요한 Authorization Code(임시 인증 코드)입니다. @@ -1195,11 +2417,34 @@ public class CrmOrdrController { return ResponseEntity.status(HttpStatus.OK).body(response);*/ + Map content; - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMngGcpayToken",payVO), - ReplyFromResrc::getReply + log.info("관리자 토큰 발급 payVo {} ", payVO); + + try { + content = boOrdrService.selectGcpayToken(payVO); + content.put("mbrInnb", payVO.getMbrInnb()); + } 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/selectBOMngGcpayToken",payVO), +// ReplyFromResrc::getReply +// ); } /** @@ -1208,13 +2453,36 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGcpayCardPromtns") + @RequestMapping(value="/selectGcpayCardPromtns", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectGcpayCardPromtns(ModelMap model, HttpServletRequest request, HttpSession session) { + Map content; + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + String sopmalCd = user.getSopmalCd(); // 쇼핑몰코드 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectGcpayCardPromtns", new HashMap<>()), - ReplyFromResrc::getReply + try { + content = boOrdrService.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 +// ); } /** @@ -1222,15 +2490,15 @@ public class CrmOrdrController { * @param request * @return ResponseEntity */ - @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectRegisteredCards") - public ResponseEntity selectRegisteredCard(ModelMap model, HttpServletRequest request, HttpSession session) { - - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectRegisteredCards", new HashMap<>()), - ReplyFromResrc::getReply - ); - } +// @Policy(AuthPolicy.RESTRICTED) +// @RequestMapping(value="/selectRegisteredCards") +// public ResponseEntity selectRegisteredCard(ModelMap model, HttpServletRequest request, HttpSession session) { +// +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectRegisteredCards", new HashMap<>()), +// ReplyFromResrc::getReply +// ); +// } /** @@ -1240,10 +2508,10 @@ public class CrmOrdrController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGcpayMethod") + @RequestMapping(value="/selectGcpayMethod", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectGcpayMethod(ModelMap model, HttpServletRequest request, HttpSession session) { - PayVO payVO = new PayVO(); + BOPayVO payVO = new BOPayVO(); if(request.getSession().getAttribute("gcpay_token")!=null){ payVO.setSessionToken(request.getSession().getAttribute("gcpay_token").toString()); }else{ @@ -1252,10 +2520,41 @@ public class CrmOrdrController { 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 = boOrdrService.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 +// ); } @@ -1267,12 +2566,15 @@ public class CrmOrdrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectMngrOrdrCompt") - 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 = boOrdrService.selectOrdrCompt(ordrVO); + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOOrdrCompt", ordrVO), +// model, +// "data" +// ); CrmCnsltVO vo = new CrmCnsltVO(); vo.setMbrInnb(ordrVO.getMbrInnb()); vo.setMbtlnb(ordrVO.getOrdrrMbtlnb()); @@ -1283,5 +2585,98 @@ public class CrmOrdrController { /* #################################### 관리자 주문 종료 #################################### */ + + /** + * 주문 결제 후 처리 + * @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 { + boOrdrService.updateInstcSle(payVO); + } catch (Exception e) { + log.error("{} 부정판매 식별 및 등록 실패!", payVO.getOrderId()); + } + + // 4. 현금영수증 발급 ================================================ + try { + // 무통장일 경우 타도 되는지 확인 필요 + boOrdrService.updateCshRciptRegist(payVO); + } catch (Exception e) { + log.error("{} 실시간계좌이체 현금영수증 발급 실패!", payVO.getOrderId()); + } + + // 5. 회원 사이트정보 갱신 ============================================================== + try { + boOrdrService.updateMbrSiteUpdtOrdrRefund(payVO); + } catch (Exception e) { + log.error("{} 회원 사이트정보 갱신 실패!", payVO.getOrderId()); + } + + // 6. 선물하기 메세지 ============================================================== + try { + boOrdrService.selectBOPresentOrdrSmsInfoInqire(payVO); + } catch (Exception e) { + log.error("{} 선물하기 메세지 발송 실패!", payVO.getOrderId()); + } + + // 7.장바구니 비우기 =============================================================== + try { + boOrdrService.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); + } + + } + + } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/app/vo/BOAppMbrDvcVO.java b/src/main/java/com/wb/domainserver/domain/gcone/app/vo/BOAppMbrDvcVO.java index 5ace1c40..6cec1fe1 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/app/vo/BOAppMbrDvcVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/app/vo/BOAppMbrDvcVO.java @@ -56,5 +56,11 @@ public class BOAppMbrDvcVO { private String deviceOsVer; /** 앱 버전 */ private String deviceAppVer; + /** 딥링크 타입 */ + private String linkType; + /** 혜택 구분 코드 */ + private String bnfDvCd; + /** 스토어 고유번호 */ + private String strInnb; } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/bbs/cm/vo/BOCmVO.java b/src/main/java/com/wb/domainserver/domain/gcone/bbs/cm/vo/BOCmVO.java index 5a1a9bfa..322c3319 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/bbs/cm/vo/BOCmVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/bbs/cm/vo/BOCmVO.java @@ -40,9 +40,9 @@ public class BOCmVO extends AbstractVO { * 작성자ID */ private String regusrId; - /** - * 작성자명 - */ + /** 작성자명 */ + @NotBlank(message = "작성자명") + @Length(min = 0, max = 25, message = "작성자명") private String regusrNm; /** * DEPTH diff --git a/src/main/java/com/wb/domainserver/domain/gcone/bbs/cnslt/vo/BOCnsltVO.java b/src/main/java/com/wb/domainserver/domain/gcone/bbs/cnslt/vo/BOCnsltVO.java index f66d03db..5aeccac6 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/bbs/cnslt/vo/BOCnsltVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/bbs/cnslt/vo/BOCnsltVO.java @@ -2,6 +2,7 @@ package com.wb.domainserver.domain.gcone.bbs.cnslt.vo; import com.wb.domainserver.domain.comm.vo.AbstractVO; +import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; @@ -57,6 +58,8 @@ public class BOCnsltVO extends AbstractVO{ private String cnsltCl; /** 관련주문번호 */ private String ordrNb; + /** 관련주문번호 */ + private String ordrInnb; /** 출고코드 */ private String dlivyInnb; /** 반품코드 */ @@ -72,21 +75,28 @@ public class BOCnsltVO extends AbstractVO{ /** 처리일시 */ private String procsDt; /** 상담내용 */ + @NotBlank(message="상담내용") private String cnsltCn; /** 전화구분코드 */ + @NotBlank(message="인콜/아웃콜") private String telnbDvCd; /** 대분류 */ + @NotBlank(message="대분류") private String lrgeCl; /** 중분류 */ + @NotBlank(message="중분류") private String middlCl; /** 소분류 */ private String smllCl; /** 녹취 key */ private String recrdKy; /** 전화번호 */ + @NotBlank(message="전화번호") private String telnb; - - + /** 회원명 이메일*/ + private String email; + + /** * 검색 */ @@ -125,5 +135,9 @@ public class BOCnsltVO extends AbstractVO{ /*crm인지, 통합게시판인지 판단 => bo join에 씀*/ private String crmAt; - + + private String ctiAt; + + + } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/bbs/gnrlbbsctt/vo/BOGnrlbbscttVO.java b/src/main/java/com/wb/domainserver/domain/gcone/bbs/gnrlbbsctt/vo/BOGnrlbbscttVO.java index 43bcdd87..cefae1f9 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/bbs/gnrlbbsctt/vo/BOGnrlbbscttVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/bbs/gnrlbbsctt/vo/BOGnrlbbscttVO.java @@ -1,6 +1,9 @@ package com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.vo; import com.wb.domainserver.domain.comm.vo.AbstractVO; +import com.wb.domainserver.domain.sopmal.mpage.act.vo.BbsFormAnswVO; +import com.wb.domainserver.domain.sopmal.mpage.act.vo.BbsFormVO; +import com.wb.domainserver.domain.sopmal.mpage.act.vo.DelInfoVO; import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; @@ -34,6 +37,14 @@ public class BOGnrlbbscttVO extends AbstractVO { private BigInteger parntsBbscttInnb; /** 게시판ID */ private String bbsId; + /** 게시판 고유번호 */ + private Integer bbsInnb; + /** 판매상품 고유번호 */ + private Integer sleGoodsInnb; + /** 주문상품고유번호 */ + private Integer ordrGoodsInnb; + /** 주문상품옵션구분코드 */ + private String ordrGoodsOptnDvCd; /** 회원고유번호 */ private Integer mbrInnb; @@ -49,6 +60,10 @@ public class BOGnrlbbscttVO extends AbstractVO { private String regusrNm; /*관리자 명*/ private String mngrNm; + /** (등록아이디) */ + private String mbrid; + /** (등록자명) */ + private String mbrNm; /** 비밀번호 */ @Length(min = 0, max = 20, message = "비밀번호") private String password; @@ -62,8 +77,14 @@ public class BOGnrlbbscttVO extends AbstractVO { private String cn; /** 조회건수 */ private Integer inqireCnt; + /** 댓글건수 */ + private Integer cmCnt; /** 댓글사용여부 */ private String cmUseAt; + /** 평균점수 */ + private Integer avrgScore; + /** 에디터 사용여부 */ + private String editrUseAt; /*추천,비추천 구분*/ private String recomendDv; /** 추천건수 */ @@ -130,6 +151,8 @@ public class BOGnrlbbscttVO extends AbstractVO { private String useAt; /** 삭제작업자 */ private Integer delusr; + /** 삭제여부 */ + private String delAt; /** 삭제일시 */ private Date delDt; @@ -288,6 +311,8 @@ public class BOGnrlbbscttVO extends AbstractVO { private BigInteger ordrInnb; /*상품고유번호배열*/ private List goodsInnbArr; + /*주문고유번호*/ + private String[] ordrInnbArr; /*주문상품옵션고유번호*/ private String ordrGoodsOptnInnb; /*주문상품옵션고유번호 배열*/ @@ -350,6 +375,9 @@ public class BOGnrlbbscttVO extends AbstractVO { /*sms 관련*/ private String bbscttSndngDvCd; + /** 노출등록자이름 */ + private Integer expsrRegusrNm; + /** * 리뷰 */ @@ -419,4 +447,73 @@ public class BOGnrlbbscttVO extends AbstractVO { private String cnScript; /*서브페이지 고객센터 표시 여부*/ private String cscAt; + + + + + + + + + // 추가 답변 내용 (FM_BOARD_ADDITM) + private List bbsFormAnswList; + + //게시글 정보 (FM_BOARDMANAGER) + /** 비밀글 사용여부 */ + private Boolean secretBbcttUseAt; + + // 상품정보 (fm_shop_goods) + /** 상품 이름 */ + private String goodsNm; + /** 상품 설명 */ + private String goodsDc; + /** 상품 간략설명 */ + private String srtDc; + /** 상품 가격 */ + private Integer slePric; + + // 상품이미지 정보(fm_goods_image) + /** 상품 이미지 위치 */ + private String img; + + // 리뷰 댓글정보(fm_boardcomment) + /** 댓글 고유번호*/ + private Integer cmInnb; + /** 댓글 등록자 구분 */ + private String commetRegusrDv; + /** 댓글 작성자 */ + private String commetMbrNm; + /** 댓글 작성자 아이디*/ + private String commetmbrId; + /** 댓글 ip*/ + private String commetIp; + /** 댓글 내용 */ + private String commetCn; + /** 댓글 등록일 */ + private String commetRegustDt; + + // 검색조건 + /** 검색어*/ + private String searchWord; + /** 비밀글 제외 여부*/ + private String serchSecrtBbscttUseAt; + /** 삭제글 제외 여부 */ + private String serchDelAt; + /** 사진포함 여부*/ + private String serchPhotoRvwAt; + /** 검색 시작일*/ + private String saerchStatrDate; + /** 검색 종료일*/ + private String saerchEndDate; + /** 세부항목 검색(내용 고유번호)*/ + private String[] searchFormItm; + /** 베스트 후기 포함 여부*/ + private String searchBstAt; + /** 네이버페이 포함 여부*/ + private String searchNpayAt; + /** 주문번호 검색*/ + private String searchOrderInnb; + /** 댓글 여부*/ + private String searchCommetAt; + } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/bbs/prom/vo/BOPromVO.java b/src/main/java/com/wb/domainserver/domain/gcone/bbs/prom/vo/BOPromVO.java index 5d775415..89622137 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/bbs/prom/vo/BOPromVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/bbs/prom/vo/BOPromVO.java @@ -73,4 +73,9 @@ public class BOPromVO { private int lastIndex; // 마지막 인덱스 private int recordCountPerPage; // 페이지당 레코드 수 private PaginationInfo paginationInfo; // 페이징 정보 -} \ No newline at end of file + + // 추가 유틸리티 필드 + private String joinYn; // 참여여부 (Y/N) - 조회용 + private String winYn; // 당첨여부 (Y/N) - 조회용 + +} \ No newline at end of file diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsVO.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsVO.java index 979da458..be7ec218 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsVO.java @@ -1,6 +1,8 @@ package com.wb.domainserver.domain.gcone.goods.goods.vo; import com.wb.domainserver.domain.comm.vo.AbstractVO; +import com.wb.domainserver.domain.sopmal.goods.vo.GoodsAdditionVO; +import com.wb.domainserver.domain.sopmal.goods.vo.GoodsIconVO; import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; @@ -534,4 +536,89 @@ public class BOGoodsVO extends AbstractVO { /*상품 순서*/ private int goodsOrdr; + /************************************* + * 상품 GOODS START + * **********************************/ + /** 가격대체문구사용여부 */ + private String pricRplcWordsUseAt; + /** 가격대체문구 */ + private String pricRplcWords; + /** 버튼대체문구사용여부 */ + private String buttonRplcWordsUseAt; + /** 버튼대체문구 */ + private String buttonRplcWords; + /** 버튼대체문구링크URL */ + private String buttonRplcWordsUrl; + /** 버튼대체문구링크구분 */ + private String buttonRplcWordsDvCd; + /** 결제수단설정 */ + private String setleMnSetupCd; + /** 예약상품재고수 */ + private long resveGoodsInvntryCnt; + /************************************* + * 상품 GOODS END + * **********************************/ + + + /************************************* + * 옵션 GOODS_OPTION START + * **********************************/ + /** 옵션 코드 */ + private String optnCd; + /** 옵션별가격 1 */ + private double acctoOptnPric1; + /** 옵션별가격 2 */ + private double acctoOptnPric2; + /** 옵션별가격 3 */ + private double acctoOptnPric3; + /** 옵션별가격 4 */ + private double acctoOptnPric4; + /** 마일리지적립구분코드 */ + private double mlgAccmlRt; + /** 구매자별 추가혜택여부 */ + private String purchsrAcctoAditBnefAt; + + /************************************* + * 옵션 GOODS_OPTION END + * **********************************/ + + /************************************* + * 배너 SHOP_GOODS_BANNER START + * **********************************/ + + /** 배너고유번호*/ + private long bannerInnb; + /************************************* + * 배너 SHOP_GOODS_BANNER END + * **********************************/ + + + private List goodsIconVOList; + + + /************************************* + * 카테고리연결 CATEGORY_LINK START + * **********************************/ + /** 카테고리연결상품고유번호 */ + private long ctgryGoodsEsntlNb; + + /************************************* + * 카테고리연결 CATEGORY_LINK END + * **********************************/ + /** 입력옵션 텍스트 */ + private String inputOptnText; + + /************************************* + * 상품수정로그 FM_GOODS_ADMIN_LOG END + * **********************************/ + + /** 회원ID */ + private String mbrId; + + /** 세션아이디 */ + private String sesionId; + + /** 옵션관계번호 배열 */ + private String[] optnRelateNbs; + } 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 45fb75a7..e669bc9e 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 @@ -1,6 +1,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 lombok.Data; import lombok.EqualsAndHashCode; @@ -311,4 +312,24 @@ public class BOMbrVO extends AbstractVO{ private List appnInnbArr; /*지정 메모*/ private String appnMemo; + + private String phone; + private String ctiAt; + private String record_key = ""; + + + + /**유입경로번호*/ + private String inflowCoursNb; + + /*id 변경 여부*/ + private String mbrIdChngAt; + /** 약정코드 */ + private String stplatInnb; + + /** 관리자 확인 비밀번호 */ + private String password; + + /*포스매장고유번호*/ + private String posStrInnb; } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/mbr/mlg/vo/BOMlgVO.java b/src/main/java/com/wb/domainserver/domain/gcone/mbr/mlg/vo/BOMlgVO.java index f9abbfbc..a6625625 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/mbr/mlg/vo/BOMlgVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/mbr/mlg/vo/BOMlgVO.java @@ -3,11 +3,13 @@ package com.wb.domainserver.domain.gcone.mbr.mlg.vo; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Date; +import java.util.List; import com.wb.domainserver.domain.comm.vo.AbstractVO; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; /** * @@ -66,6 +68,7 @@ public class BOMlgVO extends AbstractVO { /** 사용가능시작일시 */ private Date usePosblBgnDt; /** 사용가능종료일시 */ + @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX") private Date usePosblEndDt; /** 주문정보 */ private String ordrInfo; @@ -125,5 +128,18 @@ public class BOMlgVO extends AbstractVO { private String bnfRcvInnb; + /** 마일리지 유효기간 설정 여부*/ + private String validAt; + // 검색 + /** 검색_마일리지 적립 구분코드 */ + private String srchMlgAccmlDvCd; + /** 검색_브랜드명 */ + private String srchSopmalCd; + /** 검색_시작날짜 */ + private String srchStartDate; + /** 검색_종료날짜 */ + private String srchEndDate; + /** 검색_마일리지 적립 구분 */ + private List srchMlgAccmlDv; } \ No newline at end of file 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 9217bc08..d13639ed 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 @@ -4,8 +4,10 @@ import java.util.Date; import com.wb.domainserver.domain.comm.vo.AbstractVO; +import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; +import org.hibernate.validator.constraints.Length; @Data @EqualsAndHashCode(callSuper = false) @@ -20,27 +22,36 @@ public class BOCrmDlvylcVO extends AbstractVO{ private Integer mbrInnb; /**회원구분코드*/ private String mbrDvCd; - /** 배송지설명내용 */ + /** 배송지설명내용 */ + @NotBlank(message = "배송지 설명") + @Length(min=1, max=67) private String dlvylcDcCn; /** 받는사람명 */ + @NotBlank(message = "받으시는 분") + @Length(min=1, max=13) private String recpntNm; + /** 전화번호 */ + //private String telnb; /** 휴대폰번호 */ + @NotBlank(message = "휴대전화번호") private String mbtlnb; private String telnb; /** 우편번호 */ + @NotBlank(message = "우편번호") + @Length(min=1, max=5) private String zip; /** 도로명,지번 구분*/ private String adresDv; /** 도로명 or 지번 주소 */ private String adres; /** 지번주소 */ - private String lnbAdres; + private String lnbAdres = ""; /** 도로명주소 */ - private String rnmAdres; + private String rnmAdres = ""; /** 상세주소 */ private String dtlAdres; /** 기본배송지여부 */ - private String dftDlvylcAt; + private String dftDlvylcAt = "N"; /** 최근배송지여부 */ private String recentDlvylcAt; /** popUp 여부 확인 */ @@ -51,4 +62,11 @@ public class BOCrmDlvylcVO extends AbstractVO{ private String callbackNm; /*서버 구분*/ private String serverDv; + /**쇼핑몰코드 */ + private String sopmalCd; + /*녹취키*/ + private String customer_record_key; + + /* formId */ + private String formId; } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrSrchVO.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrSrchVO.java index 8e7b3bf6..7705a890 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrSrchVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/vo/BOOrdrSrchVO.java @@ -1,6 +1,7 @@ package com.wb.domainserver.domain.gcone.ordr.ordr.vo; import com.wb.domainserver.domain.comm.vo.AbstractVO; +import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; @Data @@ -20,9 +21,11 @@ public class BOOrdrSrchVO extends AbstractVO{ private String srchDate; /**검색 시작일*/ + @NotBlank(message = "시작일") private String srchStartDate; /**검색 종료일*/ + @NotBlank(message = "종료일") private String srchEndDate; /** 주문상태코드리스트 @@ -101,4 +104,5 @@ public class BOOrdrSrchVO extends AbstractVO{ private String reprsntBrand; // 입점사 브랜드 private String excelCoulms; // 엑셀다운로드 조회 컬럼 + private String ordrInnb; // 주문고유번호 } 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 09a326d8..5792a0da 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 @@ -305,6 +305,8 @@ public class BOPayVO extends AbstractVO { /** 세션 gcpay token */ private String sessionToken; + private String mbtlnb; + /** 토스 배송정보 등록 시 사용하는 택배사 코드 */ public enum DLVCOMPCODE { DLVCOMPCODE01("code0", "CJ"), //CJ GLS diff --git a/src/main/java/com/wb/domainserver/domain/gcone/promtn/coupon/vo/BODwldCouponVO.java b/src/main/java/com/wb/domainserver/domain/gcone/promtn/coupon/vo/BODwldCouponVO.java index 3b2b8ccc..ee0e605f 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/promtn/coupon/vo/BODwldCouponVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/promtn/coupon/vo/BODwldCouponVO.java @@ -248,5 +248,7 @@ public class BODwldCouponVO extends AbstractVO { /** 웹 쿠폰 이벤트 광고 수신 예외 플래그 **/ private String eventYn; - + + /** 사용처구분 */ + private String useplcDv; } diff --git a/src/main/java/com/wb/domainserver/domain/itrnt/str/vo/BOItrntStrVO.java b/src/main/java/com/wb/domainserver/domain/itrnt/str/vo/BOItrntStrVO.java index 603139fc..a8505d8a 100644 --- a/src/main/java/com/wb/domainserver/domain/itrnt/str/vo/BOItrntStrVO.java +++ b/src/main/java/com/wb/domainserver/domain/itrnt/str/vo/BOItrntStrVO.java @@ -59,12 +59,5 @@ public class BOItrntStrVO extends AbstractVO { /*대표브랜드*/ private String reprsntBrand; - - - - - - - - + private String serverDv; } diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/app/controller/AppController.java b/src/main/java/com/wb/domainserver/domain/sopmal/app/controller/AppController.java index 0a2571c8..ca61d360 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/app/controller/AppController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/app/controller/AppController.java @@ -3,7 +3,14 @@ package com.wb.domainserver.domain.sopmal.app.controller; import java.util.HashMap; import java.util.Map; +import com.wb.domainserver.domain.gcone.app.service.BOAppService; +import com.wb.domainserver.domain.gcone.app.service.BOFCMNotificationService; +import com.wb.domainserver.domain.gcone.app.vo.BOAppMbrDvcVO; +import com.wb.domainserver.domain.gcone.bnft.bnftmngr.vo.BOBnftMngrPushVO; +import com.wb.domainserver.response.WnbtResponseBody; +import com.wb.domainserver.security.authentication.AnonymousUser; 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; @@ -55,23 +62,51 @@ public class AppController { @Autowired private WnbtWebClientResponseHandler responseHandler; - /** + @Autowired + private BOAppService service; + + @Autowired + private BOFCMNotificationService fcmservice; + + /** * 앱 디바이스 정보 입력 * @param vo * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/insertAppDeviceInfo", method = RequestMethod.POST) - public ResponseEntity insertAppDeviceInfo(HttpServletRequest request, @RequestBody AppMbrDvcVO vo) { + @RequestMapping(value = "/insertAppDeviceInfo", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertAppDeviceInfo(HttpServletRequest request, @RequestBody BOAppMbrDvcVO vo) { log.debug("insertAppMbrDvcInfo AppMbrDvcVO ::: {}", vo); - + HttpSession session = request.getSession(); session.setAttribute("appDvcId", vo.getDeviceId()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/app/insertBOAppDeviceInfo", vo), - ReplyFromResrc::getReply - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + vo.setSopmalCd(user.getSopmalCd()); + } + //log.debug("@@@@@@@@@@ BOAppMbrDvcVO ::: {}", vo); + + Integer dplct = service.selectBOAppMbrDvcDplct(vo); + + Map message = new HashMap<>(); + + if(dplct < 1) { + message = service.insertBOAppDeviceInfo(vo); + } else { + // 중복된 deviceId가 있을 경우, 디바이스정보를 update한다. + message = service.updateBOAppDeviceInfo(vo); + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/app/insertBOAppDeviceInfo", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -80,17 +115,44 @@ public class AppController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/insertAppMbrDvcInfo", method = RequestMethod.POST) - public ResponseEntity insertAppMbrDvcInfo(HttpServletRequest request, @RequestBody AppMbrDvcVO vo) { + @RequestMapping(value = "/insertAppMbrDvcInfo", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertAppMbrDvcInfo(HttpServletRequest request, @RequestBody BOAppMbrDvcVO vo) { log.debug("insertAppMbrDvcInfo AppMbrDvcVO ::: {}", vo); HttpSession session = request.getSession(); session.setAttribute("appDvcId", vo.getDeviceId()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/app/insertBOAppMbrDvcInfo", vo), - ReplyFromResrc::getReply - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + vo.setSopmalCd(user.getSopmalCd()); + } + if (user.getUserInnb() > 0) { + vo.setMbrInnb(Long.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + vo.setMbrId(user.getMbrId()); + } + //log.debug("@@@@@@@@@@ BOAppMbrDvcVO ::: {}", vo); + + Integer dplct = service.selectBOAppMbrDvcDplct(vo); + + Map message = new HashMap<>(); + + if(dplct < 1) { + message = service.insertBOAppMbrDvcInfo(vo); + } else { + // 중복된 deviceId가 있을 경우, 디바이스 및 회원정보를 update한다. + message = service.updateBOAppMbrDvcInfo(vo); + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/app/insertBOAppMbrDvcInfo", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -125,23 +187,49 @@ public class AppController { /** * 푸시알림 테스트 발송 * - * @param BnftPushVO + * @param vo * @param model * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/procTestPushNotification") - public ResponseEntity procTestPushNoti(@RequestBody AppPushVO vo, ModelMap model, HttpSession session){ + @RequestMapping(value = "/procTestPushNotification", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity procTestPushNoti(@RequestBody BOBnftMngrPushVO vo, ModelMap model, HttpSession session){ vo.setSopmalCd(MemberJwtContextHolder.getMemberInfo().getSopmalCd()); String pushData = dataToJson(vo.getDataUrl(), vo.getDataKey(), vo.getDataExt()); vo.setPushData(pushData); - - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/app/procPushNotificationImsi",vo), - ReplyFromResrc::getReply + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + vo.setSopmalCd(user.getSopmalCd()); + } + //Long[] arrMbrDeviceInnb = vo.getArrMbrDeviceInnb(); + String[] arrFcmToken = vo.getArrFcmToken(); + + log.debug("@@@@@@@@@@ BOBnftMngrPushVO ::: {}", vo); + + Map message = new HashMap<>(); + for (int i = 0; i < arrFcmToken.length; i++) { + //Long mbrDeviceInnb = arrMbrDeviceInnb[i]; + vo.setFcmToken(arrFcmToken[i]); + + // FCM 전송 로직 + String resultCode = fcmservice.sendPush(vo); + + //result.put(mbrDeviceInnb.toString(), resultCode); + message.put("result", resultCode); + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/app/procPushNotificationImsi",vo), +// ReplyFromResrc::getReply +// ); } public String dataToJson(String str1, String str2, String str3) { diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/csc/controller/CscController.java b/src/main/java/com/wb/domainserver/domain/sopmal/csc/controller/CscController.java index 37ce704b..4f51786e 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/csc/controller/CscController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/csc/controller/CscController.java @@ -1,10 +1,34 @@ package com.wb.domainserver.domain.sopmal.csc.controller; import com.wb.domainserver.common.msg.GconeMessageSource; -import com.wb.domainserver.domain.sopmal.csc.vo.CmVO; +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.gcone.bbs.bbs.service.BOBbsService; +import com.wb.domainserver.domain.gcone.bbs.bbs.vo.BOBbsVO; +import com.wb.domainserver.domain.gcone.bbs.cm.service.BOCmService; +import com.wb.domainserver.domain.gcone.bbs.cm.vo.BOCmVO; +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.mlg.service.BOMlgService; +import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOMlgVO; +import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService; +import com.wb.domainserver.domain.gcone.ordr.npay.service.BoApiService; +import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO; +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.sopmal.csc.vo.GnrlBbscttVO; import com.wb.domainserver.exception.WnbtRestException; +import com.wb.domainserver.response.ApiResponse; import com.wb.domainserver.response.WnbtResponse; +import com.wb.domainserver.response.WnbtResponseBody; import com.wb.domainserver.response.WnbtWebClientResponseHandler; import com.wb.domainserver.security.authentication.AnonymousUser; import com.wb.domainserver.security.authentication.MemberJwtContextHolder; @@ -12,6 +36,7 @@ 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.cookie.CookieUtil; +import com.wb.domainserver.util.dataaccess.DataMap; import com.wb.domainserver.util.file.service.FileStorageService; import com.wb.domainserver.util.string.StringUtil; import com.wb.domainserver.util.util.Util; @@ -19,15 +44,22 @@ import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; 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.ObjectUtils; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; +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.security.SecureRandom; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -67,6 +99,34 @@ public class CscController { /** 파일 업로드 */ @Autowired private FileStorageService filestore; + + @Autowired + private BOGnrlbbscttService service; + @Autowired + private BOBbsService bbsService; + @Autowired + private BOMlgService mlgService; + @Autowired + private BOMaSopmalService sopmalService; + @Autowired + private BONbkkService nbkkService; + @Autowired + private BOGoodsService goodsService; + @Autowired + private BOMssageService boMssageService; + @Autowired + private BOOrdrService boOrdrService; + @Autowired + private BOMbrService boMbrService; + @Autowired + private BOCommonService boCommonService; + @Autowired + private BoApiService boApiService;/*npay service*/ + @Autowired + private PaginationProperties paginationProperties; + @Autowired + private BOCmService boCmService; + /************************************************************ 고객센터 목록 폼 * **********************************************************/ @@ -77,14 +137,65 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectCscMainForm") - public String selectCscMainForm(HttpServletRequest request, ModelMap model, GnrlBbscttVO bbsctt) { + public String selectCscMainForm(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO bbsctt) { bbsctt.setServerDv("sopmal"); + //공지사항과 자주묻는 질문 게시글 조회 , 고객센터 정보 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOCscMainForm", bbsctt), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + /*faq, 공지사항 페이징*/ + bbsctt.setPageIndex(1); + bbsctt.setPageUnit(5); + + // 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()); + + // 공지사항, faq 조회 + Map cscBbsctt = new HashMap(); + cscBbsctt = service.selectBOCscMainForm(bbsctt); + + // 공지사항 게시판 설정 정보 조회 + BOBbsVO bbsVO = new BOBbsVO(); + // bbsVO에 쇼핑몰코드, 해당 게시판 set + bbsVO.setSopmalCd(bbsctt.getSopmalCd()); + bbsVO.setBbsId("notice"); /*추후 게시판 바꿀 시 바꿔줘야함*/ + bbsVO.setBbsTyCd("02");/*추후 게시판 바꿀 시 바꿔줘야함*/ + // 게시판 설정 정보 조회 + DataMap noticeBbsInfo = new DataMap(); + noticeBbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO); + + // 무통장 정보 조회 + Map nbkkList = new HashMap(); + BOSetupNbkkVO boNbkkVO = new BOSetupNbkkVO(); + boNbkkVO.setSopmalCd(bbsctt.getSopmalCd()); + nbkkList = nbkkService.selectBOSopmalSetupList(boNbkkVO); + + // 쇼핑몰별 고객센터 정보 조회 + List sopmalInfo = new ArrayList<>(); + BOMaSopmalVO sopmalVO = new BOMaSopmalVO(); + sopmalVO.setSopmalCd(bbsctt.getSopmalCd()); + sopmalInfo = sopmalService.selectBOSopmalUpdtForm(sopmalVO); + + Map content = new HashMap<>(); + content.put("cscBbsctt", cscBbsctt); + content.put("noticeBbsInfo", noticeBbsInfo); + content.put("nbkkList", nbkkList); + content.put("sopmalInfo", sopmalInfo); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOCscMainForm", bbsctt), +// model, +// "resultMap" +// ); return Util.getDeviceType(request) + "/csc/CscMain"; } /** @@ -93,14 +204,20 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectAjaxListInqire") - public ResponseEntity selectAjaxListInqire(GnrlBbscttVO bbsctt) { + @RequestMapping(value = "/selectAjaxListInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectAjaxListInqire(BOGnrlbbscttVO bbsctt) { bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - 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 +// ); } /** * 공지사항,FAQ (고객센터 사이드 O) @@ -110,14 +227,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectCscListForm") - public String selectCscListForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectCscListForm(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt), - model, - "resultMap" - ); + Map content = selectBOBbscttListInqireForm(bbsctt); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/csc/CscListRForm"; } /** @@ -128,14 +247,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectSubPageListForm") - public String selectSubPageListForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectSubPageListForm(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt), - model, - "resultMap" - ); + Map content = selectBOBbscttListInqireForm(bbsctt); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/csc/SubPageListRForm"; } /************************************************************ @@ -147,14 +268,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectNoticeListInqire") - public String selectNoticeListInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectNoticeListInqire(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - 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" +// ); return Util.getDeviceType(request)+"/csc/NoticeListR"; } /**FAQ 목록 조회 @@ -163,14 +286,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectFaqListInqire") - public String selectFaqListInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectFaqListInqire(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - 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" +// ); model.addAttribute("pageIndex", bbsctt.getPageIndex()); return Util.getDeviceType(request)+"/csc/FaqListR"; } @@ -180,14 +305,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectEvtListInqire") - public String selectEvtListInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectEvtListInqire(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - 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" +// ); return Util.getDeviceType(request)+"/csc/EvtListR"; } /**이벤트 결과 @@ -196,14 +323,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectEvtResultListInqire") - public String selectEvtResultListInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectEvtResultListInqire(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - 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" +// ); return Util.getDeviceType(request)+"/csc/EvtResultListR"; } /**매거진 @@ -212,14 +341,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectMgznListInqire") - public String selectMgznListInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectMgznListInqire(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - 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" +// ); return Util.getDeviceType(request)+"/csc/MgznListR"; } /************************************************************ @@ -231,14 +362,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectCscListTy") - public String selectCscListTySrch(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectCscListTySrch(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - 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" +// ); return Util.getDeviceType(request)+"/csc/CscListTyR"; } /**아코디언형 목록 @@ -247,14 +380,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectCscAcordionTy") - public String selectCscAcordionTySrch(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectCscAcordionTySrch(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - 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" +// ); return Util.getDeviceType(request)+"/csc/CscAcordionTyR"; } @@ -264,14 +399,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectCscGalaryTy") - public String selectCscGalaryTySrch(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectCscGalaryTySrch(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - 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" +// ); return Util.getDeviceType(request)+"/csc/CscGalaryTyR"; } /************************************************************ @@ -283,12 +420,23 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectBbscttComparPassword" , method = RequestMethod.POST) - public ResponseEntity selectBbscttComparPassword(GnrlBbscttVO bbsctt){ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttComparPassword", bbsctt), - ReplyFromResrc::getReply + @RequestMapping(value="/selectBbscttComparPassword" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectBbscttComparPassword(BOGnrlbbscttVO bbsctt){ + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + DataMap content = new DataMap(); + Integer pw = service.selectBOBbscttComparPassword(bbsctt); + content.put("pw", pw); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttComparPassword", bbsctt), +// ReplyFromResrc::getReply +// ); } /** * 게시글 추천,비추천 @@ -296,12 +444,22 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateBbscttRecomendUpdt" , method = RequestMethod.POST) - public ResponseEntity updateBbscttRecomendUpdt( GnrlBbscttVO bbsctt){ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttRecomendUpdt", bbsctt), - ReplyFromResrc::getReply + @RequestMapping(value="/updateBbscttRecomendUpdt" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBbscttRecomendUpdt(BOGnrlbbscttVO bbsctt){ + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + Map result = new HashMap<>(); + result = service.updateBOBbscttRecomendUpdt(bbsctt); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(result)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttRecomendUpdt", bbsctt), +// ReplyFromResrc::getReply +// ); } /************************************************************ 게시글 상세 @@ -312,13 +470,77 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectBbscttDtlInqire") - public String selectBbscttDtlInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt) { + public String selectBbscttDtlInqire(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt) { bbsctt.setServerDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttDtlSopmalInqirePopup", bbsctt), - model, - "resultMap" - ); + Map content = new HashMap<>(); + //작성자 정보 추출 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + if (user.getUserInnb() > 0) { + bbsctt.setRegusr(user.getUserInnb()); + bbsctt.setMbrDvCd(user.getMbrDvCd()); + if ("mngr".equals(bbsctt.getServerDv())) { + bbsctt.setRegusrDvCd("02"); //관리자 + } else { + bbsctt.setRegusrDvCd("01"); //회원 + } + bbsctt.setRegusrNm(user.getMbrNm()); + bbsctt.setRegusrId(user.getMbrId()); + } else { + bbsctt.setRegusr(0); + bbsctt.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); + + // 게시글 상세 조회 + Map bbscttInfo = new HashMap(); + bbsctt.setSecretKey(boCommonService.selectSecretkey()); + bbscttInfo = service.selectBOBbscttDtlSopmalInqirePopup(bbsctt); + + // 게시글 연관상품 조회 + /* + * 게시판 설정에서 추천 상품 노출 여부가 Y이거나 + * 게시판 타입이 qna,일반리뷰,한달리뷰인 경우 + */ + if (!ObjectUtils.isEmpty(bbsInfo)) { + if ("Y".equals(bbsInfo.get("recomendGoodsExpsrAt")) || "05".equals(bbsctt.getBbsTyCd()) || "06".equals(bbsctt.getBbsTyCd()) || "07".equals(bbsctt.getBbsTyCd())) { + Map goodsList = new HashMap(); + goodsList = service.selectBOBbscttDtlGoods(bbsctt); + content.put("goodsList", goodsList); + } + } + + // 일반게시글, qna 답변 조회 + if ("01".equals(bbsctt.getBbsTyCd()) || "05".equals(bbsctt.getBbsTyCd())) { + DataMap answ = new DataMap(); + answ = service.selectBOAnswInfoInqire(bbsctt); + content.put("answ", answ); + } + + // 조회수 증가 + service.updateBOBbscttRdcntUpdt(bbsctt); + content.put("bbscttInfo", bbscttInfo); + content.put("bbsInfo", bbsInfo); + content.put("bbsctt", bbsctt); + content.put("prevIndex", bbsctt.getPageIndex());//*목록 이동시 페이징 유지*/ + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttDtlSopmalInqirePopup", bbsctt), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/csc/BbscttDtlR"; } @@ -328,12 +550,26 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectBbscttCn") - public ResponseEntity selectBbscttCn(GnrlBbscttVO bbsctt) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttCn", bbsctt), - ReplyFromResrc::getReply + @RequestMapping(value = "/selectBbscttCn", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectBbscttCn(BOGnrlbbscttVO bbsctt) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + + DataMap content = new DataMap(); + content = service.selectBOBbscttCn(bbsctt); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttCn", bbsctt), +// ReplyFromResrc::getReply +// ); } /************************************************************ 이용안내 @@ -344,14 +580,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectUseGuidanceForm") - public String selectUseGuidanceForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt) { + public String selectUseGuidanceForm(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt) { bbsctt.setServerDv("sopmal"); //게시글 노출 항목 설정값과 게시판 목록 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt), - model, - "resultMap" - ); + Map content = selectBOBbscttListInqireForm(bbsctt); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/csc/UseGuidanceR"; } @@ -360,13 +598,24 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectUseGuidanceInqire") - public ResponseEntity selectUseGuidanceInqire(GnrlBbscttVO bbsctt) { + @RequestMapping(value = "/selectUseGuidanceInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectUseGuidanceInqire(BOGnrlbbscttVO bbsctt) { //게시글 노출 항목 설정값과 게시판 목록 조회 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOUseGuidanceCn", bbsctt), - ReplyFromResrc::getReply + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + + Map content = new HashMap(); + content = service.selectUseGuidanceCn(bbsctt); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOUseGuidanceCn", bbsctt), +// ReplyFromResrc::getReply +// ); } /******************************************************************************* * 댓글 서비스 시작 @@ -379,13 +628,15 @@ public class CscController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectCmList") - public String selectCmList(HttpServletRequest request, ModelMap model ,CmVO vo){ + public String selectCmList(HttpServletRequest request, ModelMap model ,BOCmVO vo){ vo.setReqPageDv("sopmal"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmList", vo), - model, - "resultMap" - ); + Map content = selectBOCmList(vo); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmList", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/csc/CmListR"; } @@ -394,13 +645,19 @@ public class CscController { * @param vo 파라미터 vo */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectCmListAjax") - public ResponseEntity selectCmListAjax(CmVO vo){ + @RequestMapping(value="/selectCmListAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectCmListAjax(BOCmVO vo){ vo.setReqPageDv("sopmal"); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmList", vo), - ReplyFromResrc::getReply + Map content = selectBOCmList(vo); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmList", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -409,12 +666,33 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectCmRegusrCnfirm") - public ResponseEntity selectCmRegusrCnfirm(CmVO cm){ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmRegusrCnfirm", cm), - ReplyFromResrc::getReply + @RequestMapping(value="/selectCmRegusrCnfirm", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectCmRegusrCnfirm(BOCmVO cm){ + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + cm.setSopmalCd(user.getSopmalCd()); + cm.setMbrInnb(user.getUserInnb()); + DataMap result = new DataMap(); + if (!"Y".equals(cm.getPwCnfirmAt())) { + result = boCmService.selectBOCmRegusrCnfirm(cm); + } + DataMap content = new DataMap(); + content.put("result", result); + content.put("vo", cm); + /*비밀번호 확인이 되었거나 */ + if ("Y".equals(cm.getPwCnfirmAt()) || "YES".equals(result.get("moveAt"))) { + DataMap dtl = boCmService.selectBOCmCn(cm); + content.put("dtl", dtl); + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmRegusrCnfirm", cm), +// ReplyFromResrc::getReply +// ); } /** @@ -423,8 +701,8 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertBbscttCmRegist") - public ResponseEntity insertBbscttCmRegist(HttpServletRequest request , @Validated CmVO cm, BindingResult bindingResult){ + @RequestMapping(value="/insertBbscttCmRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertBbscttCmRegist(HttpServletRequest request , @Validated BOCmVO cm, BindingResult bindingResult){ List> errorList = new ArrayList<>(); if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); @@ -456,10 +734,42 @@ public class CscController { agentId = CookieUtil.getAgentCookieValue(request.getCookies()); cm.setAgentId(agentId); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/insertBOCmRegist", cm), - ReplyFromResrc::getReply + + DataMap content = new DataMap(); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + cm.setSopmalCd(user.getSopmalCd()); + } + //쇼핑몰 코드 + if (user.getUserInnb() > 0) {//회원 or 관리자 + cm.setRegusr(user.getUserInnb());//등록자 고유번호 + cm.setUpdusr(user.getUserInnb());//수정자 공유번호 + if ("mngr".equals(cm.getServerDv())) {//등록자 구분 코드 + cm.setRegusrDvCd("02"); //관리자 + } else { + cm.setRegusrDvCd("01"); //회원 + } + cm.setRegusrNm(user.getMbrNm()); + cm.setRegusrId(user.getMbrId()); + } else {//비회원 + cm.setRegusr(0); + cm.setUpdusr(0); + cm.setRegusrDvCd("99"); //비회원 + } + //TODO::작성자 정보 추출 + DataMap map = new DataMap(); + map = boCmService.insertBOCmRegist(cm); + content.put("map", map); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/insertBOCmRegist", cm), +// ReplyFromResrc::getReply +// ); } /** * 댓글 수정 @@ -467,16 +777,39 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateBbscttCmUpdt" , method = RequestMethod.POST) - public ResponseEntity updateBbscttCmUpdt(@Validated CmVO cm, BindingResult bindingResult){ + @RequestMapping(value="/updateBbscttCmUpdt" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBbscttCmUpdt(@Validated BOCmVO cm, BindingResult bindingResult){ if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } cm.setReqPageDv("sopmal"); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/updateBOCmUpdt", cm), - ReplyFromResrc::getReply + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + cm.setSopmalCd(user.getSopmalCd()); + } + ; + if (user.getUserInnb() > 0) {//회원 or 관리자 + cm.setUpdusr(user.getUserInnb()); + } else {//비회원 + cm.setUpdusr(0); + } + + DataMap content = new DataMap(); + DataMap map = new DataMap(); + + map = boCmService.updateBOCmUpdt(cm); + content.put("map", map); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/updateBOCmUpdt", cm), +// ReplyFromResrc::getReply +// ); } /** @@ -485,16 +818,38 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/deleteBbscttCmDel" , method = RequestMethod.POST) - public ResponseEntity deleteBbscttCmDel(CmVO cm, BindingResult bindingResult){ + @RequestMapping(value="/deleteBbscttCmDel" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteBbscttCmDel(BOCmVO cm, BindingResult bindingResult){ if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } cm.setReqPageDv("sopmal"); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/deleteBOCmDel", cm), - ReplyFromResrc::getReply + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + cm.setSopmalCd(user.getSopmalCd()); + } + if (user.getUserInnb() > 0) {//회원 or 관리자 + cm.setUpdusr(user.getUserInnb()); + } else {//비회원 + cm.setUpdusr(0); + } + + DataMap content = new DataMap(); + DataMap map = new DataMap(); + + map = boCmService.updateBOCmDel(cm); + content.put("map", map); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/deleteBOCmDel", cm), +// ReplyFromResrc::getReply +// ); } /** * 댓글 비밀번호 조회 @@ -502,12 +857,25 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectComparPassword" , method = RequestMethod.POST) - public ResponseEntity selectComparPassword(CmVO cm){ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOComparPassword", cm), - ReplyFromResrc::getReply + @RequestMapping(value="/selectComparPassword" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectComparPassword(BOCmVO cm){ + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + cm.setSopmalCd(user.getSopmalCd()); + + DataMap content = new DataMap(); + log.info("댓글 고유번호 확인{}",cm.getCmInnb()); + Integer pw = boCmService.selectBOComparPassword(cm); + content.put("pw", pw); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOComparPassword", cm), +// ReplyFromResrc::getReply +// ); } /** * 댓글 추천,비추천 @@ -515,12 +883,23 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateCmRecomendUpdt" , method = RequestMethod.POST) - public ResponseEntity updateCmRecomendUpdt(CmVO cm){ - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/updateBOCmRecomendUpdt", cm), - ReplyFromResrc::getReply + @RequestMapping(value="/updateCmRecomendUpdt" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCmRecomendUpdt(BOCmVO cm){ + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + cm.setSopmalCd(user.getSopmalCd()); + + DataMap content = new DataMap(); + content = boCmService.updateBOCmRecomendUpdt(cm); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/updateBOCmRecomendUpdt", cm), +// ReplyFromResrc::getReply +// ); } /******************************************************************************* @@ -533,13 +912,14 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectBbscttRegistForm") - public String selectBbscttRegistForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ - //BO에서 API 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",bbsctt), - model, - "resultMap" - ); + public String selectBbscttRegistForm(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ + Map content = selectBOBbscttRegistPopupForm(bbsctt); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",bbsctt), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/csc/BbscttRegistC"; } @@ -550,12 +930,13 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectBbscttRegistPopupForm") - public String selectBbscttRegistPopupForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectBbscttRegistPopupForm(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); - //BO에서 API 호출 - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",bbsctt) - ); + + Map resultMap = selectBOBbscttRegistPopupForm(bbsctt); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",bbsctt) +// ); model.addAttribute("resultMap", resultMap); model.addAttribute("bbscttVO", resultMap); return Util.getDeviceType(request)+"/csc/BbscttRegistPopupC"; @@ -569,8 +950,8 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/insertBbscttRegist", method = RequestMethod.POST) - public ResponseEntity insertBbscttRegist(HttpServletRequest request, @Validated GnrlBbscttVO bbscttVO, BindingResult bindingResult) { + @RequestMapping(value = "/insertBbscttRegist", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertBbscttRegist(HttpServletRequest request, @Validated BOGnrlbbscttVO bbscttVO, BindingResult bindingResult) { /*bbsTyCD가 리뷰혹은 한달리뷰인경우*/ if ("06".equals(bbscttVO.getBbsTyCd()) || "07".equals(bbscttVO.getBbsTyCd())) { bbscttVO.setRvwBbscttDv("rvw"); @@ -653,10 +1034,16 @@ public class CscController { bbscttVO.setFilDvCd("01"); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/insertBOBbscttRegist", bbscttVO), - ReplyFromResrc::getReply + DataMap content = insertBOBbscttRegist(bbscttVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/insertBOBbscttRegist", bbscttVO), +// ReplyFromResrc::getReply +// ); } /** @@ -666,14 +1053,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectBbscttUpdtForm") - public String selectBbscttUpdtForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectBbscttUpdtForm(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); - //BO에서 API 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt), - model, - "resultMap" - ); + + Map content = selectBOBbscttUpdtPopupForm(bbsctt); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/csc/BbscttUpdtU"; } /** @@ -683,14 +1072,16 @@ public class CscController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/selectBbscttUpdtPopupForm") - public String selectBbscttUpdtPopupForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){ + public String selectBbscttUpdtPopupForm(HttpServletRequest request, ModelMap model , BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); - //BO에서 API 호출 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt), - model, - "resultMap" - ); + + Map content = selectBOBbscttUpdtPopupForm(bbsctt); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/csc/BbscttUpdtPopupU"; } @@ -701,8 +1092,8 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/updateBbscttupdt" , method = RequestMethod.POST) - public ResponseEntity updateBbscttupdt(HttpServletRequest request, @Validated GnrlBbscttVO bbsctt, BindingResult bindingResult) { + @RequestMapping(value="/updateBbscttupdt" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBbscttupdt(HttpServletRequest request, @Validated BOGnrlbbscttVO bbsctt, BindingResult bindingResult) { List> errorList = new ArrayList<>(); //validation체크 if (bindingResult.hasErrors()) { @@ -766,11 +1157,29 @@ public class CscController { bbsctt.setFilDvCd("01"); } - //BO에서 API 호출 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttUpdt",bbsctt), - ReplyFromResrc::getReply + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + + if (user.getUserInnb() > 0) {//회원 or 관리자 + bbsctt.setUpdusr(user.getUserInnb()); + bbsctt.setMbrDvCd(user.getMbrDvCd()); + } else {//비회원 or 시스템 + bbsctt.setUpdusr(0); + } + DataMap content = new DataMap(); + bbsctt.setSecretKey(boCommonService.selectSecretkey()); + content = service.updateBOBbscttUpdt(bbsctt); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttUpdt",bbsctt), +// ReplyFromResrc::getReply +// ); } /**ㄴ @@ -779,23 +1188,127 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/deleteBbscttDel" , method = RequestMethod.POST) - public ResponseEntity deleteBbscttDel(GnrlBbscttVO bbsctt){ + @RequestMapping(value="/deleteBbscttDel" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteBbscttDel(BOGnrlbbscttVO bbsctt){ bbsctt.setServerDv("sopmal"); - //BO에서 API 호출 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttDel",bbsctt), - ReplyFromResrc::getReply + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + + // 작성자 정보 추출 + 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 +// ); } /** * 게시글 권한 체크 및 상세 조회 * @param request * @param model - * @param seq - * @param bbsId * @param bbsctt * @return String */ @@ -803,7 +1316,7 @@ public class CscController { @RequestMapping(value = {"/selectBbscttAuth", "/selectBbscttAuth/{seq}/{bbsId}"}) public String selectBbscttAuth(HttpServletRequest request, ModelMap model, - GnrlBbscttVO bbsctt) { + BOGnrlbbscttVO bbsctt) { bbsctt.setServerDv("sopmal"); // seq와 bbsId가 있는 경우 설정 if (bbsctt.getAuthDv() == null) { @@ -814,10 +1327,21 @@ public class CscController { bbsctt.setReqUrl("subPage"); bbsctt.setAuthDv("CM"); - // 외부 API 호출 및 처리 - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbscttSetupInfo",bbsctt) - ); + BOBbsVO vo = new BOBbsVO(); + vo.setSopmalCd(bbsctt.getSopmalCd()); + vo.setBbsTyCd(bbsctt.getBbsTyCd()); + vo.setBbsId(bbsctt.getBbsId()); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + + DataMap resultMap = new DataMap(); + resultMap = bbsService.selectBOBbsSetupInfo(vo); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbscttSetupInfo",bbsctt) +// ); if (resultMap != null && resultMap.containsKey("bbsTyCd")) { bbsctt.setBbsTyCd((String) resultMap.get("bbsTyCd")); @@ -831,11 +1355,22 @@ public class CscController { } /*권한체크 공통*/ - public String selectAuth (HttpServletRequest request,ModelMap model,GnrlBbscttVO bbsctt) { - //BO에서 API 호출 - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttAuth",bbsctt) - ); + public String selectAuth (HttpServletRequest request,ModelMap model,BOGnrlbbscttVO bbsctt) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + /*회원인경우*/ + if (user.getUserInnb() > 0) { //사용자 권한 체크 + bbsctt.setRegusr(user.getUserInnb()); + bbsctt.setMbrDvCd(user.getMbrDvCd()); + } else { //비회원, 관리자(게시판 미리보기) + bbsctt.setRegusr(0); + } + + DataMap resultMap = new DataMap(); + resultMap = service.selectBOBbscttAuth(bbsctt); +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttAuth",bbsctt) +// ); bbsctt.setAuthResult((String) resultMap.get("resultAuth")); bbsctt.setBbsNm((String) resultMap.get("bbsNm")); @@ -884,14 +1419,602 @@ public class CscController { * @return ResponseEntity */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectBbscttDtlMovePosblAt") - public ResponseEntity selectBbscttDtlMovePosblAt(GnrlBbscttVO bbsctt) { + @RequestMapping(value = "/selectBbscttDtlMovePosblAt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectBbscttDtlMovePosblAt(BOGnrlbbscttVO bbsctt) { bbsctt.setServerDv("sopmal"); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + bbsctt.setMbrInnb(user.getUserInnb()); + DataMap result = new DataMap(); + if (!"Y".equals(bbsctt.getPwCnfirmAt())) { + result = service.selectBbscttDtlMovePosblAt(bbsctt); + } + bbsctt.setSecretKey(boCommonService.selectSecretkey()); + /*아코디언 형 게시글 상세, 답변 조회*/ + DataMap content = new DataMap(); + content.put("result", result); + content.put("vo", bbsctt); + /*비밀번호 확인이 되었거나 */ + if (("Y".equals(bbsctt.getPwCnfirmAt()) || "YES".equals(result.get("moveAt"))) && "03".equals(bbsctt.getSknTyCd())) { + Map dtl = service.selectBOBbscttDtlInqirePopup(bbsctt); + content.put("dtl", dtl); + DataMap dtlCn = service.selectBOBbscttCn(bbsctt); + content.put("dtlCn", dtlCn); + DataMap answ = service.selectBOAnswInfoInqire(bbsctt); + content.put("answ", answ); + } - //BO에서 API 호출 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttDtlMovePosblAt", bbsctt), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttDtlMovePosblAt", bbsctt), +// ReplyFromResrc::getReply +// ); + } + + + + /** + bo로직 게시글 목록 조회 폼 + **/ + public Map selectBOBbscttListInqireForm(BOGnrlbbscttVO bbsctt) { + Map content = new HashMap(); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + bbsctt.setMbrDvCd(user.getMbrDvCd()); + bbsctt.setMbrInnb(user.getUserInnb()); + } + if ("mpage".equals(bbsctt.getReqUrl()) || "crm".equals(bbsctt.getReqUrl())) { + if (user.getUserInnb() > 0) { + bbsctt.setRegusr(user.getUserInnb()); + bbsctt.setRegusrDvCd("01"); + } else { + bbsctt.setRegusr(0); + bbsctt.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 evtBbsList = new ArrayList<>(); + if ("sopmal".equals(bbsctt.getServerDv())) { + if ("03".equals((String) bbsInfo.get("bbsTyCd")) || "11".equals((String) bbsInfo.get("bbsTyCd"))) { + evtBbsList = bbsService.selectBOEvtBbsList(bbsVO); + content.put("evtBbsList", evtBbsList); + } + } + // 분류 조회 + List itmList = new ArrayList<>(); + itmList = service.selectBOBbscttItmInqire(bbsctt); + + // 게시판 목록 조회 및 게시글 개수 조회(관리자 페이지) + List bbsListCnt = new ArrayList<>(); + if (!"01".equals(user.getSysDvCd())) { + bbsListCnt = bbsService.selectBOBbsttListInqire(bbsVO); + content.put("bbsListCnt", bbsListCnt); + } + Map qesitmList = new HashMap(); + Map rvwQesitmList = new HashMap(); + //리뷰 목록 조회일 시 service 호출 + if ("rvw".equals(bbsctt.getRvwBbscttDv())) { + //추가항목 리스트, 추가항목 항목 리스트(리뷰) + qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt); + //리뷰항목 리스트, 리뷰항목 항목 리스트 + rvwQesitmList = service.selectBOStarItm(bbsctt); + } + content.put("bbsInfo", bbsInfo); + content.put("itmList", itmList); + if ("rvw".equals(bbsctt.getRvwBbscttDv())) { + content.put("qesitmList", qesitmList); + content.put("rvwQesitmList", rvwQesitmList); + } + content.put("bbsctt", bbsctt); + return content; + } + + /** + * 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 selectBOCmList(BOCmVO cm){ + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if("01".equals(user.getSysDvCd())){ + cm.setSopmalCd(user.getSopmalCd()); + } + + //쇼핑몰 코드 + cm.setMbrDvCd(user.getMbrDvCd()); + Map content = new HashMap(); + + // pagination + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(cm.getPageIndex()); + paginationInfo.setRecordCountPerPage(cm.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + cm.setPaginationInfo(paginationInfo); + cm.setFirstIndex(paginationInfo.getFirstRecordIndex()); + cm.setLastIndex(paginationInfo.getLastRecordIndex()); + cm.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + if(user.getUserInnb() > 0){ + cm.setRegusr(user.getUserInnb()); + if ("mngr".equals(cm.getReqPageDv())) { + cm.setRegusrDvCd("02"); //관리자 + } else { + cm.setRegusrDvCd("01"); //회원 + cm.setRegusrNm(user.getMbrNm()); + } + }else{ + cm.setRegusr(0); + cm.setRegusrDvCd("99");//비회원 + } + + //작성자 정보 + BOCmVO regusrInfo = new BOCmVO(); + regusrInfo.setRegusrNm(user.getMbrNm()); + regusrInfo.setRegusrId(user.getMbrId()); + + //게시판 설정 정보 조회 + // bbsVO에 쇼핑몰코드, 해당 게시판 set + BOBbsVO bbsVO = new BOBbsVO(); + bbsVO.setSopmalCd(cm.getSopmalCd()); + bbsVO.setBbsId(cm.getBbsId()); + + // 게시판 설정 정보 조회 + DataMap bbsInfo = new DataMap(); + bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO); + + // 댓글 목록 조회, 건수, 작성자 정보 조회 + Map cmList = boCmService.selectBOCmList(cm); + + content.put("cmList", cmList); + content.put("bbsInfo", bbsInfo); + content.put("regusrInfo", regusrInfo); + content.put("cmVO", cm); + content.put("paginationInfo", cm.getPaginationInfo()); + return content; + } + + + /** + * bo로직 게시글 등록 팝업 + */ + 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; + } + + + + /** + * bo로직 게시글 등록 + */ + public DataMap insertBOBbscttRegist(BOGnrlbbscttVO bbsctt) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + + DataMap mbrInfo = new DataMap(); + if (user.getUserInnb() > 0) { + bbsctt.setRegusr(user.getUserInnb()); + bbsctt.setUpdusr(user.getUserInnb()); + if ("03".equals(user.getSysDvCd())) { + bbsctt.setRegusrDvCd("02"); //관리자 + } else { + bbsctt.setRegusrDvCd("01"); //회원 + bbsctt.setMbrDvCd(user.getMbrDvCd()); + if ("Y".equals(bbsctt.getAnswSmsRecptn()) && StringUtil.isEmpty(bbsctt.getAnswMbtlnb())) { + 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); + bbsctt.setAnswMbtlnb((String) mbrInfo.get("mbtlnb")); + } + } + if (bbsctt.getParntsBbscttInnb() == null) { //게시글 등록 (답변x) + bbsctt.setRegusrNm(user.getMbrNm()); + } else { + bbsctt.setMngrNm(user.getMbrNm()); + } + //관리자 서버에서 리뷰, 한달리뷰 등록시 랜덤 아이디 생성 + String mbrId = null; + if ("03".equals(user.getSysDvCd()) && ("goods_review".equals(bbsctt.getBbsId()) || "goods_review_month".equals(bbsctt.getBbsId()))) { + mbrId = generateRandomString(); + } else { + mbrId = user.getMbrId(); + } + bbsctt.setRegusrId(mbrId); + } else { + bbsctt.setRegusr(0); + bbsctt.setUpdusr(0); + bbsctt.setRegusrDvCd("99"); + } + DataMap content = new DataMap(); + + /*회원이 리뷰 등록 시 재구매 여부 조회, 리뷰 등록 건수 검증*/ + if (("06".equals(bbsctt.getBbsTyCd()) || "07".equals(bbsctt.getBbsTyCd())) && "01".equals(user.getSysDvCd()) && "rvw".equals(bbsctt.getRvwBbscttDv())) { + //재구매 여부 조회 + BOOrdrVO vo = new BOOrdrVO(); + vo.setOrdrInnb(String.valueOf(bbsctt.getOrdrInnb())); + vo.setMbrInnb(user.getUserInnb()); + vo.setMbrDvCd(bbsctt.getMbrDvCd()); + vo.setSopmalCd(bbsctt.getSopmalCd()); + vo.setGoodsInnb(bbsctt.getGoodsInnb()); + DataMap reOrdr = boOrdrService.selectBOReordrCnt(vo); + String reOrdrAt = (String) reOrdr.get("reOrderAt"); + bbsctt.setReOrderAt(reOrdrAt); + } + + /*게시글 등록*/ + bbsctt.setSecretKey(boCommonService.selectSecretkey()); + DataMap result = new DataMap(); + result = service.insertBOBbscttRegist(bbsctt); + //등록 성공 시 사용자 리뷰 작성 추가 로직(마일리지 지급, 회원 사이트 리뷰 작성수 수정, 상품 집계 테이블 값 수정) + if ("success".equals(result.get("result"))) { + if (!CollectionUtils.isEmpty(bbsctt.getGoodsInnbArr()) && ("05".equals(bbsctt.getBbsTyCd()) || "06".equals(bbsctt.getBbsTyCd()) || "07".equals(bbsctt.getBbsTyCd()))) { + /*상품 집계 테이블 값 set*/ + BOGoodsVO goodsVO = new BOGoodsVO(); + for (String goodsInnb : bbsctt.getGoodsInnbArr()) { + bbsctt.setGoodsInnb(goodsInnb); + } + goodsVO.setGoodsInnb(bbsctt.getGoodsInnb()); + goodsVO.setSopmalCd(bbsctt.getSopmalCd()); + if ("sopmal".equals(bbsctt.getServerDv())) { + if ("rvw".equals(bbsctt.getRvwBbscttDv())) { + if ("01".equals(bbsctt.getRegusrDvCd())) { //회원이 리뷰를 쓰면 + /*마일리지 게시판 설정 정보 조회*/ + BOBbsVO bbsVO = new BOBbsVO(); + bbsVO.setBbsId(bbsctt.getBbsId()); + bbsVO.setSopmalCd(bbsctt.getSopmalCd()); + BOBbsVO milInfo = new BOBbsVO(); + milInfo = bbsService.selectBOBbsMilInqire(bbsVO); + if ("Y".equals(milInfo.getGoodsRvwMlgPymntAt())) { + //마일리지 vo 설정 03 일반 04 포토 05 한달 + BOMlgVO mlgVO = new BOMlgVO(); + + mlgVO.setMbrInnb(String.valueOf(bbsctt.getRegusr())); + mlgVO.setRegusr(bbsctt.getRegusr()); + mlgVO.setMbrDvCd(user.getMbrDvCd()); + mlgVO.setSopmalCd(user.getSopmalCd()); + mlgVO.setOrdrInnb(bbsctt.getOrdrInnb()); + + mlgVO.setRegusrDvCd("01"); + BigInteger bbscttInnb = (BigInteger) result.get("bbscttInnb"); + mlgVO.setBbscttInnb(bbscttInnb);//게시글 고유번호 + mlgVO.setOrdrInnb(bbsctt.getOrdrInnb());//주문 고유번호 + + Integer validMtCnt = null; /*유효일자*/ + /*파일정보 내용 유무로 마일리지 적용 구분*/ + if (CollectionUtils.isEmpty(bbsctt.getFileInfo())) { //텍스트리뷰인지 + + mlgVO.setMlgApplcDvCd("03"); //마일리지 적용 구분 + mlgVO.setMlgApplcResn("일반 리뷰 작성 마일리지"); //마일리지 적용 사용 + + mlgVO.setAccmlmnyAmt(milInfo.getGnrlRvwMlgAccmlmnyAmtDeci()); //일반 리뷰 마일리지 금액 + if (milInfo.getGnrlRvwMlgValidMtCnt() != null) { + validMtCnt = Integer.valueOf(milInfo.getGnrlRvwMlgValidMtCnt()); //일반 리뷰 유효월수 + } + } else { + if ("06".equals(bbsctt.getBbsTyCd())) { //포토 리뷰인지 + + mlgVO.setMlgApplcDvCd("05"); //마일리지 적용 구분 + mlgVO.setMlgApplcResn("포토 리뷰 작성 마일리지"); //마일리지 적용 사용 + } else {// 한달리뷰인지 + + mlgVO.setMlgApplcDvCd("04"); //마일리지 적용 구분 + mlgVO.setMlgApplcResn("한달 리뷰 작성 마일리지"); //마일리지 적용 사용 + } + mlgVO.setAccmlmnyAmt(milInfo.getPhotoRvwMlgAccmlmnyAmtDeci());//포토 리뷰 마일리지 금액 + if (milInfo.getPhotoRvwMlgValidMtCnt() != null) { + validMtCnt = Integer.valueOf(milInfo.getPhotoRvwMlgValidMtCnt()); //포토 리뷰 유효월수 + } + } + /******************************************************************************************/ + /*일반 혹은 포토리뷰 유효일시 있을 시*/ + if (validMtCnt != null) { + mlgVO.setMlgValidPd(validMtCnt); + } else { + mlgVO.setMlgValidPd(Integer.valueOf(milInfo.getSopmalSetupValidPd())); + } + mlgService.insertBOMlgAdd(mlgVO); + log.debug("mlgVO 확인 {}", mlgVO); + /*****************************************************************************************/ + + // 추가마일리지 있을 시 + if (milInfo.getAditPymntMlgAccmlmnyAmt() != null) { + /*추가마일리지 금액*/ + mlgVO.setMlgApplcDvCd("03"); //마일리지 적용 구분 + mlgVO.setAccmlmnyAmt(milInfo.getAditPymntMlgAccmlmnyAmtDeci()); + mlgVO.setMlgApplcResn("게시판 설정에 따른 추가 마일리지 적립"); + /*추가 마일리지 유효일시 있을 시*/ + if (milInfo.getAditPymntMlgValidMtCnt() != null) { + mlgVO.setMlgValidPd(Integer.valueOf(milInfo.getAditPymntMlgValidMtCnt())); + } else { + mlgVO.setMlgValidPd(Integer.valueOf(milInfo.getSopmalSetupValidPd())); + } + mlgService.insertBOMlgAdd(mlgVO); + } + } + /*회원 사이트 리뷰 작성수 수정 */ + service.updateBORvwWritngCnt(bbsctt); + } + } + + } + log.debug("확인{}", bbsctt.getBbsId()); + if ("goods_qna".equals(bbsctt.getBbsId())) { + /*상품 집계 TB 상품 문의 수 수정*/ + goodsService.updateGoodsInqryCnt(goodsVO); + } else if ("goods_review".equals(bbsctt.getBbsId()) || "goods_review_month".equals(bbsctt.getBbsId())) { + /*상품 집계 TB 리뷰 관련 집계 수정*/ + goodsService.updateRvwRelateSm(goodsVO); + } + } + /*sms 등록*/ + if ((bbsctt.getBbscttSndngMthCd() != null || !"03".equals(bbsctt.getBbscttSndngMthCd())) && "Y".equals(bbsctt.getAnswSmsRecptn())) { + //쇼핑몰코드, 치환코드 값, 발송코드, + DataMap sndngInfo = new DataMap(); + if (bbsctt.getParntsBbscttInnb() == null) { //사용자 등록 일 때 + sndngInfo.put("mbrInnb", bbsctt.getRegusr()); + sndngInfo.put("formDtlDvCd", "01"); + sndngInfo.put("bbscttSndngDvCd", "01"); + } else { + sndngInfo.put("mbrInnb", bbsctt.getAnswRegusr()); + sndngInfo.put("formDtlDvCd", "02"); + sndngInfo.put("bbscttSndngDvCd", "02"); + } + sndngInfo.put("bbsNm", bbsctt.getBbsNm()); + sndngInfo.put("bbsctt", bbsctt.getBbscttSndngDvCd()); + sndngInfo.put("bbscttSndngMthCd", bbsctt.getBbscttSndngMthCd()); + sndngInfo.put("sopmalCd", bbsctt.getSopmalCd()); + sndngInfo.put("formDvCd", "FORM_DV_BBS"); + boMssageService.insertBOAtmcsndngBoard(sndngInfo); + } + content.put("result", "1"); //등록 성공 + //답변 등록 여부 체크 + if(bbsctt.getParntsBbscttInnb() != null){ + content.put("answAt", result.get("answAt")); + } + } else { + if("0".equals(result.get("denyRvw"))){ + content.put("denyRvw","0"); //리뷰 등록 거절 + }else{ + content.put("result", "0"); //등록 실패 + } + } + return content; + } + + /** + * bo로직 게시글 수정 팝업 + */ + public Map selectBOBbscttUpdtPopupForm(BOGnrlbbscttVO bbsctt) { + 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); + return content; + } + + + public String generateRandomString() { + final String CHARACTERS = "abcdefghijklmnopqrstuvwxyz1234567890"; + final int STRING_LENGTH = 8; + SecureRandom random = new SecureRandom(); + StringBuilder sb = new StringBuilder(STRING_LENGTH); + + for (int i = 0; i < STRING_LENGTH; i++) { + int index = random.nextInt(CHARACTERS.length()); + sb.append(CHARACTERS.charAt(index)); + } + + return sb.toString(); } } diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/csc/controller/PromController.java b/src/main/java/com/wb/domainserver/domain/sopmal/csc/controller/PromController.java index 1151e79d..96aa9044 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/csc/controller/PromController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/csc/controller/PromController.java @@ -1,15 +1,29 @@ package com.wb.domainserver.domain.sopmal.csc.controller; +import com.wb.domainserver.domain.gcone.bbs.prom.service.BOPromService; +import com.wb.domainserver.domain.gcone.bbs.prom.vo.BOPromVO; +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.promtn.coupon.service.BOCouponService; +import com.wb.domainserver.domain.gcone.promtn.coupon.vo.BODwldCouponVO; import com.wb.domainserver.domain.sopmal.csc.vo.PromVO; +import com.wb.domainserver.response.ApiResponse; +import com.wb.domainserver.response.WnbtResponse; +import com.wb.domainserver.response.WnbtResponseBody; import com.wb.domainserver.response.WnbtWebClientResponseHandler; +import com.wb.domainserver.security.authentication.AnonymousUser; +import com.wb.domainserver.security.authentication.MemberJwtContextHolder; import com.wb.domainserver.security.authorization.annotation.AuthPolicy; import com.wb.domainserver.security.authorization.annotation.Policy; import com.wb.domainserver.util.communicate.RESRC; import com.wb.domainserver.util.communicate.ReplyFromResrc; import com.wb.domainserver.util.communicate.SendToResrc; +import com.wb.domainserver.util.dataaccess.DataMap; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; 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.web.bind.annotation.RequestBody; @@ -17,6 +31,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.*; + @Slf4j @RestController @RequestMapping("/sopmal/prom") @@ -27,13 +45,279 @@ public class PromController { @Autowired private SendToResrc sendToResrc; - @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/promJoin", method = RequestMethod.POST) - public ResponseEntity promJoin(HttpServletRequest request, @RequestBody PromVO promVO) { + @Autowired + private BOPromService promService; - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/prom/promJoin", promVO), - ReplyFromResrc::getReply + @Autowired + private BOMlgService bomlgService; + + @Autowired + private BOCouponService couponService; + + @Policy(AuthPolicy.PUBLIC) + @RequestMapping(value = "/promJoin", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity promJoin(HttpServletRequest request, @RequestBody BOPromVO promVO) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if (user.getUserInnb() > 0) { + + // 1. 이벤트 정보 조회 및 유효성 체크 + DataMap promInfo = promService.selectPromInfo(promVO); + boolean isActive = promService.isPromActive(promInfo); + Map content = new HashMap<>(); + if (!isActive) { + content.put("eventActive", false); + content.put("message", "이벤트 기간이 아닙니다."); + return ApiResponse.of(content).ifPresentOrElse(HttpStatus.OK, HttpStatus.OK); + } + + // 2. 참여 이력 조회 + // promVO에 mbrInnb 설정 + promVO.setMbrInnb((long) user.getUserInnb()); + + // daily 룰일 때만 오늘 날짜 세팅 + if ("daily".equals((String)promInfo.get("promRule"))) { + promVO.setJoinDt(LocalDate.now()); + } + if(!user.getSopmalCd().equals((String) promInfo.get("sopmalCd"))){ + content.put("alreadySpun", true); + content.put("message", "해당 쇼핑몰 이벤트가 아닙니다."); + return ApiResponse.of(content).ifPresentOrElse(HttpStatus.OK, HttpStatus.OK); + } + + DataMap joinInfo = promService.selectPromJoinInfo(promVO); + if (joinInfo != null) { + // 이미 참여한 경우 + content.put("alreadySpun", true); + Object sortOrdrObj = joinInfo.get("sortOrdr"); + if (sortOrdrObj != null) { + int selected = (sortOrdrObj instanceof Number) ? ((Number) sortOrdrObj).intValue() : Integer.parseInt(sortOrdrObj.toString()); + content.put("selected", selected); + } + content.put("message", "이미 참여하셨습니다."); + return ApiResponse.of(content).ifPresentOrElse(HttpStatus.OK, HttpStatus.OK); + } + + // 3. 추첨 및 지급 로직 (미참여자) + int totalJoinCount = promService.countPromJoin(promVO); + List rewardList = promService.selectPromRewardList(promVO); + Map rewardWinCount = promService.countRewardWinners(promVO); + log.info("rewardWinCount 전체 데이터: {}", rewardWinCount); + log.info("totalJoinCount: {}", totalJoinCount); + double[] probabilities = new double[rewardList.size()]; + for (int i = 0; i < rewardList.size(); i++) { + double baseProb = ((BigDecimal) rewardList.get(i).get("probability")).doubleValue(); + Object sortOrdrObj = rewardList.get(i).get("sortOrdr"); + int sortOrdr = (sortOrdrObj instanceof Number) ? ((Number) sortOrdrObj).intValue() : Integer.parseInt(sortOrdrObj.toString()); + double actualRate = 0.0; + if (totalJoinCount > 0 && rewardWinCount.containsKey(sortOrdr)) { + actualRate = (double) rewardWinCount.get(sortOrdr) / totalJoinCount * 100.0; + } + if (totalJoinCount > 100) { + double diff = baseProb - actualRate; + probabilities[i] = baseProb + diff * 0.8; + if (probabilities[i] < 0) probabilities[i] = 0; + log.info("확률 보정 - baseProb: {}, actualRate: {}, diff: {}, 보정 후: {}", baseProb, actualRate, diff, probabilities[i]); + } else { + probabilities[i] = baseProb; + log.info("확률 보정 - baseProb: {}, actualRate: {}, diff: {}, 보정 후: {}", baseProb, actualRate, 0.0, probabilities[i]); + } + } + + double rand = Math.random() * 100; + double acc = 0; + int selectedIdx = 0; + for (int i = 0; i < probabilities.length; i++) { + acc += probabilities[i]; + if (rand < acc) { + selectedIdx = i; + break; + } + } + DataMap selectedReward = rewardList.get(selectedIdx); + + log.info("추첨 결과 - rand: {}, selectedIdx: {}, selectedReward: {}", rand, selectedIdx, selectedReward); + + // 보상 정보 추출 + + Object sortOrdrObj = selectedReward.get("sortOrdr"); + int sortOrdr = (sortOrdrObj instanceof Number) ? ((Number) sortOrdrObj).intValue() : Integer.parseInt(sortOrdrObj.toString()); + String rewardTy = (String) selectedReward.get("rewardTy"); + BigDecimal accmlmnyAmt = (BigDecimal) selectedReward.get("accmlmnyAmt"); + String mlgApplcResn = (String) selectedReward.get("mlgApplcResn"); + log.info("원본 mlgApplcResn: {}", mlgApplcResn); + // 마일리지 소멸일자 세팅 + String mlgExpireDt = String.valueOf(selectedReward.get("expireDt")); + Date exPireDate = new Date(); + if (!"null".equals(mlgExpireDt)) { + int expireDays = Integer.parseInt(mlgExpireDt); + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DATE, expireDays); + + calendar.set(Calendar.HOUR_OF_DAY, 23); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + + exPireDate = calendar.getTime(); + + } + + + Long couponInnb = selectedReward.get("couponInnb") != null ? Long.valueOf(selectedReward.get("couponInnb").toString()) : null; + Long couponSndngInnb = selectedReward.get("couponSndngInnb") != null ? Long.valueOf(selectedReward.get("couponSndngInnb").toString()) : null; + String rewardDc = (String) selectedReward.get("rewardDc"); + + boolean rewardSuccess = false; + DataMap result = null; + if ("coupon".equals(rewardTy)) { + // 쿠폰 발급 로직 + try { + BODwldCouponVO dwldCouponVO = new BODwldCouponVO(); + dwldCouponVO.setSopmalCd(user.getSopmalCd()); + dwldCouponVO.setMbrInnb(user.getUserInnb()); + dwldCouponVO.setMbrDvCd(user.getMbrDvCd()); + dwldCouponVO.setCouponSndngInnb(couponSndngInnb.intValue()); // Long → Integer 변환 필요 + dwldCouponVO.setEventYn("Y"); + dwldCouponVO.setCouponSndngTy("01"); + // 필요시 추가 필드 세팅 + log.info("VO: {}", dwldCouponVO); + Map couponResult = couponService.insertBOBnfCouponRegist(dwldCouponVO); + + if ("success".equals(couponResult.get("result"))) { + rewardSuccess = true; + log.info("쿠폰 발급 성공: {}", couponResult); + } else { + rewardSuccess = false; + log.error("쿠폰 발급 실패: {}", couponResult.get("message")); + } + } catch (Exception e) { + rewardSuccess = false; + log.error("쿠폰 발급 예외: {}", e.getMessage(), e); + } + } else if ("mileage".equals(rewardTy)) { + + // null 체크를 더 엄격하게 + if (mlgApplcResn == null || mlgApplcResn.trim().isEmpty()) { + mlgApplcResn = "이벤트 마일리지 지급"; + log.info("기본값 사용: {}", mlgApplcResn); + } else { + log.info("DB 값 사용: {}", mlgApplcResn); + } + + // 마일리지 VO 설정 + BOMlgVO mlgVO = new BOMlgVO(); + + // 회원 고유번호 설정 + mlgVO.setMbrInnb(String.valueOf(user.getUserInnb())); + + // 등록자 설정 + mlgVO.setRegusr(user.getUserInnb()); + + // 회원구분코드 설정 + mlgVO.setMbrDvCd(user.getMbrDvCd()); + + // 쇼핑몰코드 설정 + mlgVO.setSopmalCd(user.getSopmalCd()); + + // 등록자구분코드 설정 (01: 회원) + mlgVO.setRegusrDvCd("01"); + + //마일리지 적립 구분 설정 + mlgVO.setMlgAccmlDvCd("add"); + + // 이벤트 보상 마일리지 적용 구분 설정 + mlgVO.setMlgApplcDvCd("07"); // 이벤트 보상 마일리지 + + // 온라인 오프라인 구분 설정 + mlgVO.setOnlineOflneDvCd("01"); + + // 마일리지 적립 처리 구분 설정 + mlgVO.setMlgApplcDvCd("07"); + + // 이벤트 보상 마일리지 적용 사유 설정 + mlgVO.setMlgApplcResn(mlgApplcResn); + + // 이벤트 보상 마일리지 금액 설정 + mlgVO.setAccmlmnyAmt(accmlmnyAmt); + + // 마일리지 유효기간 설정 + if (!"null".equals(mlgExpireDt)) { + mlgVO.setUsePosblEndDt(exPireDate); + mlgVO.setMlgValidPd(0); + } + + mlgVO.setMlgValidPdAt("Y"); + + + // 마일리지 적립 처리 전 로그 + log.info("마일리지 적립 시작 - mlgVO: {}", mlgVO); + + // 마일리지 적립 처리 + result = bomlgService.insertBOMlgAdd(mlgVO); + + // 마일리지 적립 처리 후 로그 + log.info("마일리지 적립 결과: {}", result); + + rewardSuccess = "success".equals(result.get("result")) || "Y".equals(result.get("success")); + + log.debug("mlgVO 확인 {}", mlgVO); + log.info("마일리지 지급 결과: {}", result); + } + if (rewardSuccess) { + // 참여 이력 저장 전에 필수 데이터 설정 + promVO.setMbrInnb((long) user.getUserInnb()); // 회원 고유번호 + promVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + // 보상 정보 설정 + promVO.setPromInnb(promVO.getPromInnb()); + promVO.setSortOrdr(sortOrdr); + promVO.setRewardTy(rewardTy); + promVO.setAccmlmnyAmt(accmlmnyAmt); + promVO.setCouponInnb(couponInnb); + promVO.setCouponSndngInnb(couponSndngInnb); + promVO.setRewardDc(rewardDc); + + // 참여 이력 저장 전에 로그 추가 + log.info("참여 이력 저장 시작 - promVO: {}", promVO); + + try { + Map insertResult = promService.insertPromJoin(promVO); + log.info("참여 이력 저장 결과 전체: {}", insertResult); + + if ("Y".equals(insertResult.get("success"))) { // "result" → "success"로 변경 + log.info("참여 이력 저장 성공"); + } else { + log.error("참여 이력 저장 실패 - success: {}", insertResult.get("success")); + } + } catch (Exception e) { + log.error("참여 이력 저장 예외 발생: {}", e.getMessage(), e); + content.put("message", "참여 이력 저장에 실패했습니다."); + return ApiResponse.of(content).ifPresentOrElse(HttpStatus.INTERNAL_SERVER_ERROR, HttpStatus.INTERNAL_SERVER_ERROR); + } + + Map response = new HashMap<>(); + response.put("result", "success"); + //response.put("message", "이벤트에 참여되었습니다!"); + response.put("selected", sortOrdr); + response.put("selectedReward", selectedReward); + + return ResponseEntity.ok(response); + } else { + content.put("message", "보상 지급에 실패했습니다."); + return ApiResponse.of(content).ifPresentOrElse(HttpStatus.INTERNAL_SERVER_ERROR, HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + // 여기에 추가 (if 블록 밖으로) + Map content = new HashMap<>(); + content.put("message", "로그인이 필요합니다."); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/prom/promJoin", promVO), +// ReplyFromResrc::getReply +// ); } } diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/goods/controller/GoodsController.java b/src/main/java/com/wb/domainserver/domain/sopmal/goods/controller/GoodsController.java index 9d0d45cb..ab884f9b 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/goods/controller/GoodsController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/goods/controller/GoodsController.java @@ -1,34 +1,53 @@ package com.wb.domainserver.domain.sopmal.goods.controller; -import java.util.HashMap; -import java.util.Map; - +import com.wb.domainserver.common.msg.GconeMessageSource; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo; +import com.wb.domainserver.common.prop.PaginationProperties; +import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService; +import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService; +import com.wb.domainserver.domain.admin.sys.comncd.vo.BOMaComncdVO; +import com.wb.domainserver.domain.admin.sys.ctgry.service.BOMaCtgryService; +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.goods.cmnuse.service.BOCmnuseService; +import com.wb.domainserver.domain.gcone.goods.cmnuse.vo.BOCmnuseVO; +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.BONpayConfigService; +import com.wb.domainserver.domain.gcone.ordr.npay.vo.BONpayConfigVO; +import com.wb.domainserver.domain.gcone.promtn.purchs.service.BOPurchsEvtService; +import com.wb.domainserver.domain.gcone.promtn.purchs.vo.BOPurchsEvtVO; +import com.wb.domainserver.domain.gcone.setup.dlvygrp.service.BODlvygrpService; +import com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO; +import com.wb.domainserver.domain.gcone.setup.ordrmngr.service.BOOrdrMngrService; +import com.wb.domainserver.domain.gcone.setup.ordrmngr.vo.BOSetupOrdrVO; +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.KakaoProperties; +import com.wb.domainserver.util.communicate.SendToResrc; +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.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import com.wb.domainserver.common.msg.GconeMessageSource; -import com.wb.domainserver.domain.sopmal.csc.vo.GnrlBbscttVO; -import com.wb.domainserver.domain.sopmal.goods.vo.GoodsVO; -import com.wb.domainserver.domain.sopmal.mpage.act.vo.RvwVO; -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.KakaoProperties; -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.string.StringUtil; -import com.wb.domainserver.util.util.Util; - -import jakarta.servlet.http.HttpServletRequest; -import lombok.extern.slf4j.Slf4j; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @Controller @RequestMapping("/sopmal/goods") @@ -49,6 +68,30 @@ public class GoodsController { @Autowired private KakaoProperties kakaoProperties; + @Autowired + private BOGoodsService service; + @Autowired + private BOMaCtgryService boMaCtgryService; + @Autowired + private BOMaSopmalService boMaSopmalService; + @Autowired + private BOMaComncdService bOMaComncdService; + @Autowired + private BOCmnuseService bOCmnuseService; + @Autowired + private BODlvygrpService boDlvygrpService; + @Autowired + private BOPurchsEvtService boPurchsEvtService; + @Autowired + private BOGnrlbbscttService boGnrlbbscttService; + @Autowired + private BOOrdrMngrService boOrdrMngrService; + @Autowired + private PaginationProperties paginationProperties; + @Autowired + private BONpayConfigService boNpayConfigService; + + /** * 상품 검색 폼 * @param vo @@ -58,14 +101,87 @@ public class GoodsController { @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsSrchForm") public String selectGoodsSrchForm(HttpServletRequest request, - GoodsVO vo, + BOGoodsVO vo, ModelMap model) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsListForm", vo), - model, - "resultMap" - ); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + Map content = new HashMap<>(); + + //검색조건 > 쇼핑몰 + List SopmalCdNmList = boMaSopmalService.selectBOSopmalCdNm(); + content.put("SopmalCdNmList", SopmalCdNmList); + + vo.setUpperCtgryId("2"); + // 카테고리 depth1 + List goodsCategoryList = boMaCtgryService.selectGoodsCategoryList(vo); + content.put("goodsCategoryList", goodsCategoryList); + + + // 노출 + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("EXPSR"); + List cgo014List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("expsrCdList", cgo014List); + + // 판매상태 + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("GOODS_STTUS"); + List cgo012List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("goodsDftinfoSttusList", cgo012List); + + // 재고에 따른 판매 + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("INVNTRY_POLICY"); + List cgo134List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("goodsDftinfoInvntryPolicyList", cgo134List); + + // 상품아이콘 + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("GOODS_ICON"); + List iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("iconList", iconList); + + // 실시간수량배너구분코드 + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("RLTM_QY_BANNER_DV"); + List rltmQyBannerDvList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("rltmQyBannerDvList", rltmQyBannerDvList); + + //브랜드 목록조회 + maComncdVO.setGroupCd("BRAND"); + List brandList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("brandList", brandList); + + //EP 목록조회 + maComncdVO.setGroupCd("GOODS_EP_DV"); + List epList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("epList", epList); + + + //배송그룹 + BODlvygrpVO dlvyGroup = new BODlvygrpVO(); + dlvyGroup.setSopmalCd(vo.getSopmalCd()); + List dlvyGrpList = boDlvygrpService.selectBODlvyGroupAllList(dlvyGroup); + content.put("dlvyGrpList", dlvyGrpList); + + content.put("BOGoodsVO", vo); + + //공용정보목록조회 + BOCmnuseVO cmnuseVo = new BOCmnuseVO(); + cmnuseVo.setSopmalCd(vo.getSopmalCd()); + List infoList = bOCmnuseService.selectBOCmnuseInfoList(cmnuseVo); + content.put("infoList", infoList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsListForm", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/GoodsSrchRForm"; } @@ -78,14 +194,15 @@ public class GoodsController { @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsSrchList") public String selectGoodsSrchList(HttpServletRequest request, - GoodsVO vo, + BOGoodsVO vo, ModelMap model) { - - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsList", vo), - model, - "resultMap" - ); + Map content = selectBOUserGoodsList(vo); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsList", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/GoodsSrchR"; } @@ -95,13 +212,27 @@ public class GoodsController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectSrchGoodsNm") - public ResponseEntity selectSrchGoodsNm(GoodsVO vo) { + @RequestMapping(value = "/selectSrchGoodsNm", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSrchGoodsNm(BOGoodsVO vo) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + Map content = new HashMap<>(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOSrchGoodsNm", vo), - ReplyFromResrc::getReply + List list = service.selectBOSrchGoodsNm(vo); + content.put("list", list); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOSrchGoodsNm", vo), +// ReplyFromResrc::getReply +// ); } @@ -114,14 +245,86 @@ public class GoodsController { @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsListForm") public String selectGoodsListForm(HttpServletRequest request, - GoodsVO vo, + BOGoodsVO vo, ModelMap model) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsListForm", vo), - model, - "resultMap" - ); + Map content = new HashMap<>(); + //검색조건 > 쇼핑몰 + List SopmalCdNmList = boMaSopmalService.selectBOSopmalCdNm(); + content.put("SopmalCdNmList", SopmalCdNmList); + + // 카테고리 depth1 + List goodsCategoryList = boMaCtgryService.selectGoodsSopmalCatgryList(vo); + content.put("goodsCategoryList", goodsCategoryList); + + //검색한 카테고리 정보로 vo 세팅 + if(!CollectionUtils.isEmpty(goodsCategoryList)){ + vo.setUpperCtgryId(goodsCategoryList.get(0).get("baseCtgryId").toString()); + vo.setCtgryId(goodsCategoryList.get(0).get("baseCtgryId").toString()); + }else{ + vo.setUpperCtgryId("0"); + vo.setCtgryId("0"); + } + + + //상품목록 > 카테고리 배너 조회 + DataMap categoryBanner = boMaCtgryService.selectGoodsSopmalCatgryBanner(vo); + content.put("ctgryBanner", categoryBanner); + + // 노출 + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("EXPSR"); + List cgo014List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("expsrCdList", cgo014List); + + // 판매상태 + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("GOODS_STTUS"); + List cgo012List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("goodsDftinfoSttusList", cgo012List); + + // 재고에 따른 판매 + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("INVNTRY_POLICY"); + List cgo134List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("goodsDftinfoInvntryPolicyList", cgo134List); + + // 상품아이콘 + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("GOODS_ICON"); + List iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("iconList", iconList); + + // 실시간수량배너구분코드 + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("RLTM_QY_BANNER_DV"); + List rltmQyBannerDvList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("rltmQyBannerDvList", rltmQyBannerDvList); + + //배송그룹 + BODlvygrpVO dlvyGroup = new BODlvygrpVO(); + dlvyGroup.setSopmalCd(vo.getSopmalCd()); + List dlvyGrpList = boDlvygrpService.selectBODlvyGroupAllList(dlvyGroup); + content.put("dlvyGrpList", dlvyGrpList); + + content.put("BOGoodsVO", vo); + + //공용정보목록조회 + BOCmnuseVO cmnuseVo = new BOCmnuseVO(); + cmnuseVo.setSopmalCd(vo.getSopmalCd()); + List infoList = bOCmnuseService.selectBOCmnuseInfoList(cmnuseVo); + content.put("infoList", infoList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsListForm", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/GoodsListRForm"; } @@ -134,14 +337,15 @@ public class GoodsController { @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsList") public String selectGoodsList(HttpServletRequest request, - GoodsVO vo, + BOGoodsVO vo, ModelMap model) { - - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsList", vo), - model, - "resultMap" - ); + Map content = selectBOUserGoodsList(vo); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsList", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/GoodsListR"; } @@ -153,15 +357,20 @@ public class GoodsController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectGoodsListInqire") + @RequestMapping(value = "/selectGoodsListInqire", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectGoodsListIns(HttpServletRequest request, - GoodsVO vo, + BOGoodsVO vo, ModelMap model) { - - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsList", vo), - ReplyFromResrc::getReply + Map content = selectBOUserGoodsList(vo); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsList", vo), +// ReplyFromResrc::getReply +// ); } @@ -173,7 +382,7 @@ public class GoodsController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsDtl") - public String selectGoodsDtl(HttpServletRequest request, GoodsVO vo, ModelMap model) { + public String selectGoodsDtl(HttpServletRequest request, BOGoodsVO vo, ModelMap model) { //광고유입코드 저장 if(!StringUtil.isEmpty((String) request.getAttribute("adTraceCd"))){ @@ -190,31 +399,119 @@ public class GoodsController { vo.setEnv((String) request.getAttribute("env")); } + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setMbrDvCd(user.getMbrDvCd()); + if(user.getUserInnb() <= 0){ + vo.setMbrInnb(""); + }else{ + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + } - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsDtlInfo", vo) - ); + DataMap timeEvt = new DataMap(); + List couponInfo = new ArrayList<>(); + List goodsReleateInfo = new ArrayList<>(); + List goodsBannerList = new ArrayList<>(); + DataMap mbrGrad = new DataMap(); + + + // 상세 조회 + DataMap goodsDtl = service.selectBOGoodsDtlInfo(vo); + + //상품 옵션 조회 + DataMap goodsOptList = service.selectBOGoodsOptionList(vo); + + //타임 세일 + timeEvt = service.selectGoodsTimeEvt(vo); + + //상품 쿠폰 정보 조회 + couponInfo = service.selectBOGoodsCouponInfo(vo); + + //함께하면 좋은 상품 + goodsReleateInfo = service.selectBoGoodsRelateInfo(vo); + + //회원등급 조회 + mbrGrad = service.selectMbrGrad(vo); + + //쇼핑몰 설정 조회 + BOSetupOrdrVO boOrdrVO = new BOSetupOrdrVO(); + boOrdrVO.setSopmalCd(vo.getSopmalCd()); + Map bOOrdrSetupList = boOrdrMngrService.selectBOOrdrSetupList(boOrdrVO); + // 장바구니구분코드 + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("CART_DV"); + List cartDvList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + + + //해당 상품 이벤트배너조회 + List evtBannerList = new ArrayList<>(); + BOPurchsEvtVO purchsEvtVO = new BOPurchsEvtVO(); + purchsEvtVO.setGoodsInnb(String.valueOf(vo.getGoodsInnb())); + purchsEvtVO.setSopmalCd(vo.getSopmalCd()); + evtBannerList = boPurchsEvtService.selectBOEvtBannerImg(purchsEvtVO); + + //해당상품 배너 조회 + goodsBannerList = service.selectBOGoodsBannerDtl(vo); + + //리뷰, qna 건수 및 포토리뷰 조회 + DataMap bbscttInfo = new DataMap(); + BOGnrlbbscttVO bbsctt = new BOGnrlbbscttVO(); + bbsctt.setSopmalCd(vo.getSopmalCd()); + bbsctt.setSortDv("recent"); + bbsctt.setGoodsInnb(String.valueOf(vo.getGoodsInnb())); + bbscttInfo = boGnrlbbscttService.selectBOGoodsDtlBbscttInfo(bbsctt); + + + //상품 조회수 집계 + service.updateGoodsViewCnt(vo); + + //담기 + Map content = new HashMap<>(); + content.put("goodsDtl", goodsDtl); + content.put("evtBannerList", evtBannerList); + content.put("goodsOptList", goodsOptList); + content.put("GoodsRelateInfo", goodsReleateInfo); + content.put("couponInfo",couponInfo); + content.put("timeEvt", timeEvt); + content.put("cartDvList", cartDvList); + content.put("goodsBannerList", goodsBannerList); + content.put("mbrGrad", mbrGrad); + content.put("bbscttInfo", bbscttInfo); + content.put("adTraceCd", vo.getAdTraceCd()); + content.put("epCd", vo.getEpCd()); + content.put("sopmalCd", vo.getSopmalCd()); + content.put("bOOrdrSetupList", bOOrdrSetupList); + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsDtlInfo", vo) +// ); String kakaoKey = ""; - if(resultMap.containsKey("sopmalCd")){ - kakaoKey = kakaoProperties.getKeyForDomain(resultMap.get("sopmalCd").toString()); + if(content.containsKey("sopmalCd")){ + kakaoKey = kakaoProperties.getKeyForDomain(content.get("sopmalCd").toString()); } // 네이버 페이 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 boNpayConfigVO = new BONpayConfigVO(); + boNpayConfigVO.setSopmalCd(user.getSopmalCd()); + DataMap naverKey = new DataMap(); + naverKey = boNpayConfigService.loadNpayConfigDetail(boNpayConfigVO); + naverKey.put("naverPayYn", boMaSopmalService.selectBONpayUseAtByShop(boNpayConfigVO.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"); model.addAttribute("kakaoKey", kakaoKey); - model.addAttribute("resultMap", resultMap); + model.addAttribute("resultMap", content); // 네이버 페이 사용 여부 model.addAttribute("naverPayYn", naverKey.get("naverPayYn").toString()); // 네이버 페이 공통인증키 @@ -222,8 +519,6 @@ public class GoodsController { // 네이버 페이 BUTTON_KEY model.addAttribute("buttonKey", naverMap.get("buttonKey").toString()); - - return Util.getDeviceType(request)+"/goods/GoodsDtlR"; } @@ -235,13 +530,26 @@ public class GoodsController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsCouponListPopup") - public String selectCouponListPopup(HttpServletRequest request, @RequestBody GoodsVO vo, ModelMap model) { + public String selectCouponListPopup(HttpServletRequest request, @RequestBody BOGoodsVO vo, ModelMap model) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setMbrDvCd(user.getMbrDvCd()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsCouponListPopup", vo), - model, - "resultMap" - ); + Map content = new HashMap<>(); + List couponList = new ArrayList<>(); + couponList = service.selectBOGoodsCouponInfo(vo); + content.put("couponList",couponList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsCouponListPopup", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/couponListPopupR"; } @@ -253,13 +561,32 @@ public class GoodsController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectGoodsOptnInfo") - public ResponseEntity selectGoodsOptnInfo(HttpServletRequest request, @RequestBody GoodsVO vo, ModelMap model) { + @RequestMapping(value = "/selectGoodsOptnInfo", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGoodsOptnInfo(HttpServletRequest request, @RequestBody BOGoodsVO vo, ModelMap model) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setSopmalCd(user.getSopmalCd()); + vo.setMbrDvCd(user.getMbrDvCd()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsOptnInfo", vo), - ReplyFromResrc::getReply + Map content = new HashMap<>(); + List goodsOptnList = new ArrayList<>(); + goodsOptnList = service.selectBOGoodsOptionDtl(vo); + content.put("result","success"); + content.put("goodsOptnList",goodsOptnList); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsOptnInfo", vo), +// ReplyFromResrc::getReply +// ); } @@ -272,12 +599,14 @@ public class GoodsController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectRelateGoodsPopup") - public String selectRelateGoodsPopup(HttpServletRequest request, @RequestBody GoodsVO vo,ModelMap model) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", vo), - model, - "relateResultMap" - ); + public String selectRelateGoodsPopup(HttpServletRequest request, @RequestBody BOGoodsVO vo,ModelMap model) { + Map content = selectBORelateGoodsPopup(vo); + model.addAttribute("relateResultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", vo), +// model, +// "relateResultMap" +// ); return Util.getDeviceType(request)+"/goods/RelateGoodsPopupR"; } @@ -290,13 +619,14 @@ public class GoodsController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectAddCartGoodsPopup") - public String selectAddCartGoodsPopup(HttpServletRequest request, @RequestBody GoodsVO vo, ModelMap model) { - - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", vo), - model, - "addCartResultMap" - ); + public String selectAddCartGoodsPopup(HttpServletRequest request, @RequestBody BOGoodsVO vo, ModelMap model) { + Map content = selectBORelateGoodsPopup(vo); + model.addAttribute("addCartResultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", vo), +// model, +// "addCartResultMap" +// ); return Util.getDeviceType(request)+"/goods/GoodsAddCartPopUpR"; } @@ -304,37 +634,65 @@ public class GoodsController { /** * 상품 상세 > 리뷰 혜택 정보 조회 - * @param vo + * @param bbsctt * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectRvwBnefInfo") - public ResponseEntity selectRvwBnefInfo(RvwVO vo) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBORvwBnefInfo", vo), - ReplyFromResrc::getReply - ); + @RequestMapping(value = "/selectRvwBnefInfo", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectRvwBnefInfo(BOGnrlbbscttVO bbsctt) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + + /*리뷰 조회 폼*/ + DataMap rvwBnefInfo = new DataMap(); + rvwBnefInfo = boGnrlbbscttService.selectBORvwBnefInfo(bbsctt); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(rvwBnefInfo)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBORvwBnefInfo", vo), +// ReplyFromResrc::getReply +// ); } /** * 상품 상세 > 리뷰 목록 조회 폼 * - * @param vo + * @param bbsctt * @param model * @return */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsDtlRvwListForm") - public String selectGoodsDtlRvwListForm(HttpServletRequest request, RvwVO vo, ModelMap model) { + public String selectGoodsDtlRvwListForm(HttpServletRequest request, BOGnrlbbscttVO bbsctt, ModelMap model) { if(!"sopmal".equals(Util.getDeviceType(request))){ //모바일일 시 같이 파일 같이 가져오기 - vo.setDiviceDv("mobile"); + bbsctt.setDiviceDv("mobile"); } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwForm", vo), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + + /*리뷰 조회 폼*/ + Map rvwInfo = new HashMap(); + rvwInfo = boGnrlbbscttService.selectBOGoodsRvwForm(bbsctt); + + /*리뷰 혜택 조회*/ + DataMap rvwBnefInfo = new DataMap(); + rvwBnefInfo = boGnrlbbscttService.selectBORvwBnefInfo(bbsctt); + + Map content = new HashMap(); + content.put("rvwInfo", rvwInfo); + content.put("rvwBnefInfo", rvwBnefInfo); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwForm", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/RvwListRForm"; } @@ -342,18 +700,20 @@ public class GoodsController { /** * 상품 상세 > 리뷰 목록 조회 * - * @param vo + * @param bbsctt * @param model * @return */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsDtlRvwList") - public String selectGoodsDtlRvwList(HttpServletRequest request, RvwVO vo, ModelMap model) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwList", vo), - model, - "resultMap" - ); + public String selectGoodsDtlRvwList(HttpServletRequest request, BOGnrlbbscttVO bbsctt, ModelMap model) { + DataMap content = selectBOGoodsRvwList(bbsctt); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwList", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/RvwListR"; } @@ -363,14 +723,20 @@ public class GoodsController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectGoodsDtlRvwListAjax") - public ResponseEntity selectGoodsDtlRvwListAjax(GnrlBbscttVO vo) { + @RequestMapping(value = "/selectGoodsDtlRvwListAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGoodsDtlRvwListAjax(BOGnrlbbscttVO vo) { //게시글 노출 항목 설정값과 게시판 목록 조회 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwList", vo), - ReplyFromResrc::getReply + DataMap content = selectBOGoodsRvwList(vo); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwList", vo), +// ReplyFromResrc::getReply +// ); } @@ -384,16 +750,18 @@ public class GoodsController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsDtlStorePickDtl") - public String selectGoodsDtlStorePickDtl(HttpServletRequest request, RvwVO vo, ModelMap model) { - + public String selectGoodsDtlStorePickDtl(HttpServletRequest request, BOGnrlbbscttVO vo, ModelMap model) { vo.setPageIndex(1); vo.setPageUnit(100); vo.setBstAt("Y"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwPhoto", vo), - model, - "resultMap" - ); + + DataMap content = selectBOGoodsRvwPhoto(vo); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwPhoto", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/StorePickDtlR"; } @@ -406,12 +774,14 @@ public class GoodsController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsDtlRvwPhoto") - public String selectGoodsDtlRvwPhoto(HttpServletRequest request, RvwVO vo, ModelMap model) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwPhoto", vo), - model, - "resultMap" - ); + public String selectGoodsDtlRvwPhoto(HttpServletRequest request, BOGnrlbbscttVO vo, ModelMap model) { + DataMap content = selectBOGoodsRvwPhoto(vo); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwPhoto", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/RvwPhotoListR"; } @@ -422,12 +792,18 @@ public class GoodsController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectGoodsDtlRvwPhotoAjax") - public ResponseEntity selectGoodsDtlRvwPhotoAjax(RvwVO vo) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwPhoto", vo), - ReplyFromResrc::getReply + @RequestMapping(value = "/selectGoodsDtlRvwPhotoAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGoodsDtlRvwPhotoAjax(BOGnrlbbscttVO vo) { + DataMap content = selectBOGoodsRvwPhoto(vo); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwPhoto", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -438,31 +814,37 @@ public class GoodsController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsDtlQnaList") - public String selectGoodsDtlQnaList(HttpServletRequest request, GnrlBbscttVO vo, ModelMap model) { - - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsQnaList", vo), - model, - "resultMap" - ); + public String selectGoodsDtlQnaList(HttpServletRequest request, BOGnrlbbscttVO vo, ModelMap model) { + DataMap content = selectBOGoodsQnaList(vo); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsQnaList", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/QnaListR"; } /** * 상품 상세 > QnA목록조회 ajax * @param vo - * @param model * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/selectGoodsDtlQnaListAjax") - public ResponseEntity selectGoodsDtlQnaListAjax(GnrlBbscttVO vo) { + @RequestMapping(value = "/selectGoodsDtlQnaListAjax", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGoodsDtlQnaListAjax(BOGnrlbbscttVO vo) { //게시글 노출 항목 설정값과 게시판 목록 조회 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsQnaList", vo), - ReplyFromResrc::getReply + DataMap content = selectBOGoodsQnaList(vo); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsQnaList", vo), +// ReplyFromResrc::getReply +// ); } @@ -474,15 +856,188 @@ public class GoodsController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectGoodsReturnInfo") - public String selectGoodsReturnInfo(HttpServletRequest request, GoodsVO vo, ModelMap model) { + public String selectGoodsReturnInfo(HttpServletRequest request, BOGoodsVO vo, ModelMap model) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGetGoodsCmnuseInfo", vo), - model, - "resultMap" - ); + // 상세조회 + DataMap goodsCmnuseInfo = new DataMap(); + goodsCmnuseInfo = service.selectBOGetGoodsCmnuseInfo(vo); + + model.addAttribute("resultMap", goodsCmnuseInfo); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGetGoodsCmnuseInfo", vo), +// model, +// "resultMap" +// ); return Util.getDeviceType(request)+"/goods/ReturnInfoR"; } + + /** + * bo로직 사용자 > 상품목록조회 + */ + public Map selectBOUserGoodsList(BOGoodsVO vo) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setMbrDvCd(user.getMbrDvCd()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setGoodsKndCd("01"); + + // 페이징 객체 생성 & 페이징정보 할당 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(vo.getPageIndex()); + paginationInfo.setRecordCountPerPage(vo.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + vo.setPaginationInfo(paginationInfo); + vo.setFirstIndex(paginationInfo.getFirstRecordIndex()); + vo.setLastIndex(paginationInfo.getLastRecordIndex()); + vo.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + + // 목록 조회 + List list = service.selectBOUserGoodsList(vo); + + Map content = new HashMap<>(); + content.put("BOGoodsVO", vo); + content.put("list", list); + content.put("paginationInfo", vo.getPaginationInfo()); + + return content; + } + + /** + * bo로직 사용자 > 상품 상세 조회 > 관련 상품 정보 조회 + */ + public Map selectBORelateGoodsPopup(BOGoodsVO vo) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + + Map content = new HashMap<>(); + DataMap optnList = new DataMap(); + DataMap goodsDtl = new DataMap(); + optnList = service.selectBOGoodsOptionList(vo); + goodsDtl = service.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); + + return content; + } + + /** + * bo로직 상품 상세 > 리뷰 조회 + */ + public DataMap selectBOGoodsRvwList(BOGnrlbbscttVO bbsctt) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + + // 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 = boGnrlbbscttService.selectBOGoodsRvwList(bbsctt); + + DataMap content = new DataMap(); + content.put("bbscttVO", bbsctt); + content.put("resultList", resultList); + content.put("paginationInfo", bbsctt.getPaginationInfo()); + return content; + } + + /** + * bo로직 상품 상세 > 포토 리뷰 조회 + */ + public DataMap selectBOGoodsRvwPhoto(BOGnrlbbscttVO bbsctt) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + + // 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 = boGnrlbbscttService.selectBOGoodsRvwPhoto(bbsctt); + + DataMap content = new DataMap(); + content.put("bbscttVO", bbsctt); + content.put("resultList", resultList); + content.put("paginationInfo", bbsctt.getPaginationInfo()); + + return content; + } + + /** + * bo로직 상품상세 > 상풍 qna 목록 조회 + */ + public DataMap selectBOGoodsQnaList(BOGnrlbbscttVO bbsctt) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setSopmalCd(user.getSopmalCd()); + if (user.getUserInnb() > 0) { + bbsctt.setRegusr(user.getUserInnb()); + bbsctt.setRegusrDvCd("01"); + } 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 = boGnrlbbscttService.selectBOGoodsQnaList(bbsctt); + + // 분류 조회 + List itmList = new ArrayList<>(); + itmList = boGnrlbbscttService.selectBOBbscttItmInqire(bbsctt); + + DataMap content = new DataMap(); + content.put("resultList", resultList); + content.put("bbscttVO", bbsctt); + content.put("itmList", itmList); + content.put("paginationInfo", bbsctt.getPaginationInfo()); + return content; + } + } diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/main/controller/MainController.java b/src/main/java/com/wb/domainserver/domain/sopmal/main/controller/MainController.java index e044e54a..20f7fb0d 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/main/controller/MainController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/main/controller/MainController.java @@ -3,9 +3,23 @@ package com.wb.domainserver.domain.sopmal.main.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.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.ordr.ordr.service.BOOrdrService; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrDlvyVO; +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.setup.site.service.BOSiteService; import com.wb.domainserver.domain.gcone.setup.site.vo.BOPrevewVO; import com.wb.domainserver.domain.gcone.setup.site.vo.BOSiteVO; +import com.wb.domainserver.domain.itrnt.str.service.BOItrntStrService; +import com.wb.domainserver.domain.itrnt.str.vo.BOItrntStrVO; import com.wb.domainserver.domain.sample.vo.PrevewVO; import com.wb.domainserver.domain.sopmal.main.vo.BrandVO; import com.wb.domainserver.domain.sopmal.main.vo.MaSopmalVO; @@ -13,13 +27,17 @@ import com.wb.domainserver.domain.sopmal.main.vo.MainVO; import com.wb.domainserver.domain.sopmal.main.vo.StrVO; import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrDlvyVO; import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyRefundVO; +import com.wb.domainserver.exception.WnbtRestException; +import com.wb.domainserver.response.ApiResponse; import com.wb.domainserver.response.WnbtResponse; +import com.wb.domainserver.response.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.dataaccess.DataMap; import com.wb.domainserver.util.util.Util; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; @@ -27,13 +45,17 @@ import jakarta.servlet.http.HttpSession; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +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.MultiValueMap; import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import java.math.BigInteger; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -43,9 +65,6 @@ import java.util.Map; @Controller public class MainController { - @Autowired - private BOSiteService service; - @Autowired WnbtWebClientResponseHandler responseHandler; @@ -61,7 +80,27 @@ public class MainController { @Autowired private KakaoProperties kakaoProperties; - @Policy(AuthPolicy.PUBLIC) + @Autowired + private PaginationProperties paginationProperties; + + @Autowired + private BOOrdrService service; + @Autowired + private BOCommonService commonService; + @Autowired + private BOSiteService boSiteService; + @Autowired + private BOMaComncdService bOMaComncdService; + @Autowired + private BORtngudrefndService boRtngudrefndService; + @Autowired + private BOItrntStrService boItrntStrService; + @Autowired + private BOMaSopmalService boMaSopmalService; + @Autowired + private BOMbrService boMbrService; + + @Policy(AuthPolicy.PUBLIC) @RequestMapping(value= {"/","/index", "/sopmal/index"}) public String index(HttpServletRequest request, ModelMap model, BOPrevewVO prevewVO){ PaginationInfo paginationInfo = new PaginationInfo(); @@ -133,7 +172,7 @@ public class MainController { siteVO.setCookieValArr(prevewVO.getCookieValArr()); siteVO.setEnv(prevewVO.getEnv()); Map message = new HashMap<>(); - message = service.selectBOMainSiteDesignListInqire(siteVO); + message = boSiteService.selectBOMainSiteDesignListInqire(siteVO); message.put("loginFlag", user.getMbrId()); model.addAttribute("resultMap", message); @@ -164,19 +203,38 @@ public class MainController { * @return OrdrDtlR.jsp */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/sopmal/main/selectNMbrMbtlnbInqire") - public ResponseEntity selectNMbrMbtlnbInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception { -// responseHandler.handleResponse( -// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBONMbrMbtlnbInqire", ordrDlvyVO), -// model, -// "data" -// ); - model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO)); + @RequestMapping(value="/sopmal/main/selectNMbrMbtlnbInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectNMbrMbtlnbInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO vo) throws Exception { + model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(vo)); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBONMbrMbtlnbInqire", ordrDlvyVO), - ReplyFromResrc::getReply + BOOrdrDlvyVO ordrDlvyVO = new BOOrdrDlvyVO(); + ordrDlvyVO.setOrdrInnb(vo.getOrdrInnb()); + ordrDlvyVO.setMbtlnb(vo.getMbtlnb()); + ordrDlvyVO.setSopmalCd(vo.getSopmalCd()); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrDlvyVO.setSopmalCd(user.getSopmalCd()); + } + ordrDlvyVO.setMbrInnb(BigInteger.valueOf(user.getUserInnb())); + ordrDlvyVO.setMbrDvCd(user.getMbrDvCd()); + + String secretKey = commonService.selectSecretkey(); + ordrDlvyVO.setSecretKey(secretKey); + Map message = service.selectBONMbrMbtlnbInqire(ordrDlvyVO); + if ("N".equals(message.get("confirmAt"))) { + throw new WnbtRestException("휴대폰번호가 일치하지 않습니다."); + } + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBONMbrMbtlnbInqire", ordrDlvyVO), +// ReplyFromResrc::getReply +// ); } @@ -186,13 +244,26 @@ public class MainController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/sopmal/main/selectNMbrOrdrDtlInqire") - public String selectNMbrOrdrDtlInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception { + public String selectNMbrOrdrDtlInqire(HttpServletRequest request, ModelMap model, BOOrdrDlvyVO ordrDlvyVO) throws Exception { log.debug("비회원 주문 조회 파라미터 =>{}", ordrDlvyVO); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrDtlInqire", ordrDlvyVO), - model, - "data" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + ordrDlvyVO.setSopmalCd(user.getSopmalCd()); + } + Map message = service.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" +// ); String referer = request.getHeader("referer"); //api에서 넘어 올 시 @@ -216,14 +287,69 @@ public class MainController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value="/sopmal/main/selectNMbrRtngudCanclRefndDtlInqire") - public String selectNMbrRtngudCanclRefndDtlInqire(MyRefundVO refundVO, ModelMap model, HttpServletRequest request){ + public String selectNMbrRtngudCanclRefndDtlInqire(MyRefundVO refundVO, BORtngudrefndVO boRtngudrefndVO, ModelMap model, HttpServletRequest request){ refundVO.setServerDv("sopmal"); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + boRtngudrefndVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBONMbrRtngudRefndDtlInqire", refundVO), - model, - "resultMap" - ); + // 공통코드 호출 + 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("KCP_BANK_CD"); // KCP 은행코드 + List kcpBankCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + bOMaComncdVO.setGroupCd("TOSS_BANK_CD"); // TOSS 은행코드 + List toosBankCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + + // 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); + + 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/selectBONMbrRtngudRefndDtlInqire", refundVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", refundVO); return Util.getDeviceType(request) + "/mpage/ordr/NmbrRtngudCanclRefndDtlR"; @@ -237,13 +363,38 @@ public class MainController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/sopmal/main/selectNMbrOrdrListInqireAjax") - public String selectNMbrOrdrListInqireAjax(ModelMap model, MyOrdrDlvyVO ordrDlvyVO) { + public String selectNMbrOrdrListInqireAjax(ModelMap model, 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()); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO), - model, - "data" - ); + 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 = service.selectMbrOrdrListInqireAjax(ordrDlvyVO); + + Map content = new HashMap<>(); + + content.put("resultList", resultList); + content.put("paginationInfo", ordrDlvyVO.getPaginationInfo()); + + model.addAttribute("data", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO), +// model, +// "data" +// ); return "sopmal/mpage/ordr/OrdrDlvyListRList"; } @@ -267,20 +418,28 @@ public class MainController { /** * 매장 안내 조회 - * @param gradVO + * @param strVO * @param model * @return */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/sopmal/main/selectStrGuidance") - public String selectStrGuidance(StrVO strVO, ModelMap model, HttpServletRequest request) { - strVO.setServerDv("sopmal"); + public String selectStrGuidance(BOItrntStrVO strVO, ModelMap model, HttpServletRequest request) { + strVO.setServerDv("sopmal"); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + strVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrGuidance", strVO), - model, - "resultMap" - ); + // service 호출 + Map contents = new HashMap<>(); + contents = boItrntStrService.selectBOStrGuidance(strVO); + + model.addAttribute("resultMap", contents); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrGuidance", strVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", strVO); // return "sopmal/main/StrGuidanceR"; @@ -290,20 +449,32 @@ public class MainController { /** * 매장 검색 목록 폼 이동 - * @param gradVO + * @param strVO * @param model * @return */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/sopmal/main/selectStrListSrchForm") - public String selectStrListSrchForm(StrVO strVO, ModelMap model, HttpServletRequest request) { + public String selectStrListSrchForm(BOItrntStrVO strVO, ModelMap model, HttpServletRequest request) { strVO.setServerDv("sopmal"); + Map contents = new HashMap<>(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrListForm", strVO), - model, - "resultMap" - ); + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("SIDO"); // 시도 코드 + List sidoCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + contents.put("sidoCdList", sidoCdList); + bOMaComncdVO.setGroupCd("GUNGU"); // 군구 코드 + List gunguCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + contents.put("gunguCdList", gunguCdList); + contents.put("paramVO", strVO); + + model.addAttribute("resultMap", contents); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrListForm", strVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", strVO); // return "sopmal/main/StrSrchListFormR"; @@ -313,20 +484,21 @@ public class MainController { /** * 매장 검색 목록 조회 - * @param gradVO + * @param strVO * @param model * @return */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/sopmal/main/selectStrListInqire") - public String selectStrListInqire(StrVO strVO, ModelMap model, HttpServletRequest request) { + public String selectStrListInqire(BOItrntStrVO strVO, ModelMap model, HttpServletRequest request) { strVO.setServerDv("sopmal"); - - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrListInqire", strVO), - model, - "resultMap" - ); + Map content = selectBOStrListInqire(strVO); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrListInqire", strVO), +// model, +// "resultMap" +// ); model.addAttribute("paramVO", strVO); // return "sopmal/main/StrSrchListR"; @@ -337,55 +509,116 @@ public class MainController { /** * 마이페이지 > 매장 검색 목록 조회 > 스크롤 * @param strVO - * @param model * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/sopmal/main/selectStrListScrolInqire") - public ResponseEntity selectStrListScrolInqire(StrVO strVO) { - strVO.setServerDv("sopmal"); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrListInqire", strVO), - ReplyFromResrc::getReply - ); + @RequestMapping(value = "/sopmal/main/selectStrListScrolInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectStrListScrolInqire(BOItrntStrVO strVO) { + strVO.setServerDv("sopmal"); + Map content = selectBOStrListInqire(strVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrListInqire", strVO), +// ReplyFromResrc::getReply +// ); } + /** + * bo로직 매장 목록 조회 + */ + public Map selectBOStrListInqire (BOItrntStrVO itrntStrVO) { + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + itrntStrVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 - /** + Map contents = new HashMap<>(); + + // 페이징 객체 생성 & 페이징정보 할당 + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(itrntStrVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(itrntStrVO.getPageUnit()); + paginationInfo.setPageSize(paginationProperties.getPageSize()); + + itrntStrVO.setPaginationInfo(paginationInfo); + itrntStrVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + itrntStrVO.setLastIndex(paginationInfo.getLastRecordIndex()); + itrntStrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + + List resultList = boItrntStrService.selectBOStrListInqire(itrntStrVO); + + contents.put("paramVO", itrntStrVO); + contents.put("resultList", resultList); + contents.put("paginationInfo", itrntStrVO.getPaginationInfo()); + + return contents; + } + + + /** * 매장 검색 목록 폼 공통코드 반환 * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/sopmal/main/selecSidoGunguCmmnCdArray") - public ResponseEntity selecSidoGunguCmmnCdArray(StrVO strVO) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selecBOSidoGunguCmmnCdArray", strVO), - ReplyFromResrc::getReply - ); + @RequestMapping(value = "/sopmal/main/selecSidoGunguCmmnCdArray", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selecSidoGunguCmmnCdArray(BOItrntStrVO itrntStrVO) { + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + itrntStrVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + + // 공통코드 호출 + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("SIDO"); // 시도 코드 + List sidoCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + bOMaComncdVO.setGroupCd("GUNGU"); // 군구 코드 + List gunguCdList = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + // Map객체에 필요 정보 할당 + Map content = new HashMap<>(); + content.put("sidoCdList", sidoCdList); + content.put("gunguCdList", gunguCdList); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selecBOSidoGunguCmmnCdArray", strVO), +// ReplyFromResrc::getReply +// ); } /** * 매장 상세 조회 - * @param gradVO + * @param itrntStrVO * @param model * @return */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/sopmal/main/selectStrDtlInqire") - public String selectStrDtlInqire(StrVO strVO, ModelMap model, HttpServletRequest request) { - strVO.setServerDv("sopmal"); + public String selectStrDtlInqire(BOItrntStrVO itrntStrVO, ModelMap model, HttpServletRequest request) { + itrntStrVO.setServerDv("sopmal"); -// responseHandler.handleResponse( -// sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrDtlInqire", strVO), -// model, -// "resultMap" -// ); - model.addAttribute("strVO", strVO); + model.addAttribute("strVO", itrntStrVO); - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrDtlInqire", strVO) - ); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + itrntStrVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + + Map resultMap = new HashMap<>(); + DataMap result = boItrntStrService.selectBOStrDtlInqire(itrntStrVO); + + resultMap.put("paramVO", itrntStrVO); + resultMap.put("result", result); + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrDtlInqire", strVO) +// ); String kakaoKey = ""; if(resultMap.containsKey("paramVO")){ @@ -410,12 +643,18 @@ public class MainController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/sopmal/main/selectIndvdlInfoProcsCn") - public ResponseEntity selectIndvdlInfoProcsCn(MaSopmalVO maSopmalVO) { - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/sopmal/selectBOClauseInformationSopmal", maSopmalVO), - ReplyFromResrc::getReply - ); + @RequestMapping(value = "/sopmal/main/selectIndvdlInfoProcsCn", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectIndvdlInfoProcsCn(BOMaSopmalVO maSopmalVO) { + DataMap content = selectBOClauseInformationSopmal(maSopmalVO); + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/sopmal/selectBOClauseInformationSopmal", maSopmalVO), +// ReplyFromResrc::getReply +// ); } /** @@ -425,19 +664,43 @@ public class MainController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/sopmal/main/selectClause") - public String selectClause(MaSopmalVO vo, ModelMap model, HttpServletRequest request) { + public String selectClause(BOMaSopmalVO vo, ModelMap model, HttpServletRequest request) { - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/sopmal/selectBOClauseInformationSopmal", vo), - model, - "resultMap" - ); + DataMap content = selectBOClauseInformationSopmal(vo); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/sopmal/selectBOClauseInformationSopmal", vo), +// model, +// "resultMap" +// ); model.addAttribute("maSopmalVO",vo); return Util.getDeviceType(request) + "/main/ClauseDtlR"; } + /** + * bo로직 사용자 > 약관 내용 조회 + */ + public DataMap selectBOClauseInformationSopmal(BOMaSopmalVO vo) { + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setSopmalCd(user.getSopmalCd()); + + DataMap content = new DataMap(); + List clauseList = new ArrayList<>(); + clauseList = boMaSopmalService.selectBOClauseInformation(vo); + + /**약관구분 공통코드*/ + BOMaComncdVO bOMaComncdVO = new BOMaComncdVO(); + bOMaComncdVO.setGroupCd("STPLAT_DV"); + List stplat = bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO); + + content.put("clauseList", clauseList); + content.put("stplat", stplat); + + return content; + } + /** * 브랜드 스토리 * @@ -622,8 +885,8 @@ public class MainController { * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/sopmal/main/selectMbrInfo") - public ResponseEntity selectMbrInfo(HttpServletRequest request, MyOrdrDlvyVO ordrDlvyVO) { + @RequestMapping(value="/sopmal/main/selectMbrInfo", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMbrInfo(HttpServletRequest request, BOMbrVO vo) { // 쿠키를 가져옴 Cookie[] cookies = request.getCookies(); @@ -648,30 +911,66 @@ public class MainController { } String[] cookieValArr = filterList.toArray(new String[filterList.size()]); - ordrDlvyVO.setCookieValArr(cookieValArr); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO), - ReplyFromResrc::getReply + vo.setCookieValArr(cookieValArr); + + // 사용자 정보 추출 및 적용 + 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 ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO), +// ReplyFromResrc::getReply +// ); } - - - /** * 메인 화면 쇼핑몰 카테고리별 타입 * @return */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value="/sopmal/main/selectMainSiteDesignCtgryListInqire") - public ResponseEntity selectMainSiteDesignCtgryListInqire(HttpServletRequest request, MainVO vo) { + @RequestMapping(value="/sopmal/main/selectMainSiteDesignCtgryListInqire", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMainSiteDesignCtgryListInqire(HttpServletRequest request, BOSiteVO siteVO) { + Map message = new HashMap<>(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/ajax/gcone/setup/site/selectBOMainSiteDesignCtgryListInqire", vo), - ReplyFromResrc::getReply + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + siteVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드 + } + List case03 = boSiteService.selectBOMainSiteDesignCtgryListInqire(siteVO); + + message.put("resultMap", case03); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/ajax/gcone/setup/site/selectBOMainSiteDesignCtgryListInqire", vo), +// ReplyFromResrc::getReply +// ); } - - } \ No newline at end of file