이호영 이호영 2024-11-20
인증번호 패키지화 완료
@6223dd1cdbcded2fc804c017b3633c5fedbdcf16
src/main/java/itn/let/cert/ip/service/CertIpService.java
--- src/main/java/itn/let/cert/ip/service/CertIpService.java
+++ src/main/java/itn/let/cert/ip/service/CertIpService.java
@@ -29,6 +29,8 @@
 
 	public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO);
 
+	public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO);
+
 	
 	
 }
src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java
--- src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java
+++ src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java
@@ -6,27 +6,26 @@
 
 import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
 import itn.let.cert.ip.service.MberCertIpVO;
-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;
 
 @Repository("CertIpDAO")
 public class CertIpDAO extends EgovAbstractDAO {
 
 
 
-	public List<MberCertIpVO> selectMberCertIpList(MberCertIpVO mberCertPhoneVO) {
-		return (List<MberCertIpVO>) list("MberCertIpVO.selectMberCertIpList", mberCertPhoneVO);
+	public List<MberCertIpVO> selectMberCertIpList(MberCertIpVO mberCertIpVO) {
+		return (List<MberCertIpVO>) list("MberCertIpVO.selectMberCertIpList", mberCertIpVO);
 	}
 
 	public void insertCertIp(MberCertIpVO mberCertIpVO) {
 		insert("MberCertIpVO.insertCertIp", mberCertIpVO);
 	}
+
+	public void deleteCertIp(MberCertIpVO mberCertIpVO) {
+		insert("MberCertIpVO.deleteCertIp", mberCertIpVO);
+	}
+
+	public MberCertIpVO findByMberCertIpList(MberCertIpVO mberCertIpVO) {
+		return (MberCertIpVO) select("MberCertIpVO.findByMberCertIpList", mberCertIpVO);
+	}
 	
 }
src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java
--- src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java
+++ src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java
@@ -29,8 +29,19 @@
 
 	@Override
 	public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO) {
+		MberCertIpVO mberCertIpListVO = certIpDAO.findByMberCertIpList(mberCertIpVO);
+		if(mberCertIpListVO != null) {
+			return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now());
+		}
 		certIpDAO.insertCertIp(mberCertIpVO);
 		return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now());
 	}
+
+
+	@Override
+	public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO) {
+		certIpDAO.deleteCertIp(mberCertIpVO);
+		return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now());
+	}
 	
 }
src/main/java/itn/let/cert/ip/web/CertIpController.java
--- src/main/java/itn/let/cert/ip/web/CertIpController.java
+++ src/main/java/itn/let/cert/ip/web/CertIpController.java
@@ -44,7 +44,6 @@
 	@RequestMapping(value = {"/cert/ip/selectMberCertIpList.do"})
 	public ResponseEntity<StatusResponse> selectMberCertIpList(MberCertIpVO mberCertPhoneVO) throws Exception {
 		
-		System.out.println("????????????????????????????");
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.setViewName("jsonView");
 		
@@ -79,10 +78,9 @@
 		
 		return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO));
 	}	
-	/*
 	
-	@RequestMapping(value = {"/cert/ip/findByCertIp.do"})
-	public ResponseEntity<StatusResponse> findByCertIp(MberCertIpVO mberCertPhoneVO) throws Exception {
+	@RequestMapping(value = {"/cert/ip/deleteCertIp.do"})
+	public ResponseEntity<StatusResponse> deleteCertIp(MberCertIpVO mberCertIpVO) throws Exception {
 		
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.setViewName("jsonView");
@@ -94,47 +92,11 @@
 		if(userId == null) {
 			if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
 		}
-		return ResponseEntity.ok().body(certIpService.findByCertPhoneInfo(mberCertPhoneVO));
+		mberCertIpVO.setLastUpdusrId(userId);
+		mberCertIpVO.setMberId(userId);
+		
+		
+		return ResponseEntity.ok().body(certIpService.deleteCertIp(mberCertIpVO));
 	}	
-	
-	@RequestMapping(value = {"/uss/umt/user/updateCertPhone.do"})
-	public ResponseEntity<StatusResponse> updateCertPhone(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(certIpService.updateMberCertPhoneInfo(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(certIpService.deleteCertPhoneInfo(mberCertPhoneVO));
-	}	
-	*/
 		
 }
(No newline at end of file)
 
src/main/java/itn/let/cert/phone/service/CertPhoneService.java (added)
+++ src/main/java/itn/let/cert/phone/service/CertPhoneService.java
@@ -0,0 +1,35 @@
+package itn.let.cert.phone.service;
+
+import java.util.List;
+
+import itn.let.mail.service.StatusResponse;
+
+public interface CertPhoneService {
+
+//	public List<MberCertPhoneVO> selectMberCertPhoneList(String userId);
+//
+//	public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
+//
+//	public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
+//
+//	public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO);
+//
+	public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
+//
+//	public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
+
+	public StatusResponse selectMberCertPhoneList(MberCertPhoneVO mberCertPhoneVO);
+
+	public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO);
+
+	public StatusResponse deleteCertPhone(MberCertPhoneVO mberCertPhoneVO);
+
+	public List<MberCertPhoneVO> selectMberCertPhoneList(String userId);
+
+	public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO);
+
+
+
+	
+	
+}
src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java (Renamed from src/main/java/itn/let/uat/uia/service/MberCertPhoneVO.java)
--- src/main/java/itn/let/uat/uia/service/MberCertPhoneVO.java
+++ src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java
@@ -1,4 +1,4 @@
-package itn.let.uat.uia.service;
+package itn.let.cert.phone.service;
 
 import itn.let.uss.umt.service.UserDefaultVO;
 
