diff --git a/src/main/java/itn/let/sym/grd/service/MberGrdService.java b/src/main/java/itn/let/sym/grd/service/MberGrdService.java index c7f6c9d7..6a2b0a2a 100644 --- a/src/main/java/itn/let/sym/grd/service/MberGrdService.java +++ b/src/main/java/itn/let/sym/grd/service/MberGrdService.java @@ -28,6 +28,9 @@ public interface MberGrdService { // 회원별 설정 상세 public MberGrdVO selectMberGrdSettingDetail(MberGrdVO mberGrdVO) throws Exception; + // 회원별 설정 상세(White) + public MberGrdVO selectMberGrdSettingDetailWhite(MberGrdVO mberGrdVO) throws Exception; + // 등급제 설정 일괄변경 public int updateGrdSettingList(MberGrdVO mberGrdVO) throws Exception; @@ -55,6 +58,9 @@ public interface MberGrdService { // 회원별 등급 등록 All => 기존대상자 제외 public void insertMberGrdAllByExist(MberGrdVO mberGrdVO) throws Exception; + // 회원별 등급 등록 By MberId + public void insertMberGrdByMberId(MberGrdVO mberGrdVO) throws Exception; + // 회원별 등급 히스토리 등록 All public void insertMberGrdHistAll(MberGrdVO mberGrdVO) throws Exception; diff --git a/src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java b/src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java index 9ea3449f..0049c91b 100644 --- a/src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java +++ b/src/main/java/itn/let/sym/grd/service/impl/MberGrdDAO.java @@ -37,6 +37,11 @@ public class MberGrdDAO extends EgovAbstractDAO { return (MberGrdVO) select("mberGrdDAO.selectMberGrdSettingDetail", mberGrdVO); } + // 회원별 설정 상세(White) + public MberGrdVO selectMberGrdSettingDetailWhite(MberGrdVO mberGrdVO) throws Exception{ + return (MberGrdVO) select("mberGrdDAO.selectMberGrdSettingDetailWhite", mberGrdVO); + } + // 등급제 설정 일괄변경 public int updateGrdSetting(MberGrdVO mberGrdVO) throws Exception { return update("mberGrdDAO.updateGrdSetting", mberGrdVO); @@ -88,6 +93,11 @@ public class MberGrdDAO extends EgovAbstractDAO { insert("mberGrdDAO.insertMberGrdAllByExist", mberGrdVO); } + // 회원별 등급 등록 By MberId + public void insertMberGrdByMberId(MberGrdVO mberGrdVO) throws Exception{ + insert("mberGrdDAO.insertMberGrdByMberId", mberGrdVO); + } + // 회원별 등급 히스토리 등록 All public void insertMberGrdHistAll(MberGrdVO mberGrdVO) throws Exception{ insert("mberGrdDAO.insertMberGrdHistAll", mberGrdVO); diff --git a/src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java b/src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java index 4c47aca2..64e4d038 100644 --- a/src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java +++ b/src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java @@ -75,6 +75,12 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG return mberGrdDAO.selectMberGrdSettingDetail(mberGrdVO); } + // 회원별 설정 상세(White) + @Override + public MberGrdVO selectMberGrdSettingDetailWhite(MberGrdVO mberGrdVO) throws Exception { + return mberGrdDAO.selectMberGrdSettingDetailWhite(mberGrdVO); + } + // 등급제 설정 일괄변경 @Override public int updateGrdSettingList(MberGrdVO mberGrdVO) throws Exception { @@ -156,6 +162,12 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG mberGrdDAO.insertMberGrdAllByExist(mberGrdVO); } + // 회원별 등급 등록 By MberId + @Override + public void insertMberGrdByMberId(MberGrdVO mberGrdVO) throws Exception { + mberGrdDAO.insertMberGrdByMberId(mberGrdVO); + } + // 회원별 등급 히스토리 등록 All @Override public void insertMberGrdHistAll(MberGrdVO mberGrdVO) throws Exception { @@ -368,6 +380,7 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG MberGrdVO mberGrdVO5 = new MberGrdVO(); mberGrdVO5 = selectMberGrdDetail(mberGrdVO); if (mberGrdVO5 != null) { + // 업데이트 updateMberGrdOk(mberGrdVO); // 회원별 등급 히스토리 인서트 @@ -381,8 +394,53 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG insertMberGrdHist(mberGrdVO); } } - } - } + } + else { + System.out.println("Step 3. ELSE => 화이트등급 인서트"); + + // Step 4. 등급제 설정값 조회 + System.out.println("Step 4. 등급제 설정값 조회"); + MberGrdVO mberGrdVO4 = new MberGrdVO(); + mberGrdVO4 = selectMberGrdSettingDetailWhite(mberGrdVO); + if (mberGrdVO4 != null) { + mberGrdVO.setAmt("0"); + mberGrdVO.setTotAmt(0); + mberGrdVO.setGrdSetNo(mberGrdVO4.getGrdSetNo()); + 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 업데이트 + System.out.println("Step 5. 인서트 Or 업데이트"); + MberGrdVO mberGrdVO5 = new MberGrdVO(); + mberGrdVO5 = selectMberGrdDetail(mberGrdVO); + if (mberGrdVO5 != null) { + // 업데이트 + updateMberGrdOk(mberGrdVO); + + // 회원별 등급 히스토리 인서트 + insertMberGrdHist(mberGrdVO); + } + else { + // 인서트 + insertMberGrd(mberGrdVO); + + // 회원별 등급 히스토리 인서트 + insertMberGrdHist(mberGrdVO); + } + } + } + } + else { + System.out.println("Step 2. ELSE 등급제 종료"); + updateMberGrdEndByUser(mberGrdVO); + } } } System.out.println("END 회원별 등급 적용"); @@ -456,6 +514,7 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG MberGrdVO mberGrdVO5 = new MberGrdVO(); mberGrdVO5 = selectMberGrdDetail(mberGrdVO); if (mberGrdVO5 != null) { + // 업데이트 updateMberGrdOk(mberGrdVO); } else { @@ -463,8 +522,53 @@ public class MberGrdServiceImpl extends EgovAbstractServiceImpl implements MberG insertMberGrd(mberGrdVO); } } - } - } + } + else { + System.out.println("Step 3. ELSE => 화이트등급 인서트"); + + // Step 4. 등급제 설정값 조회 + System.out.println("Step 4. 등급제 설정값 조회"); + MberGrdVO mberGrdVO4 = new MberGrdVO(); + mberGrdVO4 = selectMberGrdSettingDetailWhite(mberGrdVO); + if (mberGrdVO4 != null) { + mberGrdVO.setAmt("0"); + mberGrdVO.setTotAmt(0); + mberGrdVO.setGrdSetNo(mberGrdVO4.getGrdSetNo()); + 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 업데이트 + System.out.println("Step 5. 인서트 Or 업데이트"); + MberGrdVO mberGrdVO5 = new MberGrdVO(); + mberGrdVO5 = selectMberGrdDetail(mberGrdVO); + if (mberGrdVO5 != null) { + // 업데이트 + updateMberGrdOk(mberGrdVO); + + // 회원별 등급 히스토리 인서트 + insertMberGrdHist(mberGrdVO); + } + else { + // 인서트 + insertMberGrd(mberGrdVO); + + // 회원별 등급 히스토리 인서트 + insertMberGrdHist(mberGrdVO); + } + } + } + } + else { + System.out.println("Step 2. ELSE 등급제 종료"); + updateMberGrdEndByUser(mberGrdVO); + } } } System.out.println("END 회원별 등급 적용(로그인, 환불시 사용 => 히스토리 저장 제외)"); diff --git a/src/main/java/itn/let/sym/grd/web/MberGrdMngController.java b/src/main/java/itn/let/sym/grd/web/MberGrdMngController.java index ad29bd19..845930e8 100644 --- a/src/main/java/itn/let/sym/grd/web/MberGrdMngController.java +++ b/src/main/java/itn/let/sym/grd/web/MberGrdMngController.java @@ -466,16 +466,37 @@ public class MberGrdMngController { // 로그인VO에서 사용자 정보 가져오기 LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String frstRegisterId = loginVO == null ? "" : loginVO.getId(); - mberGrdVO.setEditId(frstRegisterId); // 최초등록자ID - + mberGrdVO.setRegId(frstRegisterId); + mberGrdVO.setEditId(frstRegisterId); + try{ - - // 회원 등급제 복원 - mberGrdService.updateMberGrdRestoreByUser(mberGrdVO); - - // 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트 - mberGrdService.updateMberGrdAfterRefund(mberGrdVO); - + + // Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우) + System.out.println("Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우)"); + MberGrdVO mberGrdVO1 = new MberGrdVO(); + mberGrdVO1 = mberGrdService.selectMberSettingDetail(mberGrdVO); + if (mberGrdVO1.getGrdNoti().equals("Y")) { + mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate()); + + // Step 2. 문자할인, B선라인, 스팸회원 대상자 제외 + System.out.println("Step 2. 문자할인, B선라인, 스팸회원 대상자 제외"); + int isMberGrd = mberGrdService.selectMberGrdCnt(mberGrdVO.getMberId()); // 등급제 대상여부(1: 대상, 0: 미대상) + if(isMberGrd == 1) { + // 회원 등급제 복원 + mberGrdService.updateMberGrdRestoreByUser(mberGrdVO); + + // 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트 + mberGrdService.updateMberGrdAfterRefund(mberGrdVO); + } + else { + isSuccess = false; + msg = "문자할인, B선라인, 스팸회원 대상자는 등급제 대상자가 아닙니다."; + } + } + else { + isSuccess = false; + msg = "등급제 시행 OFF 일경우 복원이 불가합니다."; + } } catch(Exception e) { isSuccess = false; diff --git a/src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml index a39c6262..8edc58d9 100644 --- a/src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml @@ -102,6 +102,28 @@ LIMIT 1 + + + + UPDATE MJ_MBER_GRD_SETTING A @@ -545,9 +567,9 @@ , NOW() , '9999:12:31 23:59:59' , 'Y' - , '' + , #regId# , NOW() - , '' + , #editId# , NOW() FROM ( SELECT @@ -584,6 +606,81 @@ AND M.spamYn = 'N' + + + 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 + M.MBER_ID + , M.GRD_SET_NO + , M.SHORT_PRICE + , M.LONG_PRICE + , M.PICTURE_PRICE + , M.PICTURE2_PRICE + , M.PICTURE3_PRICE + , 0 + , 0 + , #grdNewDate# + , NOW() + , '9999:12:31 23:59:59' + , 'Y' + , #regId# + , NOW() + , #editId# + , NOW() + FROM ( + SELECT + A.MBER_ID + , S.GRD_SET_NO + , S.SHORT_PRICE + , S.LONG_PRICE + , S.PICTURE_PRICE + , S.PICTURE2_PRICE + , S.PICTURE3_PRICE + , 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 + INNER JOIN MJ_MBER_GRD_SETTING S + ON S.GRD_SET_NO = (SELECT MAX(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING) + JOIN MJ_MBER_SETTING B + WHERE A.MBER_STTUS = 'Y' + AND MBER_ID = #mberId# + ) M + WHERE M.isSalePrice = 'N' + AND M.blineCode = 'N' + AND M.spamYn = 'N' + + INSERT INTO MJ_MBER_GRD_HIST @@ -680,10 +777,13 @@ , A.AMT = B.AMT_SUM , A.TOT_AMT = B.AMT_SUM , A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00') + , A.EDIT_ID = #editId# , A.EDIT_DATE = NOW() , A.TEMP_YN = 'Y' - WHERE B.GRD_SET_NO IS NOT NULL + WHERE 1=1 + AND B.GRD_SET_NO IS NOT NULL AND A.GRD_STATUS = 'Y' + AND A.TEMP_YN = 'N' AND NOW() BETWEEN A.GRD_START_DATE AND A.GRD_END_DATE ]]> @@ -751,7 +851,8 @@ , 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 + WHERE 1=1 + AND 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 @@ -773,6 +874,7 @@ , A.AMT = 0 , A.TOT_AMT = 0 , A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00') + , A.EDIT_ID = #editId# , A.EDIT_DATE = NOW() , A.TEMP_YN = 'Y' , A.GRD_END_DATE = '9999:12:31 23:59:59' @@ -797,6 +899,7 @@ , A.AMT = 0 , A.TOT_AMT = 0 , A.GRD_DATE = CONCAT(DATE_FORMAT(#grdNewDate#, '%Y-%m-%d'), ' ', '00:00:00') + , A.EDIT_ID = #editId# , A.EDIT_DATE = NOW() WHERE C.GRD_SET_NO = (SELECT MAX(GRD_SET_NO) FROM MJ_MBER_GRD_SETTING) ]]> @@ -808,7 +911,9 @@ UPDATE MJ_MBER_GRD_INFO SET GRD_END_DATE = NOW() , GRD_STATUS = 'E' + , EDIT_ID = #editId# , EDIT_DATE = NOW() + , TEMP_YN = 'Y' WHERE MBER_ID IN ( SELECT M.MBER_ID @@ -835,7 +940,6 @@ JOIN MJ_MBER_SETTING B WHERE 1=1 AND A.MBER_STTUS = 'Y' - AND G.GRD_STATUS != 'E' ) M WHERE M.IS_SALE_PRICE = 'Y' OR M.BLINE_CODE != 'N' @@ -868,6 +972,7 @@ , GRD_STATUS = 'E' , EDIT_ID = #editId# , EDIT_DATE = NOW() + , TEMP_YN = 'Y' WHERE GRD_STATUS != 'E' AND MBER_ID = #mberId# diff --git a/src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdList.jsp b/src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdList.jsp index 653c83c5..5319afdb 100644 --- a/src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdList.jsp +++ b/src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdList.jsp @@ -237,16 +237,16 @@ function setMberGrdSave() { - + - + - + @@ -307,14 +307,16 @@ function setMberGrdSave() { - + - + + <%-- + --%>