이호영 이호영 2024-11-18
발송로직 진행중
@060c8afe412d80df72548933b715d7e36143cc39
src/main/java/itn/com/cmm/MjonMsgSendVO.java
--- src/main/java/itn/com/cmm/MjonMsgSendVO.java
+++ src/main/java/itn/com/cmm/MjonMsgSendVO.java
@@ -108,7 +108,13 @@
 	private String 	filePath3;
 	
 
+
+	/**
+	 * @description : 개별단가
+	 */
+	private String 	eachPrice;
 	
+
 	
 	
 	
src/main/java/itn/com/cmm/util/MsgSendUtils.java
--- src/main/java/itn/com/cmm/util/MsgSendUtils.java
+++ src/main/java/itn/com/cmm/util/MsgSendUtils.java
@@ -3,7 +3,12 @@
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -21,6 +26,8 @@
 import itn.let.mjo.msg.service.MjonMsgVO;
 import itn.let.mjo.spammsg.web.ComGetSpamStringParser;
 import itn.let.module.base.PriceAndPoint;
+import itn.let.sym.site.service.JoinSettingVO;
+import itn.let.uss.umt.service.MberManageVO;
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -58,7 +65,7 @@
 			String smsCont = smsTxt.replace("\r\n", "\n");
 			smsBytes = smsCont.getBytes(charset).length;
 		}
-		log.info(" + smsBytes :: [{}]", smsBytes);
+//		log.info(" + smsBytes :: [{}]", smsBytes);
 		return smsBytes;
 	}
 
@@ -180,11 +187,37 @@
 	public static Boolean populateSendLists(MjonMsgVO mjonMsgVO, List<MjonMsgSendVO> mjonMsgSendListVO, StatusResponse statusResponse, List<String> resultSpamTxt) throws Exception{
 		
 		log.info(" :: populateSendLists :: ");
+		
+		
+		log.info(" + 예약여부 [{}]", mjonMsgVO.getReserveYn()); // 예약 여부
+		log.info(" + 시간 [{}]", mjonMsgVO.getReqDate()); // 시간
+		log.info(" + 분할체크  [{}]", mjonMsgVO.getDivideChk()); // 분할체크 
+		log.info(" + 간격(분) [{}]", mjonMsgVO.getDivideTime()); // 간격
+		log.info(" + 몇 건씩 [{}]", mjonMsgVO.getDivideCnt()); // 몇 건식
 
+
+		// 예약 시간 기본값 설정
+		Date now = new Date();
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+
+		// ReqDate가 비어 있으면 현재 시간으로 설정, 그렇지 않으면 ReqDate로 설정
+		Date baseDate;
+		if (StringUtils.isEmpty(mjonMsgVO.getReqDate())) {
+		    mjonMsgVO.setReqDate(sdf.format(now));  // ReqDate에 현재 시간 설정
+		    baseDate = now;
+		} else {
+		    baseDate = sdf.parse(mjonMsgVO.getReqDate()); // ReqDate를 baseDate로 설정
+		}
+
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(baseDate);  // calendar에 baseDate 설정
+		int counter = 0;  // 분할 건수 카운터
+
+		// 데이터 모두다 스팸 체크를 안하고 건별로 갯수를 정해서 스팸체크를 한다.
 		int spamChkSize = getSpamChkSize(mjonMsgSendListVO.size());
 		int sampleCounter = 0;
 
-		String smsTxtTemp = mjonMsgVO.getSmsTxt();
+		
 
 		// 치환 구문과 필드 getter 매핑
 		Map<String, Function<MjonMsgSendVO, String>> placeholders = new HashMap<>();
@@ -196,6 +229,8 @@
 
 		boolean hasPerformedSpamCheck = false; // 치환 문자가 없는 경우, 스팸 체크가 한 번만 수행되도록 제어
 		boolean hasPerformedMsgType = false; // 치환 문자가 없는 경우, 스팸 체크가 한 번만 수행되도록 제어
+		
+		String smsTxtTemp = mjonMsgVO.getSmsTxt();
 		Boolean replaceYN = getReplaceYN(smsTxtTemp);
 		
 		String msgTypeResult = null;
@@ -231,7 +266,6 @@
 				checkSpamAndSetStatus(mjonMsgVO, smsSpamChkTxt, resultSpamTxt);
 				sampleCounter++;
 			}
