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 7f9b3fed..1cc83682 100644 --- a/src/main/java/itn/let/sym/grd/service/MberGrdService.java +++ b/src/main/java/itn/let/sym/grd/service/MberGrdService.java @@ -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; diff --git a/src/main/java/itn/let/sym/grd/service/MberGrdVO.java b/src/main/java/itn/let/sym/grd/service/MberGrdVO.java index 60c49ae6..cecd2c84 100644 --- a/src/main/java/itn/let/sym/grd/service/MberGrdVO.java +++ b/src/main/java/itn/let/sym/grd/service/MberGrdVO.java @@ -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; } 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 9446df5d..6e2a4f92 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 @@ -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); 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 3808d08d..89527352 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 @@ -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{ 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 0448f7a1..a2bb58be 100644 --- a/src/main/java/itn/let/sym/grd/web/MberGrdMngController.java +++ b/src/main/java/itn/let/sym/grd/web/MberGrdMngController.java @@ -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; 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 f313ce5b..502c3ace 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 @@ -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# - + @@ -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# + + + 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) + + + 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 MJ_MBER_GRD_INFO SET GRD_END_DATE = NOW() @@ -577,7 +639,40 @@ GRD_STATUS != 'Y' AND MBER_ID = #mberId# - + + + + - + diff --git a/src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdSetting.jsp b/src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdSetting.jsp index eec67867..26b2fc66 100644 --- a/src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdSetting.jsp +++ b/src/main/webapp/WEB-INF/jsp/sym/grd/mberGrdSetting.jsp @@ -100,20 +100,23 @@
+ + - + - + + +
등급제 적용 + checked="checked" /> ON     checked="checked" /> OFF
누적결제 적용일자누적결제 시작일자 @@ -123,6 +126,10 @@ 누적결제 계산기간 + " style="height: 20px; width: 150px; padding: 5px 5px 5px 5px;" /> +