@@ -7,7 +7,7 @@
  * @author 		: 이호영
  * @fileName 	: MberCertPhoneVO.java 
  * @date 		: 2024.11.18
- * @description : 발신번호 lettngnrlmber_cert_phone 관련 vo
+ * @description : 발신번호 lettngnrlmber_cert_ip 관련 vo
  * =========================================================== 
  * DATE          AUTHOR   NOTE 
  * ----------------------------------------------------------- *
@@ -16,6 +16,7 @@
  * 
  * 
  */
+
 public class MberCertPhoneVO extends UserDefaultVO{
 
 	
@@ -30,7 +31,6 @@
 	private String certAlias;
 	private String certMemo;
 	private String certUseYn;
-	private String certMbtlnum;
 	
 	
 	
@@ -65,12 +65,6 @@
 	}
 	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/cert/phone/service/impl/CertPhoneDAO.java (added)
+++ src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java
@@ -0,0 +1,37 @@
+package itn.let.cert.phone.service.impl;
+
+import java.util.List;
+
+import org.springframework.stereotype.Repository;
+
+import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
+import itn.let.cert.phone.service.MberCertPhoneVO;
+
+@Repository("CertPhoneDAO")
+public class CertPhoneDAO extends EgovAbstractDAO {
+
+	public List<MberCertPhoneVO> selectMberCertPhoneList(String userId) {
+		return (List<MberCertPhoneVO>) list("mberCertPhoneVO.selectMberCertPhoneList", userId);
+	}
+
+	public void insertCertPhone(MberCertPhoneVO mberCertPhoneVO) {
+		insert("mberCertPhoneVO.insertCertPhone", mberCertPhoneVO);
+	}
+
+	public void deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) {
+		insert("mberCertPhoneVO.deleteCertPhone", mberCertPhoneVO);
+	}
+
+	public MberCertPhoneVO findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
+		return (MberCertPhoneVO) select("mberCertPhoneVO.findByCertPhoneInfo", mberCertPhoneVO);
+	}
+
+	public void updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO) {
+		insert("mberCertPhoneVO.updateMberCertPhone", mberCertPhoneVO);
+		
+	}
+
+	public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) {
+		return (List<MberCertPhoneVO>) list("mberCertPhoneVO.selectMberCertPhoneListVO", mberCertPhoneVO);
+	}
+}
 
src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java (added)
+++ src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java
@@ -0,0 +1,68 @@
+package itn.let.cert.phone.service.impl;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Service;
+
+import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import itn.let.cert.phone.service.CertPhoneService;
+import itn.let.cert.phone.service.MberCertPhoneVO;
+import itn.let.mail.service.StatusResponse;
+
+@Service("CertPhoneService")
+public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements CertPhoneService {
+
+	@Resource(name = "CertPhoneDAO")
+	private CertPhoneDAO certPhoneDAO;
+
+
+	@Override
+	public StatusResponse selectMberCertPhoneList(MberCertPhoneVO mberCertPhoneVO) {
+		List<MberCertPhoneVO> mberCertIpListVO = certPhoneDAO.selectMberCertPhoneListVO(mberCertPhoneVO);
+		return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now());
+	}
+
+
+	@Override
+	public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO) {
+		MberCertPhoneVO mberCertIpListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO);
+		if(mberCertIpListVO != null) {
+			return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now());
+		}
+		certPhoneDAO.insertCertPhone(mberCertPhoneVO);
+		return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now());
+	}
+
+
+	@Override
+	public StatusResponse deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) {
+		certPhoneDAO.deleteCertPhone(mberCertPhoneVO);
+		return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now());
+	}
+	
+
+	@Override
+	public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
+		MberCertPhoneVO mberCertIpListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO);
+		return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now());
+	}
+
+
+	@Override
+	public List<MberCertPhoneVO> selectMberCertPhoneList(String userId) {
+		return certPhoneDAO.selectMberCertPhoneList(userId);
+		
+	}
+
+
+	@Override
+	public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO) {
+		certPhoneDAO.updateMberCertPhone(mberCertPhoneVO);
+		return new StatusResponse(HttpStatus.OK, "수정 하였습니다.", LocalDateTime.now());
+	}
+	
+}
 