-			log.info(" ++ smsTxt:: [{}]", smsTxt);
 			sendVO.setSmsTxt(smsTxt);
 			
 			// 이미지 셋팅
@@ -239,7 +273,6 @@
 			
 
 			// msgType 셋팅 및 문자열 체크
-			log.info(" + smsTxt :: [{}]", smsTxt);
 			if (!replaceYN && !hasPerformedMsgType) {
 				log.info(" 치환 X ");
 				// byte 체크와 msgType 구하기
@@ -260,6 +293,30 @@
 			}
 
 			sendVO.setMsgType(msgTypeResult);
+			
+			
+			
+			
+			// 예약 여부 확인
+			if ("Y".equalsIgnoreCase(mjonMsgVO.getReserveYn())) {
+				// 분할 발송일 경우
+				if ("on".equalsIgnoreCase(mjonMsgVO.getDivideChk())) {
+					if (counter == Integer.parseInt(mjonMsgVO.getDivideCnt()))  { // 지정된 건수마다 간격 추가
+						counter = 0;
+						calendar.add(Calendar.MINUTE, Integer.parseInt(mjonMsgVO.getDivideTime()));
+					}
+					counter++;
+				}
+				// 예약 시간 설정
+				sendVO.setReqDate(sdf.format(calendar.getTime())); // 분할된 시간 설정 또는 기본 예약 시간 사용
+			} else {
+				// 예약 여부가 N일 경우에도 기본 예약 시간 설정
+				sendVO.setReqDate(sdf.format(calendar.getTime())); 
+			}
+			
+			
+			
+			
 			
 		}
 		
@@ -426,5 +483,94 @@
 		return array == null || array.length == 0;
 	}
 
+	public static void setPriceforVO(MjonMsgVO mjonMsgVO, List<MjonMsgSendVO> mjonMsgSendVOList, JoinSettingVO sysJoinSetVO,
+			MberManageVO mberManageVO) {
+		
+		// 사용자 단가 정보 설정 (협의 단가가 없을 경우 시스템 단가를 적용)
+		float shortPrice = MsgSendUtils.getValidPrice(mberManageVO.getShortPrice(), sysJoinSetVO.getShortPrice());
+		float longPrice = MsgSendUtils.getValidPrice(mberManageVO.getLongPrice(), sysJoinSetVO.getLongPrice());
+		float picturePrice = MsgSendUtils.getValidPrice(mberManageVO.getPicturePrice(), sysJoinSetVO.getPicturePrice());
+		float picture2Price = MsgSendUtils.getValidPrice(mberManageVO.getPicture2Price(), sysJoinSetVO.getPicture2Price());
+		float picture3Price = MsgSendUtils.getValidPrice(mberManageVO.getPicture3Price(), sysJoinSetVO.getPicture3Price());
+
+		// 각 메시지 타입에 따라 사용자 단가 설정 및 총 단가 계산
+		float totalPrice = 0.0f;
+
+		for (MjonMsgSendVO sendVO : mjonMsgSendVOList) {
+			String msgType = sendVO.getMsgType();
+			String eachPrice;
 	
+			switch (msgType) {
+				case "4": // 단문 메시지 타입
+					eachPrice = Float.toString(shortPrice);
+					break;
+		
+				case "6": // 장문 또는 이미지 메시지 타입
+					eachPrice = getPicturePrice(sendVO, longPrice, picturePrice, picture2Price, picture3Price);
+					break;
+		
+				default:
+					// 기본값이 필요하다면 추가 가능
+					eachPrice = "0";
+					break;
+			}
+	
+			sendVO.setEachPrice(eachPrice);
+//			log.info(" eachPrice :: [{}]", eachPrice);
+	
+			// 각 가격을 합산
+			totalPrice += Float.parseFloat(eachPrice);
+		}
+		mjonMsgVO.setTotalPrice(totalPrice);
+
+//		log.debug("총 단가 합계: [{}]", totalPrice);
+		
+	}
+
+	/**
+	 * 이미지 파일 경로를 기준으로 적절한 가격을 반환하는 헬퍼 메소드.
+	 */
+	private static String getPicturePrice(MjonMsgSendVO sendVO, float longPrice, float picturePrice, float picture2Price, float picture3Price) {
+		if (StringUtils.isNotEmpty(sendVO.getFilePath3())) {
+			return Float.toString(picture3Price);
+		} else if (StringUtils.isNotEmpty(sendVO.getFilePath2())) {
+			return Float.toString(picture2Price);
+		} else if (StringUtils.isNotEmpty(sendVO.getFilePath1())) {
+			return Float.toString(picturePrice);
+		} else {
+			return Float.toString(longPrice);
+		}
+	}
+
+	public static List<MjonMsgSendVO> getOptimalMsgList(double totalPrice, double eventRemainCash,
+			List<MjonMsgSendVO> mjonMsgSendVOList) {
+		
+		double targetCash = eventRemainCash;
+		
+		// 최적의 리스트를 구성하기 위한 빈 리스트 생성
+		List<MjonMsgSendVO> optimalList = new ArrayList<>();
+		double sum = 0.0;
+	
+		// 원본 리스트의 요소를 순회하며 조건에 맞는 항목을 최적 리스트에 추가
+		Iterator<MjonMsgSendVO> iterator = mjonMsgSendVOList.iterator();
+		while (iterator.hasNext()) {
+			MjonMsgSendVO msg = iterator.next();
+			double eachPrice = Double.parseDouble(msg.getEachPrice());
+			
+			// sum + eachPrice가 정확히 targetCash와 같거나 작을 때만 추가하고 원본에서 제거
+			if (sum + eachPrice <= targetCash) {
+				sum += eachPrice;
+				optimalList.add(msg);
+				iterator.remove();  // 원본 리스트에서 해당 요소 제거
+			} else {
+				break;  // 초과하지 않도록, 더 이상 추가할 수 없는 경우 종료
+			}
+		}
+		log.info(" + targetCash  :: [{}]", targetCash);
+		log.info(" + sum  :: [{}]", sum);
+	
+		// 최적 리스트 반환
+		return optimalList;
+		
+	}
 }
