Merge branch '5175_마이페이지_및_결제'

This commit is contained in:
JIWOO 2025-08-08 09:36:16 +09:00
commit fd550ea580
17 changed files with 485 additions and 70 deletions

View File

@ -278,6 +278,8 @@ public class MjonPayV2Controller {
try {
// 다음 결제시 결제수단 SELECT
nextPayMethod = userManageService.selectNextPayMethod(userId);
// 실제 마지막 결제 방식 -
}
catch(Exception e) {
isSuccess = false;
@ -1640,6 +1642,45 @@ public class MjonPayV2Controller {
return "web/cop/kgmV2/bankOkUrl";
}
/**
* 마지막 결제수단 SELECT
* @throws Exception
*/
@RequestMapping(value = "/web/member/pay/selectLastPayMethodAjax.do")
public ModelAndView selectLastPayMethodAjax(MjonPayVO mjonPayVO,
HttpServletRequest request ) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = true;
String msg = "";
String nextPayMethod = "";
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
if(userId == null) {
isSuccess = false;
msg = "로그인이 필요합니다.";
}
try {
// 다음 결제시 결제수단 SELECT
nextPayMethod = userManageService.selectLastPayMethod(userId);
}
catch(Exception e) {
isSuccess = false;
msg = e.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
modelAndView.addObject("nextPayMethod", nextPayMethod);
return modelAndView;
}
// Get Server Path
public static String getKgServerPath(HttpServletRequest request) {
String kgmPath = request.getScheme() + "://" + request.getServerName() +":" + request.getServerPort();

View File

@ -1,5 +1,10 @@
package itn.let.uat.uia.service.impl;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.List;
import javax.annotation.Resource;
@ -11,14 +16,16 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import itn.com.cmm.util.StringUtil;
import itn.com.uss.olh.hpc.service.HackIpService;
import itn.com.uss.olh.hpc.service.HackIpVO;
import itn.com.utl.fcc.service.EgovStringUtil;
import itn.let.mjo.cert.service.CertVO;
import itn.let.mjo.msgdata.service.MjonMsgDataService;
import itn.let.mjo.msgsent.service.MjonMsgSentVO;
import itn.let.mjo.pay.service.KmcVO;
import itn.let.sec.rgm.service.AuthorGroup;
import itn.let.sec.rgm.service.EgovAuthorGroupService;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.uat.uia.service.AuthCertVO;
import itn.let.uss.umt.service.AdmProcHstryVO;
import itn.let.uss.umt.service.EgovMberManageService;
@ -82,6 +89,10 @@ public class EgovMberManageServiceImpl extends EgovAbstractServiceImpl implement
@Resource(name = "hackIpService")
private HackIpService hackIpService;
/* MjonMsgDataService */
@Resource(name = "MjonMsgDataService")
private MjonMsgDataService mjonMsgDataService;
@Override
public int insertMber(MberManageVO mberManageVO) throws Exception {
@ -621,4 +632,71 @@ public class EgovMberManageServiceImpl extends EgovAbstractServiceImpl implement
return mberManageDAO.findTopByregDateFromCertLog(authCertVO);
}
public MberManageVO selectMberHeaderInfo(String mberId) throws Exception {
//회원 단가, 이벤트 단가, 이벤트 종료일 조회
MberManageVO headerInfo = mberManageDAO.selectMberHeaderInfo(mberId);
//기본 단가 조회
JoinSettingVO sysPrice = mjonMsgDataService.selectJoinSettingInfo();
//이벤트 종료까지 남은 계산
long eventLeftDay = calculateEventLeftDay(headerInfo.getEventEndDate());
headerInfo.setEventLeftDay(String.valueOf(eventLeftDay));
//이벤트 유무에 따라 이벤트 잔액 or 잔액 사용
boolean isEventActive = eventLeftDay > 0;
double money = isEventActive ? headerInfo.getEventRemainCash() : headerInfo.getUserMoney();
//이벤트, 회원 단가가 0일 기본 단가 사용
setPrices(headerInfo, sysPrice, isEventActive);
//발송가능 건수 조회
calculateAvailableCounts(headerInfo, money);
return headerInfo;
}
private long calculateEventLeftDay(String eventEndDateStr) {
if (StringUtil.isEmpty(eventEndDateStr)) return 0;
LocalDate today = LocalDate.now();
LocalDate eventEndDate = LocalDate.parse(eventEndDateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
return ChronoUnit.DAYS.between(today, eventEndDate);
}
private void setPrices(MberManageVO headerInfo, JoinSettingVO sysPrice, boolean isEventActive) {
if (isEventActive) {
headerInfo.setHeaderShortPrice(priceChk(headerInfo.getEventShortPrice(), sysPrice.getShortPrice()));
headerInfo.setHeaderLongPrice(priceChk(headerInfo.getEventLongPrice(), sysPrice.getLongPrice()));
headerInfo.setHeaderPicturePrice(priceChk(headerInfo.getEventPicturePrice(), sysPrice.getPicturePrice()));
headerInfo.setHeaderPicture2Price(priceChk(headerInfo.getEventPicture2Price(), sysPrice.getPicture2Price()));
headerInfo.setHeaderPicture3Price(priceChk(headerInfo.getEventPicture3Price(), sysPrice.getPicture3Price()));
} else {
headerInfo.setHeaderShortPrice(priceChk(headerInfo.getShortPrice(), sysPrice.getShortPrice()));
headerInfo.setHeaderLongPrice(priceChk(headerInfo.getLongPrice(), sysPrice.getLongPrice()));
headerInfo.setHeaderPicturePrice(priceChk(headerInfo.getPicturePrice(), sysPrice.getPicturePrice()));
headerInfo.setHeaderPicture2Price(priceChk(headerInfo.getPicture2Price(), sysPrice.getPicture2Price()));
headerInfo.setHeaderPicture3Price(priceChk(headerInfo.getPicture3Price(), sysPrice.getPicture3Price()));
}
// 카카오, 팩스 단가는 기본 단가 고정
headerInfo.setHeaderKakaoAtPrice(sysPrice.getKakaoAtPrice());
headerInfo.setHeaderFaxPrice(sysPrice.getFaxPrice());
}
private float priceChk(float price, float sysPrice) {
return price > 0 ? price : sysPrice;
}
private void calculateAvailableCounts(MberManageVO headerInfo, double money) {
headerInfo.setHeaderShortCnt(calcCount(money, headerInfo.getHeaderShortPrice()));
headerInfo.setHeaderLongCnt(calcCount(money, headerInfo.getHeaderLongPrice()));
headerInfo.setHeaderPictureCnt(calcCount(money, headerInfo.getHeaderPicturePrice()));
headerInfo.setHeaderPicture2Cnt(calcCount(money, headerInfo.getHeaderPicture2Price()));
headerInfo.setHeaderPicture3Cnt(calcCount(money, headerInfo.getHeaderPicture3Price()));
headerInfo.setHeaderKakaoAtCnt(calcCount(money, headerInfo.getHeaderKakaoAtPrice()));
headerInfo.setHeaderFaxCnt(calcCount(money, headerInfo.getHeaderFaxPrice()));
}
private int calcCount(double money, double price) {
if (price <= 0) return 0;
return (int) Math.floor(money / price);
}
}

View File

@ -346,4 +346,7 @@ public class MberManageDAO extends EgovComAbstractDAO{
return (String)select("mberManageDAO.findTopByregDateFromCertLog", authCertVO);
}
public MberManageVO selectMberHeaderInfo(String mberId) {
return (MberManageVO) select("mberManageDAO.selectMberHeaderInfo", mberId);
}
}

View File

@ -251,4 +251,6 @@ public interface EgovMberManageService {
public String findTopByregDateFromCertLog(AuthCertVO authCertVO);
//사용자 헤더 정보(단가, 이벤트 활성화 기간)
public MberManageVO selectMberHeaderInfo(String mberId) throws Exception;
}

View File

@ -220,4 +220,6 @@ public interface EgovUserManageService {
public Map<String, Object> selectFaxSendList(FaxGroupDataVO faxGroupDataVO);
// 마지막 결제수단 조회
public String selectLastPayMethod(String mberId) throws Exception;
}

View File

@ -512,6 +512,39 @@ public class MberManageVO extends UserDefaultVO{
*/
private String secuLoginFlag;
/**
* 회원 이벤트 정보
*/
private String eventEndDate; //회원 이벤트 종료일자
private double eventRemainCash; //이벤트 차감 남은 Cash
private float eventShortPrice; //이벤트 단문 가격
private float eventLongPrice; //이벤트 장문 가격
private float eventPicturePrice; //이벤트 그림 1장 가격
private float eventPicture2Price; //이벤트 그림 2장 가격
private float eventPicture3Price; //이벤트 그림 3장 가격
private String eventLeftDay; //이벤트 남은 기간
/**
* 헤더 영역 정보(단가, 발송가능 건수)
*/
private float headerShortPrice;
private float headerLongPrice;
private float headerPicturePrice;
private float headerPicture2Price;
private float headerPicture3Price;
private float headerKakaoAtPrice;
private float headerKakaoFtPrice;
private float headerFaxPrice;
private int headerShortCnt;
private int headerLongCnt;
private int headerPictureCnt;
private int headerPicture2Cnt;
private int headerPicture3Cnt;
private int headerKakaoAtCnt;
private int headerKakaoFtCnt;
private int headerFaxCnt;
public String getSmsCode() {
return smsCode;
}
@ -1804,6 +1837,150 @@ public class MberManageVO extends UserDefaultVO{
public void setSecuLoginFlag(String secuLoginFlag) {
this.secuLoginFlag = secuLoginFlag;
}
public String getEventEndDate() {
return eventEndDate;
}
public void setEventEndDate(String eventEndDate) {
this.eventEndDate = eventEndDate;
}
public double getEventRemainCash() {
return eventRemainCash;
}
public void setEventRemainCash(double eventRemainCash) {
this.eventRemainCash = eventRemainCash;
}
public float getEventShortPrice() {
return eventShortPrice;
}
public void setEventShortPrice(float eventShortPrice) {
this.eventShortPrice = eventShortPrice;
}
public float getEventLongPrice() {
return eventLongPrice;
}
public void setEventLongPrice(float eventLongPrice) {
this.eventLongPrice = eventLongPrice;
}
public float getEventPicturePrice() {
return eventPicturePrice;
}
public void setEventPicturePrice(float eventPicturePrice) {
this.eventPicturePrice = eventPicturePrice;
}
public float getEventPicture2Price() {
return eventPicture2Price;
}
public void setEventPicture2Price(float eventPicture2Price) {
this.eventPicture2Price = eventPicture2Price;
}
public float getEventPicture3Price() {
return eventPicture3Price;
}
public void setEventPicture3Price(float eventPicture3Price) {
this.eventPicture3Price = eventPicture3Price;
}
public String getEventLeftDay() {
return eventLeftDay;
}
public void setEventLeftDay(String eventLeftDay) {
this.eventLeftDay = eventLeftDay;
}
public float getHeaderShortPrice() {
return headerShortPrice;
}
public void setHeaderShortPrice(float headerShortPrice) {
this.headerShortPrice = headerShortPrice;
}
public float getHeaderLongPrice() {
return headerLongPrice;
}
public void setHeaderLongPrice(float headerLongPrice) {
this.headerLongPrice = headerLongPrice;
}
public float getHeaderPicturePrice() {
return headerPicturePrice;
}
public void setHeaderPicturePrice(float headerPicturePrice) {
this.headerPicturePrice = headerPicturePrice;
}
public float getHeaderPicture2Price() {
return headerPicture2Price;
}
public void setHeaderPicture2Price(float headerPicture2Price) {
this.headerPicture2Price = headerPicture2Price;
}
public float getHeaderPicture3Price() {
return headerPicture3Price;
}
public void setHeaderPicture3Price(float headerPicture3Price) {
this.headerPicture3Price = headerPicture3Price;
}
public int getHeaderShortCnt() {
return headerShortCnt;
}
public void setHeaderShortCnt(int headerShortCnt) {
this.headerShortCnt = headerShortCnt;
}
public int getHeaderLongCnt() {
return headerLongCnt;
}
public void setHeaderLongCnt(int headerLongCnt) {
this.headerLongCnt = headerLongCnt;
}
public int getHeaderPictureCnt() {
return headerPictureCnt;
}
public void setHeaderPictureCnt(int headerPictureCnt) {
this.headerPictureCnt = headerPictureCnt;
}
public int getHeaderPicture2Cnt() {
return headerPicture2Cnt;
}
public void setHeaderPicture2Cnt(int headerPicture2Cnt) {
this.headerPicture2Cnt = headerPicture2Cnt;
}
public int getHeaderPicture3Cnt() {
return headerPicture3Cnt;
}
public void setHeaderPicture3Cnt(int headerPicture3Cnt) {
this.headerPicture3Cnt = headerPicture3Cnt;
}
public float getHeaderKakaoAtPrice() {
return headerKakaoAtPrice;
}
public void setHeaderKakaoAtPrice(float headerKakaoAtPrice) {
this.headerKakaoAtPrice = headerKakaoAtPrice;
}
public float getHeaderKakaoFtPrice() {
return headerKakaoFtPrice;
}
public void setHeaderKakaoFtPrice(float headerKakaoFtPrice) {
this.headerKakaoFtPrice = headerKakaoFtPrice;
}
public float getHeaderFaxPrice() {
return headerFaxPrice;
}
public void setHeaderFaxPrice(float headerFaxPrice) {
this.headerFaxPrice = headerFaxPrice;
}
public int getHeaderKakaoAtCnt() {
return headerKakaoAtCnt;
}
public void setHeaderKakaoAtCnt(int headerKakaoAtCnt) {
this.headerKakaoAtCnt = headerKakaoAtCnt;
}
public int getHeaderKakaoFtCnt() {
return headerKakaoFtCnt;
}
public void setHeaderKakaoFtCnt(int headerKakaoFtCnt) {
this.headerKakaoFtCnt = headerKakaoFtCnt;
}
public int getHeaderFaxCnt() {
return headerFaxCnt;
}
public void setHeaderFaxCnt(int headerFaxCnt) {
this.headerFaxCnt = headerFaxCnt;
}
}

View File

@ -883,4 +883,10 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
return resultMap;
}
// 마지막 결제수단 SELECT
@Override
public String selectLastPayMethod(String mberId) throws Exception {
return userManageDAO.selectLastPayMethod(mberId);
}
}

View File

@ -321,4 +321,8 @@ public class UserManageDAO extends EgovAbstractDAO{
return (int) select("userManageDAO.selectUserPrePaymentPGdataCount", userId);
}
// 마지막 결제수단 SELECT
public String selectLastPayMethod(String mberId) throws Exception{
return (String) select("userManageDAO.selectLastPayMethod", mberId);
}
}

