이호영 이호영 2024-11-18
다중 인증 휴대폰 번호 관리 로직 추가
@3e2e039c807169ec9bdd6bf4e3b29c10bc0a8e8d
src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java
--- src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java
+++ src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java
@@ -3,9 +3,11 @@
 import java.util.List;
 
 import itn.let.lett.service.LetterVO;
+import itn.let.mail.service.StatusResponse;
 import itn.let.mjo.addr.service.AddrVO;
 import itn.let.mjo.msg.service.MjonMsgVO;
 import itn.let.sym.site.service.JoinSettingVO;
+import itn.let.uat.uia.service.MberCertPhoneVO;
 import itn.let.uat.uia.web.SendLogVO;
 import itn.let.uss.umt.service.MberManageVO;
 
@@ -176,6 +178,12 @@
 	
 	//팩스 거래명세서 합산 정보
 	public List<MjonMsgVO> selectPayUserSumFaxList(MjonMsgVO mjonMsgVO) throws Exception;
+
+	public List<MberCertPhoneVO> selectMberCertPhoneList(String userId);
+
+	public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
+
+	public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
 	
 	
 }
src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java
--- src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java
+++ src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java
@@ -6,10 +6,12 @@
 
 import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
 import itn.let.lett.service.LetterVO;
+import itn.let.mail.service.StatusResponse;
 import itn.let.mjo.addr.service.AddrVO;
 import itn.let.mjo.msg.service.MjonMsgVO;
 import itn.let.mjo.msgdata.service.MjonMsgDataVO;
 import itn.let.sym.site.service.JoinSettingVO;
+import itn.let.uat.uia.service.MberCertPhoneVO;
 import itn.let.uat.uia.web.SendLogVO;
 import itn.let.uss.umt.service.MberManageVO;
 
@@ -365,5 +367,21 @@
 	public List<MjonMsgVO> selectPayUserSumFaxList(MjonMsgVO mjonMsgVO) throws Exception{
 		return (List<MjonMsgVO>) list("mjonMsgDAO.selectPayUserSumFaxList",mjonMsgVO);
 	}
+
+
+	public List<MberCertPhoneVO> selectMberCertPhoneList(String userId) {
+		
+		return (List<MberCertPhoneVO>) list("mjonMsgDataDAO.selectMberCertPhoneList", userId);
+	}
+
+
+	public void insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
+		insert("mjonMsgDataDAO.insertMberCertPhoneInfo", mberCertPhoneVO);
+	}
+
+
+	public void deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
+		update("mjonMsgDataDAO.deleteCertPhoneInfo", mberCertPhoneVO);
+	}
 	
 }
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
This diff is too big to display.
 
