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(){
}