View File

@ -12,6 +12,9 @@ import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.RSAPublicKeySpec;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@ -106,6 +109,7 @@ import itn.let.lett.service.LetterVO;
import itn.let.mjo.addr.service.AddrTransHistService;
import itn.let.mjo.addr.service.AddrTransHistVO;
import itn.let.mjo.event.service.MjonEventService;
import itn.let.mjo.event.service.MjonEventVO;
import itn.let.mjo.kisa.service.KisaService;
import itn.let.mjo.kisa.service.KisaVO;
import itn.let.mjo.mjocommon.MjonForienIpChk;
@ -130,6 +134,7 @@ import itn.let.sym.mnu.mpm.service.MenuManageVO;
import itn.let.sym.prm.service.EgovProgrmManageService;
import itn.let.sym.prm.service.ProgrmManageVO;
import itn.let.sym.site.service.EgovSiteManagerService;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.sym.site.service.MetaTagVO;
import itn.let.sym.site.service.SiteManagerVO;
import itn.let.uss.umt.service.EgovMberManageService;
@ -1256,6 +1261,16 @@ public class MainController {
model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO));
}
/*
* 회원별 단가, 기본 단가, 이벤트 정보 조회
* 2025.07.25 이지우 추가
* */
MberManageVO mberHeaderInfoVO = new MberManageVO();
if(loginVO != null) {
mberHeaderInfoVO = mberManageService.selectMberHeaderInfo(loginVO.getId());
}
model.addAttribute("mberHeaderInfoVO", mberHeaderInfoVO);
return "web/com/webCommonHeader";
}