src/main/java/itn/let/cert/phone/web/CertPhoneController.java (added)
+++ src/main/java/itn/let/cert/phone/web/CertPhoneController.java
@@ -0,0 +1,178 @@
+package itn.let.cert.phone.web;
+
+import java.time.LocalDateTime;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
+import itn.com.cmm.LoginVO;
+import itn.com.utl.fcc.service.EgovStringUtil;
+import itn.let.cert.phone.service.MberCertPhoneVO;
+import itn.let.cert.phone.service.CertPhoneService;
+import itn.let.mail.service.StatusResponse;
+
+/**
+ * 
+ * @author 		: 이호영
+ * @fileName 	: CertIpController.java 
+ * @date 		: 2024.11.19
+ * @description : 허용 IP 관련 컨트롤러
+ * =========================================================== 
+ * DATE          AUTHOR   NOTE 
+ * ----------------------------------------------------------- *
+ * 2024.11.19    이호영          최초 생성
+ * 
+ * 
+ * 
+ */
+@Controller
+public class CertPhoneController {
+	
+	
+	/* certPhoneService */
+	@Resource(name = "CertPhoneService")
+	private CertPhoneService certPhoneService;
+	
+	
+	
+
+	@RequestMapping(value = {"/cert/phone/findByCertPhoneInfo.do"})
+	public ResponseEntity<StatusResponse> findByCertPhoneInfo(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()));
+		}
+		return ResponseEntity.ok().body(certPhoneService.findByCertPhoneInfo(mberCertPhoneVO));
+	}	
+	
+	@RequestMapping(value = {"/cert/phone/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(certPhoneService.insertCertPhone(mberCertPhoneVO));
+	}	
+	
+	@RequestMapping(value = {"/cert/phone/updateCertPhone.do"})
+	public ResponseEntity<StatusResponse> updateCertPhone(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(certPhoneService.updateMberCertPhone(mberCertPhoneVO));
+	}	
+	
+	@RequestMapping(value = {"/cert/phone/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(certPhoneService.deleteCertPhone(mberCertPhoneVO));
+	}	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	/*
+	
+	@RequestMapping(value = {"/uss/umt/user/updateCertPhone.do"})
+	public ResponseEntity<StatusResponse> updateCertPhone(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(certPhoneService.updateMberCertPhoneInfo(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(certPhoneService.deleteCertPhoneInfo(mberCertPhoneVO));
+	}	
+	*/
+		
+}(No newline at end of file)
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,11 +3,9 @@
 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;
 
@@ -179,17 +177,6 @@
 	//팩스 거래명세서 합산 정보
 	public List<MjonMsgVO> selectPayUserSumFaxList(MjonMsgVO mjonMsgVO) throws Exception;
 
-	public List<MberCertPhoneVO> selectMberCertPhoneList(String userId);
-
-	public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
-
-	public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
-
-	public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO);
-
-	public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
-
-	public StatusResponse updateMberCertPhoneInfo(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,12 +6,10 @@
 
 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;
 
@@ -369,33 +367,4 @@
 	}
 
 
-	public List<MberCertPhoneVO> selectMberCertPhoneList(String userId) {
-		
-		return (List<MberCertPhoneVO>) list("mjonMsgDataDAO.selectMberCertPhoneList", userId);
-	}
-
-
-	public void insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
-		insert("mjonMsgDataDAO.insertMberCertPhoneInfo", mberCertPhoneVO);
-	}
-	
-	public void updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
-		update("mjonMsgDataDAO.updateMberCertPhoneInfo", mberCertPhoneVO);
-	}
-
-
-	public void deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
-		update("mjonMsgDataDAO.deleteCertPhoneInfo", mberCertPhoneVO);
-	}
-
-
-	public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) {
-		return (List<MberCertPhoneVO>) list("mjonMsgDataDAO.selectMberCertPhoneListVO", mberCertPhoneVO);
-	}
-
-
-	public MberCertPhoneVO findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
-		return (MberCertPhoneVO) select("mjonMsgDataDAO.findByCertPhoneInfo", 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
@@ -1,7 +1,6 @@
 package itn.let.mjo.msgdata.service.impl;
 
 import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -9,7 +8,6 @@
 
 import javax.annotation.Resource;
 
-import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 
 import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
@@ -18,7 +16,6 @@
 import itn.com.cmm.util.MJUtil;
 import itn.com.cmm.util.StringUtil;
 import itn.let.lett.service.LetterVO;
-import itn.let.mail.service.StatusResponse;
 import itn.let.mjo.addr.service.AddrVO;
 import itn.let.mjo.event.service.MjonEventService;
 import itn.let.mjo.event.service.MjonEventVO;
@@ -40,7 +37,6 @@
 import itn.let.mjo.pay.service.impl.MjonPayDAO;
 import itn.let.sym.site.service.JoinSettingVO;
 import itn.let.sym.site.service.impl.SiteManagerDAO;
-import itn.let.uat.uia.service.MberCertPhoneVO;
 import itn.let.uat.uia.web.SendLogVO;
 import itn.let.uss.umt.service.MberManageVO;
 
@@ -3160,46 +3156,5 @@
 		return mjonMsgDataDAO.selectPayUserSumFaxList(mjonMsgVO);
 	}
 
