diff --git a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/mapper/BOGoodsMapper.java b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/mapper/BOGoodsMapper.java index 47a20bab..438e08c8 100644 --- a/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/mapper/BOGoodsMapper.java +++ b/src/main/java/com/wb/domainserver/domain/gcone/goods/goods/mapper/BOGoodsMapper.java @@ -85,6 +85,8 @@ public interface BOGoodsMapper { public void updateBOGoodsAdditionDtl(BOGoodsAdditionVO vo); // 일반 상품 > 추가정보 삭제 public void deleteBOGoodsAddition(BOGoodsAdditionVO vo); + // 사용자 - 검색 - 검색어 로그 저장 + public int insertBOSrchwrdLog(BOGoodsVO vo); // 사용자 - 검색 - 상품명 검색어 조회 public List selectBOSrchGoodsNm(BOGoodsVO vo); // 일반 상품 > 일괄 업데이트 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 f174d184..af5b66f5 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 @@ -7,6 +7,7 @@ import com.wb.domainserver.domain.gcone.common.service.BOCommonService; import com.wb.domainserver.domain.gcone.goods.goods.mapper.BOGoodsMapper; import com.wb.domainserver.domain.gcone.goods.goods.vo.*; import com.wb.domainserver.exception.WnbtRestException; +import com.wb.domainserver.exception.code.ErrorCode; import com.wb.domainserver.util.dataaccess.DataMap; import com.wb.domainserver.util.string.StringUtil; import lombok.extern.slf4j.Slf4j; @@ -16,6 +17,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; import java.io.File; import java.math.BigInteger; @@ -1505,6 +1507,27 @@ public class BOGoodsService { return mapper.selectBOGoodsCategoryLink(vo); } + /** + * 검색어 로그 저장 + * @param vo + * @return + */ + public DataMap insertBOSrchwrdLog(BOGoodsVO vo){ + DataMap message = new DataMap(); + + try { + mapper.insertBOSrchwrdLog(vo); + + message.put("result", "success"); + } catch (WnbtRestException wre) { + throw new WnbtRestException(wre.getMessage()); + } catch (Exception e) { + throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR); + } + + return message; + } + /** * 상품명 검색어 조회 * @param vo 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 25843a89..2861772e 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 @@ -485,6 +485,10 @@ public class BOGoodsVO extends AbstractVO { private String srchType; /** 검색어 */ private String srchStr; + /** 유입경로 */ + private String conectUrl; + /** 유입경로 도메인 */ + private String conectDomn; /** 선택 삭제 */ private List> delInnbArr; /** 이미지 파일 업로드 */ diff --git a/src/main/java/com/wb/domainserver/domain/sopmal/goods/controller/GoodsController.java b/src/main/java/com/wb/domainserver/domain/sopmal/goods/controller/GoodsController.java index abd4a97b..21eb760e 100644 --- a/src/main/java/com/wb/domainserver/domain/sopmal/goods/controller/GoodsController.java +++ b/src/main/java/com/wb/domainserver/domain/sopmal/goods/controller/GoodsController.java @@ -21,6 +21,7 @@ import com.wb.domainserver.domain.gcone.setup.dlvygrp.service.BODlvygrpService; import com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO; import com.wb.domainserver.domain.gcone.setup.ordrmngr.service.BOOrdrMngrService; import com.wb.domainserver.domain.gcone.setup.ordrmngr.vo.BOSetupOrdrVO; +import com.wb.domainserver.realm.util.UrlExtractor; import com.wb.domainserver.response.ApiResponse; import com.wb.domainserver.response.WnbtResponse; import com.wb.domainserver.response.WnbtResponseBody; @@ -210,6 +211,42 @@ public class GoodsController { return Util.getDeviceType(request)+"/goods/GoodsSrchR"; } + /** + * 검색어 로그 저장 + * @param vo + * @return + */ + @Policy(AuthPolicy.PUBLIC) + @RequestMapping(value = "/insertSrchwrdLog", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity insertSrchwrdLog(HttpServletRequest request, BOGoodsVO vo) { + //사용자 정보 추출 및 적용 + AnonymousUser user = MemberJwtContextHolder.getMemberInfo(); + if("01".equals(user.getSysDvCd())){ + vo.setSopmalCd(user.getSopmalCd()); + vo.setMbrInnb(String.valueOf(user.getUserInnb())); + } + + //요청 URL + String url = request.getRequestURI(); + vo.setConectUrl(url); + //host 정보 + String host = request.getHeader("X-Original-Host") != null ? request.getHeader("X-Original-Host") : UrlExtractor.getOriginalHost(request); + vo.setConectDomn(host); + + DataMap message = service.insertBOSrchwrdLog(vo); + + return ResponseEntity.ok( + WnbtResponse.builder() + .resBody(new WnbtResponseBody(message)) + .build() + ); +// return responseHandler.handleResponse( +// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOSrchGoodsNm", vo), +// ReplyFromResrc::getReply +// ); + + } + /** * 상품명 검색어 조회 * @param vo diff --git a/src/main/resources/mybatis/xml/mapper/gcone/goods/goods/BOGoodsMapper.xml b/src/main/resources/mybatis/xml/mapper/gcone/goods/goods/BOGoodsMapper.xml index 3c4cffd2..2cd6a5b7 100644 --- a/src/main/resources/mybatis/xml/mapper/gcone/goods/goods/BOGoodsMapper.xml +++ b/src/main/resources/mybatis/xml/mapper/gcone/goods/goods/BOGoodsMapper.xml @@ -3609,6 +3609,23 @@ ]]> + + + INSERT INTO GC_SRCHWRD_LOG ( + SRCHWRD, + MBR_INNB, + CONECT_DOMN, + CONECT_URL, + SRCH_DT + ) VALUES ( + #{srchStr}, + #{mbrInnb}, + #{conectDomn}, + #{conectUrl}, + SYSDATE() + ) + +