src/main/java/itn/let/mjo/event/service/MjonEventService.java
--- src/main/java/itn/let/mjo/event/service/MjonEventService.java
+++ src/main/java/itn/let/mjo/event/service/MjonEventService.java
@@ -38,4 +38,6 @@
 	
 	//현재 진행중 이벤트 상태 정보 불러오기
 	MjonEventCheckVO selectEventStatus(MjonEventCheckVO p_MjonEventCheckVO) throws Exception;
+
+	MjonEventVO selectEventMsgMberDefaultInfo_advc(String userId) throws Exception;
 }
src/main/java/itn/let/mjo/event/service/MjonEventVO.java
--- src/main/java/itn/let/mjo/event/service/MjonEventVO.java
+++ src/main/java/itn/let/mjo/event/service/MjonEventVO.java
@@ -1,5 +1,12 @@
 package itn.let.mjo.event.service;
 
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+@Getter
+@Setter
+@ToString
 public class MjonEventVO {
 
 	
@@ -32,220 +39,4 @@
 	private String userId;				//사용자 아이디
 	private String frstRegisterId;		//등록자 아이디
 
-	public double getEventRemainOriginCash() {
-		return eventRemainOriginCash;
-	}
-
-	public void setEventRemainOriginCash(double eventRemainOriginCash) {
-		this.eventRemainOriginCash = eventRemainOriginCash;
-	}
-	
-	public String getEventInfoId() {
-		return eventInfoId;
-	}
-
-	public void setEventInfoId(String eventInfoId) {
-		this.eventInfoId = eventInfoId;
-	}
-
-	public String getUniqId() {
-		return uniqId;
-	}
-
-	public void setUniqId(String uniqId) {
-		this.uniqId = uniqId;
-	}
-
-	public String getMberId() {
-		return mberId;
-	}
-
-	public void setMberId(String mberId) {
-		this.mberId = mberId;
-	}
-
-	public String getMberNm() {
-		return mberNm;
-	}
-
-	public void setMberNm(String mberNm) {
-		this.mberNm = mberNm;
-	}
-
-	public String getEventNttId() {
-		return eventNttId;
-	}
-
-	public void setEventNttId(String eventNttId) {
-		this.eventNttId = eventNttId;
-	}
-
-	public String getEventBbsId() {
-		return eventBbsId;
-	}
-
-	public void setEventBbsId(String eventBbsId) {
-		this.eventBbsId = eventBbsId;
-	}
-
-	public String getEventStartDate() {
-		return eventStartDate;
-	}
-
-	public void setEventStartDate(String eventStartDate) {
-		this.eventStartDate = eventStartDate;
-	}
-
-	public String getEventEndDate() {
-		return eventEndDate;
-	}
-
-	public void setEventEndDate(String eventEndDate) {
-		this.eventEndDate = eventEndDate;
-	}
-
-	public double getEventFrstCash() {
-		return eventFrstCash;
-	}
-
-	public void setEventFrstCash(double eventFrstCash) {
-		this.eventFrstCash = eventFrstCash;
-	}
-
-	public double getEventRemainCash() {
-		return eventRemainCash;
-	}
-
-	public void setEventRemainCash(double eventRemainCash) {
-		this.eventRemainCash = eventRemainCash;
-	}
-
-	public String getEventPgMoid() {
-		return eventPgMoid;
-	}
-
-	public void setEventPgMoid(String eventPgMoid) {
-		this.eventPgMoid = eventPgMoid;
-	}
-
-	public String getEventShortPrice() {
-		return eventShortPrice;
-	}
-
-	public void setEventShortPrice(String eventShortPrice) {
-		this.eventShortPrice = eventShortPrice;
-	}
-
-	public String getEventLongPrice() {
-		return eventLongPrice;
-	}
-
-	public void setEventLongPrice(String eventLongPrice) {
-		this.eventLongPrice = eventLongPrice;
-	}
-
-	public String getEventPicturePrice() {
-		return eventPicturePrice;
-	}
-
-	public void setEventPicturePrice(String eventPicturePrice) {
-		this.eventPicturePrice = eventPicturePrice;
-	}
-
-	public String getEventPicture2Price() {
-		return eventPicture2Price;
-	}
-
-	public void setEventPicture2Price(String eventPicture2Price) {
-		this.eventPicture2Price = eventPicture2Price;
-	}
-
-	public String getEventPicture3Price() {
-		return eventPicture3Price;
-	}
-
-	public void setEventPicture3Price(String eventPicture3Price) {
-		this.eventPicture3Price = eventPicture3Price;
-	}
-
-	public String getEventPolicyYn() {
-		return eventPolicyYn;
-	}
-
-	public void setEventPolicyYn(String eventPolicyYn) {
-		this.eventPolicyYn = eventPolicyYn;
-	}
-
-	public String getEventSmsYn() {
-		return eventSmsYn;
-	}
-
-	public void setEventSmsYn(String eventSmsYn) {
-		this.eventSmsYn = eventSmsYn;
-	}
-
-	public String getEventStatus() {
-		return eventStatus;
-	}
-
-	public void setEventStatus(String eventStatus) {
-		this.eventStatus = eventStatus;
-	}
-
-	public String getEventMemo() {
-		return eventMemo;
-	}
-
-	public void setEventMemo(String eventMemo) {
-		this.eventMemo = eventMemo;
-	}
-
-	public String getFrstRegistPnttm() {
-		return frstRegistPnttm;
-	}
-
-	public void setFrstRegistPnttm(String frstRegistPnttm) {
-		this.frstRegistPnttm = frstRegistPnttm;
-	}
-
-	public String getLastUpdtPnttm() {
-		return lastUpdtPnttm;
-	}
-
-	public void setLastUpdtPnttm(String lastUpdtPnttm) {
-		this.lastUpdtPnttm = lastUpdtPnttm;
-	}
-
-	public String getPayCount() {
-		return payCount;
-	}
-
-	public void setPayCount(String payCount) {
-		this.payCount = payCount;
-	}
-
-	public String getPoint() {
-		return point;
-	}
-
-	public void setPoint(String point) {
-		this.point = point;
-	}
-
-	public String getUserId() {
-		return userId;
-	}
-
-	public void setUserId(String userId) {
-		this.userId = userId;
-	}
-
-	public String getFrstRegisterId() {
-		return frstRegisterId;
-	}
-
-	public void setFrstRegisterId(String frstRegisterId) {
-		this.frstRegisterId = frstRegisterId;
-	}
-	
 }
