Explorar o código

Merge remote-tracking branch 'origin/develop' into jsh77b

tsit14 %!s(int64=5) %!d(string=hai) anos
pai
achega
172f421d34
Modificáronse 24 ficheiros con 218 adicións e 73 borrados
  1. 10 0
      src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java
  2. 27 31
      src/main/java/com/style24/front/biz/service/TsfCounselService.java
  3. 54 1
      src/main/java/com/style24/front/biz/service/TsfGoodsService.java
  4. 1 2
      src/main/java/com/style24/persistence/domain/Goods.java
  5. 3 1
      src/main/java/com/style24/persistence/domain/Poll.java
  6. 1 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfFaq.xml
  7. 23 10
      src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml
  8. 2 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml
  9. 3 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml
  10. 6 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml
  11. 12 3
      src/main/webapp/WEB-INF/views/mob/callcenter/GoodsQnaFormMob.html
  12. 12 3
      src/main/webapp/WEB-INF/views/mob/callcenter/OneToOneQnaFormMob.html
  13. 2 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypagePointFormMob.html
  14. 4 2
      src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html
  15. 1 1
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventAttendFormMob.html
  16. 3 3
      src/main/webapp/WEB-INF/views/mob/planning/PlanningEventPollFormMob.html
  17. 6 0
      src/main/webapp/WEB-INF/views/mob/popup/DelvAddrAddPopMob.html
  18. 12 1
      src/main/webapp/WEB-INF/views/mob/popup/DelvAddrModifyPopMob.html
  19. 12 3
      src/main/webapp/WEB-INF/views/web/callcenter/GoodsQnaFormWeb.html
  20. 11 2
      src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaFormWeb.html
  21. 1 1
      src/main/webapp/WEB-INF/views/web/mypage/MypageCustModifyFormWeb.html
  22. 3 3
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html
  23. 5 0
      src/main/webapp/WEB-INF/views/web/popup/DelvAddrAddPopWeb.html
  24. 4 0
      src/main/webapp/WEB-INF/views/web/popup/DelvAddrModifyPopWeb.html

