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

네이버 EP 전체 페이징 추가

jsshin 4 лет назад
Родитель
Сommit
90606bc2b1

+ 9 - 0
src/main/java/com/style24/batch/biz/dao/TsbGoodsEpDao.java

@@ -132,6 +132,14 @@ public interface TsbGoodsEpDao {
 	 */
 	Collection<GoodsEp> getNaverEpList();
 
+	/**
+	 * 네이버 EP 페이징 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 6. 14
+	 */
+	Collection<GoodsEp> getNaverEpPagingList(GoodsEp goodsEp);
+
 	/**
 	 * 네이버 판매지수EP 목록
 	 * @return
@@ -189,4 +197,5 @@ public interface TsbGoodsEpDao {
 	 */
 	Collection<GoodsEp> getDaumReviewEpList();
 
+	int getNaverEpListCount();
 }

+ 30 - 12
src/main/java/com/style24/batch/biz/job/goods/TsbNaverAllEp.java

@@ -6,6 +6,8 @@ import java.io.FileOutputStream;
 import java.io.OutputStreamWriter;
 import java.util.Collection;
 
+import com.gagaframework.web.parameter.GagaMap;
+import com.style24.persistence.domain.Customer;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
@@ -26,7 +28,7 @@ import com.gagaframework.web.util.GagaFileUtil;
  */
 @Component
 @Slf4j
