diff --git a/.classpath b/.classpath index 3715aab0..f73ac5da 100644 --- a/.classpath +++ b/.classpath @@ -1,39 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/nlib/user/service/MemberService.java b/src/main/java/nlib/user/service/MemberService.java index ca3471de..02201f4a 100644 --- a/src/main/java/nlib/user/service/MemberService.java +++ b/src/main/java/nlib/user/service/MemberService.java @@ -31,7 +31,7 @@ public interface MemberService public DataApiResVO certificateMember(DataApiReqVO reqVO); - public void insertMemberInfo(NlibLoginVO vo) throws Exception; + public NlibLoginVO insertMemberInfo(NlibLoginVO vo) throws Exception; public DataApiResVO sendEmailForMemberJoining(DataApiReqVO reqVO); @@ -57,5 +57,11 @@ public interface MemberService public List selectAlreadySignUpMobile(NlibLoginVO loginVO) throws Exception; + public void insertMemberSite(MemberSiteVO msVO); + + public int selectMemberSiteCount(MemberSiteVO msVO); + + public int selectSnsIdCount(OAuthUniversalUser oauthUser); + } \ No newline at end of file diff --git a/src/main/java/nlib/user/service/MemberSiteVO.java b/src/main/java/nlib/user/service/MemberSiteVO.java new file mode 100644 index 00000000..613254ab --- /dev/null +++ b/src/main/java/nlib/user/service/MemberSiteVO.java @@ -0,0 +1,95 @@ +package nlib.user.service; + +import java.io.Serializable; +import java.util.Base64; + +import nlib.cmm.NlibCommonController; +import nlib.util.StringUtil; + +/** + *
+ * @Class Name : MemberSiteVO.java
+ * 
+ * @Description : 가입문화원정보
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 9. 02. JSYOO 최초 생성 + * + * @author 이씨플라자 * DIGITALSHIP JSYOO + * @since 2021. 7. 12. + * @version 1.0 + * + */ +public class MemberSiteVO implements Serializable { + + private static final long serialVersionUID = -8274004534207618049L; + + /* MB_SITE : 가입문화원 정보 */ + private String mbSiteId; /* 회원인덱스 */ + private String mbInfoId; /* 회원아이디 (ex: M1000000001) */ + private String joinType; /* 가입유형 SNS 및 로그인을 연계하는 포털시스템 아이디(naver, daum 등) */ + private String joinAgreeDd; /* 가입동의일자 */ + private String joinCouncilCd; /* 가입문화원코드 */ + private String masterYn; /* 대표여부 */ + private String ipNotUse; /* 접속아이피 */ + private String lastAccessDdNotUse; /* 마지막접근일자 */ + + //---------------------------------------------------------------- + // SETTER.GETTER + //---------------------------------------------------------------- + public String getMbSiteId() { + return mbSiteId; + } + public void setMbSiteId(String mbSiteId) { + this.mbSiteId = mbSiteId; + } + public String getMbInfoId() { + return mbInfoId; + } + public void setMbInfoId(String mbInfoId) { + this.mbInfoId = mbInfoId; + } + public String getJoinType() { + return joinType; + } + public void setJoinType(String joinType) { + this.joinType = joinType; + } + public String getJoinAgreeDd() { + return joinAgreeDd; + } + public void setJoinAgreeDd(String joinAgreeDd) { + this.joinAgreeDd = joinAgreeDd; + } + public String getJoinCouncilCd() { + return joinCouncilCd; + } + public void setJoinCouncilCd(String joinCouncilCd) { + this.joinCouncilCd = joinCouncilCd; + } + public String getMasterYn() { + return masterYn; + } + public void setMasterYn(String masterYn) { + this.masterYn = masterYn; + } + public String getIpNotUse() { + return ipNotUse; + } + public void setIpNotUse(String ipNotUse) { + this.ipNotUse = ipNotUse; + } + public String getLastAccessDdNotUse() { + return lastAccessDdNotUse; + } + public void setLastAccessDdNotUse(String lastAccessDdNotUse) { + this.lastAccessDdNotUse = lastAccessDdNotUse; + } +} diff --git a/src/main/java/nlib/user/service/impl/MemberDAO.java b/src/main/java/nlib/user/service/impl/MemberDAO.java index d38ece6e..094e6fd6 100644 --- a/src/main/java/nlib/user/service/impl/MemberDAO.java +++ b/src/main/java/nlib/user/service/impl/MemberDAO.java @@ -10,6 +10,7 @@ import egovframework.com.ext.oauth.service.OAuthUniversalUser; import egovframework.rte.psl.dataaccess.mapper.Mapper; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; +import nlib.user.service.MemberSiteVO; import nlib.user.service.NlibLoginVO; @Mapper("memberDAO") @@ -40,4 +41,10 @@ public interface MemberDAO public String selectAlreadySignUpId(OAuthUniversalUser oauthUser) throws Exception; public List selectAlreadySignUpMobile(NlibLoginVO loginVO) throws Exception; + + public void insertMemberSite(MemberSiteVO msVO); + + public int selectMemberSiteCount(MemberSiteVO msVO); + + public int selectSnsIdCount(OAuthUniversalUser oauthUser); } \ No newline at end of file diff --git a/src/main/java/nlib/user/service/impl/MemberServiceImpl.java b/src/main/java/nlib/user/service/impl/MemberServiceImpl.java index 832278d1..f1fa605d 100644 --- a/src/main/java/nlib/user/service/impl/MemberServiceImpl.java +++ b/src/main/java/nlib/user/service/impl/MemberServiceImpl.java @@ -17,6 +17,7 @@ import nlib.cmm.crypto.AriaCrypto; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; import nlib.user.service.MemberService; +import nlib.user.service.MemberSiteVO; import nlib.user.service.NlibLoginVO; import nlib.util.StringUtil; @@ -40,11 +41,23 @@ public class MemberServiceImpl implements MemberService return null; } - public void insertMemberInfo(NlibLoginVO vo) throws Exception { + public NlibLoginVO insertMemberInfo(NlibLoginVO vo) throws Exception { + NlibLoginVO result =new NlibLoginVO(); + //회원정보 암호화 String encodedText=null; - encodedText = egovPasswordEncoder.encryptPassword(vo.getPassword()); + encodedText = egovPasswordEncoder.encryptPassword(vo.getLoginUserId()+vo.getPassword()); vo.setPassword(encodedText); - memberDAO.insertMemberInfo(vo); + vo.setBirthday(ariaCrypto.encode(vo.getBirthday())); + vo.setMobileNo(ariaCrypto.encode(vo.getMobileNo())); + vo.setEmail(ariaCrypto.encode(vo.getEmail())); + vo.setZipCode(ariaCrypto.encode(vo.getZipCode())); + vo.setAddress(ariaCrypto.encode(vo.getAddress())); + vo.setAddressDetail(ariaCrypto.encode(vo.getAddressDetail())); + //회원가입 정보 + memberDAO.insertMemberInfo(vo); + //가입한 정보의 UID select + result=memberDAO.selectAlreadySignUpMobile(vo).get(0); + return result; } public DataApiResVO sendEmailForMemberJoining(DataApiReqVO reqVO) { @@ -219,4 +232,16 @@ public class MemberServiceImpl implements MemberService return memberDAO.selectAlreadySignUpMobile(loginVO); } + public void insertMemberSite(MemberSiteVO msVO) { + memberDAO.insertMemberSite(msVO); + } + + public int selectMemberSiteCount(MemberSiteVO msVO) { + return memberDAO.selectMemberSiteCount(msVO); + } + + public int selectSnsIdCount(OAuthUniversalUser oauthUser) { + return memberDAO.selectSnsIdCount(oauthUser); + } + } \ No newline at end of file diff --git a/src/main/java/nlib/user/web/MemberController.java b/src/main/java/nlib/user/web/MemberController.java index b99b3237..52ddd533 100644 --- a/src/main/java/nlib/user/web/MemberController.java +++ b/src/main/java/nlib/user/web/MemberController.java @@ -309,6 +309,8 @@ public class MemberController { model.addAttribute("url","${pageContext.request.contextPath}"+NlibProperty.getString("member.new.url")); return "nlib/cmm/alert"; } + /*vo.setMobileVrfctNo(vo.getMobileVrfctNo()); + vo.setMobileVrfctDd(vo.getMobileVrfctNo());*/ } //이메일인증시 sns제공 이메일과 회원가입폼 이메일 비교 if(!(vo.getEmail().equals(oauthUser.getSnsUserId()))) @@ -323,6 +325,7 @@ public class MemberController { } } //회원정보 insert + NlibLoginVO result =memberService.insertMemberInfo(vo); //sns 테이블 insert diff --git a/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml index 910c7bc2..f3040eea 100644 --- a/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml +++ b/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml @@ -13,19 +13,63 @@ + + + + - - SELECT CONCAT(LEFT(MAX(USER_ID),2), - LPAD(RIGHT(MAX(USER_ID),9)+1,9,0)) FROM TMP_SM_USER; + + SELECT CONCAT(LEFT(MAX(MB_INFO_ID),2), + LPAD(RIGHT(MAX(MB_INFO_ID),9)+1,9,0)) FROM MB_INFO; INSERT INTO MB_INFO - (USER_ID,LOGIN_USER_ID,USER_DIV,USER_NM,USER_PWD,BIRTHDATE,GENDER,TEL_NO,ZIPCODE,ADDR1,ADDR2,REG_ID,MOD_ID) + ( + MB_INFO_ID + ,LOGIN_USER_ID + ,NAME + ,PASSWORD + ,EMAIL + ,BIRTHDAY + ,GENDER + ,MOBILE_NO + ,ZIP_CODE + ,ADDRESS + ,ADDRESS_DETAIL + ,REG_ID + ,REG_DD + ,MOD_ID + ,MOD_DD + ,STATUS + ,JOIN_DATE + ,MOBILE_VRFCT_NO + ,MOBILE_VRFCT_DD + ) VALUES - (#{userId},#{loginUserId},'N',#{userNm},#{userPwd},#{birthdate},#{gender},#{telNo},#{zipcode},#{addr1},#{addr2},#{userId},#{userId}) + ( + #{mbInfoId} + ,#{loginUserId} + ,#{name} + ,#{password} + ,#{email} + ,#{birthday} + ,#{gender} + ,#{mobileNo} + ,#{zipCode} + ,#{address} + ,#{addressDetail} + ,#{mbInfoId} + ,NOW() + ,#{mbInfoId} + ,NOW() + ,'S' + ,DATE_FORMAT(CURDATE(), '%Y%m%d') + ,#{mobileVrfctNo} + ,STR_TO_DATE(#{mobileVrfctDd},'%Y-%m-%d %H:%i:%S') + ) @@ -80,7 +124,7 @@ AND MOBILE_NO = #{mobileNo} - + INSERT INTO MB_SNS @@ -104,15 +148,59 @@ ,#{snsType} ,#{snsId} ,#{snsName} - ,{snsNickName} + ,#{snsNickName} ,#{snsUserId} ,#{snsGender} ,#{snsBirthday} ,#{snsEmail} ,#{snsMobileNo} - ,#{mbInfoId} + ,NOW() ,NULL ); + + + + INSERT INTO + MB_SITE + ( + MB_INFO_ID + ,JOIN_TYPE + ,JOIN_AGREE_DD + ,JOIN_COUNCIL_CD + ,MASTER_YN + ) + VALUES + ( + #{mbInfoId} + ,#{joinType} + ,NOW() + ,#{joinCouncilCd} + ,#{masterYn} + ); + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/nlib/cmm/alert.jsp b/src/main/webapp/WEB-INF/jsp/nlib/cmm/alert.jsp new file mode 100644 index 00000000..ae3593c5 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/cmm/alert.jsp @@ -0,0 +1,16 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> + + + + +alertPage + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoForm.jsp index eb364200..a0a172e3 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoForm.jsp @@ -52,6 +52,11 @@ function signUp(){ alert("휴대전화 인증이 필요합니다."); return false; } + if($("#emailCertYn").val()!="Y") + { + alert("이메일 인증이 필요합니다."); + return false; + } if($("#zipCode").val()=="" || $("#address").val()=="" || $("#addressDetail").val()=="") { @@ -69,8 +74,7 @@ function signUp(){ <% //연락받을 이메일 입력 %> - $("#email").val(("#loginUserId").val()) - alert("회원가입 되었습니다."); + $("#email").val($("#loginUserId").val()); return true; }else{ return false; @@ -103,14 +107,37 @@ $(document).ready(function() { //핸드폰 번호가 변하는것 실시간 감지 %> $("#mobileNo").on("propertychange change keyup paste input", function() { - $("#mobileCertYn").val("N"); + if($("#snsMobileNo").val() == $("#mobileNo").val()) + { + $("#mobileCertYn").val("Y"); + $("#mobileCertForm").css("display","none"); + $("#mobileCertSendBtn").css("display","none"); + + }else{ + $("#mobileCertYn").val("N"); + $("#mobileCertForm").css("display","block") + $("#mobileCertSendBtn").css("display","block"); + } + }); <% //아이디가 변하는것 실시간 감지 %> $("#loginUserId").on("propertychange change keyup paste input", function() { + if($("#snsUserId").val() == $("#loginUserId").val()) + { + $("#emailCertYn").val("Y"); + $("#emailCertForm").css("display","none"); + $("#emailCertSendBtn").css("display","none"); + + }else{ + $("#emailCertYn").val("N"); + $("#emailCertForm").css("display","block") + $("#emailCertSendBtn").css("display","block"); + } $("#emailCertYn").val("N"); $("#getEmailCert").css("display","block") + //snsUserId }); }) <% @@ -119,22 +146,22 @@ $(document).ready(function() { function emailCert(){ - $("#mobileNo").val($("#mobileNo").val().replace(/-/gi,"")); - var regExp = /^\d{3}\d{3,4}\d{4}$/; - - if(!regExp.test($("#mobileNo").val()) || $("#mobileNo").val()==""){ + var regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i; + + if(!regExp.test($("#loginUserId").val()) || $("#loginUserId").val()==""){ - alert("형식에 맞지 않는 번호입니다."); + alert("형식에 맞지 않는 이메일입니다."); return false; } $.ajax({ - url : "/nlib/member/mobileCertNum.ajax", + url : "/nlib/member/emailCertNum.ajax", type : "POST", async: false, - data : {"mobileNo" : $("#mobileNo").val()}, + data : {"email" : $("#loginUserId").val()}, success : function(result){ alert("이메일 인증번호가 발송됐습니다."); + $("#emailCertYn").val("N"); //인증번호 확인창 $("#emailCertForm").css("display","block") @@ -143,6 +170,34 @@ function emailCert(){ }) } +<% +//이메일 인증번호 확인 +%> +function certEmailCheck(){ + <% + //ajax 사용자가 입력한 번호를 보내 RESTfull server에서 확인 success or fail 반환 (3분이내인지도) + %> + $.ajax({ + url : "/nlib/member/emailCertNumChk.ajax", + type : "POST", + data : {"emailVrfctNo" : $("#emailVrfctNo").val(), + "email" : $("#loginUserId").val()}, + async: false, + success : function(result){ + if(result=="true") + { + alert("인증되었습니다."); + $("#emailCertYn").val("Y"); + }else + { + alert("인증번호가 일치하지않습니다."); + } + } + ,error : function(){ + } + }) +} + <% //핸드폰 인증번호 받기 %> @@ -165,9 +220,7 @@ function mobileCert(){ data : {"mobileNo" : $("#mobileNo").val()}, success : function(result){ alert("인증번호가 발송됐습니다."); - //인증번호 확인창 - $("#mobileCertForm").css("display","block") - + $("#mobileCertYn").val("N"); },error : function(){ } }) @@ -176,14 +229,14 @@ function mobileCert(){ <% //핸드폰 인증번호 확인 %> -function certNumCheck(){ +function certMobileCheck(){ <% //ajax 사용자가 입력한 번호를 보내 RESTfull server에서 확인 success or fail 반환 (3분이내인지도) %> $.ajax({ url : "/nlib/member/mobileCertNumChk.ajax", type : "POST", - data : {"mobileCertNum" : $("#mobileCertNum").val(), + data : {"mobileVrfctNo" : $("#mobileVrfctNo").val(), "mobileNo" : $("#mobileNo").val()}, async: false, success : function(result){ @@ -191,10 +244,12 @@ function certNumCheck(){ { alert("인증되었습니다."); $("#mobileCertYn").val("Y"); - }else{ - alert("인증에 실패했습니다."); + }else + { + alert("인증번호가 일치하지않습니다."); } - },error : function(){ + } + ,error : function(){ } }) } @@ -370,9 +425,9 @@ label.error { 아이디 - " > - - + " > + + 이름 @@ -437,16 +492,19 @@ label.error { 휴대전화 - " required > - + " required > +
- + + "> + "> + diff --git a/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoResult.jsp b/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoResult.jsp index 170ba711..4a0f6ec4 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoResult.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoResult.jsp @@ -30,7 +30,7 @@ Insert title here -환영합니다 +가입되셨습니다. 환영합니다 diff --git a/src/main/webapp/WEB-INF/jsp/nlib/userInfo/putMyInfo.jsp b/src/main/webapp/WEB-INF/jsp/nlib/userInfo/putMyInfo.jsp index c805ce51..a53e2dbd 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/userInfo/putMyInfo.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/userInfo/putMyInfo.jsp @@ -155,7 +155,7 @@ function certNumCheck(){ alert("인증되었습니다."); $("#mobileCertYn").val("Y"); }else{ - alert("인증에 실패했습니다."); + alert("인증번호가 일치하지않습니다."); } },error : function(){ }