사용자 회원가입 수정(1)

This commit is contained in:
김현욱
2025-12-23 18:02:34 +09:00
parent 79d17e3fc2
commit c4bb58c75c
8 changed files with 797 additions and 231 deletions

View File

@@ -355,6 +355,9 @@ public interface BOMbrMapper {
public List<DataMap> selectBOMbrwithdrawalSearch(BOMbrVO vo); public List<DataMap> selectBOMbrwithdrawalSearch(BOMbrVO vo);
public List<DataMap> selectBOMbrwithdrawalSnsSearch(BOMbrVO vo); public List<DataMap> selectBOMbrwithdrawalSnsSearch(BOMbrVO vo);
public List<DataMap> selectBOMbrwithdrawalSearchEmail(BOMbrVO vo);
public List<DataMap> selectBOMbrwithdrawalSnsSearchEmail(BOMbrVO vo);
public List<DataMap> selectBOJoinAgreeTermsForm(BOMbrVO vo); public List<DataMap> selectBOJoinAgreeTermsForm(BOMbrVO vo);
public List<DataMap> selectBOClauseAgre(BOMbrVO vo); public List<DataMap> selectBOClauseAgre(BOMbrVO vo);

View File

@@ -1363,6 +1363,30 @@ public class BOMbrService {
return codeList; return codeList;
} }
/**
* 기존 가입 여부 조회(Email)
*/
public List<DataMap> selectBOMbrwithdrawalSearchEmail(BOMbrVO vo) {
List<DataMap> mbrWithDrawalList = new ArrayList<>();
mbrWithDrawalList = mapper.selectBOMbrwithdrawalSearchEmail(vo);
return mbrWithDrawalList;
}
/**
* 기존 가입 여부 조회(Email)
*/
public List<DataMap> selectBOMbrwithdrawalSnsSearchEmail(BOMbrVO vo) {
List<DataMap> mbrWithDrawalList = new ArrayList<>();
mbrWithDrawalList = mapper.selectBOMbrwithdrawalSnsSearchEmail(vo);
return mbrWithDrawalList;
}
/** /**
* 기존 가입 여부 조회 * 기존 가입 여부 조회
*/ */

View File