View File

@ -2142,4 +2142,38 @@
</update>
<select id="mberManageDAO.selectMberHeaderInfo" resultClass="itn.let.uss.umt.service.MberManageVO" parameterClass="String">
SELECT
L.SHORT_PRICE AS shortPrice
, L.LONG_PRICE AS longPrice
, L.PICTURE_PRICE AS picturePrice
, L.PICTURE2_PRICE AS picture2Price
, L.PICTURE3_PRICE AS picture3Price
, L.PRE_PAYMENT_YN AS prePaymentYn
, L.USER_MONEY AS userMoney
, IFNULL(MEMI.EVENT_SHORT_PRICE, 0) AS eventShortPrice
, IFNULL(MEMI.EVENT_LONG_PRICE, 0) AS eventLongPrice
, IFNULL(MEMI.EVENT_PICTURE_PRICE, 0) AS eventPicturePrice
, IFNULL(MEMI.EVENT_PICTURE2_PRICE, 0) AS eventPicture2Price
, IFNULL(MEMI.EVENT_PICTURE3_PRICE, 0) AS eventPicture3Price
, IFNULL(MEMI.EVENT_REMAIN_CASH, 0) AS eventRemainCash
, DATE_FORMAT(MEMI.EVENT_END_DATE, '%Y-%m-%d') AS eventEndDate
FROM
LETTNGNRLMBER L
LEFT JOIN
MJ_EVENT_MBER_INFO MEMI
ON L.MBER_ID = MEMI.MBER_ID
AND MEMI.EVENT_INFO_ID = (
SELECT
MAX(EVENT_INFO_ID)
FROM
MJ_EVENT_MBER_INFO
WHERE
MBER_ID = #mberID#
AND EVENT_STATUS = 'Y'
)
WHERE L.MBER_ID = #mberId#
</select>
</sqlMap>

