From 75c913433be539038a4c45326faddc45b574f2c7 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 29 五月 2019 17:30:25 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- fanli/src/main/java/com/yeshi/fanli/job/QualityFactoryJob.java | 362 +++++++++++---------------------------------------- 1 files changed, 82 insertions(+), 280 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/job/QualityFactoryJob.java b/fanli/src/main/java/com/yeshi/fanli/job/QualityFactoryJob.java index 14cd59a..33171dc 100644 --- a/fanli/src/main/java/com/yeshi/fanli/job/QualityFactoryJob.java +++ b/fanli/src/main/java/com/yeshi/fanli/job/QualityFactoryJob.java @@ -8,8 +8,6 @@ import javax.annotation.Resource; -import net.sf.json.JSONObject; - import org.quartz.Job; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; @@ -23,6 +21,7 @@ import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; import com.yeshi.fanli.service.inter.lable.LabelService; import com.yeshi.fanli.service.inter.lable.QualityFactoryService; import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; @@ -30,6 +29,8 @@ import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; + +import net.sf.json.JSONObject; /** * 绮鹃�夊晢鍝佽嚜鍔ㄥ叆搴� @@ -52,6 +53,9 @@ private QualityFactoryService qualityFactoryService; @Resource private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService; + @Resource + private TaoBaoGoodsBriefService taoBaoGoodsBriefService; + public QualityFactoryJob() { System.out.println("--UpdateQualityFactoryJob 鏋勯�犲嚱鏁�--"); @@ -59,8 +63,6 @@ @Override public void execute(JobExecutionContext context) throws JobExecutionException { - LogHelper.test("---UpdateQualityFactoryJob----execute "); - // 鐖彇鍟嗗搧淇℃伅 searchGoods(context); } @@ -90,7 +92,8 @@ } /* 鏉ユ簮鍚嶇О */ - if (jsonData.get("sourceCalss") != null && !StringUtil.isNullOrEmpty(jsonData.get("sourceCalss").toString())) { + if (jsonData.get("sourceCalss") != null + && !StringUtil.isNullOrEmpty(jsonData.get("sourceCalss").toString())) { String sourceCalss = jsonData.get("sourceCalss").toString(); autoRule.setSourceCalss(sourceCalss); } @@ -116,41 +119,34 @@ /* 鏍囩鍒楄〃 */ List<Label> listLabs = new ArrayList<Label>(); - if (jsonData.get("lableNames") != null && !StringUtil.isNullOrEmpty(jsonData.get("lableNames").toString())) { + if (jsonData.get("lableNames") != null + && !StringUtil.isNullOrEmpty(jsonData.get("lableNames").toString())) { // 绌烘牸闅斿紑 String[] arrtitles = jsonData.get("lableNames").toString().split("\\s+"); - /* 閬嶅巻鏍囩鍚嶇О锛氭煡璇㈡暟鎹簱涓槸鍚﹀凡瀛樺湪 */ + // 鑾峰彇鏍囩灞炴�� for (String name : arrtitles) { - List<Label> labels = labelService.selectByTitle(name.trim()); - - if (labels != null && labels.size() > 0) { - Label label = labels.get(0); - - listLabs.add(label); - } else { - // 鏂板 - Label addLabel = addLabel(name, admin); - listLabs.add(addLabel); + Label label = labelService.getByTitleCache("labKey", name.trim()); + if (label == null) { + label = insertLabel(name, admin); } - + listLabs.add(label); } } int source = Integer.parseInt(jobDataMap.get("source").toString()); + autoRule.setSource(QualityFactory.SOURCE_TAOBAO); - + // 1銆佹潵婧愭窐瀹濇櫘閫氭帴鍙� if (BoutiqueAutoRule.TB_OPTIONAL == source) { - // 鏉ユ簮娣樺疂鏅�氭帴鍙� autoRule.setGoodsSource(QualityFactory.SOURCE_TAOBAO); - searchTaoBao(jsonData, listLabs, autoRule); } + // 2銆佹窐瀹濇帹鑽� if (BoutiqueAutoRule.TB_MATERIAL == source) { autoRule.setGoodsSource(QualityFactory.SOURCE_TAOBAO_MATERIAL); - // 娣樺疂鎺ㄨ崘 searchMaterial(jsonData, listLabs, autoRule); } @@ -171,10 +167,8 @@ * @param jobDataMap */ private void searchTaoBao(JSONObject jsonData, List<Label> listLabs, BoutiqueAutoRule autoRule) { - try { - Date time = new Date(); - String formatDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(time); + String formatDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()); // 椤靛ぇ灏忥紝榛樿100鏉� int pageSize = 100; @@ -205,16 +199,13 @@ filter.setPageSize(pageSize); for (int page = 1; page <= pageMax; page++) { - filter.setPage(page); - TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(filter); - LogHelper.test(title + "searchWuLiao 宸茬埇鍙�- " + page + "-椤�-"); - // 缁撴灉涓虹┖ 鏃朵笉鍐嶈姹� + // 缁撴灉涓虹┖ 缁撴潫璇锋眰 if (result == null) { LogHelper.test(title + "searchWuLiao杩斿洖 result涓虹┖"); - return; + break; } // 缁撴灉鏁版嵁澶勭悊 @@ -226,8 +217,8 @@ /* 鏉冮噸鑼冨洿 */ if (page < 3) { - startWeight = 10000; - endWeight = 12000; + startWeight = 4000; + endWeight = 6000; } else { startWeight = 10; endWeight = 3000; @@ -236,17 +227,11 @@ autoRule.setStartWeight(startWeight); autoRule.setEndWeight(endWeight); - /* 绛涢�夊晢鍝佽繘鍏ョ簿閫夊簱涓� */ - if (StringUtil.isNullOrEmpty(title)) { - screen(listGoods, jsonData, filter, listLabs, autoRule); - } else { - if (title.contains(IS_9K9)) { - screen9K9(filter, listGoods, jsonData, listLabs, autoRule); - } else { - screen(listGoods, jsonData, filter, listLabs, autoRule); - } - } + // 绛涢�夊叆搴� + screen(listGoods, jsonData, filter, listLabs, autoRule); + + /* 閿�鍞噺灏忓�� */ int minSales = 0; if (jsonData.get("startSales") != null) { @@ -287,50 +272,16 @@ break;// 缁撴潫鐖彇鏁版嵁 } } - - // 9k9 闄愭椂鎶㈣喘 涓嶆搷浣滃垹闄� - if (title.contains(IS_9K9) || title.contains(FLASH_SALE)) { + + // 9k9 闄愭椂鎶㈣喘 涓嶆搷浣滃垹闄� + if (!StringUtil.isNullOrEmpty(title) && (title.contains(IS_9K9) || title.contains(FLASH_SALE))) { return; } - + /* 鏇存柊瀹屾垚鍚庢竻鐞嗕箣鍓嶅垱寤虹殑鏁版嵁 */ if (jsonData.get("systemCid") != null && !StringUtil.isNullOrEmpty(jsonData.get("systemCid").toString())) { - Long systemCid = Long.parseLong(jsonData.get("systemCid").toString()); - - List<Long> list = qualityFactoryService.getAuctionIdbyClassId(systemCid, autoRule.getGoodsSource(), formatDate); - - if (list != null && list.size() > 0) { - if (list.size() <= 100) { - qualityFactoryService.deleteBatchByTaoBaoGoodsId(list); - } else { - - int start = 0; - int end = 100; - int countRow = 100; - - int count = list.size() / countRow; - - if (list.size() % countRow > 0) { - count += 1; - } - - for (int i = 0; i < count; i++) { - List<Long> sublist = new ArrayList<Long>(); - if (i == count - 1) { - //System.out.println(list.subList(start, list.size())); - sublist = list.subList(start, list.size()); - qualityFactoryService.deleteBatchByTaoBaoGoodsId(sublist); - break; - } - sublist = list.subList(start, end); - qualityFactoryService.deleteBatchByTaoBaoGoodsId(sublist); - start += countRow; - end += countRow; - } - - } - } + qualityFactoryService.deleteNotUpdateGoods(systemCid, formatDate, autoRule.getGoodsSource()); } } catch (Exception e) { @@ -351,11 +302,11 @@ private void searchMaterial(JSONObject jsonData, List<Label> listLabs, BoutiqueAutoRule autoRule) { try { + String formatDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()); + // 榛樿20鏉� int pageSize = 20; - boolean isCrawl = true; - // 鏉冮噸璧峰 int startWeight = 1000; // 鏉冮噸缁撴潫 @@ -404,16 +355,9 @@ return; } - /* 绛涢�夊晢鍝佽繘鍏ョ簿閫夊簱涓� */ - if (StringUtil.isNullOrEmpty(title)) { - screen(listGoods, jsonData, filter, listLabs, autoRule); - } else { - if (title.contains(IS_9K9)) { - screen9K9(filter, listGoods, jsonData, listLabs, autoRule); - } else { - screen(listGoods, jsonData, filter, listLabs, autoRule); - } - } + // 绛涢�夊叆搴� + screen(listGoods, jsonData, filter, listLabs, autoRule); + // 鎬婚〉鏁扮埇鍙栧畬鎴� PageEntity pageEntity = result.getPageEntity(); @@ -428,6 +372,17 @@ LogHelper.test("----" + title + "--缁撴潫-------"); break;// 缁撴潫鐖彇鏁版嵁 } + } + + // 9k9 闄愭椂鎶㈣喘 涓嶆搷浣滃垹闄� + if (!StringUtil.isNullOrEmpty(title) && (title.contains(IS_9K9) || title.contains(FLASH_SALE))) { + return; + } + + /* 鏇存柊瀹屾垚鍚庢竻鐞嗕箣鍓嶅垱寤虹殑鏁版嵁 */ + if (jsonData.get("systemCid") != null && !StringUtil.isNullOrEmpty(jsonData.get("systemCid").toString())) { + Long systemCid = Long.parseLong(jsonData.get("systemCid").toString()); + qualityFactoryService.deleteNotUpdateGoods(systemCid, formatDate, autoRule.getGoodsSource()); } } catch (Exception e) { @@ -447,7 +402,6 @@ * @return */ public SearchFilter getSearchFilter(JSONObject jsonData) { - SearchFilter filter = new SearchFilter(); // 鎺掑簭瀛楁 閿�閲忛珮鍒颁綆(榛樿) @@ -536,8 +490,31 @@ // 閫�娆剧巼鏄惁浣庝簬琛屼笟鍧囧�� 1 鏈� 0 鏃� filter.setIncludeRfdRate(true); } - return filter; + } + + + + /** + * 绛涢�夌鍚堟潯浠剁殑鍟嗗搧 + * + * @param taoBaoGoodsBriefs + * @param jsonData + * @param filter + * @param listLabs + * @param autoRule + * @throws Exception + */ + public void screen(List<TaoBaoGoodsBrief> taoBaoGoodsBriefs, JSONObject jsonData, SearchFilter filter, + List<Label> listLabs, BoutiqueAutoRule autoRule) throws Exception { + List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); + for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) { + // 楠岃瘉鏄惁绗﹀悎瑕佹眰 + if (validate(filter, jsonData, goodsBrief, 1)) { + listGoods.add(goodsBrief); + } + } + qualityFactoryService.autoInsertOrUpadateStorage(autoRule, listGoods, listLabs); } /** @@ -546,7 +523,6 @@ * @return */ public boolean validate(SearchFilter filter, JSONObject jsonData, TaoBaoGoodsBrief goodsBrief, int source) { - /* 閿�鍞噺灏忓�� */ int minSales = 0; if (jsonData.get("startSales") != null) { @@ -578,8 +554,8 @@ BigDecimal tkRate = goodsBrief.getTkRate(); - if (startTkRate > 0 && endTkRate > 0 - && (tkRate.compareTo(new BigDecimal(startTkRate / 100)) < 0 || tkRate.compareTo(new BigDecimal(endTkRate / 100)) > 0)) { + if (startTkRate > 0 && endTkRate > 0 && (tkRate.compareTo(new BigDecimal(startTkRate / 100)) < 0 + || tkRate.compareTo(new BigDecimal(endTkRate / 100)) > 0)) { return false; } else if (endTkRate > 0 && tkRate.compareTo(new BigDecimal(endTkRate / 100)) > 0) { return false; @@ -604,7 +580,8 @@ BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(goodsBrief); /* 楠岃瘉鍦ㄥ埜鍚庝环 */ - if (startPrice != null && endPrice != null && (couponPrice.compareTo(startPrice) < 0 || couponPrice.compareTo(endPrice) > 0)) { + if (startPrice != null && endPrice != null + && (couponPrice.compareTo(startPrice) < 0 || couponPrice.compareTo(endPrice) > 0)) { return false; } else if (endPrice != null && couponPrice.compareTo(endPrice) > 0) { return false; @@ -624,188 +601,14 @@ } /** - * 9.9 19.9 29.9 39.9 鍟嗗搧绛涢�� + * 鎻掑叆鏂扮殑鏍囩 * - * @param taoBaoGoodsBriefs + * @param title + * @param admin + * @return + * @throws Exception */ - public void screen9K9(SearchFilter filter, List<TaoBaoGoodsBrief> taoBaoGoodsBriefs, JSONObject jsonData, List<Label> listLabs, - BoutiqueAutoRule autoRule) throws Exception { - - // 9k9鏁版嵁- - List<TaoBaoGoodsBrief> list9k9 = new ArrayList<TaoBaoGoodsBrief>(); - - // 19k9鏁版嵁- - List<TaoBaoGoodsBrief> list19k9 = new ArrayList<TaoBaoGoodsBrief>(); - - // 29k9鏁版嵁- - List<TaoBaoGoodsBrief> list29k9 = new ArrayList<TaoBaoGoodsBrief>(); - - // 49k9鏁版嵁- - List<TaoBaoGoodsBrief> list49k9 = new ArrayList<TaoBaoGoodsBrief>(); - - // 楠岃瘉鏄惁绗﹀悎瑕佹眰鍏ュ簱 - for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) { - - /* 閿�鍞噺灏忓�� */ - int minSales = 0; - if (jsonData.get("startSales") != null) { - minSales = (int) jsonData.get("startSales"); - } - - /* 閿�鍞噺澶у�� */ - int maxSales = 0; - if (jsonData.get("endSales") != null) { - maxSales = (int) jsonData.get("endSales"); - } - - int biz30day = goodsBrief.getBiz30day(); - - /* 楠岃瘉閿�鍞噺 */ - if (maxSales > 0 && minSales > 0 && (biz30day < minSales || biz30day > maxSales)) { - continue; - } else if (maxSales > 0 && biz30day > maxSales) { - continue; - } else if (minSales > 0 && biz30day < minSales) { - continue; - } - - /* 楠岃瘉鍦ㄦ槸鍚︽湁鍒� */ - if (filter.getQuan() > 0) { - String couponInfo = goodsBrief.getCouponInfo(); - if (StringUtil.isNullOrEmpty(couponInfo)) { - continue; - } - } - - /* 楠岃瘉姣斾緥 */ - if (BoutiqueAutoRule.TB_MATERIAL == autoRule.getSource()) { - - int startTkRate = filter.getStartTkRate(); - int endTkRate = filter.getEndTkRate(); - - BigDecimal tkRate = goodsBrief.getTkRate(); - - if (startTkRate > 0 && endTkRate > 0 - && (tkRate.compareTo(new BigDecimal(startTkRate / 100)) < 0 || tkRate.compareTo(new BigDecimal(endTkRate / 100)) > 0)) { - continue; - } else if (endTkRate > 0 && tkRate.compareTo(new BigDecimal(endTkRate / 100)) > 0) { - continue; - } else if (startTkRate > 0 && tkRate.compareTo(new BigDecimal(startTkRate / 100)) < 0) { - continue; - } - } - - /* 9k9 */ - BigDecimal price9k9 = new BigDecimal(10); - - /* 19k9 */ - BigDecimal price19k9 = new BigDecimal(20); - - /* 29.9 */ - BigDecimal price29K9 = new BigDecimal(30); - - /* 49.9 */ - BigDecimal price49K9 = new BigDecimal(50); - /* 鍒稿悗浠�--璁$畻 */ - BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(goodsBrief); - - if (couponPrice.compareTo(price9k9) < 0) { - list9k9.add(goodsBrief); - } else if (couponPrice.compareTo(price19k9) < 0) { - list19k9.add(goodsBrief); - } else if (couponPrice.compareTo(price29K9) < 0) { - list29k9.add(goodsBrief); - } else if (couponPrice.compareTo(price49K9) < 0) { - list49k9.add(goodsBrief); - } - } - - autoRule.setCalss9k9(true); - AdminUser admin = autoRule.getAdminUser(); - - if (list9k9.size() > 0) { - List<Label> labs9K9 = new ArrayList<Label>(); - labs9K9.addAll(listLabs); - - List<Label> list = labelService.selectByTitleCache("labKey", "9.9"); - - if (list == null || list.size() == 0) { - // 鏂板 - Label addLabel = addLabel("9.9", admin); - labs9K9.add(addLabel); - } else { - labs9K9.add(list.get(0)); - } - - qualityFactoryService.autoInsertOrUpadateStorage(list9k9, labs9K9, autoRule); - } - - if (list19k9.size() > 0) { - List<Label> labs19K9 = new ArrayList<Label>(); - labs19K9.addAll(listLabs); - List<Label> list = labelService.selectByTitleCache("labKey", "19.9"); - if (list == null || list.size() == 0) { - // 鏂板 - Label addLabel = addLabel("19.9", admin); - labs19K9.add(addLabel); - } else { - labs19K9.add(list.get(0)); - } - qualityFactoryService.autoInsertOrUpadateStorage(list19k9, labs19K9, autoRule); - } - - if (list29k9.size() > 0) { - List<Label> labs29K9 = new ArrayList<Label>(); - labs29K9.addAll(listLabs); - List<Label> list = labelService.selectByTitleCache("labKey", "29.9"); - if (list == null || list.size() == 0) { - // 鏂板 - Label addLabel = addLabel("29.9", admin); - labs29K9.add(addLabel); - } else { - labs29K9.add(list.get(0)); - } - - qualityFactoryService.autoInsertOrUpadateStorage(list29k9, labs29K9, autoRule); - } - - if (list49k9.size() > 0) { - List<Label> labs49K9 = new ArrayList<Label>(); - labs49K9.addAll(listLabs); - List<Label> list = labelService.selectByTitleCache("labKey", "49.9"); - if (list == null || list.size() == 0) { - // 鏂板 - Label addLabel = addLabel("49.9", admin); - labs49K9.add(addLabel); - } else { - labs49K9.add(list.get(0)); - } - - qualityFactoryService.autoInsertOrUpadateStorage(list49k9, labs49K9, autoRule); - } - - } - - public void screen(List<TaoBaoGoodsBrief> taoBaoGoodsBriefs, JSONObject jsonData, SearchFilter filter, List<Label> listLabs, - BoutiqueAutoRule autoRule) throws Exception { - - // 閬嶅巻杩斿洖鏁版嵁- - List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); - - for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) { - // 楠岃瘉鏄惁绗﹀悎瑕佹眰 - if (validate(filter, jsonData, goodsBrief, 1)) { - listGoods.add(goodsBrief); - } - } - - if (listGoods.size() > 0) { - autoRule.setCalss9k9(false); - qualityFactoryService.autoInsertOrUpadateStorage(listGoods, listLabs, autoRule); - } - } - - public Label addLabel(String title, AdminUser admin) throws Exception { + public Label insertLabel(String title, AdminUser admin) throws Exception { // 鏂板 Label label = new Label(); label.setTitle(title);// 鍚嶇О @@ -816,7 +619,6 @@ label.setIosClick(0l); label.setAndroidClick(0l); labelService.insertSelective(label); - return label; } -- Gitblit v1.8.0