+ 10 - 0
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -248,6 +248,16 @@ public interface TsfGoodsDao {
 	 */
 	Delivery getGoodsDeliveryInfo(String goodsCd);
 
+	/**
+	 * 상품 다다익선 시퀀스 목록
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @date 2021. 6. 10
+	 */
+	Collection<Tmtb> getTmtbSqList(Goods goods);
+	
 	/**
 	 * 상품 다다익선 목록
 	 *

+ 27 - 31
src/main/java/com/style24/front/biz/service/TsfCounselService.java

@@ -59,41 +59,37 @@ public class TsfCounselService {
 			String[] sysItem = counsel.getSysFileNmArr();
 			
 			for (int i = 0; i < orgItem.length; i++) {
-				String imgInd = String.valueOf(ind);
-				if (ind < 10) {
-					imgInd = "0" + imgInd;
+				if (orgItem[i] != "") {
+					String imgInd = String.valueOf(ind);
+					if (ind < 10) {
+						imgInd = "0" + imgInd;
+					}
+					String planUploadPath = env.getProperty("upload.default.target.path");
+					String yearMonth = GagaDateUtil.getToday().substring(0, 6);
+					planUploadPath = GagaFileUtil.getConcatenationPath(planUploadPath, "/counsel");
+					File newFile = new File(GagaFileUtil.getConcatenationPath(planUploadPath, sysItem[i]));
+					planUploadPath = GagaFileUtil.getConcatenationPath(planUploadPath, yearMonth);
+					String newFilename = "COUNSEL_" + GagaDateUtil.getTodayDateTime() + "_" + imgInd + "." + org.springframework.util.StringUtils.getFilenameExtension(sysItem[i]);
+					File uniqueFile = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(planUploadPath, newFilename)));
+					// Rename a file
+					File path = new File(planUploadPath);
+					if (!path.exists()) {
+						path.mkdir();
+					}
+					newFile.renameTo(uniqueFile);
+					
+					if (i == 0) {
+						counsel.setOrgFileNm1(orgItem[i]);
+						counsel.setSysFileNm1("/counsel/" + yearMonth + "/" + newFilename);
+					}else {
+						counsel.setOrgFileNm2(orgItem[i]);
+						counsel.setSysFileNm2("/counsel/" + yearMonth + "/" + newFilename);
+					}
+					ind++;
 				}
-				String planUploadPath = env.getProperty("upload.default.target.path");
-				String yearMonth = GagaDateUtil.getToday().substring(0, 6);
-				planUploadPath = GagaFileUtil.getConcatenationPath(planUploadPath, "/counsel");
-				File newFile = new File(GagaFileUtil.getConcatenationPath(planUploadPath, sysItem[i]));
-				planUploadPath = GagaFileUtil.getConcatenationPath(planUploadPath, yearMonth);
-				String newFilename = "COUNSEL_" + GagaDateUtil.getTodayDateTime() + "_" + imgInd + "." + org.springframework.util.StringUtils.getFilenameExtension(sysItem[i]);
-				File uniqueFile = GagaFileUtil.getUniqueFile(new File(GagaFileUtil.getConcatenationPath(planUploadPath, newFilename)));
-				// Rename a file
-				File path = new File(planUploadPath);
-				if (!path.exists()) {
-					path.mkdir();
-				}
-				newFile.renameTo(uniqueFile);
-				
-				if (i == 0) {
-					counsel.setOrgFileNm1(orgItem[i]);
-					counsel.setSysFileNm1("/counsel/" + yearMonth + "/" + newFilename);
-				}else {
-					counsel.setOrgFileNm2(orgItem[i]);
-					counsel.setSysFileNm2("/counsel/" + yearMonth + "/" + newFilename);
-				}
-				
-				ind++;
 			}
-			
 			counselDao.updateOneToOneQna(counsel);
 		}
-		
-
-		
-		
 	}
 
 	/**

+ 54 - 1
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -572,7 +572,60 @@ public class TsfGoodsService {
 	 * @date 2021. 3. 8
 	 */
 	public Collection<Goods> getTmtbGoodsList(Goods goods) {
-		return goodsDao.getTmtbGoodsList(goods);
+		
+		Collection<Goods> result = new ArrayList<Goods>();
+			
+		Collection<Tmtb> tmtbSqList = goodsDao.getTmtbSqList(goods);
+		if (tmtbSqList == null || tmtbSqList.isEmpty()) {
+			return result;
+		}
+		log.info("[tmtbSqList]={}",tmtbSqList);
+		log.info("[goods]={}",goods);
+		int rCount = 0;	//다다익선 조회수
+		int tCount = goods.getMaxRownum();	//리턴 잔여수
+		if (tCount == 0) tCount = 20;
+		
+		for (Tmtb tmtb: tmtbSqList) {
+			
+			goods.setTmtbSq(tmtb.getTmtbSq());
+			Collection<Goods> tmtbGoodsList = goodsDao.getTmtbGoodsList(goods);
+			if (tmtbGoodsList == null || tmtbGoodsList.isEmpty()) {
+				continue;
+			}
+			
+			if (tCount <= 0) { //잔여수가 없으면 종료
+				break;
+			}
+			
+			//다다익선 조회 상품 수
+			rCount = tmtbGoodsList.size();
+			
+			if (tCount > rCount) { 	//조회수보다 잔여수가 클경우
+				result.addAll(tmtbGoodsList);
+				tCount = tCount - rCount; //남은 잔여수 계산
+			}else {
+				if (tCount == rCount) {	//잔여 수량과 조회수가 같은면 종료
+					result.addAll(tmtbGoodsList);
+					break;
+				}else {
+					
+					for (int i=0; i<tCount; i++) {  //잔여수량만큼 loop
+						int tmtbGoodsListCnt = 0;
+						for(Goods tmtbGoods: tmtbGoodsList) {
+							if (i == tmtbGoodsListCnt) {
+								result.add(tmtbGoods);
+								tCount --;
+								break;
+							}
+							tmtbGoodsListCnt ++;
+						}
+					}
+				}
+				
+			}
+		}
+		
+		return result;
 	}
 
 	/**

+ 1 - 2
src/main/java/com/style24/persistence/domain/Goods.java

@@ -1,7 +1,5 @@
 package com.style24.persistence.domain;
 
-import java.util.List;
-
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 
@@ -216,6 +214,7 @@ public class Goods extends TscBaseDomain {
 	private String icon;
 	private String benefits;
 	private String videos;			// 동영상들(,로 연결된 문자열. 동영상구분:미디어컨텐츠 또는 유튜브동영상ID, ...)
+	private int tmtbSq;
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] sizeArr;		// 상품사이즈

+ 3 - 1
src/main/java/com/style24/persistence/domain/Poll.java

@@ -67,7 +67,9 @@ public class Poll extends TscBaseDomain{
 	private String voteDt;			// 투표일시
 	
 	private Integer custNo;			//고객번호
-	
+	private String mainPimg;
+	private String mainMimg;
+	private Integer planSq;
 	
 	
 	private String pollQsq_10;

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

@@ -28,6 +28,7 @@
 		WHERE  SITE_CD = #{siteCd}
 		AND    USE_YN = 'Y'
 		ORDER  BY DISP_ORD
+		         ,REG_DT DESC
 		LIMIT 10
 	</select>
 	

+ 23 - 10
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -819,6 +819,19 @@
 		LIMIT 1
 	</select>
 	
+	<!-- 상품 다다익선 시퀀스 목록 -->
+	<select id="getTmtbSqList" parameterType="Goods" resultType="Tmtb">
+		/* TsfGoods.getTmtbSqList */
+		SELECT A.TMTB_SQ
+		FROM TB_TMTB_APPLY_GOODS A
+		LEFT JOIN TB_TMTB_APPLY_GOODS B ON A.GOODS_CD = B.GOODS_CD
+		                                AND B.DEL_YN = 'N' AND B.GOODS_GB = 'G800_30' -- 제외상품
+		                                AND B.GOODS_CD =  #{goodsCd}
+		WHERE A.GOODS_CD = #{goodsCd}  AND A.DEL_YN = 'N' AND A.GOODS_GB IN ( 'G800_10', 'G800_20')  -- 기본과 적용상품
+		AND B.TMTB_SQ IS NULL
+		ORDER BY A.TMTB_SQ DESC -- 최근 다다익선
+	</select>	
+	
 	<!-- 상품 다다익선 목록 -->
 	<select id="getTmtbGoodsList" parameterType="Goods" resultType="Goods">
 		/* TsfGoods.getTmtbGoodsList */
@@ -868,17 +881,17 @@
 		                                 AND GS.STOCK_QTY > 0
 		    WHERE NOW() BETWEEN A.TMTB_ST_DT AND A.TMTB_ED_DT
 		    AND A.TMTB_STAT ='G232_11'
-		    <if test="arrTmtbSq != null and arrTmtbSq.length > 0">
+		    <choose>
+		    <when test="arrTmtbSq != null and arrTmtbSq.length > 0">
 		    AND A.TMTB_SQ IN
-				<foreach collection="arrTmtbSq" item="item" index="index"  open="(" close=")" separator=",">
-			#{item}
-				</foreach>
-			</if>
-		     <![CDATA[
-		    AND A.TMTB_SQ IN (SELECT TMTB_SQ FROM TB_TMTB_APPLY_GOODS WHERE GOODS_CD = #{goodsCd} AND DEL_YN = 'N' AND GOODS_GB IN ( 'G800_10', 'G800_20')) -- 기본과 적용상품
-		    AND A.TMTB_SQ NOT IN (SELECT TMTB_SQ FROM TB_TMTB_APPLY_GOODS WHERE GOODS_CD = #{goodsCd} AND DEL_YN = 'N' AND GOODS_GB = 'G800_30') -- 제외상품
-		     ]]>
-		    -- ORDER BY A.TMTB_SQ DESC
+		         <foreach collection="arrTmtbSq" item="item" index="index"  open="(" close=")" separator=",">
+		    #{item}
+		         </foreach>
+		    </when>
+		    <otherwise>
+		    AND A.TMTB_SQ = #{tmtbSq}
+		    </otherwise>
+		    </choose>
 		    ) Z
 		WHERE RNUM <![CDATA[<= ]]>#{maxRownum}
 		)

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

@@ -1255,6 +1255,8 @@
 		      ,TP.FST_COM_YN 
 		      ,TP.PARTI_CNT 
 		      ,TP.POLL_CONTENT 
+		      ,P.MAIN_PIMG
+		      ,P.MAIN_MIMG
 		FROM TB_PLAN P INNER JOIN TB_POLL TP ON P.POLL_SQ = TP.POLL_SQ 
 		WHERE 1=1
 		  AND P.PLAN_SQ = #{planSq}

+ 3 - 3
src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml

@@ -114,7 +114,7 @@
 		                  WHEN 'G069_13' THEN G.GOODS_NM
 		                 END                                          AS  OCCUR_DTL_DESC
 		           , SUM(CPH.PNT_AMT)
-		           , CPH.UPD_DT AS PNT_UPLOAD_DT
+		           , DATE_FORMAT(CPH.UPD_DT, '%Y.%m.%d %H:%i:%S') AS PNT_UPLOAD_DT
 		      FROM TB_CUST_POINT_HST CPH
 		      LEFT JOIN TB_ORDER_DETAIL OD
 		      ON  CPH.ORD_NO = OD.ORD_NO
@@ -210,7 +210,7 @@
 		                  WHEN 'G069_13' THEN G.GOODS_NM
 		                 END                                          AS  OCCUR_DTL_DESC
 		           , SUM(CPH.PNT_AMT)
-		           , CPH.UPD_DT AS PNT_UPLOAD_DT
+		           , DATE_FORMAT(CPH.UPD_DT, '%Y.%m.%d %H:%i:%S') AS PNT_UPLOAD_DT
 		      FROM TB_CUST_POINT_HST CPH
 		      LEFT JOIN TB_ORDER_DETAIL OD
 		      ON  CPH.ORD_NO = OD.ORD_NO
@@ -305,7 +305,7 @@
 		                  WHEN 'G069_13' THEN G.GOODS_NM
 		                 END                                          AS  OCCUR_DTL_DESC
 		           , SUM(CPH.PNT_AMT)
-		           , CPH.UPD_DT AS PNT_UPLOAD_DT
+		           , DATE_FORMAT(CPH.UPD_DT, '%Y.%m.%d %H:%i:%S') AS PNT_UPLOAD_DT
 		      FROM TB_CUST_POINT_HST CPH
 		      LEFT JOIN TB_ORDER_DETAIL OD
 		      ON  CPH.ORD_NO = OD.ORD_NO

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

@@ -422,7 +422,7 @@
 				    ON B.BRAND_CD = G.BRAND_CD
 				 INNER JOIN TB_BRAND_GROUP BG
 		            ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
-				LEFT OUTER JOIN TB_COLOR C ON ODI.OPT_CD1 = C.COLOR_CD
+				 LEFT OUTER JOIN TB_COLOR C ON ODI.OPT_CD1 = C.COLOR_CD
 		                                   AND C.USE_YN = 'Y'
 				  WHERE 1=1
 				-- AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
@@ -937,6 +937,7 @@
 		     , Z.ADM_RPL
 		     , Z.ADM_RPL_REG_NO
 		     , Z.ADM_RPL_DT
+		     , Z.SIZE_GB
 		     , ROW_NUMBER() OVER(ORDER BY Z.ORD_DT DESC) AS RNUM
 		       FROM (    
 		             SELECT O.ORD_NO
@@ -1001,6 +1002,7 @@
 		                   , DATE_FORMAT(R.UPD_DT , '%Y.%m.%d') AS UPD_DT
 		                   , R.ADM_RPL
 		                   , R.ADM_RPL_REG_NO
+		                   , I.SIZE_GB
 		                   , DATE_FORMAT(R.ADM_RPL_DT , '%Y.%m.%d') AS ADM_RPL_DT
 		                   , DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL   365 /**P*/ DAY),NOW()) AS REMAIN_DT -- 남은시간
 		    FROM TB_ORDER O