src/main/java/itn/let/uat/uia/service/MberCertPhoneVO.java (added)
+++ src/main/java/itn/let/uat/uia/service/MberCertPhoneVO.java
@@ -0,0 +1,65 @@
+package itn.let.uat.uia.service;
+
+import itn.let.uss.umt.service.UserDefaultVO;
+
+/**
+ * 
+ * @author 		: 이호영
+ * @fileName 	: MberCertPhoneVO.java 
+ * @date 		: 2024.11.18
+ * @description : 발신번호 lettngnrlmber_cert_phone 관련 vo
+ * =========================================================== 
+ * DATE          AUTHOR   NOTE 
+ * ----------------------------------------------------------- *
+ * 2024.11.18    이호영          최초 생성
+ * 
+ * 
+ * 
+ */
+public class MberCertPhoneVO extends UserDefaultVO{
+
+	
+	/**
+	 * @description :
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	
+	private String mberId;
+	private String mbtlnum;
+	private String certUseYn;
+	private String certMbtlnum;
+	
+	
+	
+	
+	
+	public String getMberId() {
+		return mberId;
+	}
+	public void setMberId(String mberId) {
+		this.mberId = mberId;
+	}
+	public String getMbtlnum() {
+		return mbtlnum;
+	}
+	public void setMbtlnum(String mbtlnum) {
+		this.mbtlnum = mbtlnum;
+	}
+	
+	public String getCertUseYn() {
+		return certUseYn;
+	}
+	public void setCertUseYn(String certUseYn) {
+		this.certUseYn = certUseYn;
+	}
+	public String getCertMbtlnum() {
+		return certMbtlnum;
+	}
+	public void setCertMbtlnum(String certMbtlnum) {
+		this.certMbtlnum = certMbtlnum;
+	}
+	
+	
+	
+}
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
@@ -17,6 +17,7 @@
 import java.security.PublicKey;
 import java.security.spec.RSAPublicKeySpec;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -32,6 +33,7 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.usermodel.Font;
@@ -39,6 +41,8 @@
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.ModelMap;
@@ -85,6 +89,7 @@
 import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiProfile;
 import itn.let.kakao.kakaoComm.kakaoApi.KakaoApiTemplate;
 import itn.let.kakao.kakaoComm.kakaoApi.service.KakaoApiService;
+import itn.let.mail.service.StatusResponse;
 import itn.let.mjo.addr.service.AddrService;
 import itn.let.mjo.addr.service.AddrVO;
 import itn.let.mjo.event.service.MjonEventService;
@@ -126,6 +131,7 @@
 import itn.let.sym.site.service.JoinSettingVO;
 import itn.let.sym.site.service.SiteManagerVO;
 import itn.let.uat.uia.service.EgovLoginService;
+import itn.let.uat.uia.service.MberCertPhoneVO;
 import itn.let.uat.uia.web.EmailVO;
 import itn.let.uat.uia.web.SendLogVO;
 import itn.let.uat.uia.web.SendMail;
@@ -1093,6 +1099,12 @@
 		model.addAttribute("countNum", countNum);
 		model.addAttribute("sendNumberList", sendNumberList);
 		
+
+		
+
+		List<MberCertPhoneVO> mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneList(userId);
+		model.addAttribute("mberCertPhoneList", mberCertPhoneList);
+		
 		//문자발송 단가 조회하기
 		//1.시스템 기본 단가 정보 조회하기
 		JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo();
@@ -1645,6 +1657,46 @@
 		return modelAndView;
 	}	
 	
+	@RequestMapping(value = {"/uss/umt/user/insertCertPhone.do"})
+	public ResponseEntity<StatusResponse> insertCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception {
+		
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+		
+		//로그인 권한정보 불러오기
+		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+		
+		if(userId == null) {
+			if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
+		}
+		mberCertPhoneVO.setFrstRegisterId(userId);
+		
+		
+		
+		return ResponseEntity.ok().body(mjonMsgDataService.insertMberCertPhoneInfo(mberCertPhoneVO));
+	}	
+	
+	@RequestMapping(value = {"/uss/umt/user/deleteCertPhone.do"})
+	public ResponseEntity<StatusResponse> deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception {
+		
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+		
+		//로그인 권한정보 불러오기
+		LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+		String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+		
+		if(userId == null) {
+			if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
+		}
+		mberCertPhoneVO.setLastUpdusrId(userId);
+		
+		
+		
+		return ResponseEntity.ok().body(mjonMsgDataService.deleteCertPhoneInfo(mberCertPhoneVO));
+	}	
+	
 	/**
      * 회원정보 팝업 이벤트 정보 신규 추가  기능
      * @param eventVO
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
@@ -20,6 +20,8 @@
 	<typeAlias  alias="mjonSwearWordVO" type="itn.let.mjo.msg.service.MjonSwearWordVO"/>
 	<typeAlias  alias="mjonMsgResvVO" type="itn.let.mjo.reservmsg.service.MjonResvMsgVO"/>
 	<typeAlias  alias="mjonMsgStatVO" type="itn.let.mjo.msg.service.MjonMsgStatVO"/>
+	<typeAlias  alias="mjonMsgStatVO" type="itn.let.mjo.msg.service.MjonMsgStatVO"/>
+	<typeAlias  alias="mberCertPhoneVO" type="itn.let.uat.uia.service.MberCertPhoneVO"/>
 	
 	
 	<!-- 공통 쿼리 부분 문자 발송 관련 -->
@@ -3738,7 +3740,7 @@
 				where MBER_ID=#sendId#				
 				union all			
 				select mber_id, mbtlnum
-				from lettngnrlmber
+				from lettngnrlmber_cert_phone
 				where MBER_ID=#sendId#				
 			
 			) b
@@ -3753,6 +3755,58 @@
 		LIMIT    1
 	</select>
 	
+	
+	
+	<select id="mjonMsgDataDAO.selectMberCertPhoneList" parameterClass="String" resultClass="mberCertPhoneVO">
+		SELECT 
+		    MBTLNUM AS mbtlnum,
+		    '-' AS frstRegistPnttm
+		FROM 
+		    lettngnrlmber
+		WHERE MBER_ID = #userId#
+		UNION ALL
+		SELECT 
+		    MBTLNUM AS mbtlnum,
+		    FRST_REGIST_PNTTM AS frstRegistPnttm
+		FROM 
+		    lettngnrlmber_cert_phone
+		WHERE MBER_ID = #userId#
+		AND CERT_USE_YN = 'Y'
+	</select>
+	
+	
+	<insert id="mjonMsgDataDAO.insertMberCertPhoneInfo" parameterClass="mberCertPhoneVO">
+	
+		INSERT
+		INTO   LETTNGNRLMBER_CERT_PHONE
+		       (
+					MBER_ID
+					, MBTLNUM
+					, FRST_REGIST_PNTTM
+					, FRST_REGISTER_ID
+				)
+				VALUES
+				(
+					#mberId#
+					, #mbtlnum#
+					, now()
+					, #frstRegisterId#
+				)
+	</insert>
+	
+	<update id="mjonMsgDataDAO.deleteCertPhoneInfo" parameterClass="mberCertPhoneVO">
+	
+		UPDATE LETTNGNRLMBER_CERT_PHONE
+			SET CERT_USE_YN = 'N'
+			, LAST_UPDUSR_ID = #lastUpdusrId#
+		WHERE 
+			MBER_ID = #mberId#
+		AND MBTLNUM = #mbtlnum#
+				
+				
+	</update>
+	
+	
 	<!-- 발신번호 등록 여부  조회 -->
 	<select id="mjonMsgDAO.selectSendPhonNumCheck" parameterClass="mjonMsgVO" resultClass="int">
 		SELECT
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
@@ -2072,6 +2072,90 @@
 	
 }
 
+//이벤트 수정하기
+function fn_certPhoneReg(){
+	var mberId = $('#cashUserId').val();
+	
+	var mbtlnum = $('#pop_mbtlnum').val();
+	if(mbtlnum == ''){
+		
+		alert("등록할 인증번호를 입력해주세요.");
+		return false;
+		
+	}
+	
+	
+	var params = {
+		"mberId" : mberId
+    	, "mbtlnum" : mbtlnum
+    }
+	console.log('params : ', params);
+	
+	if(!confirm("인증번호를 등록 하시겠습니까?")){
+		return false;
+	}
+	
+	$.ajax({
+        type: "POST",
+        url: "/uss/umt/user/insertCertPhone.do",
+        data: params,
+        dataType:'json',
+        async: false,
+        success: function (returnData) {
+
+        	console.log('returnData : ', returnData);
+        	if(returnData.status == 'OK'){
+					alert(returnData.message);
+					location.reload();
+        	}else{
+					alert("오류가 발생하였습니다.");
+        	}
+		},
+        error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
+    });
+	
+}
+
+
+
+//이벤트 수정하기
+function fn_certPhoneDel(mbtlnum){
+	var mberId = $('#cashUserId').val();
+	
+	var mbtlnum = mbtlnum;
+	
+	
+	var params = {
+		"mberId" : mberId
+  	, "mbtlnum" : mbtlnum
+  }
+	console.log('params : ', params);
+	
+	if(!confirm(mbtlnum+" 번호를 정말 삭제하시겠습니까?")){
+		return false;
+	}
+	
+	$.ajax({
+      type: "POST",
+      url: "/uss/umt/user/deleteCertPhone.do",
+      data: params,
+      dataType:'json',
+      async: false,
+      success: function (returnData) {
+
+      	console.log('returnData : ', returnData);
+      	if(returnData.status == 'OK'){
+					alert(returnData.message);
+					location.reload();
+      	}else{
+					alert("오류가 발생하였습니다.");
+      	}
+		},
+      error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
+  });
+	
+}
+
 
 function fnEventAdd(){
 	
@@ -5107,6 +5191,59 @@
 						</tbody>
 					</table>
 					<!-- //발신번호 리스트 -->
+					<!-- 인증 번호 리스트 -->
+					<div class="title_box">
+						<p>인증 번호 리스트</p>
+						<span style="float: right;">
+							<span style="letter-spacing: 0em !important; margin-left: 5px;">
+								<button type="button" onclick="layerPopOpen('certPhoneReg');" class="fill">등록</button>
+							</span>
+						</span>
+					</div>
+					<table class="user_table_col">
+						<colgroup>
+							<col style="width:calc(70%);">
+							<col style="width:calc(30%);">
+						</colgroup>
+						<thead>
+							<tr>
+								<th>인증번호</th>
+								<th>삭제</th>
+							</tr>
+						</thead>
+						<tbody>
+							<c:choose>
+								<c:when test="${not empty mberCertPhoneList}">
+									<c:forEach var="list" items="${mberCertPhoneList}" varStatus="status">
+										<tr>
+											<td>
+												<c:out value="${list.mbtlnum}"/>
+											</td>
+											<td>
+											<c:choose>
+												<c:when test="${list.frstRegistPnttm eq '-'}">
+													대표번호
+												</c:when>
+												<c:otherwise>
+													<div class="button_box">
+														<button type="button" class="thinfill" onclick="fn_certPhoneDel('<c:out value="${list.mbtlnum}"/>'); return false;">삭제</button>
+													</div>
+												</c:otherwise>
+											</c:choose>
+											</td>
+										</tr>
+									</c:forEach>
+								</c:when>
+								<c:otherwise>
+									<tr>
+										<td colspan="2">등록된 인증번호가 없습니다.</td>
+									</tr>
+								</c:otherwise>
+							</c:choose>
+							
+						</tbody>
+					</table>
+					<!-- //발신번호 리스트 -->
 					
 					<!-- 문자전송금액 -->
 					<div class="title_box">
@@ -6236,7 +6373,7 @@
 							<th>첫결제 충전캐시</th>
 							<td>
 								<%-- <input type="text" name="eventRemainCash2" id="eventRemainCash2" value="<c:out value="${eventMberInfo.eventRemainCash}" />"  maxlength="9"/> --%>
-								<input type="text" step="0.01" id="eventRemainCash2" name="eventRemainCash2" value="<c:out value="${eventMberInfo.eventRemainCash}" />" title="캐시" maxlength="20" onblur="foucusOut(this)"/>
+								<input type="text" step="0.01" id="eventRemainCash2" value="<c:out value="${eventMberInfo.eventRemainCash}" />" title="캐시" maxlength="20" onblur="foucusOut(this)"/>
 							</td>
 						</tr>
 						<tr>
@@ -6260,6 +6397,31 @@
 				</div>
 			</div>
 		</div>
+		
+		<!-- 인증번호 등록 -->
+		<div class="layer_popup layer_certPhoneReg">
+			<div class="title_box">인증번호 등록<button type="button" class="close_btn" onclick="layerPopClose(this);"></button></div>
+			<div class="layer_content">
+				<table>
+					<colgroup>
+						<col style="width:150px;">
+						<col style="width:auto;">
+					</colgroup>
+					<tbody>
+						<tr>
+							<th>인증번호</th>
+							<td>
+								<input type="text" id="pop_mbtlnum" title="인증번호" maxlength="20"  oninput="this.value=this.value.replace(/[^0-9]/g,'')"/>
+							</td>
+						</tr>
+					</tbody>
+				</table>
+				<div class="button_box">
+<!-- 					<button type="button" onclick="fnEventEdit(); return false;">인증번호 등록</button> -->
+					<button type="button" onclick="fn_certPhoneReg(); return false;">인증번호 등록</button>
+				</div>
+			</div>
+		</div>
 				
 		<!-- 이벤트 정보 신규 추가해주기 -->
 		<div class="layer_popup layer_eventAdd">
src/main/webapp/WEB-INF/jsp/web/login/EgovLoginGnrlUsr.jsp
--- src/main/webapp/WEB-INF/jsp/web/login/EgovLoginGnrlUsr.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/EgovLoginGnrlUsr.jsp
@@ -587,13 +587,15 @@
 						<div class="input_left">휴대폰번호</div>
 						<div class="input_right">
 							<label for="list_inputType1" class="label">휴대폰번호</label> 
-							<input type="text" id="hp_text2" class="list_inputType1" placeholder="가입휴대폰번호" style="width: 250px;"
-							onfocus="this.placeholder=''" onblur="this.placeholder='가입휴대폰번호'" maxlength="20" readonly>
+<!-- 							<input type="text" id="hp_text2" class="list_inputType1" placeholder="가입휴대폰번호" style="width: 250px;" -->
+<!-- 							onfocus="this.placeholder=''" onblur="this.placeholder='가입휴대폰번호'" maxlength="20" readonly> -->
+							<select id="hp_text2" name="callFromList" class="sel_number list_selType1" style="width:70%;">
+								<option value="">등록된 발신 번호가 없습니다.</option>
+							</select>
 						</div>
 						<div class="login_del">
 							
-								
-<button type="button" onclick="sendMsgYn();">인증번호 받기</button>								
+							<button type="button" class="btnType btnType3" onclick="sendMsgYn();">인증번호 받기</button>								
 								
 							
 						</div>
Add a comment
List