Browse Source

Merge branch 'sowon' into develop

sowon4187 5 years ago
parent
commit
86374e6abb

+ 1 - 1
src/main/java/com/style24/front/biz/dao/TsfReviewDao.java

@@ -95,7 +95,7 @@ public interface TsfReviewDao {
 	 * @author sowon
 	 * @since 2021. 3. 25
 	 */
-	Goods getReviewGoodsInfo(Review review);
+	Review getReviewGoodsInfo(Review review);
 	
 	/**
 	 * 마이페이지 리뷰 등록

+ 38 - 3
src/main/java/com/style24/front/biz/service/TsfReviewService.java

@@ -7,9 +7,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.style24.front.biz.dao.TsfReviewDao;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Goods;
+import com.style24.persistence.domain.Order;
 import com.style24.persistence.domain.Review;
 
 import lombok.extern.slf4j.Slf4j;
@@ -94,7 +96,26 @@ public class TsfReviewService {
 	 * @since 2021. 3. 25
 	 */
 	public Collection<Review> getCompleteReviewList(Review review){
-		return reviewDao.getCompleteReviewList(review);
+		Collection<Review> reviewList = new ArrayList<>();
+		
+		for (Review tmpReview : reviewDao.getCompleteReviewList(review)) {
+			// 세트상품 옵션별 배열로 담기
+			if (tmpReview.getItemNm().contains("!@!")) {
+				tmpReview.setItemNmArr(tmpReview.getItemNm().split("!@!"));
+				tmpReview.setColorNmArr(tmpReview.getColorNm().split(","));
+				tmpReview.setOptCd1Arr(tmpReview.getOptCd1().split(","));
+				tmpReview.setOptCd2Arr(tmpReview.getOptCd2().split(","));
+			} else {
+				String[] arr = {tmpReview.getItemNm()}, arr2 = {tmpReview.getColorNm()}, arr3 = {tmpReview.getOptCd1()}, arr4 = {tmpReview.getOptCd2()};
+				tmpReview.setItemNmArr(arr);
+				tmpReview.setColorNmArr(arr2);
+				tmpReview.setOptCd1Arr(arr3);
+				tmpReview.setOptCd2Arr(arr4);
+			}
+			reviewList.add(tmpReview);
+		}
+		
+		return reviewList;
 	}
 	
 	/**
@@ -104,8 +125,22 @@ public class TsfReviewService {
 	 * @author sowon
 	 * @since 2021. 3. 25
 	 */
-	public Goods getReviewGoodsInfo(Review review){
-		return reviewDao.getReviewGoodsInfo(review);
+	public Review getReviewGoodsInfo(Review review){
+		Review tmpReview = reviewDao.getReviewGoodsInfo(review);
+		// 세트상품 옵션별 배열로 담기
+		if (tmpReview.getItemNm().contains("!@!")) {
+			tmpReview.setItemNmArr(tmpReview.getItemNm().split("!@!"));
+			tmpReview.setColorNmArr(tmpReview.getColorNm().split(","));
+			tmpReview.setOptCd1Arr(tmpReview.getOptCd1().split(","));
+			tmpReview.setOptCd2Arr(tmpReview.getOptCd2().split(","));
+		} else {
+			String[] arr = {tmpReview.getItemNm()}, arr2 = {tmpReview.getColorNm()}, arr3 = {tmpReview.getOptCd1()}, arr4 = {tmpReview.getOptCd2()};
+			tmpReview.setItemNmArr(arr);
+			tmpReview.setColorNmArr(arr2);
+			tmpReview.setOptCd1Arr(arr3);
+			tmpReview.setOptCd2Arr(arr4);
+		}
+		return tmpReview;
 	}
 	
 	/**

+ 23 - 0
src/main/java/com/style24/persistence/domain/Review.java

@@ -2,6 +2,7 @@ package com.style24.persistence.domain;
 
 import java.util.Collection;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.style24.core.support.util.MaskingUtils;
 import com.style24.persistence.TscBaseDomain;
@@ -89,6 +90,28 @@ public class Review extends TscBaseDomain {
 	private String siteCd;
 	private String reviewStat;		// 리뷰상태(수정or등록)
 	
+	private String payDt;
+	private String brandEnm;
+	private String optCd1;
+	private String optCd2;
+	private String remainDt;
+	private String itemNm;
+	private String colorNm;	
+	
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] itemNmArr;		// 옵션코드
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] optCdArr;		// 옵션코드
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] colorNmArr;	// 컬러명
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] optCd1Arr;		// 옵션코드
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] optCd2Arr;		// 옵션코드
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] itemQtyArr;	// 구성상품번호
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	
 	// Masking
 	public String getMaskingCustId() {
 		return (this.custId != null) ?  MaskingUtils.id(this.custId) : this.custId;

+ 310 - 141
src/main/java/com/style24/persistence/mybatis/shop/TsfReview.xml

@@ -310,152 +310,309 @@
 	</select>
 
 	<!-- 마이페이지 작성가능한 리뷰 -->
-	<select id="getCompleteReviewList" parameterType="Review" resultType="Goods">
+	<select id="getCompleteReviewList" parameterType="Review" resultType="Review">
 		/* TsfReivew.getCompleteReviewList */
-		SELECT F.*
-			  , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
-		FROM
-		(
-			SELECT O.ORD_NO 
-			      ,O.ORD_NM
-			      ,DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
-			      ,O.CUST_NO 
-			      ,OD.ORD_DTL_NO
-			      ,OD.ORD_EXCH_GB 
-			      ,OD.GOODS_CD 
-			      ,OD.REAL_ORD_AMT 
-			      ,OD.SAVE_PNT_AMT 
-			      ,OD.GFCD_USE_AMT 
-			      ,ODI.ORD_DTL_ITEM_SQ 
-			      ,ODI.ITEM_CD 
-			      ,ODI.OPT_CD 
-			      ,ODI.OPT_CD1
-			      ,ODI.OPT_CD2
-			      ,ODI.ITEM_QTY 
-			      ,ODI.ITEM_PRICE
-			      ,G.GOODS_NM 
-			      ,G.MAIN_COLOR_CD
-			      ,B.BRAND_ENM 
-			      ,I.ITEMKIND_NM 
-			      ,I.ITEMKIND_CD 
-			      ,I.SIZE_GB 
-			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
-			FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
-								 			 	 AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') -- 구매 확정인것만
-			                INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
-			                  					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-			                  	                 AND ODI.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60')
-			                INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
-			                INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
-			                LEFT JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD 
-			WHERE 1=1
-				AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
+		SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
+		     , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
+		     , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
+		     , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
+		     , Z.ORD_NO
+		     , Z.ORD_DT
+		     , Z.PAY_DT
+		     , Z.DELV_EDDT
+		     , Z.ORD_DTL_NO
+		     , Z.ORD_EXCH_GB
+		     , Z.GOODS_CD
+		     , Z.GOODS_NM
+		     , Z.LIST_PRICE
+		     , Z.GOODS_TYPE
+		     , Z.SYS_IMG_NM
+		     , Z.ORD_DTL_STAT
+		     , Z.ORD_QTY
+		     , Z.CNCL_RTN_QTY
+		     , Z.ORD_AMT
+		     , Z.REAL_ORD_AMT
+		     , Z.SAVE_PNT_AMT
+		     , Z.CNCL_RTN_AMT
+		     , Z.PNT_DC_AMT
+		     , Z.GFCD_USE_AMT
+		     , Z.INVOICE_NO
+		     , Z.SUPPLY_COMP_CD
+		     , Z.DELV_FEE_CD
+		     , Z.SHOT_DELV_YN
+		     , Z.CHANGEABLE_YN
+		     , Z.RETURNABLE_YN
+		     , Z.SELF_GOODS_YN
+		     , Z.BRAND_NM
+		     , Z.BRAND_ENM
+		     , Z.ORD_DTL_STAT_NM
+		     , Z.ORD_REQ_CHG_QTY
+		     , Z.ORD_CAN_CHG_QTY
+		     , Z.ITEMKIND_NM 
+		   	 , Z.ITEMKIND_CD 
+             , Z.SIZE_GB 
+             , Z.REMAIN_DT
+		  FROM (SELECT O.ORD_NO
+					 , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d') AS ORD_DT
+					 , DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
+					 , DATE_FORMAT(OD.DELV_EDDT, '%m/%d')								AS DELV_EDDT
+					 , OD.ORD_DTL_NO
+					 , OD.ORD_EXCH_GB
+					 , OD.GOODS_CD
+		             , OD.GIFT_ADDR_INP_YN
+					 , G.GOODS_NM
+					 , IFNULL((SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), ODI.OPT_CD1) AS COLOR_NM
+					 , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = ODI.ITEM_CD)		AS ITEM_NM
+		             , ODI.ORD_DTL_ITEM_SQ
+					 , ODI.OPT_CD1
+					 , ODI.OPT_CD2
+					 , G.LIST_PRICE
+		             , G.GOODS_TYPE
+		             , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
+		                    ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
+					 , OD.ORD_DTL_STAT
+					 , OD.ORD_QTY
+					 , OD.CNCL_RTN_QTY
+					 , OD.ORD_AMT
+					 , OD.REAL_ORD_AMT
+					 , OD.SAVE_PNT_AMT
+					 , OD.CNCL_RTN_AMT
+					 , OD.PNT_DC_AMT
+					 , OD.GFCD_USE_AMT
+					 , OD.INVOICE_NO
+					 , OD.SUPPLY_COMP_CD
+					 , OD.DELV_FEE_CD
+					 , OD.SHOT_DELV_YN
+					 , OD.CHANGEABLE_YN
+					 , OD.RETURNABLE_YN
+					 , G.SELF_GOODS_YN
+			         , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)							AS BRAND_NM
+			         , B.BRAND_ENM
+					 , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)							AS ORD_DTL_STAT_NM
+					 , IFNULL(OCD.ORD_REQ_CHG_QTY, 0) AS ORD_REQ_CHG_QTY
+					 , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0)    AS ORD_CAN_CHG_QTY
+					 , I.ITEMKIND_NM 
+		   	         , I.ITEMKIND_CD 
+			         , I.SIZE_GB 
+			         ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
+				  FROM TB_ORDER O
+				 INNER JOIN TB_ORDER_DETAIL OD
+				    ON O.ORD_NO = OD.ORD_NO
+				   AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') -- 구매 확정인것만
+				 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+				    ON OD.ORD_NO = ODI.ORD_NO
+				   AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+				   AND ODI.ORD_DTL_STAT IN('G013_70','G013_50','G013_60') -- 구매 확정인것만
+				 INNER JOIN TB_GOODS G
+				    ON OD.GOODS_CD = G.GOODS_CD
+				 INNER JOIN TB_BRAND B
+				    ON B.BRAND_CD = G.BRAND_CD
+				 LEFT JOIN TB_ITEMKIND I 
+				    ON G.ITEMKIND_CD = I.ITEMKIND_CD 
+				  LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
+										, SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
+									 FROM TB_ORDER_CHANGE_DETAIL OCD
+									INNER JOIN TB_ORDER_DETAIL OD
+									   ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+									WHERE OCD.DEL_YN = 'N'
+									GROUP BY OCD.ORD_DTL_NO
+								  ) OCD
+				    ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+				  WHERE 1=1
+				AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S') 
 				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
 				AND O.CUST_NO = #{custNo}
 				AND O.DISP_YN = 'Y'
