Просмотр исходного кода

Merge branch 'develop' into eskim

eskim 5 лет назад
Родитель
Сommit
2967d18e63
29 измененных файлов с 580 добавлено и 302 удалено
  1. 13 0
      src/main/java/com/style24/front/biz/service/TsfOrderService.java
  2. 21 0
      src/main/java/com/style24/front/biz/service/TsfReviewService.java
  3. 16 1
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  4. 1 0
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  5. 0 45
      src/main/java/com/style24/front/biz/web/TsfPgController.java
  6. 1 7
      src/main/java/com/style24/front/biz/web/TsfPlanningController.java
  7. 1 0
      src/main/java/com/style24/persistence/domain/Review.java
  8. 2 2
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  9. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  10. 6 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  11. 1 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html
  12. 1 3
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewDetailFormMob.html
  13. 9 11
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  14. 140 138
      src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html
  15. 1 2
      src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html
  16. 4 6
      src/main/webapp/WEB-INF/views/mob/social/SocialMainFormMob.html
  17. 1 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html
  18. 3 9
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewDetailFormWeb.html
  19. 4 6
      src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html
  20. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderDetailFormWeb.html
  21. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderListFormWeb.html
  22. 11 14
      src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html
  23. 63 0
      src/main/webapp/WEB-INF/views/web/planning/PlanningReplyPhotoFormWeb.html
  24. 1 2
      src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html
  25. 1 2
      src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html
  26. 26 7
      src/main/webapp/biz/payment.js
  27. 26 36
      src/main/webapp/ux/plugins/approval_key.js
  28. 220 0
      src/main/webapp/ux/plugins/gaga/gaga.singlePaging.js
  29. 4 3
      src/main/webapp/ux/style24_link.js

+ 13 - 0
src/main/java/com/style24/front/biz/service/TsfOrderService.java

