File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package itn.let.utl.user.service;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import itn.let.mjo.msg.service.MjonMsgService;
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;
import itn.let.uss.umt.service.EgovUserManageService;
import itn.let.uss.umt.service.UserManageVO;
/**
*
* 관리자 로그인시 문자인증 기능에 대한 Util 클래스
* @author 사업기술본부 이준호(ITN)
* @since 2022.08.24
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2022.08.24 이준호 최초 생성 *
*
* </pre>
*/
@Service("MjonSmsCertSendUtil")
public class MjonSmsCertSendUtil {
@Resource(name = "mjonMsgService")
private MjonMsgService mjonMsgService;
@Resource(name = "MjonMsgDataService")
private MjonMsgDataService mjonMsgDataService;
@Resource(name = "userManageService")
private EgovUserManageService userManageService;
/**
* @Method Name : mjonSmsCertSend
* @작성일 : 2022. 8. 24.
* @작성자 : 이준호
* @Method 설명 : 미허용 IP 관리자 페이지 로그인 시 SMS인증번호 발송
*/
public void mjonSmsCertSend(String callTo) throws Exception{
MjonMsgVO mjonMsgVO = new MjonMsgVO();
// 인증번호 내용
String contents = "관리자 미허용 IP 문자인증 로그인 인증번호 문자입니다. 인증번호는 : %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");
mjonMsgVO.setCallTo(callTo);
try {
mjonMsgVO.setUserId("system");
String msgType = "4";
// 전송사 전송 배분
MjonMsgVO pramVO = new MjonMsgVO();
List<MjonMsgVO> 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.setMsgType("4");
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()); //한건 금액
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);
} catch (Exception e) {
System.out.println("!!!!!!!!!!!!!MjonSmsCertSendUtill - ERROR!!!!!!!!!!!!!!!!");
}
}
/**
* @Method Name : mjonSmsCertCheck
* @작성일 : 2022. 8. 25.
* @작성자 : 이준호
* @Method 설명 : 미허용 IP 관리자 페이지 로그인 시 SMS인증번호 체크
*/
public String mjonSmsCertCheck(String callTo, String checkNo, String mberId) throws Exception{
try {
UserManageVO userManageVO = new UserManageVO();
// userManageVO set
userManageVO.setCheckNo(checkNo);
userManageVO.setMoblphonNo(callTo);
userManageVO.setEmplyrId(mberId);
// SendLogVO set
SendLogVO sendLogVO = new SendLogVO();
sendLogVO.setReceive(userManageVO.getMoblphonNo());
// 인증번호 가져오기
sendLogVO = mjonMsgDataService.selectSysMsgLog(sendLogVO);
if (sendLogVO == null) {
return "empty";
} else {
// 시간 비교
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date nowdate = new Date();
Date compareDate = format.parse(sendLogVO.getFrstSendPnttm());
Calendar cal = Calendar.getInstance();
cal.setTime(compareDate);
// 5분 추가
cal.add(Calendar.MINUTE, +5);
compareDate = cal.getTime();
// 인증번호을 발송한지 5분 이내일때
if (compareDate.after(nowdate)) {
UserManageVO checkUser = userManageService.selectAdminUserSmsCertCheck(userManageVO);
if (checkUser != null) {
return "success";
} else {
return "checkNoFail";
}
} else {
return "timeOut";
}
}
} catch (Exception e) {
return "exception";
}
}
}