최초 세팅

This commit is contained in:
bd091
2025-10-18 11:06:19 +09:00
commit bf0778601f
2497 changed files with 572903 additions and 0 deletions

View File

@@ -0,0 +1,573 @@
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('<a id="idUseYn" style="font-size: small;color: #3985EA;">사용 가능한 아이디</a>')
checkAllFields();
})
} else {
modalEvent.success("", "이미 존재하는 아이디입니다.", function () {
$('.first').append('<a id="idUseYn" style="font-size: small;color: red;">중복된 아이디</a>')
})
}
} 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<data.rows.length) {
$('#introUser').parent().parent().append('<a id="introUserCheck" style="font-size: small;color: #3985EA;">확인되었습니다.</a>')
$('#introUser').attr('data',data.rows.muUserId);
} else {
$('#introUser').parent().parent().append('<a id="introUserCheck" style="font-size: small;color: red;">존재하지 않는 추천인 입니다.</a>')
}
} 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();
});