-	@Override
-	public List<MberCertPhoneVO> selectMberCertPhoneList(String userId) {
-		return mjonMsgDataDAO.selectMberCertPhoneList(userId);
-	}
-
-	@Override
-	public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
-		MberCertPhoneVO mberCertPhoneReturnVO = mjonMsgDataDAO.findByCertPhoneInfo(mberCertPhoneVO);
-		if(mberCertPhoneReturnVO != null) {
-			return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now());
-		}
-		
-		
-		mjonMsgDataDAO.insertMberCertPhoneInfo(mberCertPhoneVO);
-		
-		return new StatusResponse(HttpStatus.OK, "등록하였습니다.", LocalDateTime.now());
-	}
-	
-	@Override
-	public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
-		mjonMsgDataDAO.updateMberCertPhoneInfo(mberCertPhoneVO);
-		return new StatusResponse(HttpStatus.OK, "수정하였습니다.", LocalDateTime.now());
-	}
-	
-	
-	@Override
-	public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
-		mjonMsgDataDAO.deleteCertPhoneInfo(mberCertPhoneVO);
-		return new StatusResponse(HttpStatus.OK, "삭제하였습니다.", LocalDateTime.now());
-	}
-
-	@Override
-	public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) {
-		return mjonMsgDataDAO.selectMberCertPhoneListVO(mberCertPhoneVO);
-	}
-	
-	@Override
-	public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
-		MberCertPhoneVO mberCertPhoneReturnVO = mjonMsgDataDAO.findByCertPhoneInfo(mberCertPhoneVO);
-		return new StatusResponse(HttpStatus.OK, mberCertPhoneReturnVO, LocalDateTime.now());
-	}
 	
 }
src/main/java/itn/let/uat/uia/web/EgovLoginController.java
--- src/main/java/itn/let/uat/uia/web/EgovLoginController.java
+++ src/main/java/itn/let/uat/uia/web/EgovLoginController.java
@@ -83,6 +83,8 @@
 import itn.com.cmm.util.WebUtil;
 import itn.com.uss.olh.hpc.service.HackIpService;
 import itn.com.uss.olh.hpc.service.HackIpVO;
+import itn.let.cert.phone.service.CertPhoneService;
+import itn.let.cert.phone.service.MberCertPhoneVO;
 import itn.let.cop.bbs.service.BoardVO;
 import itn.let.mjo.event.service.MjonEventService;
 import itn.let.mjo.event.service.MjonEventVO;
@@ -109,7 +111,6 @@
 import itn.let.uat.uap.service.LoginPolicyVO;
 import itn.let.uat.uia.service.AuthCertVO;
 import itn.let.uat.uia.service.EgovLoginService;
-import itn.let.uat.uia.service.MberCertPhoneVO;
 import itn.let.uss.umt.service.EgovMberManageService;
 import itn.let.uss.umt.service.EgovUserManageService;
 import itn.let.uss.umt.service.MberManageConfigVO;
@@ -237,6 +238,9 @@
 	
 	@Resource(name = "mberGrdService")
 	MberGrdService mberGrdService;
+
+	@Resource(name = "CertPhoneService")
+	private CertPhoneService certPhoneService;
 	
 	private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class);
 
@@ -2054,7 +2058,7 @@
 		 */
 		
 
-		List<MberCertPhoneVO> mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneList(resultVO.getId());
+		List<MberCertPhoneVO> mberCertPhoneList = certPhoneService.selectMberCertPhoneList(resultVO.getId());
 		
 		
 		modelAndView.addObject("status", "success");
@@ -3633,7 +3637,7 @@
 			mberCertPhoneVO.setMberId(mjonMsgVO.getUserId());
 			
 
-			List<MberCertPhoneVO> mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneListVO(mberCertPhoneVO);
+			List<MberCertPhoneVO> mberCertPhoneList = certPhoneService.selectMberCertPhoneList(mjonMsgVO.getUserId());
 			
 			
 			
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
@@ -79,6 +79,8 @@
 import itn.com.cmm.util.RedirectUrlMaker;
 import itn.com.cmm.util.StringUtil;
 import itn.com.utl.fcc.service.EgovStringUtil;
+import itn.let.cert.phone.service.CertPhoneService;
+import itn.let.cert.phone.service.MberCertPhoneVO;
 import itn.let.cop.bbs.service.BoardVO;
 import itn.let.fax.user.service.FaxGroupDataVO;
 import itn.let.fax.user.service.FaxService;
@@ -131,7 +133,6 @@
 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;
@@ -280,6 +281,10 @@
 	
 	@Resource(name = "MjonReservMsgService")
     private MjonReservMsgService mjonReservMsgService;
+	
+	
+	@Resource(name = "CertPhoneService")
+	private CertPhoneService certPhoneService;
 	
 	@Autowired
 	KakaoApiTemplate kakaoApiTemplate;
@@ -1102,7 +1107,7 @@
 
 		
 
-		List<MberCertPhoneVO> mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneList(userId);
+		List<MberCertPhoneVO> mberCertPhoneList = certPhoneService.selectMberCertPhoneList(userId);
 		model.addAttribute("mberCertPhoneList", mberCertPhoneList);
 		
 		//문자발송 단가 조회하기
@@ -1657,79 +1662,6 @@
 		return modelAndView;
 	}	
 	
