let isRunning = false; let phoneAuthYn = "N"; let userData = {}; let certCellFlag = "N"; let num = 60 * 3; // 몇분을 설정할지의 대한 변수 선언 let myVar; let duplicateSuccess = false; /**************************************************************************** * 정보입력 페이지 이동 ****************************************************************************/ function fn_joinInputIntro() { let serviceAgreement = $('#service_agreement').prop('checked'); let collectionAgreement = $('#collection_agreement').prop('checked'); let marketingAgreement = $('#marketing_agreement').prop('checked'); if (!serviceAgreement) { modalEvent.warning('등록', '서비스 이용 약관은 필수 동의 사항입니다.') return; } if (!collectionAgreement) { modalEvent.warning('등록', '개인정보 수집 및 이용 약관은 필수 동의 사항입니다.') return; } let param = "?serviceAgreement=" + serviceAgreement; param += "&collectionAgreement=" + collectionAgreement; param += "&marketingAgreement=" + marketingAgreement; location.href = '/mobilejoin/joinInputIntro.do'+param; } /**************************************************************************** * 가입 완료버튼 ****************************************************************************/ function fn_join(){ if(""==loginType){ //snsType MU:메이드유,K:카카오,N:네이버,A:애플 loginType = "MU"; } let membershipAccount = $("#membershipAccount").val(); let membershipPassword = $("#membershipPassword").val(); let passwordCheck = $("#passwordCheck").val(); let userName = $("#userName").val(); let phoneNumber = $("#phoneNumber").val().replace(/-/g, ""); let introUser = $("#introUser").attr('data'); let reg_password = /^(?=.*[a-zA-Z])((?=.*\d)(?=.*\W)).{8,20}$/; /* 디바이스 정보 추가 ( 임시 하드코딩 )*/ // let phoneType = 'A' // let deviceUuid = 'e3fc0d3e-e1c7-49ea-bce3-6994721eb711' // let pushKey = '' // let modelName = 'galaxy' // let osVersion = '1' if(true != fn_emptyCheck(membershipAccount)){ modalEvent.warning("등록", "아이디를 입력하세요"); return; }else if(membershipAccount.length<4){ modalEvent.warning("등록", "아이디는 최소 4자 이상 입력해야합니다."); return; }else if(!duplicateSuccess&&"MU"==loginType){ modalEvent.warning("등록", "아이디 중복여부를 확인하세요."); return; } if("MU"==loginType){ if(true != fn_emptyCheck(membershipPassword)){ modalEvent.warning("등록", "비밀번호를 입력하세요"); return; }else if(!reg_password.test(membershipPassword)) { modalEvent.warning("등록", "비밀번호는 숫자,영문,특수문자 조합 최소 8자리 최대 20자리로 입력해야합니다."); return; }else{ if(membershipPassword!==passwordCheck){ modalEvent.warning("등록", "비밀번호가 일치하지 않습니다."); return; } } } if(true != fn_emptyCheck(marketingAgreement)){ modalEvent.warning("등록", "마케팅 수신 동의여부가 없습니다."); return; } if(true != fn_emptyCheck(userName)){ modalEvent.warning("등록", "성함이 없습니다."); return; }else if(userName.length<2){ modalEvent.warning("등록", "성함은 최소 2자 이상 입력해야합니다."); return; } if(true != fn_emptyCheck(phoneNumber)){ modalEvent.warning("등록", "휴대폰번호가 없습니다."); return; } if('Y'!==phoneAuthYn){ modalEvent.warning("등록", "휴대폰인증을 진행하세요"); return; } let formData = new FormData(); formData.append("membershipAccount", membershipAccount); formData.append("membershipPassword", membershipPassword); formData.append("passwordCheck", passwordCheck); formData.append("userName", userName); formData.append("phoneNumber", phoneNumber); formData.append("introUser", introUser); formData.append("loginType", loginType); formData.append("marketingAgreement", marketingAgreement); // formData.append("phoneType", phoneType); // formData.append("deviceUuid", deviceUuid); // formData.append("pushKey", pushKey); // formData.append("modelName", modelName); // formData.append("osVersion", osVersion); $.ajax({ url: encodeURI('/mobilejoin/insertUser.do'), data: formData, dataType: "json", processData: false, contentType: false, type: 'POST', async: true, success: function (data) { if ('0' == data.msgCode) { modalEvent.success("성공", "회원가입 되었습니다.", function () { fn_joinToLogin(membershipAccount, membershipPassword); }) } else { modalEvent.danger("등록 오류", data.msgDesc, function (){ // location.href = '/mobilelogin/loginIntro.do'; fn_leftFormAction("/mobilehome/loginIntro.do"); }); } }, error: function (xhr, status, error) { modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오."); }, beforeSend: function () { }, complete: function () { } }) } /**************************************************************************** * 회원가입 후 로그인 ****************************************************************************/ function fn_joinToLogin(param1, param2){ let ajaxUrl = ""; if('MU'==loginType){ ajaxUrl = "/login.do"; }else{ ajaxUrl = "/snsLogin.do"; } let formData = new FormData(); formData.append("loginId", param1); formData.append("password", param2); formData.append("loginType", loginType); formData.append("deviceUuid", deviceUuid1); formData.append("phoneType", phoneType1); formData.append("modelName", modelName1); formData.append("osVersion", osVersion1); formData.append("pushKey", pushKey1); formData.append("appVersion", appVersion1); formData.append("deviceYn", deviceYn); $.ajax({ url: encodeURI('/mobilelogin'+ajaxUrl), data: formData, dataType: 'json', processData: false, contentType: false, type: 'POST', async: true, success: function(data){ if('0'==data.msgCode){ fn_leftFormAction("/mobilehome/homeIntro.do"); } else{ modalEvent.danger("로그인 오류", data.msgDesc); } }, error : function(xhr, status, error) { modalEvent.danger("로그인 오류", "조회 중 오류가 발생하였습니다. 잠시후 다시시도하십시오."); }, beforeSend:function(){ }, complete:function(){ } }); } /**************************************************************************** * 아이디 중복확인 ****************************************************************************/ function fn_duplicateCheck(){ let membershipAccount = $("#membershipAccount").val(); if(true != fn_emptyCheck(membershipAccount)){ modalEvent.warning("등록", "아이디를 입력하세요"); return; }else if(membershipAccount.length<4){ modalEvent.warning("등록", "아이디는 최소 4자 이상 입력해야합니다."); return; } let formData = new FormData(); formData.append("membershipAccount", membershipAccount); $.ajax({ url: encodeURI('/mobilejoin/checkMembershipId.do'), data: formData, dataType: "json", processData: false, contentType: false, type: 'POST', async: true, success: function (data) { if ('0' == data.msgCode) { if (data.success === 'true') { modalEvent.success("", "사용 가능한 아이디입니다.", function () { duplicateSuccess = true; $('.first').append('사용 가능한 아이디') checkAllFields(); }) } else { modalEvent.success("", "이미 존재하는 아이디입니다.", function () { $('.first').append('중복된 아이디') }) } } else { modalEvent.danger("등록 오류", "이미 사용중인 아이디입니다. 다른 아이디를 입력해주세요."); } }, error: function (xhr, status, error) { modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오."); }, beforeSend: function () { }, complete: function () { } }) } /**************************************************************************** * 추천인 아이디 확인 ****************************************************************************/ function fn_checkUser(){ let introUser = $("#introUser").val(); if(true != fn_emptyCheck(introUser)){ return; } let formData = new FormData(); formData.append("membershipAccount", introUser); $.ajax({ url: encodeURI('/mobilejoin/checkMembershipId.do'), data: formData, dataType: "json", processData: false, contentType: false, type: 'POST', async: true, success: function (data) { if ('0' == data.msgCode) { if($('#introUserCheck')){ $('#introUserCheck').remove(); } if (0확인되었습니다.') $('#introUser').attr('data',data.rows.muUserId); } else { $('#introUser').parent().parent().append('존재하지 않는 추천인 입니다.') } } else { modalEvent.danger("등록 오류", data.msgDesc); } }, error: function (xhr, status, error) { modalEvent.danger("등록 오류", "등록 중 오류가 발생하였습니다. 잠시후 다시시도하십시오."); }, beforeSend: function () { }, complete: function () { } }) } /**************************************************************************** * 휴대폰 본인인증 ****************************************************************************/ function fn_sendAuthNum(){ let phoneNumber = $("#phoneNumber").val(); let reg_tel = /^[0-9]{10,11}$/; if(true != fn_emptyCheck(phoneNumber)){ modalEvent.warning("조회", "휴대폰번호를 입력하세요."); return; }else{ if(reg_tel.test(phoneNumber) != true) { modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다."); return; }else{ // 인증번호 발송 fn_insertPhoneAuth(); } } } /**************************************************************************** * 인증번호 등록 ****************************************************************************/ function fn_insertPhoneAuth(){ isRunning = false; let phoneNumber = $("#phoneNumber").val(); let authType = "JN"; let formData = new FormData(); formData.append("phoneNumber", phoneNumber); formData.append("authType", authType); $.ajax({ url: encodeURI('/mobilephoneauth/insertPhoneAuth.do'), data: formData, dataType: 'json', processData: false, contentType: false, type: 'POST', async: true, success: function(data){ if(data.msgCode=='0'){ modalEvent.success("", data.msgDesc, function(){ isRunning = true; fn_startTimer(); $("#sendAuthNumBtn").text("재전송"); $(".certification_box2").show(); }); }else{ modalEvent.danger("", data.msgDesc); } }, error : function(xhr, status, error) { modalEvent.danger("", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다."); }, beforeSend:function(xhr){ xhr.setRequestHeader("token", sessionStorage.getItem("token")); }, complete:function(){ } }); } /**************************************************************************** * 타이머 함수 실행 ****************************************************************************/ function fn_startTimer() { // 남은 시간(초) let count = 180; let display = document.querySelector('#timer'); let minutes, seconds; let timer = setInterval(function () { if(isRunning){ minutes = parseInt(count / 60, 10); seconds = parseInt(count % 60, 10); minutes = minutes < 10 ? "0" + minutes : minutes; seconds = seconds < 10 ? "0" + seconds : seconds; display.textContent = "유효시간 " + minutes + ":" + seconds; isRunning = true; }else{ clearInterval(timer); display.textContent = ""; isRunning = false; } // 타이머 종료 if (--count < 0) { clearInterval(timer); display.textContent = ""; isRunning = false; $("#authNumber").val(""); } }, 1000); } /**************************************************************************** * 인증번호 확인 조회 ****************************************************************************/ function fn_selectPhoneAuthCheck(){ let phoneNumber = $("#phoneNumber").val(); let authNumber = $("#authNumber").val(); let reg_tel = /^[0-9]{10,11}$/; if(true != fn_emptyCheck(phoneNumber)){ modalEvent.warning("조회", "휴대폰번호는 필수 값입니다."); return; }else{ if(reg_tel.test(phoneNumber) != true) { modalEvent.warning("조회", "휴대폰번호는 숫자 10~11자리여야 합니다."); return; }else{ phoneNumber = phoneNumber.replace("-", ""); } } if(true != fn_emptyCheck(authNumber)){ modalEvent.warning("조회", "인증번호를 입력하세요."); return; } let formData = new FormData(); formData.append("phoneNumber", phoneNumber); formData.append("authNumber", authNumber); $.ajax({ url: encodeURI('/mobilephoneauth/selectPhoneAuthCheck.do'), data: formData, dataType: 'json', processData: false, contentType: false, type: 'POST', async: false, success: function(data){ if(data.msgCode=='0'){ modalEvent.success("", data.msgDesc); phoneAuthYn = "Y"; clearInterval(timer); isRunning = false; // checkAllFields(); const completeButton = $('.button_box button'); completeButton.addClass('active'); completeButton.attr("disabled", false); }else{ modalEvent.danger("조회 오류", data.msgDesc); phoneAuthYn = "N"; checkAllFields(); } }, error : function(xhr, status, error) { modalEvent.danger("조회 오류", "정상적으로 수행되지 않았습니다. 인터넷에 연결되어 있는지 확인해 보시기 바랍니다."); phoneAuthYn = "N"; checkAllFields(); }, beforeSend:function(xhr){ xhr.setRequestHeader("token", sessionStorage.getItem("token")); }, complete:function(){ } }); } function checkAllFields(changeElement) { const requiredFields = document.querySelectorAll('#membershipAccount,#membershipPassword,#passwordCheck,#userName,#phoneNumber,#authNumber'); let allFilled = true; const completeButton = $('.button_box button'); if(changeElement && changeElement[0]===$("#membershipAccount")[0]){ duplicateSuccess=false; allFilled = false; $("#idUseYn").remove(); } requiredFields.forEach(function (field) { if (field.value.trim() === '') { allFilled = false; } if(!duplicateSuccess){ allFilled = false; } if('Y'!==phoneAuthYn){ allFilled = false; } }); if(allFilled) { completeButton.addClass('active'); completeButton.attr("disabled", false); }else { completeButton.removeClass('active') completeButton.attr("disabled", true); } } function alertFunc() { var min = num / 60; min = Math.floor(min); var sec = num - (60 * min); sec = sec > 9 ? sec : "0"+sec ; if(num == 0){ certCellFlag = "T"; clearInterval(myVar) // num 이 0초가 되었을대 clearInterval로 타이머 종료 } num--; } /**************************************************************************** * 페이지 init ****************************************************************************/ function fn_pageInit() { getDeviceInfo(); if(''!=loginType && ''!=snsEmail){ $("#membershipAccount").val(snsEmail); $("#membershipAccount").css("disabled",true); $("#duplicateCheckBtn").css("display","none"); $("#passwordLi").css("display","none"); } } /**************************************************************************** * 페이지 event ****************************************************************************/ function fn_pageEvent() { $('#membershipAccount,#membershipPassword,#passwordCheck,#userName,#phoneNumber,#authNumber').each(function () { $(this).on('change', ()=>checkAllFields($(this))); }); $("#introUser").change(function () { fn_checkUser(); }); // 다음버튼 $("#btn_joinInputIntro").click(function () { fn_joinInputIntro(); }); // 전체동의 체크 $("#all_agreement").change(function () { const checkboxes = document.querySelectorAll('input[name="join_agreement"]'); checkboxes.forEach(function (checkbox) { checkbox.checked = this.checked; }, this); }); } $(function () { // 페이지 init fn_pageInit(); // 페이지 event fn_pageEvent(); });