itn 2023-10-11
문자 재전송 기능 작업중
@3f323ca9f5aaee0d2d131d832e59a7e79380e072
src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java
--- src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java
+++ src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataVO.java
@@ -70,7 +70,14 @@
 	private String msgResendAllFlag;
 	private String msgResendAllGroupId;
 	private String msgResendAllAdvertiseYn;		
-
+	private String atchFiles;
+	
+	public String getAtchFiles() {
+		return atchFiles;
+	}
+	public void setAtchFiles(String atchFiles) {
+		this.atchFiles = atchFiles;
+	}
 	public String getMsgGroupId() {
 		return msgGroupId;
 	}
src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
--- src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
+++ src/main/java/itn/let/mjo/msgdata/web/MjonMsgDataController.java
@@ -5881,6 +5881,7 @@
 		
 		boolean isSuccess = true;
 		String msg = "";
+		List<?> resultMsgAddPhotoInfo = null;
 		
 		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
     	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
@@ -5894,6 +5895,21 @@
         		mjonMsgDataVO.setUserId(userId);
         		mjonMsgDataVO.setMsgGroupId(mjonMsgDataVO.getMsgResendAllGroupId());
         		mjonMsgDataVO = mjonMsgDataService.selectMjMsgGroupInfoByResend(mjonMsgDataVO);
+        		if (mjonMsgDataVO != null) {
+        			String[] atchFiles = mjonMsgDataVO.getAtchFiles().split("\\^");
+        			if (atchFiles.length >= 1) {
+        				mjonMsgDataVO.setAtchFileId1(atchFiles[0]);
+        			}
+        			if (atchFiles.length >= 2) {
+        				mjonMsgDataVO.setAtchFileId2(atchFiles[1]);
+        			}
+        			if (atchFiles.length >= 3) {
+        				mjonMsgDataVO.setAtchFileId3(atchFiles[2]);
+        			}
+        		}
+        		
+				//문자함 리스트의 첨부이미지 정보 불러오기
+				resultMsgAddPhotoInfo = mjonMsgDataService.selectMsgAddPhotoInfo(mjonMsgDataVO);        		
         	}
 		}
 		catch(Exception e) {
@@ -5903,7 +5919,8 @@
 			
 		modelAndView.addObject("isSuccess", isSuccess);
 		modelAndView.addObject("msg", msg);
-		modelAndView.addObject("result", mjonMsgDataVO);
+		modelAndView.addObject("resultMsgInfo", mjonMsgDataVO);
+		modelAndView.addObject("resultMsgAddPhotoInfo", resultMsgAddPhotoInfo);
 
 		return modelAndView;
 	}
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
@@ -7255,37 +7255,42 @@
 			CALL_FROM AS callFrom
 			, SUBJECT AS subject
 			, SMS_TXT AS smsTxt
-			, (
-				SELECT 
-					IFNULL(FILE_PATH1, '')
-				FROM MJ_MSG_DATA 
+ 			,(
+				SELECT
+					CONCAT(
+					(
+					  	IF(B.FILE_PATH1 IS NOT NULL, (SELECT
+	 	 	 	 			ATCH_FILE_ID
+	 	 	 	 		FROM LETTNFILEDETAIL 
+	 	 	 	 		WHERE CONCAT(STRE_FILE_NM, '.', FILE_EXTSN) = CONCAT(SUBSTRING_INDEX(B.FILE_PATH1, '/', -1))
+	 	 	 	 		LIMIT 1), '')
+	 	 	 	 	)
+	 	 	 	 	,'^',
+					(
+					  	IF(B.FILE_PATH2 IS NOT NULL, (SELECT
+	 	 	 	 			ATCH_FILE_ID
+	 	 	 	 		FROM LETTNFILEDETAIL 
+	 	 	 	 		WHERE CONCAT(STRE_FILE_NM, '.', FILE_EXTSN) = CONCAT(SUBSTRING_INDEX(B.FILE_PATH2, '/', -1))
+	 	 	 	 		LIMIT 1), '')
+	 	 	 	 	)
+	 	 	 	 	,'^',
+					(
+					  	IF(B.FILE_PATH3 IS NOT NULL, (SELECT
+	 	 	 	 			ATCH_FILE_ID
+	 	 	 	 		FROM LETTNFILEDETAIL 
+	 	 	 	 		WHERE CONCAT(STRE_FILE_NM, '.', FILE_EXTSN) = CONCAT(SUBSTRING_INDEX(B.FILE_PATH3, '/', -1))
+	 	 	 	 		LIMIT 1), '')
+	 	 	 	 	))	 	 	 		 	 	 	 	
+				FROM
+					MJ_MSG_DATA B
 				WHERE 
-					USER_ID = #userId#
-					AND MSG_GROUP_ID = #msgGroupId#
-				LIMIT 1	
-			) filePath1
-			, (
-				SELECT 
-					IFNULL(FILE_PATH2, '')
-				FROM MJ_MSG_DATA 
-				WHERE 
-					USER_ID = #userId#
-					AND MSG_GROUP_ID = #msgGroupId#
-				LIMIT 1	
-			) filePath2
-			, (
-				SELECT 
-					IFNULL(FILE_PATH3, '')
-				FROM MJ_MSG_DATA 
-				WHERE 
-					USER_ID = #userId#
-					AND MSG_GROUP_ID = #msgGroupId#
-				LIMIT 1	
-			) filePath3	
-		FROM MJ_MSG_GROUP_DATA 
+					B.MSG_GROUP_ID = A.MSG_GROUP_ID
+					LIMIT 1
+			) AS atchFiles	
+		FROM MJ_MSG_GROUP_DATA A
 		WHERE 
