diff --git a/src/main/java/com/wb/domainserver/common/ui/PaginationTag.java b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/PaginationTag.java similarity index 84% rename from src/main/java/com/wb/domainserver/common/ui/PaginationTag.java rename to src/main/java/com/wb/domainserver/common/mvc/tags/ui/PaginationTag.java index f29e2997..984df84a 100644 --- a/src/main/java/com/wb/domainserver/common/ui/PaginationTag.java +++ b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/PaginationTag.java @@ -1,10 +1,10 @@ -package com.wb.domainserver.common.ui; +package com.wb.domainserver.common.mvc.tags.ui; -import com.wb.domainserver.common.ui.pagination.*; -import com.wb.domainserver.common.ui.pagination.DefaultPaginationManager; -import com.wb.domainserver.common.ui.pagination.DefaultPaginationRenderer; -import com.wb.domainserver.common.ui.pagination.PaginationManager; -import com.wb.domainserver.common.ui.pagination.PaginationRenderer; +import com.wb.domainserver.common.mvc.tags.ui.pagination.*; +import com.wb.domainserver.common.mvc.tags.ui.pagination.DefaultPaginationManager; +import com.wb.domainserver.common.mvc.tags.ui.pagination.DefaultPaginationRenderer; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationManager; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationRenderer; import com.wb.domainserver.util.string.StringUtil; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.jsp.JspException; diff --git a/src/main/java/com/wb/domainserver/common/ui/pagination/AbstractPaginationRenderer.java b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/AbstractPaginationRenderer.java similarity index 98% rename from src/main/java/com/wb/domainserver/common/ui/pagination/AbstractPaginationRenderer.java rename to src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/AbstractPaginationRenderer.java index 24b01548..cd2ccb2f 100644 --- a/src/main/java/com/wb/domainserver/common/ui/pagination/AbstractPaginationRenderer.java +++ b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/AbstractPaginationRenderer.java @@ -1,4 +1,4 @@ -package com.wb.domainserver.common.ui.pagination; +package com.wb.domainserver.common.mvc.tags.ui.pagination; import java.text.MessageFormat; diff --git a/src/main/java/com/wb/domainserver/common/ui/pagination/DefaultPaginationManager.java b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/DefaultPaginationManager.java similarity index 91% rename from src/main/java/com/wb/domainserver/common/ui/pagination/DefaultPaginationManager.java rename to src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/DefaultPaginationManager.java index 8700dcf9..a1089a62 100644 --- a/src/main/java/com/wb/domainserver/common/ui/pagination/DefaultPaginationManager.java +++ b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/DefaultPaginationManager.java @@ -1,4 +1,4 @@ -package com.wb.domainserver.common.ui.pagination; +package com.wb.domainserver.common.mvc.tags.ui.pagination; import java.util.Map; diff --git a/src/main/java/com/wb/domainserver/common/ui/pagination/DefaultPaginationRenderer.java b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/DefaultPaginationRenderer.java similarity index 95% rename from src/main/java/com/wb/domainserver/common/ui/pagination/DefaultPaginationRenderer.java rename to src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/DefaultPaginationRenderer.java index c2deb397..1ccd9b9c 100644 --- a/src/main/java/com/wb/domainserver/common/ui/pagination/DefaultPaginationRenderer.java +++ b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/DefaultPaginationRenderer.java @@ -1,4 +1,4 @@ -package com.wb.domainserver.common.ui.pagination; +package com.wb.domainserver.common.mvc.tags.ui.pagination; /** * 페이징 리스트의 기본적인 포맷을 제공한다. diff --git a/src/main/java/com/wb/domainserver/common/ui/pagination/ImagePaginationRenderer.java b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/ImagePaginationRenderer.java similarity index 97% rename from src/main/java/com/wb/domainserver/common/ui/pagination/ImagePaginationRenderer.java rename to src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/ImagePaginationRenderer.java index bb4a473f..ed1453e6 100644 --- a/src/main/java/com/wb/domainserver/common/ui/pagination/ImagePaginationRenderer.java +++ b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/ImagePaginationRenderer.java @@ -1,4 +1,4 @@ -package com.wb.domainserver.common.ui.pagination; +package com.wb.domainserver.common.mvc.tags.ui.pagination; import jakarta.servlet.ServletContext; import org.springframework.web.context.ServletContextAware; diff --git a/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/PaginationInfo.java b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/PaginationInfo.java index 933cc18e..3f208cbf 100644 --- a/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/PaginationInfo.java +++ b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/PaginationInfo.java @@ -1,12 +1,10 @@ package com.wb.domainserver.common.mvc.tags.ui.pagination; -import java.io.Serializable; -import java.math.BigDecimal; -import java.math.RoundingMode; +import java.util.Arrays; /** * 페이징 처리를 위한 데이터 처리용 Bean - * + * * @author 박철민 * @since 2023-11-22 * @version 1.0 @@ -21,8 +19,7 @@ import java.math.RoundingMode; * * */ -public class PaginationInfo implements Serializable{ - private static final long serialVersionUID = 1L; +public class PaginationInfo { /** 현재 페이지 번호. */ private int currentPageNo; /** 한 페이지당 게시되는 게시물 건 수 */ @@ -32,6 +29,8 @@ public class PaginationInfo implements Serializable{ /** 페이지 리스트에 게시되는 페이지 건수 */ private int totalRecordCount; + private Integer[] pageUnitArr = {10, 50, 100, 200}; + public int getRecordCountPerPage() { return recordCountPerPage; } @@ -76,11 +75,8 @@ public class PaginationInfo implements Serializable{ private int lastRecordIndex; public int getTotalPageCount() { - BigDecimal totalRecordCount = new BigDecimal(getTotalRecordCount()); - BigDecimal recordCountPerPage = new BigDecimal(getRecordCountPerPage()); - - BigDecimal totalPageCount = totalRecordCount.divide(recordCountPerPage, RoundingMode.CEILING); - return totalPageCount.intValue(); + totalPageCount = ((getTotalRecordCount() - 1) / getRecordCountPerPage()) + 1; + return totalPageCount; } public int getFirstPageNo() { @@ -113,4 +109,12 @@ public class PaginationInfo implements Serializable{ lastRecordIndex = getCurrentPageNo() * getRecordCountPerPage(); return lastRecordIndex; } + + public Integer[] getPageUnitArr() { + return pageUnitArr.clone(); + } + + public void setPageUnitArr(Integer[] pageUnitArr) { + this.pageUnitArr = Arrays.copyOf(pageUnitArr, pageUnitArr.length); + } } diff --git a/src/main/java/com/wb/domainserver/common/ui/pagination/PaginationManager.java b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/PaginationManager.java similarity index 90% rename from src/main/java/com/wb/domainserver/common/ui/pagination/PaginationManager.java rename to src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/PaginationManager.java index 536afc0b..1583d1a4 100644 --- a/src/main/java/com/wb/domainserver/common/ui/pagination/PaginationManager.java +++ b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/PaginationManager.java @@ -1,4 +1,4 @@ -package com.wb.domainserver.common.ui.pagination; +package com.wb.domainserver.common.mvc.tags.ui.pagination; /** * PaginationRenderer의 구현체를 빈설정 파일을 참조하여 반환한다. diff --git a/src/main/java/com/wb/domainserver/common/ui/pagination/PaginationRenderer.java b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/PaginationRenderer.java similarity index 87% rename from src/main/java/com/wb/domainserver/common/ui/pagination/PaginationRenderer.java rename to src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/PaginationRenderer.java index 04f757ec..708f3995 100644 --- a/src/main/java/com/wb/domainserver/common/ui/pagination/PaginationRenderer.java +++ b/src/main/java/com/wb/domainserver/common/mvc/tags/ui/pagination/PaginationRenderer.java @@ -1,4 +1,4 @@ -package com.wb.domainserver.common.ui.pagination; +package com.wb.domainserver.common.mvc.tags.ui.pagination; /** * PaginationRenderer의 interface diff --git a/src/main/java/com/wb/domainserver/common/ui/pagination/PaginationInfo.java b/src/main/java/com/wb/domainserver/common/ui/pagination/PaginationInfo.java deleted file mode 100644 index d5a5ca75..00000000 --- a/src/main/java/com/wb/domainserver/common/ui/pagination/PaginationInfo.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.wb.domainserver.common.ui.pagination; - -import java.util.Arrays; - -/** - * 페이징 처리를 위한 데이터 처리용 Bean - * - * @author 박철민 - * @since 2023-11-22 - * @version 1.0 - * @see - * - *
- * == (Modification Information) == 개정이력
- *
- * 수정일 수정자 수정내용
- * ------- -------- ---------------------------
- * 2023-11-22 박철민 최초 생성
- *
- * 
- */ -public class PaginationInfo { - /** 현재 페이지 번호. */ - private int currentPageNo; - /** 한 페이지당 게시되는 게시물 건 수 */ - private int recordCountPerPage; - /** 한 페이지당 게시되는 게시물 건 수 */ - private int pageSize; - /** 페이지 리스트에 게시되는 페이지 건수 */ - private int totalRecordCount; - - private Integer[] pageUnitArr = {10, 50, 100, 200}; - - public int getRecordCountPerPage() { - return recordCountPerPage; - } - - public void setRecordCountPerPage(int recordCountPerPage) { - this.recordCountPerPage = recordCountPerPage; - } - - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - public int getCurrentPageNo() { - return currentPageNo; - } - - public void setCurrentPageNo(int currentPageNo) { - this.currentPageNo = currentPageNo; - } - - public void setTotalRecordCount(int totalRecordCount) { - this.totalRecordCount = totalRecordCount; - } - - public int getTotalRecordCount() { - return totalRecordCount; - } - - /** 페이지 개수 */ - private int totalPageCount; - /** 페이지 리스트의 첫 페이지 번호 */ - private int firstPageNoOnPageList; - /** 페이지 리스트의 마지막 페이지 번호 */ - private int lastPageNoOnPageList; - /** 페이징 SQL의 조건절에 사용되는 시작 rownum */ - private int firstRecordIndex; - /** 페이징 SQL의 조건절에 사용되는 마지막 rownum */ - private int lastRecordIndex; - - public int getTotalPageCount() { - totalPageCount = ((getTotalRecordCount() - 1) / getRecordCountPerPage()) + 1; - return totalPageCount; - } - - public int getFirstPageNo() { - return 1; - } - - public int getLastPageNo() { - return getTotalPageCount(); - } - - public int getFirstPageNoOnPageList() { - firstPageNoOnPageList = ((getCurrentPageNo() - 1) / getPageSize()) * getPageSize() + 1; - return firstPageNoOnPageList; - } - - public int getLastPageNoOnPageList() { - lastPageNoOnPageList = getFirstPageNoOnPageList() + getPageSize() - 1; - if (lastPageNoOnPageList > getTotalPageCount()) { - lastPageNoOnPageList = getTotalPageCount(); - } - return lastPageNoOnPageList; - } - - public int getFirstRecordIndex() { - firstRecordIndex = (getCurrentPageNo() - 1) * getRecordCountPerPage(); - return firstRecordIndex; - } - - public int getLastRecordIndex() { - lastRecordIndex = getCurrentPageNo() * getRecordCountPerPage(); - return lastRecordIndex; - } - - public Integer[] getPageUnitArr() { - return pageUnitArr.clone(); - } - - public void setPageUnitArr(Integer[] pageUnitArr) { - this.pageUnitArr = Arrays.copyOf(pageUnitArr, pageUnitArr.length); - } -} diff --git a/src/main/java/com/wb/domainserver/domain/admin/store/sopmal/mapper/BOMaSopmalMapper.java b/src/main/java/com/wb/domainserver/domain/admin/store/sopmal/mapper/BOMaSopmalMapper.java index 0d41d239..6693b403 100644 --- a/src/main/java/com/wb/domainserver/domain/admin/store/sopmal/mapper/BOMaSopmalMapper.java +++ b/src/main/java/com/wb/domainserver/domain/admin/store/sopmal/mapper/BOMaSopmalMapper.java @@ -196,4 +196,7 @@ public interface BOMaSopmalMapper { List selectSopmalGroupList(BOMaSopmalVO vo); Shop selectSopmalInfo(String sopmalCd); + + /*전체 쇼핑몰 목록*/ + List selectSopmalList(); } diff --git a/src/main/java/com/wb/domainserver/domain/admin/store/sopmal/service/BOMaSopmalService.java b/src/main/java/com/wb/domainserver/domain/admin/store/sopmal/service/BOMaSopmalService.java index ee9a3b33..b005f962 100644 --- a/src/main/java/com/wb/domainserver/domain/admin/store/sopmal/service/BOMaSopmalService.java +++ b/src/main/java/com/wb/domainserver/domain/admin/store/sopmal/service/BOMaSopmalService.java @@ -986,4 +986,9 @@ public class BOMaSopmalService { return mapper.selectSopmalInfo(sopmalCd); } + + public List selectSopmalList(){ + return mapper.selectSopmalList(); + } + } diff --git a/src/main/java/com/wb/domainserver/domain/auth/controller/AuthController.java b/src/main/java/com/wb/domainserver/domain/auth/controller/AuthController.java index 8ac35b9b..759d0c81 100644 --- a/src/main/java/com/wb/domainserver/domain/auth/controller/AuthController.java +++ b/src/main/java/com/wb/domainserver/domain/auth/controller/AuthController.java @@ -6,10 +6,12 @@ import com.wb.domainserver.response.WnbtResponse; import com.wb.domainserver.response.WnbtResponseBody; import com.wb.domainserver.security.authorization.annotation.AuthPolicy; import com.wb.domainserver.security.authorization.annotation.Policy; +import com.wb.domainserver.util.CookieUtils; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; @@ -27,25 +29,29 @@ public class AuthController { /** * 관리자 > 쇼핑몰 변경 * @param vo - * @param model + * @param request + * @param response * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/selectMngrSopmalSite") + @RequestMapping(value = "/selectMngrSopmalSite", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity selectMngrSopmalSite(@RequestBody AuthVO vo, HttpServletRequest request, HttpServletResponse response) { //기존 쿠기값 변경 - if(request.getCookies() != null) { - for(Cookie cookie : request.getCookies()){ - if("authSopmalCd".equals(cookie.getName())){ - cookie.setPath("/"); - cookie.setValue(vo.getSopmalCd()); - response.addCookie(cookie); - break; + CookieUtils.deleteCookie("authSopmalCd", "/", request, response); + CookieUtils.createCookie("authSopmalCd",vo.getSopmalCd(), "/", true, request, response); - } - } - } +// if(request.getCookies() != null) { +// for(Cookie cookie : request.getCookies()){ +// if("authSopmalCd".equals(cookie.getName())){ +// cookie.setPath("/mngr"); +// cookie.setValue(vo.getSopmalCd()); +// response.addCookie(cookie); +// break; +// +// } +// } +// } Map message = new HashMap<>(); message.put("result", "success"); diff --git a/src/main/java/com/wb/domainserver/domain/gcone/bbs/bbs/mapper/BOBbsMapper.java b/src/main/java/com/wb/domainserver/domain/gcone/bbs/bbs/mapper/BOBbsMapper.java index 2ee5dd17..05db326a 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/bbs/bbs/mapper/BOBbsMapper.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/bbs/bbs/mapper/BOBbsMapper.java @@ -2,6 +2,7 @@ package com.wb.domainserver.domain.gcone.bbs.bbs.mapper; import java.util.List; +import com.wb.domainserver.domain.mngr.bbs.bbsmngr.vo.BbsmngrVO; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/wb/domainserver/domain/gcone/bbs/bbs/service/BOBbsService.java b/src/main/java/com/wb/domainserver/domain/gcone/bbs/bbs/service/BOBbsService.java index 7fd6dd11..4e74fc23 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/bbs/bbs/service/BOBbsService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/bbs/bbs/service/BOBbsService.java @@ -8,6 +8,7 @@ import java.util.List; import com.wb.domainserver.domain.gcone.setup.gradbnef.mapper.BOGradbnefMapper; import com.wb.domainserver.domain.gcone.setup.gradbnef.vo.BOGradbnefVO; +import com.wb.domainserver.domain.mngr.bbs.bbsmngr.vo.BbsmngrVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; 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 c222d08b..5a1a9bfa 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 @@ -7,8 +7,10 @@ import java.util.List; import com.wb.domainserver.domain.comm.vo.AbstractVO; import com.wb.domainserver.util.dataaccess.DataMap; +import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; +import org.hibernate.validator.constraints.Length; @Data @EqualsAndHashCode(callSuper = false) @@ -49,6 +51,8 @@ public class BOCmVO extends AbstractVO { /** * 내용 */ + @NotBlank(message = "내용") + @Length(min = 0, max = 100, message = "내용") private String cn; /** * 비밀번호 diff --git a/src/main/java/com/wb/domainserver/domain/gcone/bbs/gnrlbbsctt/controller/BOGnrlbbscttController.java b/src/main/java/com/wb/domainserver/domain/gcone/bbs/gnrlbbsctt/controller/BOGnrlbbscttController.java index 723cbf06..84a5b134 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/bbs/gnrlbbsctt/controller/BOGnrlbbscttController.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/bbs/gnrlbbsctt/controller/BOGnrlbbscttController.java @@ -409,7 +409,7 @@ public class BOGnrlbbscttController { //상품 관련 if (delInfo.getGoodsInnb() != null) { BOGoodsVO goodsVO = new BOGoodsVO(); - goodsVO.setGoodsInnb(delInfo.getGoodsInnb()); + goodsVO.setGoodsInnb(String.valueOf(delInfo.getGoodsInnb())); goodsVO.setSopmalCd(bbsctt.getSopmalCd()); /*상품정보 > 상품후기건수 차감*/ goodsService.updateRvwRelateSm(goodsVO); @@ -421,7 +421,7 @@ public class BOGnrlbbscttController { if (!CollectionUtils.isEmpty(bbsctt.getGoodsInnbArr())) { for (String goodsInnb : bbsctt.getGoodsInnbArr()) { BOGoodsVO goodsVO = new BOGoodsVO(); - goodsVO.setGoodsInnb(Integer.valueOf(goodsInnb)); + goodsVO.setGoodsInnb(goodsInnb); goodsVO.setSopmalCd(bbsctt.getSopmalCd()); /*상품정보 > 상품후기건수 차감*/ @@ -840,7 +840,7 @@ public class BOGnrlbbscttController { for (String goodsInnb : bbsctt.getGoodsInnbArr()) { bbsctt.setGoodsInnb(goodsInnb); } - goodsVO.setGoodsInnb(Integer.valueOf(bbsctt.getGoodsInnb())); + goodsVO.setGoodsInnb(bbsctt.getGoodsInnb()); goodsVO.setSopmalCd(bbsctt.getSopmalCd()); if ("sopmal".equals(bbsctt.getServerDv())) { if ("rvw".equals(bbsctt.getRvwBbscttDv())) { 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 6b41cb3c..43bcdd87 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,8 +1,10 @@ package com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.vo; 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; import java.math.BigInteger; import java.util.Date; @@ -48,9 +50,14 @@ public class BOGnrlbbscttVO extends AbstractVO { /*관리자 명*/ private String mngrNm; /** 비밀번호 */ + @Length(min = 0, max = 20, message = "비밀번호") private String password; /** 제목 */ + @NotBlank(message = "제목") + @Length(min = 0, max = 100, message = "제목") private String sj; + @NotBlank(message = "내용") + @Length(max = 16777215, message = "내용") /** 내용 */ private String cn; /** 조회건수 */ @@ -65,6 +72,8 @@ public class BOGnrlbbscttVO extends AbstractVO { private Integer nonrecomendCnt; /** 정렬순서 */ private Integer sortOrdr; + /** 정렬순서여부 */ + private String sortOrdrAt; /*대표이미지 원본파일명*/ private String reprsntImgOrginlFilNm; /*대표이미지 시스템파일명*/ @@ -190,6 +199,8 @@ public class BOGnrlbbscttVO extends AbstractVO { private String[] itmInnbArr; /** 답변내용(배열) */ private String[] answCnArr; + /** 답변 여부(배열) */ + private String[] qesitmAtArr; /** * 첨부파일 정보 */ @@ -219,6 +230,16 @@ public class BOGnrlbbscttVO extends AbstractVO { private String represntFilAt; /*파일 수정여부*/ private String filChangeAt; + /*파일 수정여부*/ + private String represntFilChangeAt; + /*파일 설정 여부*/ + private String filAtch; + /*파일 확장자*/ + private String AcceptFileExtensions; + /*파일 첨부 허용 확장자*/ + private String filPermFilExtsn; + /*드롭존 존재 여부*/ + private String dropzoneAt; /*기존 파일 변화 여부*/ private String extFilChangeAt; /*파일 구분*/ @@ -273,6 +294,8 @@ public class BOGnrlbbscttVO extends AbstractVO { private List ordrGoodsOptnInnbArr; /*추천상품고유번호*/ private Integer recomendGoodsInnb; + /** 상세조회와 페이지 구분처리 */ + private String dtlPop; /*재구매여부*/ private List reOrderAtArr; /* diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/banner/vo/BOBannerVO.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/banner/vo/BOBannerVO.java index 91eaace6..3ec44076 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/banner/vo/BOBannerVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/banner/vo/BOBannerVO.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.List; import com.wb.domainserver.domain.comm.vo.AbstractVO; +import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; @@ -19,6 +20,7 @@ public class BOBannerVO extends AbstractVO { /** 쇼핑몰 코드 */ private String sopmalCd; /** 배너 명 */ + @NotBlank(message = "배너명") private String bannerNm; /** 노출위치구분 */ private String expsrlcDv; diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/service/BOGoodsService.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/service/BOGoodsService.java index 6158ffab..f174d184 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/service/BOGoodsService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/service/BOGoodsService.java @@ -115,7 +115,7 @@ public class BOGoodsService { //선택한 카테고리 상품의 순서 수정 int goodsOrdr = 1; for(String goodsInnb :vo.getGoodsOrdrList()){ - vo.setGoodsInnb(Long.parseLong(goodsInnb)); + vo.setGoodsInnb(goodsInnb); vo.setGoodsOrdr(goodsOrdr); mapper.updateBOCtgryGoodsList(vo); goodsOrdr ++; @@ -142,8 +142,8 @@ public class BOGoodsService { mapper.insertBOGoods(vo); // 방금 등록한 상품 번호 조회 - long goodsInnb = mapper.selectBOGoodsInnb(vo); - + long lGoodsInnb = mapper.selectBOGoodsInnb(vo); + String goodsInnb = String.valueOf(lGoodsInnb); // 상품 추가 정보 if(!CollectionUtils.isEmpty(vo.getGoodsAdditionVOList())){ @@ -373,7 +373,7 @@ public class BOGoodsService { if(!beforeCtgryList.isEmpty()){ // 상품 전체 카테고리 delete BOCategoryLinkVO boCtgryLinkVO = new BOCategoryLinkVO(); - boCtgryLinkVO.setGoodsInnb(Long.valueOf(vo.getGoodsInnb())); + boCtgryLinkVO.setGoodsInnb(vo.getGoodsInnb()); boCtgryLinkVO.setSopmalCd(vo.getSopmalCd()); mapper.deleteBOGoodsCategoryLink(boCtgryLinkVO); @@ -383,7 +383,7 @@ public class BOGoodsService { // 상품 카테고리 insert for(BOCategoryLinkVO tempVO : vo.getGoodsCategoryLinkVOList()) { - tempVO.setGoodsInnb(Long.valueOf(vo.getGoodsInnb())); + tempVO.setGoodsInnb(vo.getGoodsInnb()); tempVO.setSopmalCd(vo.getSopmalCd()); tempVO.setRegusr(vo.getRegusr()); @@ -632,7 +632,7 @@ public class BOGoodsService { //등급별 구매대상자 제한 정보 삭제 if(!CollectionUtils.isEmpty(gradList)){ - mapper.deleteBOGoodsTrgterLmtt(vo.getGoodsInnb(),vo.getSopmalCd(), gradList); + mapper.deleteBOGoodsTrgterLmtt(Long.valueOf(vo.getGoodsInnb()),vo.getSopmalCd(), gradList); } } @@ -653,7 +653,7 @@ public class BOGoodsService { //모든등급 구매대상자 제한 정보 삭제 if(!CollectionUtils.isEmpty(allList)){ - mapper.deleteBOGoodsTrgterLmtt(vo.getGoodsInnb(),vo.getSopmalCd(), allList); + mapper.deleteBOGoodsTrgterLmtt(Long.valueOf(vo.getGoodsInnb()),vo.getSopmalCd(), allList); } } } @@ -886,7 +886,7 @@ public class BOGoodsService { for (DataMap dataMap : regImgList) { BOGoodsVO tmpVO = new BOGoodsVO(); - tmpVO.setGoodsInnb(Integer.parseInt(dataMap.get("goodsInnb").toString())); + tmpVO.setGoodsInnb(dataMap.get("goodsInnb").toString()); tmpVO.setSopmalCd(dataMap.get("sopmalCd").toString()); tmpVO.setImgKnd(dataMap.get("imgKnd").toString()); tmpVO.setCutNb(String.valueOf(cutNb)); @@ -1077,7 +1077,7 @@ public class BOGoodsService { //공용정보 변경여부 insertBOGoodslog(vo,"08",logVO); - }else if(dlvyGroupInnb.longValue() != vo.getDlvyGroupInnb() + }else if(dlvyGroupInnb.longValue() != Long.valueOf(vo.getDlvyGroupInnb()) || !StringUtil.nullConvert(goodsDtl.get("dlvyGuidanceWordsCn")).equals(vo.getDlvyGuidanceWordsCn())){ // 배송그룹 변경여부 insertBOGoodslog(vo,"09",logVO); @@ -1317,8 +1317,8 @@ public class BOGoodsService { DataMap resultList = new DataMap(); //상품번호가 no로 들어올 경우 goodsInnb에 넣기 - if(vo.getNo() > 0 && vo.getGoodsInnb() == 0){ - vo.setGoodsInnb(vo.getNo()); + if(vo.getNo() > 0 && (vo.getGoodsInnb() == null || "0".equals(vo.getGoodsInnb()))){ + vo.setGoodsInnb(String.valueOf(vo.getNo())); } resultList = mapper.selectBOGoodsDtlInfo(vo); @@ -1386,7 +1386,7 @@ public class BOGoodsService { List infoVoList = new ArrayList<>(); for(DataMap temp : relateGoodsInnbList){ BOGoodsVO tmpvo = new BOGoodsVO(); - tmpvo.setGoodsInnb(Integer.parseInt(temp.get("goodsInnb").toString())); + tmpvo.setGoodsInnb(temp.get("goodsInnb").toString()); tmpvo.setSopmalCd(relateGoodsInnbList.get(0).get("sopmalCd").toString()); tmpvo.setImgKnd("02"); // 상품 이미지 구분 리스트 infoVoList.add(tmpvo); @@ -1561,7 +1561,7 @@ public class BOGoodsService { //추가정보 삭제 for(String goodsInnb :vo.getGoodsInnbs()){ - tempVO.setGoodsInnb(Long.parseLong(goodsInnb)); + tempVO.setGoodsInnb(goodsInnb); mapper.deleteBOGoodsAddition(tempVO); } @@ -1572,7 +1572,7 @@ public class BOGoodsService { additionVO.setRegusr(vo.getRegusr()); additionVO.setUpdusr(vo.getUpdusr()); additionVO.setSopmalCd(vo.getSopmalCd()); - additionVO.setGoodsInnb(Long.parseLong(goodsInnb.get("goodsInnb").toString())); + additionVO.setGoodsInnb(goodsInnb.get("goodsInnb").toString()); mapper.insertBOGoodsAddition(additionVO); } } @@ -1713,7 +1713,7 @@ public class BOGoodsService { for (Object item : vo.getDelInnbArr()) { Map values = (Map) item; - int goodsInnb = Integer.parseInt(String.valueOf(values.get("goodsInnb"))); + String goodsInnb = String.valueOf(values.get("goodsInnb")); String sopmalCd = (String) values.get("sopmalCd"); vo.setGoodsInnb(goodsInnb); @@ -1822,7 +1822,7 @@ public class BOGoodsService { for(DataMap tmp : list){ BOGoodsVO vo = new BOGoodsVO(); - vo.setGoodsInnb(Integer.parseInt(tmp.get("goodsInnb").toString())); + vo.setGoodsInnb(tmp.get("goodsInnb").toString()); vo.setSopmalCd(tmp.get("sopmalCd").toString()); rvwEvlInfoList.add(mapper.selectBOGoodsRvwEvlInfo(vo)); } @@ -1970,7 +1970,7 @@ public class BOGoodsService { //상품 상태 수정 for(DataMap tmp : ordrList){ - boGoodsOptionVO.setGoodsInnb(Long.parseLong(tmp.get("goodsInnb").toString())); + boGoodsOptionVO.setGoodsInnb(tmp.get("goodsInnb").toString()); mapper.updateInvntryPolicyGoodsSttusChng(boGoodsOptionVO); } @@ -1995,7 +1995,7 @@ public class BOGoodsService { //상품 상태 수정 for(DataMap tmp : refundList){ - boGoodsOptionVO.setGoodsInnb(Long.parseLong(tmp.get("goodsInnb").toString())); + boGoodsOptionVO.setGoodsInnb(tmp.get("goodsInnb").toString()); mapper.updateInvntryPolicyGoodsSttusChng(boGoodsOptionVO); } @@ -2028,7 +2028,7 @@ public class BOGoodsService { //상품 상태 수정 for(DataMap tmp : refundList){ - boGoodsOptionVO.setGoodsInnb(Long.parseLong(tmp.get("goodsInnb").toString())); + boGoodsOptionVO.setGoodsInnb(tmp.get("goodsInnb").toString()); mapper.updateInvntryPolicyGoodsSttusChng(boGoodsOptionVO); } diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOCategoryLinkVO.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOCategoryLinkVO.java index 83d460bc..3699b268 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOCategoryLinkVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOCategoryLinkVO.java @@ -11,7 +11,7 @@ public class BOCategoryLinkVO extends AbstractVO { /** 카테고리연결상품고유번호 */ private long ctgryGoodsEsntlNb; /** 상품고유번호 */ - private long goodsInnb; + private String goodsInnb; /** 쇼핑몰코드 */ private String sopmalCd; /** 카테고리ID */ diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsAdditionVO.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsAdditionVO.java index 6da50dc8..eb60739f 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsAdditionVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsAdditionVO.java @@ -13,7 +13,7 @@ public class BOGoodsAdditionVO extends AbstractVO { /** 상품추가정보 고유번호 */ private long goodsAditInfoInnb; /** 상품고유번호 */ - private long goodsInnb; + private String goodsInnb; /** 쇼핑몰코드 */ private String sopmalCd; /** 추가정보제목 */ diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsOptionVO.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsOptionVO.java index 122f7af9..d1e03a5d 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsOptionVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsOptionVO.java @@ -18,7 +18,7 @@ public class BOGoodsOptionVO extends AbstractVO { /** 쇼핑몰코드 */ private String sopmalCd; /** 상품고유번호 */ - private long goodsInnb; + private String goodsInnb; /** 상품옵션그룹번호 */ private Integer optnGroupNb; /** 옵션명 1 */ diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsRelateVO.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsRelateVO.java index 34bcc075..2afa7621 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsRelateVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsRelateVO.java @@ -12,7 +12,7 @@ public class BOGoodsRelateVO extends AbstractVO { /** 관련상품 고유번호 */ private long relateGoodsInnb; /** 상품 고유번호 */ - private long goodsInnb; + private String goodsInnb; /** 쇼핑몰코드 */ private String sopmalCd; /** 관련 판매상품 고유번호 */ diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsTrgterLmttVO.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsTrgterLmttVO.java index 5d335e04..8289ed21 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsTrgterLmttVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/vo/BOGoodsTrgterLmttVO.java @@ -12,7 +12,7 @@ public class BOGoodsTrgterLmttVO extends AbstractVO { /** 구매대상자제한 고유번호 */ private long goodsTrgterLmttInnb; /** 상품고유번호 */ - private long goodsInnb; + private String goodsInnb; /** 쇼핑몰코드 */ private String sopmalCd; /** 구매대상자제한 구분코드 */ 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 b5c3567b..979da458 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,7 @@ package com.wb.domainserver.domain.gcone.goods.goods.vo; import com.wb.domainserver.domain.comm.vo.AbstractVO; +import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.EqualsAndHashCode; @@ -16,13 +17,13 @@ public class BOGoodsVO extends AbstractVO { * 상품 GOODS START * **********************************/ /** 상품고유번호 */ - private long goodsInnb; + private String goodsInnb; /** as-is 상품고유번호 */ private long no; /** 쇼핑몰코드 */ private String sopmalCd; /** 배송그룹 고유번호 */ - private long dlvyGroupInnb; + private String dlvyGroupInnb; /** 공용정보 고유번호 */ private long cmnuseInfoInnb; /** 버전번호 */ @@ -36,6 +37,7 @@ public class BOGoodsVO extends AbstractVO { /** 대표상품코드 */ private String reprsntGoodsCd; /** 상품명 */ + @NotBlank(message = "상품명") private String goodsNm; /** ? */ private String textMarktGoodsNm; diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/goodsinfo/vo/BOGoodsInfoVO.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/goodsinfo/vo/BOGoodsInfoVO.java index 11882ae7..aa1a30fa 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/goodsinfo/vo/BOGoodsInfoVO.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/goodsinfo/vo/BOGoodsInfoVO.java @@ -2,6 +2,8 @@ package com.wb.domainserver.domain.gcone.goods.goodsinfo.vo; import com.wb.domainserver.domain.comm.vo.AbstractVO; +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -35,6 +37,7 @@ public class BOGoodsInfoVO extends AbstractVO { /** 쇼핑몰코드 */ private String sopmalCd; /** 상품정보설정 제목 */ + @NotBlank(message = "상품 정보명") private String goodsInfoSetupSj; /** 상품명노출여부 */ private String goodsNmExpsrAt; diff --git a/src/main/java/com/wb/domainserver/domain/gcone/login/service/LoginService.java b/src/main/java/com/wb/domainserver/domain/gcone/login/service/LoginService.java index d32447dc..6e37ad05 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/login/service/LoginService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/login/service/LoginService.java @@ -219,6 +219,8 @@ public class LoginService { //회원정보 조회 LoginRequest req = new LoginRequest(); req.setUserInnb(userInnb); + req.setAccessUrl(request.getParameter("accessUrl")); + req.setSopmalCd(request.getParameter("authSopmalCd")); LoginUser loginUser = null; if(realm.equals("sopmal")){ diff --git a/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/controller/BOMbrController.java b/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/controller/BOMbrController.java index 72cdfb15..7e6d9a50 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/controller/BOMbrController.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/mbr/mbr/controller/BOMbrController.java @@ -1949,7 +1949,7 @@ public class BOMbrController { DataMap message = service.insertWslistGoods(wishVO); BOGoodsVO boGoodsVO = new BOGoodsVO(); - boGoodsVO.setGoodsInnb(wishVO.getGoodsInnb()); + boGoodsVO.setGoodsInnb(String.valueOf(wishVO.getGoodsInnb())); boGoodsVO.setSopmalCd(wishVO.getSopmalCd()); boGoodsService.updateWslistCnt(boGoodsVO); diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/controller/BONpayController.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/controller/BONpayController.java index def03937..1d51355c 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/controller/BONpayController.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/controller/BONpayController.java @@ -204,7 +204,7 @@ public class BONpayController { AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); BOGoodsVO vo = new BOGoodsVO(); - vo.setGoodsInnb(Long.parseLong(goodsCd)); // request 변수 세팅해야함. + vo.setGoodsInnb(goodsCd); // request 변수 세팅해야함. vo.setSopmalCd(sopmalCd); // request 변수 세팅해야함. DataMap goodsInfo = goodsService.selectBOGoodsDtl(vo); diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoCommonXmlService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoCommonXmlService.java index 251e1ee9..efa92a6b 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoCommonXmlService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoCommonXmlService.java @@ -198,7 +198,7 @@ public class BoCommonXmlService { log.debug("본상품 코드기준의 하위 옵션 상품 리스트 개수 " + optionProductlist.size()); BOGoodsVO vo = new BOGoodsVO(); - vo.setGoodsInnb(Long.parseLong(productMap.get("goodsInnb").toString())); // 변수 세팅해야함. + vo.setGoodsInnb(productMap.get("goodsInnb").toString()); // 변수 세팅해야함. vo.setSopmalCd(sopmalCd); // Front에서 넘어온 sopmalCd로 세팅 // main 상품 정보 @@ -300,7 +300,7 @@ public class BoCommonXmlService { public String createSupplement(DataMap mainProduct, Map goods, String sopmalCd) { // 상품 상세 정보 getting BOGoodsVO vo = new BOGoodsVO(); - vo.setGoodsInnb(Long.parseLong(mainProduct.get("goodsInnb").toString())); + vo.setGoodsInnb(mainProduct.get("goodsInnb").toString()); vo.setSopmalCd(sopmalCd); // 추가상품은 이것으로 처리 vo.setOptnTy("03"); diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoOrderXmlService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoOrderXmlService.java index 31a1c61d..2f830b90 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoOrderXmlService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoOrderXmlService.java @@ -152,7 +152,7 @@ public class BoOrderXmlService { // 주문정보를 넘겨 받아야 함. // 상품 상세 정보 getting BOGoodsVO vo = new BOGoodsVO(); - vo.setGoodsInnb(65); // 변수 세팅해야함. + vo.setGoodsInnb("65"); // 변수 세팅해야함. vo.setSopmalCd("AF"); // 변수 세팅해야함. DataMap goodsInfo = goodsService.selectBOGoodsDtl(vo); diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoProductXmlService.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoProductXmlService.java index 37db2dba..46bb1d97 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoProductXmlService.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/npay/service/BoProductXmlService.java @@ -116,7 +116,7 @@ public class BoProductXmlService { StringBuffer productXml = new StringBuffer(); BOGoodsVO vo = new BOGoodsVO(); - vo.setGoodsInnb(Long.parseLong(goodsCd)); // request 변수 세팅해야함. + vo.setGoodsInnb(goodsCd); // request 변수 세팅해야함. vo.setSopmalCd(sopmalCd); // request 변수 세팅해야함. DataMap goodsInfo = goodsService.selectBOGoodsDtl(vo); @@ -563,7 +563,7 @@ public class BoProductXmlService { // 상품 상세 정보 getting BOGoodsVO vo = new BOGoodsVO(); - vo.setGoodsInnb(Long.parseLong(product.get("goodsCd").toString())); // request 변수 세팅해야함. + vo.setGoodsInnb(product.get("goodsCd").toString()); // request 변수 세팅해야함. vo.setSopmalCd(sopmalCd); // request 변수 세팅해야함. @@ -652,7 +652,7 @@ public class BoProductXmlService { StringBuffer shippingPolicyXml = new StringBuffer(); BOGoodsVO vo = new BOGoodsVO(); - vo.setGoodsInnb(Long.parseLong(goodsCd)); // request 변수 세팅해야함. + vo.setGoodsInnb(goodsCd); // request 변수 세팅해야함. vo.setSopmalCd(sopmalCd); // request 변수 세팅해야함. DataMap goodsInfo = goodsService.selectBOGoodsDtl(vo); diff --git a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/controller/BOOrdrController.java b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/controller/BOOrdrController.java index ee06e813..28619fa4 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/controller/BOOrdrController.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/ordr/ordr/controller/BOOrdrController.java @@ -3767,7 +3767,7 @@ public class BOOrdrController { com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO goodsVO = new com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO(); - goodsVO.setGoodsInnb(Long.parseLong(tempVo.getGoodsInnb())); + goodsVO.setGoodsInnb(tempVo.getGoodsInnb()); goodsVO.setCartCnt(tempVo.getQy()); goodsVO.setSopmalCd(user.getSopmalCd()); boGoodsService.updateCartCnt(goodsVO); diff --git a/src/main/java/com/wb/domainserver/domain/itrnt/mbr/controller/ItrntMbrController.java b/src/main/java/com/wb/domainserver/domain/itrnt/mbr/controller/ItrntMbrController.java index b1492821..0dfe945c 100644 --- a/src/main/java/com/wb/domainserver/domain/itrnt/mbr/controller/ItrntMbrController.java +++ b/src/main/java/com/wb/domainserver/domain/itrnt/mbr/controller/ItrntMbrController.java @@ -1,9 +1,12 @@ package com.wb.domainserver.domain.itrnt.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.store.sopmal.vo.MaSopmalVO; import com.wb.domainserver.domain.itrnt.mbr.vo.ItrntSrchMbrVO; 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,15 +15,20 @@ 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 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.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; @Controller @@ -39,6 +47,9 @@ public class ItrntMbrController { @Autowired private GconeMessageSource gconeMessageSource; + @Autowired + private BOMaSopmalService service; + /** * 인트라넷 회원 목록 검색 화면 * @@ -129,15 +140,29 @@ public class ItrntMbrController { * @return map */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/getPcUrl") - public ResponseEntity getPcUrl(MaSopmalVO vo) { + @RequestMapping(value = "/getPcUrl", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity getPcUrl(BOMaSopmalVO vo) { // 사용자 정보 추출 및 적용 AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); vo.setSopmalCd(user.getReprsntBrand()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/sopmal/selectBOSopmalInfoDtl", vo), - ReplyFromResrc::getReply + /*쇼핑몰 상세 조회*/ + List sopmalInfoList = new ArrayList<>(); + sopmalInfoList = service.selectBOSopmalUpdtForm(vo); + DataMap sopmalInfo = new DataMap(); + /*map형태로 추출*/ + if(!CollectionUtils.isEmpty(sopmalInfoList)){ + sopmalInfo = sopmalInfoList.get(0); + } + + DataMap content = new DataMap(); + content.put("sopmalInfo", sopmalInfo); + + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/alarm/controller/AlarmController.java b/src/main/java/com/wb/domainserver/domain/mngr/alarm/controller/AlarmController.java index e911b566..1e7b5316 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/alarm/controller/AlarmController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/alarm/controller/AlarmController.java @@ -1,20 +1,29 @@ package com.wb.domainserver.domain.mngr.alarm.controller; +import com.wb.domainserver.domain.gcone.alarm.service.BOAlarmService; +import com.wb.domainserver.domain.gcone.alarm.vo.BOAlarmVO; import com.wb.domainserver.domain.mngr.alarm.vo.AlarmSrchVo; 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 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.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestMapping; +import java.util.List; + @Controller @RequestMapping(value = "/mngr/alarm") @Slf4j @@ -27,18 +36,36 @@ public class AlarmController { @Autowired private SendToResrc sendToResrc; + @Autowired + private BOAlarmService service; + @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/select/selectAlarmCount") - public ResponseEntity selectAlarmCount(@CookieValue(value = "authSopmalCd") String authSopmalCd, AlarmSrchVo vo) { + @RequestMapping(value = "/select/selectAlarmCount", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectAlarmCount(@CookieValue(value = "authSopmalCd") String authSopmalCd, BOAlarmVO vo) { log.debug("selectAlarmCount()"); vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO,"/gcone/alarm/select/selectAlarmCount",vo), - ReplyFromResrc::getReply - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + DataMap content = new DataMap(); + + List answerList = service.selectAnswerCount(vo); + + List refundList = service.selectRefundCount(vo); + + content.put("refundList", refundList); + content.put("answerList", answerList); + content.put("status","success"); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); } } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/analytics/controller/AnalyticsController.java b/src/main/java/com/wb/domainserver/domain/mngr/analytics/controller/AnalyticsController.java index ef234a16..7457bd6b 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/analytics/controller/AnalyticsController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/analytics/controller/AnalyticsController.java @@ -1,20 +1,33 @@ package com.wb.domainserver.domain.mngr.analytics.controller; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo; +import com.wb.domainserver.common.prop.PaginationProperties; +import com.wb.domainserver.domain.gcone.analytics.service.BOAnalyticsService; +import com.wb.domainserver.domain.gcone.analytics.vo.BOAnanlyticsErpGoodsSrchVO; import com.wb.domainserver.domain.mngr.analytics.vo.AnalyticsErpGoodsSrchVO; 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 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.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -30,6 +43,12 @@ public class AnalyticsController { @Autowired private SendToResrc sendToResrc; + @Autowired + private BOAnalyticsService service; + + @Autowired + private PaginationProperties paginationProperties; + /** * 매출일지 리스트 * @return String JSP 경로 @@ -40,11 +59,6 @@ public class AnalyticsController { public String selectSummaryList (AnalyticsErpGoodsSrchVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { log.debug("selectSummaryList()"); vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/analytics/select/sales-journal", ""), - model, - "resultMap" - ); return "mngr/analytics/SalesJournal"; } @@ -59,14 +73,21 @@ public class AnalyticsController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value ="/select/erp-goods") - public String selectErpGoodsList (AnalyticsErpGoodsSrchVO vo , ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectErpGoodsList (BOAnanlyticsErpGoodsSrchVO vo , ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { log.debug("selectErpGoodsList()"); vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/analytics/select/erp-goods", vo), - model, - "resultMap" - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + log.debug(" 검색 파라미터 확인 리스트 검색조건 : {}", vo); + + DataMap content = new DataMap(); + List sopmalList = service.selectSopmalCd(); + content.put("sopmalList",sopmalList); + model.addAttribute("resultMap", content); return "mngr/analytics/ErpGoods"; } @@ -78,14 +99,40 @@ public class AnalyticsController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value ="/select/erp-goodsR") - public String selectErpGoodsListR (AnalyticsErpGoodsSrchVO vo , ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectErpGoodsListR (BOAnanlyticsErpGoodsSrchVO vo , ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { log.debug("selectErpGoodsListR()"); vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/analytics/select/erp-goodsR", vo), - model, - "resultMap" - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + log.debug(" 검색 파라미터 확인 리스트 검색조건 : {}", vo); + + DataMap content = new DataMap(); + + 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 = new ArrayList<>(); + list = service.selectErpGoodsList(vo); + + log.debug("asdsadasdsa" + vo.getPaginationInfo().getTotalRecordCount()); + + content.put("list", list); + content.put("BOAnanlyticsErpGoodsSrchVO", vo); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap", content); return "mngr/analytics/ErpGoodsR"; } @@ -97,14 +144,22 @@ public class AnalyticsController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value ="/select/erp-set-goods") - public String selectErpSetGoodsList (AnalyticsErpGoodsSrchVO vo , ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectErpSetGoodsList (BOAnanlyticsErpGoodsSrchVO vo , ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { log.debug("selectErpSetGoodsList()"); vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/analytics/select/erp-set-goods", vo), - model, - "resultMap" - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + log.debug(" 검색 파라미터 확인 리스트 검색조건 : {}", vo); + DataMap content = new DataMap(); + List sopmalList = service.selectSopmalCd(); + content.put("sopmalList",sopmalList); + + model.addAttribute("resultMap", content); return "mngr/analytics/ErpSetGoods"; } @@ -116,14 +171,40 @@ public class AnalyticsController { @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value ="/select/erp-set-goodsR") - public String selectErpSetGoodsListR (AnalyticsErpGoodsSrchVO vo , ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectErpSetGoodsListR (BOAnanlyticsErpGoodsSrchVO vo , ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { log.debug("selectErpSetGoodsListR()"); vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/analytics/select/erp-set-goodsR", vo), - model, - "resultMap" - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + log.debug(" 검색 파라미터 확인 리스트 검색조건 : {}", vo); + + DataMap content = new DataMap(); + + 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 = new ArrayList<>(); + list = service.selectErpSetGoodsList(vo); + + log.debug("asdsadasdsa" + vo.getPaginationInfo().getTotalRecordCount()); + + content.put("list", list); + content.put("BOAnanlyticsErpGoodsSrchVO", vo); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap", content); return "mngr/analytics/ErpSetGoodsR"; } @@ -134,15 +215,23 @@ public class AnalyticsController { * @param jsonData 게시판 등록 파라미터 jsonData */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/update/erp-goods" , method= RequestMethod.POST) + @RequestMapping(value="/update/erp-goods" , method= RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public ResponseEntity updatePuriOrder(@RequestBody List> jsonData){ log.debug(" 검색 파라미터 확인 231: {}", jsonData); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/analytics/update/erp-goods", jsonData), - ReplyFromResrc::getReply + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + DataMap content = new DataMap(); + service.updateErpGoods(jsonData); + content.put("status", "success"); + content.put("message", "제상품 정보가 성공적으로 업데이트 되었습니다."); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/api/controller/ApiController.java b/src/main/java/com/wb/domainserver/domain/mngr/api/controller/ApiController.java index 624ad575..f757b90d 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/api/controller/ApiController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/api/controller/ApiController.java @@ -1,10 +1,17 @@ package com.wb.domainserver.domain.mngr.api.controller; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.wb.domainserver.domain.gcone.api.service.BOApiService; +import com.wb.domainserver.domain.gcone.common.service.BOCommonService; import com.wb.domainserver.domain.mngr.api.service.ApiService; +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; @@ -16,12 +23,18 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; 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.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; +import org.springframework.web.server.ResponseStatusException; import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; @Controller @@ -39,6 +52,18 @@ public class ApiController { @Autowired private ApiService service; + @Autowired + private BOApiService boservice; + + @Autowired + private BOCommonService commonService; + + @Value("${api.AES_KEY}") + private String AES_KEY; + + @Value("${api.DATA_ENCRYPT_AES_KEY}") + private String DATA_ENCRYPT_AES_KEY; + /** * Order Api * 주문내역 api @@ -70,13 +95,14 @@ public class ApiController { requestBody.put("authSopmalCd", authSopmalCd); String listStr = ""; String clearDataStr = ""; - ResponseEntity boResponse = responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/api/select/selectOrderList", requestBody), - ReplyFromResrc::getReply - ); // CSV 추출 - Object resultObj = boResponse.getBody().getResBody().getResult(); + Object resultObj = selectOrdrList(requestBody, response, request); +// ResponseEntity boResponse = responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/api/select/selectOrderList", requestBody), +// ReplyFromResrc::getReply +// ); + if (resultObj instanceof String) { ObjectMapper mapper = new ObjectMapper(); JsonNode outerJson = mapper.readTree((String) resultObj); @@ -102,4 +128,134 @@ public class ApiController { service.insertMngrApiAccessLog(request,response,"Y","",responseData); return listStr; } + + private WnbtResponseBody selectOrdrList(Map requestBody, HttpServletResponse response, HttpServletRequest request){ + + // 1. 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + requestBody.put("sopmalCd", user.getSopmalCd()); + } + + String hashEqual = ""; + String csvString = ""; + String clearData = ""; + DataMap paramMap = new DataMap(); + paramMap.put("aesKey", AES_KEY); + paramMap.put("timeStamp", requestBody.get("timeStamp")); + paramMap.put("data", requestBody.get("data")); + paramMap.put("hashData", requestBody.get("hash")); + paramMap.put("dataAesKey", DATA_ENCRYPT_AES_KEY); + + log.debug("파라미터 총 체크 : {}", paramMap); + + DataMap content = new DataMap(); + List list = new ArrayList<>(); + + // 2. 타임스탬프 검증 + try { + boservice.isValidTimestamp((String) requestBody.get("timeStamp")); + } catch (RuntimeException e) { + log.warn("⛔ 타임스탬프 검증 실패: {}", e.getMessage(), e); + boservice.insertMngrApiAccessLog(request,response,"N",e.getMessage()); + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "요청 시간이 유효하지 않습니다.", e); + } + + // 3. 파라미터 복호화 + String param = boservice.aesParamDecrypt(paramMap); + log.debug("📦 디코딩된 API 파라미터: {}", param); + + // 4. 해시값 검증 + try { + hashEqual = boservice.isValidHash(paramMap); + log.debug("✅ 해쉬코드 검증 완료: {}", hashEqual); + } catch (RuntimeException e) { + log.debug("client hash: {}", paramMap.get("hashData")); + log.debug("server hash: {}", e.getMessage()); + log.warn("⛔ 해쉬 코드 검증 실패: {}", e.getMessage(), e); + boservice.insertMngrApiAccessLog(request,response,"N",e.getMessage()); + + content.put("result", "FAIL"); + content.put("message", "해쉬값 불일치"); + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "해쉬값 불일치", e); + } + + // 5. 복호화된 파라미터 파싱 및 리스트 조회 + int totalSize = 0; + Map map = new HashMap<>(); + try { + ObjectMapper objectMapper = new ObjectMapper(); + map = objectMapper.readValue(param, new TypeReference>() {}); + + } catch (Exception e) { + boservice.insertMngrApiAccessLog(request,response,"N",e.getMessage()); + log.warn("⛔ 파라미터 파싱 또는 리스트 조회 중 오류 발생", e); + map = new HashMap<>(); + } + log.debug("복호화 파라미터 : " + map); + map.put("secretkey",commonService.selectSecretkey()); + // total 사이즈 + totalSize = boservice.selectTableTotalSize(map); + + int pageSize = 10000; + int pageIndex = 1; + try { + pageIndex = Integer.parseInt((String) map.get("pageIndex")); + } catch (NumberFormatException e) { + log.warn("pageIndex 파싱 실패, 기본값 사용: {}", pageIndex); + pageIndex = 1; + } + + int offset = (pageIndex - 1) * pageSize; + int lastPageIndex = (int) Math.ceil((double) totalSize / pageSize); + lastPageIndex = Math.max(1, lastPageIndex); + + if (offset >= totalSize) { + pageIndex = lastPageIndex; + offset = (pageIndex - 1) * pageSize; + } + + if (totalSize <= pageSize) { + offset = 0; + map.put("limit", pageSize); + } + map.put("limit", pageSize); + map.put("offset", offset); + map.put("totalSize", totalSize); + long queryStart = System.currentTimeMillis(); + list = boservice.selectTableList(map); + long queryEnd = System.currentTimeMillis(); + System.out.println("쿼리 실행 시간(ms): " + (queryEnd - queryStart)/ 1000.0 + "초"); + if (list == null) { + list = new ArrayList<>(); + } + Map result = new HashMap<>(); + result.put("list", list); + result.put("pageIndex", pageIndex); + result.put("lastPageIndex", lastPageIndex); + result.put("totalSize", totalSize); + long start = System.currentTimeMillis(); + clearData = list.toString(); + // 6. 응답 구성 + csvString = boservice.convertCsv(result); + long afterConvert = System.currentTimeMillis(); + log.debug("CSV 변환 시간: " + (afterConvert - start)/ 1000.0 + "초"); + paramMap.put("csvString", csvString); + + // csv text -> AES 암호화 전송 + csvString = boservice.encryptCsv(paramMap); + long afterEncrypt = System.currentTimeMillis(); + log.debug("CSV 암호화 시간: " + (afterEncrypt - afterConvert)/ 1000.0 + "초"); + + + /*content.put("totalSize", totalSize); + content.put("pageIndex", pageIndex); + content.put("lastPageIndex", lastPageIndex);*/ + log.debug("총 후처리 시간: " + (afterEncrypt - start)/ 1000.0 + "초"); + + content.put("list", csvString); + content.put("clearData", clearData); + + return new WnbtResponseBody(content); + } } \ No newline at end of file diff --git a/src/main/java/com/wb/domainserver/domain/mngr/bbs/bbsmngr/controller/BbsmngrController.java b/src/main/java/com/wb/domainserver/domain/mngr/bbs/bbsmngr/controller/BbsmngrController.java index 7aec39bb..5e2ed67b 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/bbs/bbsmngr/controller/BbsmngrController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/bbs/bbsmngr/controller/BbsmngrController.java @@ -2,23 +2,35 @@ package com.wb.domainserver.domain.mngr.bbs.bbsmngr.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.gcone.bbs.bbs.service.BOBbsService; +import com.wb.domainserver.domain.gcone.bbs.bbs.vo.BOBbsSetupVO; +import com.wb.domainserver.domain.gcone.bbs.bbs.vo.BOBbsVO; import com.wb.domainserver.domain.mngr.bbs.bbsmngr.vo.BbsmngrVO; import com.wb.domainserver.exception.WnbtRestException; +import com.wb.domainserver.exception.code.ErrorCode; 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.beans.factory.annotation.Value; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; +import org.springframework.util.ObjectUtils; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.CookieValue; @@ -71,143 +83,344 @@ public class BbsmngrController { @Value("${mngrfo.common.board.nc.ntcntalkSndngFormInnb02}") private String ntcntalkSndngFormInnb2; + @Autowired + private BOBbsService service; + + @Autowired + private PaginationProperties paginationProperties; + + /** * 게시판 화면 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBbsListInqireForm") - public String selectBbsListInqireForm(BbsmngrVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectBbsListInqireForm(BOBbsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbsListInqireFrom", vo), - model, - "resultMap" - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + log.debug(" 검색 파라미터 확인 : {}", vo); + + DataMap content = new DataMap(); + + 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 formList = new ArrayList<>(); + DataMap fromMap = new DataMap(); + fromMap = service.selectBOBbsListInqireFrom(vo); + formList.add(fromMap); + + List srchList = new ArrayList<>(); + DataMap srchData = new DataMap(); + srchData.put("srchWord", vo.getSrchWord()); + srchData.put("srchBbsTyCd", vo.getSrchBbsTyCd()); + srchData.put("srchSknTyCd", vo.getSrchSknTyCd()); + srchData.put("pageUnit", vo.getPageUnit()); + srchData.put("pageIndex", vo.getPageIndex()); + srchData.put("pageDv", vo.getPageDv()); + srchList.add(srchData); + + content.put("srchList", srchList); + content.put("formList", formList); + content.put("boBbsVo", vo); + + model.addAttribute("resultMap", content); + return "mngr/bbs/bbsmngr/BbsListRForm"; } /** * 게시판 목록 조회 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBbsListInqire") - public String selectBbsListInqire(BbsmngrVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectBbsListInqire(BOBbsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbsListInqire", vo), - model, - "resultMap" - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + // 쇼핑몰코드 + + DataMap content = new DataMap(); + + 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()); + + DataMap srchMap = new DataMap(); + if (!ObjectUtils.isEmpty(vo.getSrchSknTyCdArr())) { + srchMap.put("srchSknTyCd", String.join(",", vo.getSrchSknTyCdArr())); + } else { + srchMap.put("srchSknTyCd", ""); + } + if (!ObjectUtils.isEmpty(vo.getSrchBbsTyCdArr())) { + srchMap.put("srchBbsTyCd", String.join(",", vo.getSrchBbsTyCdArr())); + } else { + srchMap.put("srchBbsTyCd", ""); + } + if (!StringUtil.isEmpty(vo.getSrchWord())) { + srchMap.put("srchWord", vo.getSrchWord()); + } else { + srchMap.put("srchWord", ""); + } + List srchList = new ArrayList<>(); + srchList.add(srchMap); + content.put("srchList", srchList); + + List bbsList = new ArrayList<>(); + bbsList = service.selectBOBbsListInqire(vo); + content.put("bbsList", bbsList); + content.put("boBbsVo", vo); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap",content); return "mngr/bbs/bbsmngr/BbsListR"; } /** * 안내 허용 도메인 파일 팝업 - * @param BbsmngrVO 게시판 등록 파라미터 VO - * @param model 모델객체 + * @param vo 게시판 등록 파라미터 VO * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectGuidancePermDomnFilPopup", method = RequestMethod.GET) - public ResponseEntity selectGuidancePermDomnFilPopup(BbsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/selectGuidancePermDomnFilPopup", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGuidancePermDomnFilPopup(BOBbsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOSlangDftSetupPopupForm", vo), - ReplyFromResrc::getReply - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + + DataMap content = new DataMap(); + BOBbsSetupVO stVo = new BOBbsSetupVO(); + + stVo = service.selectBOSlangDftSetupPopupForm(vo); + content.put("boBbsSetupVo", stVo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); } /** * 안내 허용 도메인 파일 수정 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateGuidancePermDomnFil" , method = RequestMethod.POST) - public ResponseEntity updateGuidancePermDomnFil(BbsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/updateGuidancePermDomnFil" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGuidancePermDomnFil(BOBbsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/updateBOSlangSetupRegist", vo), - ReplyFromResrc::getReply - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + vo.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 + + DataMap content = new DataMap(); + + String message = service.updateBOSlangSetupRegist(vo); + BOBbsSetupVO stVo = new BOBbsSetupVO(); + stVo = service.selectBOSlangDftSetupPopupForm(vo); + content.put("boBbsSetupVo", stVo); + content.put("message", message); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); } /** * 비속어 기본 설정 팝업 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectSlangDftSetupPopupForm", method = RequestMethod.GET) - public ResponseEntity selectSlangDftSetupPopupForm(BbsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/selectSlangDftSetupPopupForm", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectSlangDftSetupPopupForm(BOBbsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOSlangDftSetupPopupForm", vo), - ReplyFromResrc::getReply - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + + DataMap content = new DataMap(); + BOBbsSetupVO stVo = new BOBbsSetupVO(); + + stVo = service.selectBOSlangDftSetupPopupForm(vo); + content.put("boBbsSetupVo", stVo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); } /** * 비속어 설정 저장 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateSlangSetupRegist" , method = RequestMethod.POST) - public ResponseEntity updateSlangSetupRegist(BbsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/updateSlangSetupRegist" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateSlangSetupRegist(BOBbsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/updateBOSlangSetupRegist", vo), - ReplyFromResrc::getReply - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + vo.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 + + DataMap content = new DataMap(); + + String message = service.updateBOSlangSetupRegist(vo); + BOBbsSetupVO stVo = new BOBbsSetupVO(); + stVo = service.selectBOSlangDftSetupPopupForm(vo); + content.put("boBbsSetupVo", stVo); + content.put("message", message); + + content.put("boBbsSetupVo", stVo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); } /** * 게시판 등록화면 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBbsRegistForm") - public String selectBbsRegistForm(BbsmngrVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectBbsRegistForm(BOBbsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setNtcntalkSndngFormInnbArr(new String[] {ntcntalkSndngFormInnb1, ntcntalkSndngFormInnb2}); - vo.setSopmalCd(authSopmalCd); - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbsRegistForm",vo) - ); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + // 쇼핑몰코드 + vo.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 + + DataMap codeMap = new DataMap(); + codeMap = service.selectCommonCode(); + + List codeList = new ArrayList<>(); + codeList.add(codeMap); + List mbrGradList = new ArrayList<>(); + + vo.setMbrGradGroupInnb("1"); + mbrGradList = service.selectBOBbsRegistForm(vo); + + List updBbsList = new ArrayList<>(); + updBbsList = service.selectUpdBbsList(vo); + + List messageList = new ArrayList<>(); + DataMap sms = new DataMap(); + sms = service.selectBOBbsSmsFormList(vo); + + DataMap kakao = new DataMap(); + kakao = service.selectBOBbsKakaoFormList(vo); + + List srchList = new ArrayList<>(); + DataMap srchData = new DataMap(); + srchData.put("pageIndex", vo.getPageIndex()); + srchData.put("pageUnit", vo.getPageUnit()); + srchData.put("srchWord", vo.getSrchWord()); + srchData.put("srchSknTyCd", vo.getSrchSknTyCd()); + srchData.put("srchBbsTyCd", vo.getSrchBbsTyCd()); + srchList.add(srchData); + + DataMap content = new DataMap(); + content.put("mbrGradList", mbrGradList); + content.put("codeContent", codeList); + content.put("bOBbsVo", vo); + content.put("srchList", srchList); + content.put("updBbsList", updBbsList); + content.put("sms", sms); + content.put("kakao", kakao); + +// Map resultMap = responseHandler.handleResponseAsMap( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbsRegistForm",vo) +// ); +// ObjectMapper objectMapper = new ObjectMapper(); try { - resultMap.put("updBbsList", objectMapper.writeValueAsString(resultMap.get("updBbsList"))); + content.put("updBbsList", objectMapper.writeValueAsString(content.get("updBbsList"))); } catch (WnbtRestException wre){ - throw new WnbtRestException(wre.getMessage()); + log.error(wre.getMessage(), wre); + throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR); } catch(Exception e) { log.error(e.getMessage(), e); + throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR); } - model.addAttribute("resultMap", resultMap); + + model.addAttribute("resultMap", content); return "mngr/bbs/bbsmngr/BbsRegistC"; } /** * 게시판 등록 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @param bindingResult 바인딩 및 정합성 점검결과 객체 * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertBbsRegist", method = RequestMethod.POST) - public ResponseEntity insertBbsRegist(@Validated BbsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd, BindingResult bindingResult){ + @RequestMapping(value="/insertBbsRegist", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertBbsRegist(@Validated BOBbsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd, BindingResult bindingResult){ if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } List> errorList = new ArrayList<>(); - if (vo.getPgeVtcCnt() <= 0) { + if (vo.getPgeVtcCnt() == null || Integer.parseInt(vo.getPgeVtcCnt() )<= 0) { errorList.add(ValidateResultConverter.setErrorMap("pgeVtcCnt", gconeMessageSource.getMessage("errors.required", new Object[]{"페이지세로건수는 최소 1 입니다."}))); } //메시지 문자 내용 없을 시 @@ -238,20 +451,34 @@ public class BbsmngrController { throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList)); } vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/insertBOBbsRegist", vo), - ReplyFromResrc::getReply - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + }// 쇼핑몰코드 + vo.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 + + DataMap content = new DataMap(); + content = service.insertBOBbsRegist(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); + } /** * 게시판 아이디 중복확인 - * @param BbsmngrVO 게시판 등록 파라미터 VO - * @param bindingResult 바인딩 및 정합성 점검결과 객체 + * @param vo 게시판정보 VO + * @param authSopmalCd 몰코드 * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBbsIdDplctCnfirm", method = RequestMethod.GET) - public ResponseEntity selectBbsIdDplctCnfirm(BbsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public ResponseEntity selectBbsIdDplctCnfirm(BOBbsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ List> errorList = new ArrayList<>(); final String REGEX_ID = "^[A-Za-z[0-9]-_$]{6,30}$"; @@ -263,14 +490,22 @@ public class BbsmngrController { throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList)); } vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbsIdDplctCnfirm", vo), - ReplyFromResrc::getReply - ); + + String result = service.selectBOBbsIdDplctCnfirm(vo); + + DataMap content = new DataMap(); + content.put("paramVO", vo); + content.put("message", result); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); } /** * 게시판 수정 폼 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @param model 모델객체 * @return String JSP 경로 */ @@ -284,7 +519,9 @@ public class BbsmngrController { Map resultMap = responseHandler.handleResponseAsMap( sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbsDtlUpdtForm",vo) - ); + ); + + ObjectMapper objectMapper = new ObjectMapper(); try { resultMap.put("updBbsList", objectMapper.writeValueAsString(resultMap.get("updBbsList"))); @@ -298,14 +535,15 @@ public class BbsmngrController { return "mngr/bbs/bbsmngr/BbsDtlUpdtU"; } + /** * 게시판 수정 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateBbsUpdt") - public ResponseEntity updateBbsUpdt(@Validated BbsmngrVO vo, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/updateBbsUpdt", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBbsUpdt(@Validated BOBbsVO vo, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } @@ -349,36 +587,107 @@ public class BbsmngrController { } vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/updateBOBbsUpdt", vo), - ReplyFromResrc::getReply - ); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + }// 쇼핑몰코드 + vo.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 + + log.debug(" 게시판 수정 파라미터 확인 : {}", vo); + + DataMap content = new DataMap(); + content = service.updateBOBbsUpdt(vo); + + List srchList = new ArrayList<>(); + DataMap srchData = new DataMap(); + srchData.put("srchWord", vo.getSrchWord()); + srchData.put("srchBbsTyCd", vo.getSrchBbsTyCd()); + srchData.put("srchSknTyCd", vo.getSrchSknTyCd()); + srchData.put("pageUnit", vo.getPageUnit()); + srchData.put("pageIndex", vo.getPageIndex()); + srchData.put("pageDv", vo.getPageDv()); + srchList.add(srchData); + content.put("srchList", srchList); + content.put("vo", vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); } /** * 게시판 복사 폼 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @param model 모델객체 * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBbsCopyForm") - public String selectBbsCopyForm(BbsmngrVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectBbsCopyForm(BOBbsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setNtcntalkSndngFormInnbArr(new String[] {ntcntalkSndngFormInnb1, ntcntalkSndngFormInnb2}); vo.setSopmalCd(authSopmalCd); - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbsDtlUpdtForm",vo) - ); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + vo.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 + + DataMap codeMap = new DataMap(); + codeMap = service.selectCommonCode(); // 공통 코드 + + List codeList = new ArrayList<>(); + codeList.add(codeMap); + + List mbrGradList = new ArrayList<>(); + mbrGradList = service.selectBOBbsRegistForm(vo); //해당 쇼핑몰 회원 등급 조회 + + List updBbsList = new ArrayList<>(); + updBbsList = service.selectUpdBbsList(vo); // 해당 쇼핑몰 게시판 목록 조회 + + List messageList = new ArrayList<>(); + DataMap sms = new DataMap(); + sms = service.selectBOBbsSmsFormList(vo); // 메시지 폼 + + DataMap kakao = new DataMap(); + kakao = service.selectBOBbsKakaoFormList(vo); // 카카오 폼 + + List srchList = new ArrayList<>(); + DataMap srchData = new DataMap(); + srchData.put("srchWord", vo.getSrchWord()); + srchData.put("srchBbsTyCd", vo.getSrchBbsTyCd()); + srchData.put("srchSknTyCd", vo.getSrchSknTyCd()); + srchData.put("pageUnit", vo.getPageUnit()); + srchData.put("pageIndex", vo.getPageIndex()); + srchData.put("pageDv", vo.getPageDv()); + srchList.add(srchData); + + DataMap resultMap = new DataMap(); + resultMap = service.selectBOBbsDtlUpdtInqire(vo); // 게시판 상세 조회 + resultMap.put("mbrGradList", mbrGradList); + resultMap.put("codeContent", codeList); + resultMap.put("srchList", srchList); + resultMap.put("updBbsList", updBbsList); + resultMap.put("sms", sms); + resultMap.put("kakao", kakao); + ObjectMapper objectMapper = new ObjectMapper(); try { resultMap.put("updBbsList", objectMapper.writeValueAsString(resultMap.get("updBbsList"))); } catch (WnbtRestException wre){ + log.error(wre.getMessage(), wre); throw new WnbtRestException(wre.getMessage()); } catch(Exception e) { log.error(e.getMessage(), e); + throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR); } model.addAttribute("resultMap", resultMap); @@ -386,34 +695,57 @@ public class BbsmngrController { } /** * 게시판 삭제 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 정보 VO * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/deleteBbsDel") - public ResponseEntity deleteBbsDel(BbsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/deleteBbsDel", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteBbsDel(BOBbsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/updateBOBbsDel", vo), - ReplyFromResrc::getReply - ); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + vo.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 + + String result = service.updateBOBbsDel(vo); + + DataMap content = new DataMap(); + content.put("paramVO", vo); + content.put("message", result); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); } /** * 게시글 대시보드 조회폼 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @param model 모델객체 * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBbscttDshboardInqireForm") - public String selectBbscttDshboardInqireForm(BbsmngrVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectBbscttDshboardInqireForm(BOBbsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - Map resultMap = responseHandler.handleResponseAsMap( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbscttDshboardInqireForm",vo) - ); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + // 쇼핑몰코드 + vo.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 + + DataMap resultMap = new DataMap(); + resultMap = service.selectBOBbscttDshboardInqireForm(vo); ObjectMapper objectMapper = new ObjectMapper(); @@ -421,9 +753,11 @@ public class BbsmngrController { resultMap.put("updBbsList", objectMapper.writeValueAsString(resultMap.get("updBbsList"))); } catch (WnbtRestException wre){ + log.error(wre.getMessage(), wre); throw new WnbtRestException(wre.getMessage()); } catch(Exception e) { log.error(e.getMessage(), e); + throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR); } model.addAttribute("resultMap", resultMap); @@ -431,53 +765,97 @@ public class BbsmngrController { } /** * 게시글 대시보드 조회 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @param model 모델객체 * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBbscttDshboardInqire") - public String selectBbscttDshboardInqire(BbsmngrVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectBbscttDshboardInqire(BOBbsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbscttDshboardInqire", vo), - model, - "resultMap" - ); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + vo.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 + + DataMap content = new DataMap(); + content = service.selectBOBbscttDshboardInqire(vo); + model.addAttribute("resultMap",content); + +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbscttDshboardInqire", vo), +// model, +// "resultMap" +// ); return "mngr/bbs/bbsmngr/BbscttDshboardR"; } /** * 주요 게시판 보기 설정 팝업 - * @param BbsmngrVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/selectMainBbsExpsrSetupPopupForm") - public ResponseEntity selectMainBbsExpsrSetupPopupForm(BbsmngrVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/selectMainBbsExpsrSetupPopupForm", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMainBbsExpsrSetupPopupForm(BOBbsVO 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.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOMainBbsExpsrSetupPopupForm", vo), - ReplyFromResrc::getReply - ); + DataMap content = new DataMap(); + + content = service.selectBOMainBbsExpsrSetupPopupForm(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOMainBbsExpsrSetupPopupForm", vo), +// ReplyFromResrc::getReply +// ); } /** * 주요 게시판 보기 설정 수정 - * @param BbsmngrVO 게시판 등록 파라미터 VO + * @param vo 게시판 등록 파라미터 VO * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateMainBbsExpsrSetupUpdt" , method = RequestMethod.POST) - public ResponseEntity updateMainBbsExpsrSetupUpdt(BbsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/updateMainBbsExpsrSetupUpdt" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateMainBbsExpsrSetupUpdt(BOBbsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } // 쇼핑몰코드 + vo.setRegusr(user.getUserInnb()); // 등록자 + vo.setUpdusr(user.getUserInnb()); // 수정자 - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/updateBOMainBbsExpsrSetupUpdt", vo), - ReplyFromResrc::getReply - ); + DataMap content = new DataMap(); + + content = service.updateBOMainBbsExpsrSetupUpdt(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/updateBOMainBbsExpsrSetupUpdt", vo), +// ReplyFromResrc::getReply +// ); } } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/bbs/cnslt/controller/CnsltController.java b/src/main/java/com/wb/domainserver/domain/mngr/bbs/cnslt/controller/CnsltController.java index 9d5259d3..3beffc13 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/bbs/cnslt/controller/CnsltController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/bbs/cnslt/controller/CnsltController.java @@ -1,15 +1,27 @@ package com.wb.domainserver.domain.mngr.bbs.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.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.mngr.bbs.cnslt.vo.CnsltVO; 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 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; @@ -19,6 +31,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; @@ -38,20 +51,44 @@ public class CnsltController { @Autowired private GconeMessageSource gconeMessageSource; - + @Autowired + private BOCnsltService service; + + @Autowired + private BOMaComncdService bOMaComncdService; + + @Autowired + private PaginationProperties paginationProperties; + + @Autowired + private BOCommonService boCommonService; + /** * 고객상담 통합게시판 목록 이동 * @return */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectCstmrCnsltUnityBbscttListInqireForm") - public String selectCstmrCnsltUnityBbscttListInqireForm(CnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectCstmrCnsltUnityBbscttListInqireForm(BOCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { cnsltVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCstmrCnsltUnityBbscttListInqireForm", cnsltVO), - model, - "resultMap" - ); + + Map content = new HashMap<>(); + + // 공통코드 호출 + 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" +// ); return "mngr/bbs/cnslt/CstmrCnsltUnityBbscttListRForm"; } @@ -65,13 +102,48 @@ public class CnsltController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectCstmrCnsltUnityBbscttListInqire") - public String selectCstmrCnsltUnityBbscttListInqire(CnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectCstmrCnsltUnityBbscttListInqire(BOCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { cnsltVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCstmrCnsltUnityBbscttListInqire", cnsltVO), - model, - "resultMap" - ); + + // 작성자 정보 할당 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + cnsltVO.setSopmalCd(user.getSopmalCd()); + } + Map content = new HashMap<>(); + + // 페이징 객체 생성 & 페이징정보 할당 + 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 "mngr/bbs/cnslt/CstmrCnsltUnityBbscttListR"; } @@ -83,13 +155,39 @@ public class CnsltController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectCstmrCnsltDtlUpdtInqirePopup") - public String selectCstmrCnsltDtlUpdtInqirePopup(CnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectCstmrCnsltDtlUpdtInqirePopup(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 "mngr/bbs/cnslt/CstmrCnsltDtlUpdtPopupU"; } @@ -100,8 +198,8 @@ public class CnsltController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateCstmrCnsltUpdt") - public ResponseEntity updateCstmrCnsltUpdt(@Validated CnsltVO cnsltVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateCstmrCnsltUpdt", produces= MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCstmrCnsltUpdt(@Validated BOCnsltVO cnsltVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { // 정합성 검사 if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); @@ -134,10 +232,27 @@ public class CnsltController { 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/mngr/bbs/gnrlsctt/controller/GnrlscttController.java b/src/main/java/com/wb/domainserver/domain/mngr/bbs/gnrlsctt/controller/GnrlscttController.java index a1c8f62c..a364ef1c 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/bbs/gnrlsctt/controller/GnrlscttController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/bbs/gnrlsctt/controller/GnrlscttController.java @@ -1,15 +1,40 @@ package com.wb.domainserver.domain.mngr.bbs.gnrlsctt.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.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.ordr.service.BOOrdrService; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO; import com.wb.domainserver.domain.mngr.bbs.cm.vo.CmVO; import com.wb.domainserver.domain.mngr.bbs.gnrlsctt.service.GnrlbbscttService; import com.wb.domainserver.domain.mngr.bbs.gnrlsctt.vo.GnrlscttVO; +import com.wb.domainserver.domain.sopmal.csc.vo.GnrlBbscttVO; 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.CookieUtils; 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; @@ -17,15 +42,20 @@ 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.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.BigDecimal; +import java.math.BigInteger; +import java.security.SecureRandom; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -64,48 +94,188 @@ public class GnrlscttController { @Autowired private GnrlbbscttService service; + @Autowired + private BOGnrlbbscttService boService; + @Autowired + private BOBbsService bbsService; + @Autowired + private BOCommonService boCommonService; + @Autowired + private PaginationProperties paginationProperties; + @Autowired + private BOCmService boCmService; + @Autowired + private BOMlgService mlgService; + @Autowired + private BOGoodsService goodsService; + @Autowired + private BOGnrlbbscttService boGnrlbbscttService; + @Autowired + private BOMbrService boMbrService; + @Autowired + private BOMssageService boMssageService; + @Autowired + private BOOrdrService boOrdrService; + + /** * 게시글 목록 조회(검색 section) * - * @param vo 파라미터 vo + * @param bbsctt 파라미터 vo * @param model * @return GnrlBbscttListRForm.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectBbscttListInqireForm") - public String selectBbscttListInqireForm(GnrlscttVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setRvwBbscttDv("bbsctt"); - vo.setServerDv("mngr"); - vo.setSopmalCd(authSopmalCd); + public String selectBbscttListInqireForm(BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + bbsctt.setRvwBbscttDv("bbsctt"); + bbsctt.setServerDv("mngr"); + bbsctt.setSopmalCd(authSopmalCd); + //게시글 노출 항목 설정값과 게시판 목록 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", vo), - 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 = boService.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 = boService.selectBOBbscttRegistPopupForm(bbsctt); + //리뷰항목 리스트, 리뷰항목 항목 리스트 + rvwQesitmList = boService.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", vo), +// model, +// "resultMap" +// ); return "mngr/bbs/gnrlsctt/GnrlBbscttListRForm"; } /** * 일반게시글 목록 조회 (리스트 section) - * @param vo 파라미터 vo + * @param bbsctt 파라미터 vo * @param model * @return GnrlBbscttListR.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectBbscttListInqire") - public String selectBbscttListInqire(GnrlscttVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectBbscttListInqire(BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ //쇼핑몰코드 set - vo.setSopmalCd(authSopmalCd); + bbsctt.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", vo), - model, - "resultMap" - ); - model.addAttribute("vo", vo); - String bbsTyCd = vo.getBbsTyCd(); + 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 = boService.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()); + + model.addAttribute("resultMap", content); + +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", vo), +// model, +// "resultMap" +// ); + + + model.addAttribute("vo", bbsctt); + String bbsTyCd = bbsctt.getBbsTyCd(); String returnUrl = ""; switch (bbsTyCd) { case "01" : @@ -140,63 +310,186 @@ public class GnrlscttController { } /** * 일반게시글 상세 조회 팝업 - * @param vo 파라미터 vo + * @param bbsctt 파라미터 vo * @param model * @return GnrlBbscttDtlPopupR.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBbscttDtlInqirePopup") - public String selectBbscttDtlInqirePopup(HttpServletRequest request, ModelMap model, GnrlscttVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectBbscttDtlInqirePopup(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd){ /*agentId,ip set*/ Map req = new HashMap<>(); req = Util.getRequestInfo(request); String agentId =req.get("userAgent"); - vo.setAgentId(agentId); + bbsctt.setAgentId(agentId); String ip = req.get("XForwardedFor"); - vo.setIp(ip); + bbsctt.setIp(ip); //쇼핑몰 set - vo.setServerDv("mngr"); - vo.setSopmalCd(authSopmalCd); - - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttDtlInqirePopup", vo), - model, - "resultMap" - ); + bbsctt.setServerDv("mngr"); + bbsctt.setSopmalCd(authSopmalCd); + + 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 = boService.selectBOBbscttDtlInqirePopup(bbsctt); + + // 게시글 연관상품 조회 + /* + * 게시판 설정에서 추천 상품 노출 여부가 Y이거나 + * 게시판 타입이 qna,일반리뷰,한달리뷰인 경우 + */ + if ("Y".equals(bbsInfo.get("recomendGoodsExpsrAt")) || "05".equals(bbsctt.getBbsTyCd()) || "06".equals(bbsctt.getBbsTyCd()) || "07".equals(bbsctt.getBbsTyCd())) { + Map goodsList = new HashMap(); + goodsList = boService.selectBOBbscttDtlGoods(bbsctt); + content.put("goodsList", goodsList); + } + + // 일반게시글, qna 답변 조회 + if ("01".equals(bbsctt.getBbsTyCd()) || "05".equals(bbsctt.getBbsTyCd())) { + DataMap answ = new DataMap(); + answ = boService.selectBOAnswInfoInqire(bbsctt); + content.put("answ", answ); + } + + // 조회수 증가 + boService.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/selectBOBbscttDtlInqirePopup", vo), +// model, +// "resultMap" +// ); model.addAttribute("ip", ip); - model.addAttribute("dtlPop",vo.getDtlPop()); + model.addAttribute("dtlPop",bbsctt.getDtlPop()); return "mngr/bbs/gnrlsctt/GnrlBbscttDtlPopupR"; } /** * 일반게시글 상세 댓글 조회 - * @param vo 파라미터 vo + * @param cm 파라미터 vo * @param model * @return GnrlBbscttDtlPopupR.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectCmList") - public String selectCmList(HttpServletRequest request, CmVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - vo.setServerDv("mngr"); + public String selectCmList(HttpServletRequest request, BOCmVO cm, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + cm.setServerDv("mngr"); //ip주소 get Map req = new HashMap<>(); req = Util.getRequestInfo(request); String ip = req.get("XForwardedFor"); - vo.setIp(ip); + cm.setIp(ip); //쇼핑몰 set - vo.setSopmalCd(authSopmalCd); + cm.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmList", vo), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - model.addAttribute("cmVO", vo); + 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()); + + model.addAttribute("resultMap", content); + +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmList", vo), +// model, +// "resultMap" +// ); + + model.addAttribute("cmVO", cm); model.addAttribute("ip", ip); return "mngr/bbs/gnrlsctt/CmListR"; } @@ -208,15 +501,37 @@ public class GnrlscttController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/selectMlgRtrvlAmt", method = RequestMethod.POST) - public ResponseEntity selectMlgRtrvlAmt(GnrlscttVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/selectMlgRtrvlAmt", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectMlgRtrvlAmt(BOGnrlbbscttVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd) { //쇼핑몰코드 set bbsctt.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMlgRtrvlAmt", bbsctt), - ReplyFromResrc::getReply - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + + DataMap content = new DataMap(); + BOMlgVO mlgVO = new BOMlgVO(); + + mlgVO.setMbrInnb(String.valueOf(bbsctt.getRegusr())); + mlgVO.setMbrDvCd(bbsctt.getMbrDvCd()); + mlgVO.setBbscttInnb(bbsctt.getBbscttInnb()); + mlgVO.setSopmalCd(bbsctt.getSopmalCd()); + + content.put("accmlMlgInfo", mlgService.selectBOMlgByBbscttInnb(mlgVO)); + content.put("mlgBlce", mlgService.selectBOMlgBlceSum(mlgVO)); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); + +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMlgRtrvlAmt", bbsctt), +// ReplyFromResrc::getReply +// ); } /** @@ -225,25 +540,131 @@ public class GnrlscttController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateBbscttDel" , method = RequestMethod.POST) - public ResponseEntity updateBbscttDel(GnrlscttVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/updateBbscttDel" , method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBbscttDel(BOGnrlbbscttVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd){ //쇼핑몰코드 set bbsctt.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttDel", bbsctt), - ReplyFromResrc::getReply - ); + // 작성자 정보 추출 + if (user.getUserInnb() > 0) { //회원 , 관리자 + bbsctt.setUpdusr(user.getUserInnb()); + } else { // 비회원 + bbsctt.setUpdusr(0); + } + + Map content = new HashMap<>(); + + /*게시글 삭제*/ + DataMap bbscttDelResult = boService.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()); + } + boService.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 vo 파라미터 vo + * @param bbsctt 파라미터 vo * @param model * @return GnrlBbscttRegistPopupC.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBbscttRegistPopupForm") - public String selectBbscttRegistPopupForm(HttpServletRequest request, GnrlscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectBbscttRegistPopupForm(HttpServletRequest request, BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ //쇼핑몰코드 set bbsctt.setServerDv("mngr"); bbsctt.setSopmalCd(authSopmalCd); @@ -254,11 +675,107 @@ public class GnrlscttController { String ip = req.get("XForwardedFor"); bbsctt.setIp(ip); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm", bbsctt), - model, - "resultMap" - ); + 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 = boGnrlbbscttService.selectBOBbscttItmInqire(bbsctt); + + //리뷰항목 리스트, 리뷰항목 항목 리스트 + Map rvwQesitmList = new HashMap(); + rvwQesitmList = boGnrlbbscttService.selectBOStarItm(bbsctt); + + //추가항목 리스트, 추가항목 항목 리스트 + Map qesitmList = new HashMap(); + qesitmList = boGnrlbbscttService.selectBOBbscttRegistPopupForm(bbsctt); + + //사용자 > 리뷰 상품 조회 + DataMap rvwGoodsInfo = new DataMap(); + DataMap mlgInfo = new DataMap(); + if ("sopmal".equals(bbsctt.getServerDv())) { + if ("rvw".equals(bbsctt.getRvwBbscttDv())) { + rvwGoodsInfo = boGnrlbbscttService.selectBORvwGoods(bbsctt); + content.put("rvwGoodsInfo", rvwGoodsInfo); + mlgInfo = boGnrlbbscttService.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 = boGnrlbbscttService.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); + + model.addAttribute("resultMap", content); + +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm", bbsctt), +// model, +// "resultMap" +// ); model.addAttribute("ip", ip); return "mngr/bbs/gnrlsctt/GnrlBbscttRegistPopupC"; } @@ -266,12 +783,12 @@ public class GnrlscttController { /** * 일반게시글 등록 * @param bbsctt 파라미터 vo - * @param BindingResult + * @param bindingResult * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertBbscttRegist" , method = RequestMethod.POST) - public ResponseEntity insertBbscttRegist( HttpServletRequest request,@Validated GnrlscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/insertBbscttRegist" , method = RequestMethod.POST, produces=MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertBbscttRegist( HttpServletRequest request,@Validated BOGnrlbbscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ List> errorList = new ArrayList<>(); //validation체크 if(bindingResult.hasErrors()) { @@ -320,8 +837,7 @@ public class GnrlscttController { } } } - if(errorList != null - && errorList.size() > 0) { + if(errorList != null && errorList.size() > 0) { throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList)); } @@ -383,11 +899,213 @@ public class GnrlscttController { bbsctt.setFileInfo(ulpladFileMap); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/insertBOBbscttRegist", bbsctt), - ReplyFromResrc::getReply - ); + 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 = boService.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); + } + } + /*회원 사이트 리뷰 작성수 수정 */ + boService.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 ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/insertBOBbscttRegist", bbsctt), +// ReplyFromResrc::getReply +// ); } /****************************************************** * 게시글 수정 팝업 @@ -400,17 +1118,67 @@ public class GnrlscttController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBbscttUpdtPopupForm") - public String selectBbscttUpdtPopupForm(GnrlscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectBbscttUpdtPopupForm(BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ //쇼핑몰코드 set bbsctt.setServerDv("mngr"); bbsctt.setSopmalCd(authSopmalCd); //게시글 상세 조회 및 게시판 설정 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm", bbsctt), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + ; + if (user.getUserInnb() > 0) { + if ("mngr".equals(bbsctt.getServerDv())) { + bbsctt.setRegusrDvCd("02"); //관리자 + } else { + bbsctt.setRegusrDvCd("01"); //회원 + bbsctt.setAnswMbtlnb(user.getMbtlnb()); + } + } else { + bbsctt.setRegusrDvCd("99");//비회원 + } + bbsctt.setSecretKey(boCommonService.selectSecretkey()); + // 게시판 설정 정보 + BOBbsVO bbsVO = new BOBbsVO(); + // bbsVO에 쇼핑몰코드, 해당 게시판 set + bbsVO.setSopmalCd(bbsctt.getSopmalCd()); + bbsVO.setBbsId(bbsctt.getBbsId()); + bbsVO.setBbsTyCd(bbsctt.getBbsTyCd()); + DataMap bbsInfo = new DataMap(); + bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO); + + // 게시글 상세 조회 + Map bbscttInfo = new HashMap(); + bbscttInfo = boService.selectBOBbscttUpdt(bbsctt); + + // 분류 조회 + List itmList = new ArrayList<>(); + itmList = boService.selectBOBbscttItmInqire(bbsctt); + + //추가 항목 조회, 추가항목 항목 조회 + Map qesitmList = new HashMap(); + qesitmList = boService.selectBOBbscttRegistPopupForm(bbsctt); + + //리뷰항목 리스트, 리뷰항목 항목 리스트 + Map rvwQesitmList = new HashMap(); + rvwQesitmList = boService.selectBOStarItm(bbsctt); + + Map content = new HashMap(); + content.put("bbsInfo", bbsInfo); + content.put("bbscttVO", bbsctt); + content.put("bbscttInfo", bbscttInfo); + content.put("itmList", itmList); + content.put("qesitmList", qesitmList); + content.put("rvwQesitmList", rvwQesitmList); + + model.addAttribute("resultMap",content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm", bbsctt), +// model, +// "resultMap" +// ); model.addAttribute("dtlPop", bbsctt.getDtlPop()); return "mngr/bbs/gnrlsctt/GnrlBbscttUpdtPopupU"; @@ -422,8 +1190,8 @@ public class GnrlscttController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateBbscttUpdt" , method = RequestMethod.POST) - public ResponseEntity updateBbscttUpdt( HttpServletRequest request,@Validated GnrlscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/updateBbscttUpdt" , method = RequestMethod.POST, produces=MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBbscttUpdt( HttpServletRequest request,@Validated BOGnrlbbscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ List> errorList = new ArrayList<>(); //validation체크 if(bindingResult.hasErrors()) { @@ -523,10 +1291,31 @@ public class GnrlscttController { ulpladFileMap = filestore.fileUpload(request); bbsctt.setFileInfo(ulpladFileMap); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttUpdt", bbsctt), - ReplyFromResrc::getReply - ); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + 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 = boService.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 +// ); } @@ -536,8 +1325,8 @@ public class GnrlscttController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertBbscttCmRegist") - public ResponseEntity insertBbscttCmRegist(HttpServletRequest request ,@Validated CmVO cm, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/insertBbscttCmRegist",produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertBbscttCmRegist(HttpServletRequest request ,@Validated BOCmVO cm, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } @@ -550,11 +1339,41 @@ public class GnrlscttController { Map req = Util.getRequestInfo(request); String ip = req.get("XForwardedFor"); cm.setIp(ip); + 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"); //비회원 + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/insertBOCmRegist", cm), - ReplyFromResrc::getReply - ); + 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 +// ); } /** @@ -563,8 +1382,8 @@ public class GnrlscttController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateBbscttCmUpdt" , method = RequestMethod.POST) - public ResponseEntity updateBbscttCmUpdt(@Validated CmVO cm, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/updateBbscttCmUpdt" , method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBbscttCmUpdt(@Validated BOCmVO cm, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } @@ -573,10 +1392,32 @@ public class GnrlscttController { cm.setServerDv("mngr"); cm.setSopmalCd(authSopmalCd); - 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 +// ); } /** @@ -586,19 +1427,39 @@ public class GnrlscttController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/deleteBbscttCmDel", method = RequestMethod.POST) - public ResponseEntity deleteBbscttCmDel(CmVO cm, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/deleteBbscttCmDel", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteBbscttCmDel(BOCmVO cm, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } //쇼핑몰코드 set cm.setSopmalCd(authSopmalCd); + 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); + } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/deleteBOCmDel", cm), - ReplyFromResrc::getReply - ); + 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 +// ); } @@ -610,18 +1471,32 @@ public class GnrlscttController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateBbscttExpsrAt", method = RequestMethod.POST) - public ResponseEntity updateBbscttExpsrAt(GnrlscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateBbscttExpsrAt", method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBbscttExpsrAt(BOGnrlbbscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } //쇼핑몰코드 set bbsctt.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setUpdusr(user.getUserInnb()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttExpsrAt", bbsctt), - ReplyFromResrc::getReply - ); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + + Map content = new HashMap(); + content = boService.updateBOBbscttExpsrAt(bbsctt); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttExpsrAt", bbsctt), +// ReplyFromResrc::getReply +// ); } /** @@ -633,16 +1508,45 @@ public class GnrlscttController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectBbscttAnswRegistPopupForm") - public String selectBbscttAnswRegistPopupForm(GnrlscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectBbscttAnswRegistPopupForm(BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { bbsctt.setServerDv("mngr"); //쇼핑몰코드 set bbsctt.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + ; + bbsctt.setRegusr(user.getUserInnb()); + bbsctt.setRegusrDvCd("02"); + BOGnrlbbscttVO regusrInfo = new BOGnrlbbscttVO(); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO,"/gcone/bbs/gnrlbbsctt/selectBOBbscttAnswRegistPopupForm", bbsctt), - model, - "resultMap" - ); + // 게시판 설정 정보 + 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 map = new HashMap(); + map = boService.selectBOBbscttAnswRegistPopupForm(bbsctt); + + DataMap content = new DataMap(); + + content.put("regusrInfo", bbsctt); + content.put("bbsInfo", bbsInfo); + content.put("map", map); + + model.addAttribute("resultMap", content); + +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO,"/gcone/bbs/gnrlbbsctt/selectBOBbscttAnswRegistPopupForm", bbsctt), +// model, +// "resultMap" +// ); model.addAttribute("dtlPop", bbsctt.getDtlPop()); return "mngr/bbs/gnrlsctt/GnrlBbscttAnswRegistPopupC"; } @@ -654,8 +1558,8 @@ public class GnrlscttController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/insertBbscttAnswRegist") - public ResponseEntity insertBbscttAnswRegist(HttpServletRequest request, @Validated GnrlscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/insertBbscttAnswRegist", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertBbscttAnswRegist(HttpServletRequest request, @Validated BOGnrlbbscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } @@ -672,23 +1576,219 @@ public class GnrlscttController { String agentId = ""; - // 쿠키를 가져옴 - Cookie[] cookies = request.getCookies(); - //agentId 쿠키 있을 경우 가져옴 - if (cookies != null) { - for (Cookie cookie : cookies) { - if (cookie.getName().equals("agent_id")) { - agentId = cookie.getValue(); - bbsctt.setAgentId(agentId); + agentId = CookieUtils.getCookieValue("agent_id",request); + if(agentId != null && !agentId.isEmpty()){ + bbsctt.setAgentId(agentId); + } + + 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 = boService.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); + } + } + /*회원 사이트 리뷰 작성수 수정 */ + boService.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 responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/insertBOBbscttRegist", bbsctt), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/insertBOBbscttRegist", bbsctt), +// ReplyFromResrc::getReply +// ); } /** @@ -700,15 +1800,37 @@ public class GnrlscttController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectBbscttAnswUpdtPopupForm") - public String selectBbscttAnswUpdtPopupForm(GnrlscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectBbscttAnswUpdtPopupForm(BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { //쇼핑몰코드 set bbsctt.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO,"/gcone/bbs/gnrlbbsctt/selectBOBbscttAnswUpdtPopupForm", bbsctt), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + bbsctt.setRegusrDvCd("02"); + // 게시판 설정 정보 + 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 map = new DataMap(); + map = boService.selectBOBbscttAnswUpdtPopupForm(bbsctt); + DataMap content = new DataMap(); + + content.put("map", map); + content.put("bbsInfo", bbsInfo); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO,"/gcone/bbs/gnrlbbsctt/selectBOBbscttAnswUpdtPopupForm", bbsctt), +// model, +// "resultMap" +// ); model.addAttribute("dtlPop", bbsctt.getDtlPop()); return "mngr/bbs/gnrlsctt/GnrlBbscttAnswUpdtPopupU"; @@ -722,19 +1844,53 @@ public class GnrlscttController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateBbscttAnswUpdt", method = RequestMethod.POST) - public ResponseEntity updateBbscttAnswUpdt(@Validated GnrlscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateBbscttAnswUpdt", method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBbscttAnswUpdt(@Validated BOGnrlbbscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } //쇼핑몰코드 set bbsctt.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttUpdt", bbsctt), - ReplyFromResrc::getReply - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + 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 = boService.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 +// ); } + 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(); + } + } \ No newline at end of file diff --git a/src/main/java/com/wb/domainserver/domain/mngr/bbs/rvw/controller/RvwController.java b/src/main/java/com/wb/domainserver/domain/mngr/bbs/rvw/controller/RvwController.java index 6a9577d6..6d4f2765 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/bbs/rvw/controller/RvwController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/bbs/rvw/controller/RvwController.java @@ -1,18 +1,39 @@ package com.wb.domainserver.domain.mngr.bbs.rvw.controller; import com.wb.domainserver.common.msg.GconeMessageSource; +import com.wb.domainserver.domain.gcone.bbs.bbs.service.BOBbsService; +import com.wb.domainserver.domain.gcone.bbs.bbs.vo.BOBbsVO; +import com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.service.BOGnrlbbscttService; +import com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.vo.BODelInfoVO; +import com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.vo.BOGnrlbbscttVO; +import com.wb.domainserver.domain.gcone.common.service.BOCommonService; +import com.wb.domainserver.domain.gcone.goods.goods.service.BOGoodsService; +import com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO; +import com.wb.domainserver.domain.gcone.mbr.mbr.service.BOMbrService; +import com.wb.domainserver.domain.gcone.mbr.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.ordr.service.BOOrdrService; +import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO; +import com.wb.domainserver.domain.mngr.bbs.gnrlsctt.controller.GnrlscttController; import com.wb.domainserver.domain.mngr.bbs.rvw.vo.RvwVO; 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.file.service.FileStorageService; +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; @@ -24,6 +45,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import java.math.BigDecimal; +import java.math.BigInteger; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -45,96 +68,320 @@ public class RvwController { private GconeMessageSource gconeMessageSource; @Autowired private FileStorageService filestore; + @Autowired + private BOBbsService bbsService; + @Autowired + private BOGnrlbbscttService service; + @Autowired + private BOCommonService boCommonService; + @Autowired + private BOMlgService mlgService; + @Autowired + private BOGoodsService goodsService; + @Autowired + private BOMbrService boMbrService; + @Autowired + private BOMssageService boMssageService; + @Autowired + private BOOrdrService boOrdrService; /** * 게시글 목록 조회 팝업 (검색 section) * - * @param vo 파라미터 vo + * @param bbsctt 파라미터 vo * @return GnrlBbscttListRForm.jsp */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectRvwListInqireForm") - public String selectRvwListInqireForm(RvwVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - vo.setRvwBbscttDv("rvw"); + public String selectRvwListInqireForm(BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + bbsctt.setSopmalCd(authSopmalCd); + bbsctt.setRvwBbscttDv("rvw"); //게시글 노출 항목 설정값과 게시판 목록 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", vo), - 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", vo), +// model, +// "resultMap" +// ); return "mngr/bbs/rvw/RvwListRForm"; } /** * 리뷰 목록 조회 (리스트 section) * - * @param vo 파라미터 vo + * @param bbsctt 파라미터 vo * @return GnrlBbscttListR.jsp */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectRvwListInqire") - public String selectRvwListInqire(RvwVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); + public String selectRvwListInqire(BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + bbsctt.setSopmalCd(authSopmalCd); //게시글 노출 항목 설정값과 게시판 목록 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", vo), - 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", vo), +// model, +// "resultMap" +// ); return "mngr/bbs/rvw/RvwListR"; } /** * 베스트 후기 수정(리스트 section) * - * @param rvwVO 파라미터 vo + * @param bbsctt 파라미터 vo * @return GnrlBbscttListR.jsp */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/updateRvwBstAt", method = RequestMethod.POST) - public ResponseEntity updateRvwBstAt(RvwVO rvwVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - rvwVO.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBORvwBstAt", rvwVO), - ReplyFromResrc::getReply + public ResponseEntity updateRvwBstAt(BOGnrlbbscttVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + bbsctt.setSopmalCd(authSopmalCd); + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setUpdusr(user.getUserInnb()); + Map content = new HashMap(); + content = service.updateBORvwBstAt(bbsctt); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBORvwBstAt", rvwVO), +// ReplyFromResrc::getReply +// ); } /** * 리뷰 메인노츨 수정 * - * @param rvwVO 파라미터 vo + * @param bbsctt 파라미터 vo * @return GnrlBbscttListR.jsp */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/updateRvwMainExpsrAt", method = RequestMethod.POST) - public ResponseEntity updateRvwMainExpsrAt(RvwVO rvwVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - rvwVO.setSopmalCd(authSopmalCd); + @RequestMapping(value = "/updateRvwMainExpsrAt", method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateRvwMainExpsrAt(BOGnrlbbscttVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + bbsctt.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + bbsctt.setUpdusr(user.getUserInnb()); + Map message = new HashMap(); + message = service.updateBORvwMainExpsrAt(bbsctt); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBORvwMainExpsrAt", rvwVO), - ReplyFromResrc::getReply + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBORvwMainExpsrAt", rvwVO), +// ReplyFromResrc::getReply +// ); } /** * 리뷰 상세 조회 팝업 * - * @param vo 파라미터 vo + * @param bbsctt 파라미터 vo * @return GnrlBbscttDtlPopupR.jsp */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectRvwDtlInqirePopup") - public String selectRvwDtlInqirePopup(RvwVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - vo.setRvwBbscttDv("rvw"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttDtlInqirePopup", vo), - model, - "resultMap" - ); - model.addAttribute("dtlPop", vo.getDtlPop()); + public String selectRvwDtlInqirePopup(BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + bbsctt.setSopmalCd(authSopmalCd); + bbsctt.setRvwBbscttDv("rvw"); + + 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.selectBOBbscttDtlInqirePopup(bbsctt); + + // 게시글 연관상품 조회 + /* + * 게시판 설정에서 추천 상품 노출 여부가 Y이거나 + * 게시판 타입이 qna,일반리뷰,한달리뷰인 경우 + */ + 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/selectBOBbscttDtlInqirePopup", vo), +// model, +// "resultMap" +// ); + model.addAttribute("dtlPop", bbsctt.getDtlPop()); return "mngr/bbs/rvw/RvwDtlPopupR"; } @@ -145,13 +392,121 @@ public class RvwController { * @return ResponseEntity */ @Policy(AuthPolicy.PUBLIC) - @RequestMapping(value = "/updateRvwDel", method = RequestMethod.POST) - public ResponseEntity updateRvwDel(@RequestBody RvwVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateRvwDel", method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateRvwDel(@RequestBody BOGnrlbbscttVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd) { bbsctt.setSopmalCd(authSopmalCd); - 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 +// ); } /** @@ -162,19 +517,115 @@ public class RvwController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectRvwRegistPopupForm") - public String selectRvwRegistPopupForm(HttpServletRequest request, RvwVO rvwVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectRvwRegistPopupForm(HttpServletRequest request, BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { //ip주소 get Map req = new HashMap<>(); req = Util.getRequestInfo(request); String ip = req.get("XForwardedFor"); - rvwVO.setIp(ip); - rvwVO.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm", rvwVO), - model, - "resultMap" - ); + bbsctt.setIp(ip); + bbsctt.setSopmalCd(authSopmalCd); + + 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); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm", rvwVO), +// model, +// "resultMap" +// ); model.addAttribute("ip", ip); return "mngr/bbs/rvw/RvwRegistPopupC"; } @@ -187,35 +638,35 @@ public class RvwController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/insertRvwRegist", method = RequestMethod.POST) - public ResponseEntity insertRvwRegist(HttpServletRequest request, @Validated RvwVO rvwVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public ResponseEntity insertRvwRegist(HttpServletRequest request, @Validated BOGnrlbbscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { List> errorList = new ArrayList<>(); //validation체크 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } else if (true) { //순서 여부가 'Y'이고 순서 값 없을 시 - if ("Y".equals(rvwVO.getSortOrdrAt())) { - if (rvwVO.getSortOrdr() == null) { + if ("Y".equals(bbsctt.getSortOrdrAt())) { + if (bbsctt.getSortOrdr() == null) { errorList.add(ValidateResultConverter.setErrorMap("sortOrdr", gconeMessageSource.getMessage("errors.required", new Object[]{"순서"}))); } } //필수 입력 여부설정이 Y 이고 입력 여부가 N일 시 validation 체크(추가입력항목,입력항목) - if (rvwVO.getQesitmEssntlAtArr() != null) { - for (int idx = 0; idx < rvwVO.getQesitmEssntlAtArr().length; idx++) { - if ("Y".equals(rvwVO.getQesitmEssntlAtArr()[idx]) && "N".equals(rvwVO.getQesitmAtArr()[idx])) { - errorList.add(ValidateResultConverter.setErrorMap("answCnArr", gconeMessageSource.getMessage("errors.required", new Object[]{rvwVO.getQesitmNmArr()[idx]}))); + if (bbsctt.getQesitmEssntlAtArr() != null) { + for (int idx = 0; idx < bbsctt.getQesitmEssntlAtArr().length; idx++) { + if ("Y".equals(bbsctt.getQesitmEssntlAtArr()[idx]) && "N".equals(bbsctt.getQesitmAtArr()[idx])) { + errorList.add(ValidateResultConverter.setErrorMap("answCnArr", gconeMessageSource.getMessage("errors.required", new Object[]{bbsctt.getQesitmNmArr()[idx]}))); } } } //필수 입력 여부설정이 Y 이고 입력 여부가 N일 시 validation 체크(리뷰) - if (rvwVO.getRvwQesitmEssntlAtArr() != null) { - for (int idx = 0; idx < rvwVO.getRvwQesitmEssntlAtArr().length; idx++) { - if ("Y".equals(rvwVO.getRvwQesitmEssntlAtArr()[idx]) && "N".equals(rvwVO.getRvwQesitmAtArr()[idx])) { - errorList.add(ValidateResultConverter.setErrorMap("evlScoreArr", gconeMessageSource.getMessage("errors.required", new Object[]{rvwVO.getRvwQesitmNmArr()[idx]}))); + if (bbsctt.getRvwQesitmEssntlAtArr() != null) { + for (int idx = 0; idx < bbsctt.getRvwQesitmEssntlAtArr().length; idx++) { + if ("Y".equals(bbsctt.getRvwQesitmEssntlAtArr()[idx]) && "N".equals(bbsctt.getRvwQesitmAtArr()[idx])) { + errorList.add(ValidateResultConverter.setErrorMap("evlScoreArr", gconeMessageSource.getMessage("errors.required", new Object[]{bbsctt.getRvwQesitmNmArr()[idx]}))); } } } - if (rvwVO.getGoodsInnbArr() == null) { + if (bbsctt.getGoodsInnbArr() == null) { errorList.add(ValidateResultConverter.setErrorMap("goodsInnbArr", gconeMessageSource.getMessage("errors.required", new Object[]{"상품 정보"}))); } } @@ -229,29 +680,234 @@ public class RvwController { Map req = new HashMap<>(); req = Util.getRequestInfo(request); String ip = req.get("XForwardedFor"); - rvwVO.setIp(ip); - rvwVO.setSopmalCd(authSopmalCd); + bbsctt.setIp(ip); + bbsctt.setSopmalCd(authSopmalCd); //파일 경로 설정 - request.setAttribute("shopCd", rvwVO.getSopmalCd()); + request.setAttribute("shopCd", bbsctt.getSopmalCd()); request.setAttribute("pathGubun", "BDIG");//게시판 이미지 구분 - request.setAttribute("subPathId", rvwVO.getBbsId()); //게시판일 경우에만 셋팅 - request.setAttribute("validExp", rvwVO.getAcceptFileExtensions()); //게시판 중 BDFL 일경우만 셋팅 + request.setAttribute("subPathId", bbsctt.getBbsId()); //게시판일 경우에만 셋팅 + request.setAttribute("validExp", bbsctt.getAcceptFileExtensions()); //게시판 중 BDFL 일경우만 셋팅 //파일 업로드 - if ("Y".equals(rvwVO.getFilAtch())) { + if ("Y".equals(bbsctt.getFilAtch())) { List> ulpladFileMap = new ArrayList>(); ulpladFileMap = filestore.fileUpload(request); - rvwVO.setFileInfo(ulpladFileMap); - rvwVO.setFilDvCd("01"); - if (!CollectionUtils.isEmpty(rvwVO.getFileInfo())) { - rvwVO.setPhotoRvwAt("Y"); + bbsctt.setFileInfo(ulpladFileMap); + bbsctt.setFilDvCd("01"); + if (!CollectionUtils.isEmpty(bbsctt.getFileInfo())) { + bbsctt.setPhotoRvwAt("Y"); } } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/insertBOBbscttRegist", rvwVO), - ReplyFromResrc::getReply + + 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()))) { + GnrlscttController gnrlscttController = new GnrlscttController(); + mbrId = gnrlscttController.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 ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/insertBOBbscttRegist", rvwVO), +// ReplyFromResrc::getReply +// ); } /****************************************************** @@ -266,15 +922,66 @@ public class RvwController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/selectRvwUpdtPopupForm") - public String selectRvwUpdtPopupForm(RvwVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public String selectRvwUpdtPopupForm(BOGnrlbbscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { bbsctt.setRvwBbscttDv("rvw"); bbsctt.setSopmalCd(authSopmalCd); //게시글 상세 조회 및 게시판 설정 조회 - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm", bbsctt), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if ("01".equals(user.getSysDvCd())) { + bbsctt.setSopmalCd(user.getSopmalCd()); + } + ; + if (user.getUserInnb() > 0) { + if ("mngr".equals(bbsctt.getServerDv())) { + bbsctt.setRegusrDvCd("02"); //관리자 + } else { + bbsctt.setRegusrDvCd("01"); //회원 + bbsctt.setAnswMbtlnb(user.getMbtlnb()); + } + } else { + bbsctt.setRegusrDvCd("99");//비회원 + } + bbsctt.setSecretKey(boCommonService.selectSecretkey()); + // 게시판 설정 정보 + BOBbsVO bbsVO = new BOBbsVO(); + // bbsVO에 쇼핑몰코드, 해당 게시판 set + bbsVO.setSopmalCd(bbsctt.getSopmalCd()); + bbsVO.setBbsId(bbsctt.getBbsId()); + bbsVO.setBbsTyCd(bbsctt.getBbsTyCd()); + DataMap bbsInfo = new DataMap(); + bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO); + + // 게시글 상세 조회 + Map bbscttInfo = new HashMap(); + bbscttInfo = service.selectBOBbscttUpdt(bbsctt); + + // 분류 조회 + List itmList = new ArrayList<>(); + itmList = service.selectBOBbscttItmInqire(bbsctt); + + //추가 항목 조회, 추가항목 항목 조회 + Map qesitmList = new HashMap(); + qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt); + + //리뷰항목 리스트, 리뷰항목 항목 리스트 + Map rvwQesitmList = new HashMap(); + rvwQesitmList = service.selectBOStarItm(bbsctt); + + Map content = new HashMap(); + content.put("bbsInfo", bbsInfo); + content.put("bbscttVO", bbsctt); + content.put("bbscttInfo", bbscttInfo); + content.put("itmList", itmList); + content.put("qesitmList", qesitmList); + content.put("rvwQesitmList", rvwQesitmList); + + model.addAttribute("resultMap",content); + +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm", bbsctt), +// model, +// "resultMap" +// ); model.addAttribute("dtlPop", bbsctt.getDtlPop()); return "mngr/bbs/rvw/RvwUpdtPopupU"; } @@ -287,33 +994,33 @@ public class RvwController { * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateRvwUpdt", method = RequestMethod.POST) + @RequestMapping(value = "/updateRvwUpdt", method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE) @SuppressWarnings("unchecked") - public ResponseEntity updateRvwUpdt(HttpServletRequest request, @Validated RvwVO rvwVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + public ResponseEntity updateRvwUpdt(HttpServletRequest request, @Validated BOGnrlbbscttVO bbsctt, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) { List> errorList = new ArrayList<>(); //validation체크 if (bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } else if (true) { //순서 여부가 'Y'이고 순서 값 없을 시 - if ("Y".equals(rvwVO.getSortOrdrAt())) { - if (rvwVO.getSortOrdr() == null) { + if ("Y".equals(bbsctt.getSortOrdrAt())) { + if (bbsctt.getSortOrdr() == null) { errorList.add(ValidateResultConverter.setErrorMap("sortOrdr", gconeMessageSource.getMessage("errors.required", new Object[]{"순서"}))); } } //필수 입력 여부설정이 Y 이고 입력 여부가 N일 시 validation 체크(추가입력항목,입력항목) - if (rvwVO.getQesitmEssntlAtArr() != null) { - for (int idx = 0; idx < rvwVO.getQesitmEssntlAtArr().length; idx++) { - if ("Y".equals(rvwVO.getQesitmEssntlAtArr()[idx]) && "N".equals(rvwVO.getQesitmAtArr()[idx])) { - errorList.add(ValidateResultConverter.setErrorMap("answCnArr", gconeMessageSource.getMessage("errors.required", new Object[]{rvwVO.getQesitmNmArr()[idx]}))); + if (bbsctt.getQesitmEssntlAtArr() != null) { + for (int idx = 0; idx < bbsctt.getQesitmEssntlAtArr().length; idx++) { + if ("Y".equals(bbsctt.getQesitmEssntlAtArr()[idx]) && "N".equals(bbsctt.getQesitmAtArr()[idx])) { + errorList.add(ValidateResultConverter.setErrorMap("answCnArr", gconeMessageSource.getMessage("errors.required", new Object[]{bbsctt.getQesitmNmArr()[idx]}))); } } } //필수 입력 여부설정이 Y 이고 입력 여부가 N일 시 validation 체크(리뷰) - if (rvwVO.getRvwQesitmEssntlAtArr() != null) { - for (int idx = 0; idx < rvwVO.getRvwQesitmEssntlAtArr().length; idx++) { - if ("Y".equals(rvwVO.getRvwQesitmEssntlAtArr()[idx]) && "N".equals(rvwVO.getRvwQesitmAtArr()[idx])) { - errorList.add(ValidateResultConverter.setErrorMap("evlScoreArr", gconeMessageSource.getMessage("errors.required", new Object[]{rvwVO.getRvwQesitmNmArr()[idx]}))); + if (bbsctt.getRvwQesitmEssntlAtArr() != null) { + for (int idx = 0; idx < bbsctt.getRvwQesitmEssntlAtArr().length; idx++) { + if ("Y".equals(bbsctt.getRvwQesitmEssntlAtArr()[idx]) && "N".equals(bbsctt.getRvwQesitmAtArr()[idx])) { + errorList.add(ValidateResultConverter.setErrorMap("evlScoreArr", gconeMessageSource.getMessage("errors.required", new Object[]{bbsctt.getRvwQesitmNmArr()[idx]}))); } } } @@ -326,99 +1033,120 @@ public class RvwController { Map req = new HashMap<>(); req = Util.getRequestInfo(request); String ip = req.get("XForwardedFor"); - rvwVO.setIp(ip); + bbsctt.setIp(ip); //쇼핑몰설정 set - rvwVO.setSopmalCd(authSopmalCd); + bbsctt.setSopmalCd(authSopmalCd); //파일 경로 설정 - request.setAttribute("shopCd", rvwVO.getSopmalCd()); + request.setAttribute("shopCd", bbsctt.getSopmalCd()); request.setAttribute("pathGubun", "BDIG");//게시판 일반첨부파일 구분 - request.setAttribute("subPathId", rvwVO.getBbsId()); //게시판일 경우에만 셋팅 - request.setAttribute("validExp", rvwVO.getAcceptFileExtensions()); //게시판 중 BDFL 일경우만 셋팅 + request.setAttribute("subPathId", bbsctt.getBbsId()); //게시판일 경우에만 셋팅 + request.setAttribute("validExp", bbsctt.getAcceptFileExtensions()); //게시판 중 BDFL 일경우만 셋팅 //파일 업로드 - if ("Y".equals(rvwVO.getFilAtch())) { + if ("Y".equals(bbsctt.getFilAtch())) { List> ulpladFileMap = new ArrayList>(); ulpladFileMap = filestore.fileUpload(request); - rvwVO.setFileInfo(ulpladFileMap); - rvwVO.setFilDvCd("01"); + bbsctt.setFileInfo(ulpladFileMap); + bbsctt.setFilDvCd("01"); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttUpdt", rvwVO), - ReplyFromResrc::getReply + + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + 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", rvwVO), +// ReplyFromResrc::getReply +// ); } - /** - * 추가입력항목 조회 - * - * @param bbsctt - * @return ResponseEntity - */ - @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/selectItmCnListAjax") - public ResponseEntity selectItmCnListAjax(RvwVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - bbsctt.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOItmCnListAjax", bbsctt), - ReplyFromResrc::getReply - ); - } - - @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/selectRvwLgqyRegistPopupForm") - public String selectRvwLgqyRegistPopupForm(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - return "/mngr/bbs/rvw/RvwLgqyRegistPopupC"; - } - - @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/insertRvwLgqyRegist", method = RequestMethod.POST) - public String insertRvwLgqyRegist(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - return "/"; - } - - @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/selectRvwLgqyRegistListInqire") - public String selectRvwLgqyRegistListInqire(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - - return "/mngr/bbs/rvw/RvwLgqyRegistListR"; - } - - @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/insertRvwLgqyRegistBng", method = RequestMethod.POST) - public String insertRvwLgqyRegistBng(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - - return "/"; - } - - @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/deleteRvwLgqyRegistDel", method = RequestMethod.POST) - public String deleteRvwLgqyRegistDel(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - - return "/0"; - } - - @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/selectRvwLgqyRegistDtlUpdtPopupForm") - public String selectRvwLgqyRegistDtlUpdtPopupForm(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - - return "/mngr/bbs/rvw/RvwLgqyRegistDtlUpdtPopupU"; - } - - @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateRvwLgqyRegistUpdt", method = RequestMethod.POST) - public String updateRvwLgqyRegistUpdt(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - - return "/"; - } +// /** +// * 추가입력항목 조회 +// * +// * @param bbsctt +// * @return ResponseEntity +// */ +// @Policy(AuthPolicy.RESTRICTED) +// @RequestMapping(value = "/selectItmCnListAjax",produces = MediaType.APPLICATION_JSON_VALUE) +// public ResponseEntity selectItmCnListAjax(RvwVO bbsctt, @CookieValue(value = "authSopmalCd") String authSopmalCd) { +// bbsctt.setSopmalCd(authSopmalCd); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOItmCnListAjax", bbsctt), +// ReplyFromResrc::getReply +// ); +// } +// +// @Policy(AuthPolicy.RESTRICTED) +// @RequestMapping(value = "/selectRvwLgqyRegistPopupForm") +// public String selectRvwLgqyRegistPopupForm(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { +// vo.setSopmalCd(authSopmalCd); +// return "/mngr/bbs/rvw/RvwLgqyRegistPopupC"; +// } +// +// @Policy(AuthPolicy.RESTRICTED) +// @RequestMapping(value = "/insertRvwLgqyRegist", method = RequestMethod.POST) +// public String insertRvwLgqyRegist(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { +// vo.setSopmalCd(authSopmalCd); +// return "/"; +// } +// +// @Policy(AuthPolicy.RESTRICTED) +// @RequestMapping(value = "/selectRvwLgqyRegistListInqire") +// public String selectRvwLgqyRegistListInqire(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { +// vo.setSopmalCd(authSopmalCd); +// +// return "/mngr/bbs/rvw/RvwLgqyRegistListR"; +// } +// +// @Policy(AuthPolicy.RESTRICTED) +// @RequestMapping(value = "/insertRvwLgqyRegistBng", method = RequestMethod.POST) +// public String insertRvwLgqyRegistBng(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { +// vo.setSopmalCd(authSopmalCd); +// +// return "/"; +// } +// +// @Policy(AuthPolicy.RESTRICTED) +// @RequestMapping(value = "/deleteRvwLgqyRegistDel", method = RequestMethod.POST) +// public String deleteRvwLgqyRegistDel(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { +// vo.setSopmalCd(authSopmalCd); +// +// return "/0"; +// } +// +// @Policy(AuthPolicy.RESTRICTED) +// @RequestMapping(value = "/selectRvwLgqyRegistDtlUpdtPopupForm") +// public String selectRvwLgqyRegistDtlUpdtPopupForm(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { +// vo.setSopmalCd(authSopmalCd); +// +// return "/mngr/bbs/rvw/RvwLgqyRegistDtlUpdtPopupU"; +// } +// +// @Policy(AuthPolicy.RESTRICTED) +// @RequestMapping(value = "/updateRvwLgqyRegistUpdt", method = RequestMethod.POST) +// public String updateRvwLgqyRegistUpdt(RvwVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { +// vo.setSopmalCd(authSopmalCd); +// +// return "/"; +// } } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/goods/banner/controller/BannerController.java b/src/main/java/com/wb/domainserver/domain/mngr/goods/banner/controller/BannerController.java index 8d9773f2..b3e90968 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/goods/banner/controller/BannerController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/goods/banner/controller/BannerController.java @@ -1,21 +1,34 @@ package com.wb.domainserver.domain.mngr.goods.banner.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.vo.BOMaComncdVO; +import com.wb.domainserver.domain.admin.sys.ctgry.service.BOMaCtgryService; +import com.wb.domainserver.domain.gcone.goods.banner.service.BOBannerService; +import com.wb.domainserver.domain.gcone.goods.banner.vo.BOBannerVO; +import com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO; import com.wb.domainserver.domain.mngr.goods.banner.vo.BannerVO; 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.file.FileMngUtil; import com.wb.domainserver.util.file.service.FileStorageService; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; @@ -28,6 +41,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import java.util.HashMap; import java.util.List; +import java.util.Map; @Slf4j @Controller @@ -51,6 +65,13 @@ public class BannerController { @Autowired private WnbtWebClientResponseHandler responseHandler; + @Autowired + private BOBannerService service; + @Autowired + private BOMaCtgryService boMaCtgryService; + @Autowired + private PaginationProperties paginationProperties; + /** * 배너목록조회 * @param vo @@ -59,15 +80,51 @@ public class BannerController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBannerListR") - public String selectBannerListR(BannerVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - + public String selectBannerListR(BOBannerVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/selectBOBannerList", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + 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()); + + Map content = new HashMap<>(); + BOMaComncdVO cdVO = new BOMaComncdVO(); + + // 목록 조회 + List list = service.selectBOBannerList(vo); + content.put("list", list); + + // 노출위치구분 공통코드 조회 + cdVO.setGroupCd("EXPSRLC_DV"); + List expsrlcDvList = service.selectCommCode(cdVO); + content.put("expsrlcDvList", expsrlcDvList); + + // 노출구분 공통코드 조회 + cdVO.setGroupCd("EXPSR_DV"); + List expsrlcDvCdList = service.selectCommCode(cdVO); + content.put("expsrlcDvCdList", expsrlcDvCdList); + + content.put("BOBannerVO", vo); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/selectBOBannerList", vo), +// model, +// "resultMap" +// ); return "mngr/goods/banner/BannerListR"; } @@ -80,15 +137,52 @@ public class BannerController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBannerRegistForm") - public String selectBannerRegistForm(BannerVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + public String selectBannerRegistForm(BOBannerVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/selectBOBannerRegistForm", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + + Map content = new HashMap<>(); + BOMaComncdVO cdVO = new BOMaComncdVO(); + + // 노출위치구분 공통코드 조회 + cdVO.setGroupCd("EXPSRLC_DV"); + List expsrlcDvList = service.selectCommCode(cdVO); + content.put("expsrlcDvList", expsrlcDvList); + + // 노출구분 공통코드 조회 + cdVO.setGroupCd("EXPSR_DV"); + List expsrlcDvCdList = service.selectCommCode(cdVO); + content.put("expsrlcDvCdList", expsrlcDvCdList); + + // 적용대상 제한구분코드 + cdVO.setGroupCd("GOODS_APPLC_DV"); + List goodsCtgryLmttDvCdList = service.selectCommCode(cdVO); + content.put("goodsCtgryLmttDvCdList", goodsCtgryLmttDvCdList); + + content.put("BOBannerVO", vo); + content.put("paginationInfo", vo.getPaginationInfo()); + + BOGoodsVO goodsVOvo = new BOGoodsVO(); + goodsVOvo.setUpperCtgryId(vo.getUpperCtgryId()); + goodsVOvo.setSopmalCd(vo.getSopmalCd()); + goodsVOvo.setUpperCtgryId("2"); + List GoodsCategoryList = boMaCtgryService.selectGoodsCategoryList(goodsVOvo); + content.put("goodsCategoryList", GoodsCategoryList); // 카테고리 depth1 + + model.addAttribute("resultMap", content); + +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/selectBOBannerRegistForm", vo), +// model, +// "resultMap" +// ); return "mngr/goods/banner/BannerC"; } @@ -96,14 +190,14 @@ public class BannerController { /** * 배너 등록 * @param vo - * @param model * @param bindingResult * @param request + * @param authSopmalCd * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertBanner" , method = RequestMethod.POST) - public ResponseEntity insertBanner(@Validated BannerVO vo, BindingResult bindingResult, + @RequestMapping(value="/insertBanner" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertBanner(@Validated BOBannerVO vo, BindingResult bindingResult, HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd){ if(bindingResult.hasErrors()) { @@ -126,10 +220,25 @@ public class BannerController { log.error(e.getMessage(), e); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/insertBOBanner", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + + Map content = service.insertBOBanner(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/insertBOBanner", vo), +// ReplyFromResrc::getReply +// ); } @@ -142,16 +251,52 @@ public class BannerController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBannerDtlForm" , method = RequestMethod.POST) - public String selectBannerDtlForm(BannerVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + public String selectBannerDtlForm(BOBannerVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/selectBOBannerDtlForm", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + BOMaComncdVO cdVO = new BOMaComncdVO(); + Map content = new HashMap<>(); + + Map bannerInfo = service.selectBOBannerDtlForm(vo); + content.put("bannerInfo", bannerInfo); + + // 노출위치구분 공통코드 조회 + cdVO.setGroupCd("EXPSRLC_DV"); + List expsrlcDvList = service.selectCommCode(cdVO); + content.put("expsrlcDvList", expsrlcDvList); + + // 노출구분 공통코드 조회 + cdVO.setGroupCd("EXPSR_DV"); + List expsrlcDvCdList = service.selectCommCode(cdVO); + content.put("expsrlcDvCdList", expsrlcDvCdList); + + // 적용대상 제한구분코드 + cdVO.setGroupCd("GOODS_APPLC_DV"); + List goodsCtgryLmttDvCdList = service.selectCommCode(cdVO); + content.put("goodsCtgryLmttDvCdList", goodsCtgryLmttDvCdList); + + BOGoodsVO goodsVOvo = new BOGoodsVO(); + goodsVOvo.setUpperCtgryId(vo.getUpperCtgryId()); + goodsVOvo.setSopmalCd(vo.getSopmalCd()); + goodsVOvo.setUpperCtgryId("2"); + List GoodsCategoryList = boMaCtgryService.selectGoodsCategoryList(goodsVOvo); + content.put("goodsCategoryList", GoodsCategoryList); // 카테고리 depth1 + + content.put("BOBannerVO", vo); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap",content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/selectBOBannerDtlForm", vo), +// model, +// "resultMap" +// ); return "mngr/goods/banner/BannerDtlU"; } @@ -159,14 +304,14 @@ public class BannerController { /** * 배너 수정 * @param vo - * @param model * @param bindingResult * @param request + * @param authSopmalCd * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateBannerDtl") - public ResponseEntity updateBannerDtl(@Validated BannerVO vo, BindingResult bindingResult, HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/updateBannerDtl", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBannerDtl(@Validated BOBannerVO vo, BindingResult bindingResult, HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd){ if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } @@ -187,10 +332,25 @@ public class BannerController { log.error(e.getMessage(), e); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/updateBOBannerDtl", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + + Map content = new HashMap<>(); + content = service.updateBOBannerDtl(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/updateBOBannerDtl", vo), +// ReplyFromResrc::getReply +// ); } @@ -199,16 +359,28 @@ public class BannerController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/deleteBanner" , method = RequestMethod.POST) - public ResponseEntity deleteBanner(BannerVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + @RequestMapping(value="/deleteBanner" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteBanner(BOBannerVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/deleteBOBanner", vo), - ReplyFromResrc::getReply - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setRegusr(user.getUserInnb()); + Map content = service.deleteBOBanner(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/deleteBOBanner", vo), +// ReplyFromResrc::getReply +// ); } @@ -218,16 +390,25 @@ public class BannerController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectBannerOrdrPopup" , method = RequestMethod.POST) - public String selectBannerOrdrPopup(BannerVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + public String selectBannerOrdrPopup(BOBannerVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/selectBOBannerOrdrPopup", vo), - model, - "resultMap" - ); + Map content = new HashMap<>(); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + List result = service.selectBOBannerOrdrPopup(vo); + content.put("bannerOrdrList", result); + + model.addAttribute("resultMap",content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/selectBOBannerOrdrPopup", vo), +// model, +// "resultMap" +// ); return "mngr/goods/banner/BannerOrdrPopupR"; } @@ -237,18 +418,36 @@ public class BannerController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateBannerOrdr" , method = RequestMethod.POST) - public ResponseEntity updateBannerOrdr( @RequestBody List vo, + @RequestMapping(value="/updateBannerOrdr" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBannerOrdr( @RequestBody List vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - for(BannerVO bannerVO : vo){ + for(BOBannerVO bannerVO : vo){ bannerVO.setSopmalCd(authSopmalCd); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/updateBOBannerOrdr", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + for(BOBannerVO tmpVo :vo){ + if("01".equals(user.getSysDvCd())){ + tmpVo.setSopmalCd(user.getSopmalCd()); + } + tmpVo.setRegusr(user.getUserInnb()); + tmpVo.setUpdusr(user.getUserInnb()); + } + + Map content = service.updateBOBannerOrdr(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/banner/updateBOBannerOrdr", vo), +// ReplyFromResrc::getReply +// ); } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/goods/cmnuse/controller/CmnuseController.java b/src/main/java/com/wb/domainserver/domain/mngr/goods/cmnuse/controller/CmnuseController.java index 72e568bf..f6bd7c7f 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/goods/cmnuse/controller/CmnuseController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/goods/cmnuse/controller/CmnuseController.java @@ -1,16 +1,23 @@ package com.wb.domainserver.domain.mngr.goods.cmnuse.controller; import com.wb.domainserver.common.msg.GconeMessageSource; +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.mngr.goods.cmnuse.vo.CmnuseVO; 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 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; @@ -18,6 +25,8 @@ import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import java.util.List; + /** * Cmnuse Controller Class (front) * @@ -51,114 +60,179 @@ public class CmnuseController { @Autowired private WnbtWebClientResponseHandler responseHandler; + @Autowired + private BOCmnuseService service; /** * 공용 정보 목록 조회 - * @param CmnuseVO + * @param vo * @param model 모델객체 * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectCmnuseInfoList") - public String selectCmnuseInfoList(CmnuseVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + public String selectCmnuseInfoList(BOCmnuseVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/cmnuse/selectBOCmnuseInfoList", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + List infoList = service.selectBOCmnuseInfoList(vo); + + DataMap content = new DataMap(); + content.put("infoList", infoList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/cmnuse/selectBOCmnuseInfoList", vo), +// model, +// "resultMap" +// ); return "mngr/goods/cmnuse/CmnuseInfoListR"; } /** * 공용 정보 등록 - * @param CmnuseVO + * @param vo * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertCmnuseInfo" , method = RequestMethod.POST) - public ResponseEntity insertCmnuseInfo(CmnuseVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + @RequestMapping(value="/insertCmnuseInfo" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertCmnuseInfo(BOCmnuseVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/cmnuse/insertBOCmnuseInfo", vo), - ReplyFromResrc::getReply - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + DataMap message = new DataMap(); + + int result = service.insertBOCmnuseInfo(vo); + + message.put("message", result); + message.put("cmnuseInfoInnb", vo.getCmnuseInfoInnb()); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/cmnuse/insertBOCmnuseInfo", vo), +// ReplyFromResrc::getReply +// ); } /** * 공용 정보 등록 화면 조회 - * @param CmnuseVO - * @param model 모델객체 + * @param vo + * @param authSopmalCd * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectCmnuseInfoForm") public String selectCmnuseInfoForm(CmnuseVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - vo.setSopmalCd(authSopmalCd); return "mngr/goods/cmnuse/CmnuseInfoFormR"; } /** * 공용 정보 수정 - * @param CmnuseVO + * @param vo * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateCmnuseInfoDtl", method = RequestMethod.POST) - public ResponseEntity updateCmnuseInfoDtl(CmnuseVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + @RequestMapping(value="/updateCmnuseInfoDtl", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCmnuseInfoDtl(BOCmnuseVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/cmnuse/updateBOCmnuseInfoDtl", vo), - ReplyFromResrc::getReply - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + DataMap message = new DataMap(); + int result = service.updateBOCmnuseInfoDtl(vo); + message.put("message", result); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/cmnuse/updateBOCmnuseInfoDtl", vo), +// ReplyFromResrc::getReply +// ); } /** * 공용 정보 수정 화면 조회 - * @param CmnuseVO + * @param vo * @param model 모델객체 * @return String JSP 경로 */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectCmnuseInfoDtlForm") - public String selectCmnuseInfoDtlForm(CmnuseVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectCmnuseInfoDtlForm(BOCmnuseVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/cmnuse/selectBOCmnuseInfoDtlForm", vo), - model, - "resultMap" - ); + DataMap content = service.selectBOCmnuseInfoDtl(vo); + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/cmnuse/selectBOCmnuseInfoDtlForm", vo), +// model, +// "resultMap" +// ); return "mngr/goods/cmnuse/CmnuseInfoDtlFormR"; } /** * 공용 정보 삭제 - * @param CmnuseVO + * @param vo * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/deleteCmnuseInfo", method = RequestMethod.POST) - public ResponseEntity deleteCmnuseInfo(CmnuseVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + @RequestMapping(value="/deleteCmnuseInfo", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteCmnuseInfo(BOCmnuseVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/cmnuse/deleteBOCmnuseInfo", vo), - ReplyFromResrc::getReply - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + DataMap message = new DataMap(); + String result = service.deleteBOCmnuseInfo(vo)==1? "success":"fail"; + message.put("message", result); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/cmnuse/deleteBOCmnuseInfo", vo), +// ReplyFromResrc::getReply +// ); } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/goods/goodsinfo/controller/GoodsInfoController.java b/src/main/java/com/wb/domainserver/domain/mngr/goods/goodsinfo/controller/GoodsInfoController.java index 287ae6e9..084dc2b3 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/goods/goodsinfo/controller/GoodsInfoController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/goods/goodsinfo/controller/GoodsInfoController.java @@ -1,18 +1,27 @@ package com.wb.domainserver.domain.mngr.goods.goodsinfo.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.gcone.goods.goodsinfo.service.BOGoodsinfoService; +import com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO; import com.wb.domainserver.domain.mngr.goods.goodsinfo.vo.GoodsInfoVO; 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; @@ -22,6 +31,9 @@ import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import java.util.ArrayList; +import java.util.List; + /** * GoodsInfoController Controller Class (front) * @@ -57,29 +69,58 @@ public class GoodsInfoController { @Autowired private WnbtWebClientResponseHandler responseHandler; + @Autowired + private BOGoodsinfoService service; + @Autowired + private PaginationProperties paginationProperties; + /** * 상품 정보 목록 조회 - * @param GoodsInfoVO + * @param vo * @return GoodsInfoListR.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectGoodsInfoList") - public String selectBbsListInqire(GoodsInfoVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + public String selectBbsListInqire(BOGoodsInfoVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goodsinfo/selectBOGoodsInfoList", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + DataMap content = new DataMap(); + + 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 infoList = new ArrayList<>(); + infoList = service.selectBOGoodsInfoList(vo); + content.put("boGoodsInfo", vo); + content.put("infoList", infoList); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goodsinfo/selectBOGoodsInfoList", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsinfo/GoodsInfoListR"; } /** * 상품 정보 등록화면 - * @param GoodsInfoVO + * @param vo * @return GoodsInfoFormR.jsp */ @Policy(AuthPolicy.RESTRICTED) @@ -95,86 +136,133 @@ public class GoodsInfoController { /** * 상품 정보 등록 - * @param GoodsInfoVO + * @param vo * @param bindingResult 바인딩 및 정합성 점검결과 객체 * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertGoodsInfo", method = RequestMethod.POST) - public ResponseEntity insertGoodsInfo(@Validated GoodsInfoVO vo, BindingResult bindingResult, + @RequestMapping(value="/insertGoodsInfo", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertGoodsInfo(@Validated BOGoodsInfoVO vo, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - - vo.setSopmalCd(authSopmalCd); if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goodsinfo/insertBOGoodsInfo", vo), - ReplyFromResrc::getReply - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setRegusr(user.getUserInnb()); + DataMap message = new DataMap(); + message = service.insertBOGoodsInfo(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goodsinfo/insertBOGoodsInfo", vo), +// ReplyFromResrc::getReply +// ); } /** * 상품 정보 수정화면 - * @param GoodsInfoVO + * @param vo * @param model 모델객체 * @return GoodsInfoDtlFormR.jsp */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectGoodsInfoDtlForm") - public String selectGoodsInfoDtlForm(GoodsInfoVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - + public String selectGoodsInfoDtlForm(BOGoodsInfoVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goodsinfo/selectBOGoodsInfoDtlForm", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + DataMap content = service.selectBOGoodsInfoDtl(vo); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goodsinfo/selectBOGoodsInfoDtlForm", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsinfo/GoodsInfoDtlFormR"; } /** * 상품 정보 수정 - * @param GoodsInfoVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updateGoodsInfoDtl") - public ResponseEntity updateGoodsInfoDtl(@Validated GoodsInfoVO vo, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + @RequestMapping(value="/updateGoodsInfoDtl", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGoodsInfoDtl(@Validated BOGoodsInfoVO vo, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); if(bindingResult.hasErrors()) { throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource)); } + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goodsinfo/updateBOGoodsInfoDtl", vo), - ReplyFromResrc::getReply + DataMap message = new DataMap(); + message = service.updateBOGoodsInfoDtl(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); - +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goodsinfo/updateBOGoodsInfoDtl", vo), +// ReplyFromResrc::getReply +// ); } /** * 상품 정보 삭제 - * @param GoodsInfoVO + * @param vo * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/deleteGoodsInfo") - public ResponseEntity deleteGoodsInfo(GoodsInfoVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ - + @RequestMapping(value="/deleteGoodsInfo", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteGoodsInfo(BOGoodsInfoVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goodsinfo/updateBOGoodsInfoDel", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + + DataMap message = new DataMap(); + String result = service.updateBOGoodsInfoDel(vo); + message.put("message", result); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goodsinfo/updateBOGoodsInfoDel", vo), +// ReplyFromResrc::getReply +// ); } } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/goods/goodsmngr/controller/GoodsmngrController.java b/src/main/java/com/wb/domainserver/domain/mngr/goods/goodsmngr/controller/GoodsmngrController.java index 9e0d124a..bea03a66 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/goods/goodsmngr/controller/GoodsmngrController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/goods/goodsmngr/controller/GoodsmngrController.java @@ -1,19 +1,40 @@ package com.wb.domainserver.domain.mngr.goods.goodsmngr.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.admin.sys.ctgry.service.BOMaCtgryService; +import com.wb.domainserver.domain.gcone.bbs.gnrlbbsctt.service.BOGnrlbbscttService; +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.mbr.mbr.service.BOMbrService; +import com.wb.domainserver.domain.gcone.promtn.purchs.service.BOPurchsEvtService; +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.mngr.goods.goodsmngr.vo.GoodsmngrVO; 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.file.service.FileStorageService; 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; @@ -25,6 +46,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; /** * GoodsmngrController Controller Class (front) @@ -65,6 +87,27 @@ public class GoodsmngrController { @Autowired private WnbtWebClientResponseHandler responseHandler; + @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; + /** * 상품 목록 조회 폼 * @param vo @@ -73,18 +116,92 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectGoodsListForm") - public String selectGoodsListForm(GoodsmngrVO vo, + public String selectGoodsListForm(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setUpperCtgryId("1"); vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsListForm", vo), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + 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 "mngr/goods/goodsmngr/GoodsListRForm"; } @@ -96,17 +213,43 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectGoodsList") - public String selectGoodsList(GoodsmngrVO vo, + public String selectGoodsList(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsList", vo), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + // 페이징 객체 생성 & 페이징정보 할당 + 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.selectBOGoodsList(vo); + + Map content = new HashMap<>(); + + content.put("BOGoodsVO", vo); + content.put("list", list); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap", content); + +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsList", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsmngr/GoodsListR"; } @@ -119,18 +262,90 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectCtgryGoodsListForm") - public String selectCtgryGoodsListForm(GoodsmngrVO vo, + public String selectCtgryGoodsListForm(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setUpperCtgryId("1"); - vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsListForm", vo), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + 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 "mngr/goods/goodsmngr/CtgryGoodsListRForm"; } @@ -142,36 +357,77 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectCtgryGoodsList") - public String selectCtgryGoodsList(GoodsmngrVO vo, + public String selectCtgryGoodsList(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOCtgryGoodsList", vo), - model, - "resultMap" - ); + // 페이징 객체 생성 & 페이징정보 할당 + 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()); + + // 목록 조회 + vo.setCtgryGoodsListForm("Y"); + List list = service.selectBOGoodsList(vo); + + + Map content = new HashMap<>(); + + content.put("BOGoodsVO", vo); + content.put("list", list); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOCtgryGoodsList", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsmngr/CtgryGoodsListR"; } /** * 카테고리별 상품 목록 순서 수정 * @param vo - * @param model + * @param authSopmalCd * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateCtgryGoodsList") - public ResponseEntity updateCtgryGoodsList(@RequestBody GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateCtgryGoodsList", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateCtgryGoodsList(@RequestBody BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOCtgryGoodsList", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + + Map message = new HashMap<>(); + message = service.updateBOCtgryGoodsList(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOCtgryGoodsList", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -182,19 +438,90 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectGoodsRegistForm") - public String selectGoodsRegistForm(GoodsmngrVO vo, + public String selectGoodsRegistForm(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - vo.setUpperCtgryId("1"); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsListForm", vo), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + 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 "mngr/goods/goodsmngr/GoodsC"; } @@ -205,10 +532,8 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/insertGoodsInfo", method = RequestMethod.POST) - public ResponseEntity insertGoodsInfo(GoodsmngrVO vo, HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - - + @RequestMapping(value = "/insertGoodsInfo", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertGoodsInfo(BOGoodsVO vo, HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); //파일 업로드 관련 START @@ -221,16 +546,38 @@ public class GoodsmngrController { ulpladFileMap = filestore.fileUpload(request); vo.setFileInfo(ulpladFileMap); } catch (WnbtRestException wre){ + log.error(wre.getMessage(),wre); throw new WnbtRestException("파일 업로드에 실패했습니다."+ wre.getMessage()); } catch (Exception e) { log.error(e.getMessage(), e); + throw new WnbtRestException("파일 업로드에 실패했습니다."+ e.getMessage()); } //파일 업로드 관련 END - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/insertBOGoods", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + vo.setRegusr(user.getUserInnb()); + vo.setGoodsKndCd("01"); //상품 + + //상품 등록 로직 + Map message = new HashMap<>(); + + message = service.insertBOGoods(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/insertBOGoods", vo), +// ReplyFromResrc::getReply +// ); } @@ -240,15 +587,30 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/deleteGoods", method = RequestMethod.POST) - public ResponseEntity deleteGoods(GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - + @RequestMapping(value = "/deleteGoods", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deleteGoods(BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/deleteBOGoods", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setUpdusr(user.getUserInnb()); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + //상품 삭제 로직 + Map message = new HashMap<>(); + message = service.deleteBOGoods(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/deleteBOGoods", vo), +// ReplyFromResrc::getReply +// ); } @@ -260,17 +622,124 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectGoodsDtlForm") - public String selectGoodsDtlForm( GoodsmngrVO vo, + public String selectGoodsDtlForm(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsDtl", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + Map content = new HashMap<>(); + + List SopmalCdNmList = boMaSopmalService.selectBOSopmalCdNm(); + content.put("SopmalCdNmList", SopmalCdNmList); //검색조건 > 쇼핑몰 + + vo.setUpperCtgryId("2"); + + List GoodsCategoryList = boMaCtgryService.selectGoodsCategoryList(vo); + + content.put("goodsCategoryList", GoodsCategoryList); // 카테고리 depth1 + + 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); + + //브랜드 목록조회 + + 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); + + + List imgList = null; + vo.setCutNb(""); + imgList = service.selectBOGoodsImg(vo); + + 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); // 배송그룹 + + Map relatedGoods = service.selectBOGoodsRelate(vo); + content.put("relatedGoods", relatedGoods); // 관련상품(추천상품) + + content.put("iconList", iconList); // 상품 아이콘 + content.put("imgList", imgList); // 상품 이미지 + + content.put("BOGoodsVO", vo); + + //공용정보목록조회 + BOCmnuseVO cmnuseVo = new BOCmnuseVO(); + cmnuseVo.setSopmalCd(vo.getSopmalCd()); + List infoList = bOCmnuseService.selectBOCmnuseInfoList(cmnuseVo); + content.put("infoList", infoList); + + // 상세조회 + DataMap goodsDtl = new DataMap(); + goodsDtl = service.selectBOGoodsDtl(vo); + content.put("goodsDtl", goodsDtl); + + //상품 옵션 조회 + DataMap goodsOptionList = new DataMap(); + goodsOptionList = service.selectBOAdminGoodsOptionList(vo); + content.put("goodsOptionList", goodsOptionList); + + //선택한 카테고리 조회 + List goodsCtgryLinkList = new ArrayList<>(); + goodsCtgryLinkList = service.selectBOGoodsCategoryLink(vo); + content.put("goodsCtgryList", goodsCtgryLinkList); + + //상품 추가정보 조회 + List goodsAdditionList = new ArrayList<>(); + goodsAdditionList = service.selectBOGoodsAdditionList(vo); + content.put("goodsAdditionList", goodsAdditionList); + + + //수정 로그 조회 + List goodsLogList = service.selectBOGoodsLog(vo); + content.put("goodsLogList", goodsLogList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsDtl", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsmngr/GoodsDtlU"; } @@ -280,8 +749,8 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateGoodsDtlCtgryLink", method = RequestMethod.POST) - public ResponseEntity updateGoodsDtlCtgryLink(HttpServletRequest request, GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateGoodsDtlCtgryLink", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGoodsDtlCtgryLink(HttpServletRequest request, BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); @@ -289,10 +758,28 @@ public class GoodsmngrController { vo.setIp(request.getAttribute("LoggingClientIp").toString()); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlCtgryLink", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + + Map message = new HashMap<>(); + message = service.updateBOGoodsDtlCtgryLink(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlCtgryLink", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -301,22 +788,36 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateGoodsDtlBscInfo", method = RequestMethod.POST) - public ResponseEntity updateGoodsDtlBscInfo(HttpServletRequest request, GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - + @RequestMapping(value = "/updateGoodsDtlBscInfo", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGoodsDtlBscInfo(HttpServletRequest request, BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); if(request.getAttribute("LoggingClientIp") != null) { vo.setIp(request.getAttribute("LoggingClientIp").toString()); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlBscInfo", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + + Map message = new HashMap<>(); + message = service.updateBOGoodsDtlBscInfo(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); - - - +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlBscInfo", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -325,8 +826,8 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateGoodsDtlSelInfo", method = RequestMethod.POST) - public ResponseEntity updateGoodsDtlSelInfo(HttpServletRequest request, GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateGoodsDtlSelInfo", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGoodsDtlSelInfo(HttpServletRequest request, BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); @@ -334,11 +835,29 @@ public class GoodsmngrController { vo.setIp(request.getAttribute("LoggingClientIp").toString()); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlSelInfo", vo), - ReplyFromResrc::getReply - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + Map message = new HashMap<>(); + + message = service.updateBOGoodsDtlSelInfo(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlSelInfo", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -347,8 +866,8 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateGoodsDtlInvntryPolicyInfo", method = RequestMethod.POST) - public ResponseEntity updateGoodsDtlInvntryPolicyInfo(HttpServletRequest request, GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateGoodsDtlInvntryPolicyInfo", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGoodsDtlInvntryPolicyInfo(HttpServletRequest request, BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); @@ -356,10 +875,29 @@ public class GoodsmngrController { vo.setIp(request.getAttribute("LoggingClientIp").toString()); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlInvntryPolicyInfo", vo), - ReplyFromResrc::getReply - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + + Map message = new HashMap<>(); + + message = service.updateBOGoodsDtlInvntryPolicyInfo(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlInvntryPolicyInfo", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -368,8 +906,8 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateGoodsDtlTrgterLmtt", method = RequestMethod.POST) - public ResponseEntity updateGoodsDtlTrgterLmtt(HttpServletRequest request, GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateGoodsDtlTrgterLmtt", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGoodsDtlTrgterLmtt(HttpServletRequest request, BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); @@ -377,10 +915,28 @@ public class GoodsmngrController { vo.setIp(request.getAttribute("LoggingClientIp").toString()); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlTrgterLmtt", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + + Map message = new HashMap<>(); + message = service.updateBOGoodsDtlTrgterLmtt(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlTrgterLmtt", vo), +// ReplyFromResrc::getReply +// ); } @@ -390,18 +946,35 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateGoodsDtlOptnInfo", method = RequestMethod.POST) - public ResponseEntity updateGoodsDtlOptnInfo(HttpServletRequest request, GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - + @RequestMapping(value = "/updateGoodsDtlOptnInfo", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGoodsDtlOptnInfo(HttpServletRequest request, BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); if(request.getAttribute("LoggingClientIp") != null) { vo.setIp(request.getAttribute("LoggingClientIp").toString()); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlOptnInfo", vo), - ReplyFromResrc::getReply + + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + Map message = new HashMap<>(); + message = service.updateBOGoodsDtlOptnInfo(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlOptnInfo", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -411,9 +984,8 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateGoodsDtlImg", method = RequestMethod.POST) - public ResponseEntity updateGoodsDtlImg(GoodsmngrVO vo, HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - + @RequestMapping(value = "/updateGoodsDtlImg", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGoodsDtlImg(BOGoodsVO vo, HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); //파일 업로드 관련 START @@ -430,17 +1002,36 @@ public class GoodsmngrController { ulpladFileMap = filestore.fileUpload(request); vo.setFileInfo(ulpladFileMap); } catch (WnbtRestException wre){ + log.error(wre.getMessage(), wre); throw new WnbtRestException("파일 업로드에 실패했습니다."+ wre.getMessage()); } catch (Exception e) { log.error(e.getMessage(), e); + throw new WnbtRestException("파일 업로드에 실패했습니다."+ e.getMessage()); } - //파일 업로드 관련 END - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlImg", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + vo.setMbrDvCd(user.getMbrDvCd()); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + Map message = new HashMap<>(); + + message = service.updateBOGoodsDtlImg(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlImg", vo), +// ReplyFromResrc::getReply +// ); } @@ -450,21 +1041,36 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateGoodsDtlEtcInfo", method = RequestMethod.POST) - public ResponseEntity updateGoodsDtlEtcInfo(HttpServletRequest request, GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateGoodsDtlEtcInfo", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGoodsDtlEtcInfo(HttpServletRequest request, BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); if(request.getAttribute("LoggingClientIp") != null) { vo.setIp(request.getAttribute("LoggingClientIp").toString()); } + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlEtcInfo", vo), - ReplyFromResrc::getReply + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + Map message = new HashMap<>(); + + message = service.updateBOGoodsDtlEtcInfo(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); - - +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlEtcInfo", vo), +// ReplyFromResrc::getReply +// ); } @@ -474,21 +1080,35 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateGoodsDtlRelateGoods", method = RequestMethod.POST) - public ResponseEntity updateGoodsDtlRelateGoods(HttpServletRequest request, GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - + @RequestMapping(value = "/updateGoodsDtlRelateGoods", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateGoodsDtlRelateGoods(HttpServletRequest request, BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); - if(request.getAttribute("LoggingClientIp") != null) { vo.setIp(request.getAttribute("LoggingClientIp").toString()); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlRelateGoods", vo), - ReplyFromResrc::getReply + + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setRegusr(user.getUserInnb()); + vo.setUpdusr(user.getUserInnb()); + + Map message = new HashMap<>(); + message = service.updateBOGoodsDtlRelateGoods(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); - - +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOGoodsDtlRelateGoods", vo), +// ReplyFromResrc::getReply +// ); } /** @@ -499,17 +1119,40 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping("/selectGoodsPurchaseLimttPopupC") - public String selectGoodsPurchaseLimttPopupC(GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd, + public String selectGoodsPurchaseLimttPopupC(BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd, ModelMap model) { - vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectGoodsPurchaseLimttPopupForm", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + Map content = new HashMap<>(); + + // 대체링크연결창구분코드 + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("RPLC_LINK_BRWSR_DV"); + List PrlcLinkBrwsrDvList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("PrlcLinkBrwsrDvList", PrlcLinkBrwsrDvList); + + // 대체링크구분코드 + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("RPLC_LINK_DV"); + List PrlcLinkDvList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("PrlcLinkDvList", PrlcLinkDvList); + + List gradList = service.selectMemGrad(vo); // 회원 등급 + content.put("gradList", gradList); + content.put("BOGoodsVO", vo); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectGoodsPurchaseLimttPopupForm", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsmngr/GoodsPurchaseLimttPopupC"; } @@ -521,17 +1164,46 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping("/selectGoodsPurchaseLimttPopupR") - public String selectGoodsPurchaseLimttPopupR(GoodsmngrVO vo, + public String selectGoodsPurchaseLimttPopupR(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectGoodsPurchaseLimttPopupFormR", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + Map content = new HashMap<>(); + + // 대체링크연결창구분코드 + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("RPLC_LINK_BRWSR_DV"); + List PrlcLinkBrwsrDvList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("PrlcLinkBrwsrDvList", PrlcLinkBrwsrDvList); + + // 대체링크구분코드 + maComncdVO = new BOMaComncdVO(); + maComncdVO.setGroupCd("RPLC_LINK_DV"); + List PrlcLinkDvList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO); + content.put("PrlcLinkDvList", PrlcLinkDvList); + + List gradList = service.selectMemGrad(vo); // 회원 등급 + content.put("gradList", gradList); + + //구매대상자 제한 조회 + DataMap trgterLmttList = new DataMap(); + trgterLmttList = service.selectBOGoodsTrgterLmtt(vo); + content.put("trgterLmttList", trgterLmttList); + + content.put("BOGoodsVO", vo); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectGoodsPurchaseLimttPopupFormR", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsmngr/GoodsPurchaseLimttPopupR"; } @@ -543,16 +1215,89 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectGoodsSrchPopupForm") - public String selectGoodsSrchPopupForm(GoodsmngrVO vo, + public String selectGoodsSrchPopupForm(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsListForm", vo), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + 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" +// ); model.addAttribute("paramVO", vo); return "mngr/goods/goodsmngr/GoodsSrchPopupForm"; @@ -566,17 +1311,44 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectGoodsSrchPopupList") - public String selectGoodsSrchPopupList(GoodsmngrVO vo, + public String selectGoodsSrchPopupList(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsList", vo), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + // 페이징 객체 생성 & 페이징정보 할당 + 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.selectBOGoodsList(vo); + + + Map content = new HashMap<>(); + + content.put("BOGoodsVO", vo); + content.put("list", list); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsList", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsmngr/GoodsSrchPopupListR"; } @@ -588,17 +1360,27 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectGoodsInvntryPopup") - public String selectGoodsInvntryPopup(GoodsmngrVO vo, + public String selectGoodsInvntryPopup(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectGoodsInvntry", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + Map content = new HashMap<>(); + + List list = service.selectGoodsInvntry(vo); + content.put("list", list); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectGoodsInvntry", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsmngr/GoodsInvntryPopup"; } @@ -609,15 +1391,27 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/selectGoodsLogDtl", method = RequestMethod.POST) - public ResponseEntity selectGoodsLogDtl(@RequestBody GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - + @RequestMapping(value = "/selectGoodsLogDtl", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity selectGoodsLogDtl(@RequestBody BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsLogDtl", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + Map content = service.selectBOGoodsLogDtl(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsLogDtl", vo), +// ReplyFromResrc::getReply +// ); } @@ -630,17 +1424,119 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectGoodsCopyForm") - public String selectGoodsCopyForm(GoodsmngrVO vo, + public String selectGoodsCopyForm(BOGoodsVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsCopyForm", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + Map content = new HashMap<>(); + + List SopmalCdNmList = boMaSopmalService.selectBOSopmalCdNm(); + content.put("SopmalCdNmList", SopmalCdNmList); //검색조건 > 쇼핑몰 + + vo.setUpperCtgryId("2"); + + List GoodsCategoryList = boMaCtgryService.selectGoodsCategoryList(vo); + + content.put("goodsCategoryList", GoodsCategoryList); // 카테고리 depth1 + + 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); + + //브랜드 목록조회 + + 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); + + + List imgList = null; + vo.setCutNb("");//컷넘버 초기화 + imgList = service.selectBOGoodsImg(vo); + + 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); // 배송그룹 + + Map relatedGoods = service.selectBOGoodsRelate(vo); + content.put("relatedGoods", relatedGoods); // 관련상품(추천상품) + + content.put("iconList", iconList); // 상품 아이콘 + content.put("imgList", imgList); // 상품 이미지 + + content.put("BOGoodsVO", vo); + + //공용정보목록조회 + BOCmnuseVO cmnuseVo = new BOCmnuseVO(); + cmnuseVo.setSopmalCd(vo.getSopmalCd()); + List infoList = bOCmnuseService.selectBOCmnuseInfoList(cmnuseVo); + content.put("infoList", infoList); + + // 상세조회 + DataMap goodsDtl = new DataMap(); + goodsDtl = service.selectBOGoodsDtl(vo); + content.put("goodsDtl", goodsDtl); + + //상품 옵션 조회 + DataMap goodsOptionList = new DataMap(); + goodsOptionList = service.selectBOAdminGoodsOptionList(vo); + content.put("goodsOptionList", goodsOptionList); + + //선택한 카테고리 조회 + List goodsCtgryLinkList = new ArrayList<>(); + goodsCtgryLinkList = service.selectBOGoodsCategoryLink(vo); + content.put("goodsCtgryList", goodsCtgryLinkList); + + //상품 추가정보 조회 + List goodsAdditionList = new ArrayList<>(); + goodsAdditionList = service.selectBOGoodsAdditionList(vo); + content.put("goodsAdditionList", goodsAdditionList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsCopyForm", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsmngr/GoodsCopyC"; } @@ -652,17 +1548,56 @@ public class GoodsmngrController { */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value = "/selectBndeUpdtForm") - public String selectBndeUpdtForm(GoodsmngrVO vo, - ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { - + public String selectBndeUpdtForm(BOGoodsVO vo, + ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOBndeUpdtForm", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + Map content = new HashMap<>(); + + + 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); // 판매상태 + + //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/selectBOBndeUpdtForm", vo), +// model, +// "resultMap" +// ); return "mngr/goods/goodsmngr/BndeUpdtU"; } @@ -672,15 +1607,32 @@ public class GoodsmngrController { * @return */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value = "/updateBndeUpdt", method = RequestMethod.POST) - public ResponseEntity updateBndeUpdt(GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { + @RequestMapping(value = "/updateBndeUpdt", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updateBndeUpdt(BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd) { vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOBndeUpdt", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setRegusr(user.getUserInnb()); + + Map content = new HashMap<>(); + + content = service.updateBOBndeUpdt(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(content)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOBndeUpdt", vo), +// ReplyFromResrc::getReply +// ); } } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/goods/prsnt/controller/PrsntController.java b/src/main/java/com/wb/domainserver/domain/mngr/goods/prsnt/controller/PrsntController.java index 0593dc60..a40d1a65 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/goods/prsnt/controller/PrsntController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/goods/prsnt/controller/PrsntController.java @@ -1,20 +1,37 @@ package com.wb.domainserver.domain.mngr.goods.prsnt.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.admin.sys.ctgry.service.BOMaCtgryService; +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.setup.dlvygrp.service.BODlvygrpService; +import com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO; import com.wb.domainserver.domain.mngr.goods.goodsmngr.vo.GoodsmngrVO; 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.file.service.FileStorageService; 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; @@ -27,6 +44,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; @Controller @RequestMapping("/mngr/goods/prsnt") @@ -48,75 +66,223 @@ public class PrsntController { @Autowired private WnbtWebClientResponseHandler responseHandler; + @Autowired + private BOGoodsService service; + @Autowired + private BOMaCtgryService boMaCtgryService; + @Autowired + private BOMaSopmalService boMaSopmalService; + @Autowired + private BOMaComncdService bOMaComncdService; + @Autowired + private PaginationProperties paginationProperties; + @Autowired + private BOCmnuseService bOCmnuseService; + @Autowired + private BODlvygrpService boDlvygrpService; + + /** * 사은품 목록 조회 폼 - * @param prsntSrchVO + * @param vo * @return String */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectPrsntListForm") - public String selectPrsntListForm(ModelMap model, GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectPrsntListForm(ModelMap model, BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOPrsntListForm", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + vo.setUpperCtgryId("0"); + vo.setGoodsKndCd("02"); //사은품 + + Map content = new HashMap<>(); + List SopmalCdNmList = boMaSopmalService.selectBOSopmalCdNm(); + content.put("SopmalCdNmList", SopmalCdNmList); //검색조건 > 쇼핑몰 + + List GoodsCategoryList = boMaCtgryService.selectGoodsCategoryList(vo); + content.put("goodsCategoryList", GoodsCategoryList); // 카테고리 depth1 + BOMaComncdVO maComncdVO = new BOMaComncdVO(); + + 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); // 재고에 따른 판매 + content.put("BOGoodsVO", vo); + + //사은품 이벤트명 조회 + List goodsEvtNmList = service.selectBOGoodsEvtNm(vo); + content.put("goodsEvtNmList", goodsEvtNmList); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOPrsntListForm", vo), +// model, +// "resultMap" +// ); return "mngr/goods/prsnt/PrsntListRForm"; } /** * 사은품 목록 조회 - * @param prsntSrchVO + * @param vo * @return String */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectPrsntList") - public String selectPrsntList(ModelMap model,GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectPrsntList(ModelMap model,BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOPrsntList", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + // 페이징 객체 생성 & 페이징정보 할당 + 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()); + + vo.setGoodsKndCd("02"); //사은품 + + // 목록 조회 + List list = service.selectPrsntList(vo); + + Map content = new HashMap<>(); + content.put("BOGoodsVO", vo); + content.put("list", list); + content.put("paginationInfo", vo.getPaginationInfo()); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOPrsntList", vo), +// model, +// "resultMap" +// ); return "mngr/goods/prsnt/PrsntListR"; } /** * 사은품 등록 폼 - * @param prsntSrchVO + * @param vo * @return String */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/insertPrsntForm") - public String insertPrsntForm(ModelMap model,GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String insertPrsntForm(ModelMap model,BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsListForm", vo), - model, - "resultMap" - ); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + + 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 "mngr/goods/prsnt/PrsntC"; } /** * 사은품 등록 - * @param prsntVO + * @param vo * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/insertPrsnt" , method = RequestMethod.POST) - public ResponseEntity insertPrsnt(@Validated GoodsmngrVO vo, BindingResult bindingResult , HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/insertPrsnt" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertPrsnt(@Validated BOGoodsVO vo, BindingResult bindingResult , HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); @@ -132,47 +298,112 @@ public class PrsntController { ulpladFileMap = filestore.fileUpload(request); vo.setFileInfo(ulpladFileMap); } catch (WnbtRestException wre){ + log.error(wre.getMessage(), wre); throw new WnbtRestException("파일 업로드에 실패했습니다."+ wre.getMessage()); } catch (Exception e) { log.error(e.getMessage(), e); + throw new WnbtRestException("파일 업로드에 실패했습니다."+ e.getMessage()); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/insertBOPrsnt", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + vo.setRegusr(user.getUserInnb()); + vo.setGoodsKndCd("02"); //사은품 + vo.setOptnTy("01"); // 옵션코드 - 필수옵션(일반) + vo.setOptnExpsrAt("Y"); // 옵션노출여부 + vo.setStdrDvAt("Y"); // 기분구분여부 + vo.setUseAt("Y"); // 사용여부 + vo.setExpsrDvCd("01"); // 노출구분 01(노출) + + //상품 등록 로직 + Map message = new HashMap<>(); + message = service.insertBOPrsnt(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/insertBOPrsnt", vo), +// ReplyFromResrc::getReply +// ); } /** * 사은품 상세조회 - * @param prsntVO + * @param vo * @return String */ @Policy(AuthPolicy.RESTRICTED) @RequestMapping(value="/selectPrsntDtlForm") - public String selectPrsntDtlForm(ModelMap model,GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + public String selectPrsntDtlForm(ModelMap model,BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOPrsntDtl", vo), - model, - "resultMap" - ); + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + // 상세조회 + DataMap list = new DataMap(); + list = service.selectBOPrsntDtl(vo); + + List imglist = null; + vo.setCutNb(""); + imglist = service.selectBOGoodsImg(vo); + Map content = new HashMap<>(); + + 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); // 재고에 따른 판매 + + content.put("BOGoodsVO", vo); + content.put("list", list); + content.put("imglist", imglist); + + model.addAttribute("resultMap", content); +// responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOPrsntDtl", vo), +// model, +// "resultMap" +// ); return "mngr/goods/prsnt/PrsntDtlU"; } /** * 사은품 수정 - * @param prsntVO + * @param vo * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/updatePrsntDtl" , method = RequestMethod.POST) - public ResponseEntity updatePrsntDtl(@Validated GoodsmngrVO vo, BindingResult bindingResult , HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/updatePrsntDtl" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity updatePrsntDtl(@Validated BOGoodsVO vo, BindingResult bindingResult , HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); @@ -188,36 +419,72 @@ public class PrsntController { ulpladFileMap = filestore.fileUpload(request); vo.setFileInfo(ulpladFileMap); } catch (WnbtRestException wre){ + log.error(wre.getMessage(), wre); throw new WnbtRestException("파일 업로드에 실패했습니다."+ wre.getMessage()); } catch (Exception e) { log.error(e.getMessage(), e); + throw new WnbtRestException("파일 업로드에 실패했습니다."+ e.getMessage()); } - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOPrsnt", vo), - ReplyFromResrc::getReply + + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + vo.setUpdusr(user.getUserInnb()); + vo.setGoodsKndCd("02"); //사은품 + vo.setOptnTy("01"); // 옵션코드 - 필수옵션(일반) + vo.setOptnExpsrAt("Y"); // 옵션노출여부 + vo.setStdrDvAt("Y"); // 기분구분여부 + vo.setUseAt("Y"); // 사용여부 + vo.setExpsrDvCd("01"); // 노출구분 01(노출) + + //사은품 수정 로직 + Map message = new HashMap<>(); + message = service.updateBOPrsnt(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/updateBOPrsnt", vo), +// ReplyFromResrc::getReply +// ); } /** * 사은품 삭제 - * @param prsntVO + * @param vo * @return ResponseEntity */ @Policy(AuthPolicy.RESTRICTED) - @RequestMapping(value="/deletePrsnt" , method = RequestMethod.POST) - public ResponseEntity deletePrsnt(GoodsmngrVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ + @RequestMapping(value="/deletePrsnt" , method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity deletePrsnt(BOGoodsVO vo, @CookieValue(value = "authSopmalCd") String authSopmalCd){ vo.setSopmalCd(authSopmalCd); - return responseHandler.handleResponse( - sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/deleteBOGoods", vo), - ReplyFromResrc::getReply + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + vo.setUpdusr(user.getUserInnb()); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + } + + //상품 삭제 로직 + Map message = new HashMap<>(); + message = service.deleteBOGoods(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() ); - - +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/deleteBOGoods", vo), +// ReplyFromResrc::getReply +// ); } - - - } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/login/MngrLoginController.java b/src/main/java/com/wb/domainserver/domain/mngr/login/MngrLoginController.java index 8c53f3b6..2ad93b26 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/login/MngrLoginController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/login/MngrLoginController.java @@ -37,6 +37,7 @@ import org.springframework.web.util.UriUtils; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.HashMap; +import java.util.List; import java.util.Map; @Slf4j @@ -124,6 +125,7 @@ public class MngrLoginController { loginUser = service.mngrLogin(loginRequest); + log.debug("loginUser :: {}", loginUser); service.createLoginToken(loginUser, request, response); @@ -155,14 +157,15 @@ public class MngrLoginController { //쇼핑몰 테마 등 정보 조회 Shop shopInfo = bomaSopmalService.selectSopmalInfo(sopmalCd); + List siteList = bomaSopmalService.selectSopmalList(); model.addAttribute("redirectUri", redirectUri); model.addAttribute("accessUrl", accessUrl); model.addAttribute("sopmalCd", sopmalCd); model.addAttribute("realm", RealmContextHolder.getRealm().toLowerCase()); model.addAttribute("shopInfo", shopInfo); + model.addAttribute("siteList", siteList); - //디바이스 타입에 따라 조절 return "login/login-MNGR"; } diff --git a/src/main/java/com/wb/domainserver/domain/mngr/main/controller/MngrMainController.java b/src/main/java/com/wb/domainserver/domain/mngr/main/controller/MngrMainController.java index f3520afd..c860d4df 100644 --- a/src/main/java/com/wb/domainserver/domain/mngr/main/controller/MngrMainController.java +++ b/src/main/java/com/wb/domainserver/domain/mngr/main/controller/MngrMainController.java @@ -65,13 +65,10 @@ public class MngrMainController { */ @Policy(AuthPolicy.PUBLIC) @RequestMapping(value = "/main") - public String selectMngrMainInqire(ModelMap model, HttpServletRequest request) { - // 응답 메세지 객체 - - AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + public String selectMngrMainInqire(@CookieValue(value = "authSopmalCd") String authSopmalCd, ModelMap model, HttpServletRequest request) { DataMap vo = new DataMap(); - vo.put("sopmalCd", user.getSopmalCd()); + vo.put("sopmalCd", authSopmalCd); Map content = service.selectBOMngrMainInqire(vo); model.addAttribute("resultMap", content); return "mngr/index"; diff --git a/src/main/java/com/wb/domainserver/interceptor/mngr/MngrAuthInterceptor.java b/src/main/java/com/wb/domainserver/interceptor/mngr/MngrAuthInterceptor.java index 38e7fadd..7ced2fe4 100644 --- a/src/main/java/com/wb/domainserver/interceptor/mngr/MngrAuthInterceptor.java +++ b/src/main/java/com/wb/domainserver/interceptor/mngr/MngrAuthInterceptor.java @@ -40,19 +40,22 @@ public class MngrAuthInterceptor implements HandlerInterceptor{ //쿠키 쇼핑몰 코드 없을 경우 쿠키 생성 및 쇼핑몰코드 변수저장 - if(!StringUtils.hasText(cookieAuthSopmalCd)){ + if (!StringUtils.hasText(cookieAuthSopmalCd)) { //통합관리자인경우 - if("ADMIN".equals(RealmContextHolder.getSopmalCdRealm())){ - CookieUtils.createCookie("authSopmalCd", "SYS", "/admin", true, request, response); + if ("ADMIN".equals(RealmContextHolder.getSopmalCdRealm())) { + CookieUtils.createCookie("authSopmalCd", "SYS", "/", true, request, response); cookieAuthSopmalCd = "SYS"; - }else{ - CookieUtils.createCookie("authSopmalCd", RealmContextHolder.getSopmalCdRealm(), "/mngr", true, request, response); - cookieAuthSopmalCd = RealmContextHolder.getSopmalCdRealm(); + } else { + /*쿠키에 authSopmalCd가 없으면 초기화*/ + if(StringUtil.isEmpty(cookieAuthSopmalCd)){ + CookieUtils.createCookie("authSopmalCd", RealmContextHolder.getSopmalCdRealm(), "/", true, request, response); + cookieAuthSopmalCd = RealmContextHolder.getSopmalCdRealm(); + } } } - AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); //관리자 권한 조회 @@ -60,7 +63,7 @@ public class MngrAuthInterceptor implements HandlerInterceptor{ //해당 페이지에 접근권한이 없으면 alert boolean result = false; - if(authChk){ + if (authChk) { AuthVO authVO = new AuthVO(); authVO.setMngrInnb(user.getUserInnb()); authVO.setSopmalCd(cookieAuthSopmalCd); @@ -68,21 +71,19 @@ public class MngrAuthInterceptor implements HandlerInterceptor{ String url = request.getRequestURI(); authVO.setFnctUri(url.equals("/") ? url + RealmContextHolder.getRealm().toLowerCase() : url); -// if("itrnt".equalsIgnoreCase(cookieAuthSopmalCd)){ //인트라넷 일 경우 -// authVO.setStrOperDv(user.getStrOperDv()); -// authVO.setTentGroup(user.getTentGroup()); -// authVO.setReprsntBrand(user.getReprsntBrand()); -// -// result = authService.selectItrntAuthorSiteAt(authVO); -// }else{ - //관리자 + 통합관리자 일 경우 + if ("itrnt".equalsIgnoreCase(cookieAuthSopmalCd)) { //인트라넷 일 경우 + authVO.setStrOperDv(user.getStrOperDv()); + authVO.setTentGroup(user.getTentGroup()); + authVO.setReprsntBrand(user.getReprsntBrand()); + + result = authService.selectItrntAuthorSiteAt(authVO); + } else { + //관리자 + 통합관리자 일 경우 result = authService.selectAuthorSiteAt(authVO); -// } + } } - - if(!result){ - + if (!result) { response.setStatus(HttpServletResponse.SC_FORBIDDEN); response.setContentType("text/html;charset=utf-8"); response.getWriter().write(""); @@ -91,45 +92,43 @@ public class MngrAuthInterceptor implements HandlerInterceptor{ return false; } - - return true; } - /** - * 업무관리자 쇼핑몰 권한 조회 - * @param request req - * @param response res - * @param user 유저정보 - */ - private boolean mngrAuthChk(HttpServletRequest request, HttpServletResponse response, AnonymousUser user){ - //권한 리스트 조회 - AuthVO authVO = new AuthVO(); - authVO.setMngrInnb(user.getUserInnb()); - List sopmalList = authService.selectAuthorSopmalList(authVO); - logger.debug("sopmalList {}", sopmalList); - //로그인 요청 쇼핑몰 param 조회 - String queryString = request.getParameter("authSopmalCd"); - logger.debug("authSopmalCd param :: {}", queryString); - //권한 리스트에 로그인 요청 쇼핑몰 param이 포함되면 + /** + * 업무관리자 쇼핑몰 권한 조회 + * @param request req + * @param response res + * @param user 유저정보 + */ + private boolean mngrAuthChk (HttpServletRequest request, HttpServletResponse response, AnonymousUser user){ + //권한 리스트 조회 + AuthVO authVO = new AuthVO(); + authVO.setMngrInnb(user.getUserInnb()); + List sopmalList = authService.selectAuthorSopmalList(authVO); + logger.debug("sopmalList {}", sopmalList); + //로그인 요청 쇼핑몰 param 조회 + String queryString = request.getParameter("authSopmalCd"); + logger.debug("authSopmalCd param :: {}", queryString); + //권한 리스트에 로그인 요청 쇼핑몰 param이 포함되면 - String authSopmalCd = ""; - if (!StringUtil.isEmpty(queryString) && sopmalList.contains(queryString)) { - // 로그인 요청 쇼핑몰 param 저장 - authSopmalCd = queryString; + String authSopmalCd = ""; + if (!StringUtil.isEmpty(queryString) && sopmalList.contains(queryString)) { + // 로그인 요청 쇼핑몰 param 저장 + authSopmalCd = queryString; + + } else { + //쿠키에 권한 리스트중 첫번째 쇼핑몰 param 저장 + if (!sopmalList.isEmpty()) { + authSopmalCd = sopmalList.get(0); + } else { + return false; + } - } else { - //쿠키에 권한 리스트중 첫번째 쇼핑몰 param 저장 - if(!sopmalList.isEmpty()){ - authSopmalCd = sopmalList.get(0); - }else{ - return false; } + CookieUtils.createCookie("authSopmalCd", authSopmalCd, "/", true, request, response); + + return true; } - - CookieUtils.createCookie("authSopmalCd", authSopmalCd, "/mngr", true, request, response); - - return true; - } -} + } \ No newline at end of file diff --git a/src/main/java/com/wb/domainserver/realm/util/UrlExtractor.java b/src/main/java/com/wb/domainserver/realm/util/UrlExtractor.java index e35d99d9..bfc4ce4f 100644 --- a/src/main/java/com/wb/domainserver/realm/util/UrlExtractor.java +++ b/src/main/java/com/wb/domainserver/realm/util/UrlExtractor.java @@ -87,12 +87,14 @@ public class UrlExtractor { String host = url.replaceFirst("https?://", ""); // 로컬 혹은 개발 서브도메인 제거 +/* 서브도메인 구분 if (host.startsWith("loc.")) { host = host.replaceFirst("loc\\.", ""); } if (host.startsWith("dev.")) { host = host.replaceFirst("dev\\.", ""); } +*/ // 포트번호 제거 int portIndex = host.indexOf(":"); diff --git a/src/main/java/com/wb/domainserver/security/config/CommWebMvcConfig.java b/src/main/java/com/wb/domainserver/security/config/CommWebMvcConfig.java index 66a6bad7..18cb4845 100644 --- a/src/main/java/com/wb/domainserver/security/config/CommWebMvcConfig.java +++ b/src/main/java/com/wb/domainserver/security/config/CommWebMvcConfig.java @@ -1,9 +1,9 @@ package com.wb.domainserver.security.config; import com.wb.domainserver.common.msg.GconeMessageSource; -import com.wb.domainserver.common.ui.pagination.DefaultPaginationManager; -import com.wb.domainserver.common.ui.pagination.ImagePaginationRenderer; -import com.wb.domainserver.common.ui.pagination.PaginationRenderer; +import com.wb.domainserver.common.mvc.tags.ui.pagination.DefaultPaginationManager; +import com.wb.domainserver.common.mvc.tags.ui.pagination.ImagePaginationRenderer; +import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationRenderer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.ReloadableResourceBundleMessageSource; diff --git a/src/main/java/com/wb/domainserver/util/CookieUtils.java b/src/main/java/com/wb/domainserver/util/CookieUtils.java index 4c0c822a..4eecb700 100644 --- a/src/main/java/com/wb/domainserver/util/CookieUtils.java +++ b/src/main/java/com/wb/domainserver/util/CookieUtils.java @@ -89,7 +89,8 @@ public abstract class CookieUtils { public static Map loginCookiePath(){ String realm = RealmContextHolder.getRealm().toLowerCase(); - String ACTPath = "sopmal".equals(realm) ? "/" : "/" + realm; +// String ACTPath = "sopmal".equals(realm) ? "/" : "/" + realm; + String ACTPath = "/"; String RFTPath = "/" + realm + "/tokens/refresh"; return Map.of("ACTPath", ACTPath, "RFTPath", RFTPath); diff --git a/src/main/resources/mybatis/xml/mapper/admin/store/sopmal/BOSopmalMapper.xml b/src/main/resources/mybatis/xml/mapper/admin/store/sopmal/BOSopmalMapper.xml index 6f2e36e0..5b10abc3 100644 --- a/src/main/resources/mybatis/xml/mapper/admin/store/sopmal/BOSopmalMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/admin/store/sopmal/BOSopmalMapper.xml @@ -1510,5 +1510,21 @@ AND GD.USE_AT = 'Y' + + + diff --git a/src/main/webapp/WEB-INF/views/comm/mngr/Header.jsp b/src/main/webapp/WEB-INF/views/comm/mngr/Header.jsp index a8b7cb06..8c4f0fe2 100644 --- a/src/main/webapp/WEB-INF/views/comm/mngr/Header.jsp +++ b/src/main/webapp/WEB-INF/views/comm/mngr/Header.jsp @@ -190,10 +190,13 @@ data: JSON.stringify(data), dataType:"json", success: function (data) { - const result = data.resBody.result.result + console.log(data); + console.log(data.resBody.result); + console.log(JSON.parse(data.resBody.result)); + const result = JSON.parse(data.resBody.result).result; if(result ==='success'){ - location.href='/mngr/main' + location.href='/mngr/main'; } } }); diff --git a/src/main/webapp/WEB-INF/views/login/login-MNGR.jsp b/src/main/webapp/WEB-INF/views/login/login-MNGR.jsp index 9e0fe579..29177be3 100644 --- a/src/main/webapp/WEB-INF/views/login/login-MNGR.jsp +++ b/src/main/webapp/WEB-INF/views/login/login-MNGR.jsp @@ -50,15 +50,18 @@ @@ -72,7 +75,7 @@ + oninput="fn_hide_alertTxt('username','mbrIdAlertText',event);"> @@ -276,12 +279,12 @@ password: password, redirectUri: redirectUri, accessUrl: accessUrl, - sopmalCd: sopmalCd + sopmalCd: sopmalCd, + authSopmalCd:authSopmalCd }) }) .then((response) => { if (response.ok) { - console.log('response', response) return response.json(); }else{ switch(response.status){ @@ -297,28 +300,27 @@ } }) .then((data) => { - console.log('Login successful', data); let moveTo = redirectUri; // 로그아웃 상태에서 redirectUri 가 crm 인경우 안먹는 문제 해결 const firstPath = moveTo.split('/')[3]; // "/"를 기준으로 분리 if (firstPath === 'crm') { - console.log('CRM 페이지로 리다이렉션 처리'); + console.debug('CRM 페이지로 리다이렉션 처리'); if(redirectUri === '') moveTo = '/mngr/main?authSopmalCd=\'+authSopmalCd' const encodedRedirectURL = encodeURIComponent(moveTo); window.location.href = '/sso/'+realm+'?redirectUrl='+encodedRedirectURL; }else{ - if(moveTo.endsWith("/mngr")){ - - moveTo = '/main'; - - + if(authSopmalCd !== '') { + if (moveTo.endsWith("/mngr")) { + moveTo = '/main?authSopmalCd=' + authSopmalCd; + } else { + moveTo = '/mngr/main?authSopmalCd=' + authSopmalCd; + } }else{ - moveTo = '/mngr/main'; - } - - window.location.href = moveTo; + const encodedRedirectURL = encodeURIComponent(moveTo); + const encodedAccessUrl = encodeURIComponent(accessUrl); + window.location.href = '/mngr/tokens/refresh?redirect_uri='+encodedRedirectURL+'&authSopmalCd='+authSopmalCd+'&accessUrl='+encodedAccessUrl; } }) .catch(error => {