From 573c491b4a1ba60e12a5678a01c1546c0077c1ee Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 30 七月 2019 09:07:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java | 151 ++++++++++++++++++++++++++------------------------ 1 files changed, 78 insertions(+), 73 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java index 7349511..a93d81d 100644 --- a/fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java +++ b/fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java @@ -5,25 +5,29 @@ import java.math.BigDecimal; import java.net.URLEncoder; import java.util.ArrayList; -import java.util.Collections; import java.util.Iterator; import java.util.List; + +import javax.script.Invocable; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; +import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO; import com.yeshi.fanli.entity.bus.clazz.GoodsClass; import com.yeshi.fanli.entity.taobao.TaoBaoCoupon; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoBaoHead; import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail; +import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; import com.yeshi.fanli.tag.PageEntity; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TimeUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -366,67 +370,45 @@ * * @return */ - public static List<TaoBaoGoodsBrief> getDingDongQiang() { - List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); + public static List<DingDongQiangDTO> getDingDongQiang() { + List<DingDongQiangDTO> list = new ArrayList<>(); + Document doc = null; try { - Document doc = Jsoup.connect("http://dataoke.yeshitv.com/index.php?r=ddq/wap") - .userAgent( - "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Mobile Safari/537.36") - .get(); - Elements els = doc.getElementsByTag("script"); - for (int i = 0; i < els.size(); i++) { - Element item = els.get(i); - if (item.toString().length() > 5000) { - String html = item.html(); - int endIndex = html.indexOf("} ;") + 1; - int startIndex = html.indexOf("data ="); - String json = html.substring(startIndex + "data =".length(), endIndex).trim(); - JSONObject root = JSONObject.fromObject(json); - Iterator<String> keys = root.keySet().iterator(); - List<String> ids = new ArrayList<>(); - while (keys.hasNext()) { - String key = keys.next(); - JSONArray array = root.optJSONObject(key).optJSONArray("list"); - for (int j = 0; j < array.size(); j++) { - if (TimeUtil.convertToTimeTemp(array.optJSONObject(j).optString("paiqi"), - "yyyy-MM-dd HH:mm:ss") < System.currentTimeMillis()) - ids.add(array.optJSONObject(j).optString("id")); + doc = Jsoup.connect("http://www.dataoke.com/ddq").get(); + } catch (IOException e1) { + e1.printStackTrace(); + } + Elements els = doc.getElementsByTag("script"); + for (int i = 0; i < els.size(); i++) { + String content = els.get(i).html(); + if (content.indexOf("var dataDef") > -1) { + ScriptEngineManager manager = new ScriptEngineManager(); + ScriptEngine engine = manager.getEngineByName("javascript"); + try { + String js = "function getData(){return JSON.stringify(dataDef);}" + content; + engine.eval(js); + if (engine instanceof Invocable) { + Invocable in = (Invocable) engine; + String data = in.invokeFunction("getData").toString(); + System.out.println(data); + JSONObject dataJson = JSONObject.fromObject(data); + for (Iterator<String> its = dataJson.keys(); its.hasNext();) { + String key = its.next(); + JSONArray array = dataJson.optJSONArray(key); + List<DaTaoKeDetail> detailList = new ArrayList<>(); + for (int n = 0; n < array.size(); n++) { + detailList.add(new DaTaoKeDetail(array.optJSONObject(n).optLong("id"))); + } + list.add(new DingDongQiangDTO(key, detailList)); } } - Collections.shuffle(ids); - List<Long> goodsIdList = new ArrayList<>(); - ids.parallelStream().forEach(id -> { - try { - long auctionId = getAuctionId(Long.parseLong(id)); - goodsIdList.add(auctionId); - } catch (Exception e) { - } - }); - - goodsIdList.parallelStream().forEach(goods -> { - try { - TaoBaoGoodsBrief gds = TaoKeApiUtil.searchGoodsDetail(goods); - if (gds != null) - goodsList.add(gds); - } catch (Exception e) { - - } - - }); - + } catch (Exception e) { + e.printStackTrace(); } - } - - } catch (IOException e) { - e.printStackTrace(); } - - return goodsList; - + return list; } - - // public static List<TaoBaoCoupon> getRecommendCouple() { List<TaoBaoCoupon> couponList = new ArrayList<>(); @@ -536,38 +518,61 @@ // 鏍囬+鍒稿悗浠�+鍖呴偖+鎻忚堪 String desc = detail.getdTitle(); desc += "\n"; - desc += String.format("鍒稿悗浠�%s銆�%s鍏冦�戝寘閭鏉� ",Math.random()>0.5?"馃挵":"", MoneyBigDecimalUtil.getWithNoZera(detail.getPrice()).toString()) - + (Math.random()>0.5?getRandomCommonEmoji():""); + desc += String.format("鍒稿悗浠�%s銆�%s鍏冦�戝寘閭鏉� ", Math.random() > 0.5 ? "馃挵" : "", + MoneyBigDecimalUtil.getWithNoZera(detail.getPrice()).toString()) + + (Math.random() > 0.5 ? getRandomCommonEmoji() : ""); desc += "\n"; -// desc += detail.getIntroduce(); - String introduce = detail.getIntroduce().replace("锛�", ",").replace("銆�", ",").replace("锛�", ",") - .replace(",", ","); - introduce=introduce.replace(",,,", ",").replace(",,", ","); - + // desc += detail.getIntroduce(); + String introduce = detail.getIntroduce().replace("锛�", ",").replace("銆�", ",").replace("锛�", ",").replace(",", + ","); + introduce = introduce.replace(",,,", ",").replace(",,", ","); + String[] sts = introduce.split(","); introduce = ""; for (int i = 0; i < sts.length; i++) { if (i % 2 == 1) {// 闇�瑕佹崲琛� - introduce += sts[i] + (Math.random()>0.5?getRandomCommonEmoji():i==sts.length-1?"":"锛�") + "\n"; + introduce += sts[i] + (Math.random() > 0.5 ? getRandomCommonEmoji() : i == sts.length - 1 ? "" : "锛�") + + "\n"; } else - introduce += sts[i] + (Math.random()>0.5?getRandomCommonEmoji():i==sts.length-1?"":"锛�"); + introduce += sts[i] + (Math.random() > 0.5 ? getRandomCommonEmoji() : i == sts.length - 1 ? "" : "锛�"); } - desc+=introduce; + desc += introduce; return desc; } public static TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetail detail) { - if (detail != null) { + if (detail != null && goods != null) { // 閲嶆柊璁剧疆鏍囬涓庡埜浠锋牸 goods.setTitle(detail.getdTitle()); - goods.setCouponAmount(detail.getQuanPrice()); - if (new BigDecimal(detail.getQuanCondition()).compareTo(new BigDecimal(0)) > 0) - goods.setCouponInfo(String.format("婊�%s鍏冨噺%s鍏�", detail.getQuanCondition(), - MoneyBigDecimalUtil.getWithNoZera(detail.getQuanPrice()).toString())); - else - goods.setCouponInfo(String.format("%s鍏冩棤鏉′欢鍒�", detail.getQuanPrice())); + if (!StringUtil.isNullOrEmpty(detail.getPic())) + goods.setPictUrlWhite(detail.getPic()); } return goods; } + public static TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 detail) { + if (detail != null && goods != null) { + // 閲嶆柊璁剧疆鏍囬涓庡埜浠锋牸 + goods.setTitle(detail.getDtitle()); + if (!StringUtil.isNullOrEmpty(detail.getMainPic())) + goods.setPictUrlWhite(detail.getMainPic()); + } + return goods; + } + + public static DaTaoKeDetail filterDaTaoKe(TaoBaoGoodsBrief goods, DaTaoKeDetail detail) { + if (goods != null) { + BigDecimal price = TaoBaoUtil.getAfterUseCouplePrice(goods); + detail.setOrgPrice(goods.getZkPrice()); + detail.setPrice(price); + if (goods.getCouponStartFee() != null) + detail.setQuanCondition(goods.getCouponStartFee() + ""); + detail.setQuanId(goods.getCouponActivityId()); + detail.setQuanPrice(goods.getCouponAmount()); + return detail; + } + + return detail; + } + } -- Gitblit v1.8.0