-			USER_ID = #userId#
-			AND MSG_GROUP_ID = #msgGroupId#
+			A.USER_ID = #userId#
+			AND A.MSG_GROUP_ID = #msgGroupId#
 		LIMIT 1
 	</select>
 
src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataView.jsp
@@ -66,39 +66,83 @@
 		dataType:'json',
 		async: false,
 		success: function (data) {
+			//alert(JSON.stringify(data));
 			if(data.isSuccess == true){
-				//data.result.callFrom;
-				//data.result.subject;
-				//data.result.smsTxt;
-				//data.result.filePath1;
-				//data.result.filePath2;
-				//data.result.filePath3;
-
+				var msgData = data.resultMsgInfo;
+				var fileData = data.resultMsgAddPhotoInfo;
+				
 				// 발신번호
 				var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val()));
-				if ($.trim(removeDash(data.result.callFrom)) != reCallFrom) {
+				if ($.trim(removeDash(msgData.callFrom)) != reCallFrom) {
 					alert("선택된 발신번호가 이전에 발송한 발신번호가 아닙니다.\n발신번호를 확인해주세요.")
 				}
 				
-				/*
-				// 제목
-				if (data.result.subject != null && data.result.subject != "") {
+				var smsTxt = msgData.smsTxt;
+				var subject = msgData.subject;
+				var fileId = "";
+				var filePath = "";
+				var len = fileData.length;
+				
+				// 기존 내용 지워주기
+				//$(".btnReset").trigger("click");
+				$('.delLi').each(function(){
+					$(this).remove();
+				});
+				
+				$('.preBoxF').each(function(){
+					$(this).remove();
+				});
+
+				$('#imgCnt').val(0);
+				
+				// 기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기
+				imgFilePath = [];
+				imgFileId = [];
+
+				// 문자제목
+				if (msgData.subject != null && msgData.subject != "") {
 					$('.msg_title').addClass('active');
 					$("input:radio[name='title_status']:radio[value='Y']").prop('checked', true); // 선택하기
 					$('.textbox').show();
-					$("#mmsSubject").val(data.result.subject);	
+					$("#mmsSubject").val(subject);	
 				}
 				
-				var reSmsTxt = data.result.smsTxt.replaceAll("<br/>", "\n");	//줄발꿈문자 변환하기
 				// 문자내용
-				if(reSmsTxt != null){
-					$("#smsTxtArea").val(reSmsTxt);
-					fnByteString(reSmsTxt);
+				// 선거 기본정보 제거
+				smsTxt = $.trim(smsTxt.replace("(선거운동정보)", ""));
+				var smsTxtLastIdxCnt = smsTxt.lastIndexOf("후보자전화번호");
+				if (smsTxtLastIdxCnt != -1) {
+					smsTxt = $.trim(smsTxt.substring(0, smsTxtLastIdxCnt));	
 				}
-				*/
+				$('#smsTxtArea').val(smsTxt);
+				
+				// 첨부 이미지가 있는경우 이미지 처리해주기
+				if(len > 0) {
+					for(var i=0; i < len; i++) {
+						var num = i + 1;
+						var imgId = fileData[i].atchFileId;
+						var imgSn = fileData[i].fileSn;
+						var fileStreCours = fileData[i].fileStreCours;
+						var streFileNm = fileData[i].streFileNm;
+						var fileExtsn = fileData[i].fileExtsn;
+						
+						/* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */
+						var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn;
+						myMsgImageControl(imgSrc, "edit_n", "Template", imgId);
+					}
+					
+					fnByteString(smsTxt);
+				}
+				else {
+					fnByteString(smsTxt);
+				}
+				
+				// 문자전송 상단으로 이동
+				var sendOfT=$('.send_top').offset().top;
+				$('html,body').stop().animate({'scrollTop':sendOfT-60},250);		
 				
 			} else {
-				alert("Message : " + msg);
+				//alert("Message : " + msg);
 			}
 		},
 		error: function (e) { 
src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp
@@ -511,44 +511,7 @@
 		
 	});
 	