@@ -1017,6 +1019,8 @@
 		    INNER JOIN TB_BRAND_GROUP BG
 		      ON B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
 		   INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
+		   LEFT JOIN TB_ITEMKIND I 
+				    ON G.ITEMKIND_CD = I.ITEMKIND_CD 
 		  	AND R.ORD_NO = O.ORD_NO
 		  	AND R.ORD_DTL_NO = OD.ORD_DTL_NO 
 		  	AND R.DEL_YN = 'N'
@@ -1067,6 +1071,7 @@
 		            , Z.ADM_RPL
 		            , Z.ADM_RPL_REG_NO
 		            , Z.ADM_RPL_DT
+		            , Z.SIZE_GB
 		ORDER BY Z.ORD_NO DESC
 		<include refid="selectForPagingFooter"/>
 		</select>

+ 12 - 3
src/main/webapp/WEB-INF/views/mob/callcenter/GoodsQnaFormMob.html

@@ -87,6 +87,15 @@
 		gagajf.ajaxFormSubmit($('#qnaForm').prop('action'), '#qnaForm', fnGetListCallback);
 	});
 	
+    var fnReplaceBr = function(obj){
+        let tag = '';
+        if(!gagajf.isNull(obj)){
+            var brText = obj;
+            tag = brText.replace(/(&lt;br\/&gt;)/g, '<br>');
+        }
+        return tag;
+    }
+    
 	// QNA 콜백함수
 	var fnGetListCallback = function(result) {
 		// 목록
@@ -101,7 +110,7 @@
 				tag += '						<span class="fold_state ' + (item.ansStat == "G060_10" ? "doing" : "done") + '"">' + item.ansStatNm + '</span>\n'; //답변완료 : done / 처리중 : doing
 				tag += '						<span class="prod">' + item.goodsNm + ' ' + item.relGoodsCd + '</span>\n';
 				tag += '					</div>\n';
-				tag += '					<div class="lap2"><span>' + item.questContent.escapeHtml() + '</span></div>\n';
+				tag += '					<div class="lap2"><span>' + fnReplaceBr(item.questContent.escapeHtml()) + '</span></div>\n';
 				tag += '				</div>\n';
 				tag += '				<span class="data">' + item.questDt + '</span>\n';
 				tag += '			</div>\n';
@@ -110,14 +119,14 @@
 				tag += '	<div class="fold_cont">\n';
 				tag += '		<div class="fold_detail">\n';
 				tag += '			<div>\n';
-				tag += '				<p>' + item.questContent.escapeHtml() + '</p>\n';
+				tag += '				<p>' + fnReplaceBr(item.questContent.escapeHtml()) + '</p>\n';
 				tag += '			</div>\n';
 				tag += '		</div>\n';
 				
 				if (item.ansStat == 'G060_20') { // 답변완료일 때
 					tag += '		<div class="fold_answer">\n';
 					tag += '			<div>\n';
-					tag += '				<div class="answer_body">' + item.ansContent + '</div>\n';
+					tag += '				<div class="answer_body">' + fnReplaceBr(item.ansContent.escapeHtml()) + '</div>\n';
 					tag += '				<div class="answer_foot">\n';
 					tag += '					<span class="data">' + item.ansDt + '</span>\n';
 					tag += '					<button type="button" class="btn_delete" onclick="fnDeleteQna(' + item.counselSq + ');"><span>삭제</span></button>\n';

+ 12 - 3
src/main/webapp/WEB-INF/views/mob/callcenter/OneToOneQnaFormMob.html

@@ -291,6 +291,15 @@
 		gagajf.ajaxFormSubmit($('#qnaForm').prop('action'), '#qnaForm', fnGetListCallback);
 	});
 	
