Просмотр исходного кода

상품상세 다다인선관련 수정중

eskim 5 лет назад
Родитель
Сommit
92e5b1ce82

+ 10 - 0
src/main/java/com/style24/front/biz/dao/TsfGoodsDao.java

@@ -248,6 +248,16 @@ public interface TsfGoodsDao {
 	 */
 	Delivery getGoodsDeliveryInfo(String goodsCd);
 
+	/**
+	 * 상품 다다익선 시퀀스 목록
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @date 2021. 6. 10
+	 */
+	Collection<Tmtb> getTmtbSqList(Goods goods);
+	
 	/**
 	 * 상품 다다익선 목록
 	 *

+ 53 - 1
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -572,7 +572,59 @@ public class TsfGoodsService {
 	 * @date 2021. 3. 8
 	 */
 	public Collection<Goods> getTmtbGoodsList(Goods goods) {
-		return goodsDao.getTmtbGoodsList(goods);
+		
+		Collection<Goods> result = new ArrayList<Goods>();
+			
+		Collection<Tmtb> tmtbSqList = goodsDao.getTmtbSqList(goods);
+		if (tmtbSqList == null || tmtbSqList.isEmpty()) {
+			return result;
+		}
+		
+		int rCount = 0;	//다다익선 조회수
+		int tCount = goods.getMaxRownum();	//리턴 잔여수
+		if (tCount == 0) tCount = 20;
+		
+		for (Tmtb tmtb: tmtbSqList) {
+			
+			tmtb.setTmtbSq(tmtb.getTmtbSq());
+			Collection<Goods> tmtbGoodsList = goodsDao.getTmtbGoodsList(goods);
+			if (tmtbGoodsList == null || tmtbGoodsList.isEmpty()) {
+				continue;
+			}
+			
+			if (tCount == 0) { //잔여수가 없으면 종료
+				break;
+			}
+			
+			//다다익선 조회 상품 수
+			rCount = tmtbGoodsList.size();
+			
+			if (tCount > rCount) { 	//조회수보다 잔여수가 클경우
+				result.addAll(tmtbGoodsList);
+				tCount = tCount - rCount; //남은 잔여수 계산
+			}else {
+				if (tCount == rCount) {	//잔여 수량과 조회수가 같은면 종료
+					result.addAll(tmtbGoodsList);
+					break;
+				}else {
+					
+					for (int i=0; i<tCount; i++) {  //잔여수량만큼 loop
+						int tmtbGoodsListCnt = 0;
+						for(Goods tmtbGoods: tmtbGoodsList) {
+							if (i == tmtbGoodsListCnt) {
+								result.add(tmtbGoods);
+								tCount --;
+								break;
+							}
+							tmtbGoodsListCnt ++;
+						}
+					}
+				}
+				
+			}
+		}
+		
+		return result;
 	}
 
 	/**

+ 1 - 2
src/main/java/com/style24/persistence/domain/Goods.java

@@ -1,7 +1,5 @@
 package com.style24.persistence.domain;
 
-import java.util.List;
-
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.style24.persistence.TscBaseDomain;
 
@@ -216,6 +214,7 @@ public class Goods extends TscBaseDomain {
 	private String icon;
 	private String benefits;
 	private String videos;			// 동영상들(,로 연결된 문자열. 동영상구분:미디어컨텐츠 또는 유튜브동영상ID, ...)
+	private int tmtbSq;
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] sizeArr;		// 상품사이즈

+ 16 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -820,6 +820,19 @@
 		LIMIT 1
 	</select>
 	
+	<!-- 상품 다다익선 시퀀스 목록 -->
+	<select id="getTmtbSqList" parameterType="Goods" resultType="Tmtb">
+		/* TsfGoods.getTmtbSqList */
+		SELECT A.TMTB_SQ
+		FROM TB_TMTB_APPLY_GOODS A
+		LEFT JOIN TB_TMTB_APPLY_GOODS B ON A.GOODS_CD = B.GOODS_CD
+		                                AND B.DEL_YN = 'N' AND B.GOODS_GB = 'G800_30' -- 제외상품
+		                                AND B.GOODS_CD =  #{goodsCd}
+		WHERE A.GOODS_CD = #{goodsCd}  AND A.DEL_YN = 'N' AND A.GOODS_GB IN ( 'G800_10', 'G800_20')  -- 기본과 적용상품
+		AND B.TMTB_SQ IS NULL
+		ORDER BY A.TMTB_SQ DESC -- 최근 다다익선
+	</select>	
+	
 	<!-- 상품 다다익선 목록 -->
 	<select id="getTmtbGoodsList" parameterType="Goods" resultType="Goods">
 		/* TsfGoods.getTmtbGoodsList */
@@ -875,9 +888,10 @@
 			#{item}
 				</foreach>
 			</if>
+		    AND A.TMTB_SQ = #{tmtbSq}
 		     <![CDATA[
-		    AND A.TMTB_SQ IN (SELECT TMTB_SQ FROM TB_TMTB_APPLY_GOODS WHERE GOODS_CD = #{goodsCd} AND DEL_YN = 'N' AND GOODS_GB IN ( 'G800_10', 'G800_20')) -- 기본과 적용상품
-		    AND A.TMTB_SQ NOT IN (SELECT TMTB_SQ FROM TB_TMTB_APPLY_GOODS WHERE GOODS_CD = #{goodsCd} AND DEL_YN = 'N' AND GOODS_GB = 'G800_30') -- 제외상품
+		   -- AND A.TMTB_SQ IN (SELECT TMTB_SQ FROM TB_TMTB_APPLY_GOODS WHERE GOODS_CD = #{goodsCd} AND DEL_YN = 'N' AND GOODS_GB IN ( 'G800_10', 'G800_20')) -- 기본과 적용상품
+		   -- AND A.TMTB_SQ NOT IN (SELECT TMTB_SQ FROM TB_TMTB_APPLY_GOODS WHERE GOODS_CD = #{goodsCd} AND DEL_YN = 'N' AND GOODS_GB = 'G800_30') -- 제외상품
 		     ]]>
 		    -- ORDER BY A.TMTB_SQ DESC
 		    ) Z