This commit is contained in:
myname 2024-02-14 17:49:33 +09:00
commit c94e45dd22
14 changed files with 220 additions and 70 deletions

View File

@ -1,16 +1,26 @@
package kcc.ve.aplct.sspnIdtmt.service.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import kcc.com.cmm.LoginVO;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.cmm.VeSendSMS;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctSndHstryService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.impl.VEEduAplctDAO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.impl.CndtnTrgtMngDAO;
@ -26,6 +36,25 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
@Resource(name="cndtnTrgtInfoMngDAO")
private CndtnTrgtMngDAO cndtnTrgtInfoMngDAO;
//snd_hstry id gen
@Resource(name = "sndGnrService")
private EgovIdGnrService sndGnrService;
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
//강사 정보 MIX
@Resource(name="vEInstrMixService")
private VEInstrMixService vEInstrMixService;
// 교육신청발송이력
@Resource(name = "vEEduAplctSndHstryService")
private VEEduAplctSndHstryService vEEduAplctSndHstryService;
@Override
public void insertVeEduAplct(VEEduAplctVO paramVO) {
@ -107,6 +136,7 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
String msg="";
String id="";
String next=""; //?
String smsYn = ""; //휴대폰 인증 번호 발송 여부
try {
result="";
//
@ -176,6 +206,7 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
msg = "";
id = cndtnTrgtMngVOList.get(0).getSspnIdtmtTrgtOrd();
next = "Y";
smsYn = "Y";
//next = Integer.toString(cndtnTrgtMngVOList.size()); //대상자
}else if (cndtnTrgtMngVOList.size()>1) { //대상 리스트 던질것
@ -184,6 +215,7 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
msg = "";
id = ""; //여기에 대상 선택을 위한 데이터를 넣어준다.
next = "N";
smsYn = "Y";
modelAndView.addObject("cndtnTrgtMngVOList", cndtnTrgtMngVOList);
//cndtnTrgtMngVOList.get(0).getreg
@ -191,6 +223,43 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
}
//핸드폰으로 인증번호 발송
if ("Y".equals(smsYn)) {
//인증번호 생성
String code = RandomStringUtils.randomNumeric(6);
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
VeSendSMS sendSMS = new VeSendSMS();
cndtnTrgtInfoMngVO = egovCryptoUtil.decryptCndtnTrgtMngVOInfo(cndtnTrgtInfoMngVO); //핸드폰번호 복호화
vEEduAplctVO.setEduAplctOrd("기소유예 대상자 인증");
vEEduAplctVO.setSndCn("안녕하세요. 저작권배움터 기소유예 담당자입니다.\n인증번호는 " + code + " 입니다.");
vEEduAplctVO.setClphone(cndtnTrgtInfoMngVO.getClphone());
vEEduAplctVO.setSndFlag("B");
Map<String, Object> resultMap = sendSMS.VeSendSMS(vEEduAplctVO.getClphone(), vEEduAplctVO.getSndCn(), vEEduAplctVO.getSndFlag());
//문자 발송 성공
if("1".equals(resultMap.get("result_code"))){
//발송 로그
LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
String snd_ord = sndGnrService.getNextStringId();
vEEduAplctVO.setSndHstryOrd(snd_ord);
vEEduAplctVO.setSndId(loginVO.getUniqId());
vEEduAplctVO.setTrgt(vEEduAplctVO.getClphone());
vEEduAplctVO.setSndCd("10");
vEEduAplctVO.setTrgtId(loginVO.getUniqId());
vEEduAplctSndHstryService.insert(vEEduAplctVO);
//인증번호 row 생성 (기존 강사인증 테이블 사용)
VEInstrDetailVO vEInstrDetailVO = new VEInstrDetailVO();
vEInstrDetailVO.setEmail(vEEduAplctVO.getClphone());
vEInstrDetailVO.setCrtfdNumber(code);
vEInstrDetailVO.setUserId(loginVO.getUniqId());
vEInstrMixService.deleteInstrEmailCrtfd(vEInstrDetailVO);
vEInstrMixService.insertInstrEmailCrtfd(vEInstrDetailVO);
}
}
/*
if(StringUtils.isNotEmpty(id)) {
msg = "이미 신청한 대상자 입니다.";

View File

@ -496,6 +496,9 @@
)
AND a.prcs_aplct_prd_ord_cmplt IS NULL /* 병합되지 않았다. */
<isNotEmpty property="clphone">
AND a.clphone = #clphone#
</isNotEmpty>
</select>
<!-- 기소유예 대상자 확인 STEP01 -->
@ -533,6 +536,9 @@
)
AND a.prcs_aplct_prd_ord_cmplt IS NULL /* 병합되지 않았다. */
<isNotEmpty property="clphone">
AND a.clphone = #clphone#
</isNotEmpty>
</select>
<!-- 기소유예 대상자 확인 STEP00 -->

