등급제 요금안내 기능추가

This commit is contained in:
itn 2023-07-13 12:15:04 +09:00
parent 2ce5864be1
commit 63e3547633
5 changed files with 181 additions and 30 deletions

View File

@ -83,6 +83,8 @@ import itn.let.mjo.reservmsg.service.MjonReservMsgService;
import itn.let.mjo.tax.service.TaxService; import itn.let.mjo.tax.service.TaxService;
import itn.let.mjo.tax.service.TaxVO; import itn.let.mjo.tax.service.TaxVO;
import itn.let.schdlr.service.SchdlrManageService; import itn.let.schdlr.service.SchdlrManageService;
import itn.let.sym.grd.service.MberGrdService;
import itn.let.sym.grd.service.MberGrdVO;
import itn.let.sym.site.service.EgovSiteManagerService; import itn.let.sym.site.service.EgovSiteManagerService;
import itn.let.sym.site.service.JoinSettingVO; import itn.let.sym.site.service.JoinSettingVO;
import itn.let.uat.uia.service.AuthCertVO; import itn.let.uat.uia.service.AuthCertVO;
@ -158,6 +160,9 @@ public class MjonPayController {
@Resource(name = "egovSiteManagerService") @Resource(name = "egovSiteManagerService")
EgovSiteManagerService egovSiteManagerService; EgovSiteManagerService egovSiteManagerService;
@Resource(name = "mberGrdService")
MberGrdService mberGrdService;
//배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"}
private String[][] sendPayExcelValue ={ private String[][] sendPayExcelValue ={
{"0" ,"번호" , "1" , "" }, {"0" ,"번호" , "1" , "" },
@ -1627,6 +1632,10 @@ public class MjonPayController {
} }
model.addAttribute("tabType", tabType); model.addAttribute("tabType", tabType);
MberGrdVO mberGrdVO = new MberGrdVO();
List<MberGrdVO> mberGrdSettingList = mberGrdService.selectMberGrdSettingList(mberGrdVO);
model.addAttribute("mberGrdSettingList", mberGrdSettingList);
return "/web/pay/PayGuide"; return "/web/pay/PayGuide";
} }

View File

