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

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; public void updateMberGrd(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 등록 All => 기존대상자 제외
public void insertMberGrdAllByExist(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급 일괄변경 // 회원별 등급 일괄변경
public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception; public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception;
// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트 // 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
public int updateMberGrdAfterRefund(MberGrdVO mberGrdVO) throws Exception; public int updateMberGrdAfterRefund(MberGrdVO mberGrdVO) throws Exception;
// 문자할인, B선라인 대상자 초기화 // 문자할인, B선라인 대상자 종료
public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception; public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception;
// 전체회원 등급 초기화 // 전체회원 등급 종료
public int updateMberGrdEndAll(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; public void mberGrdSaveByUser(MberGrdVO mberGrdVO) throws Exception;
// 회원별 등급제 대상여부
int selectMberGrdCnt(String mberId) throws Exception;
// 회원별 등급 진행여부 // 회원별 등급 진행여부
int selectMberGrdPrgCnt(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 int mberGrdHistNo;
private String grdNoti; // 회원등급제 시행 여부 private String grdNoti; // 회원등급제 시행 여부
private String grdDate; // 회원등급제 시행일자 private String grdDate; // 회원등급제 시작일자
private String grdDatePrgYn; // 회원등급제 시행일자 진행여부(오늘보다 이전날짜이면 Y, 이후이면 N) private String grdPeriodDate; // 오늘날짜 - 누적결제 계산기간 = 계산기간 시작일자
private String grdNewDate; // 시작일자, 계산기간 시작일자 최근날짜
private String grdDatePrgYn; // 회원등급제 시작일자 진행여부(오늘보다 이전날짜이면 Y, 이후이면 N)
private String grdPeriod; // 회원등급제 누적결제 계산기간
// 검색필터 // 검색필터
private String searchGrdStatus; private String searchGrdStatus;
@ -241,12 +244,30 @@ public class MberGrdVO extends UserDefaultVO {
public void setGrdDate(String grdDate) { public void setGrdDate(String grdDate) {
this.grdDate = 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() { public String getGrdDatePrgYn() {
return grdDatePrgYn; return grdDatePrgYn;
} }
public void setGrdDatePrgYn(String grdDatePrgYn) { public void setGrdDatePrgYn(String grdDatePrgYn) {
this.grdDatePrgYn = grdDatePrgYn; this.grdDatePrgYn = grdDatePrgYn;
} }
public String getGrdPeriod() {
return grdPeriod;
}
public void setGrdPeriod(String grdPeriod) {
this.grdPeriod = grdPeriod;
}
public String getSearchGrdStatus() { public String getSearchGrdStatus() {
return searchGrdStatus; return searchGrdStatus;
} }

View File

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

View File

@ -39,6 +39,7 @@ public class MberGrdMngController {
model.addAttribute("grdNoti", mberGrdVO.getGrdNoti()); model.addAttribute("grdNoti", mberGrdVO.getGrdNoti());
model.addAttribute("grdDate", mberGrdVO.getGrdDate()); model.addAttribute("grdDate", mberGrdVO.getGrdDate());
model.addAttribute("grdPeriod", mberGrdVO.getGrdPeriod());
model.addAttribute("mberGrdSettingList", mberGrdSettingList); model.addAttribute("mberGrdSettingList", mberGrdSettingList);
return "/sym/grd/mberGrdSetting"; return "/sym/grd/mberGrdSetting";
@ -322,10 +323,16 @@ public class MberGrdMngController {
mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID
try{ try{
// 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); mberGrdService.updateMberGrdAfterRefund(mberGrdVO);
}
} }
catch(Exception e) { catch(Exception e) {
isSuccess = false; isSuccess = false;

View File

@ -11,14 +11,22 @@
SET SET
A.GRD_NOTI = #grdNoti# A.GRD_NOTI = #grdNoti#
, A.GRD_DATE = #grdDate# , A.GRD_DATE = #grdDate#
, A.GRD_PERIOD = #grdPeriod#
</update> </update>
<!-- 등급제 시행여부 상세 --> <!-- 등급제 시행여부 상세 -->
<select id="mberGrdDAO.selectMberSettingDetail" parameterClass="mberGrdVO" resultClass="mberGrdVO"> <select id="mberGrdDAO.selectMberSettingDetail" parameterClass="mberGrdVO" resultClass="mberGrdVO">
<![CDATA[ <![CDATA[
SELECT SELECT
GRD_NOTI AS grdNoti GRD_NOTI AS grdNoti
, DATE_FORMAT(GRD_DATE, '%Y-%m-%d' ) AS grdDate , 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 , CASE
WHEN IFNULL(GRD_DATE, '') = '' WHEN IFNULL(GRD_DATE, '') = ''
THEN 'N' THEN 'N'
@ -217,12 +225,14 @@
LIMIT 1 LIMIT 1
</select> </select>
<!-- 회원 등급제 대상여부 정보(사용자화면용) --> <!-- 회원 등급제 대상여부 정보(사용자화면용) => 문자할인, B선라인, 스팸회원 대상자 제외 -->
<select id="mberGrdDAO.selectMberGrdInfo" parameterClass="String" resultClass="mberGrdVO"> <select id="mberGrdDAO.selectMberGrdInfo" parameterClass="String" resultClass="mberGrdVO">
<![CDATA[ <![CDATA[
SELECT SELECT
M.mberId M.mberId
, blineCode , M.isSalePrice
, M.blineCode
, M.spamYn
, M.grdSetNo , M.grdSetNo
, M.grdSetNm , M.grdSetNm
, CASE , CASE
@ -250,6 +260,7 @@
SELECT SELECT
A.MBER_ID AS mberId A.MBER_ID AS mberId
, IFNULL(A.BLINE_CODE, 'N') AS blineCode , IFNULL(A.BLINE_CODE, 'N') AS blineCode
, IFNULL(A.SPAM_YN, 'N') AS spamYn
, G.GRD_SET_NO AS grdSetNo , G.GRD_SET_NO AS grdSetNo
, S.GRD_SET_NM AS grdSetNm , S.GRD_SET_NM AS grdSetNm
, DATE_FORMAT(G.GRD_DATE, '%Y-%m-%d') AS grdDate , DATE_FORMAT(G.GRD_DATE, '%Y-%m-%d') AS grdDate
@ -278,6 +289,7 @@
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 A.MBER_STTUS = 'Y'
AND B.GRD_NOTI = 'Y' AND B.GRD_NOTI = 'Y'
AND DATE_FORMAT(B.GRD_DATE, '%Y-%m-%d') <= DATE_FORMAT(NOW(), '%Y-%m-%d') 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'
@ -285,7 +297,8 @@
AND G.MBER_ID = #mberId# AND G.MBER_ID = #mberId#
) M ) M
WHERE M.isSalePrice = 'N' WHERE M.isSalePrice = 'N'
OR M.blineCode != 'N' AND M.blineCode = 'N'
AND M.spamYn = 'N'
LIMIT 1 LIMIT 1
]]> ]]>
</select> </select>
@ -306,7 +319,7 @@
, IFNULL(ROUND(SUM(R.TRNSF_CASH)), 0) AS REFUND_SUM , 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 , (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 ) GRD_SET_NO
FROM MJ_PG S FROM MJ_PG S
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
@ -316,7 +329,7 @@
AND R.REFUND_STATUS = '3' AND R.REFUND_STATUS = '3'
AND R.REFUND_DIVISION = '1' AND R.REFUND_DIVISION = '1'
WHERE S.PG_STATUS = '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 GROUP BY S.USER_ID
) M ) M
WHERE M.GRD_SET_NO IS NOT NULL WHERE M.GRD_SET_NO IS NOT NULL
@ -387,6 +400,53 @@
MBER_ID = #mberId# MBER_ID = #mberId#
</update> </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 , 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 , (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 ) GRD_SET_NO
FROM MJ_PG S FROM MJ_PG S
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
@ -419,7 +479,7 @@
AND R.REFUND_STATUS = '3' AND R.REFUND_STATUS = '3'
AND R.REFUND_DIVISION = '1' AND R.REFUND_DIVISION = '1'
WHERE S.PG_STATUS = '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 GROUP BY S.USER_ID
) M ) M
WHERE M.GRD_SET_NO IS NOT NULL WHERE M.GRD_SET_NO IS NOT NULL
@ -436,10 +496,9 @@
, A.PICTURE2_PRICE = C.PICTURE2_PRICE , A.PICTURE2_PRICE = C.PICTURE2_PRICE
, A.PICTURE3_PRICE = C.PICTURE3_PRICE , A.PICTURE3_PRICE = C.PICTURE3_PRICE
, A.TOT_AMT = B.AMT_SUM , 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() , A.EDIT_DATE = NOW()
WHERE B.GRD_SET_NO IS NOT NULL WHERE B.GRD_SET_NO IS NOT NULL
AND A.GRD_SET_NO > B.GRD_SET_NO
AND A.GRD_STATUS = 'Y' AND A.GRD_STATUS = 'Y'
AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE 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 , 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 , (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 ) GRD_SET_NO
FROM MJ_PG S FROM MJ_PG S
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
@ -476,7 +535,7 @@
AND R.REFUND_STATUS = '3' AND R.REFUND_STATUS = '3'
AND R.REFUND_DIVISION = '1' AND R.REFUND_DIVISION = '1'
WHERE S.PG_STATUS = '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 GROUP BY S.USER_ID
) M ) M
WHERE M.GRD_SET_NO IS NOT NULL WHERE M.GRD_SET_NO IS NOT NULL
@ -493,7 +552,7 @@
, A.PICTURE2_PRICE = C.PICTURE2_PRICE , A.PICTURE2_PRICE = C.PICTURE2_PRICE
, A.PICTURE3_PRICE = C.PICTURE3_PRICE , A.PICTURE3_PRICE = C.PICTURE3_PRICE
, A.TOT_AMT = B.AMT_SUM , 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_ID = #editId#
, A.EDIT_DATE = NOW() , A.EDIT_DATE = NOW()
WHERE B.GRD_SET_NO IS NOT NULL WHERE B.GRD_SET_NO IS NOT NULL
@ -503,7 +562,7 @@
]]> ]]>
</update> </update>
<!-- 문자할인, B선라인 대상자 초기화 --> <!-- 문자할인, B선라인, 스팸회원 대상자 종료 -->
<update id="mberGrdDAO.updateMberGrdEndBySale" parameterClass="mberGrdVO"> <update id="mberGrdDAO.updateMberGrdEndBySale" parameterClass="mberGrdVO">
<![CDATA[ <![CDATA[
UPDATE MJ_MBER_GRD_INFO SET UPDATE MJ_MBER_GRD_INFO SET
@ -517,6 +576,7 @@
SELECT SELECT
A.MBER_ID A.MBER_ID
, IFNULL(A.BLINE_CODE, 'N') AS BLINE_CODE , IFNULL(A.BLINE_CODE, 'N') AS BLINE_CODE
, IFNULL(A.SPAM_YN, 'N') AS SPAM_YN
, CASE , CASE
WHEN WHEN
(A.SHORT_PRICE > 0 (A.SHORT_PRICE > 0
@ -528,21 +588,23 @@
) )
THEN 'Y' THEN 'Y'
ELSE 'N' ELSE 'N'
END isSalePrice END IS_SALE_PRICE
FROM LETTNGNRLMBER A FROM LETTNGNRLMBER A
INNER JOIN MJ_MBER_GRD_INFO G INNER JOIN MJ_MBER_GRD_INFO G
ON A.MBER_ID = G.MBER_ID ON A.MBER_ID = G.MBER_ID
JOIN MJ_MBER_SETTING B JOIN MJ_MBER_SETTING B
WHERE 1=1 WHERE 1=1
AND A.MBER_STTUS = 'Y'
AND G.GRD_STATUS != 'E' AND G.GRD_STATUS != 'E'
) M ) M
WHERE M.isSalePrice = 'Y' WHERE M.IS_SALE_PRICE = 'Y'
OR M.BLINE_CODE != 'N' OR M.BLINE_CODE != 'N'
OR M.SPAM_YN = 'Y'
) )
]]> ]]>
</update> </update>
<!-- 전체회원 등급 초기화 --> <!-- 전체회원 등급 종료 -->
<update id="mberGrdDAO.updateMberGrdEndAll" parameterClass="mberGrdVO"> <update id="mberGrdDAO.updateMberGrdEndAll" parameterClass="mberGrdVO">
UPDATE MJ_MBER_GRD_INFO SET UPDATE MJ_MBER_GRD_INFO SET
GRD_END_DATE = NOW() GRD_END_DATE = NOW()
@ -578,6 +640,39 @@
AND MBER_ID = #mberId# AND MBER_ID = #mberId#
</update> </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 id="mberGrdDAO.selectMberGrdPrgCnt" parameterClass="String" resultClass="Integer">
SELECT SELECT

View File

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

View File

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