-				AND O.SITE_CD = #{siteCd}
-			GROUP BY O.ORD_NO 
-			      ,O.ORD_NM 
-			      ,O.PAY_DT 
-			      ,O.CUST_NO 
-			      ,OD.ORD_DTL_NO
-			      ,OD.ORD_EXCH_GB 
-			      ,OD.GOODS_CD 
-			      ,OD.REAL_ORD_AMT 
-			      ,OD.SAVE_PNT_AMT 
-			      ,OD.GFCD_USE_AMT 
-			      ,ODI.ORD_DTL_ITEM_SQ 
-			      ,ODI.ITEM_CD 
-			      ,ODI.OPT_CD 
-			      ,ODI.OPT_CD1
-			      ,ODI.OPT_CD2
-			      ,ODI.ITEM_QTY 
-			      ,ODI.ITEM_PRICE
-			      ,G.GOODS_NM 
-			      ,G.MAIN_COLOR_CD
-			      ,B.BRAND_ENM 
-		)F
-		ORDER BY F.PAY_DT DESC
+			 	AND O.SITE_CD = #{siteCd}
+				) Z
+		 GROUP BY Z.ORD_NO, Z.ORD_DT, Z.DELV_EDDT, Z.ORD_DTL_NO, Z.ORD_EXCH_GB
+				, Z.GOODS_CD, Z.GOODS_NM, Z.LIST_PRICE, Z.SYS_IMG_NM, Z.ORD_DTL_STAT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.ORD_AMT, Z.REAL_ORD_AMT
+				, Z.SAVE_PNT_AMT, Z.CNCL_RTN_AMT, Z.PNT_DC_AMT, Z.GFCD_USE_AMT, Z.INVOICE_NO
+				, Z.SUPPLY_COMP_CD, Z.DELV_FEE_CD, Z.SHOT_DELV_YN, Z.CHANGEABLE_YN, Z.SELF_GOODS_YN, Z.BRAND_NM, Z.BRAND_ENM, Z.ORD_DTL_STAT_NM
+				, Z.ORD_REQ_CHG_QTY, Z.ORD_CAN_CHG_QTY
+		ORDER BY Z.ORD_NO DESC, Z.ORD_DTL_STAT, Z.SELF_GOODS_YN DESC, Z.SHOT_DELV_YN DESC, Z.SUPPLY_COMP_CD
 	</select>
 	
 	<!-- 마이페이지 리뷰작성 상품데이타 -->