-	@RequestMapping(value = {"/uss/umt/user/findByCertPhoneInfo.do"})
-	public ResponseEntity<StatusResponse> findByCertPhoneInfo(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()));
-		}
-		return ResponseEntity.ok().body(mjonMsgDataService.findByCertPhoneInfo(mberCertPhoneVO));
-	}	
-	
-	@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/updateCertPhone.do"})
-	public ResponseEntity<StatusResponse> updateCertPhone(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.updateMberCertPhoneInfo(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));
-	}	
 	
 	/**
      * 회원정보 팝업 이벤트 정보 신규 추가  기능
src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml
--- src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml
+++ src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml
@@ -4,4 +4,5 @@
 <sqlMapConfig>
 	<settings cacheModelsEnabled="true" useStatementNamespaces="true" />
 	<sqlMap resource="egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml"/>	 <!-- 문자메세지 -->
+	<sqlMap resource="egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml"/>	 <!-- 문자메세지 -->
 </sqlMapConfig>
src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml
@@ -8,6 +8,7 @@
 	<typeAlias  alias="mberCertIpVO" type="itn.let.cert.ip.service.MberCertIpVO"/>
 	
 	<select id="MberCertIpVO.selectMberCertIpList" parameterClass="mberCertIpVO" resultClass="mberCertIpVO">
+		/*MberCertIpVO.selectMberCertIpList*/
 		SELECT 
 			MBER_ID					as mberId
 			, CERT_IP				as certIp
@@ -21,17 +22,39 @@
 			LETTNGNRLMBER_CERT_IP
 		where 
 			MBER_ID = #mberId#
+		AND CERT_USE_YN = 'Y'
+		order by FRST_REGIST_PNTTM desc
+	</select>
+	
+	<select id="MberCertIpVO.findByMberCertIpList" parameterClass="mberCertIpVO" resultClass="mberCertIpVO">
+		/*MberCertIpVO.findByMberCertIpList*/
+		SELECT 
+			MBER_ID					as mberId
+			, CERT_IP				as certIp
+			, CERT_MEMO				as certMemo
+			, CERT_USE_YN			as certUseYn
+			, FRST_REGIST_PNTTM		as frstRegistPnttm
+			, FRST_REGISTER_ID		as frstRegisterId 
+			, LAST_UPDT_PNTTM		as lastUpdtPnttm
+			, LAST_UPDUSR_ID		as lastUpdusrId
+		FROM 
+			LETTNGNRLMBER_CERT_IP
+		where 
+			MBER_ID = #mberId#
+		AND CERT_IP = #certIp#
+		AND CERT_USE_YN = 'Y'
 	</select>
 	
 	
 	<insert id="MberCertIpVO.insertCertIp">
+		/*MberCertIpVO.insertCertIp*/
 	
 		INSERT INTO   LETTNGNRLMBER_CERT_IP
 		(
 			MBER_ID
 			, CERT_IP
 			, CERT_MEMO
-			, LAST_UPDT_PNTTM
+			, FRST_REGIST_PNTTM
 			, FRST_REGISTER_ID
 		)
 		VALUES
@@ -45,5 +68,22 @@
 	</insert>
 	
 	
+	<update id="MberCertIpVO.deleteCertIp">
+		/*MberCertIpVO.deleteCertIp*/
+		
+		
+		UPDATE LETTNGNRLMBER_CERT_IP
+		SET
+			CERT_USE_YN = 'N'
+			, LAST_UPDT_PNTTM = now()
+			, LAST_UPDUSR_ID = #lastUpdusrId#
+		WHERE
+			MBER_ID = #mberId#
+		AND CERT_IP = #certIp#
+		
+		
+	</update>
+	
+	
 	
 </sqlMap>
(No newline at end of file)
 