src/main/java/itn/let/mjo/event/service/impl/MjonEventServiceImpl.java
--- src/main/java/itn/let/mjo/event/service/impl/MjonEventServiceImpl.java
+++ src/main/java/itn/let/mjo/event/service/impl/MjonEventServiceImpl.java
@@ -45,6 +45,14 @@
 		return mjonEventDAO.selectEventMsgMberDefaultInfo(mjonEventVO);
 	}
 	
+
+	@Override
+	public MjonEventVO selectEventMsgMberDefaultInfo_advc(String userId) throws Exception{
+		MjonEventVO mjonEventVO = new MjonEventVO();
+		mjonEventVO.setMberId(userId); 
+		return mjonEventDAO.selectEventMsgMberDefaultInfo(mjonEventVO);
+	}
+	
 	//등록된 이벤트 회원정보 조회
 	@Override
 	public int selectEventMsgMberDefaultInfoCnt(MjonEventVO mjonEventVO) throws Exception{
src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
--- src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
+++ src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
@@ -4043,38 +4043,11 @@
 		 * 파라미터로 넘어온 개별단가(eachPrice), 총 결제캐시(totPrice)를 비요하여 동일하지 않으면 컨트롤러에서 계산한 금액으로 입력해줌.
 		 */
 		
-//		int smsTxtByte = MsgSendUtils.getSmsTxtBytes(mjonMsgVO.getSmsTxt());
-//		if(smsTxtByte > 2000) {
-//		    return new StatusResponse(HttpStatus.BAD_REQUEST, "문자 내용은 2000Byte를 넘을 수 없습니다.");
-//		}
-		
-		// MSG_TYPE 설정
-//		String msgType = MsgSendUtils.getMsgType(mjonMsgVO, smsTxtByte);
-//		if ("INVALID".equals(msgType)) {
-//		    return new StatusResponse(HttpStatus.BAD_REQUEST, "문자 내용은 2000Byte를 넘을 수 없습니다.");
-//		}
-//		mjonMsgVO.setMsgType(msgType);
-		
 
 		/////////////////////////////////////////////////////////////////////////////
 		// 금액 관련은 끝에서 이벤트 발송 / 기존금액 박송으로 나눠야하기 때문에 나중에 수정
 		/////////////////////////////////////////////////////////////////////////////
 		/*
-		//1.시스템 기본 단가 정보 불러오기
-		JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo();
-		
-		
-		//2.사용자 개인 단가 정보 불러오기
-		MberManageVO mberManageVO = mjonMsgDataDAO.selectMberManageInfo(userId);
-		
-		
-		// 3. 사용자 단가 정보 설정
-		//협의 단가가 없는 경우 시스템 단가 적용해 주기
-		float shortPrice = MsgSendUtils.getValidPrice(mberManageVO.getShortPrice(), sysJoinSetVO.getShortPrice());
-		float longPrice = MsgSendUtils.getValidPrice(mberManageVO.getLongPrice(), sysJoinSetVO.getLongPrice());
-		float picturePrice = MsgSendUtils.getValidPrice(mberManageVO.getPicturePrice(), sysJoinSetVO.getPicturePrice());
-		float picture2Price = MsgSendUtils.getValidPrice(mberManageVO.getPicture2Price(), sysJoinSetVO.getPicture2Price());
-		float picture3Price = MsgSendUtils.getValidPrice(mberManageVO.getPicture3Price(), sysJoinSetVO.getPicture3Price());
 		
 		
 		// 기존 소수점 2째자리에서 반올림하였으나, 정책 변경으로 소수점 버림 처리함
@@ -4141,9 +4114,23 @@
 //				return statusResponse;  // 유효성 검사 실패 시 처리
 //			}
 
-			
 
-		log.info(" ++ mjonMsgVO.getSpamStatus() :: [{}]", mjonMsgVO.getSpamStatus());
+		// 삭제 전 리스트 크기 저장
+		int initialSize = mjonMsgSendVOList.size();
+
+		// 수신목록 셋팅
+		List<String> userBlockList = mjonMsgDAO.selectUserBlockList(mjonMsgVO);
+		mjonMsgSendVOList.removeIf(vo -> userBlockList.contains(vo.getPhone()));
+//		log.info(" !! mjonMsgSendVOList.size() ::  [{}]",mjonMsgSendVOList.size());
+		// 삭제 후 리스트 크기 저장
+		int finalSize = mjonMsgSendVOList.size();
+		// 삭제된 건 수 계산
+		int deletedCount = initialSize - finalSize;
+//		log.info(" +삭제된 건수 ::  [{}]",deletedCount);
+		
+
+//        				long startTime = System.nanoTime();  // 시작 시간 측정
+
 		// smstxt 치환 및 스팸체크 후  mjonMsgSendVOList 에 add()
 		List<String> resultSpamTxt = mjonMsgDataService.selectSpamKeywordList();
 		if(!MsgSendUtils.populateSendLists(mjonMsgVO, mjonMsgSendVOList, statusResponse, resultSpamTxt)) {;
@@ -4151,31 +4138,52 @@
 			//문자 치환 중 오류가 발생하였습니다.
 			return statusResponse;
 		}
-		log.info(" ++ mjonMsgVO.getSpamStatus() :: [{}]", mjonMsgVO.getSpamStatus());
+		mjonMsgSendVOList.stream().forEach(t-> System.out.println(" + ReqDate :: "+t.getReqDate()));
+
+//        long endTime = System.nanoTime();  // 종료 시간 측정
+//        long duration = endTime - startTime;  // 실행 시간 계산 (나노초)
+
+//			        // 나노초를 초와 분으로 변환
+//			        long seconds = duration / 1_000_000_000;
+//			        long minutes = seconds / 60;
+//			        seconds = seconds % 60;  // 분으로 나누고 남은 초 계산
+
+//        System.out.println("Execution time: " + minutes + " minutes " + seconds + " seconds");
+		
+
+
+
 		
 		
-		// 수신목록 셋팅
+		
+		
+		
 		
 		
 
-		// 수신거부 목록 불러오기
-		List<String> userBlockList = mjonMsgDAO.selectUserBlockList(mjonMsgVO);
-
-		List<String> dupliBlockList = MJUtil.getDuplicateList(userBlockList);
-		int usrBlockCnt = dupliBlockList.size();
+		//1.시스템 기본 단가 정보 불러오기
+		JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo();
+		//2.사용자 개인 단가 정보 불러오기
+		MberManageVO mberManageVO = mjonMsgDataDAO.selectMberManageInfo(userId);
+		MsgSendUtils.setPriceforVO(mjonMsgVO, mjonMsgSendVOList, sysJoinSetVO, mberManageVO);
 		
 		
 		
+		// 이벤트 영역
+		MjonEventVO eventMberInfo = mjonEventService.selectEventMsgMberDefaultInfo_advc(userId);
 		
+		List<MjonMsgSendVO> optimalMsgList = MsgSendUtils.getOptimalMsgList(mjonMsgVO.getTotalPrice(), eventMberInfo.getEventRemainCash(), mjonMsgSendVOList);
 		
+		log.info(" + optimalMsgList :: [{}]", optimalMsgList.size());
+		log.info(" + mjonMsgSendVOList :: [{}]", mjonMsgSendVOList.size());
+//		log.info("mjonMsgVO.getTotalPrice() :: [{}]", mjonMsgVO.getTotalPrice());
 		
+//		log.info(" + userId :: [{}]", userId);
+//		log.info(" + priceAndPoint.getBefCash(userId) :: [{}]", priceAndPoint.getBefCash(userId));
 		
+		 
 		
-		
-		
-		
-		
-		
+//		mjonMsgSendVOList.stream().forEach(t-> System.out.println(t.getEachPrice()));
 //		mjonMsgSendVOList.stream().forEach(t-> System.out.println(t.toString()));
 		
 //		mjonMsgSendVOList.stream()
src/main/java/itn/let/mjo/rejt/web/MjonRejectController.java
--- src/main/java/itn/let/mjo/rejt/web/MjonRejectController.java
+++ src/main/java/itn/let/mjo/rejt/web/MjonRejectController.java
@@ -1,5 +1,6 @@
 package itn.let.mjo.rejt.web;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 
@@ -89,6 +90,52 @@
 	}
 	
 	
+	@ResponseBody
+	@RequestMapping(value = "/mjonRejectReceive_advc.do")
+	public HashMap<String, String> mjonRejectReceive_advc(@RequestBody MjonRejectVO rejectVO) throws Exception {
+		
+		
+		//ModelAndView mv = new ModelAndView();
+		//mv.setViewName("jsonView");
+		
+		//System.out.println(rejectVO.getPhone()+"==============");
+		//System.out.println(rejectVO.getInsertDate()+"==============");
+		//System.out.println(rejectVO.getCallId()+"==============");
+		
+		HashMap<String, String> map = new HashMap<String, String>();
+		
+		try {
+			// 1.  mj_reject_log 테이블에 로그 insert
+//			String rejectLogId = mjonRejectService.insertRejectLog(rejectVO);
+			
+			MjonBlockVO blockVO =  new MjonBlockVO();
+			List<String> phoneNumberList = Arrays.asList(
+				    "01083584250",
+				    "01030266269",
+				    "01012341234",
+				    "01030266222",
+				    "01012341237"
+				);
+
+			
+			for(String aa : phoneNumberList ) {
+//				blockVO.setRejectLogId(rejectLogId);
+				blockVO.setUserId("hylee250");
+				blockVO.setPhone(aa);
+				blockVO.setBlockType(1);	// 080 수신거부
+				mjonBlockService.insertBlock(blockVO);
+			}
+			map.put("result", "100");
+			
+		} catch(Exception e) {
+			e.printStackTrace();
+			map.put("result", "error");
+		}
+		
+		return map;
+	}
+	
+	
 	/**
 	 * 080수신거부 테스트 페이지
 	 * @return
src/main/java/itn/let/module/base/PriceAndPoint.java
--- src/main/java/itn/let/module/base/PriceAndPoint.java
+++ src/main/java/itn/let/module/base/PriceAndPoint.java
@@ -5,6 +5,7 @@
 
 import javax.annotation.Resource;
 
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import egovframework.rte.fdl.idgnr.EgovIdGnrService;
@@ -31,7 +32,7 @@
 @Component
 public class PriceAndPoint {
  
-	@Resource(name="MjonMsgDataDAO")
+	@Autowired
 	private MjonMsgDataDAO mjonMsgDataDAO;
  
 	/** 
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
@@ -1189,6 +1189,43 @@
 	}else{
 		form.msgKind.value = "N"; //일반문자 종류 설정
 	}
+	
+	// 예약 확인
+	var reserYn = $("input[name=reserYn]:checked").val(); // 예약 발송 여부 확인
+	form.reserveYn.value = reserYn; // 즉시 / 예약 문자 선택 여부 
+	
+	if(reserYn == 'Y'){
+		
+		var date = $(".resDate").val();//form.msgResDate.value;
+		var hour = form.msgResHour.value;
+		var min = form.msgResMin.value;
+		
+		if(date == ""){
+			
+			alert("예약전송 날짜를 선택해 주세요.");
+			return false;
+			
+		}else{
+			
+			var now = new Date();
+			var reqDate = date + " " + hour + ":" + min + ":00";
+			var gapDate = getGapDayTime(date, hour, min);
+			
+			if(gapDate < 0){ // 음수이면 이전날짜, 크면 이후 날짜.
+				alert("예약 날짜는 현재 시간 이후의 날짜 및 시간을 선택해 주세요.");
+				return false;
+			}else{
+				form.reqDate.value = reqDate;	//예약일자 파라미터 저장
+			}
+		}
+
+	}else{
+		
+		form.reqDate.value = "";
+		
+	}
+	
+	
 
 	//발송 Ajax 호출해주기
 	sendMsgAjax_advc();
Add a comment
List