diff --git a/src/main/java/itn/com/cmm/LoginVO.java b/src/main/java/itn/com/cmm/LoginVO.java index 5394ae54..3c4d2dcd 100644 --- a/src/main/java/itn/com/cmm/LoginVO.java +++ b/src/main/java/itn/com/cmm/LoginVO.java @@ -114,6 +114,11 @@ public class LoginVO implements Serializable{ private String dormantYn; // 휴먼회원여부 ( N:일반회원, Y:휴먼회원) + /** + * 보안로그인 여부 + */ + private String secuLoginFlag; + public String getDormantYn() { return dormantYn; } @@ -411,5 +416,12 @@ public class LoginVO implements Serializable{ public void setOuterCertYn(String outerCertYn) { this.outerCertYn = outerCertYn; } + public String getSecuLoginFlag() { + return secuLoginFlag; + } + public void setSecuLoginFlag(String secuLoginFlag) { + this.secuLoginFlag = secuLoginFlag; + } + } diff --git a/src/main/java/itn/let/cert/ip/service/CertIpService.java b/src/main/java/itn/let/cert/ip/service/CertIpService.java new file mode 100644 index 00000000..49fd964c --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/CertIpService.java @@ -0,0 +1,34 @@ +package itn.let.cert.ip.service; + +import java.util.List; + +import itn.let.mail.service.StatusResponse; + +public interface CertIpService { + +// public List selectMberCertPhoneList(String userId); +// +// public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public List selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); + + public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO); + + public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO); + + public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO); + + public Boolean checkCertIp(MberCertIpVO mberCertIpVO); + + public Boolean checkRegCertIp(MberCertIpVO mberCertIpVO); + + + + +} diff --git a/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java b/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java new file mode 100644 index 00000000..c0bb6484 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java @@ -0,0 +1,19 @@ +package itn.let.cert.ip.service; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import egovframework.rte.fdl.cmmn.exception.FdlException; + +public interface CertLoginLogService { + + + public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO, HttpServletRequest request) throws FdlException; + + public List findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO); + + + + +} diff --git a/src/main/java/itn/let/cert/ip/service/MberCertIpVO.java b/src/main/java/itn/let/cert/ip/service/MberCertIpVO.java new file mode 100644 index 00000000..11ebef19 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/MberCertIpVO.java @@ -0,0 +1,71 @@ +package itn.let.cert.ip.service; + +import itn.let.uss.umt.service.UserDefaultVO; + +/** + * + * @author : 이호영 + * @fileName : MberCertPhoneVO.java + * @date : 2024.11.18 + * @description : 발신번호 lettngnrlmber_cert_ip 관련 vo + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2024.11.18 이호영 최초 생성 + * + * + * + */ +public class MberCertIpVO extends UserDefaultVO{ + + + /** + * @description : + */ + private static final long serialVersionUID = 1L; + + + private String mberId; + private String certIp; + private String certMemo; + private String certUseYn; + private String certMbtlnum; + + + + + + public String getMberId() { + return mberId; + } + public void setMberId(String mberId) { + this.mberId = mberId; + } + public String getCertIp() { + return certIp; + } + public void setCertIp(String certIp) { + this.certIp = certIp; + } + public String getCertMemo() { + return certMemo; + } + public void setCertMemo(String certMemo) { + this.certMemo = certMemo; + } + 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; + } + + + +} diff --git a/src/main/java/itn/let/cert/ip/service/MberCertLoginLogVO.java b/src/main/java/itn/let/cert/ip/service/MberCertLoginLogVO.java new file mode 100644 index 00000000..6ad79286 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/MberCertLoginLogVO.java @@ -0,0 +1,76 @@ +package itn.let.cert.ip.service; + +import itn.let.uss.umt.service.UserDefaultVO; +/** + * + * @author : 이호영 + * @fileName : MberCertLoginLogVO.java + * @date : 2024.11.21 + * @description : 로그인 이력관리 92동안만 관리하고 삭제 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2024.11.21 이호영 최초 생성 + * + * + * + */ +public class MberCertLoginLogVO extends UserDefaultVO{ + + + /** + * @description : + */ + private static final long serialVersionUID = 1L; + + + private String certLoginId; + private String loginId; + private String loginIp; + private String loginDevice; + private String loginDt; + + private String secuLoginFlag; + + + public String getCertLoginId() { + return certLoginId; + } + public void setCertLoginId(String certLoginId) { + this.certLoginId = certLoginId; + } + public String getLoginId() { + return loginId; + } + public void setLoginId(String loginId) { + this.loginId = loginId; + } + public String getLoginIp() { + return loginIp; + } + public void setLoginIp(String loginIp) { + this.loginIp = loginIp; + } + public String getLoginDevice() { + return loginDevice; + } + public void setLoginDevice(String loginDevice) { + this.loginDevice = loginDevice; + } + public String getLoginDt() { + return loginDt; + } + public void setLoginDt(String loginDt) { + this.loginDt = loginDt; + } + public String getSecuLoginFlag() { + return secuLoginFlag; + } + public void setSecuLoginFlag(String secuLoginFlag) { + this.secuLoginFlag = secuLoginFlag; + } + + + + +} diff --git a/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java b/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java new file mode 100644 index 00000000..f76ba664 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java @@ -0,0 +1,39 @@ +package itn.let.cert.ip.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import itn.let.cert.ip.service.MberCertIpVO; + +@Repository("CertIpDAO") +public class CertIpDAO extends EgovAbstractDAO { + + + + public List selectMberCertIpList(MberCertIpVO mberCertIpVO) { + return (List) 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); + } + + public List checkCertIp(MberCertIpVO mberCertIpVO) { + return (List) list("MberCertIpVO.checkCertIp", mberCertIpVO); + } + + public List checkRegCertIp(MberCertIpVO mberCertIpVO) { + return (List) list("MberCertIpVO.checkRegCertIp", mberCertIpVO); + } + +} diff --git a/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java b/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java new file mode 100644 index 00000000..31e4e6e6 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java @@ -0,0 +1,68 @@ +package itn.let.cert.ip.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.ip.service.CertIpService; +import itn.let.cert.ip.service.MberCertIpVO; +import itn.let.mail.service.StatusResponse; + +@Service("CertIpService") +public class CertIpServiceImpl extends EgovAbstractServiceImpl implements CertIpService { + + @Resource(name = "CertIpDAO") + private CertIpDAO certIpDAO; + + + @Override + public StatusResponse selectMberCertIpList(MberCertIpVO mberCertIpVO) { + List mberCertIpListVO = certIpDAO.selectMberCertIpList(mberCertIpVO); + return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); + } + + + @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()); + } + + + @Override + public Boolean checkCertIp(MberCertIpVO mberCertIpVO) { + List mberCertIpListVO = certIpDAO.checkCertIp(mberCertIpVO); + if(mberCertIpListVO.size()>0) { + return true; + }else { + return false; + } + } + + @Override + public Boolean checkRegCertIp(MberCertIpVO mberCertIpVO) { + List mberCertIpListVO = certIpDAO.checkRegCertIp(mberCertIpVO); + if(mberCertIpListVO.size()>0) { + return true; + }else { + return false; + } + } + +} diff --git a/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java new file mode 100644 index 00000000..8bc7b868 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java @@ -0,0 +1,47 @@ +package itn.let.cert.ip.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import itn.let.cert.ip.service.MberCertLoginLogVO; + +@Repository("CertLoginLogDAO") +public class CertLoginLogDAO extends EgovAbstractDAO { + + +/* + public List selectMberCertIpList(MberCertIpVO mberCertIpVO) { + return (List) 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); + } +*/ + public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO) { + insert("MberCertLoginLogVO.insertCertLoginLog", mberCertLoginLogVO); + } + + public int checkLoginIpExists(MberCertLoginLogVO mberCertLoginLogVO) { + return (int) select("MberCertLoginLogVO.checkLoginIpExists", mberCertLoginLogVO); + } + + public void updateCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO) { + insert("MberCertLoginLogVO.updateCertLoginLog", mberCertLoginLogVO); + } + + public List findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO) { + return (List) list("MberCertLoginLogVO.findAllCertLoginLogVO", mberCertLoginLogVO); + } + +} diff --git a/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java new file mode 100644 index 00000000..07a90c1b --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java @@ -0,0 +1,87 @@ +package itn.let.cert.ip.service.impl; + +import java.util.List; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.springframework.stereotype.Service; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import egovframework.rte.fdl.cmmn.exception.FdlException; +import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import itn.let.cert.ip.service.CertLoginLogService; +import itn.let.cert.ip.service.MberCertLoginLogVO; + +@Service("CertLoginLogService") +public class CertLoginLogServiceImpl extends EgovAbstractServiceImpl implements CertLoginLogService { + + @Resource(name = "CertLoginLogDAO") + private CertLoginLogDAO certLoginLogDAO; + + @Resource(name = "egovMjonCertLoginLogIdGnrService") + private EgovIdGnrService certLoginLogIdGnrService; +/* + @Override + public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO) { + List mberCertIpListVO = certLoginLogDAO.selectMberCertIpList(mberCertPhoneVO); + return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); + } + + + @Override + public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO) { + MberCertIpVO mberCertIpListVO = certLoginLogDAO.findByMberCertIpList(mberCertIpVO); + if(mberCertIpListVO != null) { + return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now()); + } + certLoginLogDAO.insertCertIp(mberCertIpVO); + return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now()); + } + + + @Override + public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO) { + certLoginLogDAO.deleteCertIp(mberCertIpVO); + return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now()); + } +*/ + + @Override + public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO, HttpServletRequest request) throws FdlException { + + +// int count = certLoginLogDAO.checkLoginIpExists(mberCertLoginLogVO); +// +// if (count > 0) { +// // 이미 존재하면 UPDATE +// certLoginLogDAO.updateCertLoginLog(mberCertLoginLogVO); +// } else { + + mberCertLoginLogVO.setCertLoginId(certLoginLogIdGnrService.getNextStringId()); + mberCertLoginLogVO.setLoginDevice(getDevice(request)); + certLoginLogDAO.insertCertLoginLog(mberCertLoginLogVO); + +// } + } + + private String getDevice(HttpServletRequest request) { + String userAgent = request.getHeader("User-Agent").toLowerCase(); + + if (userAgent.contains("mobile") || userAgent.contains("android") || userAgent.contains("iphone")) { + return "M"; + } else if (userAgent.contains("tablet") || userAgent.contains("ipad")) { + return "T"; + } else { + return "D"; + } + } + + @Override + public List findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO) { + // TODO Auto-generated method stub + return certLoginLogDAO.findAllCertLoginLogVO(mberCertLoginLogVO); + + } + +} diff --git a/src/main/java/itn/let/cert/ip/web/CertIpController.java b/src/main/java/itn/let/cert/ip/web/CertIpController.java new file mode 100644 index 00000000..425106eb --- /dev/null +++ b/src/main/java/itn/let/cert/ip/web/CertIpController.java @@ -0,0 +1,127 @@ +package itn.let.cert.ip.web; + +import java.time.LocalDateTime; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +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.ip.service.CertIpService; +import itn.let.cert.ip.service.MberCertIpVO; +import itn.let.mail.service.StatusResponse; +import itn.let.utl.sim.service.EgovClntInfo; + +/** + * + * @author : 이호영 + * @fileName : CertIpController.java + * @date : 2024.11.19 + * @description : 허용 IP 관련 컨트롤러 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2024.11.19 이호영 최초 생성 + * + * + * + */ +@Controller +public class CertIpController { + + + /* certIpService */ + @Resource(name = "CertIpService") + private CertIpService certIpService; + + + @RequestMapping(value = {"/cert/ip/selectMberCertIpList.do"}) + public ResponseEntity selectMberCertIpList(MberCertIpVO 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.setMberId(userId); + return ResponseEntity.ok().body(certIpService.selectMberCertIpList(mberCertPhoneVO)); + } + + + @RequestMapping(value = {"/cert/ip/insertCertIp.do"}) + public ResponseEntity insertCertIp(MberCertIpVO mberCertIpVO) 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())); + } + mberCertIpVO.setFrstRegisterId(userId); + mberCertIpVO.setMberId(userId); + + + return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO)); + } + + + @RequestMapping(value = {"/cert/ip/insertCennetCertIp.do"}) + public ResponseEntity insertCennetCertIp(MberCertIpVO mberCertIpVO,HttpServletRequest request) 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())); + } + mberCertIpVO.setFrstRegisterId(userId); + mberCertIpVO.setMberId(userId); + + mberCertIpVO.setCertIp(EgovClntInfo.getClntIP(request)); + mberCertIpVO.setCertMemo("허용 IP 등록"); + + return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO)); + } + + @RequestMapping(value = {"/cert/ip/deleteCertIp.do"}) + public ResponseEntity deleteCertIp(MberCertIpVO mberCertIpVO) 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())); + } + mberCertIpVO.setLastUpdusrId(userId); + mberCertIpVO.setMberId(userId); + + + return ResponseEntity.ok().body(certIpService.deleteCertIp(mberCertIpVO)); + } + +} \ No newline at end of file diff --git a/src/main/java/itn/let/cert/ip/web/CertLoginLogController.java b/src/main/java/itn/let/cert/ip/web/CertLoginLogController.java new file mode 100644 index 00000000..0118a704 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/web/CertLoginLogController.java @@ -0,0 +1,102 @@ +package itn.let.cert.ip.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.ip.service.CertLoginLogService; +import itn.let.cert.ip.service.MberCertIpVO; +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 CertLoginLogController { + + + /* CertLoginLogService */ + @Resource(name = "CertLoginLogService") + private CertLoginLogService certLoginLogService; + + /* + @RequestMapping(value = {"/cert/ip/selectMberCertIpList.do"}) + public ResponseEntity selectMberCertIpList(MberCertIpVO 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.setMberId(userId); + return ResponseEntity.ok().body(certLoginLogService.selectMberCertIpList(mberCertPhoneVO)); + } + + + @RequestMapping(value = {"/cert/ip/insertCertIp.do"}) + public ResponseEntity insertCertIp(MberCertIpVO mberCertIpVO) 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())); + } + mberCertIpVO.setFrstRegisterId(userId); + mberCertIpVO.setMberId(userId); + + + return ResponseEntity.ok().body(certLoginLogService.insertCertIp(mberCertIpVO)); + } + + @RequestMapping(value = {"/cert/ip/deleteCertIp.do"}) + public ResponseEntity deleteCertIp(MberCertIpVO mberCertIpVO) 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())); + } + mberCertIpVO.setLastUpdusrId(userId); + mberCertIpVO.setMberId(userId); + + + return ResponseEntity.ok().body(certLoginLogService.deleteCertIp(mberCertIpVO)); + } + */ +} \ No newline at end of file diff --git a/src/main/java/itn/let/cert/phone/service/CertPhoneService.java b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java new file mode 100644 index 00000000..42b80989 --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java @@ -0,0 +1,43 @@ +package itn.let.cert.phone.service; + +import java.util.List; + +import itn.let.mail.service.StatusResponse; +import itn.let.uat.uia.web.SendLogVO; + +public interface CertPhoneService { + + +// public List selectMberCertPhoneList(String userId); +// +// public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public List selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO); +// + public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); + + public StatusResponse selectMberCertPhoneList(MberCertPhoneVO mberCertPhoneVO); + + public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO, String moblphonNo); + + public StatusResponse deleteCertPhone(MberCertPhoneVO mberCertPhoneVO); + + public List selectMberCertPhoneList(String userId); + + public StatusResponse selectMberCertPhoneListWhereUserId(String userId); + + public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO); + + public StatusResponse selectSysMsgLogCheck(MberCertPhoneVO mberCertPhoneVO); + + + + + + + +} diff --git a/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java b/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java new file mode 100644 index 00000000..81eb9ae2 --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java @@ -0,0 +1,80 @@ +package itn.let.cert.phone.service; + +import itn.let.uss.umt.service.UserDefaultVO; + +/** + * + * @author : 이호영 + * @fileName : MberCertPhoneVO.java + * @date : 2024.11.18 + * @description : 발신번호 lettngnrlmber_cert_ip 관련 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 certAlias; + private String certMemo; + private String certUseYn; + + private String checkNo; + + + + + + 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 getCertAlias() { + return certAlias; + } + public void setCertAlias(String certAlias) { + this.certAlias = certAlias; + } + public String getCertMemo() { + return certMemo; + } + public void setCertMemo(String certMemo) { + this.certMemo = certMemo; + } + public String getCertUseYn() { + return certUseYn; + } + public void setCertUseYn(String certUseYn) { + this.certUseYn = certUseYn; + } + public String getCheckNo() { + return checkNo; + } + public void setCheckNo(String checkNo) { + this.checkNo = checkNo; + } + + + +} diff --git a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java new file mode 100644 index 00000000..da5e107a --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java @@ -0,0 +1,41 @@ +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 selectMberCertPhoneList(String userId) { + return (List) 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 selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) { + return (List) list("mberCertPhoneVO.selectMberCertPhoneListVO", mberCertPhoneVO); + } + + public int countSysMsgLogCheck(MberCertPhoneVO mberCertPhoneVO) { + return (int) select("mberCertPhoneVO.countSysMsgLogCheck", mberCertPhoneVO); + } +} diff --git a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java new file mode 100644 index 00000000..2fae49c5 --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java @@ -0,0 +1,104 @@ +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 mberCertIpListVO = certPhoneDAO.selectMberCertPhoneListVO(mberCertPhoneVO); + return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); + } + + + @Override + public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO, String moblphonNo) { + System.out.println("findByCertPhoneInfo : :::: "); + try { + + MberCertPhoneVO mberCertPhoneListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO); + if(mberCertPhoneListVO != null) { + if(mberCertPhoneListVO.getMbtlnum().equals(moblphonNo)) { + return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now()); + } + } + + certPhoneDAO.insertCertPhone(mberCertPhoneVO); + + } catch (Exception e) { + e.printStackTrace(); // TODO: handle exception + return new StatusResponse(HttpStatus.OK, "오류가 발생하였습니다.", LocalDateTime.now()); + } + 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 selectMberCertPhoneList(String userId) { + return certPhoneDAO.selectMberCertPhoneList(userId); + + } + + + @Override + public StatusResponse selectMberCertPhoneListWhereUserId(String userId) { + return new StatusResponse(HttpStatus.OK, certPhoneDAO.selectMberCertPhoneList(userId), LocalDateTime.now()); + } + + + + + @Override + public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO) { + certPhoneDAO.updateMberCertPhone(mberCertPhoneVO); + return new StatusResponse(HttpStatus.OK, "수정 하였습니다.", LocalDateTime.now()); + } + + + @Override + public StatusResponse selectSysMsgLogCheck(MberCertPhoneVO mberCertPhoneVO) { + // TODO Auto-generated method stub + + int certCnt = 0; + certCnt = certPhoneDAO.countSysMsgLogCheck(mberCertPhoneVO); + + if(certCnt < 1) { + return new StatusResponse(HttpStatus.BAD_REQUEST, "[인증번호 불일치] 입력하신 정보를 재확인 해주세요.", LocalDateTime.now()); + } + + return new StatusResponse(HttpStatus.OK, "", LocalDateTime.now()); + } + + + +} diff --git a/src/main/java/itn/let/cert/phone/web/CertPhoneController.java b/src/main/java/itn/let/cert/phone/web/CertPhoneController.java new file mode 100644 index 00000000..4bef193e --- /dev/null +++ b/src/main/java/itn/let/cert/phone/web/CertPhoneController.java @@ -0,0 +1,237 @@ +package itn.let.cert.phone.web; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +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.CertPhoneService; +import itn.let.cert.phone.service.MberCertPhoneVO; +import itn.let.mail.service.StatusResponse; +import itn.let.mjo.msg.service.MjonMsgVO; +import itn.let.mjo.msgdata.service.MjonMsgDataService; +import itn.let.mjo.msgdata.service.MjonMsgReturnVO; +import itn.let.uat.uia.web.SendLogVO; + +/** + * + * @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; + + @Resource(name = "MjonMsgDataService") + private MjonMsgDataService mjonMsgDataService; + + + + @RequestMapping(value = {"/cert/phone/selectMberCertPhoneList"}) + public ResponseEntity selectMberCertPhoneList(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.setMberId(userId); + + return ResponseEntity.ok().body(certPhoneService.selectMberCertPhoneListWhereUserId(userId)); + } + + @RequestMapping(value = {"/cert/phone/findByCertPhoneInfo.do"}) + public ResponseEntity 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 insertCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + + System.out.println(" :: insertCertPhone :: "); + + //로그인 권한정보 불러오기 + 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); + mberCertPhoneVO.setMberId(userId); + + + return ResponseEntity.ok().body(certPhoneService.insertCertPhone(mberCertPhoneVO, loginVO.getMoblphonNo())); + } + + @RequestMapping(value = {"/cert/phone/updateCertPhone.do"}) + public ResponseEntity 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); + if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) { + mberCertPhoneVO.setMberId(userId); + } + + + return ResponseEntity.ok().body(certPhoneService.updateMberCertPhone(mberCertPhoneVO)); + } + + @RequestMapping(value = {"/cert/phone/deleteCertPhone.do"}) + public ResponseEntity 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); + + if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) { + mberCertPhoneVO.setMberId(userId); + } + + + return ResponseEntity.ok().body(certPhoneService.deleteCertPhone(mberCertPhoneVO)); + } + + + + + + @RequestMapping(value = {"/cert/phone/sendSysMsgDataAjax.do"}) + public ResponseEntity sendSysMsgDataAjax(MberCertPhoneVO mberCertPhoneVO) throws Exception { + + + //로그인 권한정보 불러오기 + 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.setMberId(userId); + + // 번호 중복 확인 + MberCertPhoneVO mberCertIpListVO = (MberCertPhoneVO) certPhoneService.findByCertPhoneInfo(mberCertPhoneVO).getObject(); + if(mberCertIpListVO != null || loginVO.getMoblphonNo().equals(mberCertPhoneVO.getMbtlnum()) ) { + return ResponseEntity.ok().body(new StatusResponse(HttpStatus.CONFLICT, "등록된 번호입니다.", LocalDateTime.now())); + } + + MjonMsgVO mjonMsgVO = new MjonMsgVO(); + mjonMsgVO.setCallTo(mberCertPhoneVO.getMbtlnum()); + MjonMsgReturnVO returnVO = mjonMsgDataService.sendSysMsgData(mjonMsgVO); + + String resultSts = returnVO.getSendMsgCnt(); + String resultBlockSts = returnVO.getSendMsgBlockCnt(); + + String msg= ""; + Map returnMap = new HashMap<>(); + HttpStatus httpStatus = null; + if (!resultSts.equals("0")) { + + httpStatus = HttpStatus.OK; + returnMap.put("msg", "문자 전송이 완료되었습니다."); + returnMap.put("resultSts", resultSts); + returnMap.put("resultBlockSts", resultBlockSts); + + } else { + + httpStatus = HttpStatus.BAD_REQUEST; + returnMap.put("msg", "문자 전송에 오류가 발생하였습니다."); + returnMap.put("resultSts", "0"); + returnMap.put("resultBlockSts", "0"); + + } + return ResponseEntity.ok().body(new StatusResponse(httpStatus, returnMap, LocalDateTime.now())); + + } + + + + @RequestMapping(value = {"/cert/phone/selectSysMsgLogCheck.do"}) + public ResponseEntity selectSysMsgLogCheck(MberCertPhoneVO mberCertPhoneVO) throws Exception { + + //로그인 권한정보 불러오기 + 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.setMberId(userId); +// + return ResponseEntity.ok().body(certPhoneService.selectSysMsgLogCheck(mberCertPhoneVO)); + + } + + + + + + + + + + + + +} \ No newline at end of file diff --git a/src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java b/src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java index 9da25cfc..bf32ee59 100644 --- a/src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java +++ b/src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java @@ -4739,14 +4739,18 @@ public class EgovBBSManageController { // 불법스팸방지안내 if (termsVO.getMenuNm().equals("04")) { - termsVO.setSearchSortCnd("TERMS_ID"); - termsVO.setSearchSortOrd("ASC"); - resultList = egovSiteManagerService.selectTermsMenu(termsVO); + + if("2023".equals(termsMstNo)) { + termsVO.setSearchSortCnd("TERMS_ID"); + termsVO.setSearchSortOrd("ASC"); + resultList = egovSiteManagerService.selectTermsMenu(termsVO); + model.addAttribute("resultList", resultList); + } + + String jspName = "TermsListSpam_" + termsMstNo + "_Ajax"; + return "web/cop/bbs/"+jspName; + } - - model.addAttribute("resultList", resultList); - - return "web/cop/bbs/TermsListAjax"; } // else { // String effectDate_02 = ""; diff --git a/src/main/java/itn/let/main/web/EgovMainController.java b/src/main/java/itn/let/main/web/EgovMainController.java index cbb14ab0..200e253b 100644 --- a/src/main/java/itn/let/main/web/EgovMainController.java +++ b/src/main/java/itn/let/main/web/EgovMainController.java @@ -825,7 +825,7 @@ public class EgovMainController { try { //0번째 부터 6개의 항목만 조회 MjonMsgVO mjonMsgVO = new MjonMsgVO(); - adminMemLoginThisMonth = mjonMsgService.selectMemLoginThisMonth(mjonMsgVO); + //adminMemLoginThisMonth = mjonMsgService.selectMemLoginThisMonth(mjonMsgVO); } catch(Exception e) { isSuccess = false; diff --git a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java index 033c000b..5eda21a1 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java +++ b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java @@ -97,6 +97,7 @@ public interface MjonMsgDataService { //시스템 문자발송 로그 조회 public SendLogVO selectSysMsgLog(SendLogVO sendLogVO) throws Exception; + public SendLogVO selectSysMsgLogCheck(SendLogVO sendLogVO) throws Exception; //주소록 그룹의 저장 주소 리스트 불러오기 public List selectMsgAddrListAjax(AddrVO addrVO) throws Exception; @@ -183,7 +184,12 @@ public interface MjonMsgDataService { //팩스 거래명세서 합산 정보 public List selectPayUserSumFaxList(MjonMsgVO mjonMsgVO) throws Exception; +<<<<<<< HEAD public StatusResponse sendMsgData_advc(MjonMsgVO mjonMsgVO, HttpServletRequest request) throws Exception; +======= + public MjonMsgReturnVO sendSysMsgData(MjonMsgVO mjonMsgVO) throws Exception; + +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java index 775d4b61..4f201103 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java @@ -216,6 +216,10 @@ public class MjonMsgDataDAO extends EgovAbstractDAO { return (SendLogVO) select("mjonMsgDAO.selectSysMsgLog",sendLogVO); } + public SendLogVO selectSysMsgLogCheck(SendLogVO sendLogVO) throws Exception{ + return (SendLogVO) select("mjonMsgDAO.selectSysMsgLogCheck_new",sendLogVO); + } + @SuppressWarnings("unchecked") public List selectMsgAddrListAjax(AddrVO addrVO) throws Exception{ @@ -392,6 +396,7 @@ public class MjonMsgDataDAO extends EgovAbstractDAO { } +<<<<<<< HEAD public int insertMsgDataInfo_advc(List mjonMsgSendVOList) { //단문 전송 int result = update("mjonMsgDAO.insertMsgData_advc", mjonMsgSendVOList); @@ -489,4 +494,6 @@ public class MjonMsgDataDAO extends EgovAbstractDAO { return successCount; } +======= +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git } diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java index 077d7d92..69c6793b 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java @@ -11,8 +11,12 @@ import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; +<<<<<<< HEAD import java.util.Map; import java.util.stream.Collectors; +======= +import java.util.Random; +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -93,6 +97,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M @Resource(name = "MsgHolidayDAO") private MsgHolidayDAO msgHolidayDAO; +<<<<<<< HEAD @Resource(name = "LetterDAO") private LetterDAO letterDAO; @@ -100,12 +105,17 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M @Resource(name = "userManageService") private EgovUserManageService userManageService; +======= +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git @Resource(name = "egovMjonMsgIdGnrService") private EgovIdGnrService idgenMsgId; +<<<<<<< HEAD @Resource(name = "egovMjonMsgIdCGnrService") private CustomIdGnrService idgenMsgCId; +======= +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git @Resource(name = "egovMjonMsgGroupIdGnrService") private EgovIdGnrService idgenMjonMsgGroupId; @@ -130,6 +140,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M @Resource(name = "mjonMsgAgentStsService") private MjonMsgAgentStsService mjonMsgAgentStsService; +<<<<<<< HEAD @Resource(name = "mjonSpamMsgService") private MjonSpamMsgService mjonSpamMsgService; @@ -146,11 +157,23 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M @Autowired private MjonCommon mjonCommon; +======= +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git public List selectCcmCmmCodeList() throws Exception { return mjonMsgDataDAO.selectCcmCmmCodeList(); } +<<<<<<< HEAD +======= + public MjonMsgReturnVO insertMsgDataInfo(MjonMsgVO mjonMsgVO) throws Exception { + + MjonMsgReturnVO returnVO = new MjonMsgReturnVO(); + + try { +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git + +<<<<<<< HEAD public MjonMsgReturnVO insertMsgDataInfo_advc(MjonMsgVO mjonMsgVO) throws Exception { MjonMsgReturnVO returnVO = new MjonMsgReturnVO(); @@ -219,7 +242,165 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } } } +======= + // 문자 전송 그룹아이디 생성 + // mjonMsgVO.setMsgGroupId(idgenMjonMsgGroupId.getNextStringId()); + // 문자 아이디 생성 + // mjonMsgVO.setMsgId(idgenMsgId.getNextStringId()); + + String msgType = mjonMsgVO.getMsgType(); + String agentCode = mjonMsgVO.getAgentCode(); + // 장문 전송 + String contSeq = ""; + + // float myPrice = 10000; + // float totPrice = Float.parseFloat(mjonMsgVO.getTotPrice()); + // 최종 입력 수 저장 변수 + int resultCnt = 0; + int limitCnt = 1000; + int blockCnt = 0; + + // 총 보유 금액과 전송 합계 비교 + + /* + * if(myPrice < totPrice) { // 보유 금액보다 전송 합계가 적은 경우 리턴 + * + * return 0 ; } + */ +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git + +<<<<<<< HEAD +======= + int callToCnt = mjonMsgVO.getCallToList().length; // 전체 받는사람 건수 + + mjonMsgVO.setMsgGroupCnt(Integer.toString(callToCnt)); + + // 그룹 테이블에 입력할 발송 시간 및 예약 발송 시간 처리 + /* + * if(mjonMsgVO.getReserveYn().equals("N")) {//즉시 전송의 경우 현재 시간을 입력 + * + * Date now = new Date(); + * + * SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + * + * mjonMsgVO.setReqDate(sdFormat.format(now)); + * + * } + */ + + // 사용자 현재 보유 금액 불러오기(문자 발송 금액 차감 이전 금액) + String befCash = mjonMsgVO.getBefCash(); + + // VO에서 현재 보유금액이 없으면 디비에서 조회해서 불러옴 + if ("".equals(befCash) || befCash == null) { + befCash = mjonMsgDataDAO.selectBeforeCashData(mjonMsgVO); + } + + mjonMsgVO.setBefCash(befCash); + // 문자 전송 그룹 테이블에 정보 입력 + // mjonMsgDAO.insertGroupMsgData(mjonMsgVO); + + // 수신거부 목록 불러오기 + List userBlockList = mjonMsgDAO.selectUserBlockList(mjonMsgVO); + + List dupliBlockList = MJUtil.getDuplicateList(userBlockList); + int usrBlockCnt = dupliBlockList.size(); + + // 회원 전용 전송사 정보 불러오기 + MberManageVO userInfo = mjonMsgDataDAO.selectMberManageInfo(mjonMsgVO.getUserId()); + String hotlineAgentCode = userInfo.getHotlineAgentCode(); + + // 야간스미싱 알림여부 정보(관리자 알림관리 상태 정보를 모두 불러옴) 불러오기 20240722 우영두 추가 + JoinSettingVO joinSettingVO = siteManagerDAO.selectAdminNotiDetail(); + String holiSmishingNoti = joinSettingVO.getHoliSmishingNoti(); + + // 스팸,스미싱이어도 딜레이없이 문자 전송을 처리할지 선택 상태값 변수 + boolean spamSmishingPassStatus = false; // 야간스미싱 알림여부가 활성화인 경우 false, 비활성화인경우 true 값을 가지도록 한다. + + // 스팸, 스미싱 상태인 경우에만 true 처리 + // 야간스미싱알리 여부가 활성화 인경우 무조건 문자를 즉시 보내도록 한다. + // 스미싱 알림 일정에 등록된 날짜와 시간에 포함되면 30분 딜레이 없이 발송 처리하도록 함. + if (holiSmishingNoti.equals("Y")) { + + MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); + + msgAlarmSetVO.setUseYn("Y"); + msgAlarmSetVO.setFirstIndex(0); + + List resultAlarmList = msgHolidayDAO.selectAlarmSettingList(msgAlarmSetVO); + + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + + MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); + msgHolidayVO.setFirstIndex(0); + msgHolidayVO.setRecordCountPerPage(100); + msgHolidayVO.setSearchHoliYear(Integer.toString(year)); + + List resultHolidayList = msgHolidayDAO.selectMsgHolidayList(msgHolidayVO); + + MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); + + boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, + resultHolidayList); + + spamSmishingPassStatus = smishingAlarmPassSts; + } else { + + spamSmishingPassStatus = true; + + } + + // 전용 전송사가 지정되어 있으면 실행 + if (!hotlineAgentCode.equals("00")) { + + MjonMsgAgentStsVO mjonMsgAgentStsVO = new MjonMsgAgentStsVO(); + mjonMsgAgentStsVO.setAgentCode(hotlineAgentCode); + + // 문자 타입 셋팅 + if (msgType.equals("6")) { + int fCnt = Integer.parseInt(mjonMsgVO.getFileCnt()); + if (fCnt > 0) { + + mjonMsgAgentStsVO.setMsgType("P"); + + } else { + mjonMsgAgentStsVO.setMsgType("L"); + } + + } else { + mjonMsgAgentStsVO.setMsgType("S"); + } + + List hotlineMsgAgentList = mjonMsgAgentStsDAO + .selectMsgAgentListByAgentCode(mjonMsgAgentStsVO); + + String mberAgentConde = ""; + String mberSendRate = ""; + String mberRepAgent = ""; + + for (MjonMsgAgentStsVO tmp : hotlineMsgAgentList) { + + mberAgentConde = tmp.getAgentCode(); + mberSendRate = tmp.getSendRate(); + mberRepAgent = tmp.getRepAgent(); + String useYn = tmp.getUseYn(); + + if (userInfo.getBlineCode().equals("N")) { + // 회원 전용 전송사의 전송 비율이 0 이면 대표전송사로 전송되도록 셋팅함. + if (mberSendRate.equals("0") || useYn.equals("N")) { + + hotlineAgentCode = mberRepAgent; + + } + } + + } + + } + +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git /** * Agent 추가시 셋팅하기 Agent 발송 비율 불러오기 최초 : 아이하트(01), 현대 퓨쳐넷(02), 아이앰오(03) 22.10.12 * : 비즈뿌리오(04) 추가 23.04.10 : 제이제이(05) 추가 23.05.02 : 인비토 (07) 추가 @@ -241,6 +422,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /** * Agent 추가시 셋팅하기 +<<<<<<< HEAD * * 최초 : 아이하트(01), 현대 퓨쳐넷(02), 아이앰오(03) 22.10.12 : 비즈뿌리오(04) 추가 23.04.10 : * 제이제이(05) 추가 23.05.02 : 인비토 (07) 추가 @@ -270,7 +452,14 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } } } +======= + * + * 최초 : 아이하트(01), 현대 퓨쳐넷(02), 아이앰오(03) 22.10.12 : 비즈뿌리오(04) 추가 23.04.10 : + * 제이제이(05) 추가 23.05.02 : 인비토 (07) 추가 + */ +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git +<<<<<<< HEAD /** * 한번에 서버가 보낼수 있는 문자건수를 체크 해서 넘으면 분할해서 디비 입렵해 준다. 발송 건수가 천 건이 넘어가면, 백건씩 끊어서 발송 * 하도록 한다. @@ -381,7 +570,40 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } else { mjonMsgVO.setDelayYn("N");// 일단 값만 등록해준다. 이거 안해주면 NULL 값으로 들어간다. 차후에 변경하도록 할 예정임 +======= + for (int i = 0; i < sendRateSize; i++) { + + String sndAgentCode = sendRateList.get(i).getAgentCode(); + + if (sndAgentCode.equals("01")) {// 아이하트 전송비율 + + iheartCnt = Math.round(callToCnt * Float.parseFloat(sendRateList.get(i).getSendRate())); + + } else if (sndAgentCode.equals("02")) {// 현대퓨처넷 전송비율 + + hncCnt = Math.round(callToCnt * Float.parseFloat(sendRateList.get(i).getSendRate())); + + } else if (sndAgentCode.equals("03")) {// 아이엠오 전송비율 + + imoCnt = Math.round(callToCnt * Float.parseFloat(sendRateList.get(i).getSendRate())); + + } else if (sndAgentCode.equals("04")) {// 비즈뿌리오 전송비율 + + bizCnt = Math.round(callToCnt * Float.parseFloat(sendRateList.get(i).getSendRate())); + + } else if (sndAgentCode.equals("05")) {// 제이제이 전송비율 + + jjCnt = Math.round(callToCnt * Float.parseFloat(sendRateList.get(i).getSendRate())); + + } else if (sndAgentCode.equals("07")) {// 인비토 전송비율 + + ivtCnt = Math.round(callToCnt * Float.parseFloat(sendRateList.get(i).getSendRate())); + + } + +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git } +<<<<<<< HEAD } else {// 즉시발송의 경우 현재 시간으로 입력해 준다. @@ -406,8 +628,141 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M mjonMsgVO.setReqDate(transFormat.format(now)); mjonMsgVO.setDelayYn(delayYn);// 문자 발송 30분 지연 디폴트 값 셋팅(N) +======= + } + + /** + * 한번에 서버가 보낼수 있는 문자건수를 체크 해서 넘으면 분할해서 디비 입렵해 준다. 발송 건수가 천 건이 넘어가면, 백건씩 끊어서 발송 + * 하도록 한다. + */ + + if (callToCnt >= 10000) { + + limitCnt = 1000; + + } + + // 수신자 리스트 처리 + List msgDataInfo = new ArrayList(); + + int cnt = 1; + int totCnt = 1; + + // 분할문자 시간에 간격시간 더해주기 + String dividDay = null; + Calendar cal = Calendar.getInstance(); + + // 예약시간 변환 + SimpleDateFormat transFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + + int turmMin = 0; + int totalCallCnt = 0; + int divideCnt = 0; + int count = 1; // 분할 카운트 + String delayTime = "";// 30분 지연시간 + String spamStatus = mjonMsgVO.getSpamStatus();// 스팸 문구 유무 + String smishingYn = mjonMsgVO.getSmishingYn();// 스미싱 의심 유무 + String delayYn = "N"; // 문자발송 30분 지연 처리 유무 + + if (spamStatus == null || spamStatus.equals("")) { + + spamStatus = "N"; + + } + + if (smishingYn == null || smishingYn.equals("")) { + + smishingYn = "N"; + + } + + // 야간 스미싱 알림여부가 활성화 이고 예외시간에 포함되는 경우 스팸, 스미싱, 딜레이 값을 모두 N 으로 처리 + if (spamSmishingPassStatus) { + + spamStatus = "N"; + smishingYn = "N"; + delayYn = "N"; + + } + + if (!mjonMsgVO.getReserveYn().equals("N")) {// 예약문자인 경우 시간 셋팅 + + Date toDate = transFormat.parse(mjonMsgVO.getReqDate()); + cal.setTime(toDate); // 예약 시간 캘린터 변수에 입력 + + // String 타입 시간 Int로 변환 + turmMin = Integer.parseInt(mjonMsgVO.getDivideTime()); // 분할발송 시간 간격 + dividDay = transFormat.format(cal.getTime()); + + totalCallCnt = mjonMsgVO.getCallToList().length; // 수신자 전체 갯수 + divideCnt = Integer.parseInt(mjonMsgVO.getDivideCnt()); // 분할 발송 갯수 + + if (spamStatus.equals("Y") || smishingYn.equals("Y")) { + + mjonMsgVO.setDelayYn("Y");// 일단 값만 등록해준다. 이거 안해주면 NULL 값으로 들어간다. 차후에 변경하도록 할 예정임, 원래는 스팸이면 Y로 + // 넣어줘야한다. + + } else { + + mjonMsgVO.setDelayYn("N");// 일단 값만 등록해준다. 이거 안해주면 NULL 값으로 들어간다. 차후에 변경하도록 할 예정임 +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git } +<<<<<<< HEAD + } + + String[] nameList = mjonMsgVO.getNameList(); // 치환 이름 리스트 + String[] phoneList = mjonMsgVO.getCallToList(); // 받는사람 연락처 리스트 + String[] rep1 = mjonMsgVO.getRep1List(); // 치환 문자1 리스트 + String[] rep2 = mjonMsgVO.getRep2List(); // 치환 문자2 리스트 + String[] rep3 = mjonMsgVO.getRep3List(); // 치환 문자3 리스트 + String[] rep4 = mjonMsgVO.getRep4List(); // 치환 문자4 리스트 + + // Controller에서 전달 받은 분할 시간 정보 리스트 + List dividDayList = mjonMsgVO.getDividDay(); + + String frstDelayTime = mjonMsgVO.getReqDate(); + // 문자발송 리스트 생성 시작 + for (int i = 0; i < callToCnt; i++) { + + Boolean blockSts = false; + for (int j = 0; j < usrBlockCnt; j++) { + + if (phoneList[i].equals(dupliBlockList.get(j).toString())) { + + blockCnt++; // 수신 차단 카운드를 해준다. + blockSts = true; + + } +======= + } else {// 즉시발송의 경우 현재 시간으로 입력해 준다. + + Date now = new Date(); + if (spamStatus.equals("Y") || smishingYn.equals("Y")) {// 스팸 문자가 포함되었거나, 스미싱 의심 회원의 경우 문자발송 시간을 30분 딜레이 + // 시킨다. + + String nowDate = transFormat.format(now); + Date toDate = transFormat.parse(nowDate); + System.out.println("++++++++++++++++++++ origin reqDate ::: " + toDate); + cal.setTime(toDate); + + cal.add(Calendar.MINUTE, 30); + delayTime = transFormat.format(cal.getTime()); + mjonMsgVO.setReqDate(delayTime); + System.out.println("++++++++++++++++++++ delay reqDate ::: " + mjonMsgVO.getReqDate()); + delayYn = "Y"; + mjonMsgVO.setDelayYn(delayYn);// 문자 발송 30분 지연 코드 셋팅 + + } else {// 정상적인 문자인 경우 즉시발송 처리해준다. + + mjonMsgVO.setReqDate(transFormat.format(now)); + mjonMsgVO.setDelayYn(delayYn);// 문자 발송 30분 지연 디폴트 값 셋팅(N) +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git + + } + +<<<<<<< HEAD +======= } String[] nameList = mjonMsgVO.getNameList(); // 치환 이름 리스트 @@ -436,13 +791,18 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git if (!blockSts) { // 수신거부가 아니면 추가 MjonMsgVO tempVO = new MjonMsgVO(); /** * Agent 추가시 셋팅하기 +<<<<<<< HEAD * +======= + * +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git * 최초 : 아이하트(01), 현대 퓨쳐넷(02), 아이앰오(03) 22.10.12 : 비즈뿌리오(04) 추가 23.04.10 : * 제이제이(05) 추가 23.05.02 : 인비토 (07) 추가 23.05.09 : 회원 전용 전송사 정보가 있으면 모든 문자를 전용 * 전송사로 발송처리함. @@ -637,7 +997,11 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /** * 장문 / 그림문자 일 경우 제목 처리 만약 제목을 입력하지 않았을 경우 문자 내용의 텍스트 일부를 제목으로 사용 내용 텍스트가 없는 경우는 * 어쩔수 없는 것으로 간주하여 Null로 처리한다. +<<<<<<< HEAD * +======= + * +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git */ String contents = tempVO.getSmsTxt(); // 문자 내용 if (StringUtil.isEmpty(mjonMsgVO.getMmsSubject()) || mjonMsgVO.getMmsSubject() == null) {// 제목 @@ -771,7 +1135,11 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /* * 각 처리 건별로 캐시 차감 및 그룹 데이터 정보 업데이트 1. 디비에 입력한 건수만큼 캐시 차감 및 회원 캐시 정보 업데이트 2. * 그룹데이터에 처리 건수 업데이트(총 발송건수 합산 정보 업데이트) +<<<<<<< HEAD * +======= + * +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git */ // 문자 발송 캐시 차감 해주기 @@ -880,10 +1248,23 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M System.out.println("+++++++++++++++++++++++++++++ 문자발송 ==> insertMsgDataInfo ERROR !!! : " + e); System.out.println("========================================================================="); return returnVO; +<<<<<<< HEAD +======= + +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git } +<<<<<<< HEAD +======= + +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git return returnVO; +<<<<<<< HEAD +======= + +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git } +<<<<<<< HEAD public MjonMsgReturnVO insertMsgDataInfo(MjonMsgVO mjonMsgVO) throws Exception { MjonMsgReturnVO returnVO = new MjonMsgReturnVO(); @@ -1666,6 +2047,8 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } +======= +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git // 이벤트 회원 캐시 변경 함수 public void fnUpdateEventRemainCash(MjonPayVO mjonPayVO) throws Exception { @@ -1756,8 +2139,13 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /* * 한번에 서버가 보낼수 있는 문자건수를 체크 해서 넘으면 분할해서 디비 입렵해 준다. 발송 건수가 2만 건이 넘어가면, 1만건씩 끊어서 발송 * 하도록 한다. +<<<<<<< HEAD * * +======= + * + * +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git */ if (callToCnt >= 1000) { @@ -2229,8 +2617,13 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /* * 한번에 서버가 보낼수 있는 문자건수를 체크 해서 넘으면 분할해서 디비 입렵해 준다. 발송 건수가 2만 건이 넘어가면, 1만건씩 끊어서 발송 * 하도록 한다. +<<<<<<< HEAD * * +======= + * + * +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git */ if (callToCnt >= 1000) { @@ -2849,6 +3242,14 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M return mjonMsgDataDAO.selectSysMsgLog(sendLogVO); } +<<<<<<< HEAD +======= + @Override + public SendLogVO selectSysMsgLogCheck(SendLogVO sendLogVO) throws Exception { + return mjonMsgDataDAO.selectSysMsgLogCheck(sendLogVO); + } + +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git public List selectMsgAddrListAjax(AddrVO addrVO) throws Exception { return mjonMsgDataDAO.selectMsgAddrListAjax(addrVO); @@ -3054,6 +3455,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M List msgFailList = mjonMsgDataDAO.selectMsgSentFailListOneByDay(); +<<<<<<< HEAD System.out.println(" ++ 주석함 msgFailList.size() : " + msgFailList.size()); // for(MjonMsgVO vo : msgFailList) { @@ -3061,6 +3463,13 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M // mjonMsgDataDAO.updateMsgSentFailPayBack(vo); // } +======= + for (MjonMsgVO vo : msgFailList) { + + mjonMsgDataDAO.updateMsgSentFailPayBack(vo); + + } +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git } @@ -3132,8 +3541,13 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /* * 대량 문자 데이터 배치 입력 처리 신규 추가 2024/02/02 우영두 +<<<<<<< HEAD * * +======= + * + * +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git */ public MjonMsgReturnVO insertMsgDataInfoBatch(MjonMsgVO mjonMsgVO) throws Exception { @@ -3310,7 +3724,11 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /** * Agent 추가시 셋팅하기 +<<<<<<< HEAD * +======= + * +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git * 최초 : 아이하트(01), 현대 퓨쳐넷(02), 아이앰오(03) 22.10.12 : 비즈뿌리오(04) 추가 23.04.10 : * 제이제이(05) 추가 23.05.02 : 인비토 (07) 추가 */ @@ -3467,7 +3885,11 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /* * 대용량 발송자의 msg_id 마지막 값 불러오기 신규 IDgen 값 생성해주기 +<<<<<<< HEAD * +======= + * +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git */ /* * String subUserId = ""; if(mjonMsgVO.getUserId().length() < 5) { int a = 5 - @@ -3515,6 +3937,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /** * Agent 추가시 셋팅하기 +<<<<<<< HEAD * * 최초 : 아이하트(01), 현대 퓨쳐넷(02), 아이앰오(03) 22.10.12 : 비즈뿌리오(04) 추가 23.04.10 : * 제이제이(05) 추가 23.05.02 : 인비토 (07) 추가 23.05.09 : 회원 전용 전송사 정보가 있으면 모든 문자를 전용 @@ -3590,6 +4013,188 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M // 문자내용 내용 - 치환 처리 String smsTxt = mjonMsgVO.getSmsTxt(); // 발송 문자 내용 + // 일괄변환문자 리스트에서 콤마(,)를 특수문자(§)로 변환해서 넘겨받기 때문에 치환 처리를 해준도록 한다. + smsTxt = smsTxt.replaceAll(String.valueOf((char) 13), ""); + /* + * if (smsTxt.indexOf("[*이름*]") > -1) { if(nameList.length > i && + * StringUtil.isNotEmpty(nameList[i])) { smsTxt = + * smsTxt.replaceAll("\\[\\*이름\\*\\]", + * StringUtil.getString(nameList[i].replaceAll("§", ","))); }else { smsTxt = + * smsTxt.replaceAll("\\[\\*이름\\*\\]", ""); } } +======= +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git + * +<<<<<<< HEAD + * if (smsTxt.indexOf("[*1*]") > -1) { if(rep1.length > i && + * StringUtil.isNotEmpty(rep1[i])) { smsTxt = smsTxt.replaceAll("\\[\\*1\\*\\]", + * StringUtil.getString(rep1[i].replaceAll("§", ","))); }else { smsTxt = + * smsTxt.replaceAll("\\[\\*1\\*\\]", ""); } } + * + * if (smsTxt.indexOf("[*2*]") > -1) { if(rep2.length > i && + * StringUtil.isNotEmpty(rep2[i])) { smsTxt = smsTxt.replaceAll("\\[\\*2\\*\\]", + * StringUtil.getString(rep2[i].replaceAll("§", ","))); }else { smsTxt = + * smsTxt.replaceAll("\\[\\*2\\*\\]", ""); } } + * + * if (smsTxt.indexOf("[*3*]") > -1) { if(rep3.length > i && + * StringUtil.isNotEmpty(rep3[i])) { smsTxt = smsTxt.replaceAll("\\[\\*3\\*\\]", + * StringUtil.getString(rep3[i].replaceAll("§", ","))); }else { smsTxt = + * smsTxt.replaceAll("\\[\\*3\\*\\]", ""); } } + * + * if (smsTxt.indexOf("[*4*]") > -1) { if(rep4.length > i && + * StringUtil.isNotEmpty(rep4[i])) { smsTxt = smsTxt.replaceAll("\\[\\*4\\*\\]", + * StringUtil.getString(rep4[i].replaceAll("§", ","))); }else { smsTxt = + * smsTxt.replaceAll("\\[\\*4\\*\\]", ""); } } + */ + + tempVO.setSmsTxt(smsTxt); + + // 즉시 / 예약 전송 처리 + if (mjonMsgVO.getReserveYn().equals("N")) {// 즉시 전송의 경우 현재 시간을 입력 + if (spamStatus.equals("Y") || smishingYn.equals("Y")) {// 스팸문자가 있거나, 스미싱 의심 회원의 경우 30분 지연시간을 입력해 + // 준다. + + tempVO.setReqDate(mjonMsgVO.getReqDate());// 상단에서 스팸문구가 있는겨우 30분 딜레이시간을 입력해 두었기 때문에 같은 데이터를 + // 입력함. + + } else {// 일반 문자인 경우 현재시간을 입력해 준다. + + Date now = new Date(); + SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + tempVO.setReqDate(sdFormat.format(now)); + + } + + } else { // 예약 발송의 경우 예약 시간을 입력 + // 분할 발송을 체크 한 경우 + if (mjonMsgVO.getDivideChk() != null) { + + // 스팸문구 혹은 스미싱 의심 회원의 경우 30분 딜레이 처리해준다. + // 20230630 우영두 추가 + if (spamStatus.equals("Y") || smishingYn.equals("Y")) { + + Date delayDate = transFormat.parse(dividDayList.get(i)); + + cal.setTime(delayDate); + cal.add(Calendar.MINUTE, 30); + delayTime = transFormat.format(cal.getTime()); + + tempVO.setReqDate(delayTime); // 분할 문자 예약 시간 입력해주기 + + } else { + + tempVO.setReqDate(dividDayList.get(i)); // 분할 문자 예약 시간 입력해주기 + + } + + } else {// 일반 예약 발송의 경우 + if (spamStatus.equals("Y") || smishingYn.equals("Y")) {// 스팸문구 혹은 스미싱 의심 회원의 경우 30분 딜레이 + // 처리해준다. + + Date delayDate = transFormat.parse(mjonMsgVO.getReqDate()); + + cal.setTime(delayDate); + cal.add(Calendar.MINUTE, 30); + delayTime = transFormat.format(cal.getTime()); + + tempVO.setReqDate(delayTime); + + } else { + + tempVO.setReqDate(mjonMsgVO.getReqDate()); + + } + + } + + // 딜레이 처리되었을 수 있어서 임시 데이터의 발송 시간을 업데이트 해준다. + // 분할 발송일 경우 Loop을 돌기 때문에 마지막 시간이 reqDate에 들어가기 때문에 첫번째 데이터에서만 시간을 입력해 준다. + // mj_group_data 테이블의 reqdate 컬럼 값으로 셋팅 된다. + if (i == 0) { + frstDelayTime = tempVO.getReqDate(); + } + } + + if (!msgType.equals("4")) { // 장문 혹은 그림문자일 경우 추가 + + /** + * 장문 / 그림문자 일 경우 제목 처리 만약 제목을 입력하지 않았을 경우 문자 내용의 텍스트 일부를 제목으로 사용 내용 텍스트가 없는 경우는 + * 어쩔수 없는 것으로 간주하여 Null로 처리한다. + * +======= + * 최초 : 아이하트(01), 현대 퓨쳐넷(02), 아이앰오(03) 22.10.12 : 비즈뿌리오(04) 추가 23.04.10 : + * 제이제이(05) 추가 23.05.02 : 인비토 (07) 추가 23.05.09 : 회원 전용 전송사 정보가 있으면 모든 문자를 전용 + * 전송사로 발송처리함. + */ + + if (hotlineAgentCode.equals("00")) {// 전용 전송사가 사용 안함인 경우 분배 및 대표 전송사로 설정 + + if (iheartCnt > 0) { + agentCode = "01"; + tempVO.setAgentCode(agentCode); + iheartCnt--; + } else if (hncCnt > 0) { + agentCode = "02"; + tempVO.setAgentCode(agentCode); + hncCnt--; + } else if (imoCnt > 0) { + agentCode = "03"; + tempVO.setAgentCode(agentCode); + imoCnt--; + } else if (bizCnt > 0) { + agentCode = "04"; + tempVO.setAgentCode(agentCode); + bizCnt--; + } else if (jjCnt > 0) { + agentCode = "05"; + tempVO.setAgentCode(agentCode); + jjCnt--; + } else if (ivtCnt > 0) { + agentCode = "07"; + tempVO.setAgentCode(agentCode); + ivtCnt--; + } else {// 전송사 Agent 대표 전송사로 지정한다. + + agentCode = sendRateList.get(0).getRepAgent(); + tempVO.setAgentCode(agentCode); + } + + } else {// 전용 전송사가 지정되어 있는 경우 전용 전송사로 지정 + + agentCode = hotlineAgentCode; + tempVO.setAgentCode(hotlineAgentCode); + } + // Agent 셋팅 끝 + + // tempVO.setMsgId(idgenMsgId.getNextStringId()); + + tempVO.setMsgId(startUserId); + + tempVO.setUserId(mjonMsgVO.getUserId()); + tempVO.setCallTo(phoneList[i]); + tempVO.setCallFrom(mjonMsgVO.getCallFrom()); + tempVO.setMsgType(mjonMsgVO.getMsgType()); + tempVO.setMsgGroupId(mjonMsgVO.getMsgGroupId()); + tempVO.setMsgCnt(mjonMsgVO.getMsgCnt()); + + // 아이엠오 전송사 문자 타입 설정해 주기 + if (agentCode.equals("03")) { + + // 단순 장문 문자는 neoType : 2, 그림 포함 : 4 + if (mjonMsgVO.getFileCnt().equals("0")) { // 단순 장문 문자 + + mjonMsgVO.setNeoType("2"); + + } else { // 그림포함 문자인경우 + + mjonMsgVO.setNeoType("4"); + + } + + } + + // 문자내용 내용 - 치환 처리 + String smsTxt = mjonMsgVO.getSmsTxt(); // 발송 문자 내용 + // 일괄변환문자 리스트에서 콤마(,)를 특수문자(§)로 변환해서 넘겨받기 때문에 치환 처리를 해준도록 한다. smsTxt = smsTxt.replaceAll(String.valueOf((char) 13), ""); /* @@ -3693,7 +4298,8 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /** * 장문 / 그림문자 일 경우 제목 처리 만약 제목을 입력하지 않았을 경우 문자 내용의 텍스트 일부를 제목으로 사용 내용 텍스트가 없는 경우는 * 어쩔수 없는 것으로 간주하여 Null로 처리한다. - * + * +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git */ String contents = tempVO.getSmsTxt(); // 문자 내용 if (StringUtil.isEmpty(mjonMsgVO.getMmsSubject()) || mjonMsgVO.getMmsSubject() == null) {// 제목 @@ -3817,7 +4423,11 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M /* * 각 처리 건별로 캐시 차감 및 그룹 데이터 정보 업데이트 1. 디비에 입력한 건수만큼 캐시 차감 및 회원 캐시 정보 업데이트 2. * 그룹데이터에 처리 건수 업데이트(총 발송건수 합산 정보 업데이트) +<<<<<<< HEAD * +======= + * +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git */ // 문자 발송 캐시 차감 해주기 @@ -3922,6 +4532,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M return mjonMsgDataDAO.selectMsgUserLastIdgen(mjonMsgVO); } +<<<<<<< HEAD @Override public List selectMsgAddrListAjax_advc(AddrVO addrVO) throws Exception { @@ -3934,12 +4545,15 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M return mjonMsgDataDAO.countByMsgAddrListAjax_advc(addrVO); } +======= +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git @Override public List selectPayUserSumFaxList(MjonMsgVO mjonMsgVO) throws Exception { return mjonMsgDataDAO.selectPayUserSumFaxList(mjonMsgVO); } @Override +<<<<<<< HEAD public StatusResponse sendMsgData_advc(MjonMsgVO mjonMsgVO, HttpServletRequest request) throws Exception { log.info("mjonMsgVO [{}]", mjonMsgVO.getMjonMsgSendVOList().get(0).getPhone()); @@ -4975,4 +5589,87 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M return returnMap; } +======= + public MjonMsgReturnVO sendSysMsgData(MjonMsgVO mjonMsgVO) throws Exception { + + + + // 비밀번호 찾기 문자내용 + String contents = "[문자온] 인증번호 : %code%"; + String code = ""; + long seed = System.currentTimeMillis(); + Random random = new Random(seed); + // code = Integer.toString(random.nextInt(4)); + StringBuffer randomCode = new StringBuffer(); + for (int i = 0; i < 6; i++) { + code = randomCode.append(Integer.toString(random.nextInt(10))).toString(); + } + contents = contents.replace("%code%", code); + System.out.println("contents : "+ contents); + System.out.println("contents : "+ contents); + System.out.println("contents : "+ contents); + System.out.println("contents : "+ contents); + System.out.println("contents : "+ contents); + + mjonMsgVO.setSmsTxt(contents); + mjonMsgVO.setReserveYn("N"); + // 시스템 문자발송 번호 + mjonMsgVO.setCallFrom("15518011"); + + mjonMsgVO.setUserId("system"); + + String msgType = "4"; + + // 전송사 전송 배분 + MjonMsgVO pramVO = new MjonMsgVO(); + List sendRateList = mjonMsgDAO.selectTodayAgentSendCntList(pramVO); // 전송사 전송 배분률 및 현재 전송건수 + // 조회 + for (MjonMsgVO tmpVO : sendRateList) { + float cnt = Float.parseFloat(tmpVO.getMsgGroupCnt()); + float totCnt = tmpVO.getTotCnt(); + tmpVO.setSendRateInfo(Float.parseFloat(tmpVO.getSendRate()) - (cnt / totCnt * 100)); // 배분률 - 현재전송 비율 + } + + String sendAgent = sendRateList.get(0).getAgentCode(); + float maxRate = sendRateList.get(0).getSendRateInfo(); + for (MjonMsgVO tmpVO : sendRateList) { // 배분률 대비 현재전송 비율이 가장 적은거 찾기 + if (maxRate < tmpVO.getSendRateInfo()) { + maxRate = tmpVO.getSendRateInfo(); + sendAgent = tmpVO.getAgentCode(); + } + } + + mjonMsgVO.setMsgDiv("S"); // 단문 + + // 문자타입별 대표전송사 정보 + MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); + mjonMsgVO2 = mjonMsgDAO.selectRepMsgAgetnInfo(mjonMsgVO); + // 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술 + mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택 + // 전송금액 + mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 + mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 + + mjonMsgVO.setMsgType("4"); + + MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO); + + + // 시스템 발송 로그 + SendLogVO sendLogVO = new SendLogVO(); + // SendType 1:문자로 발송 2:이메일로 발송 + sendLogVO.setSendId(returnVO.getMsgGroupId()); + sendLogVO.setSendType("1"); + sendLogVO.setFrstSendInfo(mjonMsgVO.getCallFrom()); + sendLogVO.setReceive(mjonMsgVO.getCallTo()); + sendLogVO.setCheckNo(code); + sendLogVO.setContents(contents); + + mjonMsgDataService.insertSysMsgLog(sendLogVO); + + return returnVO; + } + + +>>>>>>> branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git } diff --git a/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java b/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java index b51976bc..52caee34 100644 --- a/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java +++ b/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java @@ -14,6 +14,7 @@ import egovframework.rte.fdl.idgnr.EgovIdGnrService; import itn.com.uss.olh.hpc.service.HackIpService; import itn.com.uss.olh.hpc.service.HackIpVO; import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.mjo.cert.service.CertVO; import itn.let.mjo.msgsent.service.MjonMsgSentVO; import itn.let.mjo.pay.service.KmcVO; import itn.let.sec.rgm.service.AuthorGroup; @@ -604,6 +605,20 @@ public class EgovMberManageServiceImpl extends EgovAbstractServiceImpl implement return resultCnt; } + + @Override + public String getSecuLoginFlag(String id) { + // TODO Auto-generated method stub + return mberManageDAO.getSecuLoginFlag(id); + } + public void updateSecureLoginFlag(MberManageVO mberManageVO) throws Exception { + mberManageDAO.updateSecureLoginFlag(mberManageVO); + } + + @Override + public String findTopByregDateFromCertLog(AuthCertVO authCertVO) { + return mberManageDAO.findTopByregDateFromCertLog(authCertVO); + } } \ No newline at end of file diff --git a/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java b/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java index 2068d743..2418dce9 100644 --- a/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java +++ b/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java @@ -5,6 +5,7 @@ import java.util.List; import org.springframework.stereotype.Repository; import itn.com.cmm.service.impl.EgovComAbstractDAO; +import itn.let.mjo.cert.service.CertVO; import itn.let.mjo.msgsent.service.MjonMsgSentVO; import itn.let.uat.uia.service.AuthCertVO; import itn.let.uss.umt.service.MberManageConfigVO; @@ -332,5 +333,17 @@ public class MberManageDAO extends EgovComAbstractDAO{ return resultCnt; } + + public String getSecuLoginFlag(String id) { + return (String)select("mberManageDAO.getSecuLoginFlag", id); + } + + public void updateSecureLoginFlag(MberManageVO mberManageVO) throws Exception { + update("mberManageDAO.updateSecureLoginFlag",mberManageVO); + } + + public String findTopByregDateFromCertLog(AuthCertVO authCertVO) { + return (String)select("mberManageDAO.findTopByregDateFromCertLog", authCertVO); + } } \ No newline at end of file diff --git a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java index 33526052..125c9c17 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java @@ -83,6 +83,12 @@ import itn.com.cmm.util.StringUtil; 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.ip.service.CertIpService; +import itn.let.cert.ip.service.CertLoginLogService; +import itn.let.cert.ip.service.MberCertIpVO; +import itn.let.cert.ip.service.MberCertLoginLogVO; +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; @@ -236,6 +242,15 @@ public class EgovLoginController { @Resource(name = "mberGrdService") MberGrdService mberGrdService; + + @Resource(name = "CertPhoneService") + private CertPhoneService certPhoneService; + + @Resource(name = "CertLoginLogService") + private CertLoginLogService certLoginLogService; + + @Resource(name = "CertIpService") + private CertIpService certIpService; private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class); @@ -1106,6 +1121,7 @@ public class EgovLoginController { // 공인 IP 구하기 String userIp = EgovClntInfo.getClntIP(request); + System.out.println("userIp :: "+userIp); // java.util.Scanner s = new java.util.Scanner(new // java.net.URL("https://api.ipify.org").openStream(), // "UTF-8").useDelimiter("\\A"); @@ -1463,7 +1479,639 @@ public class EgovLoginController { * @return result - 로그인결과(세션정보) * @exception Exception */ - @RequestMapping(value = "/web/user/login/actionSecurityLogin.do") + @RequestMapping(value = "/web/user/login/actionSecurityLogin_bak_00.do") + public String selectActionSecurityLoginWeb_bak(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, + HttpServletRequest request, @RequestParam Map commandMap, ModelMap model, + HttpSession session, RedirectAttributes redirectAttributes) throws Exception { + + String userIp = EgovClntInfo.getClntIP(request); + HackIpVO hackIpVO = new HackIpVO(); + hackIpVO.setAccessIp(userIp); + hackIpVO.setBlockYn("Y"); + if (null != hackIpService.selectHackIpVO(hackIpVO)) { + String message = "차단된 아이피입니다. 관리자에게 문의해 주십시요."; + redirectAttributes.addFlashAttribute("message", message); + return "redirect:/"; + } + + /*ScriptEngineManager engine = new ScriptEngineManager();*/ + + loginVO.setUserSe("USR"); + // 로그인 정보 check + + if (loginVO.getId() == null || loginVO.getPassword() == null) { + // 회원가입 시 로그인 처리 + LoginVO pLoginVO = (LoginVO) request.getAttribute("pLoginVO"); + if (pLoginVO == null) { + // RSA 키 생성 + initRsa(request); + /* return "redirect:/web/user/login/login.do"; */ + return "redirect:/"; + } else { + loginVO.setId(pLoginVO.getId()); + loginVO.setPassword(pLoginVO.getPassword()); + loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); + loginVO.setMessage(pLoginVO.getMessage()); + } + } + + // 1. 일반 로그인 처리 + PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovLoginController.RSA_WEB_KEY); + if (privateKey == null) { + initRsa(request); + /*return "web/site/login/EgovLoginGnrlUsr";*/ + String message = "아이디와 비밀번호를 확인해주세요."; + redirectAttributes.addFlashAttribute("message", message); + System.out.println("======================================================"); + System.out.println("= RSA privateKey is null ="); + System.out.println("======================================================"); + return "redirect:/web/main/mainPage.do"; + } + + LoginVO resultVO; + // 복호화 + String id = ""; + try { + //아이디 복호화 후 소문자 변환 + id = decryptRsa(privateKey, loginVO.getId()).toLowerCase(); + } catch (Exception e) { + initRsa(request); + // return "redirect:/web/user/login/login.do"; + if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) { + redirectAttributes.addFlashAttribute("fail", true); + return "redirect:/web/user/login/login.do"; + } + return "redirect:/"; + + } + String password = decryptRsa(privateKey, loginVO.getPassword()); + loginVO.setId(id); + loginVO.setIp(EgovClntInfo.getClntIP(request)); + loginVO.setPassword(password); + loginVO.setUserSe("GNR"); + loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + + //기업회원 가입중인지 체크 - 기존 로그인 select는 MBER_STTUS = 'Y'가 하드코딩이라 로그인 전 기업회원 가입중인지 선 체크 + //암호화 2번 방지를 위한 LoginVO 생성 + LoginVO loginCmpChkVO = new LoginVO(); + loginCmpChkVO.setId(id); + loginCmpChkVO.setIp(EgovClntInfo.getClntIP(request)); + loginCmpChkVO.setPassword(password); + loginCmpChkVO.setUserSe("GNR"); + loginCmpChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + loginCmpChkVO.setEmplyrSttusCode("A"); // 신청대기중인 사용자까지 조회 + LoginVO cmpHstResultVO = loginService.actionLoginCmpChk(loginCmpChkVO); + if(null != cmpHstResultVO.getId()) { + //기업회원 정보 마지막 내역 조회 + MberManageVO mberManageVO = new MberManageVO(); + mberManageVO.setMberId(loginVO.getId()); + MberManageVO cmpChangeManageVO = mberManageService.selectCmpUsrHst(mberManageVO); + if(null != cmpChangeManageVO) { + if("01".equals(cmpChangeManageVO.getHstType())) { //가장 마지막 내역이 기업회원 가입일 시 + if("01".equals(cmpChangeManageVO.getHstSttus()) || "03".equals(cmpChangeManageVO.getHstSttus()) ) { //가장 마지막 기업회원 가입이 신청 또는 반려 상태일 시 + redirectAttributes.addFlashAttribute("mberId", loginVO.getId()); + //addFlashAttribute 일회성으로 인하여 membershipAttachDocBefore.do 이동 후 + //membershipAttachDoc.do로 바로 submit하여 새로고침 시 정보 유지되게 끔 처리 + return "redirect:/web/user/login/membershipAttachDocBefore.do"; + } + } + } + } + //스팸처리 회원인지 mj_spam_member_info 해당 ID의 최근 1개 데이터 조회 + LoginVO loginSmiChkVO = new LoginVO(); + loginSmiChkVO.setId(id); + loginSmiChkVO.setIp(EgovClntInfo.getClntIP(request)); + loginSmiChkVO.setPassword(password); + loginSmiChkVO.setUserSe("GNR"); + loginSmiChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + loginSmiChkVO.setEmplyrSttusCode("B"); // 신청대기중인 사용자까지 조회 + LoginVO smiResultVO = loginService.actionLoginCmpChk(loginSmiChkVO); + if(null != smiResultVO.getId()) { + MberManageVO spamMberManageVO = new MberManageVO(); + spamMberManageVO.setMberId(loginVO.getId()); + MberManageVO spamMemberInfoVO = mberManageService.selectSpamMemberInfo(spamMberManageVO); + if(null != spamMemberInfoVO) { + redirectAttributes.addFlashAttribute("mberId", loginVO.getId()); + return "redirect:/web/user/login/loginRestrictionUseBefore.do"; + } + } + resultVO = loginService.actionLogin(loginVO); + LoginVO passMissVO = loginService.selectPassMiss(loginVO); + + String alertMessage = ""; + if (!"admin".equals(loginVO.getId())) { + //아이디가 존재 + if(passMissVO != null) { + // 로그인 실패 ( + if (null == resultVO.getId() && passMissVO.getPassMiss() < 5 ) { + loginService.updatePassMissPlus(loginVO); + alertMessage = egovMessageSource.getMessage("fail.common.login"); + + // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디는 있지만 비밀번호가 틀린상황 + /// HackIpVO hackIpVO = new HackIpVO(); + hackIpVO.setHackUserId(loginVO.getId()); + hackIpVO.setAccessIp( EgovClntInfo.getClntIP(request)); + hackIpService.insertHackIp(hackIpVO); + if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) { + redirectAttributes.addFlashAttribute("fail", true); + return "redirect:/web/user/login/login.do"; + } + + return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage); + } else { + if (passMissVO.getPassMiss() >= 5) { + alertMessage = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요."; + return goUserPassMissPage(redirectAttributes, loginVO, request, model, alertMessage); + } /* + * else if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "신청하신 아이디가 현제 승인대기 상" + "태입니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); }else + * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); } + */ + loginService.updatePassMissReset(loginVO); + } + } + //아이디 미존재 + else { + alertMessage = egovMessageSource.getMessage("fail.common.login"); + + // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디없고 비밀번호도 틀린상황 + /// HackIpVO hackIpVO = new HackIpVO(); + hackIpVO.setHackUserId(loginVO.getId()); + hackIpVO.setAccessIp(EgovClntInfo.getClntIP(request)); + hackIpService.insertHackIp(hackIpVO); + if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) { + redirectAttributes.addFlashAttribute("fail", true); + return "redirect:/web/user/login/login.do"; + } + + return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage); + } + } + + + /* 일시 : 2023.07.26 + * 내용 : 로그인시 휴먼고객 redirect 기능 추가 + * 작업자 : 원영현 과장 + */ + + if(resultVO.getDormantYn().equals("Y") || resultVO.getDormantYn() == "Y") { + + return "redirect:/web/user/humanPage.do"; + } + + + + + boolean loginPolicyYn = true; + + // 접속IP + // userIp = EgovClntInfo.getClntIP(request); + + // resultVO.siteId 의 각 로그인 ip를 조회함 + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + // 2. spring security 연동 + request.getSession().setAttribute("LoginVO", resultVO); + UsernamePasswordAuthenticationFilter springSecurity = null; + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); + Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); + + if (beans.size() > 0) { + springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; + springSecurity.setUsernameParameter("egov_security_username"); + springSecurity.setPasswordParameter("egov_security_password"); + springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); + } else { + throw new IllegalStateException("No AuthenticationProcessingFilter"); + } + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + { // 관리자 로그인 log 저장 + String uniqId = ""; + String ip = ""; + + /* Authenticated */ + LoginLog loginLog = new LoginLog(); + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated.booleanValue()) { + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + uniqId = user.getUniqId(); + ip = EgovClntInfo.getClntIP(request); + + HttpSession httpSession = request.getSession(true); + { + List siteManageList = new ArrayList(); + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setFirstIndex(0); + siteManagerVO.setRecordCountPerPage(100); + siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); + httpSession.setAttribute("siteManageList", siteManageList); + httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 + httpSession.setAttribute("esntlId", user.getPassword()); + + // 최근검색어 조회 후 세션에 넣어줌 + /* + * UserManageVO tempUserManageVO = new UserManageVO(); + * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = + * userManageService.selectRecentSearchWord(tempUserManageVO); + * + * List lisRecentSearch = new ArrayList(); if(null != + * tempUserManageVO){ //ArrayList 로 세션 저장 + * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," + * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; + */ + } + } + /* + * loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip); + * loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N"); + * loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("U"); //사용자 + * loginLog.setDeviceType("P"); //PC loginLog.setProgrmFileNm("adminLogin"); + * loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog); + */ + + loginVO.getId(); + loginVO.getIp(); + loginVO.setMessage("로그인 성공되었습니다."); + loginVO.setLoginYn("Y"); + loginService.insertActionLoginLog(loginVO); + } + + // 등급제 Start + // 회원별 등급 적용 + MberGrdVO mberGrdVO = new MberGrdVO(); + mberGrdVO.setMberId(loginVO.getId()); + mberGrdVO.setAmt("0"); + mberGrdVO.setMoid(""); + mberGrdService.mberGrdSaveByUserNoHist(mberGrdVO); + // End + + // 이벤트 결제 바로가기 로직 체크 Start + String goEventPay = (String) commandMap.get("goEventPay"); + System.out.println("goEventPay : " + goEventPay); + if (null != goEventPay && goEventPay.equals("Y")) { + // 이벤트 결제 바로가기 + if (goEventPay(loginVO) == true) { + loginVO.setBeforeUrl("/web/event/member/pay/PayView.do"); + } + } + // End + + String beforeUrl = (String) commandMap.get("beforeUrl"); + + // 로그인 전 URL 호출 시 + if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { + request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); + // 회원가입 시 메세지 처리 + if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { + request.getSession().setAttribute("registMessage", loginVO.getMessage()); + } + } + + // 개인키 삭제 + // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. + request.getSession().setAttribute("pageType", "web"); + + return "blank"; // 성공 시 페이지.. (redirect 불가) + + // uat/uia/actionMain.do 실제 성공시 무조건 좌측 메소드로 감. + // return "forward:/web/main/mainPage.do"; + } else { + String message = egovMessageSource.getMessage("fail.common.login"); + redirectAttributes.addFlashAttribute("beforeUrl", loginVO.getBeforeUrl()); + redirectAttributes.addFlashAttribute("message", message); + return "redirect:/"; + } + } + + /** + * @Method Name : selectUserSttusAjax + * @작성일 : 2024. 3. 27. + * @작성자 : WYH + * @변경이력 : + * @Method 설명 : 회원상태 조회 (Y:일반회원, B:이용정지 회원, N:탈퇴회원) + */ + /* + @RequestMapping(value = { "/web/user/login/actionSecurityLoginAjax.do" }) + public ModelAndView actionSecurityLoginAjax(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, + HttpServletRequest request, @RequestParam Map commandMap, ModelMap model, + HttpSession session, RedirectAttributes redirectAttributes) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String p_id = ""; + String p_pwd = ""; + + try { + //id, pwd 로그인 하고 결과와 hp 번호를 돌려주면 됨 + p_id = request.getParameter("id"); + p_pwd = request.getParameter("password"); + + + + String userId = mjonMsgVO.getUserId(); + String userSttus = userManageService.selectUserStatusInfoCheck(userId); + + modelAndView.addObject("status", "success"); + modelAndView.addObject("userSttus", userSttus); + + } catch (Exception e) { + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", "인증에 실패하였습니다."); + } + + return modelAndView; + } + */ + + @RequestMapping(value = "/web/user/login/actionSecurityLoginBeforeHpAjax.do") + public ModelAndView selectActionSecurityLoginWebBeforeHp(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, + HttpServletRequest request, @RequestParam Map commandMap, ModelMap model, + HttpSession session, RedirectAttributes redirectAttributes) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + String userIp = EgovClntInfo.getClntIP(request); + HackIpVO hackIpVO = new HackIpVO(); + hackIpVO.setAccessIp(userIp); + hackIpVO.setBlockYn("Y"); + if (null != hackIpService.selectHackIpVO(hackIpVO)) { + String message = "차단된 아이피입니다. 관리자에게 문의해 주십시요."; + + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + + } + + /*ScriptEngineManager engine = new ScriptEngineManager();*/ + + loginVO.setUserSe("USR"); + // 로그인 정보 check + + if (loginVO.getId() == null || loginVO.getPassword() == null) { + // 회원가입 시 로그인 처리 + LoginVO pLoginVO = (LoginVO) request.getAttribute("pLoginVO"); + if (pLoginVO == null) { + // RSA 키 생성 + initRsa(request); + /* return "redirect:/web/user/login/login.do"; */ + //return "redirect:/"; + + String message = "로그인 실패했습니다."; + + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + + } else { + loginVO.setId(pLoginVO.getId()); + loginVO.setPassword(pLoginVO.getPassword()); + loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); + loginVO.setMessage(pLoginVO.getMessage()); + } + } + + // 1. 일반 로그인 처리 + PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovLoginController.RSA_WEB_KEY); + if (privateKey == null) { + initRsa(request); + /*return "web/site/login/EgovLoginGnrlUsr";*/ + String message = "아이디와 비밀번호를 확인해주세요."; + redirectAttributes.addFlashAttribute("message", message); + System.out.println("======================================================"); + System.out.println("= RSA privateKey is null ="); + System.out.println("======================================================"); + + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + + } + + LoginVO resultVO; + // 복호화 + String id = ""; + try { + //아이디 복호화 후 소문자 변환 + id = decryptRsa(privateKey, loginVO.getId()).toLowerCase(); + } catch (Exception e) { + initRsa(request); + + String message = "로그인 실패했습니다."; + + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + + } + String password = decryptRsa(privateKey, loginVO.getPassword()); + loginVO.setId(id); + loginVO.setIp(EgovClntInfo.getClntIP(request)); + loginVO.setPassword(password); + loginVO.setUserSe("GNR"); + loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + + //기업회원 가입중인지 체크 - 기존 로그인 select는 MBER_STTUS = 'Y'가 하드코딩이라 로그인 전 기업회원 가입중인지 선 체크 + //암호화 2번 방지를 위한 LoginVO 생성 + LoginVO loginCmpChkVO = new LoginVO(); + loginCmpChkVO.setId(id); + loginCmpChkVO.setIp(EgovClntInfo.getClntIP(request)); + loginCmpChkVO.setPassword(password); + loginCmpChkVO.setUserSe("GNR"); + loginCmpChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + loginCmpChkVO.setEmplyrSttusCode("A"); // 신청대기중인 사용자까지 조회 + LoginVO cmpHstResultVO = loginService.actionLoginCmpChk(loginCmpChkVO); + if(null != cmpHstResultVO.getId()) { + //기업회원 정보 마지막 내역 조회 + MberManageVO mberManageVO = new MberManageVO(); + mberManageVO.setMberId(loginVO.getId()); + MberManageVO cmpChangeManageVO = mberManageService.selectCmpUsrHst(mberManageVO); + if(null != cmpChangeManageVO) { + if("01".equals(cmpChangeManageVO.getHstType())) { //가장 마지막 내역이 기업회원 가입일 시 + if("01".equals(cmpChangeManageVO.getHstSttus()) || "03".equals(cmpChangeManageVO.getHstSttus()) ) { //가장 마지막 기업회원 가입이 신청 또는 반려 상태일 시 + + String message = "기업회원 신청 또는 반려상태입니다."; + modelAndView.addObject("returnType", "B"); + modelAndView.addObject("mberId", loginVO.getId()); + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + + } + } + } + } + //스팸처리 회원인지 mj_spam_member_info 해당 ID의 최근 1개 데이터 조회 + LoginVO loginSmiChkVO = new LoginVO(); + loginSmiChkVO.setId(id); + loginSmiChkVO.setIp(EgovClntInfo.getClntIP(request)); + loginSmiChkVO.setPassword(password); + loginSmiChkVO.setUserSe("GNR"); + loginSmiChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + loginSmiChkVO.setEmplyrSttusCode("B"); // 신청대기중인 사용자까지 조회 + LoginVO smiResultVO = loginService.actionLoginCmpChk(loginSmiChkVO); + if(null != smiResultVO.getId()) { + MberManageVO spamMberManageVO = new MberManageVO(); + spamMberManageVO.setMberId(loginVO.getId()); + MberManageVO spamMemberInfoVO = mberManageService.selectSpamMemberInfo(spamMberManageVO); + if(null != spamMemberInfoVO) { + String message = "신청대기중인 상태입니다."; + + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + } + } + resultVO = loginService.actionLogin(loginVO); + LoginVO passMissVO = loginService.selectPassMiss(loginVO); + + String alertMessage = ""; + if (!"admin".equals(loginVO.getId())) { + //아이디가 존재 + if(passMissVO != null) { + // 로그인 실패 ( + if (null == resultVO.getId() && passMissVO.getPassMiss() < 5 ) { + loginService.updatePassMissPlus(loginVO); + alertMessage = egovMessageSource.getMessage("fail.common.login"); + + // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디는 있지만 비밀번호가 틀린상황 + /// HackIpVO hackIpVO = new HackIpVO(); + hackIpVO.setHackUserId(loginVO.getId()); + hackIpVO.setAccessIp( EgovClntInfo.getClntIP(request)); + hackIpService.insertHackIp(hackIpVO); + if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) { + String message = "로그인 실패했습니다."; + + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + } + + String message = "로그인 실패했습니다."; + + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + + } else { + if (passMissVO.getPassMiss() >= 5) { + //alertMessage = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요."; + String message = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요."; + + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + } /* + * else if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "신청하신 아이디가 현제 승인대기 상" + "태입니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); }else + * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); } + */ + loginService.updatePassMissReset(loginVO); + } + } + //아이디 미존재 + else { + alertMessage = egovMessageSource.getMessage("fail.common.login"); + + // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디없고 비밀번호도 틀린상황 + /// HackIpVO hackIpVO = new HackIpVO(); + hackIpVO.setHackUserId(loginVO.getId()); + hackIpVO.setAccessIp(EgovClntInfo.getClntIP(request)); + hackIpService.insertHackIp(hackIpVO); + if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) { + String message = "로그인 실패했습니다."; + + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + } + + String message = "로그인 실패했습니다."; + + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + } + } + + + /* 일시 : 2023.07.26 + * 내용 : 로그인시 휴먼고객 redirect 기능 추가 + * 작업자 : 원영현 과장 + */ + + if(resultVO.getDormantYn().equals("Y") || resultVO.getDormantYn() == "Y") { + + String message = "휴면계정입니다."; + modelAndView.addObject("returnType", "A"); + modelAndView.addObject("status", "fail"); + modelAndView.addObject("msg", message); + return modelAndView; + } + + String message = "로그인 성공했습니다."; + + + + + + /* 일시 : 2024.11.18 + * 내용 : 다중 인증번호 조회 + * 작업자 : 이호영 + */ + + + List mberCertPhoneList = certPhoneService.selectMberCertPhoneList(resultVO.getId()); + + + modelAndView.addObject("status", "success"); + modelAndView.addObject("msg", message); + modelAndView.addObject("data", resultVO); + modelAndView.addObject("mberCertPhoneList", mberCertPhoneList); + + + + + /* 일시 : 2024.11.21 + * 내용 : 패스 인증 조회 + * 작업자 : 이호영 + */ + String userId = loginVO.getId(); + // lettngnrlmber TB에 secuLoginFlag 값이 Y면 인증 해야함 + String secuLoginFlag = mberManageService.getSecuLoginFlag(userId); + + String passFlag = "Y"; + if("Y".equals(secuLoginFlag)) { + // lettngnrlmber TB에 secuLoginFlag 값이 Y면 + // IP가 등록 되어 있는지 확인 + // 있으면 2차인증 안함 + // 없으면 2차인증 진행 + MberCertIpVO mberCertIpVO = new MberCertIpVO(); + mberCertIpVO.setCertIp(userIp); + mberCertIpVO.setMberId(userId); + // ip가 있으면 true + if(!certIpService.checkCertIp(mberCertIpVO)) { + passFlag = "N"; + } + } + modelAndView.addObject("passFlag", passFlag); + + + return modelAndView; + + + } + + @RequestMapping(value = "/web/user/login/actionSecurityLogin_ori_00.do") public String selectActionSecurityLoginWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, @RequestParam Map commandMap, ModelMap model, HttpSession session, RedirectAttributes redirectAttributes) throws Exception { @@ -1772,6 +2420,359 @@ public class EgovLoginController { } } + + + @RequestMapping(value = "/web/user/login/actionSecurityLoginAfterHp.do") + public String selectActionSecurityLoginWebAfterHp(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, + HttpServletRequest request, @RequestParam Map commandMap, ModelMap model, + HttpSession session, RedirectAttributes redirectAttributes) throws Exception { + + String userIp = EgovClntInfo.getClntIP(request); + HackIpVO hackIpVO = new HackIpVO(); + hackIpVO.setAccessIp(userIp); + hackIpVO.setBlockYn("Y"); + if (null != hackIpService.selectHackIpVO(hackIpVO)) { + String message = "차단된 아이피입니다. 관리자에게 문의해 주십시요."; + redirectAttributes.addFlashAttribute("message", message); + return "redirect:/"; + } + + /*ScriptEngineManager engine = new ScriptEngineManager();*/ + + loginVO.setUserSe("USR"); + // 로그인 정보 check + + if (loginVO.getId() == null || loginVO.getPassword() == null) { + // 회원가입 시 로그인 처리 + LoginVO pLoginVO = (LoginVO) request.getAttribute("pLoginVO"); + if (pLoginVO == null) { + // RSA 키 생성 + initRsa(request); + /* return "redirect:/web/user/login/login.do"; */ + return "redirect:/"; + } else { + loginVO.setId(pLoginVO.getId()); + loginVO.setPassword(pLoginVO.getPassword()); + loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); + loginVO.setMessage(pLoginVO.getMessage()); + } + } + + // 1. 일반 로그인 처리 + PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovLoginController.RSA_WEB_KEY); + if (privateKey == null) { + initRsa(request); + /*return "web/site/login/EgovLoginGnrlUsr";*/ + String message = "아이디와 비밀번호를 확인해주세요."; + redirectAttributes.addFlashAttribute("message", message); + System.out.println("======================================================"); + System.out.println("= RSA privateKey is null ="); + System.out.println("======================================================"); + return "redirect:/web/main/mainPage.do"; + } + + LoginVO resultVO; + // 복호화 + String id = ""; + try { + //아이디 복호화 후 소문자 변환 + id = decryptRsa(privateKey, loginVO.getId()).toLowerCase(); + } catch (Exception e) { + initRsa(request); + // return "redirect:/web/user/login/login.do"; + if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) { + redirectAttributes.addFlashAttribute("fail", true); + return "redirect:/web/user/login/login.do"; + } + return "redirect:/"; + + } + + + //핸드폰 인증번호 확인 + String s_hp = request.getParameter("hp"); + String s_num = request.getParameter("num"); + + System.out.println(s_hp); + System.out.println(s_num); + System.out.println("s_num=============="); + + SendLogVO sendLogVO = new SendLogVO(); + sendLogVO.setSendId(id); + sendLogVO.setReceive(s_hp); + sendLogVO.setCheckNo(s_num); + + String passFlag = request.getParameter("passFlag"); + System.out.println("passFlag : "+ passFlag); + System.out.println("passFlag : "+ passFlag); + System.out.println("passFlag : "+ passFlag); + System.out.println("passFlag : "+ passFlag); + System.out.println("passFlag : "+ passFlag.toString()); + System.out.println("StringUtils.isNotEmpty(passFlag) : "+ StringUtils.isNotEmpty(passFlag)); + + if(!"Y".equals(passFlag)) { + + sendLogVO = mjonMsgDataService.selectSysMsgLogCheck(sendLogVO); + + if (sendLogVO==null) { + redirectAttributes.addFlashAttribute("fail2", true); + return "redirect:/web/user/login/login.do"; + } + + } + System.out.println("========================= : "+ passFlag); + + String password = decryptRsa(privateKey, loginVO.getPassword()); + loginVO.setId(id); + loginVO.setIp(EgovClntInfo.getClntIP(request)); + loginVO.setPassword(password); + loginVO.setUserSe("GNR"); + loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + + //기업회원 가입중인지 체크 - 기존 로그인 select는 MBER_STTUS = 'Y'가 하드코딩이라 로그인 전 기업회원 가입중인지 선 체크 + //암호화 2번 방지를 위한 LoginVO 생성 + LoginVO loginCmpChkVO = new LoginVO(); + loginCmpChkVO.setId(id); + loginCmpChkVO.setIp(EgovClntInfo.getClntIP(request)); + loginCmpChkVO.setPassword(password); + loginCmpChkVO.setUserSe("GNR"); + loginCmpChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + loginCmpChkVO.setEmplyrSttusCode("A"); // 신청대기중인 사용자까지 조회 + LoginVO cmpHstResultVO = loginService.actionLoginCmpChk(loginCmpChkVO); + if(null != cmpHstResultVO.getId()) { + //기업회원 정보 마지막 내역 조회 + MberManageVO mberManageVO = new MberManageVO(); + mberManageVO.setMberId(loginVO.getId()); + MberManageVO cmpChangeManageVO = mberManageService.selectCmpUsrHst(mberManageVO); + if(null != cmpChangeManageVO) { + if("01".equals(cmpChangeManageVO.getHstType())) { //가장 마지막 내역이 기업회원 가입일 시 + if("01".equals(cmpChangeManageVO.getHstSttus()) || "03".equals(cmpChangeManageVO.getHstSttus()) ) { //가장 마지막 기업회원 가입이 신청 또는 반려 상태일 시 + redirectAttributes.addFlashAttribute("mberId", loginVO.getId()); + //addFlashAttribute 일회성으로 인하여 membershipAttachDocBefore.do 이동 후 + //membershipAttachDoc.do로 바로 submit하여 새로고침 시 정보 유지되게 끔 처리 + return "redirect:/web/user/login/membershipAttachDocBefore.do"; + } + } + } + } + //스팸처리 회원인지 mj_spam_member_info 해당 ID의 최근 1개 데이터 조회 + LoginVO loginSmiChkVO = new LoginVO(); + loginSmiChkVO.setId(id); + loginSmiChkVO.setIp(EgovClntInfo.getClntIP(request)); + loginSmiChkVO.setPassword(password); + loginSmiChkVO.setUserSe("GNR"); + loginSmiChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회 + loginSmiChkVO.setEmplyrSttusCode("B"); // 신청대기중인 사용자까지 조회 + LoginVO smiResultVO = loginService.actionLoginCmpChk(loginSmiChkVO); + if(null != smiResultVO.getId()) { + MberManageVO spamMberManageVO = new MberManageVO(); + spamMberManageVO.setMberId(loginVO.getId()); + MberManageVO spamMemberInfoVO = mberManageService.selectSpamMemberInfo(spamMberManageVO); + if(null != spamMemberInfoVO) { + redirectAttributes.addFlashAttribute("mberId", loginVO.getId()); + return "redirect:/web/user/login/loginRestrictionUseBefore.do"; + } + } + resultVO = loginService.actionLogin(loginVO); + LoginVO passMissVO = loginService.selectPassMiss(loginVO); + + String alertMessage = ""; + if (!"admin".equals(loginVO.getId())) { + //아이디가 존재 + if(passMissVO != null) { + // 로그인 실패 ( + if (null == resultVO.getId() && passMissVO.getPassMiss() < 5 ) { + loginService.updatePassMissPlus(loginVO); + alertMessage = egovMessageSource.getMessage("fail.common.login"); + + // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디는 있지만 비밀번호가 틀린상황 + /// HackIpVO hackIpVO = new HackIpVO(); + hackIpVO.setHackUserId(loginVO.getId()); + hackIpVO.setAccessIp( EgovClntInfo.getClntIP(request)); + hackIpService.insertHackIp(hackIpVO); + if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) { + redirectAttributes.addFlashAttribute("fail", true); + return "redirect:/web/user/login/login.do"; + } + + return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage); + } else { + if (passMissVO.getPassMiss() >= 5) { + alertMessage = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요."; + return goUserPassMissPage(redirectAttributes, loginVO, request, model, alertMessage); + } /* + * else if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "신청하신 아이디가 현제 승인대기 상" + "태입니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); }else + * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage = + * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, + * request, model, alertMessage); } + */ + loginService.updatePassMissReset(loginVO); + } + } + //아이디 미존재 + else { + alertMessage = egovMessageSource.getMessage("fail.common.login"); + + // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디없고 비밀번호도 틀린상황 + /// HackIpVO hackIpVO = new HackIpVO(); + hackIpVO.setHackUserId(loginVO.getId()); + hackIpVO.setAccessIp(EgovClntInfo.getClntIP(request)); + hackIpService.insertHackIp(hackIpVO); + if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) { + redirectAttributes.addFlashAttribute("fail", true); + return "redirect:/web/user/login/login.do"; + } + + return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage); + } + } + + + /* 일시 : 2023.07.26 + * 내용 : 로그인시 휴먼고객 redirect 기능 추가 + * 작업자 : 원영현 과장 + */ + + if(resultVO.getDormantYn().equals("Y") || resultVO.getDormantYn() == "Y") { + + return "redirect:/web/user/humanPage.do"; + } + + + + + boolean loginPolicyYn = true; + + // 접속IP + // userIp = EgovClntInfo.getClntIP(request); + + // resultVO.siteId 의 각 로그인 ip를 조회함 + if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) { + // 세션에다 ip 등록 + resultVO.setIp(userIp); + // 2. spring security 연동 + request.getSession().setAttribute("LoginVO", resultVO); + UsernamePasswordAuthenticationFilter springSecurity = null; + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); + Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); + + if (beans.size() > 0) { + springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; + springSecurity.setUsernameParameter("egov_security_username"); + springSecurity.setPasswordParameter("egov_security_password"); + springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); + } else { + throw new IllegalStateException("No AuthenticationProcessingFilter"); + } + + springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); + { // 관리자 로그인 log 저장 + String uniqId = ""; + String ip = ""; + + /* Authenticated */ + LoginLog loginLog = new LoginLog(); + Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); + if (isAuthenticated.booleanValue()) { + LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); + uniqId = user.getUniqId(); + ip = EgovClntInfo.getClntIP(request); + + HttpSession httpSession = request.getSession(true); + { + List siteManageList = new ArrayList(); + SiteManagerVO siteManagerVO = new SiteManagerVO(); + siteManagerVO.setFirstIndex(0); + siteManagerVO.setRecordCountPerPage(100); + siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); + httpSession.setAttribute("siteManageList", siteManageList); + httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해 + httpSession.setAttribute("esntlId", user.getPassword()); + + // 최근검색어 조회 후 세션에 넣어줌 + /* + * UserManageVO tempUserManageVO = new UserManageVO(); + * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = + * userManageService.selectRecentSearchWord(tempUserManageVO); + * + * List lisRecentSearch = new ArrayList(); if(null != + * tempUserManageVO){ //ArrayList 로 세션 저장 + * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split("," + * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ; + */ + } + } + /* + * loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip); + * loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N"); + * loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("U"); //사용자 + * loginLog.setDeviceType("P"); //PC loginLog.setProgrmFileNm("adminLogin"); + * loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog); + */ + + loginVO.getId(); + loginVO.getIp(); + loginVO.setMessage("로그인 성공되었습니다."); + loginVO.setLoginYn("Y"); + + loginService.insertActionLoginLog(loginVO); + // 인증 로그인 이력을 위한 insert + + MberCertLoginLogVO mberCertLoginLogVO = new MberCertLoginLogVO(); + mberCertLoginLogVO.setLoginId(loginVO.getId()); + mberCertLoginLogVO.setLoginIp(loginVO.getIp()); + certLoginLogService.insertCertLoginLog(mberCertLoginLogVO, request); + } + + // 등급제 Start + // 회원별 등급 적용 + MberGrdVO mberGrdVO = new MberGrdVO(); + mberGrdVO.setMberId(loginVO.getId()); + mberGrdVO.setAmt("0"); + mberGrdVO.setMoid(""); + mberGrdService.mberGrdSaveByUserNoHist(mberGrdVO); + // End + + // 이벤트 결제 바로가기 로직 체크 Start + String goEventPay = (String) commandMap.get("goEventPay"); + System.out.println("goEventPay : " + goEventPay); + if (null != goEventPay && goEventPay.equals("Y")) { + // 이벤트 결제 바로가기 + if (goEventPay(loginVO) == true) { + loginVO.setBeforeUrl("/web/event/member/pay/PayView.do"); + } + } + // End + + String beforeUrl = (String) commandMap.get("beforeUrl"); + + // 로그인 전 URL 호출 시 + if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) { + request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl()); + // 회원가입 시 메세지 처리 + if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) { + request.getSession().setAttribute("registMessage", loginVO.getMessage()); + } + } + + // 개인키 삭제 + // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. + request.getSession().setAttribute("pageType", "web"); + + return "blank"; // 성공 시 페이지.. (redirect 불가) + + // uat/uia/actionMain.do 실제 성공시 무조건 좌측 메소드로 감. + // return "forward:/web/main/mainPage.do"; + } else { + String message = egovMessageSource.getMessage("fail.common.login"); + redirectAttributes.addFlashAttribute("beforeUrl", loginVO.getBeforeUrl()); + redirectAttributes.addFlashAttribute("message", message); + return "redirect:/"; + } + } + // 이벤트 결제 바로가기 public boolean goEventPay(LoginVO loginVO) throws Exception { boolean goEventPay = false; @@ -2646,22 +3647,6 @@ public class EgovLoginController { String resultSts = "0"; String resultBlockSts = "0"; - // 비밀번호 찾기 문자내용 - String contents = "[문자온] 비밀번호 변경 인증번호 : %code%"; - String code = ""; - long seed = System.currentTimeMillis(); - Random random = new Random(seed); - // code = Integer.toString(random.nextInt(4)); - StringBuffer randomCode = new StringBuffer(); - for (int i = 0; i < 6; i++) { - code = randomCode.append(Integer.toString(random.nextInt(10))).toString(); - } - contents = contents.replace("%code%", code); - - mjonMsgVO.setSmsTxt(contents); - mjonMsgVO.setReserveYn("N"); - // 시스템 문자발송 번호 - mjonMsgVO.setCallFrom("15518011"); // 문자 수신 번호 jsp에서 받아와야함! /* mjonMsgVO.setCallTo(callTo); */ @@ -2672,15 +3657,15 @@ public class EgovLoginController { // 사용자 유효성 검사 // id, hp, nm try { - UserManageVO userManageVO = new UserManageVO(); + - userManageVO.setEmplyrId(mjonMsgVO.getUserId()); - userManageVO.setEmplyrNm(mjonMsgVO.getSearchNm()); - userManageVO.setMoblphonNo(mjonMsgVO.getCallTo()); + List mberCertPhoneList = certPhoneService.selectMberCertPhoneList(mjonMsgVO.getUserId()); + + + + - List usedNmList = userManageService.selectUserIdAjax2(userManageVO); - - boolean TorF = usedNmList.size() > 0 ? true : false; + boolean TorF = mberCertPhoneList.size() > 0 ? true : false; if (!TorF) { @@ -2692,8 +3677,15 @@ public class EgovLoginController { return modelAndView; } - - + + UserManageVO userManageVO = new UserManageVO(); + + userManageVO.setEmplyrId(mjonMsgVO.getUserId()); + userManageVO.setEmplyrNm(mjonMsgVO.getSearchNm()); + userManageVO.setMoblphonNo(mjonMsgVO.getCallTo()); + + + List usedNmList = userManageService.selectUserIdAjax2(userManageVO); if(!usedNmList.get(0).getMberSttus().equals("Y")) { String mberSttus = usedNmList.get(0).getMberSttus(); @@ -2721,59 +3713,15 @@ public class EgovLoginController { } try { - - mjonMsgVO.setUserId("system"); - - String msgType = "4"; - - // 전송사 전송 배분 - MjonMsgVO pramVO = new MjonMsgVO(); - List sendRateList = mjonMsgService.selectTodayAgentSendCntList(pramVO); // 전송사 전송 배분률 및 현재 전송건수 - // 조회 - for (MjonMsgVO tmpVO : sendRateList) { - float cnt = Float.parseFloat(tmpVO.getMsgGroupCnt()); - float totCnt = tmpVO.getTotCnt(); - tmpVO.setSendRateInfo(Float.parseFloat(tmpVO.getSendRate()) - (cnt / totCnt * 100)); // 배분률 - 현재전송 비율 - } - - String sendAgent = sendRateList.get(0).getAgentCode(); - float maxRate = sendRateList.get(0).getSendRateInfo(); - for (MjonMsgVO tmpVO : sendRateList) { // 배분률 대비 현재전송 비율이 가장 적은거 찾기 - if (maxRate < tmpVO.getSendRateInfo()) { - maxRate = tmpVO.getSendRateInfo(); - sendAgent = tmpVO.getAgentCode(); - } - } - - mjonMsgVO.setMsgDiv("S"); // 단문 - // 문자타입별 대표전송사 정보 - MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); - mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO); - // 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술 - mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택 - // 전송금액 - mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 - mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 - - mjonMsgVO.setMsgType("4"); - - MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO); + + + + MjonMsgReturnVO returnVO = mjonMsgDataService.sendSysMsgData(mjonMsgVO); resultSts = returnVO.getSendMsgCnt(); resultBlockSts = returnVO.getSendMsgBlockCnt(); - // 시스템 발송 로그 - SendLogVO sendLogVO = new SendLogVO(); - // SendType 1:문자로 발송 2:이메일로 발송 - sendLogVO.setSendId(returnVO.getMsgGroupId()); - sendLogVO.setSendType("1"); - sendLogVO.setFrstSendInfo(mjonMsgVO.getCallFrom()); - sendLogVO.setReceive(mjonMsgVO.getCallTo()); - sendLogVO.setCheckNo(code); - sendLogVO.setContents(contents); - - mjonMsgDataService.insertSysMsgLog(sendLogVO); } catch (Exception e) { diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index f0ed2d97..dd47e3ed 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -16,9 +16,12 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -41,6 +44,10 @@ import itn.com.cmm.util.MJUtil; import itn.com.cmm.util.RedirectUrlMaker; import itn.com.cmm.util.StringUtil; import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.cert.ip.service.CertIpService; +import itn.let.cert.ip.service.CertLoginLogService; +import itn.let.cert.ip.service.MberCertIpVO; +import itn.let.cert.ip.service.MberCertLoginLogVO; import itn.let.fax.user.service.FaxGroupDataVO; import itn.let.fax.user.service.FaxService; import itn.let.kakao.user.sent.service.KakaoSentService; @@ -70,6 +77,7 @@ import itn.let.uss.umt.service.EgovMberManageService; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.MberManageVO; import itn.let.uss.umt.service.UserManageVO; +import itn.let.utl.sim.service.EgovClntInfo; import itn.let.utl.user.service.MjonNoticeSendUtil; /** @@ -164,6 +172,14 @@ public class EgovMypageController { /** 등급제 관리 서비스 */ @Resource(name = "mberGrdService") MberGrdService mberGrdService; + +// /* CertLoginLogService */ + @Resource(name = "CertLoginLogService") + private CertLoginLogService certLoginLogService; + +// /* CertLoginLogService */ + @Resource(name = "CertIpService") + private CertIpService certIpService; /** * 마이페이지 비밀번호 변경 탭 @@ -171,6 +187,7 @@ public class EgovMypageController { @RequestMapping(value="/web/user/mberInfoIndex.do") public String mberInfoIndex( ModelMap model + , HttpServletRequest request , RedirectAttributes redirectAttributes) throws Exception { //로그인 권한정보 불러오기 @@ -448,6 +465,8 @@ public class EgovMypageController { } + + return "web/user/mberInfoIndex"; } @@ -2920,6 +2939,122 @@ public class EgovMypageController { return "web/user/mberSecession"; } + /** + * 회원탈퇴 본인인증 화면 + */ + @RequestMapping(value="/web/user/mberSecureLogin.do") + public String secureLogin(@ModelAttribute("mberCertLoginLogVO") MberCertLoginLogVO mberCertLoginLogVO + , ModelMap model, HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + if(loginVO == null) { + return "redirect:/web/user/login/login.do"; + } + + + try { + System.out.println("test Try +++ "); + + // secuLoginFlag 값을 Model에 추가 + if(mberCertLoginLogVO == null) { + model.addAttribute("secuLoginFlag", ""); + }else { + model.addAttribute("secuLoginFlag", mberCertLoginLogVO.getSecuLoginFlag()); + } + + } catch (Exception e) { + e.printStackTrace(); + // TODO: handle exception + } + + //로그인 권한정보 불러오기 + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(mberCertLoginLogVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(mberCertLoginLogVO.getPageUnit()); + paginationInfo.setPageSize(mberCertLoginLogVO.getPageSize()); + + mberCertLoginLogVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + mberCertLoginLogVO.setLastIndex(paginationInfo.getLastRecordIndex()); + mberCertLoginLogVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + if("".equals(mberCertLoginLogVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + mberCertLoginLogVO.setSearchSortCnd("LOGIN_DT"); + mberCertLoginLogVO.setSearchSortOrd("desc"); + } + + + mberCertLoginLogVO.setLoginId(userId); + //전체 발송 리스트 불러오기 + List resultList = certLoginLogService.findAllCertLoginLogVO(mberCertLoginLogVO); + model.addAttribute("resultList", resultList); + model.addAttribute("resultListCnt", resultList.size()); + + + paginationInfo.setTotalRecordCount( resultList.size()> 0 ? resultList.get(0).getTotCnt() : 0); + model.addAttribute("paginationInfo", paginationInfo); + + + + + // 접속 IP + String cennectIP = EgovClntInfo.getClntIP(request); + model.addAttribute("cennectIP", cennectIP); + + // 접속 IP가 등록되어있는지 확인 + MberCertIpVO mberCertIpVO = new MberCertIpVO(); + mberCertIpVO.setCertIp(cennectIP); + mberCertIpVO.setMberId(userId); + model.addAttribute("chkcertRegIP", certIpService.checkRegCertIp(mberCertIpVO)); + + + + + + { + /** + * 보안인증 본인인증 기능추가 + * 20241120 원영현 과장 추가 + * */ + KmcCertChecker kmcCertCheck = new KmcCertChecker(); + + //kmc 본인인증 실/개발 서버 구분 + String serverNm = ""; + if(request.getServerName().contains("192.168.0.60") || request.getServerName().contains("localhost")) { + serverNm = request.getScheme() + "://192.168.0.60:8085"; + }else{ + serverNm = request.getScheme() + "://www.munjaon.co.kr"; + } + + System.out.println("@@@ serverNm : " + serverNm); + AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId()); + model.addAttribute("certVO", certVO); + } + + MberManageVO mberManageVO = new MberManageVO(); + mberManageVO.setMberId(loginVO.getId()); + + model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO)); + + // 탭 하이라이트 + model.addAttribute("pageTab", "mberSecureLogin"); + + + //디비 테이블에 저장하기ㅣ + AuthCertVO authCertVO = new AuthCertVO(); + authCertVO.setMberId(userId); + authCertVO.setCertType("secureLoginOFF"); + String certLogRegDate = mberManageService.findTopByregDateFromCertLog(authCertVO); + + + // 탭 하이라이트 + model.addAttribute("certLogRegDate", certLogRegDate); + + return "web/user/mberSecureLogin"; + } + /** * 회원탈퇴 상세정보 화면 */ @@ -3494,4 +3629,287 @@ public class EgovMypageController { } return modelAndView; } + + + /** + * 회원정보 조회 휴대폰 인증 + */ + @RequestMapping("/web/user/selectSecurityAuthn.do") + public String selectSecurityAuthn( + HttpServletRequest request, ModelMap model + , @RequestParam Map commandMap + , @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception { + + //개인회원일 시 mblDn 비교 후 본인 명의 휴대폰만 변경 가능하게끔 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String mblDn = userManageService.selectUserMblDnById(loginVO.getId()); + model.addAttribute("loginVO", loginVO); + + String errMessage = ""; //에러메세지 + + String rec_cert = ""; // 결과값(암호화) + String certNum = ""; // certNum + + rec_cert = request.getParameter("rec_cert").trim(); + certNum = request.getParameter("certNum").trim(); + + kmcVO.setRecCert(rec_cert); + kmcVO.setCertNum(certNum); + // 파라미터 유효성 검증 + if( rec_cert.length() == 0 || certNum.length() == 0 ){ + errMessage = "비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + + // 변수선언 -------------------------------------------------------------------------------------------------------- + String k_certNum = ""; // 파라미터로 수신한 요청번호 + k_certNum = certNum; + String date = ""; // 요청일시 + String CI = ""; // 연계정보(CI) + String DI = ""; // 중복가입확인정보(DI) + String phoneNo = ""; // 휴대폰번호 + String phoneCorp = ""; // 이동통신사 + String birthDay = ""; // 생년월일 + String gender = ""; // 성별 + String nation = ""; // 내국인 + String name = ""; // 성명 + String M_name = ""; // 미성년자 성명 + String M_birthDay = ""; // 미성년자 생년월일 + String M_Gender = ""; // 미성년자 성별 + String M_nation = ""; // 미성년자 내외국인 + String result = ""; // 결과값 + + String certMet = ""; // 인증방법 + String ip = ""; // ip주소 + String plusInfo = ""; + + String encPara = ""; + String encMsg1 = ""; + String encMsg2 = ""; + String msgChk = ""; + + com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); + + //02. 1차 복호화 + //수신된 certNum를 이용하여 복호화 + rec_cert = seed.getDec(rec_cert, k_certNum); + + //03. 1차 파싱 + int inf1 = rec_cert.indexOf("/",0); + int inf2 = rec_cert.indexOf("/",inf1+1); + + encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터 + encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값 + + //04. 위변조 검증 + encMsg2 = seed.getMsg(encPara); + kmcVO.setEncMsg2(encMsg2); + if(encMsg2.equals(encMsg1)){ + msgChk="Y"; + } + + if(!"Y".equals(msgChk)) { + errMessage = "비정상접근입니다."; + return returnPage(model , errMessage , kmcVO) ; + } + + //05. 2차 복호화 + rec_cert = seed.getDec(encPara, k_certNum); + kmcVO.setRecCert(rec_cert); + //06. 2차 파싱 + int info1 = rec_cert.indexOf("/",0); + int info2 = rec_cert.indexOf("/",info1+1); + int info3 = rec_cert.indexOf("/",info2+1); + int info4 = rec_cert.indexOf("/",info3+1); + int info5 = rec_cert.indexOf("/",info4+1); + int info6 = rec_cert.indexOf("/",info5+1); + int info7 = rec_cert.indexOf("/",info6+1); + int info8 = rec_cert.indexOf("/",info7+1); + int info9 = rec_cert.indexOf("/",info8+1); + int info10 = rec_cert.indexOf("/",info9+1); + int info11 = rec_cert.indexOf("/",info10+1); + int info12 = rec_cert.indexOf("/",info11+1); + int info13 = rec_cert.indexOf("/",info12+1); + int info14 = rec_cert.indexOf("/",info13+1); + int info15 = rec_cert.indexOf("/",info14+1); + int info16 = rec_cert.indexOf("/",info15+1); + int info17 = rec_cert.indexOf("/",info16+1); + int info18 = rec_cert.indexOf("/",info17+1); + + certNum = rec_cert.substring(0,info1); kmcVO.setCertNum(certNum); + date = rec_cert.substring(info1+1,info2); kmcVO.setDate(date); + CI = rec_cert.substring(info2+1,info3); kmcVO.setCI(CI); + phoneNo = rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo); + phoneCorp = rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp); + birthDay = rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay); + gender = rec_cert.substring(info6+1,info7); kmcVO.setGender(gender); + nation = rec_cert.substring(info7+1,info8); kmcVO.setNation(nation); + name = rec_cert.substring(info8+1,info9); kmcVO.setName(name); + result = rec_cert.substring(info9+1,info10); kmcVO.setResult(result); + certMet = rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet); + ip = rec_cert.substring(info11+1,info12); kmcVO.setIp(ip); + M_name = rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name); + M_birthDay = rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay); + M_Gender = rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender); + M_nation = rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation); + plusInfo = rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo); + DI = rec_cert.substring(info17+1,info18); kmcVO.setDI(DI); + + //07. CI, DI 복호화 + CI = seed.getDec(CI, k_certNum); kmcVO.setCI(CI); + DI = seed.getDec(DI, k_certNum); kmcVO.setDI(DI); + + if("Y".equals(result)) { + + } + + //-------------------------------------------------------------- + String regex = ""; + if( certNum.length() == 0 || certNum.length() > 40){ + errMessage = "요청번호 비정상."; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[0-9]*"; + if( date.length() != 14 || !paramChk(regex, date) ){ + errMessage = "요청일시"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[A-Z]*"; + if( certMet.length() != 1 || !paramChk(regex, certMet) ){ + errMessage = "본인인증방법 비정상" + certMet; + return returnPage(model , errMessage , kmcVO) ; + } + + + regex = "[0-9]*"; + if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){ + errMessage = "휴대폰번호 비정상" ; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[A-Z]*"; + if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){ + errMessage = "이동통신사 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[0-9]*"; + if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){ + errMessage = "생년월일 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[0-9]*"; + if( gender.length() != 1 || !paramChk(regex, gender) ){ + errMessage = "성별 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[0-9]*"; + if( nation.length() != 1 || !paramChk(regex, nation) ){ + errMessage = "내/외국인 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[\\sA-Za-z가-�R.,-]*"; + if( name.length() > 60 || !paramChk(regex, name) ){ + errMessage = "성명 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[A-Z]*"; + if( result.length() != 1 || !paramChk(regex, result) ){ + errMessage = "결과값 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[\\sA-Za-z가-?.,-]*"; + if( M_name.length() != 0 ){ + if( M_name.length() > 60 || !paramChk(regex, M_name) ){ + errMessage = "미성년자 성명 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + } + + regex = "[0-9]*"; + if( M_birthDay.length() != 0 ){ + if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){ + errMessage = "미성년자 생년월일 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + } + + regex = "[0-9]*"; + if( M_Gender.length() != 0 ){ + if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){ + errMessage = "미성년자 성별 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + } + + regex = "[0-9]*"; + if( M_nation.length() != 0 ){ + if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){ + errMessage = "미성년자 내/외국인 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + } + + + //KMC 본인인증 로그 + AuthCertVO certVO = new AuthCertVO(); + certVO.setMberId(kmcVO.getPlusInfo()); + certVO.setCertNum(kmcVO.getCertNum()); + certVO.setCertDate(kmcVO.getDate()); + certVO.setCertDi(kmcVO.getDI()); + certVO.setCertPhone(kmcVO.getPhoneNo()); + certVO.setCertNation(kmcVO.getNation()); + certVO.setCertName(kmcVO.getName()); + certVO.setCertResult(kmcVO.getResult()); + certVO.setCertType("secureLoginOFF"); + certVO.setCertIpaddr(kmcVO.getIp()); + certVO.setBirthDay(kmcVO.getBirthDay()); + certVO.setSexdstnCode(kmcVO.getGender()); + + + //디비 테이블에 저장하기 + mberManageService.insertCertInfoLog(certVO); + + + + + return "web/user/securityAuthnPage"; + } + + @RequestMapping(value="/web/user/mberSecureLoginAjax.do") + public ResponseEntity mberSecureLoginAjax(MberManageVO mberManageVO, @RequestBody Map params){ + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if("Y".equals(params.get("secuLoginFlag"))) { + mberManageVO.setSecuLoginFlag("N"); + }else { + mberManageVO.setSecuLoginFlag("Y"); + } + mberManageVO.setMberId(userId); + mberManageVO.setLastUpdusrId(userId); + + try { + mberManageService.updateSecureLoginFlag(mberManageVO); + + return new ResponseEntity<>("success", HttpStatus.OK); + } catch (Exception e) { + System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!"); + System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!"); + System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!"); + System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!"); + System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!"); + + return new ResponseEntity<>("fail", HttpStatus.OK); + } + } + } diff --git a/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java b/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java index a70402b9..3fe6f758 100644 --- a/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java +++ b/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java @@ -586,4 +586,79 @@ public class KmcCertChecker { return certVO; } + + + + // 마이페이지 보안인증 + public AuthCertVO authCertCheckNine(String trUrl, String id) { + + AuthCertVO certVO = new AuthCertVO(); + + //kmc step 01 데이터 + //날짜 생성 + Calendar today = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String day = sdf.format(today.getTime()); + + Random ran = new Random(); + //랜덤 문자 길이 + int numLength = 6; + String randomStr = ""; + + for (int i = 0; i < numLength; i++) { + //0 ~ 9 랜덤 숫자 생성 + randomStr += ran.nextInt(10); + } + + //reqNum은 최대 40byte 까지 사용 가능 + String reqNum = day + randomStr; //요청번호 + + String tr_cert = ""; + String cpId = "MJOM1001"; // 회원사ID + String urlCode = "001014"; // URL코드 + //kmc 본인인증 실/개발 서버 구분 + + System.out.println("@@@@@ trUrl : " + trUrl); + if(trUrl.contains("192.168.0.60") || trUrl.contains("localhost")) { + urlCode = "010001"; + } + String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) + String date = day; // 요청일시 + String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 + String name = ""; // 성명 + String phoneNo = ""; // 휴대폰번호 + String phoneCorp = ""; // 이동통신사 + if(phoneCorp == null) phoneCorp = ""; + String birthDay = ""; // 생년월일 + String gender = ""; // 성별 + if(gender == null) gender = ""; + String nation = ""; // 내외국인 구분 - 0:내국인, 1:외국인 + String plusInfo = id; // 추가DATA정보 + String extendVar = "0000000000000000"; // 확장변수 + //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- + + String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL + String tr_add = "N"; // IFrame사용여부 + + //01. 한국모바일인증(주) 암호화 모듈 선언 + IcertSecuManager seed = new IcertSecuManager(); + + //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) + String enc_tr_cert = ""; + tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; + enc_tr_cert = seed.getEnc(tr_cert, ""); + + //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) + String hmacMsg = ""; + hmacMsg = seed.getMsg(enc_tr_cert); + + //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) + tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); + + certVO.setTr_cert(tr_cert); + certVO.setTr_url(tr_url); + certVO.setTr_add(tr_add); + + return certVO; + } } diff --git a/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java b/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java index e03cbeff..1bc0877c 100644 --- a/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java +++ b/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java @@ -2,6 +2,7 @@ package itn.let.uss.umt.service; import java.util.List; +import itn.let.mjo.cert.service.CertVO; import itn.let.mjo.msgsent.service.MjonMsgSentVO; import itn.let.mjo.pay.service.KmcVO; import itn.let.uat.uia.service.AuthCertVO; @@ -243,4 +244,11 @@ public interface EgovMberManageService { //기업회원 기업정보 변경신청 취소 처리 public int updateCmpUserInfoCancel(MberManageVO mberManageVO) throws Exception; + + public String getSecuLoginFlag(String id); + + public void updateSecureLoginFlag(MberManageVO mberManageVO) throws Exception; + + public String findTopByregDateFromCertLog(AuthCertVO authCertVO); + } \ No newline at end of file diff --git a/src/main/java/itn/let/uss/umt/service/MberManageVO.java b/src/main/java/itn/let/uss/umt/service/MberManageVO.java index d7d5ee45..c0364852 100644 --- a/src/main/java/itn/let/uss/umt/service/MberManageVO.java +++ b/src/main/java/itn/let/uss/umt/service/MberManageVO.java @@ -504,6 +504,12 @@ public class MberManageVO extends UserDefaultVO{ private String dormantDate; private String spamYn; + + /** + * 보안로그인 여부 + */ + private String secuLoginFlag; + public String getSpamYn() { return spamYn; } @@ -1784,5 +1790,12 @@ public class MberManageVO extends UserDefaultVO{ public void setHotlineAgentCode(String hotlineAgentCode) { this.hotlineAgentCode = hotlineAgentCode; } + public String getSecuLoginFlag() { + return secuLoginFlag; + } + public void setSecuLoginFlag(String secuLoginFlag) { + this.secuLoginFlag = secuLoginFlag; + } + } \ No newline at end of file diff --git a/src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java b/src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java index f1fc1a3f..80a12611 100644 --- a/src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java +++ b/src/main/java/itn/let/uss/umt/service/impl/EgovUserManageServiceImpl.java @@ -43,12 +43,13 @@ import itn.let.utl.user.service.MjonNoticeSendUtil; /** * 사용자관리에 관한 비지니스 클래스를 정의한다. + * * @author 공통서비스 개발팀 조재영 * @since 2009.04.10 * @version 1.0 * @see * - *
+ *      
  * << 개정이력(Modification Information) >>
  *
  *   수정일      수정자           수정내용
@@ -56,74 +57,75 @@ import itn.let.utl.user.service.MjonNoticeSendUtil;
  *   2009.04.10  조재영          최초 생성
  *   2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
  *
- * 
+ *
*/ @Service("userManageService") public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implements EgovUserManageService { /** userManageDAO */ - @Resource(name="userManageDAO") + @Resource(name = "userManageDAO") private UserManageDAO userManageDAO; @Resource(name = "egovAuthorGroupService") private EgovAuthorGroupService egovAuthorGroupService; - + /** mberManageDAO */ - @Resource(name="mberManageDAO") + @Resource(name = "mberManageDAO") private MberManageDAO mberManageDAO; @Resource(name = "faxDAO") public FaxDAO faxDao; - + /** entrprsManageDAO */ - //EBT-CUSTOMIZING//@Resource(name="entrprsManageDAO") - //EBT-CUSTOMIZING//private EntrprsManageDAO entrprsManageDAO; + // EBT-CUSTOMIZING//@Resource(name="entrprsManageDAO") + // EBT-CUSTOMIZING//private EntrprsManageDAO entrprsManageDAO; /** egovUsrCnfrmIdGnrService */ - @Resource(name="egovUsrCnfrmIdGnrService") + @Resource(name = "egovUsrCnfrmIdGnrService") private EgovIdGnrService idgenService; - - @Resource(name="siteManagerDAO") + + @Resource(name = "siteManagerDAO") SiteManagerDAO siteManagerDAO; - + @Resource(name = "MjonMsgDataService") - private MjonMsgDataService mjonMsgDataService; + private MjonMsgDataService mjonMsgDataService; @Resource(name = "egovMjonCashIdGnrService") - private EgovIdGnrService idgenMjonCashId; - - @Resource(name = "egovMjonPointIdGnrService") - private EgovIdGnrService idgenMjonPointId; + private EgovIdGnrService idgenMjonCashId; - @Resource(name="mjonPayDAO") + @Resource(name = "egovMjonPointIdGnrService") + private EgovIdGnrService idgenMjonPointId; + + @Resource(name = "mjonPayDAO") private MjonPayDAO mjonPayDAO; - + @Resource(name = "egovPgMoidGnrService") private EgovIdGnrService idgenPgMoid; - - @Resource(name="taxDAO") - private TaxDAO taxDAO; - + + @Resource(name = "taxDAO") + private TaxDAO taxDAO; + /** 알림전송 Util */ @Resource(name = "mjonNoticeSendUtil") private MjonNoticeSendUtil mjonNoticeSendUtil; - - @Resource(name="MjonCommon") + + @Resource(name = "MjonCommon") private MjonCommon mjonCommon; - - /** 사이트 설정 */ + + /** 사이트 설정 */ @Resource(name = "egovSiteManagerService") - EgovSiteManagerService egovSiteManagerService; - + EgovSiteManagerService egovSiteManagerService; + /** mberManageService */ @Resource(name = "mberManageService") private EgovMberManageService mberManageService; @Resource(name = "mjonMsgAgentStsService") - private MjonMsgAgentStsService mjonMsgAgentStsService; - + private MjonMsgAgentStsService mjonMsgAgentStsService; + /** * 입력한 사용자아이디의 중복여부를 체크하여 사용가능여부를 확인 + * * @param checkId 중복여부 확인대상 아이디 * @return 사용가능여부(아이디 사용회수 int) * @throws Exception @@ -135,38 +137,40 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement /** * 화면에 조회된 사용자의 정보를 데이터베이스에서 삭제 + * * @param checkedIdForDel 삭제대상 업무사용자아이디 * @throws Exception */ @Override - public void deleteUser(String checkedIdForDel) throws Exception{ + public void deleteUser(String checkedIdForDel) throws Exception { AuthorGroup authorGroup = new AuthorGroup(); - String [] delId = checkedIdForDel.split(","); - for (int i=0; i 업무사용자 목록정보 * @throws Exception @@ -236,6 +241,7 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement /** * 기 등록된 특정 사용자목록의 전체수를 확인 + * * @param userSearchVO 검색조건 * @return 총사용자갯수(int) * @throws Exception @@ -247,12 +253,13 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement /** * 화면에 조회된 사용자의 기본정보를 수정하여 항목의 정합성을 체크하고 수정된 데이터를 데이터베이스에 반영 + * * @param userManageVO 업무사용자 수정정보 * @throws Exception */ @Override public void updateUser(UserManageVO userManageVO) throws Exception { - //패스워드 암호화 + // 패스워드 암호화 String pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId()); userManageVO.setPassword(pass); @@ -261,6 +268,7 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement /** * 사용자정보 수정시 히스토리 정보를 추가 + * * @param userManageVO 업무사용자 수정정보 * @return result 등록결과 * @throws Exception @@ -272,6 +280,7 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement /** * 업무사용자 암호 수정 + * * @param userManageVO 업무사용자 수정정보(비밀번호) * @throws Exception */ @@ -282,34 +291,35 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement /** * 사용자가 비밀번호를 기억하지 못할 때 비밀번호를 찾을 수 있도록 함 + * * @param passVO 업무사용자 암호 조회조건정보 * @return userManageVO 업무사용자 암호정보 * @throws Exception */ @Override - public UserManageVO selectPassword(UserManageVO passVO) throws Exception{ + public UserManageVO selectPassword(UserManageVO passVO) throws Exception { UserManageVO userManageVO = userManageDAO.selectPassword(passVO); return userManageVO; } - + @Override public List selectUserIdAjax(UserManageVO userManageVO) throws Exception { List userNmList = userManageDAO.selectUserIdAjax(userManageVO); return userNmList; } - + @Override public List selectUserIdAjax2(UserManageVO userManageVO) throws Exception { List userNmList = userManageDAO.selectUserIdAjax2(userManageVO); return userNmList; } - + @Override public int selectAdminIdAjax(UserManageVO userManageVO) throws Exception { return userManageDAO.selectAdminIdAjax(userManageVO); - + } - + @Override public int selectUserPWAjax(UserManageVO userManageVO) throws Exception { int userCount = userManageDAO.selectUserPWAjax(userManageVO); @@ -318,21 +328,18 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement @Override public void updateUserPWAjax(UserManageVO userManageVO) throws Exception { - //패스워드 암호화 + // 패스워드 암호화 String pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId()); userManageVO.setPassword(pass); userManageDAO.updateUserPWAjax(userManageVO); - + // 페스워드 히스토리 등록 MberManageVO mberManageVO = new MberManageVO(); mberManageVO.setMberId(userManageVO.getEmplyrId()); mberManageVO.setPassword(pass); mberManageDAO.insertMberPWLog(mberManageVO); - + } - - - @Override public void updateUserSttusCode(UserManageVO userManageVO) throws Exception { @@ -353,13 +360,13 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement public UserManageVO selectRecentSearchWord(UserManageVO userManageVO) throws Exception { return userManageDAO.selectRecentSearchWord(userManageVO); } - + // 관리자 모바일환경 비번 저장여부 @Override public UserManageVO selectAdminMobilePwSaveCheck(UserManageVO userManageVO) throws Exception { return userManageDAO.selectAdminMobilePwSaveCheck(userManageVO); } - + @Override public void insertUpdateSearchWord(UserManageVO userManageVO) throws Exception { userManageDAO.insertUpdateSearchWord(userManageVO); @@ -367,7 +374,7 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement @Override public UserDefaultVO selectUserCount() throws Exception { - return userManageDAO.selectUserCount(); + return userManageDAO.selectUserCount(); } @Override @@ -384,29 +391,28 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement public UserManageVO selectUserPw2Ajax(UserManageVO userManageVO) throws Exception { return userManageDAO.selectUserPw2Ajax(userManageVO); } - + @Override - public UserManageVO selectAdminUserSmsCertCheck(UserManageVO userManageVO) throws Exception{ + public UserManageVO selectAdminUserSmsCertCheck(UserManageVO userManageVO) throws Exception { return userManageDAO.selectAdminUserSmsCertCheck(userManageVO); } - + @Override public UserManageVO selectAddrRequestMsgAjax(UserManageVO userManageVO) throws Exception { return userManageDAO.selectAddrRequestMsgAjax(userManageVO); } - + @Override - //관리자가 사용자의 비밀번호를 변경해주는 서비스 - public UserManageVO selectUserPwByAdminAjax(UserManageVO userManageVO) throws Exception{ + // 관리자가 사용자의 비밀번호를 변경해주는 서비스 + public UserManageVO selectUserPwByAdminAjax(UserManageVO userManageVO) throws Exception { return userManageDAO.selectUserPwByAdminAjax(userManageVO); } - + @Override public MberManageVO selectUserInfo(MberManageVO mberManageVO) throws Exception { return userManageDAO.selectUserInfo(mberManageVO); } - @Override public void updateUserInfo(MberManageVO mberManageVO) throws Exception { userManageDAO.updateUserInfo(mberManageVO); @@ -416,7 +422,7 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement public void updateSandResul(MberManageVO mberManageVO) throws Exception { userManageDAO.updateSandResul(mberManageVO); } - + @Override public void updateNoticet(MberManageVO mberManageVO) throws Exception { userManageDAO.updateNoticet(mberManageVO); @@ -426,119 +432,118 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement public void updateDeleteInfo(MberManageVO mberManageVO) throws Exception { userManageDAO.updateDeleteInfo(mberManageVO); } - - //발신번호 관리 본인인증 DI 값 받아오기 + + // 발신번호 관리 본인인증 DI 값 받아오기 @Override - public String selectUserMblDnById(String mberId) throws Exception{ + public String selectUserMblDnById(String mberId) throws Exception { return userManageDAO.selectUserMblDnById(mberId); } - - //발신번호 관리 본인인증 DI 값 받아오기 + + // 발신번호 관리 본인인증 DI 값 받아오기 @Override - public void updateCrtfcDnValue(UserManageVO userManageVO) throws Exception{ + public void updateCrtfcDnValue(UserManageVO userManageVO) throws Exception { userManageDAO.updateCrtfcDnValue(userManageVO); } // 다음 결제시 결제수단 SELECT @Override - public String selectNextPayMethod(String mberId) throws Exception{ + public String selectNextPayMethod(String mberId) throws Exception { return userManageDAO.selectNextPayMethod(mberId); } // 다음 결제시 결제수단 UPDATE @Override - public void updateNextPayMethod(UserManageVO userManageVO) throws Exception{ + public void updateNextPayMethod(UserManageVO userManageVO) throws Exception { userManageDAO.updateNextPayMethod(userManageVO); } - + @Override public int selectAdminDiChk(UserManageVO userManageVO) { return userManageDAO.selectAdminDiChk(userManageVO); } - + @Override - public boolean selectUserStatusInfo(String userId) throws Exception{ - - String mberSttus = userManageDAO.selectUserStatusInfo(userId); - + public boolean selectUserStatusInfo(String userId) throws Exception { + + String mberSttus = userManageDAO.selectUserStatusInfo(userId); + boolean status = true; - if(mberSttus.equals("B")) { + if (mberSttus.equals("B")) { status = false; } - + return status; } - + @Override public String selectUserStatusInfoCheck(String userId) throws Exception { - String mberSttus = userManageDAO.selectUserStatusInfo(userId); + String mberSttus = userManageDAO.selectUserStatusInfo(userId); return mberSttus; } - + // 결제 여부 @Override public int selectPayCountByUser(UserManageVO userManageVO) { return userManageDAO.selectPayCountByUser(userManageVO); } - + // 후불결제여부 @Override - public int selectUserAfterPayInfo(String userId) throws Exception{ + public int selectUserAfterPayInfo(String userId) throws Exception { return userManageDAO.selectUserAfterPayInfo(userId); - } - + } + @Override public UserManageVO selectAdminSmsNoticeYn(UserManageVO userManageVO) { return userManageDAO.selectAdminSmsNoticeYn(userManageVO); } - public void updateUserAdminSmsNoticeYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception { - if(!"".equals(checkedIdForUpt)) { - String [] uptId = checkedIdForUpt.split(","); - for (int i=0; i 슬랙, 문자 알림 No // B선 회원이 아닌경우 전송사 JJ로 변경 로직 포함 public void updateOneUserSmishingYnNotAlert(UserManageVO userManageVO) throws Exception { // 업데이트 userManageDAO.updateUserSmishingYn(userManageVO); - + /* - // B선 전송사 이용고객 => 전송사 JJ로 변경안함 - MberManageVO mberManageVO = new MberManageVO(); - mberManageVO.setMberId(userManageVO.getMberId()); - String blineCode = mberManageService.selectBlineCodeByMberId(mberManageVO); - if (blineCode != null && blineCode.equals("N")) { - // 전송사 JJ로 변경 - mberManageVO.setHotlineAgentName("첫결제 JJ"); - mberManageVO.setHotlineAgentCode("05"); - mberManageVO.setAdmUserId("admin"); - mjonMsgAgentStsService.updateMberHotlineAgentCodeInfo(mberManageVO); - } - */ - } - + * // B선 전송사 이용고객 => 전송사 JJ로 변경안함 MberManageVO mberManageVO = new + * MberManageVO(); mberManageVO.setMberId(userManageVO.getMberId()); String + * blineCode = mberManageService.selectBlineCodeByMberId(mberManageVO); if + * (blineCode != null && blineCode.equals("N")) { // 전송사 JJ로 변경 + * mberManageVO.setHotlineAgentName("첫결제 JJ"); + * mberManageVO.setHotlineAgentCode("05"); mberManageVO.setAdmUserId("admin"); + * mjonMsgAgentStsService.updateMberHotlineAgentCodeInfo(mberManageVO); } + */ + } + // 알림톡 스미싱의심 온/오프 public void updateUserAtSmishingYn(UserManageVO userManageVO, String checkedIdForUpt) throws Exception { - if(!"".equals(checkedIdForUpt)) { - String [] uptIdAll = checkedIdForUpt.split(","); + if (!"".equals(checkedIdForUpt)) { + String[] uptIdAll = checkedIdForUpt.split(","); String[] uptId = Arrays.stream(uptIdAll).distinct().toArray(String[]::new); - for (int i=0; i selectUserPrePaymentYnList(UserManageVO userManageVO) throws Exception { return userManageDAO.selectUserPrePaymentYnList(userManageVO); } - + // 후불제 회원 월 충전 한도금액 만큼 Cash, Point 충전하기 public void updateUserCashByAutoCash() throws Exception { List userPrePaymentYnList = userManageDAO.selectUserPrePaymentYnList(new UserManageVO()); - for (UserManageVO umVO: userPrePaymentYnList) { + for (UserManageVO umVO : userPrePaymentYnList) { if (umVO.getPaymentCash() > 0) { - - //이번달에 입력된 후불 결제요청 데이터가 있는지 확인 - 혹시나 중복 입력을 방지하기 위함 + + // 이번달에 입력된 후불 결제요청 데이터가 있는지 확인 - 혹시나 중복 입력을 방지하기 위함 int paymentCnt = userManageDAO.selectUserPrePaymentPGdataCount(umVO.getMberId()); - - if(paymentCnt > 0) continue; - - //회원 정보 조회 - MberManageVO mberManageVO = mberManageDAO.selectMber(umVO.getMberId()); //멤버ID에서 유니크ID로 수정 필요 + + if (paymentCnt > 0) + continue; + + // 회원 정보 조회 + MberManageVO mberManageVO = mberManageDAO.selectMber(umVO.getMberId()); // 멤버ID에서 유니크ID로 수정 필요 // CASH 값 넣기 MjonPayVO mjonPayVO = this.setAdvCashVO(umVO); - - //CASH 테이블 - mjonPayDAO.insertCash(mjonPayVO); - - //회원정보 CASH 업데이트 + + // CASH 테이블 + mjonPayDAO.insertCash(mjonPayVO); + + // 회원정보 CASH 업데이트 mjonPayDAO.updateMemberCash(mjonPayVO); /* - * JSPark 2023.01.10 => 포인트는 선충전하지 않음 - // point 값 넣기 - mjonPayVO = this.setAdvPointVO(umVO); - - //POINT 테이블 - mjonPayDAO.insertPoint(mjonPayVO); - - //회원정보 POINT 업데이트 - mjonPayDAO.updateMemberPoint(mjonPayVO); - */ - - //지난 달 사용금액 조회 + * JSPark 2023.01.10 => 포인트는 선충전하지 않음 // point 값 넣기 mjonPayVO = + * this.setAdvPointVO(umVO); + * + * //POINT 테이블 mjonPayDAO.insertPoint(mjonPayVO); + * + * //회원정보 POINT 업데이트 mjonPayDAO.updateMemberPoint(mjonPayVO); + */ + + // 지난 달 사용금액 조회 MjonPayVO payVO = mjonPayDAO.selectPrvMonthUseCash(umVO.getMberId()); - + mjonPayVO.setMoid(idgenPgMoid.getNextStringId()); mjonPayVO.setPgCode("INNOPAY"); mjonPayVO.setPgStatus("0"); - mjonPayVO.setCash(Float.parseFloat(payVO.getCashSum())); //실제충전금액(부가세제외) - - mjonPayVO.setPhone(mberManageVO.getMoblphonNo()); //휴대폰번호 - mjonPayVO.setUserName(mberManageVO.getMberNm()); //이름 - mjonPayVO.setBuyerName("결제전"); //추후 결제 시에 입금자명 수기입력 - - mjonPayVO.setTid(" "); //필수값이라 공백 처리 + mjonPayVO.setCash(Float.parseFloat(payVO.getCashSum())); // 실제충전금액(부가세제외) + + mjonPayVO.setPhone(mberManageVO.getMoblphonNo()); // 휴대폰번호 + mjonPayVO.setUserName(mberManageVO.getMberNm()); // 이름 + mjonPayVO.setBuyerName("결제전"); // 추후 결제 시에 입금자명 수기입력 + + mjonPayVO.setTid(" "); // 필수값이라 공백 처리 mjonPayVO.setResultCode("0000"); mjonPayVO.setResultMsg("후불결제 입금 전"); - + mjonPayVO.setPayMethod("AFTERPAY"); mjonPayVO.setGoodsName("후불결제"); - mjonPayVO.setAmt(payVO.getCashVatSum()); //결제액(부가세포함) + mjonPayVO.setAmt(payVO.getCashVatSum()); // 결제액(부가세포함) mjonPayVO.setUserId(umVO.getMberId()); - + Calendar cal = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); - cal.add(cal.MONTH, - 1); //지난달 - - mjonPayVO.setCalcBaseM(format.format(cal.getTime())); //정산월 : 지난 달 - mjonPayVO.setAfterPayYn("Y"); //후불여부 + cal.add(cal.MONTH, -1); // 지난달 - //PG 테이블에 지난 사용량 누계 추가 + mjonPayVO.setCalcBaseM(format.format(cal.getTime())); // 정산월 : 지난 달 + mjonPayVO.setAfterPayYn("Y"); // 후불여부 + + // PG 테이블에 지난 사용량 누계 추가 mjonPayDAO.insertMjPg(mjonPayVO); - - //세금계산서 데이터 등록 + + // 세금계산서 데이터 등록 TaxVO taxVO = new TaxVO(); - if("B".equals(mberManageVO.getTaxbillAuto()) || "C".equals(mberManageVO.getTaxbillAuto())) { - - /*발행타입 1:소득공제 현금영수증 2:지출증빙 현금영수증 9:세금계산서*/ + if ("B".equals(mberManageVO.getTaxbillAuto()) || "C".equals(mberManageVO.getTaxbillAuto())) { + + /* 발행타입 1:소득공제 현금영수증 2:지출증빙 현금영수증 9:세금계산서 */ String rcptType; - String regNo=""; - - if("B".equals(mberManageVO.getTaxbillAuto())) { //세금계산서 기업 자동발행 + String regNo = ""; + + if ("B".equals(mberManageVO.getTaxbillAuto())) { // 세금계산서 기업 자동발행 rcptType = "9"; taxVO.setTaxTrgt("B"); - - regNo = mberManageVO.getTaxBizNo(); //사업자등록번호 - - taxVO.setCompanyName(mberManageVO.getTaxBzNm());//회사명 - taxVO.setRepName(mberManageVO.getTaxChrmNm());//대표자명 - taxVO.setAddr(mberManageVO.getTaxAddr());//세금계산서 주소 - - }else if("C".equals(mberManageVO.getTaxbillAuto())) { //세금계산서 개인 자동발행 + + regNo = mberManageVO.getTaxBizNo(); // 사업자등록번호 + + taxVO.setCompanyName(mberManageVO.getTaxBzNm());// 회사명 + taxVO.setRepName(mberManageVO.getTaxChrmNm());// 대표자명 + taxVO.setAddr(mberManageVO.getTaxAddr());// 세금계산서 주소 + + } else if ("C".equals(mberManageVO.getTaxbillAuto())) { // 세금계산서 개인 자동발행 rcptType = "9"; taxVO.setTaxTrgt("C"); /* - if(mberManageVO.getCandidateNo1() != null) { - String candiNo1 = mberManageVO.getCandidateNo1(); - String candiNo2 = mberManageVO.getCandidateNo2(); - - regNo = candiNo1 + candiNo2; //주민등록번호 - } - taxVO.setRepName(mberManageVO.getCandidateNm());//후보자 성명 - taxVO.setAddr(mberManageVO.getCandidateAddr());//후보자 주소 - */ + * if(mberManageVO.getCandidateNo1() != null) { String candiNo1 = + * mberManageVO.getCandidateNo1(); String candiNo2 = + * mberManageVO.getCandidateNo2(); + * + * regNo = candiNo1 + candiNo2; //주민등록번호 } + * taxVO.setRepName(mberManageVO.getCandidateNm());//후보자 성명 + * taxVO.setAddr(mberManageVO.getCandidateAddr());//후보자 주소 + */ regNo = mberManageVO.getTaxCIhidNum(); // 세금계산서 개인 주민등록번호 - taxVO.setRepName(mberManageVO.getTaxCNm()); //세금계산서 개인 성명 - taxVO.setAddr(mberManageVO.getTaxCAddr()); //세금계산서 개인 주소 - - } else { //현금영수증 자동발행 + taxVO.setRepName(mberManageVO.getTaxCNm()); // 세금계산서 개인 성명 + taxVO.setAddr(mberManageVO.getTaxCAddr()); // 세금계산서 개인 주소 + + } else { // 현금영수증 자동발행 rcptType = mberManageVO.getCashbillType(); } - taxVO.setMoid(mjonPayVO.getMoid()); //주문ID - taxVO.setRcptType(rcptType);//발행타입 - /*발행번호 개인세금계산서:주민등록번호 / 기업세금계산서:사업자번호 / 소득공제현금영수증:휴대폰번호 / 지출증빙현금영수증:사업자번호*/ + taxVO.setMoid(mjonPayVO.getMoid()); // 주문ID + taxVO.setRcptType(rcptType);// 발행타입 + /* 발행번호 개인세금계산서:주민등록번호 / 기업세금계산서:사업자번호 / 소득공제현금영수증:휴대폰번호 / 지출증빙현금영수증:사업자번호 */ taxVO.setRegNo(regNo); - taxVO.setEmail(mberManageVO.getTaxMngEmail());//담당자이메일 - taxVO.setPhone(mberManageVO.getTaxMngPhoneNum());//담당자 휴대폰번호 - taxVO.setConfirmYn("N"); //완료여부 + taxVO.setEmail(mberManageVO.getTaxMngEmail());// 담당자이메일 + taxVO.setPhone(mberManageVO.getTaxMngPhoneNum());// 담당자 휴대폰번호 + taxVO.setConfirmYn("N"); // 완료여부 taxVO.setFrstRegisterId(mberManageVO.getMberId()); - + taxDAO.insertCashBill(taxVO); // mjonPayDAO.insertMjTax(mjonPayVO); //PGTax 테이블 } - + } } - - } + + } /** * @param mjonPayVO * @return - * @throws Exception - * cash table 값 넣기 - * 2022.04.12 JSP => mjonPayVO.getMoid() => userId 사용 제거 (휴대폰결제에서만 사용) + * @throws Exception cash table 값 넣기 2022.04.12 JSP => mjonPayVO.getMoid() => + * userId 사용 제거 (휴대폰결제에서만 사용) */ - private MjonPayVO setAdvCashVO(UserManageVO userManageVO) throws Exception{ - - //캐쉬 테이블 변수 생성 + private MjonPayVO setAdvCashVO(UserManageVO userManageVO) throws Exception { + + // 캐쉬 테이블 변수 생성 MjonPayVO mjonPayVO = new MjonPayVO(); - mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()) ; - mjonPayVO.setCash((float)userManageVO.getNowChargeCash()); // 자동 충전금액 - 전월 남은 금액 - mjonPayVO.setOrderId("ADVPAY"); // 선지급 + mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()); + mjonPayVO.setCash((float) userManageVO.getNowChargeCash()); // 자동 충전금액 - 전월 남은 금액 + mjonPayVO.setOrderId("ADVPAY"); // 선지급 mjonPayVO.setUserId(userManageVO.getMberId()); mjonPayVO.setFrstRegisterId(userManageVO.getMberId()); - String memo = "후불제 회원 " + userManageVO.getNowChargeCash() + "원 충전" ; - mjonPayVO.setMemo(memo); //캐쉬메모 - + String memo = "후불제 회원 " + userManageVO.getNowChargeCash() + "원 충전"; + mjonPayVO.setMemo(memo); // 캐쉬메모 + return mjonPayVO; } @Override public Map selectFaxSendList(FaxGroupDataVO faxGroupDataVO) { - Map resultMap = new HashMap(); - - //기본 내림차순 정렬 - if(StringUtils.isEmpty(faxGroupDataVO.getSearchSortOrd())) { - - faxGroupDataVO.setSearchSortOrd("desc"); - faxGroupDataVO.setSearchSortCnd("doneDate"); - } if(StringUtils.isEmpty(faxGroupDataVO.getSearchStartDate()) && StringUtils.isEmpty(faxGroupDataVO.getSearchEndDate()) @@ -864,6 +853,19 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement faxGroupDataVO.setSearchEndDate(DateUtils.getTodayYearAndMonthAndLastDay()); } + // 기본 내림차순 정렬 + if (StringUtils.isEmpty(faxGroupDataVO.getSearchSortOrd())) { + + faxGroupDataVO.setSearchSortOrd("desc"); + faxGroupDataVO.setSearchSortCnd("doneDate"); + } + + if (StringUtils.isEmpty(faxGroupDataVO.getSearchStartDate()) + && StringUtils.isEmpty(faxGroupDataVO.getSearchEndDate())) { + faxGroupDataVO.setSearchStartDate(DateUtils.getTodayYearAndMonthAndFirstDay()); + faxGroupDataVO.setSearchEndDate(DateUtils.getTodayYearAndMonthAndLastDay()); + } + /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(faxGroupDataVO.getPageIndex()); @@ -877,19 +879,18 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement List faxGroupListVO = faxDao.selectFaxSendList(faxGroupDataVO); try { Map faxPriceMap = faxDao.selectSentAndErrorPrice(faxGroupDataVO); - resultMap.put("faxPriceMap", faxPriceMap); - + resultMap.put("faxPriceMap", faxPriceMap); + } catch (Exception e) { e.printStackTrace(); // TODO: handle exception } - + paginationInfo.setTotalRecordCount(faxGroupListVO.size() > 0 ? faxGroupListVO.get(0).getTotCnt() : 0); resultMap.put("faxGroupListVO", faxGroupListVO); resultMap.put("paginationInfo", paginationInfo); return resultMap; } - } \ No newline at end of file diff --git a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java index acfc7cbb..a9b0cf73 100644 --- a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java +++ b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java @@ -17,6 +17,7 @@ import java.security.PrivateKey; 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.HttpServletRequest; 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.Row; 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; @@ -75,6 +79,8 @@ import itn.com.cmm.util.MJUtil; 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; @@ -85,6 +91,7 @@ import itn.let.kakao.kakaoComm.KakaoVO; 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; @@ -275,6 +282,10 @@ public class EgovUserManageController { @Resource(name = "MjonReservMsgService") private MjonReservMsgService mjonReservMsgService; + + @Resource(name = "CertPhoneService") + private CertPhoneService certPhoneService; + @Autowired KakaoApiTemplate kakaoApiTemplate; @@ -1094,6 +1105,12 @@ public class EgovUserManageController { model.addAttribute("countNum", countNum); model.addAttribute("sendNumberList", sendNumberList); + + + + List mberCertPhoneList = certPhoneService.selectMberCertPhoneList(userId); + model.addAttribute("mberCertPhoneList", mberCertPhoneList); + //문자발송 단가 조회하기 //1.시스템 기본 단가 정보 조회하기 JoinSettingVO sysJoinSetVO = mjonMsgDataService.selectJoinSettingInfo(); @@ -1673,6 +1690,7 @@ public class EgovUserManageController { return modelAndView; } + /** * 회원정보 팝업 이벤트 정보 신규 추가 기능 * @param eventVO diff --git a/src/main/java/itn/web/MainController.java b/src/main/java/itn/web/MainController.java index 5c0106bc..38de9d90 100644 --- a/src/main/java/itn/web/MainController.java +++ b/src/main/java/itn/web/MainController.java @@ -1223,6 +1223,13 @@ public class MainController { model.addAttribute("userCandidateYn", userCandidateYn); + if(loginVO != null) { + MberManageVO mberManageVO = new MberManageVO(); + mberManageVO.setMberId(loginVO.getId()); + + model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO)); + } + return "web/com/webCommonHeader"; } diff --git a/src/main/resources/egovframework/egovProps/globals_local.properties b/src/main/resources/egovframework/egovProps/globals_local.properties index 67e26b5c..ed897f46 100644 --- a/src/main/resources/egovframework/egovProps/globals_local.properties +++ b/src/main/resources/egovframework/egovProps/globals_local.properties @@ -28,12 +28,15 @@ Globals.Env = local # mysql Globals.DriverClassName=com.mysql.jdbc.Driver -#Globals.Url=jdbc:mysql://192.168.0.125:3306/mjon Globals.Url=jdbc:mysql://119.193.215.98:3306/mjon Globals.UserName= mjonUr -#Globals.Url=jdbc:mysql://192.168.0.125:3306/mjon_20230221 -#Globals.UserName= mjonUr_20230221 Globals.Password= mjon!@#$ +#Globals.Url=jdbc:mysql://192.168.0.125:3306/mjon + +#Globals.DriverClassName=com.mysql.jdbc.Driver +#Globals.Url=jdbc:mysql://139.150.72.157:3306/mjon +#Globals.UserName= mjonUr +#Globals.Password= mjon!@#$ # mysql-prod #Globals.DriverClassName=com.mysql.jdbc.Driver diff --git a/src/main/resources/egovframework/egovProps/globals_prod.properties b/src/main/resources/egovframework/egovProps/globals_prod.properties index 6a7fbd2a..a8fe78dd 100644 --- a/src/main/resources/egovframework/egovProps/globals_prod.properties +++ b/src/main/resources/egovframework/egovProps/globals_prod.properties @@ -27,7 +27,6 @@ Globals.Env = prod # mysql Globals.DriverClassName=com.mysql.jdbc.Driver -#Globals.Url=jdbc:mysql://139.150.72.157:3306/mjon Globals.Url=jdbc:mysql://10.12.107.4:3306/mjon Globals.UserName= mjonUr Globals.Password= mjon!@#$ diff --git a/src/main/resources/egovframework/spring/com/context-idgen.xml b/src/main/resources/egovframework/spring/com/context-idgen.xml index d2d51b3a..29478fda 100644 --- a/src/main/resources/egovframework/spring/com/context-idgen.xml +++ b/src/main/resources/egovframework/spring/com/context-idgen.xml @@ -2874,5 +2874,24 @@ + + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml b/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml index 956c4139..b330f2b6 100644 --- a/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml +++ b/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml @@ -127,21 +127,21 @@ - + - - + + - + - + @@ -157,7 +157,7 @@ - + diff --git a/src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml b/src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml new file mode 100644 index 00000000..98a25d13 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml new file mode 100644 index 00000000..de43d98c --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + /*MberCertIpVO.insertCertIp*/ + + INSERT INTO LETTNGNRLMBER_CERT_IP + ( + MBER_ID + , CERT_IP + , CERT_MEMO + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + ) + VALUES + ( + #mberId# + , #certIp# + , #certMemo# + , now() + , #frstRegisterId# + ) + + + + + /*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# + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml new file mode 100644 index 00000000..0936fa8b --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + INSERT INTO LETTNGNRLMBER_CERT_LOGIN_LOG_IP + ( + CERT_LOGIN_ID, + LOGIN_ID, + LOGIN_IP, + LOGIN_DEVICE, + LOGIN_DT + ) + VALUES + ( + #certLoginId#, + #loginId#, + #loginIp#, + #loginDevice#, + NOW() + ) + + + + + UPDATE LETTNGNRLMBER_CERT_LOGIN_LOG_IP + SET LOGIN_DT = NOW() + WHERE LOGIN_IP = #loginIp# + AND LOGIN_ID = #loginId# + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml new file mode 100644 index 00000000..a5e5ed0c --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + /* 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# + ) + + + + + + UPDATE LETTNGNRLMBER_CERT_PHONE + SET CERT_USE_YN = 'N' + , LAST_UPDUSR_ID = #lastUpdusrId# + WHERE + MBER_ID = #mberId# + AND MBTLNUM = #mbtlnum# + + + + + + + + UPDATE LETTNGNRLMBER_CERT_PHONE + SET + LAST_UPDUSR_ID = #lastUpdusrId# + , CERT_MEMO = #certMemo# + , CERT_ALIAS = #certAlias# + WHERE + MBER_ID = #mberId# + AND MBTLNUM = #mbtlnum# + + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml index 6cc2f075..900e017c 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml @@ -28,7 +28,7 @@ WHERE 1=1 - AND ( A.USER_ID LIKE CONCAT('%', #searchKeyword#, '%') + AND ( A.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')MjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xml OR CUSTOM_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%') ) diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index 596341d8..cf758bee 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml @@ -20,6 +20,7 @@ + @@ -3734,6 +3735,61 @@ LIMIT 1 + + + + + + + + /* mjonMsgDAO.selectMemLoginThisMonth */ SELECT M2.createDt ,M2.visitCnt diff --git a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml index 39465903..dd390dce 100644 --- a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml @@ -1101,6 +1101,23 @@ SELECT LAST_INSERT_ID() + + + + + UPDATE MJ_CERT_LOG @@ -2107,4 +2124,21 @@ WHERE CMPHST_ID = #cmpHstId# + + + + + + UPDATE LETTNGNRLMBER SET + SECU_LOGIN_FLAG = #secuLoginFlag# + ,LAST_UPDUSR_ID = #lastUpdusrId# + WHERE MBER_ID = #mberId# + + + diff --git a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml index cffb8d00..1029ce20 100644 --- a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml @@ -1206,6 +1206,7 @@ , A.EMAIL_YN AS emailYN , A.SMS_YN AS smsYN + , A.SECU_LOGIN_FLAG AS secuLoginFlag FROM LETTNGNRLMBER A diff --git a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp index 956e22a4..48590afc 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp @@ -2072,6 +2072,161 @@ function fnEventEdit(){ } +//인증번호 등록 +function fn_certPhoneReg(){ + var mberId = $('#cashUserId').val(); + + var mbtlnum = $('#pop_mbtlnum').val(); + if(mbtlnum == ''){ + alert("등록할 인증번호를 입력해주세요."); + return false; + } + + var params = { + "mberId" : mberId + , "mbtlnum" : mbtlnum + , "certAlias" : $('#pop_certAlias').val() + , "certMemo" : $('#pop_certMemo').val() + } + console.log('params : ', params); + + if(!confirm("인증번호를 등록 하시겠습니까?")){ + return false; + } + + $.ajax({ + type: "POST", + url: "/cert/phone/insertCertPhone.do", + data: params, + dataType:'json', + async: false, + success: function (returnData) { + if(returnData.status == 'OK'){ + alert(returnData.message); + location.reload(); + }else if(returnData.status == 'CONFLICT'){ + alert(returnData.message); + return false; + }else{ + alert("오류가 발생하였습니다."); + } + }, + error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } + }); +} + +//인증번호 수정 +function fn_certPhoneUdt(){ + var mberId = $('#cashUserId').val(); + + var mbtlnum = $('#pop_udt_mbtlnum').val(); + + var params = { + "mberId" : mberId + , "mbtlnum" : mbtlnum + , "certAlias" : $('#pop_udt_certAlias').val() + , "certMemo" : $('#pop_udt_certMemo').val() + } + console.log('params : ', params); + + if(!confirm("수정 하시겠습니까?")){ + return false; + } + + $.ajax({ + type: "POST", + url: "/cert/phone/updateCertPhone.do", + data: params, + dataType:'json', + async: false, + success: function (returnData) { + if(returnData.status == 'OK'){ + alert(returnData.message); + location.reload(); + }else{ + alert("오류가 발생하였습니다."); + } + }, + error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } + }); +} + +function fn_certPhoneUpdatePopOpen(mbtlnum){ + var mberId = $('#cashUserId').val(); + var mbtlnum = mbtlnum; + + var params = { + "mberId" : mberId + , "mbtlnum" : mbtlnum + } + + $.ajax({ + type: "POST", + url: "/cert/phone/findByCertPhoneInfo.do", + data: params, + dataType:'json', + async: false, + success: function (returnData) { + + console.log('returnData : ', returnData); + if(returnData.status == 'OK'){ + + console.log('returnData.object.mbtlnum : ', returnData.object.mbtlnum); + $('#pop_udt_mbtlnum').val(returnData.object.mbtlnum); + $('#pop_udt_certAlias').val(returnData.object.certAlias); + $('#pop_udt_certMemo').val(returnData.object.certMemo); + + layerPopOpen('certPhoneUdt'); + }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: "/cert/phone/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 +5262,80 @@ function fnInputSmsTxt(){ + +
+

인증 번호 리스트

+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
인증번호별칭메모삭제
+ + + + + + + + + + + + + 대표번호 + + +
+ +
+
+
+
등록된 인증번호가 없습니다.
+
@@ -6240,7 +6469,7 @@ function fnInputSmsTxt(){ 첫결제 충전캐시 <%-- " maxlength="9"/> --%> - " title="캐시" maxlength="20" onblur="foucusOut(this)"/> + " title="캐시" maxlength="20" onblur="foucusOut(this)"/> @@ -6264,6 +6493,77 @@ function fnInputSmsTxt(){
+ + +
+
인증번호 등록
+
+ + + + + + + + + + + + + + + + + + + +
인증번호 + +
별칭 + +
메모 + +
+
+ +
+
+
+ +
+
인증번호 등록
+
+ + + + + + + + + + + + + + + + + + + +
인증번호 + +
별칭 + +
메모 + +
+
+ +
+
+
diff --git a/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp b/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp index 9ec84925..0a766c42 100644 --- a/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/com/webCommonFooter.jsp @@ -29,7 +29,7 @@ function footerSiteLinkPageTwoGo (){
  • 회사소개
  • 이용약관
  • 개인정보처리방침
  • -
  • 불법스팸방지정책
  • +
  • 불법스팸방지정책
  • @@ -39,7 +39,7 @@ function footerSiteLinkPageTwoGo (){ + 대량문자 전송자격인증 마크 diff --git a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp index b56e77d6..5c5a9a95 100644 --- a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp @@ -41,6 +41,42 @@ + +