myname 2024-03-20
2024-03-20 16:34 마이페이지 최근 발송내역-문자 쿼리 성능개선
@bf289e9e42d585e3c8d6c4deec74ca7c30822c67
src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
--- src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
+++ src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
@@ -378,6 +378,9 @@
 	public List<MjonMsgSentVO> selectMberMsgSentLatestList(String mberId) throws Exception{
 		return mberManageDAO.selectMberMsgSentLatestList(mberId);
 	}
+	public List<MjonMsgSentVO> selectMberMsgSentLatestListNew20240320(String mberId) throws Exception{
+		return mberManageDAO.selectMberMsgSentLatestListNew20240320(mberId);
+	}	
 	
 	//회원 최근 발송 문자내용 3개 불러오기(예약)
 	public List<MjonMsgSentVO> selectMberMsgSentLatestList2(String mberId) throws Exception{
src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
--- src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
+++ src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
@@ -212,6 +212,10 @@
 	public List<MjonMsgSentVO> selectMberMsgSentLatestList(String mberId) throws Exception{
 		return (List<MjonMsgSentVO>) list("mberManageDAO.selectMberMsgSentLatestList", mberId);
 	}
+	@SuppressWarnings("unchecked")
+	public List<MjonMsgSentVO> selectMberMsgSentLatestListNew20240320(String mberId) throws Exception{
+		return (List<MjonMsgSentVO>) list("mberManageDAO.selectMberMsgSentLatestListNew20240320", mberId);
+	}	
 	
 	//회원 최근 발송 문자내용 3개 불러오기(예약)
 	@SuppressWarnings("unchecked")
src/main/java/itn/let/uat/uia/web/EgovMypageController.java
--- src/main/java/itn/let/uat/uia/web/EgovMypageController.java
+++ src/main/java/itn/let/uat/uia/web/EgovMypageController.java
@@ -363,7 +363,7 @@
 		}
 		
 		{//최근 발송 문자 내용 불러오기 - 최근 3개 내역만
-			List<MjonMsgSentVO> mjonMsgSentList = mberManageService.selectMberMsgSentLatestList(userId);
+			List<MjonMsgSentVO> mjonMsgSentList = mberManageService.selectMberMsgSentLatestListNew20240320(userId);
 			model.addAttribute("mjonMsgSentList", mjonMsgSentList);
 		}
 		
src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
--- src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
+++ src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
@@ -198,6 +198,8 @@
 	
 	//회원 최근 발송 문자내용 3개 불러오기
 	public List<MjonMsgSentVO> selectMberMsgSentLatestList(String mberId) throws Exception;
+	//성능개선 2024-03-20	
+	public List<MjonMsgSentVO> selectMberMsgSentLatestListNew20240320(String mberId) throws Exception;	
 
 	//회원 최근 발송 문자내용 3개 불러오기(예약)
 	public List<MjonMsgSentVO> selectMberMsgSentLatestList2(String mberId) throws Exception;
src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
--- src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
+++ src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
@@ -1194,7 +1194,7 @@
 		model.addAttribute("flowTypeCode", cmmUseService.selectCmmCodeDetail(vo));
 		
 		//최근 발송 문자 내용 불러오기 - 최근 3개 내역만
-		List<MjonMsgSentVO> mjonMsgSentList = mberManageService.selectMberMsgSentLatestList(userId);
+		List<MjonMsgSentVO> mjonMsgSentList = mberManageService.selectMberMsgSentLatestListNew20240320(userId);
 		model.addAttribute("mjonMsgSentList", mjonMsgSentList);
 		
 		//최근 발송 문자 내용 불러오기 - 최근 3개 내역만(에약)
src/main/resources/egovframework/sqlmap/let/mjo/event/Event_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/mjo/event/Event_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/event/Event_SQL_Mysql.xml
@@ -74,6 +74,7 @@
 	
 	<select id="MjonEventDAO.selectEventMsgMberDefaultInfo" parameterClass="eventVO" resultClass="eventVO">
 		