View File

@ -1459,4 +1459,14 @@
</select>
<!-- 마지막 결제수단 SELECT -->
<select id="userManageDAO.selectLastPayMethod" parameterClass="String" resultClass="String">
SELECT
IFNULL(PAY_METHOD, '') AS nextPayMethod
FROM MJ_PG
WHERE
USER_ID = #userId#
ORDER BY REG_DATE DESC LIMIT 1
</select>
</sqlMap>

View File

@ -1398,14 +1398,14 @@ function actionLogin_end(){
<div class="inner">
<ul class="menu_left">
<li><a href="#" id="favorite" ><i class="hdTop_fav"></i>즐겨찾기추가</a></li>
<li><a href="<c:out value='/web/user/mberInfoIndex.do'/>" ><i class="hdTop_mypage"></i>마이페이지</a></li>
<li><a href="<c:out value='/web/cop/bbs/NoticeList.do'/>" ><i class="hdTop_center"></i>고객센터</a></li>
<li><a href="<c:out value='/web/user/mberInfoChange.do'/>" ><i class="hdTop_mypage"></i>마이페이지</a></li>
<li><a href="<c:out value='/web/cop/bbs/QnaList.do'/>" ><i class="hdTop_center"></i>1:1 문의</a></li>
</ul>
<ul class="menu_right">
<li><a href="#" onclick="location.href='/web/member/pay/PayView.do'" >충전하기</a></li>
<li class="SortLine"><a href="/web/pay/PayGuide.do" >요금안내</a></li>
<li class="SortLine"><a href="/web/cop/bbs/FaqList.do" >이용안내</a></li>
<li class="SortLine"><a href="/web/cop/bbs/QnaList.do" >1:1 문의</a></li>
<li class="SortLine"><a href="/web/cop/bbs/NoticeList.do" >고객센터</a></li>
<li class="SortLine"><a href="/web/cop/bbs/SuggestList.do" >불편신고</a></li>
</ul>
</div>
@ -1627,7 +1627,9 @@ function actionLogin_end(){
</li>
<li>
<dl>
<dt><a href="<c:out value='/web/user/mberInfoIndex.do'/>" >마이페이지</a></dt>
<%-- 250724 마이페이지 대시보드 삭제 --%>
<%-- <dt><a href="<c:out value='/web/user/mberInfoIndex.do'/>" >마이페이지</a></dt> --%>
<dt><a href="<c:out value='/web/user/mberInfoChange.do'/>" >마이페이지</a></dt>
<dd>
<ul>
<li><a href="<c:out value='/web/user/mberInfoChange.do'/>" >회원정보 변경</a></li>
@ -1637,7 +1639,7 @@ function actionLogin_end(){
</c:if>
<li><a href="<c:out value='/web/user/passwordChange.do'/>" >비밀번호 변경</a></li>
<li><a href="<c:out value='/web/user/sendNumberManage.do'/>" >발신번호 관리</a></li>
<li><a href="<c:out value='/web/user/notifyManage.do'/>" >알림설정</a></li>
<%-- <li><a href="<c:out value='/web/user/notifyManage.do'/>" >알림설정</a></li> --%>
<%-- <li><a href="<c:out value='/web/user/mberSecession.do'/>" >회원탈퇴</a></li> --%>
<%-- <li><a href="<c:out value='/web/user/kisaReport.do'/>" >KISA 신고</a></li> --%>
</ul>
@ -1744,8 +1746,9 @@ function actionLogin_end(){
<div class="login_left">
<div class="login_info">
<input type="hidden" id="loginId" name="loginId" value="${LoginVO.id}">
<i><img src="/publish/images/mypageIcon2.png" id="commonHeaderGradeIcon" /></i>
<!-- <i><img src="/publish/images/mypageIcon2.png" id="commonHeaderGradeIcon" /></i> -->
<div class="login2_name" onclick="location.href='/web/user/mberInfoChange.do'" style="cursor:pointer;">
<i class="icon_user"></i>
<p><c:out value="${LoginVO.name}"/></p>
<c:choose>
<c:when test="${LoginVO.dept == 'p'}">
@ -1765,8 +1768,8 @@ function actionLogin_end(){
<img src="/pb/img/common/topTimeOut.png" alt="타임아웃 아이콘">
</a> -->
</div>
<button type="button" class="btnType btnType3" onclick="location.href='/web/user/mberInfoIndex.do'">마이페이지</button>
<button type="button" class="btnType btnType2" onclick="location.href='/web/uat/uia/actionLogout.do'">로그아웃</button>
<!-- <button type="button" class="btnType btnType3" onclick="location.href='/web/user/mberInfoIndex.do'">마이페이지</button> -->
<button type="button" class="btnType btn_36 fill_gray" onclick="location.href='/web/uat/uia/actionLogout.do'">로그아웃</button>
<div class="security_box">
@ -1778,34 +1781,89 @@ function actionLogin_end(){
</div>
<div class="login_pay">
<div class="check_money">
<div class="holdingsum_box">
<div class="holdingsum_box">
<i></i>
<div class="user_money_wrap">
보유잔액
<div class="hover_content_wrap">
<i class="qmMark">?</i>
<div class="hover_content">
<p class="hover_content_title">
<img src="/publish/images/content/icon_mypage_message.png" alt=""> 나의단가 <span>(발송가능 건수)</span>
</p>
<ul class="send_available_number">
<li>
<p class="title">· 단문</p>
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerShortPrice}" var="shortPrice" />
<p class="number"><span class="c_002c9a fwBold"><c:out value="${shortPrice}"/></span>원
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerShortCnt}" var="shortCnt" />
(<c:out value="${shortCnt}"/>건)</p>
</li>
<li>
<p class="title">· 장문</p>
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerLongPrice}" var="LongPrice" />
<p class="number"><span class="c_002c9a fwBold"><c:out value="${LongPrice}"/></span>원
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerLongCnt}" var="LongCnt" />
(<c:out value="${LongCnt}"/>건)</p>
</li>
<li>
<p class="title">· 그림(1장)</p>
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPicturePrice}" var="picturePrice" />
<p class="number"><span class="c_002c9a fwBold"><c:out value="${picturePrice}"/></span>원
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPictureCnt}" var="pictureCnt" />
(<c:out value="${pictureCnt}"/>건)</p>
</li>
<li>
<p class="title">· 그림(2장)</p>
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPicture2Price}" var="picture2Price" />
<p class="number"><span class="c_002c9a fwBold"><c:out value="${picture2Price}"/></span>원
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPicture2Cnt}" var="picture2Cnt" />
(<c:out value="${picture2Cnt}"/>건)</p>
</li>
<li>
<p class="title">· 그림(3장)</p>
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPicture3Price}" var="picture3Price" />
<p class="number"><span class="c_002c9a fwBold"><c:out value="${picture3Price}"/></span>원
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerPicture3Cnt}" var="picture3Cnt" />
(<c:out value="${picture3Cnt}"/>건)</p>
</li>
<li>
<p class="title">· 알림톡</p>
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerKakaoAtPrice}" var="kakaoAtPrice" />
<p class="number"><span class="c_002c9a fwBold"><c:out value="${kakaoAtPrice}"/></span>원
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerKakaoAtCnt}" var="kakaoAtCnt" />
(<c:out value="${kakaoAtCnt}"/>건)</p>
</li>
<li>
<p class="title">· 팩스</p>
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerFaxPrice}" var="faxPrice" />
<p class="number"><span class="c_002c9a fwBold"><c:out value="${faxPrice}"/></span>원
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.headerFaxCnt}" var="faxCnt" />
(<c:out value="${faxCnt}"/>건)</p>
</li>
</ul>
<c:if test="${prePaymentYn eq 'Y' and mberHeaderInfoVO.eventLeftDay > 0}">
<fmt:formatNumber type="number" maxFractionDigits="3" value="${mberHeaderInfoVO.eventRemainCash}" var="eventRemainCash" />
<div class="event_term"><p>이벤트<span class="fwBold">(D-${mberHeaderInfoVO.eventLeftDay})</span></p><p><span class="fwBold price">${eventRemainCash}</span>원</p></div>
</c:if>
<c:if test="${prePaymentYn eq 'N'}">
<div class="event_term" style="display:block">후불제(매월 1일 자동충전)</div>
</c:if>
</div>
</div>
<fmt:formatNumber type="number" maxFractionDigits="3" value="${userMoney}" var="commaPrice" />
<p>보유잔액<!-- <em>(캐시)</em> --> <span class="fwMd" id="hdUserMoney"><c:out value="${commaPrice}"/></span>원</p>
<c:if test="${prePaymentYn eq 'N'}">
<dl>
<dd>후불제 고객의 보유잔액(캐시)은 당월 발송 가능<br>금액을 말하며 <span>매월 1일 자동으로 충전</span>됩니다.</dd>
</dl>
</c:if>
</div>
<span class="fwMd" id="hdUserMoney"><c:out value="${commaPrice}"/></span>원
</ >
</div>
<button type="button" class="btnType btnType3" onclick="location.href='/web/member/pay/PayView.do'">충전</button>
<div class="account_box">
<button type="button" class="btnType btnType3" onclick="location.href='/web/member/pay/PayView.do?tabType=2'">전용계좌</button>
<c:if test="${not empty myBankList}">
<dl>
<dt>전용계좌</dt>
<dd><c:out value="${myBankList[0].codeNm}"/> <c:out value="${myBankList[0].acctNo}"/></dd>
</dl>
</c:if>
</div>
</div>
<div class="point">
<i></i>
<fmt:formatNumber type="number" maxFractionDigits="3" value="${userPoint}" var="commaPoint" />
<p><!-- <em>적립</em> -->포인트 <span class="fwMd"><c:out value="${commaPoint}"/></span>원</p>
<button type="button" data-tooltip="popup04" class="btnType btnType3">교환</button>
</div>
</div>
<div class="point">
<i></i>
<fmt:formatNumber type="number" maxFractionDigits="3" value="${userPoint}" var="commaPoint" />
<p><!-- <em>적립</em> -->포인트 <span class="fwMd"><c:out value="${commaPoint}"/></span>원</p>
<button type="button" data-tooltip="popup04" class="btnType btnType3">교환</button>
</div>
<!-- <div class="event">
<span><i></i>이달의 이벤트</span>
<button type="button" class="btnType btnType2" onclick="location.href='/web/cop/bbs/EventList.do'">GO</button>