-	function advMsgInsert(){
-		
-		var advStr = '<div class="ad_txt"><p>(광고)</p></div>';
-		var advDenyStr = '<div class="deny_txt"><p>무료거부 0808800858</p> </div>';
-		
-		var preAdvStr = '<p class="ad_tit">(광고)</p>';
-		var preAdvDenyStr = '<p class="deny_receipt">무료거부 0808800858</p>';
-		
-		//광고 및 무료수신거부 텍스트 추가
-		if ($('input[name=send_adYn]:checked').val() == 'Y'){
-			
-			//문자 내용에 광고 문자 추가해주기
-			$(advStr).insertBefore('textarea[name=smsTxtArea]'); 
-			$(advDenyStr).insertBefore('div[name=afterDeny]');
-			
-			//미리보기에 광고 문자 추가해주기
-			$(preAdvStr).insertBefore('.none_txt');
-			$(preAdvDenyStr).insertAfter('.realtime');
-			
-			//$('#smsTxtArea').val(advStr + "\r\n" + contents + "\r\n" + advDenyStr);
-			
-			
-		}else{ //광고 및 무료수신거부 텍스트 삭제
-			
-			//문자내용 광고문자 삭제하기
-			$('.ad_txt').remove();
-			$('.deny_txt').remove();
-			
-			//미리보기 광고 문자 삭제하기
-			$('.ad_tit').remove();
-			$('.deny_receipt').remove();
-			
-		}
-		
-		//문자 바이트수 계산하기
-		fnByteString($('#smsTxtArea').val());
-		
-	}
+
 	
 	
 	//문자 내용 입력시 바이트수 계산하기
@@ -1954,7 +1917,46 @@
 		$('.send_btn .btnType:first-child').html('예약하기');
 	});
 });
