|
@@ -0,0 +1,240 @@
|
|
|
|
|
+package com.style24.batch.biz.service;
|
|
|
|
|
+
|
|
|
|
|
+import java.io.BufferedWriter;
|
|
|
|
|
+import java.io.File;
|
|
|
|
|
+import java.io.FileOutputStream;
|
|
|
|
|
+import java.io.IOException;
|
|
|
|
|
+import java.io.OutputStreamWriter;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.Collection;
|
|
|
|
|
+
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.core.env.Environment;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+
|
|
|
|
|
+import com.style24.batch.biz.dao.TsbGoodsEPDao;
|
|
|
|
|
+import com.style24.persistence.domain.Goods;
|
|
|
|
|
+import com.style24.persistence.domain.GoodsEP;
|
|
|
|
|
+
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+
|
|
|
|
|
+import com.gagaframework.web.util.GagaDateUtil;
|
|
|
|
|
+import com.gagaframework.web.util.GagaStringUtil;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 네이버 EP Service
|
|
|
|
|
+ *
|
|
|
|
|
+ * @author eskim
|
|
|
|
|
+ * @since 2020. 01. 25
|
|
|
|
|
+ */
|
|
|
|
|
+@Service
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+public class TsbGoodsEPService {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private Environment env;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private TsbGoodsEPDao goodsEPDao;
|
|
|
|
|
+
|
|
|
|
|
+// @Autowired
|
|
|
|
|
+// private TsbPolicyService policyService;
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 네이버 EP 작업
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param
|
|
|
|
|
+ * @return
|
|
|
|
|
+ * @author eskim
|
|
|
|
|
+ * @throws IOException
|
|
|
|
|
+ * @since 2020. 08. 23
|
|
|
|
|
+ */
|
|
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
|
|
+ public void createNaverEP() throws IOException {
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 1. 네이버
|
|
|
|
|
+ * 01 시: 전체 EP
|
|
|
|
|
+ * 08 시~ 20 시: 요약 EP (두시간 단위, 전체EP 기준의 )
|
|
|
|
|
+ * 2. 마케팅 EP
|
|
|
|
|
+ * 01:00/10:00/12:00/14:00/16:00/18:00/20:00 : 전체 EP
|
|
|
|
|
+ * 요약 EP 없음
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ * 전체 : 데이터는 0시 30분 생성
|
|
|
|
|
+ * 변경 : 07시 30분 ~ 19시 30분 사이에 2시간 단위로 생성
|
|
|
|
|
+ */
|
|
|
|
|
+ int jobHH = Integer.parseInt(GagaDateUtil.getToday("HH"));
|
|
|
|
|
+ log.info("[createNaverEp] jobHH=> {}", jobHH);
|
|
|
|
|
+ if (jobHH == 0) {
|
|
|
|
|
+
|
|
|
|
|
+// int floorUnit = policyService.getPointUnit(TsbConstants.SiteCd.STYLE24);
|
|
|
|
|
+ Goods goodsParams = new Goods();
|
|
|
|
|
+// goodsParams.setKind("all");
|
|
|
|
|
+// goodsParams.setFloorUnit(floorUnit);
|
|
|
|
|
+
|
|
|
|
|
+ // TB_NAVER_EP삭제
|
|
|
|
|
+ goodsEPDao.deleteTbNaverEp();
|
|
|
|
|
+
|
|
|
|
|
+ // TB_NAVER_EP 생성
|
|
|
|
|
+ goodsEPDao.createTbNaverEp(goodsParams);
|
|
|
|
|
+
|
|
|
|
|
+ createNaverEPFile("all", "");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (jobHH >= 7 && jobHH <= 19) {
|
|
|
|
|
+
|
|
|
|
|
+ if (jobHH % 2 == 1) {
|
|
|
|
|
+
|
|
|
|
|
+ // 요약 start
|
|
|
|
|
+ // 01 시 전체EP 기준 변경분
|
|
|
|
|
+// int floorUnit = policyService.getPointUnit(TsbConstants.SiteCd.STYLE24);
|
|
|
|
|
+ Goods goodsParams = new Goods();
|
|
|
|
|
+// goodsParams.setKind("brief");
|
|
|
|
|
+// goodsParams.setFloorUnit(floorUnit);
|
|
|
|
|
+
|
|
|
|
|
+ // 직영공식몰도 입점사로 정책상 요약EP 사용이 불가하여 미작업 처리
|
|
|
|
|
+ // createNaverEPTemp(goodsParams);
|
|
|
|
|
+ // createNaverEPFile("brief", "");
|
|
|
|
|
+ // 요약 end
|
|
|
|
|
+
|
|
|
|
|
+ // 마케팅 전체
|
|
|
|
|
+ goodsEPDao.deleteTbNaverEpMarketing();
|
|
|
|
|
+ goodsEPDao.createTbNaverEpMarketing(goodsParams);
|
|
|
|
|
+ createNaverEPFile("all", "Y");
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 네이버 EP 생성 작업
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param
|
|
|
|
|
+ * @return
|
|
|
|
|
+ * @author eskim
|
|
|
|
|
+ * @throws IOException
|
|
|
|
|
+ * @since 2020. 08. 23
|
|
|
|
|
+ */
|
|
|
|
|
+ private void createNaverEPFile(String kind, String marketYn) throws IOException {
|
|
|
|
|
+
|
|
|
|
|
+ Goods goodsParams = new Goods();
|
|
|
|
|
+// goodsParams.setKind(kind);
|
|
|
|
|
+ Collection<GoodsEP> goodsList = new ArrayList<GoodsEP>();
|
|
|
|
|
+ if ("all".equals(kind)) {
|
|
|
|
|
+ if ("Y".equals(marketYn)) {
|
|
|
|
|
+ goodsList = goodsEPDao.getNaverMarketingAllEPList(goodsParams);
|
|
|
|
|
+ if (goodsList == null || goodsList.isEmpty()) {
|
|
|
|
|
+ goodsList = goodsEPDao.getNaverAllEPList(goodsParams);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ goodsList = goodsEPDao.getNaverAllEPList(goodsParams);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ } else {
|
|
|
|
|
+ goodsList = goodsEPDao.getNaverEPList(goodsParams);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ StringBuffer sb = new StringBuffer();
|
|
|
|
|
+
|
|
|
|
|
+ sb.append("id title price_pc link image_link category_name1 category_name2 category_name3 brand maker origin shipping point");
|
|
|
|
|
+ if ("brief".equals(kind)) {
|
|
|
|
|
+ sb.append(" class update_time");
|
|
|
|
|
+ }
|
|
|
|
|
+ sb.append("\n");
|
|
|
|
|
+
|
|
|
|
|
+ for (GoodsEP goods : goodsList) { //row
|
|
|
|
|
+
|
|
|
|
|
+ sb.append(goods.getId());
|
|
|
|
|
+ sb.append("\t").append("[공식판매처]").append(goods.getTitle());
|
|
|
|
|
+ sb.append("\t").append(goods.getPricePc());
|
|
|
|
|
+ sb.append("\t").append("https://www.pastelmall.com/goods/detail/form?goodsCd=" + goods.getId() + "&af=AF007");
|
|
|
|
|
+ if ("A".equals(goods.getImgType())) {
|
|
|
|
|
+ sb.append("\t").append("https:" + env.getProperty("upload.goods.view") + goods.getImageLink());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ sb.append("\t").append(goods.getImageLink());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!StringUtils.isEmpty(goods.getCategoryName1())) {
|
|
|
|
|
+ String[] arrCategoryNm = goods.getCategoryName1().split(">");
|
|
|
|
|
+ for (int i = 0; i < 3; i++) {
|
|
|
|
|
+ if (arrCategoryNm.length > i) {
|
|
|
|
|
+ sb.append("\t").append(arrCategoryNm[i]);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ sb.append("\t").append("");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ sb.append("\t").append("");
|
|
|
|
|
+ sb.append("\t").append("");
|
|
|
|
|
+ sb.append("\t").append("");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ sb.append("\t").append(goods.getBrand());
|
|
|
|
|
+ sb.append("\t").append(goods.getMaker());
|
|
|
|
|
+ sb.append("\t").append(GagaStringUtil.convNull(goods.getOrigin(), ""));
|
|
|
|
|
+ if (Integer.parseInt(goods.getPricePc()) >= goods.getMinOrdAmt()) {
|
|
|
|
|
+ sb.append("\t").append("0");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ sb.append("\t").append(goods.getShipping());
|
|
|
|
|
+ }
|
|
|
|
|
+ sb.append("\t").append(goods.getPoint());
|
|
|
|
|
+ if ("brief".equals(kind)) {
|
|
|
|
|
+ sb.append("\t").append(goods.getJobgbn()); // I:신규, U:업데이트상품, D: 품절상품
|
|
|
|
|
+ sb.append("\t").append(GagaDateUtil.getToday("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ sb.append("\n");
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //폴더 없으면 만들어줍니다.
|
|
|
|
|
+ if (!new File(env.getProperty("naverEP.path")).exists()) {
|
|
|
|
|
+ new File(env.getProperty("naverEP.path")).mkdirs();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String uploadPath = env.getProperty("naverEP.path") + "/" + kind + ".txt";
|
|
|
|
|
+ //BufferedWriter bwr = new BufferedWriter(new FileWriter(new File(uploadPath)));
|
|
|
|
|
+ BufferedWriter bwr = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(uploadPath)), "UTF8"));
|
|
|
|
|
+ bwr.write(sb.toString());
|
|
|
|
|
+ bwr.flush();
|
|
|
|
|
+ bwr.close();
|
|
|
|
|
+
|
|
|
|
|
+ // GagaFtpUtil ftpUtil = new GagaFtpUtil(env.getProperty("speedy.ftp.host"), env.getProperty("speedy.ftp.port"), env.getProperty("speedy.ftp.username"), env.getProperty("speedy.ftp.pwd"));
|
|
|
|
|
+ //
|
|
|
|
|
+ // File srcFile = new File(GagaFileUtil.getConcatenationPath(env.getProperty("upload.goods.target.path"), "navernewopen_new.html"));
|
|
|
|
|
+ // ftpUtil.upload(srcFile, "/ep/naver");
|
|
|
|
|
+ // ftpUtil.close();
|
|
|
|
|
+ //
|
|
|
|
|
+ // if (srcFile.exists()) {
|
|
|
|
|
+ // srcFile.delete();
|
|
|
|
|
+ // }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 네이버 요약 EP 생성 작업
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param
|
|
|
|
|
+ * @return
|
|
|
|
|
+ * @author eskim
|
|
|
|
|
+ * @throws IOException
|
|
|
|
|
+ * @since 2020. 08. 23
|
|
|
|
|
+ */
|
|
|
|
|
+ private void createNaverEPTemp(Goods goodsParams) {
|
|
|
|
|
+
|
|
|
|
|
+ // TB_NAVER_EP_TEMP 삭제
|
|
|
|
|
+ goodsEPDao.deleteTbNaverEpTemp();
|
|
|
|
|
+
|
|
|
|
|
+ // TB_NAVER_EP_TEMP 생성 - 당일 신규 등록건
|
|
|
|
|
+ goodsEPDao.createTbNaverEpTemp(goodsParams);
|
|
|
|
|
+
|
|
|
|
|
+ // 전체 EP의수정건
|
|
|
|
|
+ goodsEPDao.createTbNaverEpTempOfGoods(goodsParams);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|