-	<select id="getReviewGoodsInfo" parameterType="Review" resultType="Goods">
+	<select id="getReviewGoodsInfo" parameterType="Review" resultType="Review">
 		/* TsfReivew.getReviewGoodsInfo */
-		SELECT F.*
-			  , (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG  WHERE GOODS_CD = F.GOODS_CD AND COLOR_CD = F.MAIN_COLOR_CD AND DEFAULT_IMG_YN = 'Y' ) AS SYS_IMG_NM
-		FROM
-		(
-			SELECT O.ORD_NO 
-			      ,O.ORD_NM
-			      ,DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
-			      ,O.CUST_NO 
-			      ,OD.ORD_DTL_NO
-			      ,OD.ORD_EXCH_GB 
-			      ,OD.GOODS_CD 
-			      ,OD.REAL_ORD_AMT 
-			      ,OD.SAVE_PNT_AMT 
-			      ,OD.GFCD_USE_AMT 
-			      ,ODI.ORD_DTL_ITEM_SQ 
-			      ,ODI.ITEM_CD 
-			      ,ODI.OPT_CD 
-			      ,ODI.OPT_CD1
-			      ,ODI.OPT_CD2
-			      ,ODI.ITEM_QTY 
-			      ,ODI.ITEM_PRICE
-			      ,G.GOODS_NM 
-			      ,G.MAIN_COLOR_CD
-			      ,B.BRAND_ENM 
-			      ,I.ITEMKIND_NM 
-			      ,I.ITEMKIND_CD 
-			      ,I.SIZE_GB 
-			      <if test="reviewStat == 'u'.toString()">
-			      ,R.REVIEW_SQ        
-			      ,R.REVIEW_GB        
-				  ,R.REVIEW_TITLE     
-			      ,R.REVIEW_CONTENT   
-				  ,R.SCORE            
-				  ,R.HEIGHT           
-				  ,R.WEIGHT           
-				  ,R.SCORE_SIZE       
-				  ,R.SCORE_COLOR      
-				  ,R.SCORE_FIT        
-				  ,R.SCORE_THICK      
-				  ,R.SCORE_WEIGHT     
-				  ,R.SCORE_BALL       
-				  ,R.GIVE_DUE_PNT     
-				  ,R.PNT_GIVE_STAT    
-				  ,R.BEST_YN          
-				  ,R.GIVE_DUE_BPNT    
-				  ,R.BPNT_GIVE_YN     
-				  ,R.DISP_YN          
-				  ,R.DEL_YN           
-				  ,R.CONFIRM_YN       
-				  ,R.CONFIRM_UNO      
-				  ,R.CONFIRM_DT       
-				  ,R.REG_NO           
-				  ,R.REG_DT           
-				  ,R.UPD_NO           
-				  ,R.UPD_DT           
-				  ,R.ADM_RPL          
-				  ,R.ADM_RPL_REG_NO   
-				  ,R.ADM_RPL_DT       
-				  </if>
-			      ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
-			FROM TB_ORDER O INNER JOIN TB_ORDER_DETAIL OD ON O.ORD_NO = OD.ORD_NO 
-								 			 	 AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60') -- 구매 확정인것만
-			                INNER JOIN TB_ORDER_DETAIL_ITEM ODI ON OD.ORD_DTL_NO = ODI.ORD_DTL_NO 
-			                  					 AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
-			                  	                AND ODI.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60')
-			                INNER JOIN TB_GOODS G ON G.GOODS_CD = OD.GOODS_CD 
-			                INNER JOIN TB_BRAND B ON B.BRAND_CD = G.BRAND_CD
-			                LEFT JOIN TB_ITEMKIND I ON G.ITEMKIND_CD = I.ITEMKIND_CD
-			               <if test="reviewStat == 'u'.toString()">
-			                INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
+		SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!') AS ITEM_NM
+		     , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ) AS COLOR_NM
+		     , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD1
+		     , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ) AS OPT_CD2
+		     , Z.ORD_NO
+		     , Z.ORD_DT
+		     , Z.PAY_DT
+		     , Z.DELV_EDDT
+		     , Z.ORD_DTL_NO
+		     , Z.ORD_EXCH_GB
+		     , Z.GOODS_CD
+		     , Z.GOODS_NM
+		     , Z.LIST_PRICE
+		     , Z.GOODS_TYPE
+		     , Z.SYS_IMG_NM
+		     , Z.ORD_DTL_STAT
+		     , Z.ORD_QTY
+		     , Z.CNCL_RTN_QTY
+		     , Z.ORD_AMT
+		     , Z.REAL_ORD_AMT
+		     , Z.SAVE_PNT_AMT
+		     , Z.CNCL_RTN_AMT
+		     , Z.PNT_DC_AMT
+		     , Z.GFCD_USE_AMT
+		     , Z.INVOICE_NO
+		     , Z.SUPPLY_COMP_CD
+		     , Z.DELV_FEE_CD
+		     , Z.SHOT_DELV_YN
+		     , Z.CHANGEABLE_YN
+		     , Z.RETURNABLE_YN
+		     , Z.SELF_GOODS_YN
+		     , Z.BRAND_NM
+		     , Z.BRAND_ENM
+		     , Z.ORD_DTL_STAT_NM
+		     , Z.ORD_REQ_CHG_QTY
+		     , Z.ORD_CAN_CHG_QTY
+		     , Z.ITEMKIND_NM 
+		   	 , Z.ITEMKIND_CD 
+             , Z.SIZE_GB 
+             , Z.REMAIN_DT
+             <if test="reviewStat == 'u'.toString()">
+             , Z.REVIEW_SQ        
+			 , Z.REVIEW_GB        
+			 , Z.REVIEW_TITLE     
+			 , Z.REVIEW_CONTENT   
+			 , Z.SCORE            
+			 , Z.HEIGHT           
+			 , Z.WEIGHT           
+			 , Z.SCORE_SIZE       
+			 , Z.SCORE_COLOR      
+			 , Z.SCORE_FIT        
+			 , Z.SCORE_THICK      
+			 , Z.SCORE_WEIGHT     
+			 , Z.SCORE_BALL       
+			 , Z.GIVE_DUE_PNT     
+			 , Z.PNT_GIVE_STAT    
+			 , Z.BEST_YN          
+			 , Z.GIVE_DUE_BPNT    
+			 , Z.BPNT_GIVE_YN     
+			 , Z.DISP_YN          
+			 , Z.DEL_YN           
+			 , Z.CONFIRM_YN       
+			 , Z.CONFIRM_UNO      
+			 , Z.CONFIRM_DT       
+			 , Z.REG_NO           
+			 , Z.REG_DT           
+			 , Z.UPD_NO           
+			 , Z.UPD_DT           
+			 , Z.ADM_RPL          
+			 , Z.ADM_RPL_REG_NO   
+			 , Z.ADM_RPL_DT 
+			 </if>
+		  FROM (SELECT O.ORD_NO
+					 , DATE_FORMAT(O.ORD_DT, '%Y.%m.%d') AS ORD_DT
+					 , DATE_FORMAT(O.PAY_DT, '%Y-%m-%d') AS PAY_DT 
+					 , DATE_FORMAT(OD.DELV_EDDT, '%m/%d')								AS DELV_EDDT
+					 , OD.ORD_DTL_NO
+					 , OD.ORD_EXCH_GB
+					 , OD.GOODS_CD
+		             , OD.GIFT_ADDR_INP_YN
+					 , G.GOODS_NM
+					 , IFNULL((SELECT COLOR_KNM FROM TB_COLOR C WHERE COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G.MAIN_COLOR_CD ) AND USE_YN  = 'Y'), ODI.OPT_CD1) AS COLOR_NM
+					 , (SELECT GOODS_NM FROM TB_GOODS WHERE GOODS_CD = ODI.ITEM_CD)		AS ITEM_NM
+		             , ODI.ORD_DTL_ITEM_SQ
+					 , ODI.OPT_CD1
+					 , ODI.OPT_CD2
+					 , G.LIST_PRICE
+		             , G.GOODS_TYPE
+		             , CASE WHEN G.GOODS_TYPE != 'G056_S' AND G.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
+		                    ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G.GOODS_CD AND COLOR_CD = IFNULL(G.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
+					 , OD.ORD_DTL_STAT
+					 , OD.ORD_QTY
+					 , OD.CNCL_RTN_QTY
+					 , OD.ORD_AMT
+					 , OD.REAL_ORD_AMT
+					 , OD.SAVE_PNT_AMT
+					 , OD.CNCL_RTN_AMT
+					 , OD.PNT_DC_AMT
+					 , OD.GFCD_USE_AMT
+					 , OD.INVOICE_NO
+					 , OD.SUPPLY_COMP_CD
+					 , OD.DELV_FEE_CD
+					 , OD.SHOT_DELV_YN
+					 , OD.CHANGEABLE_YN
+					 , OD.RETURNABLE_YN
+					 , G.SELF_GOODS_YN
+				     , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)							AS BRAND_NM
+				     , B.BRAND_ENM
+				     , FN_GET_CODE_NM('G013', OD.ORD_DTL_STAT)							AS ORD_DTL_STAT_NM
+					 , IFNULL(OCD.ORD_REQ_CHG_QTY, 0) AS ORD_REQ_CHG_QTY
+					 , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0)    AS ORD_CAN_CHG_QTY
+					 , I.ITEMKIND_NM 
+		   	         , I.ITEMKIND_CD 
+			         , I.SIZE_GB 
+			         ,DATEDIFF( DATE_ADD(O.PAY_DT,INTERVAL 90 DAY),NOW()) AS REMAIN_DT -- 남은시간
+			          <if test="reviewStat == 'u'.toString()">
+			         , R.REVIEW_SQ        
+			         , R.REVIEW_GB        
+				     , R.REVIEW_TITLE     
+			         , R.REVIEW_CONTENT   
+				     , R.SCORE            
+				     , R.HEIGHT           
+				     , R.WEIGHT           
+				     , R.SCORE_SIZE       
+				     , R.SCORE_COLOR      
+				     , R.SCORE_FIT        
+				     , R.SCORE_THICK      
+				     , R.SCORE_WEIGHT     
+				     , R.SCORE_BALL       
+				     , R.GIVE_DUE_PNT     
+				     , R.PNT_GIVE_STAT    
+				     , R.BEST_YN          
+				     , R.GIVE_DUE_BPNT    
+				     , R.BPNT_GIVE_YN     
+				     , R.DISP_YN          
+				     , R.DEL_YN           
+				     , R.CONFIRM_YN       
+				     , R.CONFIRM_UNO      
+				     , R.CONFIRM_DT       
+				     , R.REG_NO           
+				     , R.REG_DT           
+				     , R.UPD_NO           
+				     , R.UPD_DT           
+				     , R.ADM_RPL          
+				     , R.ADM_RPL_REG_NO   
+				     , R.ADM_RPL_DT   
+				     </if>
+				  FROM TB_ORDER O
+				 INNER JOIN TB_ORDER_DETAIL OD
+				    ON O.ORD_NO = OD.ORD_NO
+				   AND OD.ORD_DTL_STAT IN ('G013_70','G013_50','G013_60) -- 구매 확정인것만
+				 INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+				    ON OD.ORD_NO = ODI.ORD_NO
+				   AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+				   AND ODI.ORD_DTL_STAT IN('G013_70','G013_50','G013_60') -- 구매 확정인것만
+				 INNER JOIN TB_GOODS G
+				    ON OD.GOODS_CD = G.GOODS_CD
+				 INNER JOIN TB_BRAND B
+				    ON B.BRAND_CD = G.BRAND_CD
+				 LEFT JOIN TB_ITEMKIND I 
+				    ON G.ITEMKIND_CD = I.ITEMKIND_CD 
+				 <if test="reviewStat == 'u'.toString()">
+				 INNER JOIN TB_REVIEW R ON R.ORD_NO = O.ORD_NO 
 			                                      AND R.ORD_NO = O.ORD_NO
 			                                      AND R.ORD_DTL_NO = OD.ORD_DTL_NO
-			               </if> 
-			WHERE 1=1
-				AND O.PAY_DT <![CDATA[>]]>  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S') <!--  60 일이내것만 -->
+			      </if>                          
+				  LEFT OUTER JOIN (SELECT OD.ORD_DTL_NO
+										, SUM(OCD.CHG_QTY) AS ORD_REQ_CHG_QTY
+									 FROM TB_ORDER_CHANGE_DETAIL OCD
+									INNER JOIN TB_ORDER_DETAIL OD
+									   ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+									WHERE OCD.DEL_YN = 'N'
+									GROUP BY OCD.ORD_DTL_NO
+								  ) OCD
+				    ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+				  WHERE 1=1
+				AND O.PAY_DT >  DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY), '%Y%M%D%H%I%S') 
 				<choose>
 					<when test="reviewStat == 'u'.toString()">
 					AND O.ORD_NO IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