+
+function advMsgInsert(){
 	
+	var advStr = '<div class="ad_txt"><p>(광고)</p></div>';
+	var advDenyStr = '<div class="deny_txt"><p>무료거부 0808800858</p> </div>';
+	
+	var preAdvStr = '<p class="ad_tit">(광고)</p>';
+	var preAdvDenyStr = '<p class="deny_receipt">무료거부 0808800858</p>';
+	
+	//광고 및 무료수신거부 텍스트 추가
+	if ($('input[name=send_adYn]:checked').val() == 'Y'){
+		
+		//문자 내용에 광고 문자 추가해주기
+		$(advStr).insertBefore('textarea[name=smsTxtArea]'); 
+		$(advDenyStr).insertBefore('div[name=afterDeny]');
+		
+		//미리보기에 광고 문자 추가해주기
+		$(preAdvStr).insertBefore('.none_txt');
+		$(preAdvDenyStr).insertAfter('.realtime');
+		
+		//$('#smsTxtArea').val(advStr + "\r\n" + contents + "\r\n" + advDenyStr);
+		
+		
+	}else{ //광고 및 무료수신거부 텍스트 삭제
+		
+		//문자내용 광고문자 삭제하기
+		$('.ad_txt').remove();
+		$('.deny_txt').remove();
+		
+		//미리보기 광고 문자 삭제하기
+		$('.ad_tit').remove();
+		$('.deny_receipt').remove();
+		
+	}
+	
+	//문자 바이트수 계산하기
+	fnByteString($('#smsTxtArea').val());
+	
+}
+
 //문자 바이트수 계산하기 함수
 function fnByteString(contents){
 	var totalByte = 0; 
src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataView.jsp
@@ -92,39 +92,90 @@
 		dataType:'json',
 		async: false,
 		success: function (data) {
+			//alert(JSON.stringify(data));
 			if(data.isSuccess == true){
-				//data.result.callFrom;
-				//data.result.subject;
-				//data.result.smsTxt;
-				//data.result.filePath1;
-				//data.result.filePath2;
-				//data.result.filePath3;
-
+				var msgData = data.resultMsgInfo;
+				var fileData = data.resultMsgAddPhotoInfo;
+				
 				// 발신번호
 				var reCallFrom = $.trim(removeDash($("#callFromList option:selected").val()));
-				if ($.trim(removeDash(data.result.callFrom)) != reCallFrom) {
+				if ($.trim(removeDash(msgData.callFrom)) != reCallFrom) {
 					alert("선택된 발신번호가 이전에 발송한 발신번호가 아닙니다.\n발신번호를 확인해주세요.")
 				}
 				
-				/*
-				// 제목
-				if (data.result.subject != null && data.result.subject != "") {
+				var smsTxt = msgData.smsTxt;
+				var subject = msgData.subject;
+				var fileId = "";
+				var filePath = "";
+				var len = fileData.length;
+				
+				// 기존 내용 지워주기
+				//$(".btnReset").trigger("click");
+				$('.delLi').each(function(){
+					$(this).remove();
+				});
+				
+				$('.preBoxF').each(function(){
+					$(this).remove();
+				});
+
+				$('#imgCnt').val(0);
+				
+				// 기존 imgFileId, imgFilePath 배열에 있는 내용 초기화 해주기
+				imgFilePath = [];
+				imgFileId = [];
+
+				// 문자제목
+				if (msgData.subject != null && msgData.subject != "") {
 					$('.msg_title').addClass('active');
 					$("input:radio[name='title_status']:radio[value='Y']").prop('checked', true); // 선택하기
 					$('.textbox').show();
-					$("#mmsSubject").val(data.result.subject);	
+					$("#mmsSubject").val(subject);	
 				}
 				
-				var reSmsTxt = data.result.smsTxt.replaceAll("<br/>", "\n");	//줄발꿈문자 변환하기
 				// 문자내용
-				if(reSmsTxt != null){
-					$("#smsTxtArea").val(reSmsTxt);
-					fnByteString(reSmsTxt);
+				if (smsTxt.lastIndexOf("(광고)") != -1) {
+					$('#send_adYnY').prop('checked', true);
+					
+					//광고 상하단 내용 넣어주기
+					advMsgInsert();				
+					
+					// 광고 기본정보 제거
+					smsTxt = $.trim(smsTxt.replace("(광고)", ""));
+					var smsTxtLastIdxCnt = smsTxt.lastIndexOf("무료거부");
+					if (smsTxtLastIdxCnt != -1) {
+						smsTxt = $.trim(smsTxt.substring(0, smsTxtLastIdxCnt));	
+					}					
 				}
-				*/
+				$('#smsTxtArea').val(smsTxt);	
+				
+				// 첨부 이미지가 있는경우 이미지 처리해주기
+				if(len > 0) {
+					for(var i=0; i < len; i++) {
+						var num = i + 1;
+						var imgId = fileData[i].atchFileId;
+						var imgSn = fileData[i].fileSn;
+						var fileStreCours = fileData[i].fileStreCours;
+						var streFileNm = fileData[i].streFileNm;
+						var fileExtsn = fileData[i].fileExtsn;
+						
+						/* var imgSrc = fileStreCours + "/" + streFileNm + "." + fileExtsn; */
+						var imgSrc = '/cmm/fms/getImage2.do?atchFileId=' + imgId + '&fileSn=' + imgSn;
+						myMsgImageControl(imgSrc, "edit_n", "Template", imgId);
+					}
+					
+					fnByteString(smsTxt);
+				}
+				else {
+					fnByteString(smsTxt);
+				}
+				
+				// 문자전송 상단으로 이동
+				var sendOfT=$('.send_top').offset().top;
+				$('html,body').stop().animate({'scrollTop':sendOfT-60},250);		
 				
 			} else {
-				alert("Message : " + msg);
+				//alert("Message : " + msg);
 			}
 		},
 		error: function (e) { 
src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp
@@ -136,12 +136,13 @@
 				</tr>
 			</thead>
 			<tbody>
-				<c:set var="replaceCnt" value="0" />
-				<c:set var="electionCnt" value="0" />
-				<c:set var="advertisementCnt" value="0" />		
 				<c:choose>
 					<c:when test="${not empty resultAllSentList}">
 					<c:forEach var="resultAllSentList" items="${resultAllSentList}" varStatus="status">
+						<c:set var="replaceCnt" value="0" />
+						<c:set var="electionCnt" value="0" />
+						<c:set var="advertisementCnt" value="0" />		
+
 						<c:if test="${fn:indexOf(resultAllSentList.smsTxt,'[*이름*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*1*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*2*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*3*]') != -1 || fn:indexOf(resultAllSentList.smsTxt,'[*4*]') != -1}">
 							<c:set var="replaceCnt" value="1" />
 						</c:if>
@@ -207,7 +208,7 @@
 							<td name="listTd">
 								<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllSentList.msgGroupId}','${resultAllSentList.msgId}','${resultAllSentList.fileCnt}'); return false;">상세보기</button>
 								<%--
-								<button class="btnType btnType20" onClick="javascript:fnMjMsgReSendAll('${resultAllSentList.msgGroupId}','${replaceCnt}','${electionCnt}','${advertisementCnt}'); return false;">재전송</button>
+								<button class="btnType btnType20" onClick="javascript:fnMjMsgReSendAll('${resultAllSentList.msgGroupId}','${replaceCnt}','${electionCnt}','${advertisementCnt}'); return false;">재전송</button>								
 								--%>
 							</td>
 							<td name="listTd">
Add a comment
List