등급제 환불관련 로직 추가
This commit is contained in:
parent
3eefe93afb
commit
aadc3c1420
@ -46,12 +46,21 @@ public interface MberGrdService {
|
||||
// 회원별 등급 일괄변경
|
||||
public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception;
|
||||
|
||||
// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
|
||||
public int updateMberGrdAfterRefund(MberGrdVO mberGrdVO) throws Exception;
|
||||
|
||||
// 문자할인, B선라인 대상자 초기화
|
||||
public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception;
|
||||
|
||||
// 회원별 등급 초기화
|
||||
// 전체회원 등급 초기화
|
||||
public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception;
|
||||
|
||||
// 회원 등급제 종료
|
||||
public int updateMberGrdEndByUser(MberGrdVO mberGrdVO) throws Exception;
|
||||
|
||||
// 회원 등급제 복원
|
||||
public int updateMberGrdRestoreByUser(MberGrdVO mberGrdVO) throws Exception;
|
||||
|
||||
// 회원별 등급 적용
|
||||
public void mberGrdSaveByUser(MberGrdVO mberGrdVO) throws Exception;
|
||||
|
||||
|
||||
@ -73,16 +73,31 @@ public class MberGrdDAO extends EgovAbstractDAO {
|
||||
return update("mberGrdDAO.updateMberGrdAll", mberGrdVO);
|
||||
}
|
||||
|
||||
// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
|
||||
public int updateMberGrdAfterRefund(MberGrdVO mberGrdVO) throws Exception {
|
||||
return update("mberGrdDAO.updateMberGrdAfterRefund", mberGrdVO);
|
||||
}
|
||||
|
||||
// 문자할인, 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);
|
||||
}
|
||||
|
||||
// 회원 등급제 종료
|
||||
public int updateMberGrdEndByUser(MberGrdVO mberGrdVO) throws Exception {
|
||||
return update("mberGrdDAO.updateMberGrdEndByUser", mberGrdVO);
|
||||
}
|
||||
|
||||
// 회원 등급제 복원
|
||||
public int updateMberGrdRestoreByUser(MberGrdVO mberGrdVO) throws Exception {
|
||||
return update("mberGrdDAO.updateMberGrdRestoreByUser", mberGrdVO);
|
||||
}
|
||||
|
||||
// 회원별 등급 진행여부
|
||||
public int selectMberGrdPrgCnt(String mberId) throws Exception{
|
||||
return (int) select("mberGrdDAO.selectMberGrdPrgCnt", mberId);
|
||||
|
||||
@ -167,10 +167,10 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
|
||||
return updateCnt1 + updateCnt2;
|
||||
}
|
||||
|
||||
// 회원별 등급 초기화
|
||||
// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
|
||||
@Override
|
||||
public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception {
|
||||
return mberGrdDAO.updateMberGrdEndAll(mberGrdVO);
|
||||
public int updateMberGrdAfterRefund(MberGrdVO mberGrdVO) throws Exception {
|
||||
return mberGrdDAO.updateMberGrdAfterRefund(mberGrdVO);
|
||||
}
|
||||
|
||||
// 문자할인, B선라인 대상자 초기화
|
||||
@ -179,6 +179,24 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
|
||||
return mberGrdDAO.updateMberGrdEndBySale(mberGrdVO);
|
||||
}
|
||||
|
||||
// 전체회원 등급 초기화
|
||||
@Override
|
||||
public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception {
|
||||
return mberGrdDAO.updateMberGrdEndAll(mberGrdVO);
|
||||
}
|
||||
|
||||
// 회원 등급제 종료
|
||||
@Override
|
||||
public int updateMberGrdEndByUser(MberGrdVO mberGrdVO) throws Exception {
|
||||
return mberGrdDAO.updateMberGrdEndByUser(mberGrdVO);
|
||||
}
|
||||
|
||||
// 회원 등급제 복원
|
||||
@Override
|
||||
public int updateMberGrdRestoreByUser(MberGrdVO mberGrdVO) throws Exception {
|
||||
return mberGrdDAO.updateMberGrdRestoreByUser(mberGrdVO);
|
||||
}
|
||||
|
||||
// 회원별 등급 적용
|
||||
@Override
|
||||
public void mberGrdSaveByUser(MberGrdVO mberGrdVO) throws Exception {
|
||||
@ -217,7 +235,7 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
|
||||
MberGrdVO mberGrdVO4 = new MberGrdVO();
|
||||
mberGrdVO4 = selectMberGrdSettingDetail(mberGrdVO);
|
||||
if (null != mberGrdVO4) {
|
||||
mberGrdVO.setAmt("0");
|
||||
mberGrdVO.setAmt(mberGrdVO.getAmt());
|
||||
mberGrdVO.setTotAmt(mberGrdVO.getTotAmt());
|
||||
mberGrdVO.setShortPrice(mberGrdVO4.getShortPrice());
|
||||
mberGrdVO.setLongPrice(mberGrdVO4.getLongPrice());
|
||||
@ -233,8 +251,8 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG
|
||||
MberGrdVO mberGrdVO5 = new MberGrdVO();
|
||||
mberGrdVO5 = selectMberGrdDetail(mberGrdVO);
|
||||
if (null != mberGrdVO5) {
|
||||
// 업데이트 => 현재 등급보다 낮거나 같으면 업데이트 처리
|
||||
if (mberGrdVO5.getGrdSetNo() >= mberGrdVO.getGrdSetNo()) {
|
||||
// 업데이트 => 기존등급보다 상위등급 대상만 업데이트
|
||||
if (mberGrdVO5.getGrdSetNo() > mberGrdVO.getGrdSetNo()) {
|
||||
updateMberGrd(mberGrdVO);
|
||||
|
||||
// 회원별 등급 히스토리 인서트
|
||||
|
||||
@ -147,8 +147,7 @@ public class MberGrdMngController {
|
||||
try{
|
||||
|
||||
// 회원별 등급 적용
|
||||
mberGrdVO.setAmt("0"); // 결제금액
|
||||
mberGrdVO.setMberId("nopay"); // 결제자
|
||||
mberGrdVO.setAmt("0");
|
||||
mberGrdService.mberGrdSaveByUser(mberGrdVO);
|
||||
|
||||
}
|
||||
@ -237,4 +236,106 @@ public class MberGrdMngController {
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
// 회원 등급제 종료
|
||||
@RequestMapping(value = "/sym/grd/mberGrdEndByUserAjax.do")
|
||||
public ModelAndView mberGrdEndByUserAjax(
|
||||
@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
boolean isSuccess = true;
|
||||
String msg = "";
|
||||
|
||||
// 로그인VO에서 사용자 정보 가져오기
|
||||
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
|
||||
String frstRegisterId = loginVO == null ? "" : loginVO.getId();
|
||||
mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID
|
||||
|
||||
try{
|
||||
|
||||
// 회원 등급제 종료
|
||||
mberGrdService.updateMberGrdEndByUser(mberGrdVO);
|
||||
|
||||
}
|
||||
catch(Exception e) {
|
||||
isSuccess = false;
|
||||
msg = e.getMessage();
|
||||
}
|
||||
|
||||
modelAndView.addObject("isSuccess", isSuccess);
|
||||
modelAndView.addObject("msg", msg);
|
||||
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
// 회원 등급제 복원
|
||||
@RequestMapping(value = "/sym/grd/mberGrdRestoreByUserAjax.do")
|
||||
public ModelAndView mberGrdRestoreByUserAjax(
|
||||
@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
boolean isSuccess = true;
|
||||
String msg = "";
|
||||
|
||||
// 로그인VO에서 사용자 정보 가져오기
|
||||
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
|
||||
String frstRegisterId = loginVO == null ? "" : loginVO.getId();
|
||||
mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID
|
||||
|
||||
try{
|
||||
|
||||
// 회원 등급제 복원
|
||||
mberGrdService.updateMberGrdRestoreByUser(mberGrdVO);
|
||||
|
||||
// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
|
||||
mberGrdService.updateMberGrdAfterRefund(mberGrdVO);
|
||||
|
||||
}
|
||||
catch(Exception e) {
|
||||
isSuccess = false;
|
||||
msg = e.getMessage();
|
||||
}
|
||||
|
||||
modelAndView.addObject("isSuccess", isSuccess);
|
||||
modelAndView.addObject("msg", msg);
|
||||
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
// 회원 등급제 갱신
|
||||
@RequestMapping(value = "/sym/grd/mberGrdUpdateByUserAjax.do")
|
||||
public ModelAndView mberGrdUpdateByUserAjax(
|
||||
@ModelAttribute("mberGrdVO") MberGrdVO mberGrdVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
boolean isSuccess = true;
|
||||
String msg = "";
|
||||
|
||||
// 로그인VO에서 사용자 정보 가져오기
|
||||
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
|
||||
String frstRegisterId = loginVO == null ? "" : loginVO.getId();
|
||||
mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID
|
||||
|
||||
try{
|
||||
|
||||
// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
|
||||
mberGrdService.updateMberGrdAfterRefund(mberGrdVO);
|
||||
|
||||
}
|
||||
catch(Exception e) {
|
||||
isSuccess = false;
|
||||
msg = e.getMessage();
|
||||
}
|
||||
|
||||
modelAndView.addObject("isSuccess", isSuccess);
|
||||
modelAndView.addObject("msg", msg);
|
||||
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -108,14 +108,14 @@
|
||||
, DATE_FORMAT(A.GRD_END_DATE, '%Y-%m-%d') AS grdEndDate
|
||||
, A.GRD_STATUS AS grdStatus
|
||||
, CASE
|
||||
WHEN E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d')
|
||||
WHEN A.GRD_STATUS = 'E'
|
||||
THEN '종료'
|
||||
WHEN A.GRD_STATUS = 'N'
|
||||
THEN '대기'
|
||||
WHEN (A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE) AND (E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d'))
|
||||
THEN '대기'
|
||||
WHEN A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
|
||||
THEN '진행'
|
||||
WHEN A.GRD_STATUS = 'N'
|
||||
THEN '대기'
|
||||
WHEN A.GRD_STATUS = 'E'
|
||||
THEN '종료'
|
||||
ELSE '종료'
|
||||
END AS grdStatusNm
|
||||
, A.REG_ID AS regId
|
||||
@ -143,40 +143,40 @@
|
||||
<isNotEmpty property="searchGrdStatus">
|
||||
<isEqual property="searchGrdStatus" compareValue="Y">
|
||||
AND (CASE
|
||||
WHEN E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d')
|
||||
WHEN A.GRD_STATUS = 'E'
|
||||
THEN '종료'
|
||||
WHEN A.GRD_STATUS = 'N'
|
||||
THEN '대기'
|
||||
WHEN (A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE) AND (E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d'))
|
||||
THEN '대기'
|
||||
WHEN A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
|
||||
THEN '진행'
|
||||
WHEN A.GRD_STATUS = 'N'
|
||||
THEN '대기'
|
||||
WHEN A.GRD_STATUS = 'E'
|
||||
THEN '종료'
|
||||
ELSE '종료'
|
||||
END) = '진행'
|
||||
</isEqual>
|
||||
<isEqual property="searchGrdStatus" compareValue="N">
|
||||
AND (CASE
|
||||
WHEN E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d')
|
||||
WHEN A.GRD_STATUS = 'E'
|
||||
THEN '종료'
|
||||
WHEN A.GRD_STATUS = 'N'
|
||||
THEN '대기'
|
||||
WHEN (A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE) AND (E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d'))
|
||||
THEN '대기'
|
||||
WHEN A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
|
||||
THEN '진행'
|
||||
WHEN A.GRD_STATUS = 'N'
|
||||
THEN '대기'
|
||||
WHEN A.GRD_STATUS = 'E'
|
||||
THEN '종료'
|
||||
ELSE '종료'
|
||||
END) = '대기'
|
||||
</isEqual>
|
||||
<isEqual property="searchGrdStatus" compareValue="E">
|
||||
AND (CASE
|
||||
WHEN E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d')
|
||||
WHEN A.GRD_STATUS = 'E'
|
||||
THEN '종료'
|
||||
WHEN A.GRD_STATUS = 'N'
|
||||
THEN '대기'
|
||||
WHEN (A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE) AND (E.EVENT_STATUS = 'Y' AND DATE_FORMAT(NOW(), '%Y-%m-%d') BETWEEN DATE_FORMAT(E.EVENT_START_DATE, '%Y-%m-%d') AND DATE_FORMAT(E.EVENT_END_DATE, '%Y-%m-%d'))
|
||||
THEN '대기'
|
||||
WHEN A.GRD_STATUS = 'Y' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
|
||||
THEN '진행'
|
||||
WHEN A.GRD_STATUS = 'N'
|
||||
THEN '대기'
|
||||
WHEN A.GRD_STATUS = 'E'
|
||||
THEN '종료'
|
||||
ELSE '종료'
|
||||
END) = '종료'
|
||||
</isEqual>
|
||||
@ -295,19 +295,26 @@
|
||||
<![CDATA[
|
||||
SELECT
|
||||
M.USER_ID AS mberId
|
||||
, M.AMT_SUM_ORIGIN AS amtSumOrigin
|
||||
, M.REFUND_SUM AS refundSum
|
||||
, M.AMT_SUM AS totAmt
|
||||
, M.GRD_SET_NO AS grdSetNo
|
||||
FROM (
|
||||
SELECT
|
||||
S.USER_ID
|
||||
, SUM(S.AMT) AS AMT_SUM_ORIGIN
|
||||
, (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_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
|
||||
, (
|
||||
SELECT MIN(S1.GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
|
||||
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))
|
||||
) GRD_SET_NO
|
||||
FROM MJ_PG S
|
||||
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
|
||||
ON S.USER_ID = SS.MBER_ID
|
||||
LEFT OUTER JOIN MJ_REFUND R
|
||||
ON S.USER_ID = R.MBER_ID
|
||||
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')
|
||||
GROUP BY S.USER_ID
|
||||
@ -380,7 +387,11 @@
|
||||
MBER_ID = #mberId#
|
||||
</update>
|
||||
|
||||
<!-- 회원별 등급 일괄변경 -->
|
||||
<!--
|
||||
회원별 등급 일괄변경
|
||||
=> 기존등급보다 상위등급 대상만 업데이트 됨.
|
||||
=> 기존등급과 같거나 좋지않은 경우 제외됨.
|
||||
-->
|
||||
<update id="mberGrdDAO.updateMberGrdAll" parameterClass="mberGrdVO">
|
||||
<![CDATA[
|
||||
UPDATE MJ_MBER_GRD_INFO A
|
||||
@ -388,19 +399,25 @@
|
||||
SELECT
|
||||
M.USER_ID
|
||||
, M.AMT_SUM_ORIGIN
|
||||
, M.REFUND_SUM
|
||||
, M.AMT_SUM
|
||||
, M.GRD_SET_NO
|
||||
FROM (
|
||||
SELECT
|
||||
S.USER_ID
|
||||
, SUM(S.AMT) AS AMT_SUM_ORIGIN
|
||||
, (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0)) AS AMT_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
|
||||
, (
|
||||
SELECT MIN(S1.GRD_SET_NO) FROM MJ_MBER_GRD_SETTING S1 WHERE S1.STD_AMT <= (SUM(S.AMT) - IFNULL(SS.EVENT_FRST_CASH + ROUND(SS.EVENT_FRST_CASH / 10), 0))
|
||||
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))
|
||||
) GRD_SET_NO
|
||||
FROM MJ_PG S
|
||||
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
|
||||
ON S.USER_ID = SS.MBER_ID
|
||||
LEFT OUTER JOIN MJ_REFUND R
|
||||
ON S.USER_ID = R.MBER_ID
|
||||
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')
|
||||
GROUP BY S.USER_ID
|
||||
@ -428,6 +445,64 @@
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!--
|
||||
회원 등급 변경(환불후)
|
||||
=> 기존등급 상관없이 업데이트 됨.
|
||||
-->
|
||||
<update id="mberGrdDAO.updateMberGrdAfterRefund" parameterClass="mberGrdVO">
|
||||
<![CDATA[
|
||||
UPDATE MJ_MBER_GRD_INFO A
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
M.USER_ID
|
||||
, M.AMT_SUM_ORIGIN
|
||||
, M.REFUND_SUM
|
||||
, M.AMT_SUM
|
||||
, M.GRD_SET_NO
|
||||
FROM (
|
||||
SELECT
|
||||
S.USER_ID
|
||||
, SUM(S.AMT) AS AMT_SUM_ORIGIN
|
||||
, 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))
|
||||
) GRD_SET_NO
|
||||
FROM MJ_PG S
|
||||
LEFT OUTER JOIN MJ_EVENT_MBER_INFO SS
|
||||
ON S.USER_ID = SS.MBER_ID
|
||||
LEFT OUTER JOIN MJ_REFUND R
|
||||
ON S.USER_ID = R.MBER_ID
|
||||
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')
|
||||
GROUP BY S.USER_ID
|
||||
) M
|
||||
WHERE M.GRD_SET_NO IS NOT NULL
|
||||
AND M.AMT_SUM > 0
|
||||
) B
|
||||
ON A.MBER_ID = B.USER_ID
|
||||
INNER JOIN MJ_MBER_GRD_SETTING C
|
||||
ON C.GRD_SET_NO = B.GRD_SET_NO
|
||||
SET
|
||||
A.GRD_SET_NO = C.GRD_SET_NO
|
||||
, A.SHORT_PRICE = C.SHORT_PRICE
|
||||
, A.LONG_PRICE = C.LONG_PRICE
|
||||
, A.PICTURE_PRICE = C.PICTURE_PRICE
|
||||
, 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.EDIT_ID = #editId#
|
||||
, A.EDIT_DATE = NOW()
|
||||
WHERE B.GRD_SET_NO IS NOT NULL
|
||||
AND A.MBER_ID = #mberId#
|
||||
AND A.GRD_STATUS = 'Y'
|
||||
AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 문자할인, B선라인 대상자 초기화 -->
|
||||
<update id="mberGrdDAO.updateMberGrdEndBySale" parameterClass="mberGrdVO">
|
||||
<![CDATA[
|
||||
@ -467,7 +542,7 @@
|
||||
]]>
|
||||
</update>
|
||||
|
||||
<!-- 회원별 등급 초기화 -->
|
||||
<!-- 전체회원 등급 초기화 -->
|
||||
<update id="mberGrdDAO.updateMberGrdEndAll" parameterClass="mberGrdVO">
|
||||
UPDATE MJ_MBER_GRD_INFO SET
|
||||
GRD_END_DATE = NOW()
|
||||
@ -478,6 +553,31 @@
|
||||
GRD_STATUS != 'E'
|
||||
</update>
|
||||
|
||||
<!-- 회원 등급제 종료 -->
|
||||
<update id="mberGrdDAO.updateMberGrdEndByUser" parameterClass="mberGrdVO">
|
||||
UPDATE MJ_MBER_GRD_INFO SET
|
||||
GRD_END_DATE = NOW()
|
||||
, GRD_STATUS = 'E'
|
||||
, EDIT_ID = #editId#
|
||||
, EDIT_DATE = NOW()
|
||||
WHERE
|
||||
GRD_STATUS != 'E'
|
||||
AND MBER_ID = #mberId#
|
||||
</update>
|
||||
|
||||
<!-- 회원 등급제 복원 -->
|
||||
<update id="mberGrdDAO.updateMberGrdRestoreByUser" parameterClass="mberGrdVO">
|
||||
UPDATE MJ_MBER_GRD_INFO SET
|
||||
GRD_END_DATE = NOW()
|
||||
, GRD_STATUS = 'Y'
|
||||
, GRD_END_DATE = '9999-12-31 23:59:59'
|
||||
, EDIT_ID = #editId#
|
||||
, EDIT_DATE = NOW()
|
||||
WHERE
|
||||
GRD_STATUS != 'Y'
|
||||
AND MBER_ID = #mberId#
|
||||
</update>
|
||||
|
||||
<!-- 회원별 등급 진행여부 -->
|
||||
<select id="mberGrdDAO.selectMberGrdPrgCnt" parameterClass="String" resultClass="Integer">
|
||||
SELECT
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
<meta http-equiv="Content-Language" content="ko">
|
||||
<title>등급제 내역</title>
|
||||
<script type="text/javaScript" language="javascript" defer="defer">
|
||||
|
||||
$( document ).ready(function(){
|
||||
// change 함수
|
||||
$("#searchGrdStatus").change(function(e){
|
||||
@ -37,8 +38,8 @@ function fn_search(){
|
||||
}
|
||||
|
||||
function linkPage(pageNo){
|
||||
var listForm = document.listForm ;
|
||||
listForm.pageIndex.value = pageNo ;
|
||||
var listForm = document.listForm;
|
||||
listForm.pageIndex.value = pageNo;
|
||||
listForm.action = "<c:url value='/sym/grd/selectMberGrdList.do'/>";
|
||||
listForm.submit();
|
||||
}
|
||||
@ -80,6 +81,109 @@ function getMberGrdChk(mberId) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 회원 등급제 종료
|
||||
function setMberGrdEndByUser(mberId) {
|
||||
if(confirm("등급제 종료하시겠습니까?")) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/sym/grd/mberGrdEndByUserAjax.do",
|
||||
data: {"mberId" : mberId},
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (data) {
|
||||
if (data.isSuccess) {
|
||||
linkPage(document.listForm.pageIndex.value);
|
||||
}
|
||||
else {
|
||||
alert("Msg : " + data.msg);
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
alert("ERROR : " + JSON.stringify(e));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 회원 등급제 복원
|
||||
function setMberGrdRestoreByUser(mberId, grdDate) {
|
||||
if(confirm("등급제 복원하시겠습니까?\n등급 다시 계산합니다.")) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/sym/grd/mberGrdRestoreByUserAjax.do",
|
||||
data: {"mberId" : mberId, "grdDate" : grdDate},
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (data) {
|
||||
if (data.isSuccess) {
|
||||
linkPage(document.listForm.pageIndex.value);
|
||||
}
|
||||
else {
|
||||
alert("Msg : " + data.msg);
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
alert("ERROR : " + JSON.stringify(e));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//회원 등급제 갱신
|
||||
function setMberGrdUpdateByUser(mberId, grdDate) {
|
||||
if(confirm("등급제 갱신하시겠습니까?\n등급 다시 계산합니다.")) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/sym/grd/mberGrdUpdateByUserAjax.do",
|
||||
data: {"mberId" : mberId, "grdDate" : grdDate},
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (data) {
|
||||
if (data.isSuccess) {
|
||||
linkPage(document.listForm.pageIndex.value);
|
||||
}
|
||||
else {
|
||||
alert("Msg : " + data.msg);
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
alert("ERROR : " + JSON.stringify(e));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 등급제 추가
|
||||
function setMberGrdSave() {
|
||||
var mberId = $("input[name='mberId']").val();
|
||||
if (mberId == "") {
|
||||
alert("아이디를 입력해주세요.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(confirm("해당 아이디 등급제 추가하시겠습니까?")) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/sym/grd/mberGrdSaveAjax.do",
|
||||
data: {"mberId" : mberId},
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (data) {
|
||||
if (data.isSuccess) {
|
||||
linkPage(document.listForm.pageIndex.value);
|
||||
}
|
||||
else {
|
||||
alert("Msg : " + data.msg);
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
alert("ERROR : " + JSON.stringify(e));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
@ -117,7 +221,7 @@ function getMberGrdChk(mberId) {
|
||||
<div class="listTop">
|
||||
<p class="tType5">
|
||||
총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건
|
||||
* 누적결제액은 문자할인이벤트 대상 결제금액을 제외한 합계금액입니다.
|
||||
* 누적결제액은 할인이벤트 결제금액, 환불금액을 제외한 합계금액입니다.
|
||||
</p>
|
||||
<div class="rightWrap">
|
||||
<!-- <input type="button" class="printBtn" > -->
|
||||
@ -131,16 +235,18 @@ function getMberGrdChk(mberId) {
|
||||
<div class="tableWrap">
|
||||
<table class="tbType1">
|
||||
<colgroup>
|
||||
<col style="width: 8%">
|
||||
<col style="width: 5%">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 10%">
|
||||
<col style="width: 9%">
|
||||
<col style="width: 8%">
|
||||
<col style="width: 8%">
|
||||
<col style="width: 12%">
|
||||
<col style="width: 12%">
|
||||
<col style="width: 12%">
|
||||
<col style="width: 12%">
|
||||
<col style="width: 6%">
|
||||
<col style="width: 5%">
|
||||
<col style="width: 8%">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
@ -153,7 +259,9 @@ function getMberGrdChk(mberId) {
|
||||
<th>시작일<input type="button" class="sortBtn sort" id="sort_grdStartDate"></th>
|
||||
<th>종료일 <input type="button" class="sortBtn sort" id="sort_grdEndDate"></th>
|
||||
<th>등록일 <input type="button" class="sortBtn sort" id="sort_regDate"></th>
|
||||
<th>수정일 <input type="button" class="sortBtn sort" id="sort_editDate"></th>
|
||||
<th>상태<input type="button" class="sortBtn sort" id="sort_grdStatusNm"></th>
|
||||
<th>관리</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -179,7 +287,7 @@ function getMberGrdChk(mberId) {
|
||||
<c:out value="${result.grdSetNm}"/>(<c:out value="${result.grdSetNo}"/>)
|
||||
</td>
|
||||
<td nowrap="nowrap" class="right">
|
||||
<fmt:formatNumber value="${result.totAmt}" pattern="#,###" />
|
||||
<fmt:formatNumber value="${result.totAmt}" pattern="#,###" />
|
||||
</td>
|
||||
<td nowrap="nowrap">
|
||||
<c:out value="${result.grdDate}"/>
|
||||
@ -192,10 +300,24 @@ function getMberGrdChk(mberId) {
|
||||
</td>
|
||||
<td nowrap="nowrap">
|
||||
<c:out value="${result.regDate}"/>
|
||||
</td>
|
||||
<td nowrap="nowrap">
|
||||
<c:out value="${result.editDate}"/>
|
||||
</td>
|
||||
<td nowrap="nowrap">
|
||||
<c:out value="${result.grdStatusNm}"/>
|
||||
</td>
|
||||
<td nowrap="nowrap">
|
||||
<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="btnType1" onclick="setMberGrdEndByUser('${result.mberId}')" value="종료">
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
@ -205,7 +327,8 @@ function getMberGrdChk(mberId) {
|
||||
</table>
|
||||
</div>
|
||||
<div class="btnWrap">
|
||||
|
||||
<input type="text" name="mberId" value="" style="height: 50px; width: 120px;" />
|
||||
<input type="button" class="btnType2" value="등급제 적용테스트" onclick="javascript:setMberGrdSave(); return false;">
|
||||
</div>
|
||||
|
||||
<c:if test="${!empty resultList}">
|
||||
|
||||
@ -84,32 +84,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
// 등급제 적용 테스트
|
||||
function setMberGrdSave() {
|
||||
if(confirm("등급제 적용하시겠습니까?")) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/sym/grd/mberGrdSaveAjax.do",
|
||||
data: {},
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (data) {
|
||||
if (data.isSuccess) {
|
||||
alert("저장 완료했습니다.");
|
||||
location.reload();
|
||||
}
|
||||
else {
|
||||
alert("Msg : " + data.msg);
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
alert("ERROR : " + JSON.stringify(e));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
@ -198,7 +172,6 @@
|
||||
<br />
|
||||
<div class="btnWrap">
|
||||
<input type="button" class="btnType2" value="모든 고객 등급 초기화" onclick="javascript:setMberGrdEndMassEdit(); return false;">
|
||||
<input type="button" class="btnType2" value="등급제 적용테스트" onclick="javascript:setMberGrdSave(); return false;">
|
||||
<input type="button" class="btnType1" value="취소" onclick="javascript:location.reload(); return false;">
|
||||
<input type="button" class="btnType1" value="수정" onclick="javascript:setMberGrdSettingMassEdit(); return false;">
|
||||
</div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user