@@ -464,10 +621,11 @@
 					AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
 					</otherwise>
 				</choose>
-				AND O.CUST_NO = #{custNo}
+				AND O.ORD_NO NOT IN (SELECT R.ORD_NO FROM TB_REVIEW R WHERE R.DEL_YN = 'N' AND DISP_YN = 'Y')
+				AND O.CUST_NO = 100000
 				AND O.DISP_YN = 'Y'
-				AND O.SITE_CD = #{siteCd}
-				<if test="ordNo!=null and ordNo != ''">
+			 	AND O.SITE_CD = 'G000_10'
+     			<if test="ordNo!=null and ordNo != ''">
 				AND O.ORD_NO = #{ordNo}
 				</if>
 				<if test="ordDtlNo!=null and ordDtlNo != ''">
@@ -476,8 +634,19 @@
 				<if test="goodsCd!=null and goodsCd!=''">
 				AND G.GOODS_CD = #{goodsCd}
 				</if>
-		)F
-		ORDER BY F.PAY_DT DESC
+				) Z
+		 GROUP BY Z.ORD_NO, Z.ORD_DT, Z.DELV_EDDT, Z.ORD_DTL_NO, Z.ORD_EXCH_GB
+				, Z.GOODS_CD, Z.GOODS_NM, Z.LIST_PRICE, Z.SYS_IMG_NM, Z.ORD_DTL_STAT, Z.ORD_QTY, Z.CNCL_RTN_QTY, Z.ORD_AMT, Z.REAL_ORD_AMT
+				, Z.SAVE_PNT_AMT, Z.CNCL_RTN_AMT, Z.PNT_DC_AMT, Z.GFCD_USE_AMT, Z.INVOICE_NO
+				, Z.SUPPLY_COMP_CD, Z.DELV_FEE_CD, Z.SHOT_DELV_YN, Z.CHANGEABLE_YN, Z.SELF_GOODS_YN, Z.BRAND_NM, Z.BRAND_ENM,Z.ORD_DTL_STAT_NM
+				, Z.ORD_REQ_CHG_QTY, Z.ORD_CAN_CHG_QTY
+				 <if test="reviewStat == 'u'.toString()">
+				, Z.REVIEW_SQ , Z.REVIEW_SQ , Z.REVIEW_GB , Z.REVIEW_TITLE , Z.REVIEW_CONTENT , Z.SCORE , Z.HEIGHT           
+				, Z.WEIGHT  , Z.SCORE_SIZE , Z.SCORE_COLOR , Z.SCORE_FIT , Z.SCORE_THICK , Z.SCORE_WEIGHT , Z.SCORE_BALL , Z.GIVE_DUE_PNT , Z.PNT_GIVE_STAT    
+			    , Z.BEST_YN, Z.GIVE_DUE_BPNT , Z.BPNT_GIVE_YN , Z.DISP_YN , Z.DEL_YN, Z.CONFIRM_YN, Z.CONFIRM_UNO, Z.CONFIRM_DT, Z.REG_NO, Z.REG_DT      
+			    , Z.UPD_NO, Z.UPD_DT, Z.ADM_RPL, Z.ADM_RPL_REG_NO, Z.ADM_RPL_DT  
+			    </if>          
+		ORDER BY Z.ORD_NO DESC, Z.ORD_DTL_STAT, Z.SELF_GOODS_YN DESC, Z.SHOT_DELV_YN DESC, Z.SUPPLY_COMP_CD
 	</select>
 	
 	<!-- 마이페이지 작성가능한 리뷰 -->

