itn 2023-07-28
결제하기 기능에 등급제 저장 기능 추가
@01c178573aac304cf7789db69a0ea8874796b898
src/main/java/itn/let/mjo/pay/service/impl/MjonPayServiceImpl.java
--- src/main/java/itn/let/mjo/pay/service/impl/MjonPayServiceImpl.java
+++ src/main/java/itn/let/mjo/pay/service/impl/MjonPayServiceImpl.java
@@ -39,6 +39,7 @@
 import itn.let.mjo.tax.service.TaxVO;
 import itn.let.mjo.tax.service.impl.TaxDAO;
 import itn.let.sym.grd.service.MberGrdService;
+import itn.let.sym.grd.service.MberGrdVO;
 import itn.let.sym.site.service.JoinSettingVO;
 import itn.let.uat.uia.service.impl.MberManageDAO;
 import itn.let.uss.umt.service.MberManageVO;
@@ -407,15 +408,16 @@
 			
 		}
 		
-		/*
+
 		// 등급제 Start
    		// 회원별 등급 적용
 		MberGrdVO mberGrdVO = new MberGrdVO();
 		mberGrdVO.setMberId(mjonPayVO.getUserId());
     	mberGrdVO.setAmt(mjonPayVO.getAmt());
+    	mberGrdVO.setMoid(mjonPayVO.getMoid());
    		mberGrdService.mberGrdSaveByUser(mberGrdVO);    		
 		// End
-		*/		
+		
 		
 		mjonPayVO.setPaySuccess(true);
 		return mjonPayVO;
@@ -722,15 +724,16 @@
 				
 			}
 			
-			/*
+
     		// 등급제 Start
        		// 회원별 등급 적용
     		MberGrdVO mberGrdVO = new MberGrdVO();
     		mberGrdVO.setMberId(mjonPayVO.getUserId());
         	mberGrdVO.setAmt(mjonPayVO.getAmt());
+        	mberGrdVO.setMoid(mjonPayVO.getMoid());
        		mberGrdService.mberGrdSaveByUser(mberGrdVO);    		
     		// End
-    		*/    		
+    		
     		
     		
 			//세금계산서/현금영수증 발행 처리해주기 
@@ -2033,15 +2036,16 @@
     			
     		}
     		
-    		/*
+
     		// 등급제 Start
        		// 회원별 등급 적용
     		MberGrdVO mberGrdVO = new MberGrdVO();
     		mberGrdVO.setMberId(mjonPayVO.getUserId());
         	mberGrdVO.setAmt(mjonPayVO.getAmt());
+        	mberGrdVO.setMoid(mjonPayVO.getMoid());
        		mberGrdService.mberGrdSaveByUser(mberGrdVO);    		
     		// End
-   			*/
+
     		
     		mjonPayVO.setPaySuccess(true);
     	}
@@ -2200,15 +2204,16 @@
     			}
     		}
 
-    		/*
+
     		// 등급제 Start
        		// 회원별 등급 적용
     		MberGrdVO mberGrdVO = new MberGrdVO();
     		mberGrdVO.setMberId(mjonPayVO.getUserId());
         	mberGrdVO.setAmt(mjonPayVO.getAmt());
+        	mberGrdVO.setMoid(mjonPayVO.getMoid());
        		mberGrdService.mberGrdSaveByUser(mberGrdVO);    		
     		// End
-    		*/
+
     		
     		mjonPayVO.setPaySuccess(true);
     	}
src/main/java/itn/let/sym/grd/service/MberGrdVO.java
--- src/main/java/itn/let/sym/grd/service/MberGrdVO.java
+++ src/main/java/itn/let/sym/grd/service/MberGrdVO.java
@@ -47,6 +47,7 @@
 	private String grdDatePrgYn;	// 회원등급제 시작일자 진행여부(오늘보다 이전날짜이면 Y, 이후이면 N)
 	private String grdPeriod;		// 회원등급제 누적결제 계산기간
 	private String tempYn;
+	private String moid;			// 결제번호
 	
 	// 검색필터
 	private String searchGrdStatus;
@@ -275,6 +276,12 @@
 	public void setTempYn(String tempYn) {
 		this.tempYn = tempYn;
 	}	
+	public String getMoid() {
+		return moid;
+	}
+	public void setMoid(String moid) {
+		this.moid = moid;
+	}	
 	public String getSearchGrdStatus() {
 		return searchGrdStatus;
 	}
src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java
--- src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java
+++ src/main/java/itn/let/sym/grd/service/impl/MberGrdServiceImpl.java
@@ -9,6 +9,7 @@
 import org.springframework.stereotype.Service;
 
 import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import itn.let.mjo.mjocommon.MjonCommon;
 import itn.let.mjo.pay.service.MjonPayService;
 import itn.let.sym.grd.service.MberGrdService;
 import itn.let.sym.grd.service.MberGrdVO;
@@ -28,6 +29,9 @@
 	@Resource(name = "mberManageService")
 	private EgovMberManageService mberManageService;
 	