src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml (added)
+++ src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?><!--
+	수정일		수정자					수정내용
+  =========     =======    =================================================
+  2021.03.01    신명섭 	
+-->
+<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
+<sqlMap namespace="MjonCertPhone">
+	<typeAlias  alias="mberCertPhoneVO" type="itn.let.cert.phone.service.MberCertPhoneVO"/>
+	
+	
+	<select id="mberCertPhoneVO.selectMberCertPhoneList" parameterClass="String" resultClass="mberCertPhoneVO">
+	/* mberCertPhoneVO.selectMberCertPhoneList */
+		SELECT 
+			MBTLNUM AS mbtlnum
+			, '-' AS certMemo
+			, '대표번호' AS certAlias
+			, '-' AS frstRegistPnttm
+		FROM 
+		    lettngnrlmber
+		WHERE MBER_ID = #userId#
+		UNION ALL
+		SELECT 
+			MBTLNUM AS mbtlnum
+			, CERT_MEMO AS certMemo
+			, CERT_ALIAS AS certAlias
+			, FRST_REGIST_PNTTM AS frstRegistPnttm
+		FROM 
+		    lettngnrlmber_cert_phone
+		WHERE MBER_ID = #userId#
+		AND CERT_USE_YN = 'Y'
+	</select>
+	
+	
+	<select id="mberCertPhoneVO.selectMberCertPhoneListVO" parameterClass="mberCertPhoneVO" resultClass="mberCertPhoneVO">
+		SELECT 
+		    MBTLNUM AS mbtlnum,
+		    '-' AS frstRegistPnttm
+		FROM 
+		    lettngnrlmber
+		WHERE MBER_ID = #mberId#
+		UNION ALL
+		SELECT 
+		    MBTLNUM AS mbtlnum,
+		    FRST_REGIST_PNTTM AS frstRegistPnttm
+		FROM 
+		    lettngnrlmber_cert_phone
+		WHERE MBER_ID = #mberId#
+		AND MBTLNUM = #mbtlnum#
+		AND CERT_USE_YN = 'Y'
+	</select>
+	
+	<select id="mberCertPhoneVO.findByCertPhoneInfo" parameterClass="mberCertPhoneVO" resultClass="mberCertPhoneVO">
+		/*mberCertPhoneVO.findByMberCertIpList*/
+		SELECT 
+			MBTLNUM AS mbtlnum
+			, CERT_MEMO AS certMemo
+			, CERT_ALIAS AS certAlias
+			, FRST_REGIST_PNTTM AS frstRegistPnttm
+		FROM 
+			lettngnrlmber_cert_phone
+		WHERE MBER_ID = #mberId#
+		AND MBTLNUM = #mbtlnum#
+		AND CERT_USE_YN = 'Y'
+	</select>
+	
+	
+	<insert id="mberCertPhoneVO.insertCertPhone">
+	/* mberCertPhoneVO.insertCertIp */
+		INSERT
+		INTO   LETTNGNRLMBER_CERT_PHONE
+		       (
+					MBER_ID
+					, MBTLNUM
+					, CERT_ALIAS
+					, CERT_MEMO
+					, FRST_REGIST_PNTTM
+					, FRST_REGISTER_ID
+				)
+				VALUES
+				(
+					#mberId#
+					, #mbtlnum#
+					, #certAlias#
+					, #certMemo#
+					, now()
+					, #frstRegisterId#
+				)
+	</insert>
+	
+	
+	<update id="mberCertPhoneVO.deleteCertPhone" parameterClass="mberCertPhoneVO">
+	
+		UPDATE LETTNGNRLMBER_CERT_PHONE
+			SET CERT_USE_YN = 'N'
+			, LAST_UPDUSR_ID = #lastUpdusrId#
+		WHERE 
+			MBER_ID = #mberId#
+		AND MBTLNUM = #mbtlnum#
+		
+	</update>
+	
+	
+	
+	<update id="mberCertPhoneVO.updateMberCertPhone" parameterClass="mberCertPhoneVO">
+	
+		UPDATE LETTNGNRLMBER_CERT_PHONE
+			SET 
+			LAST_UPDUSR_ID = #lastUpdusrId#
+			, CERT_MEMO = #certMemo#
+			, CERT_ALIAS = #certAlias#
+		WHERE 
+			MBER_ID = #mberId#
+		AND MBTLNUM = #mbtlnum#
+				
+				
+	</update>
+	
+	
+</sqlMap>(No newline at end of file)
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
@@ -21,7 +21,6 @@
 	<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"/>
 	
 	
 	<!-- 공통 쿼리 부분 문자 발송 관련 -->
@@ -3756,110 +3755,6 @@
 	</select>
 	
 	