@@ -493,6 +493,18 @@ public class TsfOrderService {
 	public int updateOrderDisplayYn(Order order) { return orderDao.updateOrderDisplayYn(order); }
 
 	public Payment setPgDataInfo(Order order) {
+		// TB_PAYMENT 우선 입력
+		Payment prePay = new Payment();
+		prePay.setOrdNo(order.getOrdNo());
+		prePay.setPgGb(order.getPgGb());
+		prePay.setPayMeans(order.getPayMeans());
+
+
+		// 상품권 100% 결제일 경우 PgGb STYLE24로 변경
+		if(TscConstants.PayMeans.CREDIT_CARD.value().equals(order.getPayMeans())) {prePay.setPgGb(TscConstants.PgGb.ISTYLE.value());}
+
+		// TODO TB_PAYMENT INSERT
+
 		Payment payment;
 		order.setFrontGb(TsfSession.getFrontGb());
 		if(TscConstants.PgGb.KAKAO.value().equals(order.getPgGb())) {			// 카카오페이
@@ -507,6 +519,7 @@ public class TsfOrderService {
 			throw new IllegalArgumentException("결제타입이 잘못 선택되었습니다. 새로고침 후 다시 시도해주세요.");
 		}
 
+		// TODO TB_PAYMENT INSERT
 		payment.setPgGb(order.getPgGb());
 		payment.setPayMeans(order.getPayMeans());
 		return payment;

+ 21 - 0
src/main/java/com/style24/front/biz/service/TsfReviewService.java

@@ -277,6 +277,27 @@ public class TsfReviewService {
 		
 	}
 		
+	/**
+	 * 상품 리뷰 목록
+	 * @param review
+	 * @return 
+	 * @author sowon
+	 * @since 2021. 5. 18
+	 */
+	public Collection<Review> getMypageReviewList(Review review) {
+		Collection<Review> reviewList = reviewDao.getReviewList(review);
+		
+		// 첨부파일
+		for(Review loopReview : reviewList) {
+			loopReview.setRvAtcSq(review.getRvAtcSq());
+			loopReview.setReviewAttachList(reviewDao.getReviewAttachList(loopReview));
+			loopReview.setGoodsOptionList(reviewDao.getReviewGoodsOptionList(loopReview));
+		}
+		//log.info("getReviewList {}", reviewList);
+		
+		return reviewList;
+	}
+	
 	
 	/**
 	 * 마이페이지 리뷰 업데이트

+ 16 - 1
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -1813,12 +1813,27 @@ public class TsfMypageController extends TsfBaseController {
 
 		mav.addObject("review", review);
 
-		mav.addObject("reviewList", reviewService.getReviewList(review));
+		mav.addObject("reviewList", reviewService.getMypageReviewList(review));
 
 		mav.setViewName(super.getDeviceViewName("mypage/MypageReviewDetailForm"));
 		return mav;
 	}
 	
+	/**
+	 * 상품상세 -  상품평 상세 레이어
+	 * @return
+	 * @author sowon
+	 * @since 2021. 3. 8
+	 */
+	@PostMapping("/review/detail/list")
+	@ResponseBody
+	public GagaMap getReviewDetailList(@RequestBody Review review) {
+		log.info("getReviewDetailList {}", review);
+		GagaMap result = new GagaMap();
+		result.set("reviewList", reviewService.getMypageReviewList(review));
+		return result;
+	}
+	
 	/**
 	 * 마이페이지 어드민 댓글 확인
 	 *

+ 1 - 0
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -783,6 +783,7 @@ public class TsfOrderController extends TsfBaseController {
 
 		param.setRegNo(param.getCustNo());
 		param.setUpdNo(param.getCustNo());
+		param.setFrontGb(TsfSession.getFrontGb());
 		
 		// 2. 결재정보등록(TB_PAYMENT)
 		param = orderService.orderPgPayResult(param, request, response);

+ 0 - 45
src/main/java/com/style24/front/biz/web/TsfPgController.java

@@ -143,51 +143,6 @@ public class TsfPgController extends TsfBaseController {
 		return null;
 	}
 
-	/**
-	 * 결제 PG 요청 완료
-	 *
-	 * @param
-	 * @return
-	 * @author xodud1202
-	 * @since 2021. 03. 05
-	 */
-	@ResponseBody
-	@RequestMapping(value = "/pay/result/response")
-	public ModelAndView payResultResponse(Payment param, HttpServletRequest request, HttpServletResponse response) {
-
-		ModelAndView mav = new ModelAndView();
-
-		Order order = new Order();
-
-		// 1. 로그인체크 후 custNo 설정
-		if (TsfSession.isLogin()) {
-			param.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
-			order.setCustNo(TsfSession.getInfo().getCustNo());
-		} else {
-			param.setCustNo(0);
-			order.setCustNo(0);
-		}
-
-		param.setUpdNo(param.getCustNo());
-		param.setFrontGb(TsfSession.getFrontGb());
-
-		// 2. 결재정보등록(TB_PAYMENT)
-		param = orderService.orderPgPayResult(param, request, response);
-
-		order.setOrdNo(param.getOrdNo());
-		order.setSellGb("10");
-		order.setPgGb(param.getPgGb());
-		order.setPayMeans(param.getPayMeans());
-
-		// TODO 3. 주문정보 업데이트
-		coreOrderService.updateOrderInfo(order);
-
-		mav.addObject("payment", param);
-
-		mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
-		return mav;
-	}
-
 	/**
 	 * 네이버 페이 결제 모듈
 	 * @param request

+ 1 - 7
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -208,13 +208,7 @@ public class TsfPlanningController extends TsfBaseController {
 
 		// 상품2열 전시
 		plan.setTmplType("G082_51");
-		/*
-		 * if (TsfSession.getFrontGb().equals("M")) { TscPageRequest pageable = new
-		 * TscPageRequest((plan.getPageNo2() > 0 ? plan.getPageNo2() - 1 : 0),
-		 * plan.getPageSize2(), plan.getPageUnit2()); int totalCnt =
-		 * planningService.getPlanGoodsDisplayList(plan).size();
-		 * pageable.setTotalCount(totalCnt); plan.setPageable2(pageable); }
-		 */
+
 		mav.addObject("goods2Info", planningService.getPlanGoodsDisplayList(plan));
 
 		// 상품4열 전시

+ 1 - 0
src/main/java/com/style24/persistence/domain/Review.java

@@ -108,6 +108,7 @@ public class Review extends TscBaseDomain {
 	private int reviewExpireDay;
 	private String kmcKey;
 	private String kufKey;
+	private Integer rvAtcSq;
 	
 	private Integer custPntSq;		// 고객포인트일련번호
 	private int gvPntAmt;			// 지급포인트금액

+ 2 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml

@@ -146,7 +146,7 @@
 				 INNER JOIN TB_PAYMENT P
 				    ON O.ORD_NO = P.ORD_NO
 				   AND P.PAY_GB = 'O'
-				   AND P.PAY_STAT IN ('G016_00', 'G016_30')
+				   AND P.PAY_STAT IN ('G016_10', 'G016_30')
 				  LEFT OUTER JOIN TB_REVIEW R
 				    ON R.ORD_NO = OD.ORD_NO
 				   AND R.ORD_DTL_NO = OD.ORD_DTL_NO
@@ -421,7 +421,7 @@
 			<if test="pgGb != null and pgGb != ''">
 		   AND PG_GB = #{pgGb}
 			</if>
-		   AND PAY_STAT IN ('G016_00', 'G016_30')
+		   AND PAY_STAT IN ('G016_10', 'G016_30')
 		</where>
 	</select>
 

+ 1 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml

@@ -948,7 +948,7 @@
 		         INNER JOIN TB_PAYMENT P
 		            ON P.ORD_NO = O.ORD_NO
 		           AND P.PAY_GB = 'O'
-		           AND P.PAY_STAT IN ('G016_00', 'G016_30')
+		           AND P.PAY_STAT IN ('G016_10', 'G016_30')
 		         WHERE OCD.DEL_YN = 'N'
 		           AND O.DISP_YN = 'Y'
 		<choose>

+ 6 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml

@@ -287,7 +287,7 @@
 		     , A.KMC_KEY
 		     , A.KUF_KEY
 		     , A.DEL_YN 
-		     , RANK() OVER(ORDER BY a.FILE_GB DESC) AS NUMB
+		     , RANK() OVER(ORDER BY A.FILE_GB DESC) AS NUMB
 		FROM  TB_REVIEW R
 		INNER JOIN TB_REVIEW_ATTACH A ON R.REVIEW_SQ = A.REVIEW_SQ
 		                              AND A.DEL_YN = 'N'
@@ -298,6 +298,10 @@
 		     OR
 		     FILE_GB = 'M' AND R.CONFIRM_YN = 'Y'  AND  NULLIF(KMC_KEY,'') IS NOT NULL
 		    )
+		<if test="rvAtcSq != null and rvAtcSq != ''">
+		ORDER BY FIELD(A.RV_ATC_SQ, #{rvAtcSq})DESC
+		        ,RV_ATC_SQ ASC 
+		</if>
 	</select>
 	
 	<!-- 상품평 상품 옵션 목록 -->
@@ -1205,6 +1209,7 @@
 			 , RA.KUF_KEY
 			 , RA.FILE_GB
 			 , RA.DEL_YN
+			 , RANK() OVER(ORDER BY RA.FILE_GB DESC) AS NUMB
 		FROM TB_REVIEW R LEFT JOIN TB_REVIEW_ATTACH RA ON R.REVIEW_SQ = RA.REVIEW_SQ 
 		WHERE 1=1
 		 AND R.REVIEW_SQ = RA.REVIEW_SQ 

+ 1 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewCreateFormMob.html

@@ -298,7 +298,6 @@
 let reviewList = [[${reviewInfo}]];
 let reviewStat = [[${reviewStat}]];
 let reviewAttach = [[${alreadyReviewAttach}]];
-let reviewUrl =[[${@environment.getProperty('upload.image.view')}]];
 
 //별점 class="on"
 var $starEls = $('#star_grade button#starBtn');
@@ -550,7 +549,7 @@ $(function(){
 				if(reviewAttach[i].reviewSq == reviewList.reviewSq){
 					if(reviewAttach[i].fileGb == "I"){
 						$("<span class=\"pics\">" +
-								"<img class=\"picsThumbs\" src=\"" + reviewUrl + '/' + reviewAttach[i].sysFileNm + "\" />" +
+								"<img class=\"picsThumbs\" src=\"" + _uploadImageUrl + '/' + reviewAttach[i].sysFileNm + "\" />" +
 								"<input type='hidden' name='orgFileNmArr' value='"+reviewAttach[i].orgFileNm+"'>" +
 								"<input type='hidden' name='sysFileNmArr' value='"+reviewAttach[i].sysFileNm+"'>" +
 								"<br/><span class=\"removes\">Removes image</span>" +

+ 1 - 3
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewDetailFormMob.html

@@ -38,9 +38,7 @@
 								<div class="swiper-slide">
 									<div class="thumb " th:classAppend="${(reviewAttach.fileGb == 'M') ? 'mov' :''}">
 										<th:block th:if="${reviewAttach.fileGb == 'M'}">
-											<video poster="http://cdn.011st.com/11dims/resize/1999x1999/quality/75/11src/review/10201202/3121412332/2e66698576d64c5c9977a6fe6606008d.jpg" muted="muted" preload="metadata" controls="controls">
-												<source src="http://snsvideo.11st.co.kr/movie/item/www/675/67518524_06_1_C1.mp4" type="video/mp4">
-											</video>
+											<iframe class="pd_mov" width="100%" height="100%" th:src="${kollusMediaUrl+'/'+reviewAttach.kmcKey +'?enable_initialize_focus=false&autoplay&mute&controls_activation=none'}" frameborder="0" allowfullscreen></iframe>
 										</th:block>
 										<th:block th:unless="${reviewAttach.fileGb == 'M'}">
 											<img th:src="${imgUrl+'/'+reviewAttach.sysFileNm}" alt="">

+ 9 - 11
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html

@@ -83,15 +83,13 @@
 	<input type="hidden" name="pageSize" value="10" />
 </form>
 <form id="searchForm2" name="searchForm2" th:action="@{'/mypage/already/review/list'}" th:method="post">
-	<input type="hidden" name="pageNo2" value="1" />
-	<input type="hidden" name="pageSize2" value="10" />
+	<input type="hidden" name="pageNo" value="1" />
+	<input type="hidden" name="pageSize" value="10" />
 </form>
 
 <script src="/ux/plugins/jquery/jquery.history.min.js"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
-	let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
-	let reviewUrl =[[${@environment.getProperty('upload.image.view')}]];
 	let attachList = [[${alreadyReviewAttach}]];
 	// 작성가능한 리뷰 클릭 시 
 	
@@ -105,7 +103,7 @@
 	
 	var fnGetAlreadyCallback = function (result) {
 			if (result.dataList2 != null && result.dataList2.length > 0) {
-				if (result.paging2.pageable2.pageNo == 1){
+				if (result.paging2.pageable.pageNo == 1){
 					$('#reviewList').html('');
 				}	
 				var html = '';
@@ -115,7 +113,7 @@
 					html += '			<div class="goods_detail">';
 					html += '				<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" >';
 					html += '					<div class="thumb_box">';
-					html += '						<img src="' + imageUrl + '/' + item.sysImgNm + '?RS=405" alt="tmp_pdClickother1">';
+					html += '						<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '?RS=405" alt="tmp_pdClickother1">';
 					html += '					</div>';
 					html += '					<div class="info_box">';
 					html += '						<div class="od_name">';
@@ -176,9 +174,9 @@
 								html += '						<a>';
 								html += '							<div class="pic">';
 								if (attachList[i].fileGb == 'M') {
-									html += '								<span class="thumb mov" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');"  style="background-image:url(' + _kollusMediaUrl + '/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
+									html += '								<span class="thumb mov" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');"  style="background-image:url(' + _kollusMediaUrl + '/poster/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
 								}else{
-									html += '								<span class="thumb" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
+									html += '								<span class="thumb" onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');" style="background-image:url(' + _uploadImageUrl + '/' + attachList[i].sysFileNm + ');"></span>';
 								}
 								
 								html += '							</div>';
@@ -252,10 +250,10 @@
 				});
 				
 				$('#reviewList').append(html);
-				if (result.paging2.pageable2.totalPage > result.paging2.pageable2.pageNo) {
+				if (result.paging2.pageable.totalPage > result.paging2.pageable.pageNo) {
 					$('#btnMore').parent().hide();
 					$('#btnMore2').parent().show();
-					$('#searchForm2 input[name=pageNo2]').val(result.paging2.pageable2.pageNo + 1);
+					$('#searchForm2 input[name=pageNo]').val(result.paging2.pageable.pageNo + 1);
 				}else{
 					$('#btnMore2').parent().hide();
 					$('#btnMore').parent().hide();
@@ -288,7 +286,7 @@
 				html += '			<div class="goods_detail">';
 				html += '				<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')">';
 				html += '					<div class="thumb_box">';
-				html += '						<img src="' + imageUrl + '/' + item.sysImgNm + '" alt="tmp_pdClickother1">';
+				html += '						<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '" alt="tmp_pdClickother1">';
 				html += '					</div>';
 				html += '					<div class="info_box">';
 				html += '						<div class="od_name">';

+ 140 - 138
src/main/webapp/WEB-INF/views/mob/planning/PlanningDetailFormMob.html

@@ -127,11 +127,11 @@
 									</ul>
 								</div> -->
 								<!-- 임시 -->
-								<div class="paging_wrap">
+								<!-- <div class="paging_wrap">
 									<ul class="pageNav" id="paging">
 
 									</ul>
-								</div>
+								</div> -->
 								<!-- 임시 -->
 							</div>
 						</div>
@@ -224,7 +224,7 @@
 	<input type="hidden" name="planSq" th:value="${planInfo.planSq}" />
 	<input type="hidden" name="pageSize" value="10" />
 </form>
-<script src="/ux/plugins/gaga/gaga.paging.js"></script>
+<script src="/ux/plugins/gaga/gaga.singlePaging.js"></script>
 <script th:inline="javascript">
 let review = [[${reviewInfo}]];
 let coupon = [[${couponInfo}]];
@@ -239,9 +239,6 @@ let replyCount = [[${replyCount}]];
 let replyAttachList = [[${replyAttachList}]];
 let planCornerGoodsList = [[${planCornerGoodsList}]];
 let planCornerList = [[${planCornerList}]];
-let _mall = [[${@environment.getProperty('domain.front')}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
-let imgUrl=[[${@environment.getProperty('upload.image.view')}]];
 
 var ajaxReplyList = function () {
 	gagaPaging.init('searchForm', fnSearchCallback, 'paging', 10);
@@ -272,7 +269,7 @@ var fnSearchCallback = function (result) {
 						html += '			<div class="img_wrap clear">';
 						for (var i = 0; i < result.replyAttachList.length; i++) {
 							if(result.replyAttachList[i].planEntrySq == item.planEntrySq){
-								html += '				<div class="pics"><img class="picsThumbs" src="'+ imgUrl +'/'+result.replyAttachList[i].sysFileNm +'" onclick="cfPlanReplyDetail(\''+item.planSq+'\',\''+item.planEntrySq+'\',\''+result.replyAttachList[i].planEntryAtSq+'\');"></div>';
+								html += '				<div class="pics"><img class="picsThumbs" src="'+ _uploadImageUrl +'/'+result.replyAttachList[i].sysFileNm +'" onclick="cfPlanReplyDetail(\''+item.planSq+'\',\''+item.planEntrySq+'\',\''+result.replyAttachList[i].planEntryAtSq+'\');"></div>';
 							}
 						}
 						html += '			</div>';
@@ -282,6 +279,11 @@ var fnSearchCallback = function (result) {
 					html += '	</li>';
 			 });
 				html += '</ul>';
+				html += '<div class="paging_wrap">';
+				html += '	<ul class="pageNav" id="paging">';
+				html += '	</ul>';
+				html += '</div>';
+				
 		 }else{
 			 html += '<div class="nodata"> ';
 				html += '	<div class="txt_box">             ';
@@ -413,37 +415,37 @@ if(planCornerList.length>0){
 	
 	var html = '';
 	$.each(planCornerList, function(idx, item)  {
-		html += '<div class="inner" >';
-		html += '	<div class="dp_listItems_wrap type'+(idx+1)+'">											';
-		html += '		<h2 class="dp_subtitle">'+item.cornerNm+'</h2>';
-		html += '		<div class="list_content">';
-		html += '			<div class="itemsGrp">';
+		html += '<div class="inner" >\n';
+		html += '	<div class="dp_listItems_wrap type'+(idx+1)+'">\n											';
+		html += '		<h2 class="dp_subtitle">'+item.cornerNm+'</h2>\n';
+		html += '		<div class="list_content">\n';
+		html += '			<div class="itemsGrp">\n';
 		$.each(planCornerGoodsList, function(idx2, item2)  {
 			if (item2.cornerNm == item.cornerNm) {
-				html += '				<div class="item_prod">';
-				html += '					<div class="item_state">';
+				html += '				<div class="item_prod">\n';
+				html += '					<div class="item_state">\n';
 				html += '						<button type="button" class="itemLike';
 				if(item2.likeIt == 'likeit'){
 					html += ' likeit';
 				}
 				html += ' "';
-				html += 'onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
-				html += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')"  class="itemLink">';
-				html += '							<div class="itemPic">';
-				html += '								<img class="vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
-				html += '							</div>';
-				html += '							<p class="itemBrand">'+item2.brandGroupNm+'</p>';
-				html += '							<div class="itemName">'+item2.goodsNm+'</div>';
-				html += '							<p class="itemPrice">';
+				html += 'onClick="cfnPutWishList(this);" goodsCd=\''+item2.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>\n';
+				html += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')"  class="itemLink">\n';
+				html += '							<div class="itemPic">\n';
+				html += '								<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item2.sysImgNm +'">\n';
+				html += '							</div>\n';
+				html += '							<p class="itemBrand">'+item2.brandGroupNm+'</p>\n';
+				html += '							<div class="itemName">'+item2.goodsNm+'</div>\n';
+				html += '							<p class="itemPrice">\n';
 				if (item2.currPrice != item2.listPrice) {
-					html += '								<span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>';
+					html += '								<span class="itemPrice_original">'+item2.listPrice.addComma()+'</span>\n';
 				}
 				html += item2.currPrice.addComma();
 				if (item2.dcRate != 0) {
-					html += '								<span class="itemPercent">'+item2.dcRate.addComma()+'%</span>';
+					html += '								<span class="itemPercent">'+item2.dcRate.addComma()+'%</span>\n';
 				}
-				html += '							</p>';
-				html += '							<div class="itemcolorchip">';
+				html += '							</p>\n';
+				html += '							<div class="itemcolorchip">\n';
 				if(!gagajf.isNull(item2.colorChips)){
 					var colorArr = item2.colorChips.split(",");
 					var colorCd = '';
@@ -453,38 +455,38 @@ if(planCornerList.length>0){
 						colorCd = colorInfo[0];
 						rgbColor = colorInfo[1];
 						if(rgbColor=='#FFFFFF'){
-							html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>';
+							html += '	<span class="chip_color" style="background-color: '+rgbColor+';border:1px solid #aaa;" value="'+colorCd+'">'+colorCd+'</span>\n';
 						}else{
-							html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>';
+							html += '	<span class="chip_color" style="background-color: '+rgbColor+'" value="'+colorCd+'">'+colorCd+'</span>\n';
 						}
 					}
 				}
-				html += '							</div>';
+				html += '							</div>\n';
 				if(!gagajf.isNull(item2.icon)){
 					var iconArr = item2.icon.split(",");
 					var iconGb = '';
 					var iconNm = '';
-					html += '	<p class="itemBadge">';
+					html += '	<p class="itemBadge">\n';
 					for(let i=0; i<iconArr.length; i++){
 						var iconInfo = iconArr[i].split(":");
 						iconGb = iconInfo[0];
 						iconNm = iconInfo[1];
-						html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>';
+						html += '	<span class="badge13" value="'+iconGb+'">'+iconNm+' </span>\n';
 					}
-					html += '	</p>';
+					html += '	</p>\n';
 				}
 				if(item2.goodsTnm != null){
-					html += '							<div class="itemComment">'+item2.goodsTnm+'</div>';
+					html += '							<div class="itemComment">'+item2.goodsTnm+'</div>\n';
 				}
-				html += '						</a>';
-				html += '					</div>';
-				html += '				</div>';
+				html += '						</a>\n';
+				html += '					</div>\n';
+				html += '				</div>\n';
 			}
 		});
-		html += '			</div>';
-		html += '		</div>';
-		html += '	</div>';
-		html += '</div>';
+		html += '			</div>\n';
+		html += '		</div>\n';
+		html += '	</div>\n';
+		html += '</div>\n';
 		
 	});
 	
@@ -524,7 +526,7 @@ if(goods1.length>0){
 					html += '					<div class="item_state">\n';
 					html += '						<a href="#none" class="itemLink">\n';
 					html += '							<div class="itemPic">\n';
-					html += '								<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'?RS=780" alt="">\n';
+					html += '								<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'?RS=780" alt="">\n';
 					html += '							</div>\n';
 					html += '							<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
 					html += '							<div class="itemName">'+item.goodsNm+'</div>\n';
@@ -574,29 +576,29 @@ var fnGetCompleteCallback = function (result) {
 	if (result.dataList != null && result.dataList.length > 0) {
 		var html = '';
 		$.each(result.dataList, function(idx, item) {
-			html += '		<div class="item_prod">';
-			html += '			<div class="item_state">';
-			html += '				<a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
-			html += '					<div class="itemPic">';
-			html += '						<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
-			html += '					</div>';
-			html += '					<p class="itemBrand">'+item.brandGroupNm+'</p>';
-			html += '					<div class="itemName">'+item.goodsNm+'</div>';
-			html += '					<p class="itemPrice">';
+			html += '		<div class="item_prod">\n';
+			html += '			<div class="item_state">\n';
+			html += '				<a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">\n';
+			html += '					<div class="itemPic">\n';
+			html += '						<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">\n';
+			html += '					</div>\n';
+			html += '					<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
+			html += '					<div class="itemName">'+item.goodsNm+'</div>\n';
+			html += '					<p class="itemPrice">\n';
 			if (item.currPrice != item.listPrice) {
-				html += '						<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
+				html += '						<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';
 			}
 			html += 						item.currPrice.addComma();
 			if (item.currPrice != item.listPrice) {
-				html += '						<span class="itemPercent">'+Math.floor(item.dcRate)+'%</span>';
+				html += '						<span class="itemPercent">'+Math.floor(item.dcRate)+'%</span>\n';
 			}
-			html += '					</p>';
+			html += '					</p>\n';
 			if(item.goodsTnm != null){
-				html += '					<div class="itemComment">'+item.goodsTnm+'</div>';
+				html += '					<div class="itemComment">'+item.goodsTnm+'</div>\n';
 			}
-			html += '				</a>';
-			html += '			</div>';
-			html += '		</div>';
+			html += '				</a>\n';
+			html += '			</div>\n';
+			html += '		</div>\n';
 	});
 		$('#group_'+result.dataList[0].planContSq).append(html);
 		if (result.paging1.pageable2.totalPage > result.paging1.pageable2.pageNo) {
@@ -628,53 +630,53 @@ if(goods4.length>0){
 	
 	for (var i = 0; i < template.length; i++) {
 		if(template[i].tmplType == 'G082_52' && array[0] == template[i].planContSq && typeof array[0] != 'undefined'){
-			html += '<div class="dp_listItems_cont type2">';
+			html += '<div class="dp_listItems_cont type2">\n';
 			if (template[i].linkUrl != null && template[i].linkUrl != '') { /* 링크 변경 예정 */
 				if (template[i].linkOpenGb == "M") { //본창
-					html += '	<h2 class="dp_subtitle"><a href="'+template[i].linkUrl+'" target="_self">'+template[i].title+' </a></h2>';
+					html += '	<h2 class="dp_subtitle"><a href="'+template[i].linkUrl+'" target="_self">'+template[i].title+' </a></h2>\n';
 				}else{
-					html += '	<h2 class="dp_subtitle"><a href="'+template[i].linkUrl+'" target="_blank">'+template[i].title+' </a></h2>';
+					html += '	<h2 class="dp_subtitle"><a href="'+template[i].linkUrl+'" target="_blank">'+template[i].title+' </a></h2>\n';
 				}
 			}else{
-				html += '	<h2 class="dp_subtitle"><a href="javascript:void(0)">'+template[i].title+' </a></h2>';
+				html += '	<h2 class="dp_subtitle"><a href="javascript:void(0)">'+template[i].title+' </a></h2>\n';
 			}
 			
-			html += '	<div class="swiper-container item02">';
-			html += '		<div class="swiper-wrapper">';
+			html += '	<div class="swiper-container item02">\n';
+			html += '		<div class="swiper-wrapper">\n';
 			$.each(goods4, function(idx, item) {
-				html += '			<div class="swiper-slide">';
-				html += '				<div class="item_prod">';
-				html += '					<div class="item_state">';
-				html += '						<a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
-				html += '							<div class="itemPic">';
-				html += '								<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
-				html += '							</div>';
-				html += '							<p class="itemBrand">'+item.brandGroupNm+'</p>';
-				html += '							<div class="itemName">'+item.goodsNm+'</div>';
-				html += '							<p class="itemPrice">';
+				html += '			<div class="swiper-slide">\n';
+				html += '				<div class="item_prod">\n';
+				html += '					<div class="item_state">\n';
+				html += '						<a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">\n';
+				html += '							<div class="itemPic">\n';
+				html += '								<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">\n';
+				html += '							</div>\n';
+				html += '							<p class="itemBrand">'+item.brandGroupNm+'</p>\n';
+				html += '							<div class="itemName">'+item.goodsNm+'</div>\n';
+				html += '							<p class="itemPrice">\n';
 				if (item.currPrice != item.listPrice) {
-					html += '								<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>';
+					html += '								<span class="itemPrice_original">'+item.listPrice.addComma()+'</span>\n';
 				}
 				
 				html += 								item.currPrice.addComma();
 				if (item.currPrice != item.listPrice) {
-					html += '								<span class="itemPercent">'+Math.floor(item.dcRate)+'%</span>';
+					html += '								<span class="itemPercent">'+Math.floor(item.dcRate)+'%</span>\n';
 				}
-				html += '							</p>';
+				html += '							</p>\n';
 				if(item.goodsTnm != null){
-					html += '							<div class="itemComment">'+item.goodsTnm+'</div>';
+					html += '							<div class="itemComment">'+item.goodsTnm+'</div>\n';
 				}
 				
-				html += '						</a>';
-				html += '					</div>';
-				html += '				</div>';
-				html += '			</div>';
+				html += '						</a>\n';
+				html += '					</div>\n';
+				html += '				</div>\n';
+				html += '			</div>\n';
 			})
 			
-			html += '		</div>';
-			html += '		<div class="swiper-pagination"></div>';
-			html += '	</div>';
-			html += '</div>';
+			html += '		</div>\n';
+			html += '		<div class="swiper-pagination"></div>\n';
+			html += '	</div>\n';
+			html += '</div>\n';
 			$("#G082_52" +array[0]).append(html);
 		}
 		if($("#G082_52" +template[i].planContSq).length){
@@ -706,12 +708,12 @@ if(review.length>0){
 		html += '										<div class="pic">\n';
 		if(item.reviewSysImg!= null){
 			if (item.fileGb == 'M') { 
-				html += '											<span class="thumb mov" style="background-image:url('+ imgUrl+item.reviewSysImg +');"></span>\n';
+				html += '											<span class="thumb mov" style="background-image:url('+ _uploadImageUrl+item.reviewSysImg +');"></span>\n';
 			}else{
-				html += '											<span class="thumb" style="background-image:url('+ imgUrl +item.reviewSysImg +');"></span>\n';
+				html += '											<span class="thumb" style="background-image:url('+ _uploadImageUrl +item.reviewSysImg +');"></span>\n';
 			}
 		}else{
-			html += '											<span class="thumb" style="background-image:url('+ goodsView+'/'+item.sysImgNm +');"></span>\n';
+			html += '											<span class="thumb" style="background-image:url('+ _uploadGoodsUrl+'/'+item.sysImgNm +');"></span>\n';
 		}
 		html += '										</div>\n';
 		html += '										<div class="info">\n';
@@ -741,7 +743,7 @@ if(review.length>0){
 		html += '									<div class="item_state">\n';
 		html += '										<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">\n';
 		html += '											<div class="itemPic">\n';
-		html += '												<img alt="" class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">\n';
+		html += '												<img alt="" class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">\n';
 		html += '											</div>\n';
 		html += '											<div class="itemName">'+item.goodsNm+'</div>\n';
 		html += '											<p class="itemPrice">\n';
@@ -768,25 +770,25 @@ if(review.length>0){
 if(image.length>0){
 	var html = '';
 	
-	html += '<div class="promotion_visual type2">';
-	html += '	<div class="big_banner_slide">';
-	html += '		<div class="swiper-container">';
-	html += '			<div class="swiper-wrapper">';
+	html += '<div class="promotion_visual type2">\n';
+	html += '	<div class="big_banner_slide">\n';
+	html += '		<div class="swiper-container">\n';
+	html += '			<div class="swiper-wrapper">\n';
 	$.each(image, function(idx, item)  {
-		html += '				<div class="swiper-slide">';
+		html += '				<div class="swiper-slide">\n';
 		if (item.linkOpenGb == 'M') {
-			html += '					<a href="'+item.linkUrl+'" target="_self"><img src="'+ imgUrl + item.itemVal +'?RS=1206" ></a>';
+			html += '					<a href="'+item.linkUrl+'" target="_self"><img src="'+ _uploadImageUrl + item.itemVal +'?RS=1206" ></a>\n';
 		}else{
-			html += '					<a href="'+item.linkUrl+'" target="_blank"><img src="'+ imgUrl + item.itemVal +'?RS=1206" ></a>';
+			html += '					<a href="'+item.linkUrl+'" target="_blank"><img src="'+ _uploadImageUrl + item.itemVal +'?RS=1206" ></a>\n';
 		}
-		html += '				</div>';
+		html += '				</div>\n';
 	});
 	
-	html += '			</div>';
-	html += '			<div class="swiper-pagination"></div>';
-	html += '		</div>';
-	html += '	</div>';
-	html += '</div>';
+	html += '			</div>\n';
+	html += '			<div class="swiper-pagination"></div>\n';
+	html += '		</div>\n';
+	html += '	</div>\n';
+	html += '</div>\n';
 	
 	$("#G082_30").append(html);
 }
@@ -794,52 +796,52 @@ if(image.length>0){
 if(coupon.length>0){
 	var html = '';
 	 
-	html += '<div class="dp_coupon">';
-	html += '	<h2 class="dp_subtitle">'+coupon[0].title+'</h2>';
-	html += '	<div class="coupon_list">';
-	html += '		<ul class="clear">';
+	html += '<div class="dp_coupon">\n';
+	html += '	<h2 class="dp_subtitle">'+coupon[0].title+'</h2>\n';
+	html += '	<div class="coupon_list">\n';
+	html += '		<ul class="clear">\n';
 	$.each(coupon, function(idx, item) {
 		if (item.couponStat == '쿠폰받기') {
-			html += '			<li> ';
+			html += '			<li>\n';
 		}else{
-			html += '			<li class="off"> ';
+			html += '			<li class="off">\n';
 		}
 		
-		html += '				<div class="cp_top">';
-		html += '					<div class="cp_detail">';
-		html += '						<p class="tit">'+item.cpnNm+'</p>';
-		html += '						<strong class="sale_t won_t"><span>'+item.dcVal.addComma()+'</span>'+item.dcWay+'</strong>';
-		html += '						<p class="cp_cont">'+item.useCondition+'</p>';
-		html += '						<span class="cp_cnt">'+item.issueCondition+'</span>';
-		html += '					</div>';
-		html += '					<span class="cp_shape"></span>';
-		html += '				</div>';
-		html += '				<div class="cp_date" id="dp_coupon1">';
+		html += '				<div class="cp_top">\n';
+		html += '					<div class="cp_detail">\n';
+		html += '						<p class="tit">'+item.cpnNm+'</p>\n';
+		html += '						<strong class="sale_t won_t"><span>'+item.dcVal.addComma()+'</span>'+item.dcWay+'</strong>\n';
+		html += '						<p class="cp_cont">'+item.useCondition+'</p>\n';
+		html += '						<span class="cp_cnt">'+item.issueCondition+'</span>\n';
+		html += '					</div>\n';
+		html += '					<span class="cp_shape"></span>\n';
+		html += '				</div>\n';
+		html += '				<div class="cp_date" id="dp_coupon1">\n';
 		if (item.couponStat == '쿠폰받기') {
-			html += '					<button type="button" id="coupon_'+item.cpnId+'" onclick="fnPlanCouponDown('+item.cpnId+')"><span>쿠폰 받기</span></button>';
+			html += '					<button type="button" id="coupon_'+item.cpnId+'" onclick="fnPlanCouponDown('+item.cpnId+')"><span>쿠폰 받기</span></button>\n';
 		}else{
-			html += '					<button type="button" id="coupon_'+item.cpnId+'" onclick="fnPlanCouponDown('+item.cpnId+')"><span>받기 완료</span></button>';
+			html += '					<button type="button" id="coupon_'+item.cpnId+'" onclick="fnPlanCouponDown('+item.cpnId+')"><span>받기 완료</span></button>\n';
 		}
-		html += '				</div>';
-		html += '				<div class="cp_info">';
-		html += '					<button type="button" id="modalBasic" class="btn_couponInfo_pop" onclick="usePlanInfoCoupon('+item.cpnId+')"><span>사용안내</span></button>';
-		html += '				</div>';
-		html += '			</li>';
+		html += '				</div>\n';
+		html += '				<div class="cp_info">\n';
+		html += '					<button type="button" id="modalBasic" class="btn_couponInfo_pop" onclick="usePlanInfoCoupon('+item.cpnId+')"><span>사용안내</span></button>\n';
+		html += '				</div>\n';
+		html += '			</li>\n';
 	});
-	html += '		</ul>';
-	html += '	</div>';
-	html += '	<div class="announce_txt">';
-	html += '		<div class="note_txt">';
-	html += '			<img src="/images/mo/ico_content_find.png" alt="유의사항">';
-	html += '			<p>유의사항</p>';
-	html += '		</div>';
-	html += '		<div class="announce_list">';
-	html += '			<ul>';
+	html += '		</ul>\n';
+	html += '	</div>\n';
+	html += '	<div class="announce_txt">\n';
+	html += '		<div class="note_txt">\n';
+	html += '			<img src="/images/mo/ico_content_find.png" alt="유의사항">\n';
+	html += '			<p>유의사항</p>\n';
+	html += '		</div>\n';
+	html += '		<div class="announce_list">\n';
+	html += '			<ul>\n';
 	html += coupon[0].note;
-	html += '			</ul>';
-	html += '		</div>';
-	html += '	</div>';
-	html += '</div>';
+	html += '			</ul>\n';
+	html += '		</div>\n';
+	html += '	</div>\n';
+	html += '</div>\n';
 		
 	$("#G082_20").append(html);
 }

+ 1 - 2
src/main/webapp/WEB-INF/views/mob/planning/PlanningShotGuideFormMob.html

@@ -167,7 +167,6 @@
 <script th:inline="javascript">
 let custAddr = [[${custAddr}]];
 let customerInfo = [[${customerInfo}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 let planCornerList = [[${planCornerList}]];
 let planCornerGoodsList = [[${planCornerGoodsList}]];
 if(planCornerList.length>0){
@@ -189,7 +188,7 @@ if(planCornerList.length>0){
 			
 			html += '						<a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
 			html += '							<div class="itemPic">';
-			html += '								<img class="vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
+			html += '								<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item2.sysImgNm +'">';
 			html += '							</div>';
 			html += '							<p class="itemBrand">'+item2.brandGroupNm+'</p>';
 			html += '							<div class="itemName">'+item2.goodsNm+'</div>';

+ 4 - 6
src/main/webapp/WEB-INF/views/mob/social/SocialMainFormMob.html

@@ -61,10 +61,8 @@
 </form>
 <script src="/ux/plugins/gaga/gaga.infinite.scrollSession.js"></script>
 <script src="/ux/plugins/jquery/jquery.history.min.js"></script>
-<!-- <script src="/ux/plugins/gaga/gaga.infinite.scrollLayer.js"></script> -->
 <script th:inline="javascript">
 let socialInfo = [[${socialInfo}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 
 
 var socialAddCart = function (obj) {
@@ -93,12 +91,12 @@ var socialAddCart = function (obj) {
 let fnGetSocialList = function(result) {
 	var html = '';
 	$.each(result.dataList, function(idx, item) {
-		html += '<div class="item_prod">';
 		if (item.stockQtySum == 0) {
-			html += '    <div class="item_state sold_out"> ';
+		html += '<div class="item_prod sold_out">';
 		}else{
-			html += '    <div class="item_state"> ';
+			html += '<div class="item_prod">';
 		}
+		html += '    <div class="item_state"> ';
 		if (item.likeIt == 'likeit') {
 			html += '        <button type="button" class="itemLike likeit " onclick="cfnMoPutWishList(this);" goodsCd=\''+item.goodsCd+'\', ithrCd=\'\', contentsLoc=\'\', planDtlSq=\'\'>관심상품 추가</button>';
 		}else{
@@ -107,7 +105,7 @@ let fnGetSocialList = function(result) {
 		html += '		<a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\')" >';
 		html += '			<div class="shape ranker"><span>특가</span></div>';
 		html += '			<div class="itemPic">';
-		html += '				<img class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
+		html += '				<img class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">';
 		html += '			</div>';
 		html += '			<p class="itemBrand">'+item.brandGroupNm+'</p>';
 		html += '			<div class="itemName">'+item.goodsNm+'</div>';

+ 1 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html

@@ -382,7 +382,6 @@
 let reviewList = [[${reviewInfo}]];
 let reviewStat = [[${reviewStat}]];
 let reviewAttach = [[${alreadyReviewAttach}]];
-let reviewUrl =[[${@environment.getProperty('upload.image.view')}]];
 
 // 별점 class="on"
 var $starEls = $('#star button#starBtn');
@@ -698,7 +697,7 @@ $(document).ready(function() {
 				if(reviewAttach[i].reviewSq == reviewList.reviewSq){
 					if(reviewAttach[i].fileGb == "I"){
 						$("<span class=\"pics\">" +
-								"<img class=\"picsThumbs\" src=\"" + reviewUrl + '/' + reviewAttach[i].sysFileNm + "\" />" +
+								"<img class=\"picsThumbs\" src=\"" + _uploadImageUrl + '/' + reviewAttach[i].sysFileNm + "\" />" +
 								"<input type='hidden' name='orgFileNmArr' value='"+reviewAttach[i].orgFileNm+"'>" +
 								"<input type='hidden' name='sysFileNmArr' value='"+reviewAttach[i].sysFileNm+"'>" +
 								"<br/><span class=\"removes\">Removes image</span>" +

+ 3 - 9
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewDetailFormWeb.html

@@ -28,6 +28,7 @@
 <!-- <input type="hidden" name="bestYn" th:value="${review.bestYn}" /> -->
 <input type="hidden" name="photoYn" th:value="${review.photoYn}" />
 <input type="hidden" name="reviewSq" th:value="${review.reviewSq}" />
+<input type="hidden" name="rvAtcSq" th:value="${review.rvAtcSq}" />
 </form>
 <a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_review_best')" class="close-modal">Close</a> 
 <script th:inline="javascript">
@@ -40,8 +41,8 @@
 		params.reviewSq = $('#reviewDetailForm input[name=reviewSq]').val();
 		//params.bestYn =$('#reviewDetailForm input[name=bestYn]').val();
 		params.photoYn = $('#reviewDetailForm input[name=photoYn]').val();
-		
-		gagajf.ajaxSubmit("/goods/review/detail/list", "json", fnReviewDetailCallback, params);
+		params.rvAtcSq = $('#reviewDetailForm input[name=rvAtcSq]').val();
+		gagajf.ajaxSubmit("/mypage/review/detail/list", "json", fnReviewDetailCallback, params);
 	}
 
 	var fnReviewDetailCallback = function(result) {
@@ -233,13 +234,6 @@
 		
 	}
 	
-	// 다른 상품평 보기
-	var fnReviewNext = function(reviewSq){
-		if (gagajf.isNull(reviewSq)) return false;
-		
-		$('#reviewDetailForm input[name=reviewSq]').val(reviewSq);
-		fnReviewDetail();
-	}
 	
 	$(document).ready( function() {
 		

+ 4 - 6
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html

@@ -109,8 +109,6 @@
 
 	<script src="/ux/plugins/gaga/gaga.paging.js"></script>
 	<script th:inline="javascript">
-	let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
-	let reviewUrl =[[${@environment.getProperty('upload.image.view')}]];
 	let attachList = [[${alreadyReviewAttach}]];
 	// 작성가능한 리뷰 클릭 시 
 	$("#completeReview").click(function() {
@@ -152,7 +150,7 @@
 				html += '					<div class="gd_item">	                                                                              ';
 				html += '						<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')">                                                                                       ';
 				html += '							<span class="thumb">                                                                          ';
-				html += '								<img src="' + imageUrl + '/' + item.sysImgNm + '?RS=550"  width="100%" alt="">  ';
+				html += '								<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '?RS=550"  width="100%" alt="">  ';
 				html += '							</span>                                                                                       ';
 				html += '							<p>                                                                                           ';
 				html += '								<span class="buy_date"><em>'+item.payDt+'</em>&nbsp;구매</span>             ';
@@ -215,7 +213,7 @@
 				html+='						<div class="gd_item">	';
 				html+='							<a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" >';
 				html+='								<span class="thumb">';
-				html+='									<img src="' + imageUrl + '/' + item.sysImgNm + '?RS=550" width="100%" alt="">';
+				html+='									<img src="' + _uploadGoodsUrl + '/' + item.sysImgNm + '?RS=550" width="100%" alt="">';
 				html+='								</span>';
 				html+='								<p>';
 				html+='									<span class="buy_date"><em>'+item.payDt+'</em>&nbsp;구매</span>';
@@ -318,9 +316,9 @@
 						html+='										<a>';
 						html+='											<div class="pic">';
 						if (attachList[i].fileGb == 'M') {
-							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');" class="thumb mov" style="background-image:url(' + _kollusMediaUrl + '/poster/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
+							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');" class="thumb mov" style="background-image:url(' + _kollusMediaUrl + '/poster/' + attachList[i].kmcKey + '?player_version=html5);"></span>';
 						}else{
-							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\');" class="thumb" style="background-image:url(' + reviewUrl + '/' + attachList[i].sysFileNm + ');"></span>';
+							html+='												<span onclick="cfMypageReviewDetail(\''+item.goodsCd+'\', \'Y\',\''+item.reviewSq+'\',\''+attachList[i].rvAtcSq+'\');" class="thumb" style="background-image:url(' + _uploadImageUrl + '/' + attachList[i].sysFileNm + ');"></span>';
 						}
 						html+='											</div>';
 						html+='										</a>';

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderDetailFormWeb.html

@@ -95,7 +95,7 @@
 												</div>
 												<div class="button_box">
 													<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
-													<th:block th:if="${ordDtl.payStat != 'G016_00' && (ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40')}">
+													<th:block th:if="${ordDtl.payStat != 'G016_10' && (ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40')}">
 														<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, delvFeeCd=${ordDtl.delvFeeCd}, ordCanChgQty=${ordDtl.ordCanChgQty}" onclick="fnCreateChange(this, 'cancel', 'noMember');"><span>주문 취소</span></button></p>
 													</th:block>
 													

+ 1 - 1
src/main/webapp/WEB-INF/views/web/mypage/NoMemberOrderListFormWeb.html

@@ -390,7 +390,7 @@
 
 					// 버튼 처리
 					// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
-					if (ordDtl.payStat != 'G016_00' && (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40')) {
+					if (ordDtl.payStat != 'G016_10' && (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40')) {
 						tag += '											<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" delvFeeCd="' + ordDtl.delvFeeCd + '" onclick="fnCreateChange(this, \'cancel\', \'noMember\');"><span>주문 취소</span></button></p>\n';
 					}
 

+ 11 - 14
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -253,9 +253,6 @@ let replyCount = [[${replyCount}]];
 let replyAttachList = [[${replyAttachList}]];
 let planCornerGoodsList = [[${planCornerGoodsList}]];
 let planCornerList = [[${planCornerList}]];
-let _mall = [[${@environment.getProperty('domain.front')}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
-let imgUrl=[[${@environment.getProperty('upload.image.view')}]];
 if(planCornerList.length>0){
 	var html = '';
 	
@@ -302,7 +299,7 @@ if(planCornerList.length>0){
 				
 				html += '                         <a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
 				html += '                             <div class="itemPic">';
-				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
+				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item2.sysImgNm +'">';
 				html += '                             </div>';
 				html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
 				html += '                             <div class="itemName">'+item2.goodsNm+'</div>';
@@ -383,18 +380,18 @@ if(review.length>0){
 		if(item.reviewSysImg!= null){
 			html += '				<a href="javascript:void();" id="btn_pdBestReview_pop" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'Y\',\''+item.reviewSq+'\');">';
 		}else{
-			html += '				<a href="javascript:void();" id="btn_pdBestReview_pop">';
+			html += '				<a href="javascript:void();" id="btn_pdBestReview_pop" onclick="cfGoodsReviewDetail(\''+item.goodsCd+'\',\'\', \'N\',\''+item.reviewSq+'\');">';
 		}
 		
 		html += '					<div class="pic">';
 		if(item.reviewSysImg!= null){
 			if (item.fileGb == 'M') { 
-				html += '								<span class="thumb mov" style="background-image: url('+ imgUrl+item.reviewSysImg +');"></span>';	
+				html += '								<span class="thumb mov" style="background-image: url('+ _uploadImageUrl+item.reviewSysImg +');"></span>';	
 			}else{
-				html += '								<span class="thumb" style="background-image: url('+ imgUrl +item.reviewSysImg +');"></span>';			
+				html += '								<span class="thumb" style="background-image: url('+ _uploadImageUrl +item.reviewSysImg +');"></span>';			
 			}
 		}else{
-			html += '								<span class="thumb" style="background-image: url('+ goodsView+'/'+item.sysImgNm +');"></span>';	
+			html += '								<span class="thumb" style="background-image: url('+ _uploadGoodsUrl+'/'+item.sysImgNm +');"></span>';	
 		}
 		
 		html += '                   </div>';
@@ -420,7 +417,7 @@ if(review.length>0){
 		html += '                  <div class="item_state">';
 		html += '                      <a href="javascript:void(0)" onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
 		html += '                          <div class="itemPic">';
-		html += '                            	<img alt="" class="vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
+		html += '                            	<img alt="" class="vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">';
 		html += '                          </div>';
 		html += '                          <div class="itemName">'+item.goodsNm+'</div>';
 		html += '                          <p class="itemPrice">'+item.currPrice.addComma()+'</p>';
@@ -447,9 +444,9 @@ if(image.length>0){
 	for (var i = 0; i < image.length; i++) {
 		html += '                	<div class="swiper-slide">';
 		if (image[i].linkOpenGb == 'M') {
-			html += '                    	<a href="'+image[i].linkUrl+'" target="_self">><img alt="" src="'+ imgUrl + image[i].itemVal +'"></a>';
+			html += '                    	<a href="'+image[i].linkUrl+'" target="_self">><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>';
 		}else{
-			html += '                    	<a href="'+image[i].linkUrl+'" target="_blank">><img alt="" src="'+ imgUrl + image[i].itemVal +'"></a>';
+			html += '                    	<a href="'+image[i].linkUrl+'" target="_blank">><img alt="" src="'+ _uploadImageUrl + image[i].itemVal +'"></a>';
 		}
 		
 		html += '                	</div>';
@@ -503,7 +500,7 @@ if(goods1.length>0){
 				html += '            <li>';
 				html += '                <div class="dp_listItems">';
 				html += '                    <div class="dp_listItems_img">';
-				html += '                        <img src="'+ goodsView +'/'+item.sysImgNm +'" alt="">';
+				html += '                        <img src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'" alt="">';
 				html += '                    </div>';
 				html += '                    <div class="dp_listItems_info">';
 				html += '                        <div class="dp_listItems_brand">'+item.brandGroupNm+'</div>';
@@ -648,7 +645,7 @@ if(goods4.length>0){
 					html += '                        <div class="item_state">';
 					html += '                            <a onclick="cfnGoToGoodsDetail(\'' + item.goodsCd + '\')" class="itemLink">';
 					html += '                                <div class="itemPic">';
-					html += '                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'">';
+					html += '                                    <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'">';
 					html += '                                </div>';
 					html += '                                <p class="itemBrand">'+item.brandGroupNm+'</p>';
 					html += '                                <div class="itemName">'+item.goodsNm+'</div>';
@@ -838,7 +835,7 @@ var fnSearchCallback = function (result) {
 				 if (result.replyAttachList.length>0) {
 					for (var i = 0; i < result.replyAttachList.length; i++) {
 						if(result.replyAttachList[i].planEntrySq == item.planEntrySq){
-							html += '				<span class="pics"><img class="picsThumbs" src="'+ imgUrl +'/'+result.replyAttachList[i].sysFileNm +'"></span>';
+							html += '				<span class="pics"><img class="picsThumbs" src="'+ _uploadImageUrl +'/'+result.replyAttachList[i].sysFileNm +'"></span>';
 						}
 					}	
 				 }

+ 63 - 0
src/main/webapp/WEB-INF/views/web/planning/PlanningReplyPhotoFormWeb.html

@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="ko" xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : GoodsReviewPhotoFormMob.html
+ * @desc	: 상품평 - 포토/영상 리스트 팝업
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE		 AUTHOR	  DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.008   eskim		최초 작성
+ *******************************************************************************
+ -->
+<!-- 댓글 이미지 팝업 -->
+<!-- <div class="modal fade thumb_img_pop" id="thumbImgPop" tabindex="-1" role="dialog" aria-labelledby="thumbImgLabel" aria-hidden="true"> -->
+        <div class="modal-dialog" role="document">
+            <div class="modal-content" th:with="frontUrl=${@environment.getProperty('domain.front')}, goodsView=${@environment.getProperty('upload.goods.view')}, planView=${@environment.getProperty('upload.image.view')}">
+				<div class="modal-header sr-only">
+                    <h5 class="modal-title" id="thumbImgLabel">이미지 상세보기</h5>
+                </div>
+                <div class="modal-body">
+                    <div class="pop_cont">
+ 						<div class="swiper-container">
+							<div class="swiper-wrapper">
+								<!-- 이미지 슬라이드 영역 -->
+							<th:block th:each="a, stat : ${replyAttachList}">
+								<div class="swiper-slide">
+									<div class="pop_img" th:style="${'background-image:url('+planView+'/'+a.sysFileNm+');'}">
+									</div>
+								</div>
+							</th:block>
+							</div>
+						</div>
+						<div class="swiper-button-next"></div>
+						<div class="swiper-button-prev"></div>						
+						<div class="swiper-pagination"></div>
+                    </div>
+                </div>
+            </div>
+        </div>        
+<!--     </div> -->
+	<!-- //댓글 이미지 팝업 -->	
+<a href="javascript:void(0);" rel="modal:close"	onclick="cfCloseLayer('layer_review_photo')" class="close-modal">Close</a>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	var contactPopSwiper = new Swiper('.thumb_img_pop .swiper-container', {
+	navigation: {
+		nextEl: '.thumb_img_pop .swiper-button-next',
+		prevEl: '.thumb_img_pop .swiper-button-prev',
+	},
+	pagination: {
+		el: '.thumb_img_pop .swiper-pagination',
+		clickable: true,
+	},
+	observer:true,
+	observeParents: true,
+});		
+
+/*]]>*/
+</script>
+</html>

+ 1 - 2
src/main/webapp/WEB-INF/views/web/planning/PlanningShotGuideFormWeb.html

@@ -148,7 +148,6 @@
 /*<![CDATA[*/
 let custAddr = [[${custAddr}]];
 let customerInfo = [[${customerInfo}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 let planCornerList = [[${planCornerList}]];
 let planCornerGoodsList = [[${planCornerGoodsList}]];
 // 로그인 확인
@@ -197,7 +196,7 @@ if(planCornerList.length>0){
 				
 				html += '                         <a href="javascript:void(0);" onclick="cfnGoToGoodsDetail(\'' + item2.goodsCd + '\')" class="itemLink">';
 				html += '                             <div class="itemPic">';
-				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item2.sysImgNm +'">';
+				html += '                                 <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item2.sysImgNm +'">';
 				html += '                             </div>';
 				html += '                             <p class="itemBrand">'+item2.brandGroupNm+'</p>';
 				html += '                             <div class="itemName">'+item2.goodsNm+'</div>';

+ 1 - 2
src/main/webapp/WEB-INF/views/web/social/SocialMainFormWeb.html

@@ -77,7 +77,6 @@
 <script src="/ux/plugins/jquery/jquery.history.min.js"></script>
 <script th:inline="javascript">
 let socialInfo = [[${socialInfo}]];
-let goodsView =[[${@environment.getProperty('upload.goods.view')}]]
 
 
 var socialAddCart = function (obj) {
@@ -122,7 +121,7 @@ let fnGetSocialList = function(result) {
 		
 		html += '        <a href="javascript:void(0);" class="itemLink" onclick="cfnGoToGoodsDetail(\''+item.goodsCd+'\')" >';
 		html += '            <div class="itemPic">';
-		html += '                <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ goodsView +'/'+item.sysImgNm +'?RS=550">';
+		html += '                <img alt="BLUE-a" class=" vLHTC pd_img" src="'+ _uploadGoodsUrl +'/'+item.sysImgNm +'?RS=550">';
 		html += '            </div>';
 		html += '            <div class="itemSpecialPrice"><span>특가</span></div>';
 		html += '            <p class="itemBrand">'+item.brandGroupNm+'</p>';

+ 26 - 7
src/main/webapp/biz/payment.js

@@ -39,17 +39,36 @@ function jsf__pay( form ) {
 function call_pay_form()
 {
 	var v_frm = document.order_info;
+	// 인코딩 방식에 따른 변경 Start
+	if(v_frm.encoding_trans == undefined) {
+		v_frm.action = PayUrl;
+	} else if(v_frm.encoding_trans.value == "UTF 8") {
+		v_frm.action = PayUrl.substring(0, PayUrl.lastIndexOf("/")) + "/jsp/encodingFilter/encodingFilter.jsp";
+		v_frm.PayUrl.value = PayUrl;
+	} else {
+		v_frm.action = PayUrl;
+	}
 
-	v_frm.action = PayUrl;
-
-	if (v_frm.Ret_URL.value == "")
-	{
+	if (v_frm.Ret_URL.value == "") {
 		/* Ret_URL값은 현 페이지의 URL 입니다. */
 		alert("연동시 Ret_URL을 반드시 설정하셔야 됩니다.");
 		return false;
-	}
-	else
-	{
+	} else {
 		v_frm.submit();
 	}
+}
+
+/* kcp 통신을 통해 받은 암호화 정보 체크 후 결제 요청 (변경불가) */
+function chk_pay() {
+	self.name = "tar_opener";
+	var pay_form = document.pay_form;
+
+	if (pay_form.res_cd.value == "3001" ) {
+		alert("사용자가 취소하였습니다.");
+		pay_form.res_cd.value = "";
+	}
+
+	if (pay_form.enc_info.value) {
+		pay_form.submit();
+	}
 }

+ 26 - 36
src/main/webapp/ux/plugins/approval_key.js

@@ -28,25 +28,15 @@
 
     function kcp_AJAX()
     {
-        // 占쌔댐옙 占쌀쏙옙占쏙옙 jQuery占쏙옙 占쏙옙占� 占쏙옙占쏙옙 占십댐옙 占쏙옙체占쏙옙占쏙옙占쏙옙 占쌜듸옙 占쌀쇽옙 占쌍듸옙占쏙옙 占쏙옙占쏙옙占실억옙占쏙옙占싹댐옙.
-        // 占쏙옙 占싸븝옙占쏙옙 javascript占쏙옙 占쏙옙占쏙옙占쏙옙 jQuery占쏙옙 占싱울옙占싹몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌀쇽옙 占쌍쏙옙占싹댐옙. 
-        // 占실댐옙
-        // javascript占쏙옙 占쏙옙占쏙옙 ajax 占쏙옙占쏙옙占� 占쏙옙 占십울옙 占쏙옙占쏙옙 占쌀쏙옙占쏙옙占쏙옙 order_approval.jsp占쏙옙 占쏙옙占쏙옙占쌔쇽옙 占쏙옙占� 占싹셔듸옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙
-        // 占쏙옙占쏙옙占실댐옙 jar 占쏙옙占싹울옙 占쏙옙占쏙옙 占쏙옙占쌨듸옙 占쏙옙占쏙옙占싶몌옙 占쏙옙占쏙옙寗占� 占쌍듸옙占쏙옙 method占쏙옙 占쏙옙占쏙옙 占실억옙 占쌍쏙옙占싹댐옙.
+        // 해당 소스는 jQuery를 사용 하지 않는 업체에서도 작동 할수 있도록 구현되었습니다.
+        // 이 부분은 javascript로 구현시 jQuery를 이용하면 더욱 쉽게 구현 할수 있습니다. 
+        // 또는
+        // javascript를 통한 ajax 통신을 할 필요 없이 소스내에 order_approval.jsp를 연동해서 사용 하셔도 관계 없으며
+        // 제공되는 jar 파일에 직접 전달된 데이터를 사용할수 있도록 method가 구현 되어 있습니다.
         if(ajax_flag)
         {
             var url    = "http:" + _frontUrl + "/pg/kcp/approval";
             var form = document.order_info;
-            let data = {
-                  site_cd : form.site_cd.value
-                , ordr_idxx : form.ordr_idxx.value
-                , good_mny : form.good_mny.value
-                , pay_method : form.pay_method.value
-                , escw_used : form.escw_used.value
-                , good_name : form.good_name.value
-                , response_type : form.response_type.value
-                , Ret_URL : form.Ret_URL.value
-            }
             var params = "?site_cd=" + form.site_cd.value
                        + "&ordr_idxx=" + form.ordr_idxx.value
                        + "&good_mny=" + form.good_mny.value
@@ -54,14 +44,14 @@
                        + "&escw_used=" + form.escw_used.value
                        + "&good_name=" + form.good_name.value
                        + "&response_type=" + form.response_type.value
-                       + "&Ret_URL=" + form.Ret_URL.value;
-            sendRequest(encodeURI(url + params));
+                       + "&Ret_URL=" + form.Ret_URL.value
+            sendRequest( url + params );
             
             ajax_flag = false;
         }
         else
         {
-            alert("占쏙옙占� 占쏙옙占쌉니댐옙. 占쏙옙첩占� 占쏙옙慕占� 占쌍쇽옙占쏙옙.");
+            alert("통신 중입니다. 잠시만 기다려 주세요.");
         }
             
     }
@@ -74,31 +64,31 @@
             {
                 if ( req01_AJAX.responseText != null )
                 {
-                    // 占쌔댐옙 占쌀쏙옙占쏙옙 jQuery占쏙옙 占쏙옙占� 占쏙옙占쏙옙 占십댐옙 占쏙옙체占쏙옙占쏙옙占쏙옙 占쌜듸옙 占쌀쇽옙 占쌍듸옙占쏙옙 占쏙옙占쏙옙占실억옙占쏙옙占싹댐옙.
-                    // 占쏙옙 占싸븝옙占쏙옙 javascript占쏙옙 占쏙옙占쏙옙占쏙옙 jQuery占쏙옙 占싱울옙占싹몌옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쏙옙占쏙옙 占쌀쇽옙 占쌍쏙옙占싹댐옙. 
-                    // 占실댐옙
-                    // javascript占쏙옙 占쏙옙占쏙옙 ajax 占쏙옙占쏙옙占� 占쏙옙 占십울옙 占쏙옙占쏙옙 占쌀쏙옙占쏙옙占쏙옙 order_approval.jsp占쏙옙 占쏙옙占쏙옙占쌔쇽옙 占쏙옙占� 占싹셔듸옙 占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙
-                    // 占쏙옙占쏙옙占실댐옙 jar 占쏙옙占싹울옙 占쏙옙占쏙옙 占쏙옙占쌨듸옙 占쏙옙占쏙옙占싶몌옙 占쏙옙占쏙옙寗占� 占쌍듸옙占쏙옙 method占쏙옙 占쏙옙占쏙옙 占실억옙 占쌍쏙옙占싹댐옙.
+                    // 해당 소스는 jQuery를 사용 하지 않는 업체에서도 작동 할수 있도록 구현되었습니다.
+                    // 이 부분은 javascript로 구현시 jQuery를 이용하면 더욱 쉽게 구현 할수 있습니다. 
+                    // 또는
+                    // javascript를 통한 ajax 통신을 할 필요 없이 소스내에 order_approval.jsp를 연동해서 사용 하셔도 관계 없으며
+                    // 제공되는 jar 파일에 직접 전달된 데이터를 사용할수 있도록 method가 구현 되어 있습니다.
                     try
                     {
                         var form = document.order_info;
                         
                         if( form.response_type.value == "JSON" )
                         {
-                            StateChangeForJSON( req01_AJAX ); // JSON 占쏙옙占쏙옙占� 占쏙옙占�
+                            StateChangeForJSON( req01_AJAX ); // JSON 방식일 경우
                         }
                         else if( form.response_type.value == "XML" )
                         {
-                            StateChangeForXML( req01_AJAX ); // XML 占쏙옙占쏙옙占� 占쏙옙占�
+                            StateChangeForXML( req01_AJAX ); // XML 방식일 경우
                         }
                         else if( form.response_type.value == "TEXT" || form.response_type.value == "" )
                         {
-                            StateChangeForText( req01_AJAX ); // TEXT 占쏙옙占쏙옙占� 占쏙옙占�
+                            StateChangeForText( req01_AJAX ); // TEXT 방식일 경우
                         }
                     }
                     catch( e )
                     {
-                        StateChangeForText( req01_AJAX ); // TEXT 占쏙옙占쏙옙占� 占쏙옙占�
+                        StateChangeForText( req01_AJAX ); // TEXT 방식일 경우
                     }
                 }
             }
@@ -117,8 +107,8 @@
         if( txt[0].replace(/^\s*/,'').replace(/\s*$/,'') == '0000' )
         {
             document.getElementById( "approval" ).value = txt[1].replace(/^\s*/,'').replace(/\s*$/,'');
-            // 占싣뤄옙 alert占쏙옙 占쏙옙占쏙옙 占쌔듸옙占쏙옙
-            alert("占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙 占신뤄옙占쏙옙 占쏙옙占� 占실억옙占쏙옙占싹댐옙.");
+            // 아래 alert는 삭제 해도됨
+            alert("성공적으로 거래가 등록 되었습니다.");
             PayUrl = decodeURIComponent( txt[2].replace(/^\s*/,'').replace(/\s*$/,'') );
             
             document.getElementById( "traceNo" ).value = txt[3].replace(/^\s*/,'').replace(/\s*$/,'');
@@ -133,7 +123,7 @@
             var res_msg = txt[2].replace(/^\s*/,'').replace(/\s*$/,'');
             
             ajax_flag=true;
-            alert("占쏙옙占쏙옙 占실억옙占쏙옙占싹댐옙.[" + res_msg + "]");
+            alert("실패 되었습니다.[" + res_msg + "]");
         }
     }
     
@@ -146,8 +136,8 @@
         if( x[0].getElementsByTagName( "Code" )[0].childNodes[0].nodeValue == '0000' )
         {
             document.getElementById( "approval" ).value = x[0].getElementsByTagName( "approvalKey" )[0].childNodes[0].nodeValue;
-            // 占싣뤄옙 alert占쏙옙 占쏙옙占쏙옙 占쌔듸옙占쏙옙
-            alert("占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙 占신뤄옙占쏙옙 占쏙옙占� 占실억옙占쏙옙占싹댐옙.");
+            // 아래 alert는 삭제 해도됨
+            alert("성공적으로 거래가 등록 되었습니다.");
             PayUrl = x[0].getElementsByTagName( "PayUrl" )[0].childNodes[0].nodeValue;
             
             document.getElementById( "traceNo" ).value = x[0].getElementsByTagName( "traceNo"     )[0].childNodes[0].nodeValue;
@@ -162,7 +152,7 @@
         {
             ajax_flag=true;
             
-            alert("占쏙옙占쏙옙 占실억옙占쏙옙占싹댐옙.[" + x[0].getElementsByTagName( "Message" )[0].childNodes[0].nodeValue + "]");
+            alert("실패 되었습니다.[" + x[0].getElementsByTagName( "Message" )[0].childNodes[0].nodeValue + "]");
         }
     }
     
@@ -174,8 +164,8 @@
         if( json.Code == '0000' )
         {
             document.getElementById( "approval" ).value = json.approvalKey;
-            // 占싣뤄옙 alert占쏙옙 占쏙옙占쏙옙 占쌔듸옙占쏙옙
-            alert("占쏙옙占쏙옙占쏙옙占쏙옙占쏙옙 占신뤄옙占쏙옙 占쏙옙占� 占실억옙占쏙옙占싹댐옙.");
+            // 아래 alert는 삭제 해도됨
+            alert("성공적으로 거래가 등록 되었습니다.");
             PayUrl = json.PayUrl;
             
             document.getElementById( "PayUrl"  ).value = json.request_URI;
@@ -187,6 +177,6 @@
         {
             ajax_flag=true;
             
-            alert("占쏙옙占쏙옙 占실억옙占쏙옙占싹댐옙.[" + json.Message + "]");
+            alert("실패 되었습니다.[" + json.Message + "]");
         }
     }

+ 220 - 0
src/main/webapp/ux/plugins/gaga/gaga.singlePaging.js

@@ -0,0 +1,220 @@
+/*
+ * Pagination Common Java Script written by gagamel.
+ *
+ * Copyright (c) 2019 gagamel
+ * Dual licensed under GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2019-07-21 $
+ * 
+ * 사용 예)
+ * 		// HTML 태그는 다음과 같은 구조로 되어 있어야 한다.
+ * 		<div class="tablePaging" id="pagination">
+ * 			<li class="prev"><a href="#"><span class="sr-only">이전</span></a></li>
+ *			<li class="active">01</li>
+ *			<li>/</li>
+ *			<li>10</li>
+ *			<li class="next"><a href="#"><span class="sr-only">다음</span></a></li>
+ * 			...
+ * 		</div>
+ * 
+ * 		// Import할 자바스크립트 파일
+ * 		<script type="text/javascript" src="/ux/plugins/gaga/gaga.singlePaging"></script>
+ * 
+ * 		<script type="text/javascript">
+ * 			// Initialize a pagination
+ * 			gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination');
+ * 			
+ *			// Load data
+ * 			gagaPaging.load($('#searchForm input[name=pageNo]').val(), $('#searchForm select[name=pageSize]').val());
+ * 
+ * 			var fnSearchGoodsQnaCallback = function(result) {
+ * 				// Handle Data
+ * 				...
+ * 				
+ * 				// Create pagination
+ * 				gagaPaging.createPagination(result.goodsAsk.pageable);
+ * 			}
+ *		</script>
+ */
+
+var gagaPaging = {
+
+	oFormId : '',
+	oCallbackFn : '',
+	oPaginationId : '',
+	nPageSize : 50,
+	nPageUnit : 10,
+	
+	/**
+	 * Initialize a pagination
+	 * @param formId - Form ID. 검색조건 폼 ID
+	 * @param callbackFn - Callback function. 데이터 조회 후 처리하는 콜백함수
+	 * @param paginationId - Pagination ID. 페이징을 구성하는 div 태그 ID
+	 * @param pageSize - 조회할 데이터 row수. 옵션
+	 * @param pageUnit - 그룹핑 페이지 단위. 옵션
+	 * 사용 예)
+	 * 		// Initialize a pagination
+	 * 		gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination');
+	 * 		or
+	 * 		gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination', 50);
+	 * 		or
+	 * 		gagaPaging.init('searchForm', fnSearchGoodsQnaCallback, 'pagination', 50, 10);
+	 */
+	init : function(formId, callbackFn, paginationId, pageSize, pageUnit) {
+		oFormId = formId;
+		oCallbackFn = callbackFn;
+		oPaginationId = paginationId;
+		if (typeof(pageSize) != 'undefined') nPageSize = pageSize;
+		if (typeof(pageUnit) != 'undefined') nPageUnit = pageUnit;
+	},
+	
+	/**
+	 * Create a pagination
+	 * @param pageable - page 정보
+	 */
+	createPagination : function(pageable) {
+		// Generate pagination
+		var html;
+		if (gagajf.isNull(pageable.generatedPagination)) {
+			html = gagaPaging.generatedPagination(pageable);
+		} else {
+			html = pageable.generatedPagination;
+		}
+		$('#' + oPaginationId).html(html);
+		// Bind event
+		gagaPaging.bind();
+	},
+	
+	/**
+	 * Bind the pagination's event
+	 * Paging 처리 시 다음과 같이 지정
+	 * 사용 예)
+	 * 		// HTML 태그는 다음과 같은 구조로 되어 있어야 한다.
+	 * 		<div class="tablePaging" id="pagination">
+	 * 			<a href="#pageNo=1">1</a>
+	 * 			<a href="#pageNo=2">2</a>
+	 * 			...
+	 * 		</div>
+	 */
+	bind : function() {
+		$('#' + oPaginationId + ' a').on('click', function(e) {
+			var params = $(this).attr('href');
+			params = params.replace(/^.*#/, '');
+			
+			var pageNo = 1;
+			
+			if (!gagajf.isNull(params)) {
+				pageNo = params.split("=")[1];
+			}
+			
+			gagaPaging.load(pageNo);
+			
+			return false;
+		});
+	},
+	
+	/**
+	 * Load data and call a callback function
+	 * JSON 형태로 보내고 받는 후 콜백함수에서 데이터를 처리한다.
+	 * @param pageNo - 조회할 페이지번호
+	 */
+	load : function(pageNo) {
+		$('#' + oFormId + ' input[name=pageNo]').val(pageNo);
+		$('#' + oFormId + ' input[name=pageSize]').val(nPageSize);
+		
+		// comma(,) 제거
+		gagajf.removeCommaAtNumberFormattedInput('#' + oFormId);
+		var jsonData = JSON.stringify($('#' + oFormId).serializeObject());
+		
+		$.ajax({
+			type : 'POST',
+			url : $('#' + oFormId).prop('action'),
+			data : jsonData,
+			dataType : 'JSON',
+			beforeSend : function(xhr, settings) {
+				// dataType: "json"일 때
+				xhr.setRequestHeader('Accept', 'application/json');
+				xhr.setRequestHeader('Content-Type', 'application/json');
+				
+				// Button disabled & progressBar creation
+				//gagajf.showProgressbar(true);
+			},
+			complete : function() {
+				// Button abled & progressBar remove
+				//gagajf.showProgressbar(false);
+			},
+			success : function(result) {
+				try {
+					if (!gagajf.isNull(result.error.message)) {
+						mcxDialog.alert(result.error.message);
+						return;
+					}
+				} catch(e) {
+					// Do nothing
+				}
+				
+				if (typeof(oCallbackFn) == 'function') {
+					oCallbackFn.call(this, result);
+				}
+			},
+			error : function(result) {
+				mcxDialog.alert('오류로 인해 처리되지 않았습니다.');
+			}
+		});
+	},
+	
+	generatedPagination : function (pageable) {
+		let pageNo = pageable.pageNo;
+		let pageSize = pageable.pageSize;
+		let pageUnit = pageable.pageUnit;
+		let totalCount = pageable.totalCount;
+		let firstCount = (getPageGroup() - 1) * pageable.pageUnit + 1;
+		let loopCount = firstCount + pageUnit;
+		
+		
+		if (loopCount > getTotalPage()) {
+			loopCount = Number(getTotalPage() + 1);
+		}
+		
+		let pageTag = '';
+		if (!(firstCount == 1 && loopCount == 1)) {
+			
+			if (getPageGroup() == 1) {
+				if (pageNo == 1) {
+					pageTag += '<li class="prev disabled"><a href="#"><span class="sr-only">이전</span></a></li>\n';
+				} else {
+					pageTag += '<li class="prev"><a href="#pageNo='+ (pageNo-1) +'"><span class="sr-only">이전</span></a></li>\n';
+				}
+			} else {
+				pageTag += '<li class="prev"><a href="#pageNo='+ (pageNo-1) +'"><span class="sr-only">이전</span></a></li>\n';
+			}
+			
+			pageTag += '<li class="active">' + pageNo + '</li>\n';
+			pageTag += '<li>/</li>\n';
+			pageTag += '<li>' + getTotalPage() + '</li>\n';
+			
+			if(pageNo == Number(getTotalPage())) {
+				pageTag += '<li class="next disabled"><a href="#pageNo=' + getTotalPage() + '" alt="다음페이지"><span class="sr-only">다음</span></a></li>\n';
+			}else {
+				pageTag += '<li class="next"><a href="#pageNo='+ (pageNo+1) +'" alt="다음페이지"><span class="sr-only">다음</span></a></li>\n';
+			}
+			
+		}
+
+		function getPageGroup() {
+			return parseInt((pageNo-1) / pageUnit + 1 );
+		}
+
+		function getTotalPage() {
+			let totalPage = parseInt(totalCount / pageSize);
+			if (totalCount % pageSize > 0) {
+				totalPage++;
+			}
+			return totalPage;
+		}
+
+		return pageTag;
+	}
+
+}
+

+ 4 - 3
src/main/webapp/ux/style24_link.js

@@ -300,6 +300,7 @@ function cfnAddCart(cartList) {
 									}
 
 									$("header #htopSub .button_wrap .store>span").text(cartCnt);
+									$("#htopMain>.button_wrap>.store>span").text(cartCnt);
 								});
 							}
 						}
@@ -1295,10 +1296,10 @@ var cfnGoToMypageReview = function (ordNo,ordDtlNo,goodsCd) {
 * @access : public
 * @desc   : 상품평- 베스트 리뷰 보기
 * <pre>
-*		cfMypageReviewDetail(goodsCd, photoYn, reviewSq, attachSq);
+*		cfMypageReviewDetail(goodsCd, photoYn, reviewSq, rvAtcSq);
 * </pre>
 */
-function cfMypageReviewDetail(goodsCd, photoYn, reviewSq, attachSq) {
+function cfMypageReviewDetail(goodsCd, photoYn, reviewSq, rvAtcSq) {
 	var str = '<div class="modal fade pd_pop pd_photoreviewdetail_pop" id="layer_review_best" tabindex="-1" role="dialog" aria-labelledby="pdBestReviewLabel" aria-hidden="true"></div>';
 	if ("P" != _frontGb){
 		str = '<div class="modal pop_full fade pd_pop pd_photoreviewdetail_pop" id="layer_review_best" tabindex="-1" role="dialog" aria-labelledby="exampleFullLabel" aria-hidden="true"></div>';
@@ -1311,7 +1312,7 @@ function cfMypageReviewDetail(goodsCd, photoYn, reviewSq, attachSq) {
 	var params = '?goodsCd=' + goodsCd;
 	params += '&reviewSq=' + reviewSq;
 	params += '&photoYn=' + photoYn;
-	if (typeof (attachSq) != 'undefined') params += "&attachSq=" + attachSq;
+	if (typeof (rvAtcSq) != 'undefined') params += "&rvAtcSq=" + rvAtcSq;
 	
 	cfnOpenLayer(_PAGE_MYPAGE_REVIEW_DETAIL_LAYER+params, 'layer_review_best');
 }