+ 10 - 1
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewCreateFormWeb.html

@@ -77,7 +77,8 @@
 													<div class="gd_opt">
 														<div class="option_wrap">
 															<span class="title sr-only">주문 옵션</span>
-															<span class="option">[[${reviewInfo.optCd1}]]K&nbsp;/&nbsp;[[${reviewInfo.optCd2}]]</span>
+															<div id="optionDiv"><span class="option"></span></div>
+															
 														</div>
 													</div>
 												</div>
@@ -575,6 +576,14 @@ var fnChooseFile = function(obj) {
 }
 
 $(document).ready(function() {
+	if (reviewList.goodsType == 'G056_S') {
+		$.each(reviewList.colorNmArr, function(index, option) {
+			$("#optionDiv").append('<span class="option">'+reviewList.itemNmArr[index] + ' / ' + option + ' / ' + reviewList.optCd2Arr[index]+'</span>');
+		});
+	}else{
+		$(".option").append(reviewList.optCd1+"&nbsp;/&nbsp;"+reviewList.optCd2);
+	}
+	
 	 if(reviewStat=='u'){
 		 var reviewScore = reviewList.score -1;
 		 $("#score").val(reviewScore);

+ 13 - 4
src/main/webapp/WEB-INF/views/web/mypage/MypageReviewFormWeb.html

@@ -76,14 +76,14 @@
 									</ul>
 								</div>																					
 							</div>
-							<div class="nodata" id="nodata1">
+							<div class="nodata" id="nodata1" style="display:none;">
 								<div class="txt_box">
 									<p>
 										작성 가능한 리뷰가 없습니다.<br>
 									</p>
 								</div>
 							</div>
-							<div class="nodata" id="nodata2">
+							<div class="nodata" id="nodata2" style="display:none;">
 								<div class="txt_box">
 									<p>
 										작성한 리뷰가 없습니다.<br>
@@ -152,6 +152,7 @@
 		$('#nodata2').hide();
 		
 		$('#reviewList').html('');
+
 		
 		if (result.dataList1 != null && result.dataList1.length > 0) {
 			$.each(result.dataList1, function(idx, item) {
@@ -180,7 +181,15 @@
 				html += '					<div class="gd_opt">                                                                                  ';
 				html += '						<div class="option_wrap">                                                                         ';
 				html += '							<span class="title sr-only">주문 옵션</span>                                                      ';
-				html += '							<span class="option">'+item.optCd1+'&nbsp;/&nbsp;'+item.optCd2+'</span>     ';
+				if (item.goodsType =='G056_S') {
+					$.each(item.colorNmArr, function (index2, option) {
+						html += '							<span class="option">' + item.itemNmArr[index2] + ' / ' + option + ' / ' + item.optCd2Arr[index2] + '</span>\n';
+					})
+				}else{
+					html += '							<span class="option">'+item.optCd1+'&nbsp;/&nbsp;'+item.optCd2+'</span>     ';
+				}
+				
+				
 				html += '						</div>                                                                                            ';
 				html += '					</div>                                                                                                ';
 				html += '				</div>                                                                                                    ';
@@ -188,7 +197,7 @@
 				html += '					<p>'+item.remainDt+'일 남음</p>                                                                                                  ';
 				html += '				</div>                                                                                                    ';
 				html += '				<div class="button_box">                                                                                  ';
-				html += '					<p><button type="button" class="btn btn_primary_line btn_sm" onclick="fnReviewCreate('+item.ordNo+','+item.ordDtlNo+','+item.goodsCd+')"><span>리뷰쓰기</span></button></p>           ';
+				html += '					<p><button type="button" class="btn btn_primary_line btn_sm" onclick="fnReviewCreate('+item.ordNo+','+item.ordDtlNo+',\'' + item.goodsCd + '\')"><span>리뷰쓰기</span></button></p>           ';
 				html += '				</div>                                                                                                    ';
 				html += '			</div>                                                                                                        ';
 				html += '		</div>                                                                                                            ';