-public class TsbNaverAllEp extends TsbAbstractJob<Collection<GoodsEp>, Collection<GoodsEp>, String> {
+public class TsbNaverAllEp extends TsbAbstractJob<String, String, String> {
 
 	@Autowired
 	private TsbGoodsEpService naverEpService;
@@ -34,22 +36,23 @@ public class TsbNaverAllEp extends TsbAbstractJob<Collection<GoodsEp>, Collectio
 	@Autowired
 	private Environment env;
 
+	private static final int PAGE_SIZE = 10000;
+
 	@Override
-	public Collection<GoodsEp> read() throws Exception {
+	public String read() throws Exception {
 		// 네이버 전체EP 생성
 		//naverEpService.createNaverEp("ALL");
 
-		// 네이버 전체EP 목록
-		return naverEpService.getNaverEpList();
+		return "OK";
 	}
 
 	@Override
-	public Collection<GoodsEp> process(Collection<GoodsEp> goodsEpList) throws Exception {
-		return goodsEpList;
+	public String process(String goodsEpList) throws Exception {
+		return "OK";
 	}
 
 	@Override
-	public String write(Collection<GoodsEp> goodsEpList) throws Exception {
+	public String write(String goodsEpList) throws Exception {
 //		if (goodsEpList != null && !goodsEpList.isEmpty()) {
 //			StringBuilder sb = new StringBuilder();
 //			this.setEpTitle(sb);
@@ -66,18 +69,33 @@ public class TsbNaverAllEp extends TsbAbstractJob<Collection<GoodsEp>, Collectio
 //			bw.flush();
 //			bw.close();
 //		}
-		if (goodsEpList != null && !goodsEpList.isEmpty()) {
+
+			int totalCount = naverEpService.getNaverEpListCount();
+			if (totalCount < 1 ) {
+				return "OK";
+			}
 			String uploadPath = GagaFileUtil.getConcatenationPath(env.getProperty("ep.file.path"), "iStyle24ProductFeed_NaverEp_new.txt");
 			log.info("네이버 전체EP 파일 경로: {}", uploadPath);
 
+
+			int totalPage = totalCount / PAGE_SIZE;
+			if (totalCount % PAGE_SIZE > 0) {
+				totalPage++;
+			}
+
 			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(uploadPath)), "UTF-8"));
 			bw.append(this.setEpTitle());
-
-			for (GoodsEp goodsEp : goodsEpList) {
-				bw.append(this.setEpInfo(goodsEp));
+			for (int page = 0; page < totalPage; page++) {
+				int limitStartRow = (page * PAGE_SIZE + 1) - 1;
+				GoodsEp goodsEp = new GoodsEp();
+				goodsEp.setLimitStartRow(limitStartRow);
+				goodsEp.setPageSize(PAGE_SIZE);
+				Collection<GoodsEp> goodsEpCollection  = naverEpService.getNaverEpPagingList(goodsEp);
+				for (GoodsEp goodsEpIfno : goodsEpCollection) {
+					bw.append(this.setEpInfo(goodsEpIfno));
+				}
 			}
 			bw.close();
-		}
 
 		return "OK";
 	}

+ 21 - 0
src/main/java/com/style24/batch/biz/service/TsbGoodsEpService.java

@@ -153,6 +153,26 @@ public class TsbGoodsEpService {
 		return goodsEpDao.getNaverEpList();
 	}
 
+	/**
+	 * 네이버 EP 건수
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 6. 14
+	 */
+	public int getNaverEpListCount() {
+		return goodsEpDao.getNaverEpListCount();
+	}
+
+	/**
+	 * 네이버 EP 페이징 목록
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 6. 14
+	 */
+	public Collection<GoodsEp> getNaverEpPagingList(GoodsEp goodsEp) {
+		return goodsEpDao.getNaverEpPagingList(goodsEp);
+	}
+
 	/**
 	 * 네이버 판매지수EP 목록
 	 * @return
@@ -258,4 +278,5 @@ public class TsbGoodsEpService {
 		return goodsEpDao.getDaumReviewEpList();
 	}
 
+
 }

+ 2 - 1
src/main/java/com/style24/batch/biz/task/TsbGoodsTask.java

@@ -274,7 +274,8 @@ public class TsbGoodsTask {
 	 * 네이버 전체EP 생성
 	 * @throws Exception
 	 */
-	@Scheduled(cron = "${cron.goods.ep.naver.all.goods.create}")
+	//@Scheduled(cron = "${cron.goods.ep.naver.all.goods.create}")
+	@Scheduled(fixedDelay = 350000000)
 	@Async
 	public void naverAllEpCreateJob() throws Exception {
 		naverAllEp.runById("cron.goods.ep.naver.all.goods.create");

+ 3 - 0
src/main/java/com/style24/persistence/domain/GoodsEp.java

@@ -128,4 +128,7 @@ public class GoodsEp implements Serializable {
 	private String writer;			// 상품평등록자명(1글자 기준 뒤쪽 마스킹 처리)
 	private String cdate;			// 상품평작성일(yyyymmddhhmmss 형식)
 
+	private int limitStartRow;
+	private int pageSize;
+
 }

+ 68 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsbGoodsEp.xml

@@ -1,7 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.style24.batch.biz.dao.TsbGoodsEpDao">
-	
+	<!-- 페이징을 위한 select절 상단 -->
+	<sql id="selectForPagingHeader">
+		SELECT *
+		FROM (
+	</sql>
+
+	<!-- 페이징을 위한 select절 하단 -->
+	<sql id="selectForPagingFooter">
+		) ORIGINAL
+		LIMIT #{limitStartRow} ,  #{pageSize}
+	</sql>
+
 	<!-- 상품 이미지 정보 truncate -->
 	<delete id="truncateEpGoodsImage" timeout="360">
 		/* TsbGoodsEp.truncateEpGoodsImage */
@@ -801,6 +812,14 @@
 		        </if>
 		       ) X
 	</insert>
+
+	<!-- 네이버 EP 목록 -->
+	<select id="getNaverEpListCount" resultType="int">
+		/* TsbGoodsEp.getNaverEpListCount */
+		SELECT COUNT(1)
+		FROM   TB_EP_NAVER
+		WHERE  GB = 'LAST'
+	</select>
 	
 	<!-- 네이버 EP 목록 -->
 	<select id="getNaverEpList" resultType="GoodsEp" timeout="600">
@@ -846,6 +865,54 @@
 		FROM   TB_EP_NAVER
 		WHERE  GB = 'LAST'
 	</select>
+
+	<!-- 네이버 EP 페이징 목록 -->
+	<select id="getNaverEpPagingList" resultType="GoodsEp" parameterType="GoodsEp" timeout="600">
+		/* TsbGoodsEp.getNaverEpPaginList */
+		<include refid="selectForPagingHeader"/>
+		SELECT IFNULL(ID,'')                        AS ID
+		     , IFNULL(TITLE,'')                     AS TITLE
+		     , PRICE_PC
+		     , PRICE_MOBILE
+		     , NORMAL_PRICE
+		     , IFNULL(LINK,'')                      AS LINK
+		     , IFNULL(MOBILE_LINK,'')               AS MOBILE_LINK
+		     , IFNULL(IMAGE_LINK,'')                AS IMAGE_LINK
+		     , IFNULL(ADD_IMAGE_LINK,'')            AS ADD_IMAGE_LINK
+		     , IFNULL(CATEGORY_NAME1,'')            AS CATEGORY_NAME1
+		     , IFNULL(CATEGORY_NAME2,'')            AS CATEGORY_NAME2
+		     , IFNULL(CATEGORY_NAME3,'')            AS CATEGORY_NAME3
+		     , IFNULL(CATEGORY_NAME4,'')            AS CATEGORY_NAME4
+		     , IFNULL(NAVER_CATEGORY,'')            AS NAVER_CATEGORY
+		     , IFNULL(GOODS_GB_NM,'')               AS GOODS_GB_NM
+		     , IFNULL(IMPORT_FLAG,'')               AS IMPORT_FLAG
+		     , IFNULL(PARALLEL_IMPORT,'')           AS PARALLEL_IMPORT
+		     , IFNULL(ORDER_MADE,'')                AS ORDER_MADE
+		     , IFNULL(PRODUCT_FLAG,'')              AS PRODUCT_FLAG
+		     , IFNULL(ADULT,'')                     AS ADULT
+		     , IFNULL(MANUFACTURE_DEFINE_NUMBER,'') AS MANUFACTURE_DEFINE_NUMBER
+		     , IFNULL(BRAND,'')                     AS BRAND
+		     , IFNULL(MAKER,'')                     AS MAKER
+		     , IFNULL(ORIGIN,'')                    AS ORIGIN
+		     , IFNULL(CARD_EVENT,'')                AS CARD_EVENT
+		     , IFNULL(EVENT_WORDS,'')               AS EVENT_WORDS
+		     , IFNULL(COUPON,'')                    AS COUPON
+		     , IFNULL(PARTNER_COUPON_DOWNLOAD,'')   AS PARTNER_COUPON_DOWNLOAD
+		     , IFNULL(INTEREST_FREE_EVENT,'')       AS INTEREST_FREE_EVENT
+		     , IFNULL(POINT,'')                     AS POINT
+		     , IFNULL(SEARCH_TAG,'')                AS SEARCH_TAG
+		     , IFNULL(MINIMUM_PURCHASE_QUANTITY,'') AS MINIMUM_PURCHASE_QUANTITY
+		     , REVIEW_REG_CNT                       AS REVIEW_COUNT
+		     , IFNULL(SHIPPING,'')                  AS SHIPPING
+		     , IFNULL(AGE_GROUP,'')                 AS AGE_GROUP
+		     , IFNULL(GENDER,'')                    AS GENDER
+		     , UPD_GB
+		     , UPDATE_TIME
+		FROM   TB_EP_NAVER
+		WHERE  GB = 'LAST'
+		ORDER BY 1
+		<include refid="selectForPagingFooter"/>
+	</select>
 	
 	<!-- 네이버 판매지수EP 목록 -->
 	<select id="getNaverSellEpList" resultType="GoodsEp">