@@ -420,6 +420,8 @@ public class MbrController {
DataMap content = new DataMap(); DataMap content = new DataMap();
content = service.selectBOEmailAuth(vo); content = service.selectBOEmailAuth(vo);
log.debug("selectEmailAuth content : {}", content);
return ResponseEntity.ok( return ResponseEntity.ok(
WnbtResponse.builder() WnbtResponse.builder()
.resBody(new WnbtResponseBody(content)) .resBody(new WnbtResponseBody(content))
@@ -609,9 +611,40 @@ public class MbrController {
return "sopmal_m/mbr/PosJoinCompleteR"; return "sopmal_m/mbr/PosJoinCompleteR";
} }
/**
* 기존 가입 여부 조회(이메일)
* @return
*/
@Policy(AuthPolicy.PUBLIC)
@RequestMapping(value="/selectMbrwithdrawalSearchEmail", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<WnbtResponse> selectMbrwithdrawalSearchEmail(BOMbrVO vo, BindingResult bindingResult){
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
vo.setMainSopmalCd(user.getSopmalCd());
vo.setSopmalCd(user.getSopmalCd());
vo.setMbrDvCd(service.selectBOMbrDvCd(vo));
String secretKey = commonService.selectSecretkey();
vo.setSecretKey(secretKey);
Map<String, Object> content = new HashMap<>();
List<DataMap> mbrWithDrawalList = new ArrayList<DataMap>();
if (vo.getJoinMthCd() != null) {
mbrWithDrawalList = service.selectBOMbrwithdrawalSnsSearchEmail(vo);
} else {
mbrWithDrawalList = service.selectBOMbrwithdrawalSearchEmail(vo);
}
content.put("mbrWithDrawalList", mbrWithDrawalList);
return ResponseEntity.ok(
WnbtResponse.builder()
.resBody(new WnbtResponseBody(content))
.build()
);
}
/** /**
* 기존 가입 여부 조회 * 기존 가입 여부 조회(휴대전화)
* @return * @return
*/ */
@Policy(AuthPolicy.PUBLIC) @Policy(AuthPolicy.PUBLIC)

View File

@@ -1810,6 +1810,113 @@
LIMIT 1 LIMIT 1
</select> </select>
<!--기존 가입 여부 조회 - Email -->
<select id="selectBOMbrwithdrawalSearchEmail"
parameterType="com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO" resultType="dataMap">
SELECT TGT.*
FROM (
SELECT GM.MBR_INNB,
GM.MBR_ID,
CAST(AES_DECRYPT(UNHEX(GEM.EMAIL_ADRES) , #{secretKey}) AS CHAR(50)) AS EMAIL_ADRES,
SHOP.SOPMAL_NM AS BRAND,
FN_GET_COMMCODE_NAME('EXTRL_INTRLCK_DV', GEM.EXTRL_INTRLCK_DV_CD) EXTRL_INTRLCK_DV,
CASE WHEN GM.MNGR_LOG LIKE '%휴면해제%' THEN 2 ELSE 1 END IS_HM,
GMS.LAST_PURCHS_DT,
GMS.LAST_LOGIN_DT,
CASE WHEN (GM.MBR_ID LIKE 'M-%' OR REGEXP_LIKE(GM.MBR_ID,'kko[0-9]{10}') OR GM.MBR_ID LIKE '%@%')
THEN CASE WHEN GM.MNGR_LOG LIKE '%휴면해제%' THEN 4 -- SNS 가입 AND 휴면인적이 있던 회원
ELSE 3 -- SNS 가입 AND 휴면인적이 없던 회원
END
ELSE CASE WHEN GM.MNGR_LOG LIKE '%휴면해제%' THEN 2 -- 사이트 가입 AND 휴면인적이 있던 회원
ELSE 1 -- 사이트 가입 AND 휴면인적이 없던 회원
END
END DEV,
RANK() OVER (PARTITION BY GM.MBR_NM, GM.MBTLNB
ORDER BY (CASE WHEN (GM.MBR_ID LIKE 'M-%' OR REGEXP_LIKE(GM.MBR_ID,'kko[0-9]{10}') OR GM.MBR_ID LIKE '%@%')
THEN CASE WHEN GM.MNGR_LOG LIKE '%휴면해제%' THEN 4
ELSE 3
END
ELSE CASE WHEN GM.MNGR_LOG LIKE '%휴면해제%' THEN 2
ELSE 1
END
END),
GMS.LAST_PURCHS_DT DESC, GMS.LAST_LOGIN_DT DESC, GMS.MBR_INNB DESC
) AS RK
FROM GC_MEMBER GM
INNER JOIN GC_MEMBER_SITE GMS
ON GM.MBR_INNB = GMS.MBR_INNB
AND GM.MBR_DV_CD = GMS.MBR_DV_CD
LEFT JOIN GC_EXTRL_MEMBER GEM
ON GMS.MBR_INNB = GEM.MBR_INNB
AND GMS.MBR_DV_CD = GEM.MBR_DV_CD
AND GMS.SOPMAL_CD = GEM.SOPMAL_CD
LEFT JOIN GC_SHOP SHOP
ON GMS.SOPMAL_CD = SHOP.SOPMAL_CD
WHERE 1 = 1
AND GM.USE_AT = 'Y'
AND GM.MBR_DV_CD = #{mbrDvCd}
AND GM.MBR_NM = #{mbrNm}
AND GM.EMAIL = HEX(AES_ENCRYPT(#{email}, #{secretKey}))
) TGT
WHERE 1 = 1
AND NOT (EXTRL_INTRLCK_DV IS NULL AND DEV >= 3)
ORDER BY DEV, RK
</select>
<!--기존 가입 여부 조회(SNS) - Email -->
<select id="selectBOMbrwithdrawalSnsSearchEmail"
parameterType="com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO" resultType="dataMap">
SELECT TGT.*
FROM (
SELECT GM.MBR_INNB,
GM.MBR_ID,
CAST(AES_DECRYPT(UNHEX(GEM.EMAIL_ADRES) , #{secretKey}) AS CHAR(50)) AS EMAIL_ADRES,
SHOP.SOPMAL_NM AS BRAND,
FN_GET_COMMCODE_NAME('EXTRL_INTRLCK_DV', GEM.EXTRL_INTRLCK_DV_CD) EXTRL_INTRLCK_DV,
CASE WHEN GM.MNGR_LOG LIKE '%휴면해제%' THEN 2 ELSE 1 END IS_HM,
GMS.LAST_PURCHS_DT,
GMS.LAST_LOGIN_DT,
CASE WHEN (GM.MBR_ID LIKE 'M-%' OR REGEXP_LIKE(GM.MBR_ID,'kko[0-9]{10}') OR GM.MBR_ID LIKE '%@%')
THEN CASE WHEN GM.MNGR_LOG LIKE '%휴면해제%' THEN 4 -- SNS 가입 AND 휴면인적이 있던 회원
ELSE 3 -- SNS 가입 AND 휴면인적이 없던 회원
END
ELSE CASE WHEN GM.MNGR_LOG LIKE '%휴면해제%' THEN 2 -- 사이트 가입 AND 휴면인적이 있던 회원
ELSE 1 -- 사이트 가입 AND 휴면인적이 없던 회원
END
END DEV,
RANK() OVER (PARTITION BY GM.MBR_NM, GM.MBTLNB
ORDER BY (CASE WHEN (GM.MBR_ID LIKE 'M-%' OR REGEXP_LIKE(GM.MBR_ID,'kko[0-9]{10}') OR GM.MBR_ID LIKE '%@%')
THEN CASE WHEN GM.MNGR_LOG LIKE '%휴면해제%' THEN 4
ELSE 3
END
ELSE CASE WHEN GM.MNGR_LOG LIKE '%휴면해제%' THEN 2
ELSE 1
END
END),
GMS.LAST_PURCHS_DT DESC, GMS.LAST_LOGIN_DT DESC, GMS.MBR_INNB DESC
) AS RK
FROM GC_MEMBER GM
INNER JOIN GC_MEMBER_SITE GMS
ON GM.MBR_INNB = GMS.MBR_INNB
AND GM.MBR_DV_CD = GMS.MBR_DV_CD
LEFT JOIN GC_EXTRL_MEMBER GEM
ON GMS.MBR_INNB = GEM.MBR_INNB
AND GMS.MBR_DV_CD = GEM.MBR_DV_CD
AND GMS.SOPMAL_CD = GEM.SOPMAL_CD
LEFT JOIN GC_SHOP SHOP
ON GMS.SOPMAL_CD = SHOP.SOPMAL_CD
WHERE 1 = 1
AND GM.USE_AT = 'Y'
AND GM.MBR_DV_CD = #{mbrDvCd}
AND GM.MBR_NM = #{mbrNm}
AND GM.EMAIL = HEX(AES_ENCRYPT(#{email}, #{secretKey}))
) TGT
WHERE 1 = 1
AND NOT (EXTRL_INTRLCK_DV IS NULL AND DEV >= 3)
ORDER BY DEV, RK
LIMIT 1
</select>
<!--동의 약정 조회 --> <!--동의 약정 조회 -->
<select id="selectBOJoinAgreeTermsForm" <select id="selectBOJoinAgreeTermsForm"
parameterType="com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO" resultType="dataMap"> parameterType="com.wb.domainserver.domain.gcone.mbr.mbr.vo.BOMbrVO" resultType="dataMap">
@@ -1873,15 +1980,6 @@
MBR_ID, MBR_ID,
JOIN_MTH_CD, JOIN_MTH_CD,
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(joinMthCd)"> <if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(joinMthCd)">
ZIP,
ADRES_DV,
<if test="adresDv == '01'">
RNM_ADRES,
</if>
<if test="adresDv == '02'">
LNB_ADRES,
</if>
DTL_ADRES,
PASSWORD_CHNG_DE, PASSWORD_CHNG_DE,
</if> </if>
MBR_PASSWORD, MBR_PASSWORD,
@@ -1912,10 +2010,6 @@
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(joinMthCd)"> <if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(joinMthCd)">
#{mbrId}, #{mbrId},
'none', 'none',
#{zip},
#{adresDv},
#{lnbAdres},
#{dtlAdres},
SYSDATE(), SYSDATE(),
</if> </if>
#{mbrPassword}, #{mbrPassword},

View File

@@ -28,20 +28,22 @@
$(document).ready(function() { $(document).ready(function() {
fn_set_birthYears(); fn_set_birthYears();
fn_set_birthMonths(); fn_set_birthMonths();
fn_show_phoneAuth(); fn_show_emailAuth();
// fn_show_phoneAuth();
fn_check_stplat(); fn_check_stplat();
first = 0; first = 0;
$(".signUp__inputBox__alertText").hide(); $(".signUp__inputBox__alertText").hide();
fn_alert_hide($("#mbrNm"), $("#mbrNmAlert")); fn_alert_hide($("#mbrNm"), $("#mbrNmAlert"));
fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert")); // fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert"));
fn_alert_hide($("#email"), $("#mbrEmailAlert"));
fn_alert_hide($("#mbtlCert"), $("#mbtlCertAlert")); fn_alert_hide($("#mbtlCert"), $("#mbtlCertAlert"));
fn_alert_hide($("#mbrId"), $("#mbrIdAlert"), 'id'); fn_alert_hide($("#mbrId"), $("#mbrIdAlert"), 'id');
fn_alert_hide($("#mbrPassword"), $("#mbrPasswordAlert"), 'pw'); fn_alert_hide($("#mbrPassword"), $("#mbrPasswordAlert"), 'pw');
fn_alert_hide($("#mbrPasswordChk"), $("#mbrPasswordChkAlert"), 'pw'); fn_alert_hide($("#mbrPasswordChk"), $("#mbrPasswordChkAlert"), 'pw');
fn_alert_hide($("#id"), $("#emailAlert")); // fn_alert_hide($("#id"), $("#emailAlert"));
fn_alert_hide($('input[name="sex"]'), $("#sexAlert")); fn_alert_hide($('input[name="sex"]'), $("#sexAlert"));
fn_alert_hide($("#dtlAdres"), $("#postcodeAlert")); // fn_alert_hide($("#dtlAdres"), $("#postcodeAlert"));
fn_alert_hide_selected(); fn_alert_hide_selected();
$('#regForm').on('keydown', function(e) { $('#regForm').on('keydown', function(e) {
@@ -51,17 +53,20 @@
}); });
$('#mbrNm').on('keydown', function(e) { $('#mbrNm').on('keydown', function(e) {
if (e.keyCode == 13) { if (e.keyCode == 13) {
$('#phoneAuthBtn').click(); $('#emailAuthBtn').click();
// $('#phoneAuthBtn').click();
} }
}); });
$('#mbtlnb').on('keydown', function(e) { $('#mbtlnb').on('keydown', function(e) {
if (e.keyCode == 13) { if (e.keyCode == 13) {
$('#phoneAuthBtn').click(); $('#emailAuthBtn').click();
// $('#phoneAuthBtn').click();
} }
}); });
$('#mbtlCert').on('keydown', function(e) { $('#mbtlCert').on('keydown', function(e) {
if (e.keyCode == 13) { if (e.keyCode == 13) {
fn_confim_own(); fn_confim_own_email();
// fn_confim_own();
} }
}); });
$('#mbrId').on('keydown', function(e) { $('#mbrId').on('keydown', function(e) {
@@ -184,12 +189,12 @@
/* ******************************************************** /* ********************************************************
* 우편번호 찾기 * 우편번호 찾기
******************************************************** */ ******************************************************** */
const fn_set_postcode = function(_data) { // const fn_set_postcode = function(_data) {
//
$('#adresDv').val(_data.addressType) // $('#adresDv').val(_data.addressType)
$('#postcode').val(_data.postcode); // $('#postcode').val(_data.postcode);
$('#address').val(_data.addressType == '01' ? _data.roadAddress : _data.jibunAddress); // $('#address').val(_data.addressType == '01' ? _data.roadAddress : _data.jibunAddress);
} // }
/* ******************************************************** /* ********************************************************
* 생년 콤보박스 * 생년 콤보박스
@@ -251,11 +256,72 @@
seconds--; seconds--;
} else { } else {
fn_stop_timer(); fn_stop_email_timer();
// fn_stop_timer();
alert('인증번호 유효시간이 만료되었습니다.'); alert('인증번호 유효시간이 만료되었습니다.');
} }
} }
/* ********************************************************
* 이메일 인증 번호 발송
******************************************************** */
first = 0;
mbtlCert = '';
const fn_email_sending_number = function() {
if(timerRunning){
return;
}
if(mbtlCert === $('#email').val()){
first++;
}else{
first = 0;
}
mbtlCert = $('#email').val();
let mbrNm = $('#mbrNm').val();
let mbrEmail = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': mbrEmail
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/insertEmailAuth"/>',
data : params,
dataType: 'json',
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
if (first > 0) {
alert('인증번호가 재발송되었습니다.');
} else if (first === 0) {
alert('인증번호가 발송되었습니다.');
first++;
} else {
return;
}
$('#sndngInnb').val(result.sndngInnb);
}else {
alert('인증번호 발송에 실패했습니다.');
fn_stop_email_timer();
return;
}
}
});
$('#mbrNm').attr("readonly", true);
$('#email').attr("readonly", true);
clearInterval(countdown);
seconds = 180;
fn_set_timeOut();
countdown = setInterval(fn_set_timeOut, 1000);
timerRunning = true;
}
/* ******************************************************** /* ********************************************************
* 휴대폰 인증 번호 발송 * 휴대폰 인증 번호 발송
******************************************************** */ ******************************************************** */
@@ -316,6 +382,22 @@
timerRunning = true; timerRunning = true;
} }
/* ********************************************************
* 타이머 정지 함수 (이메일)
******************************************************** */
const fn_stop_email_timer = function() {
if (timerRunning) {
clearInterval(countdown);
$('#timer').text('05:00');
$('#mbtlCert').val('');
$('#emailAuthContent').hide();
$('#mbrNm').attr("readonly", false);
$('#email').attr("readonly", false);
timerRunning = false;
}
}
/* ******************************************************** /* ********************************************************
* 타이머 정지 함수 * 타이머 정지 함수
******************************************************** */ ******************************************************** */
@@ -332,6 +414,52 @@
} }
} }
/* ********************************************************
* 이메일 인증 확인
******************************************************** */
isChkd_own_email = false;
const fn_confim_own_email = function() {
if (first <= 0) return;
let sndngInnb = $('#sndngInnb').val();
let mbrEmail = $('#email').val().trim();
let crtnb = $('#mbtlCert').val();
fn_stop_email_timer();
let params = {
'sndngInnb': sndngInnb,
'email': mbrEmail,
'crtnb' : crtnb
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectEmailAuth"/>',
data : params,
dataType: 'json',
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
alert('인증되었습니다.');
$('#emailAuthOkBtn').show();
$('#emailAuthBtn').hide();
isChkd_own_email = true;
//TODO : 메서드명 변경 필요 탈퇴회원 → 기존가입여부
fn_check_mbrwithdrawal_email();
$('#mbrNm').attr("readonly", true);
$('#email').attr("readonly", true);
}else {
alert('인증번호가 일치하지 않습니다.');
return;
}
}
});
}
/* ******************************************************** /* ********************************************************
* 휴대폰 인증 확인 * 휴대폰 인증 확인
******************************************************** */ ******************************************************** */
@@ -378,6 +506,33 @@
} }
/* ********************************************************
* 기존 가입 여부 조회 (이메일)
******************************************************** */
const fn_check_mbrwithdrawal_email = function() {
let mbrNm = $('#mbrNm').val().trim();
$('#mbrNm').val(mbrNm);
let mbrEmail = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': mbrEmail
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectMbrwithdrawalSearchEmail"/>',
data : params,
dataType: 'json',
success : function(result) {
let mbrWithDrawalList = JSON.parse(result.resBody.result).mbrWithDrawalList;
fn_make_rejoinInforList(mbrWithDrawalList);
}
});
}
/* ******************************************************** /* ********************************************************
* 기존 가입 여부 조회 * 기존 가입 여부 조회
******************************************************** */ ******************************************************** */
@@ -470,9 +625,11 @@
return; return;
}; };
if (!isChkd_own) { if (!isChkd_own_email) {
alert('휴대폰 인증을 해주세요.'); alert('이메일 인증을 해주세요.');
$('#mbtlnb').focus(); $('#email').focus();
// alert('휴대폰 인증을 해주세요.');
// $('#mbtlnb').focus();
fn_regist_fail(); fn_regist_fail();
return; return;
} }
@@ -489,12 +646,12 @@
return; return;
} }
if(!fn_check_email()) { // if(!fn_check_email()) {
alert('올바른 이메일 형식이 아닙니다.'); // alert('올바른 이메일 형식이 아닙니다.');
$('#id').focus(); // $('#id').focus();
fn_regist_fail(); // fn_regist_fail();
return; // return;
} // }
if ($('#select-brthYear').val() == null || $('#select-Month').val() == null) { if ($('#select-brthYear').val() == null || $('#select-Month').val() == null) {
alert('생년월을 선택해 주세요.'); alert('생년월을 선택해 주세요.');
@@ -512,27 +669,27 @@
return; return;
} }
if ($('#postcode').val().trim() == '' || $('#address').val().trim() == '') { // if ($('#postcode').val().trim() == '' || $('#address').val().trim() == '') {
alert('우편번호를 선택해 주세요.'); // alert('우편번호를 선택해 주세요.');
$("#postcodeAlert").show(); // $("#postcodeAlert").show();
document.getElementById('postcodeBtn').scrollIntoView(); // document.getElementById('postcodeBtn').scrollIntoView();
fn_regist_fail(); // fn_regist_fail();
return; // return;
} // }
if ($('#dtlAdres').val().trim() == '') { // if ($('#dtlAdres').val().trim() == '') {
alert('상세주소를 입력해 주세요.'); // alert('상세주소를 입력해 주세요.');
$('#dtlAdres').focus(); // $('#dtlAdres').focus();
fn_regist_fail(); // fn_regist_fail();
return; // return;
} // }
if(!confirm('회원가입을 <spring:message code="confirm.common.predicate"/>')){ if(!confirm('회원가입을 <spring:message code="confirm.common.predicate"/>')){
fn_regist_fail(); fn_regist_fail();
return; return;
} }
fn_make_brthDe(); fn_make_brthDe();
fn_make_mbtlnb(); // fn_make_mbtlnb();
let params = $('#regForm').serialize(); let params = $('#regForm').serialize();
$.ajax({ $.ajax({
@@ -613,6 +770,32 @@
} }
} }
/* ********************************************************
* 이메일 인증 버튼 클릭시, 이메일 인증 박스 노출
******************************************************** */
const fn_show_emailAuth = function() {
let emailAuthBtn = $('#emailAuthBtn');
let emailAuthContent = $('#emailAuthContent');
emailAuthContent.hide();
emailAuthBtn.click(function () {
if(!$('#mbrNm').val()){
alert('이름을 입력해 주세요.');
$('#mbrNm').focus();
return;
}else if(!$('#email').val()){
alert('이메일 주소를 입력해 주세요.');
$('#email').focus();
return;
}
$('#emailAuthContent').show();
$('#mbtlCert').focus();
fn_email_sending_number();
});
}
/* ******************************************************** /* ********************************************************
* 휴대폰 인증 버튼 클릭시, 휴대폰 인증 박스 노출 * 휴대폰 인증 버튼 클릭시, 휴대폰 인증 박스 노출
******************************************************** */ ******************************************************** */
@@ -714,45 +897,45 @@
* 앱 환경을 검증하고 우편번호 버튼 함수를 변경하는 함수 * 앱 환경을 검증하고 우편번호 버튼 함수를 변경하는 함수
*******************************************************/ *******************************************************/
function initPostcodeInterface() { function initPostcodeInterface() {
// 앱 환경에서 사용할 모바일용 함수명 정의 // // 앱 환경에서 사용할 모바일용 함수명 정의
const MOBILE_POSTCODE_FUNCTION = "fn_select_postcode_app"; // const MOBILE_POSTCODE_FUNCTION = "fn_select_postcode_app";
//
// 앱 인터페이스 초기화 확인 // // 앱 인터페이스 초기화 확인
if (window.app) { // if (window.app) {
console.log("앱 환경 감지됨, 우편번호 함수 변경"); // console.log("앱 환경 감지됨, 우편번호 함수 변경");
changePostcodeFunction(MOBILE_POSTCODE_FUNCTION); // changePostcodeFunction(MOBILE_POSTCODE_FUNCTION);
} else { // } else {
console.log("앱 인터페이스를 기다리는 중..."); // console.log("앱 인터페이스를 기다리는 중...");
let checkCount = 0; // let checkCount = 0;
const maxChecks = 10; // 최대 5초(500ms * 10)까지 시도 // const maxChecks = 10; // 최대 5초(500ms * 10)까지 시도
const checkInterval = setInterval(function() { // const checkInterval = setInterval(function() {
checkCount++; // checkCount++;
if (window.app) { // if (window.app) {
clearInterval(checkInterval); // clearInterval(checkInterval);
console.log("앱 인터페이스 초기화 완료, 우편번호 함수 변경"); // console.log("앱 인터페이스 초기화 완료, 우편번호 함수 변경");
changePostcodeFunction(MOBILE_POSTCODE_FUNCTION); // changePostcodeFunction(MOBILE_POSTCODE_FUNCTION);
} else if (checkCount >= maxChecks) { // } else if (checkCount >= maxChecks) {
clearInterval(checkInterval); // clearInterval(checkInterval);
console.warn("앱 인터페이스를 찾을 수 없습니다. 최대 시도 횟수 초과."); // console.warn("앱 인터페이스를 찾을 수 없습니다. 최대 시도 횟수 초과.");
} // }
}, 500); // }, 500);
} // }
} }
/******************************************************* /*******************************************************
* 우편번호 버튼의 onclick 함수를 변경하는 함수 * 우편번호 버튼의 onclick 함수를 변경하는 함수
*******************************************************/ *******************************************************/
function changePostcodeFunction(newFunctionName) { // function changePostcodeFunction(newFunctionName) {
console.log("changePostcodeFunction 호출"); // console.log("changePostcodeFunction 호출");
console.log("newFunctionName: " + newFunctionName); // console.log("newFunctionName: " + newFunctionName);
const postcodeBtn = document.getElementById('postcodeBtn'); // const postcodeBtn = document.getElementById('postcodeBtn');
if (postcodeBtn) { // if (postcodeBtn) {
postcodeBtn.setAttribute('onclick', newFunctionName + '(fn_set_postcode);'); // postcodeBtn.setAttribute('onclick', newFunctionName + '(fn_set_postcode);');
console.log('우편번호 버튼 함수가' + newFunctionName + '으로 변경되었습니다.'); // console.log('우편번호 버튼 함수가' + newFunctionName + '으로 변경되었습니다.');
} else { // } else {
console.warn('우편번호 버튼을 찾을 수 없습니다.'); // console.warn('우편번호 버튼을 찾을 수 없습니다.');
} // }
} // }
// 페이지 로드 시 함수 실행 // 페이지 로드 시 함수 실행
document.addEventListener('DOMContentLoaded', initPostcodeInterface); document.addEventListener('DOMContentLoaded', initPostcodeInterface);
@@ -801,25 +984,49 @@
<input type="text" class="input-text full" name="mbrNm" id="mbrNm" title="이름" placeholder="이름을 입력해 주세요."> <input type="text" class="input-text full" name="mbrNm" id="mbrNm" title="이름" placeholder="이름을 입력해 주세요.">
<p class="signUp__inputBox__alertText" id="mbrNmAlert">이름을 입력해 주세요.</p> <p class="signUp__inputBox__alertText" id="mbrNmAlert">이름을 입력해 주세요.</p>
</div> </div>
<%-- <div class="signUp__inputBox__item">--%>
<%-- <div class="signUp__inputBox__itemTitle">휴대전화<span class="required-asterisk">*</span></div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <input type="text" class="input-text full number" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 (’-’ 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13">--%>
<%-- <input type="hidden" name="mbtlnb">--%>
<%-- <button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button>--%>
<%-- <!-- 인증완료시 버튼 -->--%>
<%-- <button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>--%>
<%-- </div>--%>
<%-- <p class="signUp__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p>--%>
<%-- <div class="phoneAuth" id="phoneAuthContent">--%>
<%-- <input type="hidden" id="sndngInnb">--%>
<%-- <div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <div class="inputTimer">--%>
<%-- <input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">--%>
<%-- <span class="inputTimer__time" id="timer">03:00</span>--%>
<%-- </div>--%>
<%-- <button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button>--%>
<%-- </div>--%>
<%-- <p class="signUp__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </div>--%>
<div class="signUp__inputBox__item"> <div class="signUp__inputBox__item">
<div class="signUp__inputBox__itemTitle">휴대전화<span class="required-asterisk">*</span></div> <div class="signUp__inputBox__itemTitle">이메일<span class="required-asterisk">*</span></div>
<div class="inputWithBtn"> <div class="inputWithBtn">
<input type="text" class="input-text full number" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 (’-’ 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13"> <input type="text" class="input-text full certInp" id="email" title="이메일" placeholder="이메일을 입력해주세요" maxlength="190">
<input type="hidden" name="mbtlnb"> <input type="hidden" name="email">
<button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button> <button type="button" class="btn md theme outline" id="emailAuthBtn"><spring:message code="button.certificationEmail"/></button>
<!-- 인증완료시 버튼 --> <!-- 인증완료시 버튼 -->
<button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button> <button type="button" class="btn md outline" id="emailAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>
</div> </div>
<p class="signUp__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p> <p class="signUp__inputBox__alertText" id="mbrEmailAlert">이메일을 입력해 주세요.</p>
<div class="phoneAuth" id="phoneAuthContent"> <div class="emailAuth" id="emailAuthContent">
<input type="hidden" id="sndngInnb"> <input type="hidden" id="sndngInnb">
<div> <div>
<div class="inputWithBtn"> <div class="inputWithBtn">
<div class="inputTimer"> <div class="inputTimer">
<input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6"> <input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">
<span class="inputTimer__time" id="timer">03:00</span> <span class="inputTimer__time" id="timer">05:00</span>
</div> </div>
<button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button> <button type="button" class="btn md gray" onclick="fn_confim_own_email();"><spring:message code="button.ok"/></button>
</div> </div>
<p class="signUp__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p> <p class="signUp__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>
</div> </div>
@@ -868,24 +1075,24 @@
<input type="password" class="input-text full" name="mbrPasswordChk" id="mbrPasswordChk" title="비밀번호 확인" placeholder="비밀번호를 한번 더 입력해주세요." maxlength="20"> <input type="password" class="input-text full" name="mbrPasswordChk" id="mbrPasswordChk" title="비밀번호 확인" placeholder="비밀번호를 한번 더 입력해주세요." maxlength="20">
<p class="signUp__inputBox__alertText" id="mbrPasswordChkAlert">비밀번호를 입력해 주세요.</p> <p class="signUp__inputBox__alertText" id="mbrPasswordChkAlert">비밀번호를 입력해 주세요.</p>
</div> </div>
<div class="signUp__inputBox__item"> <%-- <div class="signUp__inputBox__item">--%>
<div class="signUp__inputBox__itemTitle">이메일<span class="required-asterisk">*</span> <%-- <div class="signUp__inputBox__itemTitle">이메일<span class="required-asterisk">*</span>--%>
<input type="hidden" name="email" value=""/> <%-- <input type="hidden" name="email" value=""/>--%>
</div> <%-- </div>--%>
<div class="inputEmail"> <%-- <div class="inputEmail">--%>
<input class="input-text full" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="25"> <%-- <input class="input-text full" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="25">--%>
<span class="inputEmail__at">@</span> <%-- <span class="inputEmail__at">@</span>--%>
<input class="input-text full" type="text" id="domain" title="이메일 domain" maxlength="25"> <%-- <input class="input-text full" type="text" id="domain" title="이메일 domain" maxlength="25">--%>
<div class="select-box"> <%-- <div class="select-box">--%>
<select name="domain" title="이메일 자동발송 발신주소" onchange="fn_set_domain(this.value);"> <%-- <select name="domain" title="이메일 자동발송 발신주소" onchange="fn_set_domain(this.value);">--%>
<c:forEach var="cgn001" items="${resultMap.cgn001}" varStatus="status"> <%-- <c:forEach var="cgn001" items="${resultMap.cgn001}" varStatus="status">--%>
<option value="${cgn001.cdNm}" ${f:setSelected(cgn001.cd, '99')}><c:out value="${cgn001.cdNm}"/></option> <%-- <option value="${cgn001.cdNm}" ${f:setSelected(cgn001.cd, '99')}><c:out value="${cgn001.cdNm}"/></option>--%>
</c:forEach> <%-- </c:forEach>--%>
</select> <%-- </select>--%>
</div> <%-- </div>--%>
</div> <%-- </div>--%>
<p class="signUp__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p> <%-- <p class="signUp__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>--%>
</div> <%-- </div>--%>
<div class="signUp__inputBox__item"> <div class="signUp__inputBox__item">
<div class="signUp__inputBox__itemTitle">생년월<span class="required-asterisk">*</span></div> <div class="signUp__inputBox__itemTitle">생년월<span class="required-asterisk">*</span></div>
<div class="inputHalf"> <div class="inputHalf">
@@ -909,19 +1116,19 @@
</div> </div>
<p class="signUp__inputBox__alertText" id="sexAlert">성별을 선택해 주세요.</p> <p class="signUp__inputBox__alertText" id="sexAlert">성별을 선택해 주세요.</p>
</div> </div>
<div class="signUp__inputBox__item"> <%-- <div class="signUp__inputBox__item">--%>
<div class="signUp__inputBox__itemTitle">주소<span class="required-asterisk">*</span></div> <%-- <div class="signUp__inputBox__itemTitle">주소<span class="required-asterisk">*</span></div>--%>
<div class="inputAddress"> <%-- <div class="inputAddress">--%>
<div class="inputAddress__postalCode"> <%-- <div class="inputAddress__postalCode">--%>
<input type="text" class="input-text" id="postcode" name="zip" title="우편번호" placeholder="우편번호" readonly> <%-- <input type="text" class="input-text" id="postcode" name="zip" title="우편번호" placeholder="우편번호" readonly>--%>
<button type="button" id="postcodeBtn" class="btn md theme outline" onclick="fn_select_postcode(fn_set_postcode);"><spring:message code="button.zipcode"/></button> <%-- <button type="button" id="postcodeBtn" class="btn md theme outline" onclick="fn_select_postcode(fn_set_postcode);"><spring:message code="button.zipcode"/></button>--%>
</div> <%-- </div>--%>
<input type="text" class="input-text full" id="address" name="lnbAdres" title="주소" placeholder="주소" readonly> <%-- <input type="text" class="input-text full" id="address" name="lnbAdres" title="주소" placeholder="주소" readonly>--%>
<input type="text" class="input-text full" id="dtlAdres" name="dtlAdres" title="상세주소" placeholder="나머지 주소를 입력해 주세요."> <%-- <input type="text" class="input-text full" id="dtlAdres" name="dtlAdres" title="상세주소" placeholder="나머지 주소를 입력해 주세요.">--%>
<input type="hidden" id="adresDv" name="adresDv"> <%-- <input type="hidden" id="adresDv" name="adresDv">--%>
</div> <%-- </div>--%>
<p class="signUp__inputBox__alertText" id="postcodeAlert">주소를 입력해 주세요.</p> <%-- <p class="signUp__inputBox__alertText" id="postcodeAlert">주소를 입력해 주세요.</p>--%>
</div> <%-- </div>--%>
</div> </div>
<div class="signUp__btnContainer-half"> <div class="signUp__btnContainer-half">
<button type="button" class="btn xl full outline signUp__signUpBtn" onclick="fn_move_mainPage();"><spring:message code="button.cancel"/></button> <button type="button" class="btn xl full outline signUp__signUpBtn" onclick="fn_move_mainPage();"><spring:message code="button.cancel"/></button>

View File

@@ -75,7 +75,7 @@
<div class="signUp__btnContainer-half"> <div class="signUp__btnContainer-half">
<a href="<c:url value='/index'/>" class="btn xl full theme">쇼핑하러 가기</a> <a href="<c:url value='/index'/>" class="btn xl full theme">쇼핑하러 가기</a>
<c:if test="${!isAuthenticated}"> <c:if test="${!isAuthenticated}">
<a href="<c:url value='/login'/>" class="btn xl full theme">로그인</a> <a href="<c:url value='/sopmal/login'/>" class="btn xl full theme">로그인</a>
</c:if> </c:if>
</div> </div>
</div> </div>

View File

@@ -27,20 +27,22 @@
fn_set_header_title("회원가입"); fn_set_header_title("회원가입");
fn_set_birthYears(); fn_set_birthYears();
fn_set_birthMonths(); fn_set_birthMonths();
fn_show_phoneAuth(); fn_show_emailAuth();
// fn_show_phoneAuth();
fn_check_stplat(); fn_check_stplat();
first = 0; first = 0;
$(".userForm__inputBox__alertText").hide(); $(".userForm__inputBox__alertText").hide();
fn_alert_hide($("#mbrNm"), $("#mbrNmAlert")); fn_alert_hide($("#mbrNm"), $("#mbrNmAlert"));
fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert")); // fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert"));
fn_alert_hide($("#email"), $("#mbrEmailAlert"));
fn_alert_hide($("#mbtlCert"), $("#mbtlCertAlert")); fn_alert_hide($("#mbtlCert"), $("#mbtlCertAlert"));
fn_alert_hide($("#mbrId"), $("#mbrIdAlert"), 'id'); fn_alert_hide($("#mbrId"), $("#mbrIdAlert"), 'id');
fn_alert_hide($("#mbrPassword"), $("#mbrPasswordAlert"), 'pw'); fn_alert_hide($("#mbrPassword"), $("#mbrPasswordAlert"), 'pw');
fn_alert_hide($("#mbrPasswordChk"), $("#mbrPasswordChkAlert"), 'pw'); fn_alert_hide($("#mbrPasswordChk"), $("#mbrPasswordChkAlert"), 'pw');
fn_alert_hide($("#id"), $("#emailAlert")); // fn_alert_hide($("#id"), $("#emailAlert"));
fn_alert_hide($('input[name="sex"]'), $("#sexAlert")); fn_alert_hide($('input[name="sex"]'), $("#sexAlert"));
fn_alert_hide($("#dtlAdres"), $("#postcodeAlert")); // fn_alert_hide($("#dtlAdres"), $("#postcodeAlert"));
fn_alert_hide_selected(); fn_alert_hide_selected();
$('button').on('click', function(e) { $('button').on('click', function(e) {
@@ -53,17 +55,20 @@
}); });
$('#mbrNm').on('keydown', function(e) { $('#mbrNm').on('keydown', function(e) {
if (e.keyCode == 13) { if (e.keyCode == 13) {
$('#phoneAuthBtn').click(); $('#emailAuthBtn').click();
// $('#phoneAuthBtn').click();
} }
}); });
$('#mbtlnb').on('keydown', function(e) { $('#mbtlnb').on('keydown', function(e) {
if (e.keyCode == 13) { if (e.keyCode == 13) {
$('#phoneAuthBtn').click(); $('#emailAuthBtn').click();
// $('#phoneAuthBtn').click();
} }
}); });
$('#mbtlCert').on('keydown', function(e) { $('#mbtlCert').on('keydown', function(e) {
if (e.keyCode == 13) { if (e.keyCode == 13) {
fn_confim_own(); fn_confim_own_email();
// fn_confim_own();
} }
}); });
$('#mbrId').on('keydown', function(e) { $('#mbrId').on('keydown', function(e) {
@@ -220,12 +225,12 @@
/* ******************************************************** /* ********************************************************
* 우편번호 찾기 * 우편번호 찾기
******************************************************** */ ******************************************************** */
const fn_set_postcode = function(_data) { // const fn_set_postcode = function(_data) {
//
$('#adresDv').val(_data.addressType) // $('#adresDv').val(_data.addressType)
$('#postcode').val(_data.postcode); // $('#postcode').val(_data.postcode);
$('#address').val(_data.addressType == '01' ? _data.roadAddress : _data.jibunAddress); // $('#address').val(_data.addressType == '01' ? _data.roadAddress : _data.jibunAddress);
} // }
/* ******************************************************** /* ********************************************************
* 생년 콤보박스 * 생년 콤보박스
@@ -287,11 +292,72 @@
seconds--; seconds--;
} else { } else {
fn_stop_timer(); fn_stop_email_timer();
// fn_stop_timer();
fn_alert_show('인증번호 유효시간이 만료되었습니다.'); fn_alert_show('인증번호 유효시간이 만료되었습니다.');
} }
} }
/* ********************************************************
* 이메일 인증 번호 발송
******************************************************** */
first = 0;
mbtlCert = '';
const fn_email_sending_number = function() {
if(timerRunning){
return;
}
if(mbtlCert === $('#email').val()){
first++;
}else{
first = 0;
}
mbtlCert = $('#email').val();
let mbrNm = $('#mbrNm').val();
let mbrEmail = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': mbrEmail
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/insertEmailAuth"/>',
data : params,
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
if (first > 0) {
fn_alert_show('인증번호가 재발송되었습니다.');
} else if (first === 0) {
fn_alert_show('인증번호가 발송되었습니다.');
first++;
} else {
return;
}
$('#sndngInnb').val(result.sndngInnb);
}else {
fn_alert_show('인증번호 발송에 실패했습니다.');
fn_stop_email_timer();
return;
}
}
});
$('#mbrNm').attr("readonly", true);
$('#email').attr("readonly", true);
clearInterval(countdown);
seconds = 180;
fn_set_timeOut();
countdown = setInterval(fn_set_timeOut, 1000);
timerRunning = true;
}
/* ******************************************************** /* ********************************************************
* 휴대폰 인증 번호 발송 * 휴대폰 인증 번호 발송
******************************************************** */ ******************************************************** */
@@ -352,6 +418,22 @@
timerRunning = true; timerRunning = true;
} }
/* ********************************************************
* 타이머 정지 함수 (이메일)
******************************************************** */
const fn_stop_email_timer = function() {
if (timerRunning) {
clearInterval(countdown);
$('#timer').text('05:00');
$('#mbtlCert').val('');
$('#emailAuthContent').hide();
$('#mbrNm').attr("readonly", false);
$('#email').attr("readonly", false);
timerRunning = false;
}
}
/* ******************************************************** /* ********************************************************
* 타이머 정지 함수 * 타이머 정지 함수
******************************************************** */ ******************************************************** */
@@ -368,6 +450,51 @@
} }
} }
/* ********************************************************
* 이메일 인증 확인
******************************************************** */
isChkd_own_email = false;
const fn_confim_own_email = function() {
if (first <= 0) return;
let sndngInnb = $('#sndngInnb').val();
let mbrEmail = $('#email').val().trim();
let crtnb = $('#mbtlCert').val();
fn_stop_email_timer();
let params = {
'sndngInnb': sndngInnb,
'email': mbrEmail,
'crtnb' : crtnb
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectEmailAuth"/>',
data : params,
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
fn_alert_show('인증되었습니다.');
$('#emailAuthOkBtn').show();
$('#emailAuthBtn').hide();
isChkd_own_email = true;
//TODO : 메서드명 변경 필요 탈퇴회원 → 기존가입여부
fn_check_mbrwithdrawal_email();
$('#mbrNm').attr("readonly", true);
$('#email').attr("readonly", true);
}else {
fn_alert_show('인증번호가 일치하지 않습니다.');
return;
}
}
});
}
/* ******************************************************** /* ********************************************************
* 휴대폰 인증 확인 * 휴대폰 인증 확인
******************************************************** */ ******************************************************** */
@@ -413,6 +540,32 @@
} }
/* ********************************************************
* 기존 가입 여부 조회 (이메일)
******************************************************** */
const fn_check_mbrwithdrawal_email = function() {
let mbrNm = $('#mbrNm').val().trim();
$('#mbrNm').val(mbrNm);
let mbrEmail = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': mbrEmail
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectMbrwithdrawalSearchEmail"/>',
data : params,
success : function(result) {
let mbrWithDrawalList = JSON.parse(result.resBody.result).mbrWithDrawalList;
fn_make_rejoinInforList(mbrWithDrawalList);
}
});
}
/* ******************************************************** /* ********************************************************
* 기존 가입 여부 조회 * 기존 가입 여부 조회
******************************************************** */ ******************************************************** */
@@ -473,7 +626,7 @@
snsMemberCnt = 0; snsMemberCnt = 0;
isExtMember = false; isExtMember = false;
// window.location.href = '<c:out value="${issuerUri}"/>/index'; // window.location.href = '<c:out value="${issuerUri}"/>/index';
// window.location.href = '/login'; // window.location.href = '/sopmal/login';
break; break;
} }
} }
@@ -487,7 +640,7 @@
} }
}); });
// window.location.href = '<c:out value="${issuerUri}"/>/index'; // window.location.href = '<c:out value="${issuerUri}"/>/index';
// window.location.href = '/login'; // window.location.href = '/sopmal/login';
} }
if (isExtMember) { if (isExtMember) {
fn_alert_show('인증되었습니다. 인증하신 정보로 가입된 계정 정보가 있습니다. 계정정보 연동을 진행합니다.'); fn_alert_show('인증되었습니다. 인증하신 정보로 가입된 계정 정보가 있습니다. 계정정보 연동을 진행합니다.');
@@ -506,9 +659,11 @@
return; return;
}; };
if(!isChkd_own) { if(!isChkd_own_email) {
$('#mbtlnb').focus(); alert('이메일 인증을 해주세요.');
fn_alert_show('휴대폰 인증을 해주세요.'); $('#email').focus();
// alert('휴대폰 인증을 해주세요.');
// $('#mbtlnb').focus();
fn_regist_fail(); fn_regist_fail();
return; return;
} }
@@ -525,12 +680,12 @@
return; return;
} }
if(!fn_check_email()) { // if(!fn_check_email()) {
$('#id').focus(); // $('#id').focus();
fn_alert_show('올바른 이메일 형식이 아닙니다.'); // fn_alert_show('올바른 이메일 형식이 아닙니다.');
fn_regist_fail(); // fn_regist_fail();
return; // return;
} // }
if ($('#select-brthYear').val() == null || $('#select-Month').val() == null) { if ($('#select-brthYear').val() == null || $('#select-Month').val() == null) {
document.getElementById('birthYear').scrollIntoView(); document.getElementById('birthYear').scrollIntoView();
@@ -548,27 +703,27 @@
return; return;
} }
if ($('#postcode').val().trim() == '' || $('#address').val().trim() == '') { // if ($('#postcode').val().trim() == '' || $('#address').val().trim() == '') {
document.getElementById('postcodeBtn').scrollIntoView(); // document.getElementById('postcodeBtn').scrollIntoView();
fn_alert_show('우편번호를 선택해 주세요.'); // fn_alert_show('우편번호를 선택해 주세요.');
$("#postcodeAlert").show(); // $("#postcodeAlert").show();
fn_regist_fail(); // fn_regist_fail();
return; // return;
} // }
if ($('#dtlAdres').val().trim() == '') { // if ($('#dtlAdres').val().trim() == '') {
$('#dtlAdres').focus(); // $('#dtlAdres').focus();
fn_alert_show('상세주소를 입력해 주세요.'); // fn_alert_show('상세주소를 입력해 주세요.');
fn_regist_fail(); // fn_regist_fail();
return; // return;
} // }
if(!confirm('회원가입을 <spring:message code="confirm.common.predicate"/>')){ if(!confirm('회원가입을 <spring:message code="confirm.common.predicate"/>')){
fn_regist_fail(); fn_regist_fail();
return; return;
} }
fn_make_brthDe(); fn_make_brthDe();
fn_make_mbtlnb(); // fn_make_mbtlnb();
let params = $('#regForm').serialize(); let params = $('#regForm').serialize();
$.ajax({ $.ajax({
@@ -646,6 +801,32 @@
} }
} }
/* ********************************************************
* 이메일 인증 버튼 클릭시, 이메일 인증 박스 노출
******************************************************** */
const fn_show_emailAuth = function() {
let emailAuthBtn = $('#emailAuthBtn');
let emailAuthContent = $('#emailAuthContent');
emailAuthContent.hide();
emailAuthBtn.click(function () {
if(!$('#mbrNm').val()){
$('#mbrNm').focus();
fn_alert_show('이름을 입력해 주세요.');
return;
}else if(!$('#email').val()){
$('#email').focus();
fn_alert_show('이메일 주소를 입력해 주세요.');
return;
}
$('#emailAuthContent').show();
$('#mbtlCert').focus();
fn_email_sending_number();
});
}
/* ******************************************************** /* ********************************************************
* 휴대폰 인증 버튼 클릭시, 휴대폰 인증 박스 노출 * 휴대폰 인증 버튼 클릭시, 휴대폰 인증 박스 노출
******************************************************** */ ******************************************************** */
@@ -766,44 +947,44 @@
*******************************************************/ *******************************************************/
function initPostcodeInterface() { function initPostcodeInterface() {
// 앱 환경에서 사용할 모바일용 함수명 정의 // 앱 환경에서 사용할 모바일용 함수명 정의
const MOBILE_POSTCODE_FUNCTION = "fn_select_postcode_app"; // const MOBILE_POSTCODE_FUNCTION = "fn_select_postcode_app";
//
// 앱 인터페이스 초기화 확인 // // 앱 인터페이스 초기화 확인
if (window.app) { // if (window.app) {
console.log("앱 환경 감지됨, 우편번호 함수 변경"); // console.log("앱 환경 감지됨, 우편번호 함수 변경");
changePostcodeFunction(MOBILE_POSTCODE_FUNCTION); // changePostcodeFunction(MOBILE_POSTCODE_FUNCTION);
} else { // } else {
console.log("앱 인터페이스를 기다리는 중..."); // console.log("앱 인터페이스를 기다리는 중...");
let checkCount = 0; // let checkCount = 0;
const maxChecks = 10; // 최대 5초(500ms * 10)까지 시도 // const maxChecks = 10; // 최대 5초(500ms * 10)까지 시도
const checkInterval = setInterval(function() { // const checkInterval = setInterval(function() {
checkCount++; // checkCount++;
if (window.app) { // if (window.app) {
clearInterval(checkInterval); // clearInterval(checkInterval);
console.log("앱 인터페이스 초기화 완료, 우편번호 함수 변경"); // console.log("앱 인터페이스 초기화 완료, 우편번호 함수 변경");
changePostcodeFunction(MOBILE_POSTCODE_FUNCTION); // changePostcodeFunction(MOBILE_POSTCODE_FUNCTION);
} else if (checkCount >= maxChecks) { // } else if (checkCount >= maxChecks) {
clearInterval(checkInterval); // clearInterval(checkInterval);
console.warn("앱 인터페이스를 찾을 수 없습니다. 최대 시도 횟수 초과."); // console.warn("앱 인터페이스를 찾을 수 없습니다. 최대 시도 횟수 초과.");
} // }
}, 500); // }, 500);
} // }
} }
/******************************************************* /*******************************************************
* 우편번호 버튼의 onclick 함수를 변경하는 함수 * 우편번호 버튼의 onclick 함수를 변경하는 함수
*******************************************************/ *******************************************************/
function changePostcodeFunction(newFunctionName) { // function changePostcodeFunction(newFunctionName) {
console.log("changePostcodeFunction 호출"); // console.log("changePostcodeFunction 호출");
console.log("newFunctionName: " + newFunctionName); // console.log("newFunctionName: " + newFunctionName);
const postcodeBtn = document.getElementById('postcodeBtn'); // const postcodeBtn = document.getElementById('postcodeBtn');
if (postcodeBtn) { // if (postcodeBtn) {
postcodeBtn.setAttribute('onclick', newFunctionName + '(fn_set_postcode);'); // postcodeBtn.setAttribute('onclick', newFunctionName + '(fn_set_postcode);');
console.log('우편번호 버튼 함수가' + newFunctionName + '으로 변경되었습니다.'); // console.log('우편번호 버튼 함수가' + newFunctionName + '으로 변경되었습니다.');
} else { // } else {
console.warn('우편번호 버튼을 찾을 수 없습니다.'); // console.warn('우편번호 버튼을 찾을 수 없습니다.');
} // }
} // }
// 페이지 로드 시 함수 실행 // 페이지 로드 시 함수 실행
document.addEventListener('DOMContentLoaded', initPostcodeInterface); document.addEventListener('DOMContentLoaded', initPostcodeInterface);
@@ -848,25 +1029,49 @@
<input type="text" class="input-text full" name="mbrNm" id="mbrNm" title="이름" placeholder="이름을 입력해 주세요."> <input type="text" class="input-text full" name="mbrNm" id="mbrNm" title="이름" placeholder="이름을 입력해 주세요.">
<p class="userForm__inputBox__alertText" id="mbrNmAlert">이름을 입력해 주세요.</p> <p class="userForm__inputBox__alertText" id="mbrNmAlert">이름을 입력해 주세요.</p>
</div> </div>
<%-- <div class="userForm__inputBox__item">--%>
<%-- <div class="userForm__inputBox__itemTitle">휴대전화<span class="required-asterisk">*</span></div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <input type="text" class="input-text full number" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 ('-' 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13">--%>
<%-- <input type="hidden" name="mbtlnb">--%>
<%-- <button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button>--%>
<%-- <!-- 인증완료시 버튼 -->--%>
<%-- <button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>--%>
<%-- </div>--%>
<%-- <p class="userForm__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p>--%>
<%-- <div class="phoneAuth" id="phoneAuthContent">--%>
<%-- <input type="hidden" id="sndngInnb">--%>
<%-- <div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <div class="inputTimer">--%>
<%-- <input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">--%>
<%-- <span class="inputTimer__time" id="timer">03:00</span>--%>
<%-- </div>--%>
<%-- <button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button>--%>
<%-- </div>--%>
<%-- <p class="userForm__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </div>--%>
<div class="userForm__inputBox__item"> <div class="userForm__inputBox__item">
<div class="userForm__inputBox__itemTitle">휴대전화<span class="required-asterisk">*</span></div> <div class="userForm__inputBox__itemTitle">이메일<span class="required-asterisk">*</span></div>
<div class="inputWithBtn"> <div class="inputWithBtn">
<input type="text" class="input-text full number" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 ('-' 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13"> <input type="text" class="input-text full certInp" id="email" title="이메일" placeholder="이메일을 입력해주세요" maxlength="190">
<input type="hidden" name="mbtlnb"> <input type="hidden" name="email">
<button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button> <button type="button" class="btn md theme outline" id="emailAuthBtn"><spring:message code="button.certificationEmail"/></button>
<!-- 인증완료시 버튼 --> <!-- 인증완료시 버튼 -->
<button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button> <button type="button" class="btn md outline" id="emailAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>
</div> </div>
<p class="userForm__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p> <p class="userForm__inputBox__alertText" id="mbrEmailAlert">이메일을 입력해 주세요.</p>
<div class="phoneAuth" id="phoneAuthContent"> <div class="emailAuth" id="emailAuthContent">
<input type="hidden" id="sndngInnb"> <input type="hidden" id="sndngInnb">
<div> <div>
<div class="inputWithBtn"> <div class="inputWithBtn">
<div class="inputTimer"> <div class="inputTimer">
<input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6"> <input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">
<span class="inputTimer__time" id="timer">03:00</span> <span class="inputTimer__time" id="timer">05:00</span>
</div> </div>
<button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button> <button type="button" class="btn md gray" onclick="fn_confim_own_email();"><spring:message code="button.ok"/></button>
</div> </div>
<p class="userForm__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p> <p class="userForm__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>
</div> </div>
@@ -915,16 +1120,16 @@
<input type="password" class="input-text full" name="mbrPasswordChk" id="mbrPasswordChk" title="비밀번호 확인" placeholder="비밀번호를 한번 더 입력해주세요." maxlength="20"> <input type="password" class="input-text full" name="mbrPasswordChk" id="mbrPasswordChk" title="비밀번호 확인" placeholder="비밀번호를 한번 더 입력해주세요." maxlength="20">
<p class="userForm__inputBox__alertText" id="mbrPasswordChkAlert">비밀번호를 입력해 주세요.</p> <p class="userForm__inputBox__alertText" id="mbrPasswordChkAlert">비밀번호를 입력해 주세요.</p>
</div> </div>
<div class="userForm__inputBox__item"> <%-- <div class="userForm__inputBox__item">--%>
<div class="userForm__inputBox__itemTitle">이메일<span class="required-asterisk">*</span> <%-- <div class="userForm__inputBox__itemTitle">이메일<span class="required-asterisk">*</span>--%>
<input type="hidden" name="email" value=""/> <%-- <input type="hidden" name="email" value=""/>--%>
</div> <%-- </div>--%>
<div class="emailInput"> <%-- <div class="emailInput">--%>
<input class="input-text full" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="40"> <%-- <input class="input-text full" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="40">--%>
<button class="emailInput__btn" role="button" data-micromodal-trigger="emailSelectPop" id="emailSelectBtn">직접입력</button> <%-- <button class="emailInput__btn" role="button" data-micromodal-trigger="emailSelectPop" id="emailSelectBtn">직접입력</button>--%>
</div> <%-- </div>--%>
<p class="userForm__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p> <%-- <p class="userForm__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>--%>
</div> <%-- </div>--%>
<div class="userForm__inputBox__item"> <div class="userForm__inputBox__item">
<div class="userForm__inputBox__itemTitle">생년월<span class="required-asterisk">*</span> <div class="userForm__inputBox__itemTitle">생년월<span class="required-asterisk">*</span>
<!--<span class="misc">(등록하시면 생일 쿠폰을 드립니다)</span> --> <!--<span class="misc">(등록하시면 생일 쿠폰을 드립니다)</span> -->
@@ -950,19 +1155,19 @@
</div> </div>
<p class="userForm__inputBox__alertText" id="sexAlert">성별을 선택해 주세요.</p> <p class="userForm__inputBox__alertText" id="sexAlert">성별을 선택해 주세요.</p>
</div> </div>
<div class="userForm__inputBox__item"> <%-- <div class="userForm__inputBox__item">--%>
<div class="userForm__inputBox__itemTitle">주소<span class="required-asterisk">*</span></div> <%-- <div class="userForm__inputBox__itemTitle">주소<span class="required-asterisk">*</span></div>--%>
<div class="inputAddress"> <%-- <div class="inputAddress">--%>
<div class="inputAddress__postalCode"> <%-- <div class="inputAddress__postalCode">--%>
<input type="text" class="input-text" id="postcode" name="zip" title="우편번호" placeholder="우편번호" readonly> <%-- <input type="text" class="input-text" id="postcode" name="zip" title="우편번호" placeholder="우편번호" readonly>--%>
<button type="button" id="postcodeBtn" class="btn md theme outline" onclick="fn_select_postcode(fn_set_postcode);"><spring:message code="button.zipcode"/></button> <%-- <button type="button" id="postcodeBtn" class="btn md theme outline" onclick="fn_select_postcode(fn_set_postcode);"><spring:message code="button.zipcode"/></button>--%>
</div> <%-- </div>--%>
<input type="text" class="input-text full" id="address" name="lnbAdres" title="주소" placeholder="주소" readonly> <%-- <input type="text" class="input-text full" id="address" name="lnbAdres" title="주소" placeholder="주소" readonly>--%>
<input type="text" class="input-text full" id="dtlAdres" name="dtlAdres" title="상세주소" placeholder="나머지 주소를 입력해 주세요."> <%-- <input type="text" class="input-text full" id="dtlAdres" name="dtlAdres" title="상세주소" placeholder="나머지 주소를 입력해 주세요.">--%>
<input type="hidden" id="adresDv" name="adresDv"> <%-- <input type="hidden" id="adresDv" name="adresDv">--%>
</div> <%-- </div>--%>
<p class="userForm__inputBox__alertText" id="postcodeAlert">주소를 입력해 주세요.</p> <%-- <p class="userForm__inputBox__alertText" id="postcodeAlert">주소를 입력해 주세요.</p>--%>
</div> <%-- </div>--%>
</div> </div>
<div class="bottomBtnControls"> <div class="bottomBtnControls">
<button id="registBtn" class="btn lg full theme" onclick="fn_regist_member();">회원가입</button> <button id="registBtn" class="btn lg full theme" onclick="fn_regist_member();">회원가입</button>

View File

@@ -79,7 +79,7 @@
<div class="bottomBtnControls bottomBtnControls--vertical"> <div class="bottomBtnControls bottomBtnControls--vertical">
<a href="<c:url value='/index'/>" class="btn xl full outline">쇼핑하러 가기</a> <a href="<c:url value='/index'/>" class="btn xl full outline">쇼핑하러 가기</a>
<c:if test="${!isAuthenticated}"> <c:if test="${!isAuthenticated}">
<a href="<c:url value='/login'/>" class="btn xl full theme">로그인</a> <a href="<c:url value='/sopmal/login'/>" class="btn xl full theme">로그인</a>
</c:if> </c:if>
</div> </div>
</div> </div>