View File

@ -41,7 +41,7 @@ function getNextPayMethod() {
var nextPayMethod = "";
$.ajax({
type: "POST",
url: "/web/member/pay/selectNextPayMethodAjax.do",
url: "/web/member/pay/selectLastPayMethodAjax.do",
data: {},
dataType:'json',
async: false,

View File

@ -242,25 +242,17 @@ function updateUserInfo(){
$("#receivemail").val("N");
}
if($("#emailId").val() == ""){
alert("이메일을 입력해주세요.");
if($("#emailId").val().trim() == "" || $("#emailAdd").val().trim() == ""){
alert("이메일은 필수 입력 항목입니다.")
return false;
}
if($("#emailId").val() != ""|| $("#emailAdd").val() != ""){
if($("#emailAdd").val() != ""){
var email = $("#emailId").val() + "@" + $("#emailAdd").val();
var taxExptext = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
if(taxExptext.test(email)==false){
alert("이메일주소 형식이 올바르지 않습니다.");
return false;
}
$("#mberEmailAdres").val(email);
}else{
alert("이메일 주소를 확인해 주세요");
}else {
var email = $("#emailId").val() + "@" + $("#emailAdd").val();
var taxExptext = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
if(taxExptext.test(email)==false){
alert("이메일주소 형식이 올바르지 않습니다.");
return false;
}
$("#mberEmailAdres").val(email);
}
if("${cmpPhoneChangeManageVO.hstSttus}" == '03'){
@ -678,7 +670,7 @@ function changeValueWork(obj){
</c:if>
<div class="input_list_item emailWrap">
<div>
<div class="input_left"><span class="essential">*</span>이메일</div>
<div class="input_left">이메일</div>
<div class="input_right">
<div class="email">
<label for="" class="label">이메일 주소 앞자리</label>

View File

@ -149,21 +149,17 @@ function updateUserInfo(){
$("#receivemail").val("N");
}
if($("#emailId").val() != ""|| $("#emailAdd").val() != ""){
if($("#emailAdd").val() != ""){
var email = $("#emailId").val() + "@" + $("#emailAdd").val();
var taxExptext = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
if(taxExptext.test(email)==false){
alert("이메일주소 형식이 올바르지 않습니다.");
return false;
}
$("#mberEmailAdres").val(email);
}else{
alert("이메일 주소를 확인해 주세요");
if($("#emailId").val().trim() == "" || $("#emailAdd").val().trim() == ""){
alert("이메일은 필수 입력 항목입니다.")
return false;
}else {
var email = $("#emailId").val() + "@" + $("#emailAdd").val();
var taxExptext = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
if(taxExptext.test(email)==false){
alert("이메일주소 형식이 올바르지 않습니다.");
return false;
}
$("#mberEmailAdres").val(email);
}
if("${userInfo.moblphonNo}" != $("#moblphonNo").val()){

View File

@ -30,9 +30,6 @@ $(document).ready(function(){
<li class="tab" id="sendNumberManage">
<button type="button" onclick="TabType5(this,'4'); location.href='/web/user/sendNumberManage.do'">발신번호 관리</button>
</li>
<li class="tab" id="notifyManage">
<button type="button" onclick="TabType5(this,'5'); location.href='/web/user/notifyManage.do'">알림설정</button>
</li>
<li class="tab" id="mberSecession">
<button type="button" onclick="TabType5(this,'6'); location.href='/web/user/mberSecession.do'">회원탈퇴</button>
</li>