wyh 2023-06-21
Merge branch 'master' of http://dudgusw@vcs.iten.co.kr:9999/hylee/mjon_git
@f4067f3cc9f10574857571012635481f06a088a0
src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
--- src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
+++ src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
@@ -275,6 +275,29 @@
 		return redirectUrlMaker.getRedirectUrl();
 	}	
 	
+	/**
+     * 알림톡 리스트 스미싱 on off 처리 
+     * @param searchVO
+     * @param model
+     * @return	"/uss/ion/msg/SendMsgTestList.do"
+     * @throws Exception
+     */	
+	@RequestMapping("/uss/ion/msg/MsgUsersAtSmishingUpdate.do")
+	public String msgUsersAtSmishingUpdate(@RequestParam("checkedIdForDel") String checkedIdForUpt, @ModelAttribute("userManageVO") UserManageVO userManageVO, RedirectAttributes redirectAttributes, Model model) throws Exception {
+		
+		// 미인증 사용자에 대한 보안처리
+		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+		if(!isAuthenticated) {
+			model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
+			return "uat/uia/EgovLoginUsr";
+		}
+		
+		userManageService.updateUserAtSmishingYn(userManageVO, checkedIdForUpt);
+		
+		//redirectAttributes.addFlashAttribute("message", "알림톡 스미싱의심 여부가 정상적으로 수정되었습니다.");
+		RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/kakaoat/SendKakaoATList.do?pageIndex="+userManageVO.getPageIndex());
+		return redirectUrlMaker.getRedirectUrl();
+	}		
 	
 	/**
      * 문자전송 테스트 리스트 
src/main/java/itn/let/uss/umt/service/EgovUserManageService.java
--- src/main/java/itn/let/uss/umt/service/EgovUserManageService.java
+++ src/main/java/itn/let/uss/umt/service/EgovUserManageService.java
@@ -177,12 +177,20 @@
 	
 	public UserManageVO selectSmishingYnUserInfo(UserManageVO userManageVO) throws Exception;
 	
+	public UserManageVO selectAtSmishingYnUserInfo(UserManageVO userManageVO) throws Exception;
+	
 	// 스미싱의심 온/오프
 	public void updateUserSmishingYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception;
 	
 	// 스미싱의심 온/오프 - 상세에서 단일로
 	public void updateOneUserSmishingYn(UserManageVO userManageVO) throws Exception;
     
+	// 알림톡 스미싱의심 온/오프
+	public void updateUserAtSmishingYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception;
+	
+	// 알림톡 스미싱의심 온/오프 - 상세에서 단일로
+	public void updateOneUserAtSmishingYn(UserManageVO userManageVO) throws Exception;	
+	
 	// 후불제 여부 저장
 	public void updateUserPrePaymentYn(UserManageVO userManageVO) throws Exception;
 	
src/main/java/itn/let/uss/umt/service/MberManageVO.java
--- src/main/java/itn/let/uss/umt/service/MberManageVO.java
+++ src/main/java/itn/let/uss/umt/service/MberManageVO.java
@@ -532,7 +532,14 @@
 	
 	private String smishingYn;		// 스미싱 의심여부
 	private String vipYn;		// VIP 여부
+	private String atSmishingYn;		// 알림톡 스미싱 의심여부
 	
+	public String getAtSmishingYn() {
+		return atSmishingYn;
+	}
+	public void setAtSmishingYn(String atSmishingYn) {
+		this.atSmishingYn = atSmishingYn;
+	}
 	public String getPrePaymentYn() {
 		return prePaymentYn;
 	}
src/main/java/itn/let/uss/umt/service/UserManageVO.java
--- src/main/java/itn/let/uss/umt/service/UserManageVO.java
+++ src/main/java/itn/let/uss/umt/service/UserManageVO.java
@@ -204,7 +204,14 @@
 	private float cash;
 	private String blineCode;		// B라인코드
 	private String recommendId;		// 추천아이디
-
+	private String atSmishingYn;		// 알림톡 스미싱 의심여부
+	
+	public String getAtSmishingYn() {
+		return atSmishingYn;
+	}
+	public void setAtSmishingYn(String atSmishingYn) {
+		this.atSmishingYn = atSmishingYn;
+	}
 	public String getBlineCode() {
 		return blineCode;
 	}
src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java
--- src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java
+++ src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java
@@ -497,6 +497,11 @@
 		return userManageDAO.selectSmishingYnUserInfo(userManageVO);
 	}
 	
+	@Override
+	public UserManageVO selectAtSmishingYnUserInfo(UserManageVO userManageVO) {
+		return userManageDAO.selectAtSmishingYnUserInfo(userManageVO);
+	}
+	
 	// 스미싱의심 온/오프
 	public void updateUserSmishingYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception {
 		if(!"".equals(checkedIdForUpt)) {
@@ -560,6 +565,69 @@
 		
 	}
 	
+	// 알림톡 스미싱의심 온/오프
+	public void updateUserAtSmishingYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception {
+		if(!"".equals(checkedIdForUpt)) {
+			String [] uptIdAll = checkedIdForUpt.split(",");
+			String[] uptId = Arrays.stream(uptIdAll).distinct().toArray(String[]::new);
+			for (int i=0; i<uptId.length ; i++){
+				// 업데이트
+				userManageVO.setMberId(uptId[i]);
+				userManageDAO.updateUserAtSmishingYn(userManageVO);
+				
+				// 법인폰 알림문자 발송
+				UserManageVO rtnVO = new UserManageVO();
+				rtnVO = selectAtSmishingYnUserInfo(userManageVO);
+				if (rtnVO.getAtSmishingYn().equals("Y")) {
+					// 법인폰 알람여부 체크
+					JoinSettingVO joinSettingVO = new JoinSettingVO();
+					joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+					// SMS 체크
+					if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+						// 스미싱의심 SMS 알림전송
+						mjonNoticeSendUtil.smishingSmsNoticeSend("알림톡 스미싱 의심!", rtnVO.getMberId(), rtnVO.getMberNm());
+					}					
+					
+					// SLACK 체크
+					if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {					
+						// Slack 메시지 발송(단순본문)
+						String msg = "[문자온] 알림톡 스미싱 의심! - " + rtnVO.getMberNm() +"("+ rtnVO.getMberId() + ")";
+						mjonCommon.sendSimpleSlackMsg(msg);					
+					}
+				}
+			}
+		}
+		
+	}
+	
+	// 알림톡 스미싱의심 온/오프 단일
+	public void updateOneUserAtSmishingYn(UserManageVO userManageVO) throws Exception {
+				// 업데이트
+				userManageDAO.updateUserAtSmishingYn(userManageVO);
+				
+				// 법인폰 알림문자 발송
+				UserManageVO rtnVO = new UserManageVO();
+				rtnVO = selectAtSmishingYnUserInfo(userManageVO);
+				if (rtnVO.getAtSmishingYn().equals("Y")) {
+					// 법인폰 알람여부 체크
+					JoinSettingVO joinSettingVO = new JoinSettingVO();
+					joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
+					// SMS 체크
+					if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
+						// 스미싱의심 SMS 알림전송
+						mjonNoticeSendUtil.smishingSmsNoticeSend("알림톡 스미싱 의심!", rtnVO.getMberId(), rtnVO.getMberNm());
+					}					
+					
+					// SLACK 체크
+					if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {					
+						// Slack 메시지 발송(단순본문)
+						String msg = "[문자온] 알림톡 스미싱 의심! - " + rtnVO.getMberNm() +"("+ rtnVO.getMberId() + ")";
+						mjonCommon.sendSimpleSlackMsg(msg);										
+					}
+				}
+		
+	}	
+	
 	// 후불제 여부 저장
 	public void updateUserPrePaymentYn(UserManageVO userManageVO) throws Exception {
 		userManageDAO.updateUserPrePaymentYn(userManageVO);
src/main/java/itn/let/uss/umt/service/impl/UserManageDAO.java
--- src/main/java/itn/let/uss/umt/service/impl/UserManageDAO.java
+++ src/main/java/itn/let/uss/umt/service/impl/UserManageDAO.java
@@ -271,11 +271,20 @@
 		return (UserManageVO) select("userManageDAO.selectSmishingYnUserInfo",userManageVO);
 	}
 	
+	public UserManageVO selectAtSmishingYnUserInfo(UserManageVO userManageVO) {
+		return (UserManageVO) select("userManageDAO.selectAtSmishingYnUserInfo",userManageVO);
+	}
+	
 	// 스미싱의심 온/오프
     public void updateUserSmishingYn(UserManageVO userManageVO){
     	update("userManageDAO.updateUserSmishingYn",userManageVO);
     }
     
+	// 알림톡 스미싱의심 온/오프
+    public void updateUserAtSmishingYn(UserManageVO userManageVO){
+    	update("userManageDAO.updateUserAtSmishingYn",userManageVO);
+    }
+    
     // 후불제 여부 저장
     public void updateUserPrePaymentYn(UserManageVO userManageVO){
     	update("userManageDAO.updateUserPrePaymentYn",userManageVO);
src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
--- src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
+++ src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
@@ -2418,6 +2418,38 @@
 		
 		return modelAndView;
 	}	
+	
+	// 알림톡 스미싱의심 여부 변경
+	@RequestMapping("/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do")
+	public ModelAndView EgovGnrlUpdateUserAtSmishingAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception {
+		
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+		
+		Boolean isSuccess = true;
+		String msg = "";
+		
+		try {
+			// 미인증 사용자에 대한 보안처리
+			Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
+			if(!isAuthenticated) {
+				isSuccess = false;
+				msg = "로그인이 필요합니다.";    		
+			}
+			else {
+				userManageService.updateOneUserAtSmishingYn(userManageVO);
+			}
+		} catch (Exception e) {
+			isSuccess = false;
+			msg = e.getMessage();
+		}
+		
+		modelAndView.addObject("isSuccess", isSuccess);
+		modelAndView.addObject("msg", msg);
+		
+		return modelAndView;
+	}	
+	
 	// VIP 여부 변경
 	@RequestMapping("/uss/umt/user/EgovGnrlUpdateUserVIPAjax.do")
 	public ModelAndView EgovGnrlUpdateUserVIPAjax(@ModelAttribute("userManageVO") UserManageVO userManageVO) throws Exception {
src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
@@ -347,6 +347,7 @@
         M2.msgNoticetalkTmpKey ,
         M2.yellowId ,
         M2.userNm ,
+        M2.atSmishingYn ,
 		( SELECT COUNT(0) 
 			FROM    MJ_MSG_DATA C
 			WHERE   C.DEL_FLAG     = 'N'
@@ -450,6 +451,7 @@
 	        MSG_NOTICETALK_TMP_KEY               AS msgNoticetalkTmpKey ,
 	        MKPI.YELLOW_ID                       AS yellowId ,
 	        LTM.MBER_NM                          AS userNm ,
+	        LTM.AT_SMISHING_YN					 AS atSmishingYn,
 			BIZ_UMID                              AS bizUmid,
 			BL.CALL_STATUS                        AS callStatus,
 			M.BIZ_KAKAO_RESEND_YN                 AS bizKakaoResendYn
src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
@@ -729,7 +729,8 @@
 		       A.SMISHING_YN smishingYn,
 		       A.VIP_YN vipYn,
 		       A.EXCEPT_SPAM_YN AS exceptSpamYn,
-		       A.HOTLINE_AGENT_CODE AS hotlineAgentCode
+		       A.HOTLINE_AGENT_CODE AS hotlineAgentCode,
+		       A.AT_SMISHING_YN atSmishingYn
 		FROM   LETTNGNRLMBER A
 		       LEFT JOIN MJ_CANDIDATE_INFO MCI
 		       ON     A.MBER_ID = MCI.MBER_ID
src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
@@ -1328,6 +1328,15 @@
 		WHERE  MBER_ID = #mberId#
     </select> 
     	
+    <select id="userManageDAO.selectAtSmishingYnUserInfo" parameterClass="userVO" resultClass="userVO">
+    	SELECT 
+	    	MBER_ID AS mberId, 
+			MBER_NM AS mberNm,
+    		AT_SMISHING_YN AS atSmishingYn
+		FROM   LETTNGNRLMBER
+		WHERE  MBER_ID = #mberId#
+    </select> 
+        	
 	<update id="userManageDAO.updateUserSmishingYn" parameterClass="userVO">
 		UPDATE
 			LETTNGNRLMBER
@@ -1337,6 +1346,15 @@
 			AND MBER_ID			= #mberId#
 	</update>
 		
+	<update id="userManageDAO.updateUserAtSmishingYn" parameterClass="userVO">
+		UPDATE
+			LETTNGNRLMBER
+		SET  
+			AT_SMISHING_YN	= #atSmishingYn#
+		WHERE 1=1
+			AND MBER_ID			= #mberId#
+	</update>
+			
 	<update id="userManageDAO.updateUserPrePaymentYn" parameterClass="userVO">
 		UPDATE
 			LETTNGNRLMBER
src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
--- src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
+++ src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
@@ -1182,6 +1182,45 @@
 	}
 	
 }
+
+//알림톡 스미싱의심 여부
+function fnMberAtSmishingYn(){
+	var form = document.mberManageVO;
+	var atSmishingYn = form.atSmishingYn.value;
+	
+	if(confirm("알림톡 스미싱의심 여부를 변경하시겠습니까?")){
+		
+		$.ajax({
+	        type: "POST",
+	        url: "/uss/umt/user/EgovGnrlUpdateUserAtSmishingAjax.do",
+	        data: {"atSmishingYn" : atSmishingYn, "mberId" : "${mberManageVO.mberId}"},
+	        dataType:'json',
+	        async: false,
+	        success: function (data, status) {
+				if (data.isSuccess) {
+					alert("변경 완료했습니다.");
+				}
+				else {
+					alert(data.msg);
+				}
+			},
+	        beforeSend: function () {
+	        	//로딩창 show
+	        	$('.loading_layer').addClass('active');
+	        }, 
+	        complete: function () {
+	        	//로딩창 hide
+	        	$('.loading_layer').removeClass('active');
+	        },
+	        error: function (e) { 
+	        	alert("에러가 발생했습니다."); console.log("ERROR : ", e); 
+	        }
+	    });
+		
+	}
+	
+}
+
 // VIP 여부
 function fnMberVIPYn(){
 	var form = document.mberManageVO;
@@ -2535,6 +2574,20 @@
 												</select>
 											</td>											
 										</tr>
+										<%-- 
+										<tr>
+											<th>스미싱 의심(카톡)</th>
+											<td>
+												<select name="atSmishingYn" id="atSmishingYn" style="width:150px;" onFocus='this.initialSelect = this.selectedIndex;' onChange="javascript:fnMberAtSmishingYn();">
+													<option value="Y" <c:if test="${mberManageVO.atSmishingYn == 'Y'}">selected="selected"</c:if>>온(On)</option>
+													<option value="N" <c:if test="${mberManageVO.atSmishingYn == 'N'}">selected="selected"</c:if>>오프(Off)</option>
+												</select>
+											</td>
+											<th></th>
+											<td>
+											</td>											
+										</tr>
+										--%>																				
 										<tr>
 											<th>전용 전송사</th>
 											<td>
@@ -2969,6 +3022,20 @@
 												</select>
 											</td>											
 										</tr>
+										<%-- 
+										<tr>
+											<th>스미싱 의심(카톡)</th>
+											<td>
+												<select name="atSmishingYn" id="atSmishingYn" style="width:150px;" onFocus='this.initialSelect = this.selectedIndex;' onChange="javascript:fnMberAtSmishingYn();">
+													<option value="Y" <c:if test="${mberManageVO.atSmishingYn == 'Y'}">selected="selected"</c:if>>온(On)</option>
+													<option value="N" <c:if test="${mberManageVO.atSmishingYn == 'N'}">selected="selected"</c:if>>오프(Off)</option>
+												</select>
+											</td>
+											<th></th>
+											<td>
+											</td>											
+										</tr>
+										--%>										
 										<tr>
 											<th>전용 전송사</th>
 											<td>
src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
@@ -295,8 +295,8 @@
 	
 }
 
-//스미싱의심 온/오프
-function fnSmishingUpdate(flag) {
+//알림톡 스미싱의심 온/오프
+function fnAtSmishingUpdate(flag) {
 	if($("input:checkbox[name='checkField']").is(":checked")==false){
 		alert("선택된 항목이 없습니다.");
 		return;
@@ -322,15 +322,15 @@
     if(checkedIds.length > 0) {
     	var msg = "";
 		if(flag == 'on') {
-			document.listForm.smishingYn.value='Y';
-			msg = "선택하신 사용자의 스미싱의심을 On 하시겠습니까?";
+			document.listForm.atSmishingYn.value='Y';
+			msg = "선택하신 사용자의 알림톡 스미싱의심을 On 하시겠습니까?";
 		} else {
-			document.listForm.smishingYn.value='N';
-			msg = "선택하신 사용자의 스미싱의심을 Off 하시겠습니까?";
+			document.listForm.atSmishingYn.value='N';
+			msg = "선택하신 사용자의 알림톡 스미싱의심을 Off 하시겠습니까?";
 		}
         if(confirm(msg)){
             document.listForm.checkedIdForDel.value=checkedIds;
-            document.listForm.action = "<c:url value='/uss/ion/msg/MsgUsersSmishingUpdate.do'/>";
+            document.listForm.action = "<c:url value='/uss/ion/msg/MsgUsersAtSmishingUpdate.do'/>";
             document.listForm.submit();
         }
     }
@@ -369,7 +369,7 @@
 	<input type="hidden" name="ntceEndde" id="ntceEndde"  value="">
 	<input type="hidden" name="adminSmsNoticeYn" value=""/>
 	<input name="checkedIdForDel" type="hidden" />
-	<input type="hidden" name="smishingYn" value=""/>
+	<input type="hidden" name="atSmishingYn" value=""/>
 	
 	<div class="contWrap">
 		<div class="pageTitle">
@@ -506,7 +506,7 @@
 								<c:out value="${result.yellowId}"/>							
 		                    </td>				
 							
-							<%-- <td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.smishingYn eq 'Y'}">class="smishing" style="cursor:pointer;"</c:if><c:if test="${result.smishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
+							<%-- <td onclick="fn_detail_list('${result.msgGroupId}'); return false;" <c:if test="${result.atSmishingYn eq 'Y'}">class="atSmishingYn" style="cursor:pointer;"</c:if><c:if test="${result.atSmishingYn eq 'N'}">style="cursor:pointer;"</c:if>>
 								<c:out value="${result.callFrom}"/>
 							</td> --%>
 								
@@ -552,7 +552,7 @@
 								<c:out value="${result.msgTypeName}"/>
 							</td>
 							<%-- <td><c:out value="${result.conectMthdTxt}"/></td> --%>
-							<%-- <td <c:if test="${result.smishingYn eq 'Y'}">class="smishing"</c:if>>
+							<%-- <td <c:if test="${result.atSmishingYn eq 'Y'}">class="atSmishingYn"</c:if>>
 								<c:out value="${result.agentCodeTxt}"/>
 							</td> --%>
 							<%-- <td><c:out value="${result.rsltNet}"/></td> --%>
@@ -565,10 +565,10 @@
 				</table>
 			</div>
 			<div class="btnWrap" style="margin-bottom: 15px;">
-				<!-- <input type="button" class="btnType2" style="padding:5px 10px" onclick="fnSmsNotiUpdate('on'); return false;" value="법인폰 ON">
-				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnSmsNotiUpdate('off'); return false;" value="법인폰 OFF">
-				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnSmishingUpdate('on'); return false;" value="스미싱 ON">
-				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnSmishingUpdate('off'); return false;" value="스미싱 OFF"> -->
+			<!--  
+				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnAtSmishingUpdate('on'); return false;" value="알림톡 스미싱 ON">
+				<input type="button" class="btnType2" style="padding:5px 10px" onclick="fnAtSmishingUpdate('off'); return false;" value="알림톡 스미싱 OFF">
+			-->
 			</div>
 			
 			<!-- 페이지 네비게이션 시작 -->
Add a comment
List