+		/*	MjonEventDAO.selectEventMsgMberDefaultInfo	*/
 		SELECT a.EVENT_INFO_ID        AS eventInfoId,
 		       a.MBER_ID              AS mberId,
 		       a.MBER_NM              AS mberNm,
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
@@ -2111,6 +2111,7 @@
 	
 	<select id="mjonMsgDAO.selectMberManageInfo" parameterClass="String" resultClass="mberManageVO">
 	
+		/*	mjonMsgDAO.selectMberManageInfo	*/
 		SELECT
 			MBER_ID					AS mberId
 			, MBER_NM				AS mberNm
src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml
@@ -2187,6 +2187,7 @@
 	</select>
 	
 	<select id="mjonPayDAO.selectCashInfoList" parameterClass="String" resultClass="mjonPayVO">
+		/*	mjonPayDAO.selectCashInfoList	*/
 		SELECT
 			'chargeCash'	AS divFlag
 			,NVL(SUM(CASH),0)		AS cashSum
@@ -2223,6 +2224,7 @@
 	</select>
 	
 	<select id="mjonPayDAO.selectPointInfoList" parameterClass="String" resultClass="mjonPayVO">
+		/*	mjonPayDAO.selectPointInfoList	*/
 	<![CDATA[
 		SELECT
 			'chargePoint' AS divFlag
src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
@@ -1318,6 +1318,7 @@
     </select>
     
 	<select id="mberManageDAO.selectMberMsgSentLatestList" parameterClass="String" resultClass="mjonMsgSentVO">
+		/*	mberManageDAO.selectMberMsgSentLatestList	*/
 		SELECT
 			msgId
 			, msgGroupId
@@ -1438,6 +1439,135 @@
 
 	</select>
 	
+	<select id="mberManageDAO.selectMberMsgSentLatestListNew20240320" parameterClass="String" resultClass="mjonMsgSentVO">
+		/*	mberManageDAO.selectMberMsgSentLatestListNew20240320	*/
+		SELECT
+			msgId
+			, msgGroupId
+			, userId
+			, MGD.TOT_PRICE				AS totPrice
+			, MGD.EACH_PRICE			AS eachPrice
+			, MGD.MSG_GROUP_CNT			AS msgGroupCnt			
+			, (SELECT
+					COUNT(0)
+				FROM
+					MJ_MSG_DATA A
+				WHERE 1=1
+					AND A.MSG_GROUP_ID = A.msgGroupId
+					AND (<include refid="MjonMsgSentDAO.selectAgentResultQuery_A"/>) = 'S'
+			) AS successCnt
+			, MGD.SEND_KIND	AS sendKind
+			, MGD.SMS_TXT	AS smsTxt
+			, userdata
+			, curState
+			, DATE_FORMAT(sentDate, '%Y-%m-%d %T') AS sentDate
+			, DATE_FORMAT(reqDate, '%Y-%m-%d %T')  AS reqdate
+			, result AS resultType
+			, rsltCode
+			, rsltCode2
+			, rsltNet
+			, callFrom
+			, callTo
+			, agentCode
+			, msgType
+			, neoType
+			, delFlag
+			, fileCnt
+			, filePath1
+			, filePath2
+			, filePath3
+			, reserveCYn
+			, MGD.RESERVE_YN AS reserveYn
+			, DATE_FORMAT(MGD.CANCELDATE, '%Y-%m-%d %T') AS cancelDate
+			, DATE_FORMAT(MGD.REGDATE, '%Y-%m-%d %T') AS regdate
+			, refundYn
+			, MGD.DELAY_YN AS delayYn
+			, MGD.DELAY_COMPLETE_YN AS delayCompleteYn
+			,(
+				SELECT
+					CONCAT(
+					(
+					  	IF(B.FILE_PATH1 IS NOT NULL, (SELECT
+	 	 	 	 			ATCH_FILE_ID
+	 	 	 	 		FROM LETTNFILEDETAIL 
+	 	 	 	 		WHERE CONCAT(STRE_FILE_NM, '.', FILE_EXTSN) = CONCAT(SUBSTRING_INDEX(B.FILE_PATH1, '/', -1))
+	 	 	 	 		LIMIT 1), '')
+	 	 	 	 	)
+	 	 	 	 	,'^',
+					(
+					  	IF(B.FILE_PATH2 IS NOT NULL, (SELECT
+	 	 	 	 			ATCH_FILE_ID
+	 	 	 	 		FROM LETTNFILEDETAIL 
+	 	 	 	 		WHERE CONCAT(STRE_FILE_NM, '.', FILE_EXTSN) = CONCAT(SUBSTRING_INDEX(B.FILE_PATH2, '/', -1))
+	 	 	 	 		LIMIT 1), '')
+	 	 	 	 	)
+	 	 	 	 	,'^',
+					(
+					  	IF(B.FILE_PATH3 IS NOT NULL, (SELECT
+	 	 	 	 			ATCH_FILE_ID
+	 	 	 	 		FROM LETTNFILEDETAIL 
+	 	 	 	 		WHERE CONCAT(STRE_FILE_NM, '.', FILE_EXTSN) = CONCAT(SUBSTRING_INDEX(B.FILE_PATH3, '/', -1))
+	 	 	 	 		LIMIT 1), '')
+	 	 	 	 	))	 	 	 		 	 	 	 	
+				FROM
+					MJ_MSG_DATA B
+				WHERE 
+					B.MSG_GROUP_ID = msgGroupId
+					LIMIT 1
+			) AS atchFiles					
+		FROM
+			(	
+				SELECT *
+				FROM MJ_MSG_GROUP_DATA MGD0				
+				WHERE MGD0.USER_ID = #mberId#
+					AND NOW() >= MGD0.REQ_DATE
+					AND MGD0.RESERVE_C_YN = 'N'
+					AND (MGD0.DELAY_YN = 'N' OR (MGD0.DELAY_YN = 'Y' AND MGD0.DELAY_COMPLETE_YN = 'Y'))/**발송 지연 건이 아니거나 지연건이라면 처리 완료된 건만 보여지도록 처리*/
+				ORDER BY
+					MGD0.regDate DESC
+					
+				LIMIT  3			
+			) MGD,
+		
+			(SELECT
+				MSG_ID AS msgId
+				, MSG_GROUP_ID AS msgGroupId
+				, USER_ID      AS userId
+				, USERDATA     AS userdata
+				, CUR_STATE    AS curState
+				, SENT_DATE    AS sentDate
+				, REQ_DATE     AS reqDate, 
+				(<include refid="MjonMsgSentDAO.selectAgentResultQuery_A"/>)        AS result
+				, RSLT_CODE    AS rsltCode
+				, RSLT_CODE2   AS rsltCode2
+				, RSLT_NET     AS rsltNet
+				, CALL_FROM    AS callFrom
+				, CALL_TO      AS callTo
+				, SMS_TXT      AS smsTxt
+				, MSG_TYPE     AS msgType
+				, AGENT_CODE   AS agentCode
+				, DEL_FLAG     AS delFlag
+				, FILE_CNT     AS fileCnt
+				, FILE_PATH1   AS filePath1
+				, FILE_PATH2   AS filePath2
+				, FILE_PATH3   AS filePath3
+				, NEO_TYPE     AS neoType
+				, RESERVE_C_YN AS reserveCYn
+				, REFUND_YN    AS refundYn
+			FROM
+				MJ_MSG_DATA A
+			WHERE
+				A.USER_ID = #mberId#
+				AND A.MSG_TYPE IN (4, 6)
+			GROUP BY A.MSG_GROUP_ID
+			)A
+			
+		WHERE 1=1
+			AND A.msgGroupId = MGD.MSG_GROUP_ID
+
+
+	</select>	
+	
 	<select id="mberManageDAO.selectMberMsgSentLatestList2" parameterClass="String" resultClass="mjonMsgSentVO">
 		SELECT
 			msgId
Add a comment
List