@ -5,6 +5,7 @@ import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
@ -77,8 +78,36 @@ public class MberGrdController {
return "/web/grd/MberGrdHistListAjax"; return "/web/grd/MberGrdHistListAjax";
} }
// 등급제 시행 ON/OFF 체크
@RequestMapping(value = "/web/grd/mberSettDetailAjax.do")
public ModelAndView mberSettingDetailAjax(
@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
boolean isSuccess = false;
String msg = "";
try{
MberGrdVO mberGrdVO1 = new MberGrdVO();
mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
isSuccess = true;
}
}
catch(Exception e) {
msg = e.getMessage();
}
modelAndView.addObject("isSuccess", isSuccess);
modelAndView.addObject("msg", msg);
return modelAndView;
}
// 등급제 적용여부 체크 // 등급제 적용여부 체크
@RequestMapping(value = "/web/member/grd/mberGrdChkAjax.do") @RequestMapping(value = "/web/grd/mberGrdChkAjax.do")
public ModelAndView mberGrdChkAjax( public ModelAndView mberGrdChkAjax(
@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception { @ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
@ -88,25 +117,28 @@ public class MberGrdController {
// 로그인VO에서 사용자 정보 가져오기 // 로그인VO에서 사용자 정보 가져오기
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
mberGrdVO.setMberId(userId);
boolean isSuccess = false; boolean isSuccess = false;
String msg = ""; String msg = "";
MberGrdVO rtnMberGrdVO = new MberGrdVO(); MberGrdVO rtnMberGrdVO = new MberGrdVO();
try{ try{
// 회원별 이벤트 진행여부 if (StringUtils.isNotEmpty(userId)) {
int mberEventPrgCnt = mberGrdService.selectMberEventPrgCnt(mberGrdVO.getMberId()); mberGrdVO.setMberId(userId);
if (mberEventPrgCnt == 0) {
rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId()); // 회원별 이벤트 진행여부
if (null != rtnMberGrdVO) { int mberEventPrgCnt = mberGrdService.selectMberEventPrgCnt(mberGrdVO.getMberId());
isSuccess = true; if (mberEventPrgCnt == 0) {
} rtnMberGrdVO = mberGrdService.selectMberGrdInfo(mberGrdVO.getMberId());
else { if (null != rtnMberGrdVO) {
msg = "종료"; isSuccess = true;
} }
else {
msg = "종료";
}
}
} }
} }
catch(Exception e) { catch(Exception e) {
msg = e.getMessage(); msg = e.getMessage();
@ -117,6 +149,6 @@ public class MberGrdController {
modelAndView.addObject("msg", msg); modelAndView.addObject("msg", msg);
return modelAndView; return modelAndView;
} }
} }

View File

@ -181,6 +181,7 @@
<!-- 회원 등급제 대상여부 정보(사용자화면용) --> <!-- 회원 등급제 대상여부 정보(사용자화면용) -->
<select id="mberGrdDAO.selectMberGrdInfo" parameterClass="String" resultClass="mberGrdVO"> <select id="mberGrdDAO.selectMberGrdInfo" parameterClass="String" resultClass="mberGrdVO">
<![CDATA[
SELECT SELECT
M.mberId M.mberId
, blineCode , blineCode
@ -239,6 +240,8 @@
ON G.GRD_SET_NO = S.GRD_SET_NO ON G.GRD_SET_NO = S.GRD_SET_NO
JOIN MJ_MBER_SETTING B JOIN MJ_MBER_SETTING B
WHERE 1=1 WHERE 1=1
AND B.GRD_NOTI = 'Y'
AND DATE_FORMAT(B.GRD_DATE, '%Y-%m-%d') <= DATE_FORMAT(NOW(), '%Y-%m-%d')
AND G.GRD_STATUS = 'Y' AND G.GRD_STATUS = 'Y'
AND NOW() BETWEEN G.GRD_START_DATE AND G.GRD_END_DATE AND NOW() BETWEEN G.GRD_START_DATE AND G.GRD_END_DATE
AND G.MBER_ID = #mberId# AND G.MBER_ID = #mberId#
@ -246,6 +249,7 @@
WHERE M.isSalePrice = 'N' WHERE M.isSalePrice = 'N'
OR M.blineCode != 'N' OR M.blineCode != 'N'
LIMIT 1 LIMIT 1
]]>
</select> </select>
<!-- 회원별 등급 누적결제액 상세 --> <!-- 회원별 등급 누적결제액 상세 -->

View File

@ -65,6 +65,12 @@ $(document).ready(function () {
$("#btnEstimate").trigger("click"); $("#btnEstimate").trigger("click");
} }
//등급제 시행 ON/OFF 체크
//getMberSettingDetail();
// 등급제 대상 여부
//getMberGrdChk();
}); });
//품목정보 추가 //품목정보 추가
@ -318,21 +324,70 @@ function fn_gunClear(){
} }
//체크박스 전체선택/해제 //체크박스 전체선택/해제
$(document).on("click", "#chkAll", function(e) { $(document).on("click", "#chkAll", function(e) {
var isChecked = $(this).is(":checked"); var isChecked = $(this).is(":checked");
$("input[name=chkEach]:checkbox").prop("checked", isChecked); $("input[name=chkEach]:checkbox").prop("checked", isChecked);
}); });
/* 윈도우팝업 열기 */
function infoPop(pageUrl){
document.infoPopForm.pageType.value = pageUrl;
document.infoPopForm.action = "/web/pop/infoPop.do";
document.infoPopForm.method = "post";
window.open("about:blank", 'infoPop', 'width=790, height=280, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
document.infoPopForm.target = "infoPop";
document.infoPopForm.submit();
}
//등급제 시행 ON/OFF 체크
function getMberSettingDetail() {
$.ajax({
type: "POST",
url: "/web/grd/mberSettDetailAjax.do",
data: {},
dataType:'json',
async: false,
success: function (data) {
if (data.isSuccess) {
// 문자(등급별 요금 안내)
$("#mberGrdSettingArea").show();
}
else {
//alert("Msg : " + data.msg);
}
},
error: function (e) {
//alert("ERROR : " + JSON.stringify(e));
}
});
}
// 등급제 대상 여부
function getMberGrdChk() {
$.ajax({
type: "POST",
url: "/web/grd/mberGrdChkAjax.do",
data: {},
dataType:'json',
async: false,
success: function (data) {
if (data.isSuccess) {
// 등급제 누적결제액 세부내역
$("#grdShowArea").html("(등급 : " + data.rtnMberGrdVO.grdSetNm + ")");
$("#levelSubTitle").html("(" + data.rtnMberGrdVO.grdDate + " ~ 현재)");
}
else {
//alert("Msg : " + data.msg);
}
},
error: function (e) {
//alert("ERROR : " + JSON.stringify(e));
}
});
}
/* 윈도우팝업 열기 */
function infoPop(pageUrl){
document.infoPopForm.pageType.value = pageUrl;
document.infoPopForm.action = "/web/pop/infoPop.do";
document.infoPopForm.method = "post";
window.open("about:blank", 'infoPop', 'width=790, height=280, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
document.infoPopForm.target = "infoPop";
document.infoPopForm.submit();
}
</script> </script>
<form name="popForm" method="post"> <form name="popForm" method="post">
@ -376,7 +431,7 @@ function fn_gunClear(){
<div class="fee_cont current" id="tab1_1"> <div class="fee_cont current" id="tab1_1">
<div> <div>
<p class="tType1_title"> <p class="tType1_title">
<img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자 <img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자<span class="level_first" id="grdShowArea"></span>
</p> </p>
<table class="tType2"> <table class="tType2">
<caption></caption> <caption></caption>
@ -412,6 +467,57 @@ function fn_gunClear(){
</table> </table>
<span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span> <span class="reqTxt4">* 텍스트 용량(Byte)에 대한 안내 : 한글2Byte, 영문·숫자 1Byte를 차지.</span>
<!--문자_등급별 요금 안내 추가 시작-->
<div id="mberGrdSettingArea" style="display: none;">
<p class="tType1_title level"><img src="/publish/images/content/icon_fee1.png" alt="문자이미지"> 문자<span>(등급별 요금 안내)</span></p>
<table class="tType2 tType2_level">
<caption></caption>
<colgroup>
<col style="width: 13%;">
<col style="width: auto;">
<col style="width: 11%;">
<col style="width: 11%;">
<col style="width: 11%;">
<col style="width: 11%;">
<col style="width: 11%;">
</colgroup>
<thead>
<tr>
<th>등급</th>
<th class="th_second">누적결제액<span id="levelSubTitle"></span></th>
<th>단문</th>
<th>장문</th>
<th>그림(1장)</th>
<th>그림(2장)</th>
<th>그림(3장)</th>
</tr>
</thead>
<tbody>
<c:forEach var="result" items="${mberGrdSettingList}" varStatus="status">
<tr class="level_table">
<th><c:out value="${result.grdSetNm}"/></th>
<td class="level_price"><c:out value="${result.stdAmtComma}"/></td>
<td><c:out value="${result.shortPrice}"/></td>
<td><c:out value="${result.longPrice}"/></td>
<td><c:out value="${result.picturePrice}"/></td>
<td><c:out value="${result.picture2Price}"/></td>
<td><c:out value="${result.picture3Price}"/></td>
</tr>
</c:forEach>
</tbody>
</table>
<span class="reqTxt4">
* 등급별 요금제는 당사의 정책 및 운영의 필요상 수정, 중단 또는 변경될 수 있습니다. <br>
* 누적결제액은 등급별 요금제 적용일로부터 적립된 결제금액을 말하며, 누적결제액에 따라 등급은 자동으로 적용됩니다. <br>
* "첫결제 이벤트" 등 이벤트 결제금액은 등급별 요금제 누적결제액에서 제외됩니다. <br>
</span>
<p class="reqTxt4 reqTxt4_last">
* 문자피싱, 스미싱, 주식, 도박, 로또, 스팸, 사기, 협박, 범죄, 유사투자, 유사수신 등을 목적으로 하거나 교사 또는 방조하는 내용의 정보, 발신번호 조작 등으로 인지되는 문자에 대해서는 사전 또는 즉시 발송을 차단하고
이용을 정지시킬 수 있으며, 이에 대한 어떠한 환불이나 보상을 실시하지 않습니다. 또한, 상기 문자를 발송한 회원에 대해서는 그 즉시 등급별 요금제 혜택을 취소합니다.
</p>
</div>
<!--문자_등급별 요금 안내 추가 끝-->
<p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 알림톡</p> <p class="tType1_title"><img src="/publish/images/content/icon_fee2.png" alt="알림톡 아이콘 이미지"> 알림톡</p>
<table class="tType2"> <table class="tType2">
<colgroup> <colgroup>

View File

@ -111,7 +111,7 @@ function mberGrdHistListAjax(pageNo){
function getMberGrdChk() { function getMberGrdChk() {
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "/web/member/grd/mberGrdChkAjax.do", url: "/web/grd/mberGrdChkAjax.do",
data: {}, data: {},
dataType:'json', dataType:'json',
async: false, async: false,