+	@Resource(name="MjonCommon")
+	private MjonCommon mjonCommon;
+	
 	// 등급제 단가 추출 => 시스템 단가에 적용
 	@Override
 	public JoinSettingVO selectMberGrdDefaultInfo(JoinSettingVO sysJoinSetVO, String mberId) throws Exception {
@@ -40,7 +44,7 @@
 			MberGrdVO mberGrdVO = new MberGrdVO();		
 			MberGrdVO mberGrdVO1 = new MberGrdVO();
 			mberGrdVO1 = selectMberSettingDetail(mberGrdVO);
-			if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
+			if (mberGrdVO1.getGrdNoti().equals("Y")) {
 				mberGrdVO = new MberGrdVO();
 				mberGrdVO = selectMberGrdInfo(mberId);
 				if (null != mberGrdVO) {
@@ -168,7 +172,7 @@
 		// Step 1. 등급제 시행 ON 일경우
 		MberGrdVO mberGrdVO1 = new MberGrdVO();
 		mberGrdVO1 = selectMberSettingDetail(mberGrdVO);
-		if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
+		if (mberGrdVO1.getGrdNoti().equals("Y")) {
 			mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
 			
 			// Step1. 대상자 추가
@@ -246,66 +250,77 @@
 	// 회원별 등급 적용
 	@Override
 	public void mberGrdSaveByUser(MberGrdVO mberGrdVO) throws Exception {
-		// 현재 날짜 구하기
-        LocalDate now = LocalDate.now();
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");	// 포맷 정의
-        String nowDate = now.format(formatter);		// 포맷 적용
-        
-		mberGrdVO.setRegId(mberGrdVO.getMberId());
-		mberGrdVO.setEditId(mberGrdVO.getMberId());
-		
-		// Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우)
-		MberGrdVO mberGrdVO1 = new MberGrdVO();
-		mberGrdVO1 = selectMberSettingDetail(mberGrdVO);
-		if (mberGrdVO1.getGrdNoti().equals("Y") && null != mberGrdVO1.getGrdDate() && mberGrdVO1.getGrdDatePrgYn().equals("Y")) {
-			mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
-			
-			// 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 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);							
-						}
-						else {
-							// 인서트
-							insertMberGrd(mberGrdVO);
-							
-							// 회원별 등급 히스토리 인서트
-							insertMberGrdHist(mberGrdVO);
-						}
-					}
-				}					
-			}			
-		}
+    	try {
+    		// 현재 날짜 구하기
+            LocalDate now = LocalDate.now();
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");	// 포맷 정의
+            String nowDate = now.format(formatter);		// 포맷 적용
+            
+    		mberGrdVO.setRegId(mberGrdVO.getMberId());
+    		mberGrdVO.setEditId(mberGrdVO.getMberId());
+    		
+    		// Step 1. 등급제 시행 ON 일경우(시행일자 진행여부 Y일경우)
+    		MberGrdVO mberGrdVO1 = new MberGrdVO();
+    		mberGrdVO1 = selectMberSettingDetail(mberGrdVO);
+    		if (mberGrdVO1.getGrdNoti().equals("Y")) {
+    			mberGrdVO.setGrdNewDate(mberGrdVO1.getGrdNewDate());
+    			
+    			// 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 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);							
+    						}
+    						else {
+    							// 인서트
+    							insertMberGrd(mberGrdVO);
+    							
+    							// 회원별 등급 히스토리 인서트
+    							insertMberGrdHist(mberGrdVO);
+    						}
+    					}
+    				}					
+    			}			
+    		}
+    	}
+    	catch (Exception e) {
+	    	// Slack 메시지 발송(단순본문)
+	    	String msg = "[문자온] " + mberGrdVO.getMberId() + "님 결제중 회원등급 저장 오류 알림 => 개발팀에게 문의해주세요.";
+	    	mjonCommon.sendSimpleSlackMsg(msg);    		
+
+			System.out.println("#############################################################");
+			System.out.println(mberGrdVO.getMberId() + "님 결제중 회원등급 저장 오류");			    		
+    	}												
+
 	}			
 	
 	// 회원별 등급제 대상여부
src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/sym/grd/MberGrd_SQL_Mysql.xml
@@ -833,6 +833,7 @@
 			, AMT
 			, TOT_AMT
 			, GRD_DATE
+			, MOID
 			, REG_ID
 			, REG_DATE
 			, EDIT_ID
@@ -850,6 +851,7 @@
 			, #amt#
 			, #totAmt#
 			, #grdNewDate#
+			, #moid#			
 			, #regId#
 			, NOW()
 			, #editId#
@@ -858,6 +860,7 @@
 	</insert>
 		
 	<!-- 회원별 등급 히스토리 목록 => 등급제 시행일이후 목록(사용자화면용) -->
+	<!-- AND A.GRD_DATE >= (SELECT S.GRD_DATE FROM MJ_MBER_GRD_INFO S WHERE S.MBER_ID = #mberId#) -->
 	<select id="mberGrdDAO.selectMberGrdHistByGrdDateList" parameterClass="mberGrdVO" resultClass="mberGrdVO">
 		SELECT
 			COUNT(MBER_ID) OVER() 	AS totCnt
@@ -872,6 +875,7 @@
 			, A.AMT					AS amt
 			, A.TOT_AMT				AS totAmt
 			, A.GRD_DATE			AS grdDate
+			, A.MOID				AS moid
 			, A.REG_ID				AS regId
 			, DATE_FORMAT(A.REG_DATE, '%Y-%m-%d %H:%i')			AS regDate
 			, A.EDIT_ID				AS editId
@@ -881,9 +885,8 @@
 			ON A.GRD_SET_NO = B.GRD_SET_NO		
 		WHERE 1=1 
 		AND A.MBER_ID = #mberId#
+		AND IFNULL(TRIM(A.MOID), '') != ''
 		AND A.TOT_AMT > 0
-		AND A.GRD_DATE >= (SELECT S.GRD_DATE FROM MJ_MBER_GRD_INFO S WHERE S.MBER_ID = #mberId#)
-		GROUP BY A.TOT_AMT, A.AMT
 		ORDER BY A.REG_DATE DESC
 		LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
 	</select>
Add a comment
List