Ver Fonte

회원상세 개발 중

jsshin há 5 anos atrás
pai
commit
dbc7d737de

+ 19 - 2
src/main/java/com/style24/admin/biz/service/TsaCustomerService.java

@@ -2,6 +2,8 @@ package com.style24.admin.biz.service;
 
 import com.style24.admin.biz.dao.TsaCustomerDao;
 import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.biz.dao.TscCustomerDao;
+import com.style24.core.biz.service.TscCustomerService;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.CustomerSearch;
 import lombok.extern.slf4j.Slf4j;
@@ -24,6 +26,9 @@ public class TsaCustomerService {
 	@Autowired
 	private TsaCustomerDao customerDao;
 
+	@Autowired
+	private TscCustomerService coreCustomerService;
+
 	/**
 	 * 활동회원 목록
 	 * @param customerSearch - 검색조건
@@ -57,10 +62,21 @@ public class TsaCustomerService {
 		Integer userNo = TsaSession.getInfo().getUserNo();
 		customer.setRegNo(userNo);
 		customer.setUpdNo(userNo);
-
+		// 고객 이력 생성
+		coreCustomerService.createCustomerHistory(customer);
 		// 정보 수정
 		customerDao.updateCustomerInfo(customer);
-		customerDao.createException();
+	}
+
+	/**
+	 * 회원 비밀번호 수정
+	 * @param customer - 고객정보
+	 * @author jsshin
+	 * @since 2020. 01. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void updateCustomerPassword(Customer customer) {
+		coreCustomerService.updateCustomerPassword(customer);
 	}
 
 	/**
@@ -85,4 +101,5 @@ public class TsaCustomerService {
 		return customerDao.getCustomerDormantList(customerSearch);
 	}
 
+
 }

+ 45 - 32
src/main/java/com/style24/admin/biz/service/TsaKakaoService.java

@@ -1,11 +1,19 @@
 package com.style24.admin.biz.service;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.style24.admin.support.security.session.TsaSession;
+import com.style24.core.biz.service.TscCustomerService;
+import com.style24.core.support.env.TscConstants;
+import com.style24.persistence.domain.CustContactHst;
+import com.style24.persistence.domain.Customer;
+import com.style24.persistence.domain.SsgDirectMessage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.style24.core.biz.thirdparty.SsgKakaoSender;
 
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 카카오알림톡 Service. 모든 카카오알림톡 발송은 여기에서 처리한다.
@@ -20,38 +28,43 @@ public class TsaKakaoService {
 	@Autowired
 	private SsgKakaoSender kakaoSender;
 
-//	/**
-//	 * 고객 임시비밀번호 알림톡 발송
-//	 * @param counsel - 상담 정보
-//	 * @author gagamel
-//	 * @since 2020. 11. 9
-//	 */
-//	@Transactional("shopTxnManager")
-//	public void sendCustomerTempPassword(AdmCustomer customer) {
-//		SsgDirectMessage dm = new SsgDirectMessage();
-//		dm.setFuserid(String.valueOf(TsaSession.getInfo().getUserNo())); // 발송자ID
-//		dm.setFdestine(customer.getCellPhnno());
-//		dm.setFkkoresendtype("LMS");
-//
-//		GagaMap replaceInfo = new GagaMap();
-//		replaceInfo.setString("siteNm", customer.getSiteNm());
-//		replaceInfo.setString("custNm", customer.getCustNm());
-//		replaceInfo.setString("passwd", customer.getPasswd());
-//
-//		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.TempPasswd.value(), dm, replaceInfo);
-//
-//		try {
-//			// 고객접촉이력 정보
-//			customer.setContactType("203"); // 접촉유형:임시비밀번호발급(공통코드G054)
-//			customer.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value()); // 접촉방법:알림톡+문자(공통코드G055)
-//			customer.setContactContents("고객 임시비밀번호 발송");
-//			customer.setReceiverId(customer.getCustNo());
-//			customerService.createCustomerContactHistory(customer);
-//		} catch (Exception e) {
-//			log.error("error", e);
-//			// Do nothing
-//		}
-//	}
+	@Autowired
+	private TscCustomerService coreCustomerService;
+
+	/**
+	 * 고객 임시비밀번호 알림톡 발송
+	 * @param customer - 고객 정보
+	 * @author jsshin
+	 * @since 2021. 01. 20
+	 */
+	@Transactional("shopTxnManager")
+	public void sendCustomerTempPassword(Customer customer) {
+		Integer userNo = TsaSession.getInfo().getUserNo();
+		SsgDirectMessage dm = new SsgDirectMessage();
+		dm.setFuserid(String.valueOf(userNo)); // 발송자NO
+		dm.setFdestine(customer.getCellPhnno());
+		dm.setFkkoresendtype("LMS");
+
+		GagaMap replaceInfo = new GagaMap();
+		replaceInfo.setString("siteNm", TscConstants.Style24Infomation.SITE_NAME.value());
+		replaceInfo.setString("custNm", customer.getCustNm());
+		replaceInfo.setString("passwd", customer.getPasswd());
+
+		kakaoSender.send(SsgKakaoSender.KakaoAnswerSq.TempPasswd.value(), dm, replaceInfo);
+
+		try {
+			CustContactHst custContactHst = new CustContactHst();
+			custContactHst.setContactType(TscConstants.ContactType.PASSWORD_INFO.value()); // 접촉유형:임시비밀번호발급(공통코드G054)
+			custContactHst.setContactMethod(TscConstants.ContactMethod.KAKAOTALK.value()); // 접촉방법:알림톡+문자(공통코드G055)
+			custContactHst.setContactContents("고객 임시비밀번호 발송");
+			custContactHst.setReceiverNo(customer.getCustNo());
+			custContactHst.setSenderNo(userNo);
+			coreCustomerService.createCustomerContactHistory(custContactHst);
+		} catch (Exception e) {
+			log.error("error", e);
+			// Do nothing
+		}
+	}
 //
 //	/**
 //	 * 일대일문의 답변 알림톡 발송

+ 43 - 0
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -2,10 +2,14 @@ package com.style24.admin.biz.web;
 
 import java.util.Collection;
 
+import com.gagaframework.web.security.GagaPasswordEncoder;
 import com.style24.admin.biz.service.TsaCustomerService;
+import com.style24.admin.biz.service.TsaKakaoService;
+import com.style24.admin.biz.service.TsaSystemService;
 import com.style24.core.support.session.TscSession;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.CustomerSearch;
+import com.sun.xml.internal.bind.v2.TODO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -55,6 +59,15 @@ public class TsaCustomerController extends TsaBaseController {
 	@Autowired
 	private TsaCustomerService customerService;
 
+	@Autowired
+	private TsaSystemService systemService;
+
+	@Autowired
+	private GagaPasswordEncoder passwordEncoder;
+
+	@Autowired
+	private TsaKakaoService kakaoService;
+
 	/**
 	 * 1:1문의관리 화면
 	 * @return
@@ -390,6 +403,36 @@ public class TsaCustomerController extends TsaBaseController {
 		return ok(message.getMessage("SUCC_0002"));
 	}
 
+	/**
+	 * 회원비밀번호초기화
+	 *
+	 * @param customer -고객정보
+	 * @return GagaResponse
+	 * @throws Exception
+	 * @author jsshin
+	 * @since 2020. 01. 20
+	 */
+	@PostMapping("/password/reset")
+	@ResponseBody
+	public GagaResponse resetCustomerPassword(@RequestBody Customer customer) throws Exception {
+		String tempPasswd = systemService.getTemporaryPassword(10);
+		log.info("tempPasswd  ====> {}", tempPasswd);
+
+		customer.setPasswd(tempPasswd);
+		customer.setEncodedPasswd(passwordEncoder.encodeSha256(tempPasswd));
+		customer.setRegNo(TsaSession.getInfo().getRegNo());
+
+		// 비밀번호 수정
+		customerService.updateCustomerPassword(customer);
+
+		// 카카오 알림톡
+		kakaoService.sendCustomerTempPassword(customer);
+
+		// TODO: 2021.1.20 메일발송 서비스 붙여야함 - jsshin
+
+		return ok(message.getMessage("SUCC_0005"));
+	}
+
 	/**
 	 * 탈퇴회원
 	 * @return ModelAndView

+ 54 - 54
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -167,60 +167,60 @@
 		/* TsaCustomer.updateCustomerInfo */
 		UPDATE TB_CUSTOMER
 		<set>
-		     <if test="custGb != null and custGb != ''">
-			     CUST_GB = #{custGb},
-		     </if>
-		     <if test="custGrade != null and custGrade !=''">
-		         CUST_GRADE = #{custGrade},
-		     </if>
-		     <if test="emailAgreeYn != null and emailAgreeYn != ''">
-		         EMAIL_AGREE_YN = #{emailAgreeYn} ,
-		         EMAIL_AGREE_DT = CASE WHEN EMAIL_AGREE_YN = #{emailAgreeYn}
-		                          THEN EMAIL_AGREE_DT
-		                          ELSE NOW(),
-		     </if>
-		     <if test="smsAgreeYn != null and smsAgreeYn != ''">
-		         SMS_AGREE_YN = #{smsAgreeYn},
-		         SMS_AGREE_DT = CASE WHEN SMS_AGREE_YN = #{smsAgreeDt}
-		                        THEN SMS_AGREE_DT
-		                        ELSE NOW(),
-		     </if>
-		     <if test="homePostNo != null and homePostNo != ''">
-		         HOME_POST_NO = #{homePostNo},
-		     </if>
-		     <if test="homeBaseAddr != null and homeBaseAddr != ''">
-		         HOME_BASE_ADDR = #{homeBaseAddr},
-		     </if>
-		     <if test="homeDtlAddr != null and homeDtlAddr != ''">
-		         HOME_DTL_ADDR = #{homeDtlAddr},
-		     </if>
-		     <if test="birthYmd != null and birthYmd != ''">
-		         BIRTH_YMD = REPLACE(#{birthYmd}, '-', ''),
-		     </if>
-		     <if test="cellPhnno != null and cellPhnno != ''">
-		         CELL_PHNNO = #{cellPhnno},
-		     </if>
-		     <if test="homeTelno != null and homeTelno != ''">
-		         HOME_TELNO = #{homeTelno},
-		     </if>
-		     <if test="email != null and email != ''">
-		         EMAIL = #{email},
-		     </if>
-		     <if test="managedRsn != null and managedRsn != ''">
-		         MANAGED_RSN = #{managedRsn},
-		         MANAGED_DTL_RSN = #{managedDtlRsn},
-		         MANAGED_DT = CASE WHEN MANAGED_RSN = #{managedRsn}
-		                           AND  MANAGED_DTL_RSN = #{managedDtlRsn}
-		                      THEN MANAGED_DT
-		                      ELSE NOW(),
-		     </if>
-		     <if test="managedRsn == null or managedRsn == ''">
-		         MANAGED_RSN = NULL,
-		         MANAGED_DTL_RSN =  NULL,
-		         MANAGED_DT = NULL
-		     </if>
-		         UPD_ID = #{updId},
-		         UPD_DT = NOW()
+		    <if test="custGb != null and custGb != ''">
+		     CUST_GB = #{custGb},
+		    </if>
+		    <if test="custGrade != null and custGrade !=''">
+		     CUST_GRADE = #{custGrade},
+		    </if>
+		    <if test="emailAgreeYn != null and emailAgreeYn != ''">
+		     EMAIL_AGREE_DT = CASE WHEN EMAIL_AGREE_YN = #{emailAgreeYn}
+		                      THEN EMAIL_AGREE_DT
+		                      ELSE NOW()
+		                      END,
+		     EMAIL_AGREE_YN = #{emailAgreeYn},
+		    </if>
+		    <if test="smsAgreeYn != null and smsAgreeYn != ''">
+		     SMS_AGREE_DT = CASE WHEN SMS_AGREE_YN = #{smsAgreeYn}
+		                    THEN SMS_AGREE_DT
+		                    ELSE NOW()
+		                    END,
+		     SMS_AGREE_YN = #{smsAgreeYn},
+		    </if>
+		    <if test="homePostNo != null and homePostNo != ''">
+		     HOME_POST_NO = #{homePostNo},
+		    </if>
+		    <if test="homeBaseAddr != null and homeBaseAddr != ''">
+		     HOME_BASE_ADDR = #{homeBaseAddr},
+		    </if>
+		    <if test="homeDtlAddr != null and homeDtlAddr != ''">
+		     HOME_DTL_ADDR = #{homeDtlAddr},
+		    </if>
+		    <if test="birthYmd != null and birthYmd != ''">
+		     BIRTH_YMD = REPLACE(#{birthYmd}, '-', ''),
+		    </if>
+		    <if test="cellPhnno != null and cellPhnno != ''">
+		     CELL_PHNNO = #{cellPhnno},
+		    </if>
+		    <if test="email != null and email != ''">
+		     EMAIL = #{email},
+		    </if>
+		    <if test="managedRsn != null and managedRsn != ''">
+		     MANAGED_DT = CASE WHEN MANAGED_RSN = #{managedRsn}
+		                       AND  MANAGED_DTL_RSN = #{managedDtlRsn}
+		                  THEN MANAGED_DT
+		                  ELSE NOW()
+		                  END,
+		     MANAGED_RSN = #{managedRsn},
+		     MANAGED_DTL_RSN = #{managedDtlRsn},
+		    </if>
+		    <if test="managedRsn == null or managedRsn == ''">
+		     MANAGED_RSN = NULL,
+		     MANAGED_DTL_RSN =  NULL,
+		     MANAGED_DT = NULL,
+		    </if>
+		     UPD_NO = #{updNo},
+		     UPD_DT = NOW()
 		</set>
 		WHERE CUST_NO = #{custNo}
 	</update>

+ 169 - 164
src/main/webapp/WEB-INF/views/customer/CustomerDetailForm.html

@@ -14,7 +14,7 @@
  * 1.0  2020.01.18   jsshin     최초 작성
  *******************************************************************************
  -->
-<div class="modalPopup" id="popupCustomerDetail">
+<div class="modalPopup" id="popupCustomerDetail" data-width="1600">
 	<div class="panelStyle">
 		<!-- TITLE -->
 		<div class="panelTitle">
@@ -24,7 +24,7 @@
 		<!-- //TITLE -->
 
 		<!-- CONTENT -->
-		<div class="panelContent">
+		<div class="panelContent" >
 			<table class="frmStyle" aria-describedby="회원정보">
 				<colgroup>
 					<col style="width:10%;"/>
@@ -73,152 +73,151 @@
 					</ul>
 				</div>
 				<!-- //TABS NAVI -->
+
 				<!-- TABS CONTENTS -->
 				<ul class="tabsCont">
 					<!-- TAB1 : 회원정보 -->
 					<li class="tab on" id="tab1">
-						<form id="custInfo" name="custInfo">
-							<!-- TAB1 PANELSTYLE -->
-							<div class="panelStyle">
-								<h4>기본정보</h4>
-								<table class="frmStyle">
-									<colgroup>
-										<col style="width:10%;"/>
-										<col style="width:40%;"/>
-										<col style="width:10%;"/>
-										<col/>
-									</colgroup>
-									<tbody>
-									<tr>
-										<th class="dashR">회원구분<i class="star"></i></th>
-										<td class="dashR">
-											<select id="custGb" name="custGb">
-												<option th:if="${custGbList}" th:each="oneData, status : ${custGbList}" th:value="${oneData.cd}"
-														th:text="|${oneData.cdNm}|"></option>
-											</select>
-										</td>
-										<th class="dashR">회원등급<i class="star"></i></th>
-										<td class="dashR">
-											<select id="custGrade" name="custGrade">
-												<option th:if="${custGradeList}" th:each="oneData, status : ${custGradeList}" th:value="${oneData.cd}"
-														th:text="|${oneData.cdNm}|"></option>
-											</select>
-										</td>
-									</tr>
-									<tr>
-										<th class="dashR">관리대상</th>
-										<td class="dashR">
-											<select id="managedRsn" name="managedRsn">
-												<option value="">일반</option>
-												<option th:if="${managedRsnList}" th:each="oneData, status : ${managedRsnList}" th:value="${oneData.cd}"
-														th:text="|${oneData.cdNm}|"></option>
-											</select>
-											<span class="infoTxt cRed h5" id="managedRsnDp" name="managedRsnDp"></span>
-										</td>
-										<th class="dashR">관리대상 지정 날짜</th>
-										<td class="dashR" id="managedDt" name="managedDt">
-										</td>
-									</tr>
-									<tr>
-										<th class="dashR">관리대상 지정 사유</th>
-										<td class="dashR" colspan="3">
-											<input type="text" id="managedDtlRsn" name="managedDtlRsn" class="w600" />
-										</td>
-									</tr>
-									<tr>
-										<th class="dashR">비밀번호</th>
-										<td class="dashR" colspan="3">
-											*******
-											<button type="button" id="btnCustPasswordReset" class="btn btn-info btn-lg">초기화</button>
-											<span class="infoTxt cBlue">
-												<i class="fa fa-info-circle"></i>회원에게 임시비밀번호를 발송합니다. (이메일, 알림톡)
-											</span>
-										</td>
-									</tr>
-									<tr>
-										<th class="dashR">생년월일</th>
-										<td class="dashR">
-											<input type="text" id="birthYmd" name="birthYmd" class="schDate w100" data-valid-name="생년월일"/>
-										</td>
-										<th class="dashR">성별</th>
-										<td class="dashR" id="sexGb" name="sexGb"></td>
-									</tr>
-									<tr>
-										<th class="dashR">자택주소</th>
-										<td class="dashR" colspan="3">
-											<input type="text" id="homePostNo" name="homePostNo" class="w100" readonly="readonly"/>
-											<button type="button" class="btn btn-info btn-lg" onclick="fnOpenDaumAddr('custInfo');">우편번호찾기</button>
-											<br/>
-											<input type="text" id="homeBaseAddr" name="homeBaseAddr" class="w300" readonly="readonly"/>
-											<input type="text" id="homeDtlAddr" name="homeDtlAddr" class="w300"/>
-										</td>
-									</tr>
-									<tr>
-										<th class="dashR">휴대전화번호<i class="star"></i></th>
-										<td class="dashR">
-											<select id="cellPhnno1" name="cellPhnno1">
-												<option value="">선택</option>
-												<option th:if="${nationalHpNumberList}" th:each="oneData, status : ${nationalHpNumberList}"
-														th:value="${oneData.cd}" th:text="|${oneData.cd}|"></option>
-											</select> -
-											<input type="text" id="cellPhnno2" name="cellPhnno2" class="w50" maxlength="4" required="required"
-												   data-valid-type="numeric" data-valid-name="휴대전화번호"/> -
-											<input type="text" id="cellPhnno3" name="cellPhnno3" class="w50" maxlength="4" required="required"
-												   data-valid-type="numeric" data-valid-name="휴대전화번호"/>
-											<button type="button" id="btnCustSendLms" class="btn btn-info btn-lg">LMS전송</button>
-											<button type="button" id="btnCustCrtfd" class="btn btn-info btn-lg">번호변경</button>
-										</td>
-										<th class="dashR">SMS수신여부<i class="star"></i></th>
-										<td class="dashR">
-											<label class="rdoBtn"><input type="radio" name="smsAgreeYn" value="Y"/>수신</label>
-											<label class="rdoBtn"><input type="radio" name="smsAgreeYn" value="N"/>미수신</label>
-										</td>
-									</tr>
-									<tr>
-										<th class="dashR">이메일<i class="star"></i></th>
-										<td class="dashR">
-											<input type="text" id="email1" name="email1" class="w300"/>
-											@
-											<input type="text" id="email2" name="email2" class="w150"/>
-											<select name="emailDomain">
-												<option value="">선택하세요</option>
-												<option th:if="${emailDomainList}" th:each="oneData, status : ${emailDomainList}" th:value="${oneData.cd}"
-														th:text="|${oneData.cdNm}|"></option>
-											</select>
-											<button type="button" id="btnCustSendEmail" class="btn btn-info btn-lg" >이메일발송</button>
-										</td>
-										<th class="dashR">메일수신여부<i class="star"></i></th>
-										<td class="dashR">
-											<label class="rdoBtn"><input type="radio" name="emailAgreeYn" value="Y"/>수신</label>
-											<label class="rdoBtn"><input type="radio" name="emailAgreeYn" value="N"/>미수신</label>
-										</td>
-									</tr>
-									<tr>
-										<th class="dashR">가입일시</th>
-										<td class="dashR" id="joinDt" name="joinDt"></td>
-										<th class="dashR">최종로그인일시</th>
-										<td class="dashR" id="loginDt" name="loginDt"></td>
-									</tr>
-									<tr>
-										<th class="dashR">내외국인</th>
-										<td class="dashR" id="foreignerYn" name="foreignerYn"></td>
-										<th class="dashR">탈퇴여부</th>
-										<td class="dashR" id="secedeRsnYn" name="secedeRsnYn"></td>
-									</tr>
-									<tr>
-										<th class="dashR">SNS가입유형</th>
-										<td class="dashR" id="snsType" name="snsType" colspan="3"></td>
-									</tr>
-									</tbody>
-								</table>
-								<ul class="panelBar">
-									<li class="right">
-										<button type="button" id="btnCustInfoSave" class="btn btn-success btn-lg">저장</button>
-									</li>
-								</ul>
-							</div>
-							<!-- //TAB1 PANELSTYLE -->
-						</form>
+						<!-- TAB1 PANELSTYLE -->
+						<div class="panelStyle">
+							<h4>기본정보</h4>
+							<table class="frmStyle">
+								<colgroup>
+									<col style="width:10%;"/>
+									<col style="width:40%;"/>
+									<col style="width:10%;"/>
+									<col/>
+								</colgroup>
+								<tbody>
+								<tr>
+									<th class="dashR">회원구분<i class="star"></i></th>
+									<td class="dashR">
+										<select id="custGb" name="custGb">
+											<option th:if="${custGbList}" th:each="oneData, status : ${custGbList}" th:value="${oneData.cd}"
+													th:text="|${oneData.cdNm}|"></option>
+										</select>
+									</td>
+									<th class="dashR">회원등급<i class="star"></i></th>
+									<td class="dashR">
+										<select id="custGrade" name="custGrade">
+											<option th:if="${custGradeList}" th:each="oneData, status : ${custGradeList}" th:value="${oneData.cd}"
+													th:text="|${oneData.cdNm}|"></option>
+										</select>
+									</td>
+								</tr>
+								<tr>
+									<th class="dashR">관리대상</th>
+									<td class="dashR">
+										<select id="managedRsn" name="managedRsn">
+											<option value="">일반</option>
+											<option th:if="${managedRsnList}" th:each="oneData, status : ${managedRsnList}" th:value="${oneData.cd}"
+													th:text="|${oneData.cdNm}|"></option>
+										</select>
+										<span class="infoTxt cRed h5" id="managedRsnDp" name="managedRsnDp"></span>
+									</td>
+									<th class="dashR">관리대상 지정 날짜</th>
+									<td class="dashR" id="managedDt" name="managedDt">
+									</td>
+								</tr>
+								<tr>
+									<th class="dashR">관리대상 지정 사유</th>
+									<td class="dashR" colspan="3">
+										<input type="text" id="managedDtlRsn" name="managedDtlRsn" class="w600" />
+									</td>
+								</tr>
+								<tr>
+									<th class="dashR">비밀번호</th>
+									<td class="dashR" colspan="3">
+										*******
+										<button type="button" id="btnResetPassword" class="btn btn-info btn-lg">초기화</button>
+										<span class="infoTxt cBlue">
+											<i class="fa fa-info-circle"></i>회원에게 임시비밀번호를 발송합니다. (이메일, 알림톡)
+										</span>
+									</td>
+								</tr>
+								<tr>
+									<th class="dashR">생년월일</th>
+									<td class="dashR">
+										<input type="text" id="birthYmd" name="birthYmd" class="schDate w100" data-valid-name="생년월일"/>
+									</td>
+									<th class="dashR">성별</th>
+									<td class="dashR" id="sexGb" name="sexGb"></td>
+								</tr>
+								<tr>
+									<th class="dashR">자택주소</th>
+									<td class="dashR" colspan="3">
+										<input type="text" id="homePostNo" name="homePostNo" class="w100" readonly="readonly"/>
+										<button type="button" class="btn btn-info btn-lg" onclick="fnOpenDaumAddr('custInfo');">우편번호찾기</button>
+										<br/>
+										<input type="text" id="homeBaseAddr" name="homeBaseAddr" class="w300" readonly="readonly"/>
+										<input type="text" id="homeDtlAddr" name="homeDtlAddr" class="w300"/>
+									</td>
+								</tr>
+								<tr>
+									<th class="dashR">휴대전화번호<i class="star"></i></th>
+									<td class="dashR">
+										<select id="cellPhnno1" name="cellPhnno1">
+											<option value="">선택</option>
+											<option th:if="${nationalHpNumberList}" th:each="oneData, status : ${nationalHpNumberList}"
+													th:value="${oneData.cd}" th:text="|${oneData.cd}|"></option>
+										</select> -
+										<input type="text" id="cellPhnno2" name="cellPhnno2" class="w50" maxlength="4" required="required"
+											   data-valid-type="numeric" data-valid-name="휴대전화번호"/> -
+										<input type="text" id="cellPhnno3" name="cellPhnno3" class="w50" maxlength="4" required="required"
+											   data-valid-type="numeric" data-valid-name="휴대전화번호"/>
+										<button type="button" id="btnCustSendLms" class="btn btn-info btn-lg">LMS전송</button>
+										<button type="button" id="btnCustCrtfd" class="btn btn-info btn-lg">번호변경</button>
+									</td>
+									<th class="dashR">SMS수신여부<i class="star"></i></th>
+									<td class="dashR">
+										<label class="rdoBtn"><input type="radio" name="smsAgreeYn" value="Y"/>수신</label>
+										<label class="rdoBtn"><input type="radio" name="smsAgreeYn" value="N"/>미수신</label>
+									</td>
+								</tr>
+								<tr>
+									<th class="dashR">이메일<i class="star"></i></th>
+									<td class="dashR">
+										<input type="text" id="email1" name="email1" class="w300"/>
+										@
+										<input type="text" id="email2" name="email2" class="w150"/>
+										<select name="emailDomain">
+											<option value="">선택하세요</option>
+											<option th:if="${emailDomainList}" th:each="oneData, status : ${emailDomainList}" th:value="${oneData.cd}"
+													th:text="|${oneData.cdNm}|"></option>
+										</select>
+										<button type="button" id="btnCustSendEmail" class="btn btn-info btn-lg" >이메일발송</button>
+									</td>
+									<th class="dashR">메일수신여부<i class="star"></i></th>
+									<td class="dashR">
+										<label class="rdoBtn"><input type="radio" name="emailAgreeYn" value="Y"/>수신</label>
+										<label class="rdoBtn"><input type="radio" name="emailAgreeYn" value="N"/>미수신</label>
+									</td>
+								</tr>
+								<tr>
+									<th class="dashR">가입일시</th>
+									<td class="dashR" id="joinDt" name="joinDt"></td>
+									<th class="dashR">최종로그인일시</th>
+									<td class="dashR" id="loginDt" name="loginDt"></td>
+								</tr>
+								<tr>
+									<th class="dashR">내외국인</th>
+									<td class="dashR" id="foreignerYn" name="foreignerYn"></td>
+									<th class="dashR">탈퇴여부</th>
+									<td class="dashR" id="secedeRsnYn" name="secedeRsnYn"></td>
+								</tr>
+								<tr>
+									<th class="dashR">SNS가입유형</th>
+									<td class="dashR" id="snsType" name="snsType" colspan="3"></td>
+								</tr>
+								</tbody>
+							</table>
+							<ul class="panelBar">
+								<li class="right">
+									<button type="button" id="btnCustInfoSave" class="btn btn-success btn-lg">저장</button>
+								</li>
+							</ul>
+						</div>
+						<!-- //TAB1 PANELSTYLE -->
 					</li>
 					<!-- //TAB1 : 회원정보 -->
 
@@ -831,19 +830,24 @@
 	gridCouponOptions.rowSelection = 'multiple';
 
 	// 비밀번호 초기화 버튼
-	$('#btnCustPasswordReset').on('click', function () {
+	$('#btnResetPassword').on('click', function () {
+
 		//이메일
-		if (!fnCheckValidationEmail()) {
+		let email = $('#email1').val() + '@' + $('#email2').val();
+
+		if (!fnCheckValidationEmail(email)) {
 			return false;
 		}
-		let params = {};
+		
+		let customer = {};
+		customer.custNo = custNo;
 
-		//let jsonData = JSON.stringify($('#custInfo').serializeObject());
 		mcxDialog.confirm("초기화 하시겠습니까?", {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function () {
-				gagajf.ajaxJsonSubmit('/customer/reset/password/save', jsonData, fnSearchCustInfo);
+				let jsonData = JSON.stringify(customer);
+				gagajf.ajaxJsonSubmit('/customer/password/reset', jsonData, fnSearchCustInfo);
 			}
 		});
 
@@ -904,27 +908,28 @@
 			return;
 		}
 
-		let params = {};
-		params.managedRsn = managedRsn;
-		params.managedDtlRsn = managedDtlRsn;
-		params.email = email;
-		params.custGb = $('#custGb').val();
-		params.custGrade = $('#custGrade').val();
-		params.birthYmd = $('#birthYmd').val();
-		params.homePostNo = $('#homePostNo').val();
-		params.homeBaseAddr = $('#homeBaseAddr').val();
-		params.homeDtlAddr = $('#homeDtlAddr').val();
-		params.emailAgreeYn = $('input:radio[name=emailAgreeYn]:checked').val();
-		params.smsAgreeYn = $('input:radio[name=smsAgreeYn]:checked').val();
+		let customer = {};
+		customer.custNo = custNo;
+		customer.managedRsn = managedRsn;
+		customer.managedDtlRsn = managedDtlRsn;
+		customer.email = email;
+		customer.custGb = $('#custGb').val();
+		customer.custGrade = $('#custGrade').val();
+		customer.birthYmd = $('#birthYmd').val();
+		customer.homePostNo = $('#homePostNo').val();
+		customer.homeBaseAddr = $('#homeBaseAddr').val();
+		customer.homeDtlAddr = $('#homeDtlAddr').val();
+		customer.emailAgreeYn = $('input:radio[name=emailAgreeYn]:checked').val();
+		customer.smsAgreeYn = $('input:radio[name=smsAgreeYn]:checked').val();
 
 
 		mcxDialog.confirm("기본정보를 수정 하시겠습니까?", {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function () {
-				let jsonData = JSON.stringify(params);
-				console.log(jsonData);
-				//gagajf.ajaxJsonSubmit('/customer/info/update', jsonData, fnSearchCustInfo);
+				let jsonData = JSON.stringify(customer);
+				//console.log(jsonData);
+				gagajf.ajaxJsonSubmit('/customer/info/save', jsonData, fnSearchCustInfo);
 			}
 		});
 	});