+	var fnReplaceBr = function(obj){
+        let tag = '';
+        if(!gagajf.isNull(obj)){
+            var brText = obj;
+            tag = brText.replace(/(&lt;br\/&gt;)/g, '<br>');
+        }
+        return tag;
+    }
+	
 	// QNA 콜백함수
 	var fnGetListCallback = function(result) {
 		// 목록
@@ -305,7 +314,7 @@
 				tag += '						<span class="fold_state ' + (item.ansStat == "G060_10" ? "doing" : "done") + '">' + item.ansStatNm + '</span>\n'; //답변완료 : done / 처리중 : doing
 				tag += '						<span class="prod">' + item.counselClsfNm + '</span>\n';
 				tag += '					</div>\n';
-				tag += '					<div class="lap2"><span>' + item.questTitle + '</span></div>\n';
+				tag += '					<div class="lap2"><span>' + item.questTitle.escapeHtml() + '</span></div>\n';
 				tag += '				</div>\n';
 				tag += '				<span class="data">' + item.questDt + '</span>\n';
 				tag += '			</div>\n';
@@ -313,7 +322,7 @@
 				tag += '	</div>\n';
 				tag += '	<div class="fold_cont">\n';
 				tag += '		<div class="fold_detail">\n';
-				tag += '			<div><p>' + item.questContent + '</p></div>\n';
+				tag += '			<div><p>' + fnReplaceBr(item.questContent.escapeHtml()) + '</p></div>\n';
 				
 				if (!gagajf.isNull(item.sysFileNm1) || !gagajf.isNull(item.sysFileNm2)) {
 					tag += '		<p class="img_group">\n';
@@ -340,7 +349,7 @@
 				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 					tag += '	<div class="fold_answer">\n';
 					tag += '		<div>\n';
-					tag += '			<div class="answer_body">' + item.ansContent.escapeHtml() + '</div>\n';
+					tag += '			<div class="answer_body">' + fnReplaceBr(item.ansContent.escapeHtml()) + '</div>\n';
 					tag += '			<div class="answer_foot">\n';
 					tag += '				<span class="data">' + item.ansDt + '</span>\n';
 					

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

@@ -142,8 +142,8 @@ var fnGetPointTableInfo = function(param) {
 	$("#pointAjaxList").html('');
 	let tag = "";
 	if(param != null && param.length > 0){
+		tag += '<ul>';
 		$.each(param, function(idx,item){
-			tag += '<ul>';
 			tag += ' <li>';
 			tag += ' 	<div>';
 			if(item.pntAmt > 0){
@@ -168,8 +168,8 @@ var fnGetPointTableInfo = function(param) {
 			}
 			tag += ' 	</div>';
 			tag += ' </li>';
-			tag += '</ul>';
 		});
+		tag += '</ul>';
 		$("#pointAjaxList").html(tag);
 	}else{
 		$('.nodata').show();

+ 4 - 2
src/main/webapp/WEB-INF/views/mob/mypage/MypageReviewFormMob.html

@@ -44,8 +44,8 @@
 				<div class="inner wide">
 					<div class="tabWrap">
 						<ul class="tabIndex">
-							<li id="completeReview"><a href="javascript:void(0);">작성 가능한 리뷰<span class="count" th:text="${#numbers.formatInteger(completeReviewCount,0,'COMMA')}"></span></a></li>
-							<li id="alreadyReview"><a href="javascript:void(0);" >내가 쓴 리뷰<span class="count" th:text="${#numbers.formatInteger(alreadyReviewCount,0,'COMMA')}" ></span></a></li>
+							<li id="completeReview"><a href="javascript:void(0);">작성 가능한 리뷰<span class="count" id="comReview" th:text="${#numbers.formatInteger(completeReviewCount,0,'COMMA')}"></span></a></li>
+							<li id="alreadyReview"><a href="javascript:void(0);" >내가 쓴 리뷰<span class="count" id="alrReview" th:text="${#numbers.formatInteger(alreadyReviewCount,0,'COMMA')}" ></span></a></li>
 						</ul>
 						<div class="tabContents">
 							<div class="tab_cont active">
@@ -268,6 +268,7 @@
 				}
 				
 			}else{
+				$('#alreadyList').html('');
 				var html = '';
 				html += '<div class="nodata" id="nodata1">\n';
 				html += '	<div class="txt_box">\n';
@@ -333,6 +334,7 @@
 				$('#btnMoreDiv').hide();
 			}
 		}else{
+			$('#completeList').html('');
 			var html = '';
 			html += '<div class="nodata" id="nodata1">\n';
 			html += '	<div class="txt_box">\n';

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

@@ -283,8 +283,8 @@ var appendHtml = function () {
 		html += '</tr>\n';
 
 		$("#monthTbody").append(html);
+		$('.day').html('<span>' + custAttendList.length + '</span>일');
 		if (cfCheckLogin()) {
-			$('.day').html('<span>' + custAttendList.length + '</span>일');
 			$.each(custAttendList, function(idx1, item1) {
 				if(item1.entryDt == item.sun || item1.entryDt == item.mon || item1.entryDt == item.tue|| item1.entryDt == item.wed
 						|| item1.entryDt == item.thu || item1.entryDt == item.fri || item1.entryDt == item.sat){

+ 3 - 3
src/main/webapp/WEB-INF/views/mob/planning/PlanningEventPollFormMob.html

@@ -213,15 +213,15 @@
 							th:with="stylelUrl=${@environment.getProperty('domain.front')},  planView=${@environment.getProperty('upload.image.view')}">
 							<span>
 								<button type="button" id="kakao-link-btn" class="kk"
-									th:attr="onclick=|cfnSendToKakaoMob('${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '${planView+ '/'+planInfo.mainMimg}');|">
+									th:attr="onclick=|cfnSendToKakaoMob('${stylelUrl+'/planning/detail/form?planSq='+pollInfo.planSq}', '${pollInfo.planNm}', '${planView+ '/'+pollInfo.mainMimg}');|">
 									<span>카카오톡</span>
 								</button>
 								<button type="button" class="fb"
-									th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}', '${planInfo.planNm}', '', '');|">
+									th:attr="onclick=|sendSns('facebook', '${stylelUrl+'/planning/detail/form?planSq='+pollInfo.planSq}', '${pollInfo.planNm}', '', '');|">
 									<span>페이스북</span>
 								</button>
 								<button type="button" class="tw"
-									th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+planInfo.planSq}',  '${planInfo.planNm+ '#style24몰'}', '', '');|">
+									th:attr="onclick=|sendSns('twitter', '${stylelUrl+'/planning/detail/form?planSq='+pollInfo.planSq}',  '${pollInfo.planNm+ '#style24몰'}', '', '');|">
 									<span>트위터</span>
 								</button>
 								<button type="button" class="url btn_copy">

+ 6 - 0
src/main/webapp/WEB-INF/views/mob/popup/DelvAddrAddPopMob.html

@@ -235,6 +235,12 @@ var deliveryAddFormCheck = function() {
 		$('#deliveryAddForm input[name=recipPhnno]').focus();
 		return false;
 	}
+
+	if ($("#deliveryAddForm input[name=recipPhnno]").val().length < 10) {
+		mcxDialog.alert("휴대폰번호를 정확히 입력해주세요.");
+		$('#deliveryAddForm input[name=recipPhnno]').focus();
+		return false;
+	}
 	
 	if (gagajf.isNull($("#deliveryAddForm input[name=recipZipcode]").val())) {
 		mcxDialog.alert("배송주소를 입력해주세요.");

+ 12 - 1
src/main/webapp/WEB-INF/views/mob/popup/DelvAddrModifyPopMob.html

@@ -258,7 +258,18 @@ var deliveryModifyFormCheck = function() {
 		$('#deliveryModifyForm input[name=custNm]').focus();
 		return false;
 	}
-	
+	if (gagajf.isNull($("#deliveryModifyForm input[name=recipPhnno]").val())) {
+		mcxDialog.alert("휴대폰번호를 입력해주세요.");
+		$('#deliveryAddForm input[name=recipPhnno]').focus();
+		return false;
+	}
+
+	if ($("#deliveryModifyForm input[name=recipPhnno]").val().length < 10) {
+		mcxDialog.alert("휴대폰번호를 정확히 입력해주세요.");
+		$('#deliveryAddForm input[name=recipPhnno]').focus();
+		return false;
+	}
+
 	if (gagajf.isNull($("#deliveryModifyForm input[name=recipZipcode]").val())) {
 		mcxDialog.alert("배송주소를 입력해주세요.");
 		$('#deliveryModifyForm input[name=recipAddr]').focus();

+ 12 - 3
src/main/webapp/WEB-INF/views/web/callcenter/GoodsQnaFormWeb.html

@@ -107,6 +107,15 @@
 		gagaPaging.load(1);
 	}
 	
+	var fnReplaceBr = function(obj){
+        let tag = '';
+        if(!gagajf.isNull(obj)){
+            var brText = obj;
+            tag = brText.replace(/(&lt;br\/&gt;)/g, '<br>');
+        }
+        return tag;
+    }
+	
 	var fnGetListCallback = function(result) {
 		$('#ulQna').html('');
 
@@ -120,7 +129,7 @@
 				tag += '				<span class="fold_state ' + (item.ansStat == "G060_10" ? "doing" : "done") + '">' + item.ansStatNm + '</span>\n'; //답변완료 : done / 처리중 : doing
 				tag += '				<div class="fold_tit">\n';
 				tag += '					<span class="prod">' + item.goodsNm + ' ' + item.relGoodsCd + '</span>\n';
-				tag += '					<span>' + item.questContent.escapeHtml() + '</span>\n';
+				tag += '					<span>' + fnReplaceBr(item.questContent.escapeHtml()) + '</span>\n';
 				tag += '				</div>\n';
 				tag += '				<span class="data">' + item.questDt + '</span>\n';
 				tag += '			</div>\n';
@@ -129,7 +138,7 @@
 				tag += '	<div class="fold_cont" style="display: none;">\n';
 				tag += '		<div class="fold_detail">\n'; //문의 내용
 				tag += '			<div>\n';
-				tag += '				<p>' + item.questContent.escapeHtml() + '</p>\n';
+				tag += '				<p>' + fnReplaceBr(item.questContent.escapeHtml()) + '</p>\n';
 				tag += '			</div>\n';
 				
 				if (item.ansStat == 'G060_20') { // 답변완료일 때
@@ -141,7 +150,7 @@
 				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 					tag += '		<div class="fold_answer">\n'; //문의 답변
 					tag += '			<div class="answer_head">답변이 등록되었습니다.</div>\n';
-					tag += '			<div class="answer_body">' + item.ansContent + '</div>\n';
+					tag += '			<div class="answer_body">' + fnReplaceBr(item.ansContent.escapeHtml()) + '</div>\n';
 					tag += '			<span class="data">' + item.ansDt + '</span>\n';
 					tag += '		</div>\n';
 				}

+ 11 - 2
src/main/webapp/WEB-INF/views/web/callcenter/OneToOneQnaFormWeb.html

@@ -170,6 +170,15 @@
 		gagaPaging.load(1);
 	}
 	
+	var fnReplaceBr = function(obj){
+        let tag = '';
+        if(!gagajf.isNull(obj)){
+            var brText = obj;
+            tag = brText.replace(/(&lt;br\/&gt;)/g, '<br>');
+        }
+        return tag;
+    }
+	
 	var fnGetListCallback = function(result) {
 		$('#ulQna').html('');
 
@@ -192,7 +201,7 @@
 				tag += '	<div class="fold_cont" style="display: none;">\n';
 				tag += '		<div class="fold_detail">\n'; //문의 내용
 				tag += '			<div>\n';
-				tag += '				<p>' + item.questContent + '</p>\n';
+				tag += '				<p>' + fnReplaceBr(item.questContent.escapeHtml()) + '</p>\n';
 				
 				if (!gagajf.isNull(item.sysFileNm1) || !gagajf.isNull(item.sysFileNm2)) {
 					tag += '				<p class="img_group">\n';
@@ -223,7 +232,7 @@
 				if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
 					tag += '		<div class="fold_answer">\n'; //문의 답변
 					tag += '			<div class="answer_head">답변이 등록되었습니다.</div>\n';
-					tag += '			<div class="answer_body">' + item.ansContent.escapeHtml() + '</div>\n';
+					tag += '			<div class="answer_body">' + fnReplaceBr(item.ansContent.escapeHtml()) + '</div>\n';
 					tag += '			<span class="data">' + item.ansDt + '</span>\n';
 					tag += '		</div>\n';
 				}

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

@@ -157,7 +157,7 @@
 															<div class="select">선택</div>
 															<ul class="list">
 																<li id="bankCd_" class="selected">
-																	<div text="선택"></div>
+																	<div>선택</div>
 																	<input type="hidden" name="bankCd" value=""/>
 																</li>
 																<th:block th:if="${bankList}" th:each="oneData, status : ${bankList}">

+ 3 - 3
src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html

@@ -314,8 +314,8 @@ var appendHtml = function () {
 
 		$("#monthTbody").append(html);
 		if (cfCheckLogin()) {
+			$('.day').html('<span>' + custAttendList.length + '</span>일');
 			$.each(custAttendList, function(idx1, item1) {
-				$('.day').html('<span>' + custAttendList.length + '</span>일');
 				if(item1.entryDt == item.sun || item1.entryDt == item.mon || item1.entryDt == item.tue|| item1.entryDt == item.wed
 						|| item1.entryDt == item.thu || item1.entryDt == item.fri || item1.entryDt == item.sat){
 					$("#td_"+item1.entryDt).attr("class","complete");
@@ -342,7 +342,7 @@ var fnInfoConfirmCallBack = function(result) {
 	mcxDialog.alert(result.msg);
 	appendHtml();
 	$("#td_"+date).attr("class","complete");
-	$('.day').html('<span>' + (custAttendList.length +1) + '</span>일');
+	$('.day').html('<span>' + result.custAttendList.length + '</span>일');
 	
 };
 
@@ -359,7 +359,7 @@ $(document).ready(function() {
 	if (!cfCheckLogin()) {
 		$(".day").html("<span>0</span>일");
 	}else{
-		$('.day').html('<span>' + (custAttendList.length + 1) + '</span>일');
+		$('.day').html('<span>' + custAttendList.length + '</span>일');
 		$("#td_"+date).attr("class","today");
 		$.each(custAttendList, function(idx, item) {
 			if(item.entryDt == date){

+ 5 - 0
src/main/webapp/WEB-INF/views/web/popup/DelvAddrAddPopWeb.html

@@ -107,6 +107,11 @@ $(document).ready( function() {
 			}
 		});
 	});
+
+	$(document).on('click','#adrsAddPop .close-modal',function(e){
+		$('#adrsAddPop .modal-dialog .modal-content').html('');
+	});
+
 });
 
 // 배송지등록버튼

+ 4 - 0
src/main/webapp/WEB-INF/views/web/popup/DelvAddrModifyPopWeb.html

@@ -138,6 +138,10 @@ $(document).ready( function() {
 			}
 		});
 	});
+
+	$(document).on('click','#adrsModifyPop .close-modal',function(e){
+		$('#adrsModifyPop .modal-dialog .modal-content').html('');
+	});
 });
 
 // 배송지등록버튼