View File

@ -169,6 +169,7 @@
<pattern>*/cop/bbs/EgovBBSIdListSearch.do</pattern> <!-- 관리자 저작권체험교실 교육과정안내 미리보기 팝업 -->
<pattern>/web/ve/aplct/fndtnEnhanceTrn/eduAplctPop.do</pattern> <!-- 실무역량강화 전체과정 신청 팝업 -->
<pattern>/web/ve/aplct/sspnIdtmt/eduAplctPop.do</pattern> <!-- 기소유예 신청인 정보 입력 팝업 -->
<!-- <pattern>*/tngrVisitEdu/popup/*Popup.do</pattern>
<pattern>*/adultVisitEdu/popup/*Popup.do</pattern> -->

View File

@ -441,7 +441,7 @@ function wrapWindowByMask(){
<tr>
<th>담당업무</th>
<td colspan="3">
<div style="display:;" id="userWork_case1">
<div style="display:; margin-bottom: 5px;" id="userWork_case1">
<form:input path="userWork" id="userWork" cssClass="txaIpt" size="20" maxlength="15" placeholder="" />
<form:errors path="userWork" cssClass="error" />
</div>
@ -508,25 +508,26 @@ function wrapWindowByMask(){
</div>
</div> -->
<div class="mask"></div>
<div class="popup_wrap window">
<div class="popup_wrap window check_pop">
<div class="popup_tit">
<p>아이디 중복 확인</p>
<button class="btn_popup_close close" title="팝업 닫기"><i></i></button>
</div>
<div class="cont_popup">
<p class="info_text">
<div class="id_check2">
<span>사용할 아이디</span><input type="text" id="checkIdModal">
</div>
<br>
<div class="id_check3">
<span>중복확인을 실행하십시오</span><button class="btnType03" onclick="fn_id_check(); return false;">중복확인조회</button>
<div class="id_wrap">
<div class="id_check2">
<span>사용할 아이디</span><input type="text" id="checkIdModal">
</div>
<div class="id_check3">
<!-- <span>중복확인을 실행하십시오</span> --><button class="btnType03" onclick="fn_id_check(); return false;">중복확인조회</button>
</div>
</div>
</p>
<div class="btn_wrap btn_layout04">
<button type="button" class="btnType03" onclick="layerPopToggle();">닫기</button>
<button type="button" class="btnType03 close" onclick="layerPopToggle();">닫기</button>
</div>
</div>
</div>

View File

@ -443,7 +443,6 @@ function fn_egov_regist_preview() {
<c:set var="title">공지여부</c:set>
<tr>
<th>
<label for="noticeAtTitle"><c:out value='${title}' /></label>
<c:out value='${title}' />
</th>
<td>
@ -462,12 +461,12 @@ function fn_egov_regist_preview() {
<button type="button" class="calBtn btnType01">시작일</button>
<!-- <input type="button" class="calBtn"> -->
</a>
<select id="ntceBgndeHH" name="ntceBgndeHH" class="date_format">
<select id="ntceBgndeHH" name="ntceBgndeHH" class="date_format sel_type1 da_fo">
<c:forEach var="result" items="${ntceBgndeHH}" varStatus="status">
<option value="${result.code}"><c:out value='${result.codeNm}' /></option>
</c:forEach>
</select>시
<select id="ntceBgndeMM" name="ntceBgndeMM" class="date_format">
<select id="ntceBgndeMM" name="ntceBgndeMM" class="date_format sel_type1 da_fo">
<c:forEach var="result" items="${ntceBgndeMM}" varStatus="status">
<option value="${result.code}"><c:out value='${result.codeNm}' /></option>
</c:forEach>
@ -479,12 +478,12 @@ function fn_egov_regist_preview() {
<button type="button" class="calBtn btnType01">종료일</button>
<!-- <input type="button" class="calBtn"> -->
</a>
<select id="ntceEnddeHH" name="ntceEnddeHH" class="date_format">
<select id="ntceEnddeHH" name="ntceEnddeHH" class="date_format sel_type1 da_fo">
<c:forEach var="result" items="${ntceEnddeHH}" varStatus="status">
<option value="${result.code}"><c:out value='${result.codeNm}' /></option>
</c:forEach>
</select>시
<select id="ntceEnddeMM" name="ntceEnddeMM" class="date_format">
<select id="ntceEnddeMM" name="ntceEnddeMM" class="date_format sel_type1 da_fo">
<c:forEach var="result" items="${ntceEnddeMM}" varStatus="status">
<option value="${result.code}"><c:out value='${result.codeNm}' /></option>
</c:forEach>

View File

@ -183,8 +183,6 @@
defaultText="선택"
/>
<!-- <input type="text" name="instrNm"/> -->
<div class="put_photo">
<div class="put_photo_in">
<div class="put_photo">
<div class="put_photo_in">
<div class="put_photo_box">
@ -197,15 +195,13 @@
</div>
<!-- <button type="button" class="btnType01" onclick="fncPhotoPopup(); return false;">사진등록</button> -->
</div>
</div>
</div>
<%-- <ve:select codeId="VE0015" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="<c:out value='${info.prcsDiv}'/>" defaultValue='10'/> --%>
</td>
</tr>
<tr>
<th scope="row">과정명</th>
<td>
<input type="text" name="prcsNm"/>
<input type="text" style="width:100%;" name="prcsNm"/>
</td>
</tr>
<tr>

View File

@ -142,8 +142,8 @@
-->
<!-- cont_tit -->
<div class="cont_tit">
<h2>교육최소시간설정</h2>
<div class="tb_tit01">
<p>교육최소시간설정</p>
</div>
<div class="tb_type02">
@ -212,8 +212,8 @@
<!-- cont_tit -->
<div class="cont_tit">
<h2>교육신청등록문구</h2>
<div class="tb_tit01">
<p>교육신청등록문구</p>
</div>
<div class="tb_type02">
@ -255,8 +255,8 @@
</div>
</div>
<div class="cont_tit">
<h2>강사대시보드 문구</h2>
<div class="tb_tit01" style="padding:30px 0 0 0;">
<p>강사대시보드 문구</p>
</div>
<div class="tb_type02">

View File

@ -196,7 +196,7 @@ function press() {
<!-- //list_top -->
<!-- list -->
<div class="list tbType01">
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 10%">

View File

@ -230,7 +230,7 @@ function press() {
<!-- //list_top -->
<!-- list -->
<div class="list tbType01">
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 10%">

View File

@ -172,7 +172,7 @@ function roleListExcelDownload(){
<!-- //list_top -->
<!-- list -->
<div class="list tbType01">
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 5%">

View File

@ -99,7 +99,7 @@ function selectMenuCreat(vAuthorCode) { //메뉴생성 화면 호출
<!-- //list_top -->
<!-- list -->
<div class="list tbType01">
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 10%">

View File

@ -25,7 +25,8 @@
<script type="text/javascript" src="${pageContext.request.contextPath}/kccadrPb/usr/script/popup.js"></script>
<script type="text/javaScript" language="javascript">
//본인인증 확인 여부 체크
var chkYn = "";
/*
function fncGoScholList(){
linkPage(1);
@ -75,6 +76,7 @@
var dBirth = $('#dBirth').val().replace(/\./g, '');
var trgtNm = $('#trgtNm').val();
var sex = $('input[name="sex"]:checked').val();
var clphone = $('#clphone').val();
$('#regForm input[name="prcsAplctPrdOrd"]').val(p_prcsAplctPrdOrd);
@ -92,9 +94,14 @@
alert("성별을 입력해주세요.");
return;
}
if (clphone==""){
alert("휴대폰 번호를 입력해주세요.");
return;
}
form.trgtNm.value = trgtNm;
form.dBirth.value = dBirth;
form.sex.value = sex;
form.clphone.value = clphone;
var data = new FormData(document.getElementById("confirmForm"));
@ -112,48 +119,65 @@
success:function(returnData){
console.log('returnData : ', returnData);
if(returnData.result == "success"){
// 대상자 테이블 pk 값
var sspnIdtmtTrgtOrd = returnData.id;
//alert(returnData.msg);
if(chkYn != 'Y'){ //본인인증 전
alert("인증번호를 확인해주세요.");
$("#chkNo").show();
$("#chkBtn").hide();
//기존정보 변경 막기
$("#trgtNm").prop('readonly', true);
$("#date").prop('readonly', true);
$("#clphone").prop('readonly', true);
$(".duet-date__toggle").remove();
$("#sexM").attr("onclick", "return(false);");
$("#sexF").attr("onclick", "return(false);");
// 교육 신청 ajax
// 대상자 이름, 생년월일, 대상자TB ID
if(returnData.next == "Y")
{
//sspnIdtmtTrgtOrd = returnData.id;
// fncEduReg(trgtNm, dBirth, returnData.id);
$('#target_confirm_popup-close').click();
fn_eduRegPopup(trgtNm, dBirth, returnData.id);
}else if(returnData.next == "N"){
//동일 대상자 중에서 선택할수 있도록 처리해야 한다.
//forMulti
$('#confirmBtns').hide();
$('#VOList').show();
returnData.cndtnTrgtMngVOList.forEach(
function (el, index){
var v_forMulti = '';
v_forMulti = v_forMulti +"<tr>";
v_forMulti = v_forMulti +"<td>";
v_forMulti = v_forMulti +el.reqNmbr;
v_forMulti = v_forMulti +"</td>";
v_forMulti = v_forMulti +"<td>";
v_forMulti = v_forMulti +el.prsctrNm;
v_forMulti = v_forMulti +"</td>";
v_forMulti = v_forMulti +"<td>";
//v_forMulti = v_forMulti +el.sspnIdtmtTrgtOrd;
}else{ //본인인증 후
// 대상자 테이블 pk 값
var sspnIdtmtTrgtOrd = returnData.id;
// 교육 신청 ajax
// 대상자 이름, 생년월일, 대상자TB ID
if(returnData.next == "Y")
{
//sspnIdtmtTrgtOrd = returnData.id;
//fncEduReg(trgtNm, dBirth, returnData.id);
$('#target_confirm_popup-close').click();
fn_eduRegPopup(trgtNm, dBirth, returnData.id);
}else if(returnData.next == "N"){
//동일 대상자 중에서 선택할수 있도록 처리해야 한다.
//forMulti
$('#confirmBtns').hide();
$('#VOList').show();
returnData.cndtnTrgtMngVOList.forEach(
function (el, index){
var v_forMulti = '';
v_forMulti = v_forMulti +"<tr>";
v_forMulti = v_forMulti +"<td>";
v_forMulti = v_forMulti +el.reqNmbr;
v_forMulti = v_forMulti +"</td>";
v_forMulti = v_forMulti +"<td>";
v_forMulti = v_forMulti +el.prsctrNm;
v_forMulti = v_forMulti +"</td>";
v_forMulti = v_forMulti +"<td>";
//v_forMulti = v_forMulti +el.sspnIdtmtTrgtOrd;
v_forMulti = v_forMulti +"<button type=\"button\" class=\"btnType05\" onclick=\"fn_new_select('"+el.sspnIdtmtTrgtOrd+"')\">선택</button>";
v_forMulti = v_forMulti +"</td>";
v_forMulti = v_forMulti +"</tr>";
v_forMulti = v_forMulti +"<button type=\"button\" class=\"btnType05\" onclick=\"fn_new_select('"+el.sspnIdtmtTrgtOrd+"')\">선택</button>";
v_forMulti = v_forMulti +"</td>";
v_forMulti = v_forMulti +"</tr>";
$('#forMulti').after(v_forMulti);
}
);
$('#forMulti').after(v_forMulti);
}
);
}
}
}else{
alert(returnData.msg);
@ -187,6 +211,39 @@
fn_eduRegPopup(trgtNm, dBirth, p_sspnIdtmtTrgtOrd);
}
function fncChkNo(){
if($("#crtfdNumber").val().length != 6){
alert("인증번호 6자리를 입력해주세요.");
return false;
}
var data = new FormData(document.getElementById("newSrvyPopupForm"));
$.ajax({
type: "POST",
url: "${pageContext.request.contextPath}/web/ve/instr/instrInfo/emailCrtfdChkAjax.do",
data: data,
dataType:"json",
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(returnData.result == 'success'){
alert("확인되었습니다.");
chkYn = "Y";
$("#chkNo").hide();
fn_new_confirm('${vEEduChasiVO.prcsAplctPrdOrd}');
} else {
alert("인증번호가 일치하지 않습니다.");
return false;
}
},
error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
$(document).ready(function(){
/*
boardCaptionDetailToggle4();
@ -363,6 +420,19 @@ $(document).ready(function(){
<%-- <script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker2.js"></script> --%>
</td>
</tr>
<tr>
<th scope=“row”>휴대폰 번호</th>
<td>
<input type="text" id="clphone" onkeyup="onlyNumber(this);" maxlength="11">
</td>
</tr>
<tr id="chkNo" style="display:none;">
<th scope=“row”>인증번호</th>
<td>
<input type="text" name="crtfdNumber" id="crtfdNumber" onkeyup="onlyNumber(this);" maxlength="6">
<button type="button" class="btnType06" onclick="fncChkNo();">인증하기</button>
</td>
</tr>
<tr>
<th scope=“row”>성별</th>
<td>
@ -378,7 +448,7 @@ $(document).ready(function(){
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" onclick="fn_new_confirm('${vEEduChasiVO.prcsAplctPrdOrd}')">제출</button>
<button type="button" class="btnType05" id="chkBtn" onclick="fn_new_confirm('${vEEduChasiVO.prcsAplctPrdOrd}')">확인</button>
<button type="button" class="btnType02 tooltip-close" id="target_confirm_popup-close" data-focus="sub36_pop02_close" data-focus-next="sub36_pop02">취소</button>
</div>
<div class="btn_right">

View File

@ -472,4 +472,11 @@ input[type="text"].input_time {width: 50px;}
.pr_name input{width: 500px;}
/*게시판 > 등록화면 > 제목 input 가로 수정*/
.tite_in input{width: 100%;}
.tite_in input{width: 100%;}
/*관리자 관리 > 등록 > 중복아이디 검색 팝업 수정*/
.check_pop .cont_popup .id_wrap{display: flex; justify-content: center;}
.check_pop .cont_popup .id_wrap .id_check3 .btnType03{background-color: #697e9b; margin: 0 0 0 5px; font-size: 17px; padding: 0 15px; height: 40px;}
.check_pop .cont_popup .id_wrap .id_check3 .btnType03:hover{background-color: #546a89;}
.check_pop .cont_popup .id_check2 span{margin-right: 5px;}
.check_pop .cont_popup .btn_wrap{text-align: center;}

View File

@ -103,4 +103,5 @@
/*관리자 NEW 아이콘 추가*/
.new_icon{display: block; width:30px; background-color: #e95504; font-size: 12px; color: #fff; border-radius: 5px; padding: 0 5px 2px 5px; margin: 0 auto;}
/*게시판관리 > 게시판관리 > 공지사항 등록 > 공지기간 select 수정*/
.da_fo{width: 90px !important;}