-	
-	<select id="mjonMsgDataDAO.selectMberCertPhoneList" parameterClass="String" resultClass="mberCertPhoneVO">
-	/* mjonMsgDataDAO.selectMberCertPhoneList */
-		SELECT 
-			MBTLNUM AS mbtlnum
-			, '-' AS certMemo
-			, '대표번호' AS certAlias
-			, '-' AS frstRegistPnttm
-		FROM 
-		    lettngnrlmber
-		WHERE MBER_ID = #userId#
-		UNION ALL
-		SELECT 
-			MBTLNUM AS mbtlnum
-			, CERT_MEMO AS certMemo
-			, CERT_ALIAS AS certAlias
-			, FRST_REGIST_PNTTM AS frstRegistPnttm
-		FROM 
-		    lettngnrlmber_cert_phone
-		WHERE MBER_ID = #userId#
-		AND CERT_USE_YN = 'Y'
-	</select>
-	
-	<select id="mjonMsgDataDAO.selectMberCertPhoneListVO" parameterClass="mberCertPhoneVO" resultClass="mberCertPhoneVO">
-		SELECT 
-		    MBTLNUM AS mbtlnum,
-		    '-' AS frstRegistPnttm
-		FROM 
-		    lettngnrlmber
-		WHERE MBER_ID = #mberId#
-		UNION ALL
-		SELECT 
-		    MBTLNUM AS mbtlnum,
-		    FRST_REGIST_PNTTM AS frstRegistPnttm
-		FROM 
-		    lettngnrlmber_cert_phone
-		WHERE MBER_ID = #mberId#
-		AND MBTLNUM = #mbtlnum#
-		AND CERT_USE_YN = 'Y'
-	</select>
-	
-	<select id="mjonMsgDataDAO.findByCertPhoneInfo" parameterClass="mberCertPhoneVO" resultClass="mberCertPhoneVO">
-			/*mjonMsgDataDAO.findByCertPhoneInfo*/
-		SELECT 
-			MBTLNUM AS mbtlnum
-			, CERT_MEMO AS certMemo
-			, CERT_ALIAS AS certAlias
-			, FRST_REGIST_PNTTM AS frstRegistPnttm
-		FROM 
-			lettngnrlmber_cert_phone
-		WHERE MBER_ID = #mberId#
-		AND MBTLNUM = #mbtlnum#
-		AND CERT_USE_YN = 'Y'
-	</select>
-	
-	
-	<insert id="mjonMsgDataDAO.insertMberCertPhoneInfo" parameterClass="mberCertPhoneVO">
-	
-		INSERT
-		INTO   LETTNGNRLMBER_CERT_PHONE
-		       (
-					MBER_ID
-					, MBTLNUM
-					, CERT_ALIAS
-					, CERT_MEMO
-					, FRST_REGIST_PNTTM
-					, FRST_REGISTER_ID
-				)
-				VALUES
-				(
-					#mberId#
-					, #mbtlnum#
-					, #certAlias#
-					, #certMemo#
-					, 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>
-	
-	
-	
-	<update id="mjonMsgDataDAO.updateMberCertPhoneInfo" parameterClass="mberCertPhoneVO">
-	
-		UPDATE LETTNGNRLMBER_CERT_PHONE
-			SET 
-			LAST_UPDUSR_ID = #lastUpdusrId#
-			, CERT_MEMO = #certMemo#
-			, CERT_ALIAS = #certAlias#
-		WHERE 
-			MBER_ID = #mberId#
-		AND MBTLNUM = #mbtlnum#
-				
-				
-	</update>
 	
 	
 	<!-- 발신번호 등록 여부  조회 -->
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
@@ -2096,7 +2096,7 @@
 	
 	$.ajax({
 		type: "POST",
-		url: "/uss/umt/user/insertCertPhone.do",
+		url: "/cert/phone/insertCertPhone.do",
 		data: params,
 		dataType:'json',
 		async: false,
@@ -2106,6 +2106,7 @@
 					location.reload();
 			}else if(returnData.status == 'CONFLICT'){
 					alert(returnData.message);
+					return false;
 			}else{
 					alert("오류가 발생하였습니다.");
 			}
@@ -2134,7 +2135,7 @@
 
 	$.ajax({
 		type: "POST",
-		url: "/uss/umt/user/updateCertPhone.do",
+		url: "/cert/phone/updateCertPhone.do",
 		data: params,
 		dataType:'json',
 		async: false,
@@ -2161,7 +2162,7 @@
 
 	$.ajax({
 		type: "POST",
-		url: "/uss/umt/user/findByCertPhoneInfo.do",
+		url: "/cert/phone/findByCertPhoneInfo.do",
 		data: params,
 		dataType:'json',
 		async: false,
@@ -2187,41 +2188,6 @@
 }
 
 
-//이벤트 수정하기
-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 fn_certPhoneDel(mbtlnum){
@@ -2242,7 +2208,7 @@
 	
 	$.ajax({
       type: "POST",
-      url: "/uss/umt/user/deleteCertPhone.do",
+      url: "/cert/phone/deleteCertPhone.do",
       data: params,
       dataType:'json',
       async: false,
src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
@@ -74,7 +74,8 @@
 		// 추가할 HTML 구조
 		const ipTr = `
 			<tr class="ip-new">
-				<td><input type="text" class="input_text"></td>
+				<td><input type="text" class="input_text"
+					oninput="this.value = this.value.replace(/[^0-9.]/g, '');" maxlength="15"/></td>
 				<td><input type="text" class="input_text"></td>
 				<td>-</td>
 				<td>
@@ -92,6 +93,7 @@
 	});
 	
 	
+	// IP 등록버튼
 	$(document).on('click', '#ipRegBtn', function () {
 		// 현재 클릭된 버튼의 부모 tr 요소
 		const $currentRow = $(this).closest('tr');
@@ -106,16 +108,19 @@
 			$currentRow.find('td:eq(0) input').focus();
 			return;
 		}
-
-		// 추가 동작 (예: 서버 전송)
-// 		alert(`입력된 IP: ${ipValue}, 메모: ${memoValue}`);
 		
+		
+		const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
+		
+		if (!ipRegex.test(ipValue)) {
+			alert("유효하지 않은 IP 주소입니다.");
+			return false;
+		}
 
 		var params = {
 			"certIp" : ipValue
 			, "certMemo" : memoValue
 		}
-		console.log('params : ', params);
 		
 		if(!confirm("IP를 등록 하시겠습니까?")){
 			return false;
@@ -128,35 +133,18 @@
 			async: false,
 			success: function (returnData) {
 				if(returnData.status == 'OK'){
-					const objects = returnData.object; // 배열 데이터
-					let rows = ""; // 추가할 행들
-
-					// 배열 데이터를 순회하며 각 행 생성
-					objects.forEach((obj) => {
-						rows += `
-							<tr>
-								<td>${obj.certIp || "-"}</td>
-								<td>${obj.certMemo || "-"}</td>
-								<td>${obj.lastUpdtPnttm || "-"}</td>
-								<td>
-									<button type="button" class="btnType btn_text btn_lightgray fill btn_28">삭제</button>
-								</td>
-							</tr>
-						`;
-					});
-
-					// 기존 tbody 비우고 새 행 추가
-					$(".ip_table tbody").html(rows);
-					
+					findAllCertIp();
+				}else if(returnData.status == 'CONFLICT'){
+					alert(returnData.message);
+					return false;
 				}
 				else
 				{
-						alert("오류가 발생하였습니다.");
+					alert("오류가 발생하였습니다.");
 				}
 			},
 			error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
 		});
-		
 	});
 	
 
@@ -166,8 +154,6 @@
 
 function findAllCertIp(){
 	
-	console.log('findAllCertIp : ', findAllCertIp);
-
 	$.ajax({
 		type: "POST",
 		url: "/cert/ip/selectMberCertIpList.do",
@@ -177,22 +163,37 @@
 		success: function (returnData) {
 			if (returnData.status === "OK") {
 				const objects = returnData.object; // 배열 데이터
-				let rows = ""; // 추가할 행들
-			    objects.forEach((obj) => {
-			        rows += `
-			            <tr>
-			                <td>${obj.certIp || "-"}</td> <!-- 허용 IP -->
-			                <td>${obj.certMemo || "-"}</td> <!-- 메모 -->
-			                <td>${obj.lastUpdtPnttm || "-"}</td> <!-- 등록일시 -->
-			                <td>
-			                    <button type="button" class="btnType btn_text btn_lightgray fill btn_28" onclick="deleteRow(this)">삭제</button>
-			                </td>
-			            </tr>
-			        `;
-			    });
+				
+				// tbody의 기존 내용 삭제
+				const $tbody = $(".ip_table tbody");
+				$tbody.empty();
 
-			    // 생성된 rows를 tbody에 삽입
-			    $(".ip_table tbody").html(rows);
+				// 배열 데이터를 기반으로 tr 생성 후 tbody에 추가
+				$.each(objects, function(index, obj) {
+					const $tr = $("<tr></tr>"); // tr 요소 생성
+
+					// 각 td 요소 생성
+					const $certIp = $("<td></td>").text(obj.certIp || "");
+					const $certMemo = $("<td></td>").text(obj.certMemo || "");
+					const $frstRegistPnttm = $("<td></td>").text(obj.frstRegistPnttm || "등록되지 않음");
+					const $deleteBtn = $("<button></button>")
+						.addClass("btnType btn_text btn_lightgray fill btn_28")
+						.text("삭제")
+						.attr("type", "button")
+						.attr("id", "ipDelBtn")
+						.on("click", function() {
+							deleteRow(obj.certIp); // 삭제 버튼 클릭 시 실행
+						});
+
+					// 관리 버튼을 감쌀 td 생성
+					const $deleteTd = $("<td></td>").append($deleteBtn);
+
+					// tr에 td 추가
+					$tr.append($certIp, $certMemo, $frstRegistPnttm, $deleteTd);
+
+					// tbody에 tr 추가
+					$tbody.append($tr);
+				});
 			} else {
 				alert("데이터를 불러오는 데 실패했습니다.");
 			}
@@ -201,6 +202,33 @@
 	});
 }
 
+// IP 삭제
+function deleteRow(p_ip){
+
+	var params = {
+		"certIp" : p_ip
+	}
+	if(!confirm("IP를 삭제 하시겠습니까?")){
+		return false;
+	}
+	$.ajax({
+		type: "POST",
+		url: "/cert/ip/deleteCertIp.do",
+		data: params,
+		dataType:'json',
+		async: false,
+		success: function (returnData) {
+			if(returnData.status == 'OK'){
+				findAllCertIp();
+			}
+			else
+			{
+					alert("오류가 발생하였습니다.");
+			}
+		},
+		error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
+	}); 
+}
 
 
 //기간 요일 지정
@@ -672,7 +700,7 @@
 							<p>접속 IP를 미리 등록할 경우 2차 로그인 인증 없이 접속이 가능합니다. <br>
 								<span>(공용 PC는 보안상의 이유로 등록을 권장하지 않습니다.)</span></p>
 						</div>
-						<button type="button" class="btn_plus btn_ip_plus"><img src="/publish/images/content/mypage_plus.png" alt="더보기"></button>
+						<button type="button" class="btn_plus btn_ip_plus"><img src="/publish/images/content/mypage_plus.png" alt="등록버튼"></button>
 					</div>
 
 					<div class="table_wrap ip_table">
@@ -693,10 +721,7 @@
 							</thead>
 							<tbody>
 								<tr>
-									<td>192.168.0.0</td>
-									<td>dadfadfjadkfjalkdjfajflajdlfjaldjflajd</td>
-									<td>2024-11-11 11:11</td>
-									<td><button type="button" class="btnType btn_text btn_lightgray fill btn_28">삭제</button></td>
+									<td colspan="4">등록된 IP 주소가 없습니다.</td>
 								</tr>
 							</tbody>
 						</table>
Add a comment
List