등급제 계산기간 관련 로직 수정

This commit is contained in:
itn 2023-07-25 18:45:47 +09:00
parent ccb1dea5cb
commit e73d58857d
8 changed files with 252 additions and 97 deletions

View File

@ -43,16 +43,19 @@ public interface MberGrdService {
// 회원별 등급 수정
public void updateMberGrd(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 등록 All => 기존대상자 제외
public void insertMberGrdAllByExist(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 일괄변경
public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception;
// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
public int updateMberGrdAfterRefund(MberGrdVO mberGrdVO) throws Exception;
// 문자할인, B선라인 대상자 초기화
// 문자할인, B선라인 대상자 종료
public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception;
// 전체회원 등급 초기화
// 전체회원 등급 종료
public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception;
// 회원 등급제 종료
@ -64,6 +67,9 @@ public interface MberGrdService {
// 회원별 등급 적용
public void mberGrdSaveByUser(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급제 대상여부
int selectMberGrdCnt(String mberId) throws Exception;
// 회원별 등급 진행여부
int selectMberGrdPrgCnt(String mberId) throws Exception;

View File

@ -41,8 +41,11 @@ public class MberGrdVO extends UserDefaultVO {
private int mberGrdHistNo;
private String grdNoti; // 회원등급제 시행 여부
private String grdDate; // 회원등급제 시행일자
private String grdDatePrgYn; // 회원등급제 시행일자 진행여부(오늘보다 이전날짜이면 Y, 이후이면 N)
private String grdDate; // 회원등급제 시작일자
private String grdPeriodDate; // 오늘날짜 - 누적결제 계산기간 = 계산기간 시작일자
private String grdNewDate; // 시작일자, 계산기간 시작일자 최근날짜
private String grdDatePrgYn; // 회원등급제 시작일자 진행여부(오늘보다 이전날짜이면 Y, 이후이면 N)
private String grdPeriod; // 회원등급제 누적결제 계산기간
// 검색필터
private String searchGrdStatus;
@ -241,12 +244,30 @@ public class MberGrdVO extends UserDefaultVO {
public void setGrdDate(String grdDate) {
this.grdDate = grdDate;
}
public String getGrdPeriodDate() {
return grdPeriodDate;
}
public void setGrdPeriodDate(String grdPeriodDate) {
this.grdPeriodDate = grdPeriodDate;
}
public String getGrdNewDate() {
return grdNewDate;
}
public void setGrdNewDate(String grdNewDate) {
this.grdNewDate = grdNewDate;
}
public String getGrdDatePrgYn() {
return grdDatePrgYn;
}
public void setGrdDatePrgYn(String grdDatePrgYn) {
this.grdDatePrgYn = grdDatePrgYn;
}
public String getGrdPeriod() {
return grdPeriod;
}
public void setGrdPeriod(String grdPeriod) {
this.grdPeriod = grdPeriod;
}
public String getSearchGrdStatus() {
return searchGrdStatus;
}

View File

@ -67,6 +67,11 @@ public class MberGrdDAO extends EgovAbstractDAO {
public void updateMberGrd(MberGrdVO mberGrdVO) throws Exception{
update("mberGrdDAO.updateMberGrd", mberGrdVO);
}
// 회원별 등급 등록 All => 기존대상자 제외
public void insertMberGrdAllByExist(MberGrdVO mberGrdVO) throws Exception{
insert("mberGrdDAO.insertMberGrdAllByExist", mberGrdVO);
}
// 회원별 등급 일괄변경
public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception {
@ -78,12 +83,12 @@ public class MberGrdDAO extends EgovAbstractDAO {
return update("mberGrdDAO.updateMberGrdAfterRefund", mberGrdVO);
}
// 문자할인, B선라인 대상자 초기화
// 문자할인, B선라인 대상자 종료
public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception {
return update("mberGrdDAO.updateMberGrdEndBySale", mberGrdVO);
}
// 전체회원 등급 초기화
// 전체회원 등급 종료
public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception {
return update("mberGrdDAO.updateMberGrdEndAll", mberGrdVO);
}
@ -98,6 +103,11 @@ public class MberGrdDAO extends EgovAbstractDAO {
return update("mberGrdDAO.updateMberGrdRestoreByUser", mberGrdVO);
}
// 회원별 등급제 대상여부
public int selectMberGrdCnt(String mberId) throws Exception{
return (int) select("mberGrdDAO.selectMberGrdCnt", mberId);
}
// 회원별 등급 진행여부
public int selectMberGrdPrgCnt(String mberId) throws Exception{
return (int) select("mberGrdDAO.selectMberGrdPrgCnt", mberId);

View File

@ -14,7 +14,6 @@ import itn.let.sym.grd.service.MberGrdService;
import itn.let.sym.grd.service.MberGrdVO;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.uss.umt.service.EgovMberManageService;
import itn.let.uss.umt.service.MberManageVO;
@Service("mberGrdService")
public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberGrdService {
@ -147,6 +146,12 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
mberGrdDAO.updateMberGrd(mberGrdVO);
}
// 회원별 등급 등록 All => 기존대상자 제외
@Override
public void insertMberGrdAllByExist(MberGrdVO mberGrdVO) throws Exception {
mberGrdDAO.insertMberGrdAllByExist(mberGrdVO);
}
// 회원별 등급 일괄변경
@Override
public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception {
@ -157,9 +162,16 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
MberGrdVO mberGrdVO1 = new MberGrdVO();
mberGrdVO1 = selectMberSettingDetail(mberGrdVO);
if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
// 문자할인, B선라인 대상자 초기화
mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
// 대상자 추가
insertMberGrdAllByExist(mberGrdVO);
// 문자할인, B선라인, 스팸회원 대상자 종료
updateCnt1 = updateMberGrdEndBySale(mberGrdVO);
// 등급제 정상대상자 초기화(화이트등급)
// 회원별 등급 일괄변경
updateCnt2 = mberGrdDAO.updateMberGrdAll(mberGrdVO);
}
@ -173,13 +185,13 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
return mberGrdDAO.updateMberGrdAfterRefund(mberGrdVO);
}
// 문자할인, B선라인 대상자 초기화
// 문자할인, B선라인 대상자 종료
@Override
public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.updateMberGrdEndBySale(mberGrdVO);
}
// 전체회원 등급 초기화
// 전체회원 등급 종료
@Override
public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception {
return mberGrdDAO.updateMberGrdEndAll(mberGrdVO);
@ -212,68 +224,65 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
MberGrdVO mberGrdVO1 = new MberGrdVO();
mberGrdVO1 = selectMberSettingDetail(mberGrdVO);
if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
mberGrdVO.setGrdDate(mberGrdVO1.getGrdDate());
mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
// Step 2. /협의/스팸/비선등급 적용 제외
// 문자할인여부(1: 할인, 0: 미할인)
int isMsgSalePrice = mjonPayService.selectMsgSalePriceCnt(mberGrdVO.getMberId());
if(isMsgSalePrice == 0) {
// B선 전송사 이용고객 => 등급제대상 제외처리
MberManageVO mberManageVO = new MberManageVO();
mberManageVO.setMberId(mberGrdVO.getMberId());
String blineCode = mberManageService.selectBlineCodeByMberId(mberManageVO);
if (blineCode != null && blineCode.equals("N")) {
// Step 2. 문자할인, B선라인, 스팸회원 대상자 제외
int isMberGrd = selectMberGrdCnt(mberGrdVO.getMberId()); // 등급제 대상여부(1: 대상, 0: 미대상)
if(isMberGrd == 1) {
// Step 3. 누적결제금액(이벤트금액 제외) 추출 등급 조회
MberGrdVO mberGrdVO3 = new MberGrdVO();
mberGrdVO3 = selectMberGrdAmtDetail(mberGrdVO);
if (null != mberGrdVO3) {
mberGrdVO.setTotAmt(mberGrdVO3.getTotAmt());
mberGrdVO.setGrdSetNo(mberGrdVO3.getGrdSetNo());
// Step 3. 누적결제금액(이벤트금액 제외) 추출 등급 조회
MberGrdVO mberGrdVO3 = new MberGrdVO();
mberGrdVO3 = selectMberGrdAmtDetail(mberGrdVO);
if (null != mberGrdVO3) {
mberGrdVO.setTotAmt(mberGrdVO3.getTotAmt());
mberGrdVO.setGrdSetNo(mberGrdVO3.getGrdSetNo());
// Step 4. 등급제 설정값 조회
MberGrdVO mberGrdVO4 = new MberGrdVO();
mberGrdVO4 = selectMberGrdSettingDetail(mberGrdVO);
if (null != mberGrdVO4) {
mberGrdVO.setAmt(mberGrdVO.getAmt());
mberGrdVO.setTotAmt(mberGrdVO.getTotAmt());
mberGrdVO.setShortPrice(mberGrdVO4.getShortPrice());
mberGrdVO.setLongPrice(mberGrdVO4.getLongPrice());
mberGrdVO.setPicturePrice(mberGrdVO4.getPicturePrice());
mberGrdVO.setPicture2Price(mberGrdVO4.getPicture2Price());
mberGrdVO.setPicture3Price(mberGrdVO4.getPicture3Price());
mberGrdVO.setGrdDate(mberGrdVO.getGrdDate());
mberGrdVO.setGrdStartDate(nowDate + " 00:00:00");
mberGrdVO.setGrdEndDate("9999:12:31 23:59:59");
mberGrdVO.setGrdStatus("Y");
// Step 5. 인서트 Or 업데이트
MberGrdVO mberGrdVO5 = new MberGrdVO();
mberGrdVO5 = selectMberGrdDetail(mberGrdVO);
if (null != mberGrdVO5) {
// 업데이트 => 기존등급보다 상위등급 대상만 업데이트
if (mberGrdVO5.getGrdSetNo() > mberGrdVO.getGrdSetNo()) {
updateMberGrd(mberGrdVO);
// 회원별 등급 히스토리 인서트
insertMberGrdHist(mberGrdVO);
}
}
else {
// 인서트
insertMberGrd(mberGrdVO);
// Step 4. 등급제 설정값 조회
MberGrdVO mberGrdVO4 = new MberGrdVO();
mberGrdVO4 = selectMberGrdSettingDetail(mberGrdVO);
if (null != mberGrdVO4) {
mberGrdVO.setAmt(mberGrdVO.getAmt());
mberGrdVO.setTotAmt(mberGrdVO.getTotAmt());
mberGrdVO.setShortPrice(mberGrdVO4.getShortPrice());
mberGrdVO.setLongPrice(mberGrdVO4.getLongPrice());
mberGrdVO.setPicturePrice(mberGrdVO4.getPicturePrice());
mberGrdVO.setPicture2Price(mberGrdVO4.getPicture2Price());
mberGrdVO.setPicture3Price(mberGrdVO4.getPicture3Price());
mberGrdVO.setGrdDate(mberGrdVO.getGrdDate());
mberGrdVO.setGrdStartDate(nowDate + " 00:00:00");
mberGrdVO.setGrdEndDate("9999:12:31 23:59:59");
mberGrdVO.setGrdStatus("Y");
// Step 5. 인서트 Or 업데이트
MberGrdVO mberGrdVO5 = new MberGrdVO();
mberGrdVO5 = selectMberGrdDetail(mberGrdVO);
if (null != mberGrdVO5) {
updateMberGrd(mberGrdVO);
// 회원별 등급 히스토리 인서트
insertMberGrdHist(mberGrdVO);
}
// 회원별 등급 히스토리 인서트
insertMberGrdHist(mberGrdVO);
}
}
}
else {
// 인서트
insertMberGrd(mberGrdVO);
// 회원별 등급 히스토리 인서트
insertMberGrdHist(mberGrdVO);
}
}
}
}
}
}
// 회원별 등급제 대상여부
@Override
public int selectMberGrdCnt(String mberId) throws Exception{
// 공백제거
mberId = mberId.trim();
return mberGrdDAO.selectMberGrdCnt(mberId);
}
// 회원별 등급 진행여부
@Override
public int selectMberGrdPrgCnt(String mberId) throws Exception{

View File

@ -39,6 +39,7 @@ public class MberGrdMngController {
model.addAttribute("grdNoti", mberGrdVO.getGrdNoti());
model.addAttribute("grdDate", mberGrdVO.getGrdDate());
model.addAttribute("grdPeriod", mberGrdVO.getGrdPeriod());
model.addAttribute("mberGrdSettingList", mberGrdSettingList);
return "/sym/grd/mberGrdSetting";
@ -322,10 +323,16 @@ public class MberGrdMngController {
mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID
try{
// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
mberGrdService.updateMberGrdAfterRefund(mberGrdVO);
// Step 1. 등급제 시행 ON 일경우
MberGrdVO mberGrdVO1 = new MberGrdVO();
mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO);
if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
// 회원별 등급 일괄변경
mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
mberGrdService.updateMberGrdAfterRefund(mberGrdVO);
}
}
catch(Exception e) {
isSuccess = false;

View File

@ -10,15 +10,23 @@
UPDATE MJ_MBER_SETTING A
SET
A.GRD_NOTI = #grdNoti#
, A.GRD_DATE = #grdDate#
, A.GRD_DATE = #grdDate#
, A.GRD_PERIOD = #grdPeriod#
</update>
<!-- 등급제 시행여부 상세 -->
<select id="mberGrdDAO.selectMberSettingDetail" parameterClass="mberGrdVO" resultClass="mberGrdVO">
<![CDATA[
SELECT
GRD_NOTI AS grdNoti
, DATE_FORMAT(GRD_DATE, '%Y-%m-%d' ) AS grdDate
GRD_NOTI AS grdNoti
, DATE_FORMAT(GRD_DATE, '%Y-%m-%d') AS grdDate
, DATE_FORMAT(DATE_ADD(NOW(), INTERVAL - GRD_PERIOD DAY), '%Y-%m-%d') AS grdPeriodDate
, CASE
WHEN DATE_FORMAT(GRD_DATE, '%Y-%m-%d') > DATE_FORMAT(DATE_ADD(NOW(), INTERVAL - GRD_PERIOD DAY), '%Y-%m-%d')
THEN DATE_FORMAT(GRD_DATE, '%Y-%m-%d')
ELSE DATE_FORMAT(DATE_ADD(NOW(), INTERVAL - GRD_PERIOD DAY), '%Y-%m-%d')
END grdNewDate
, GRD_PERIOD AS grdPeriod
, CASE
WHEN IFNULL(GRD_DATE, '') = ''
THEN 'N'
@ -217,12 +225,14 @@
LIMIT 1
</select>
<!-- 회원 등급제 대상여부 정보(사용자화면용) -->
<!-- 회원 등급제 대상여부 정보(사용자화면용) => 문자할인, B선라인, 스팸회원 대상자 제외 -->
<select id="mberGrdDAO.selectMberGrdInfo" parameterClass="String" resultClass="mberGrdVO">
<![CDATA[
SELECT
M.mberId
, blineCode
, M.isSalePrice
, M.blineCode
, M.spamYn
, M.grdSetNo
, M.grdSetNm
, CASE
@ -250,6 +260,7 @@
SELECT
A.MBER_ID AS mberId
, IFNULL(A.BLINE_CODE, 'N') AS blineCode
, IFNULL(A.SPAM_YN, 'N') AS spamYn
, G.GRD_SET_NO AS grdSetNo
, S.GRD_SET_NM AS grdSetNm
, DATE_FORMAT(G.GRD_DATE, '%Y-%m-%d') AS grdDate
@ -278,6 +289,7 @@
ON G.GRD_SET_NO = S.GRD_SET_NO
JOIN MJ_MBER_SETTING B
WHERE 1=1
AND A.MBER_STTUS = 'Y'
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'
@ -285,8 +297,9 @@
AND G.MBER_ID = #mberId#
) M
WHERE M.isSalePrice = 'N'
OR M.blineCode != 'N'
LIMIT 1
AND M.blineCode = 'N'
AND M.spamYn = 'N'
LIMIT 1
]]>
</select>
@ -306,7 +319,7 @@
, IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) AS REFUND_SUM
, (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_SUM
, (
SELECT MIN(S1.GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
SELECT IFNULL(MIN(S1.GRD_SET_NO), 12) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
) GRD_SET_NO
FROM MJ_PG S
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
@ -316,7 +329,7 @@
AND R.REFUND_STATUS = '3'
AND R.REFUND_DIVISION = '1'
WHERE S.PG_STATUS = '1'
AND S.REG_DATE >= CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
AND S.REG_DATE >= CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
GROUP BY S.USER_ID
) M
WHERE M.GRD_SET_NO IS NOT NULL
@ -387,6 +400,53 @@
MBER_ID = #mberId#
</update>
<!-- 회원별 등급 등록 All => 기존대상자 제외 -->
<insert id="mberGrdDAO.insertMberGrdAllByExist" parameterClass="mberGrdVO">
INSERT INTO MJ_MBER_GRD_INFO
(
MBER_ID
, GRD_SET_NO
, SHORT_PRICE
, LONG_PRICE
, PICTURE_PRICE
, PICTURE2_PRICE
, PICTURE3_PRICE
, AMT
, TOT_AMT
, GRD_DATE
, GRD_START_DATE
, GRD_END_DATE
, GRD_STATUS
, REG_ID
, REG_DATE
, EDIT_ID
, EDIT_DATE
)
SELECT
A.MBER_ID
, S.GRD_SET_NO
, S.SHORT_PRICE
, S.LONG_PRICE
, S.PICTURE_PRICE
, S.PICTURE2_PRICE
, S.PICTURE3_PRICE
, 0
, 0
, #grdNewDate#
, NOW()
, '9999:12:31 23:59:59'
, 'Y'
, ''
, NOW()
, ''
, NOW()
FROM LETTNGNRLMBER A
INNER JOIN MJ_MBER_GRD_SETTING S
ON S.GRD_SET_NO = 12
WHERE A.MBER_STTUS = 'Y'
AND MBER_ID NOT IN (SELECT MBER_ID FROM MJ_MBER_GRD_INFO)
</insert>
<!--
회원별 등급 일괄변경
=> 기존등급보다 상위등급 대상만 업데이트 됨.
@ -409,7 +469,7 @@
, IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) AS REFUND_SUM
, (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_SUM
, (
SELECT MIN(S1.GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
SELECT IFNULL(MIN(S1.GRD_SET_NO), 12) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
) GRD_SET_NO
FROM MJ_PG S
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
@ -419,7 +479,7 @@
AND R.REFUND_STATUS = '3'
AND R.REFUND_DIVISION = '1'
WHERE S.PG_STATUS = '1'
AND S.REG_DATE >= CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
AND S.REG_DATE >= CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
GROUP BY S.USER_ID
) M
WHERE M.GRD_SET_NO IS NOT NULL
@ -436,10 +496,9 @@
, A.PICTURE2_PRICE = C.PICTURE2_PRICE
, A.PICTURE3_PRICE = C.PICTURE3_PRICE
, A.TOT_AMT = B.AMT_SUM
, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
, A.EDIT_DATE = NOW()
WHERE B.GRD_SET_NO IS NOT NULL
AND A.GRD_SET_NO > B.GRD_SET_NO
AND A.GRD_STATUS = 'Y'
AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
]]>
@ -466,7 +525,7 @@
, IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) AS REFUND_SUM
, (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_SUM
, (
SELECT MIN(S1.GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
SELECT IFNULL(MIN(S1.GRD_SET_NO), 12) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
) GRD_SET_NO
FROM MJ_PG S
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
@ -476,7 +535,7 @@
AND R.REFUND_STATUS = '3'
AND R.REFUND_DIVISION = '1'
WHERE S.PG_STATUS = '1'
AND S.REG_DATE >= CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
AND S.REG_DATE >= CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
GROUP BY S.USER_ID
) M
WHERE M.GRD_SET_NO IS NOT NULL
@ -493,7 +552,7 @@
, A.PICTURE2_PRICE = C.PICTURE2_PRICE
, A.PICTURE3_PRICE = C.PICTURE3_PRICE
, A.TOT_AMT = B.AMT_SUM
, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdDate#, '%Y-%m-%d'), ' ', '00:00:00')
, A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00')
, A.EDIT_ID = #editId#
, A.EDIT_DATE = NOW()
WHERE B.GRD_SET_NO IS NOT NULL
@ -503,7 +562,7 @@
]]>
</update>
<!-- 문자할인, B선라인 대상자 초기화 -->
<!-- 문자할인, B선라인, 스팸회원 대상자 종료 -->
<update id="mberGrdDAO.updateMberGrdEndBySale" parameterClass="mberGrdVO">
<![CDATA[
UPDATE MJ_MBER_GRD_INFO SET
@ -517,6 +576,7 @@
SELECT
A.MBER_ID
, IFNULL(A.BLINE_CODE, 'N') AS BLINE_CODE
, IFNULL(A.SPAM_YN, 'N') AS SPAM_YN
, CASE
WHEN
(A.SHORT_PRICE > 0
@ -528,21 +588,23 @@
)
THEN 'Y'
ELSE 'N'
END isSalePrice
END IS_SALE_PRICE
FROM LETTNGNRLMBER A
INNER JOIN MJ_MBER_GRD_INFO G
ON A.MBER_ID = G.MBER_ID
JOIN MJ_MBER_SETTING B
WHERE 1=1
AND A.MBER_STTUS = 'Y'
AND G.GRD_STATUS != 'E'
) M
WHERE M.isSalePrice = 'Y'
OR M.BLINE_CODE != 'N'
WHERE M.IS_SALE_PRICE = 'Y'
OR M.BLINE_CODE != 'N'
OR M.SPAM_YN = 'Y'
)
]]>
</update>
<!-- 전체회원 등급 초기화 -->
<!-- 전체회원 등급 종료 -->
<update id="mberGrdDAO.updateMberGrdEndAll" parameterClass="mberGrdVO">
UPDATE MJ_MBER_GRD_INFO SET
GRD_END_DATE = NOW()
@ -577,7 +639,40 @@
GRD_STATUS != 'Y'
AND MBER_ID = #mberId#
</update>
<!-- 회원별 등급제 대상여부 -->
<select id="mberGrdDAO.selectMberGrdCnt" parameterClass="String" resultClass="Integer">
SELECT
COUNT(0)
FROM (
SELECT
A.MBER_ID AS mberId
, IFNULL(A.BLINE_CODE, 'N') AS blineCode
, IFNULL(A.SPAM_YN, 'N') AS spamYn
, CASE
WHEN
(A.SHORT_PRICE > 0
AND (B.SHORT_PRICE > A.SHORT_PRICE
OR B.LONG_PRICE > A.LONG_PRICE
OR B.PICTURE_PRICE > A.PICTURE_PRICE
OR B.PICTURE2_PRICE > A.PICTURE2_PRICE
OR B.PICTURE3_PRICE > A.PICTURE3_PRICE)
)
THEN 'Y'
ELSE 'N'
END isSalePrice
FROM LETTNGNRLMBER A
JOIN MJ_MBER_SETTING B
WHERE 1=1
AND A.MBER_ID = #mberId#
AND A.MBER_STTUS = 'Y'
) M
WHERE M.isSalePrice = 'N'
AND M.blineCode = 'N'
AND M.spamYn = 'N'
LIMIT 1
</select>
<!-- 회원별 등급 진행여부 -->
<select id="mberGrdDAO.selectMberGrdPrgCnt" parameterClass="String" resultClass="Integer">
SELECT

View File

@ -131,12 +131,12 @@ function setMberGrdRestoreByUser(mberId, grdDate) {
}
//회원 등급제 갱신
function setMberGrdUpdateByUser(mberId, grdDate) {
function setMberGrdUpdateByUser(mberId) {
if(confirm("등급제 갱신하시겠습니까?\n등급 다시 계산합니다.")) {
$.ajax({
type: "POST",
url: "/sym/grd/mberGrdUpdateByUserAjax.do",
data: {"mberId" : mberId, "grdDate" : grdDate},
data: {"mberId" : mberId},
dataType:'json',
async: false,
success: function (data) {
@ -246,7 +246,7 @@ function setMberGrdSave() {
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 5%">
<col style="width: 8%">
<col style="width: 9%">
</colgroup>
<thead>
<tr>
@ -307,13 +307,13 @@ function setMberGrdSave() {
<td nowrap="nowrap">
<c:out value="${result.grdStatusNm}"/>
</td>
<td nowrap="nowrap">
<td nowrap="nowrap" class="left">
<c:choose>
<c:when test="${result.grdStatusNm eq '종료'}">
<input type="button" class="btnType2" onclick="setMberGrdRestoreByUser('${result.mberId}','${result.grdDate}')" value="복원">
</c:when>
<c:otherwise>
<input type="button" class="btnType2" onclick="setMberGrdUpdateByUser('${result.mberId}','${result.grdDate}')" value="갱신">
<input type="button" class="btnType2" onclick="setMberGrdUpdateByUser('${result.mberId}')" value="갱신">
<input type="button" class="btnType1" onclick="setMberGrdEndByUser('${result.mberId}')" value="종료">
</c:otherwise>
</c:choose>

View File

@ -100,20 +100,23 @@
<div class="tableWrap">
<table class="tbType2">
<colgroup>
<col width="20%">
<col width="30%">
<col width="20%">
<col width="*">
</colgroup>
<tbody>
<tr>
<th>등급제 적용</th>
<td>
<td colspan="3">
<input type="radio" name="grdNoti" id="grdNoti1" value="Y" <c:if test="${grdNoti eq 'Y'}">checked="checked"</c:if> /> ON
&nbsp;&nbsp;&nbsp;
<input type="radio" name="grdNoti" id="grdNoti2" value="N" <c:if test="${grdNoti eq 'N'}">checked="checked"</c:if> /> OFF
</td>
</tr>
<tr>
<th>누적결제 적용일자</th>
<th>누적결제 시작일자</th>
<td>
<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceBgndeYYYMMDD);">
@ -123,6 +126,10 @@
<input type="button" class="calBtn">
</a>
</td>
<th>누적결제 계산기간</th>
<td>
<input type="text" name="grdPeriod" value="<c:out value="${grdPeriod}" />" style="height: 20px; width: 150px; padding: 5px 5px 5px 5px;" />
</td>
</tr>
</tbody>
</table>