From f4a0f2acc63d7785eab108419a4e16f5f688cb95 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 18 一月 2020 12:06:27 +0800 Subject: [PATCH] 用户注册信息 --- fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java | 187 ++++++++++++++++++++++++++++++++++++---------- 1 files changed, 145 insertions(+), 42 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 d019e9a..370dd0a 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,30 @@ import java.math.BigDecimal; import java.net.URLEncoder; import java.util.ArrayList; -import java.util.Collections; +import java.util.Calendar; 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.dto.dataoke.DingDongTime; 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,28 +371,50 @@ * * @return */ - public static List<DaTaoKeDetail> getDingDongQiang() { - List<DaTaoKeDetail> goodsList = new ArrayList<>(); + public static List<DingDongQiangDTO> getDingDongQiang() { + List<DingDongQiangDTO> list = new ArrayList<>(); + Document doc = null; try { - Document doc = Jsoup.connect("http://www.dataoke.com/ddq") - .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 items = doc.getElementsByClass("main").get(0).getElementsByClass("clearfix").get(0) - .getElementsByTag("li"); - for (int i = 0; i < items.size(); i++) { - DaTaoKeDetail detail = new DaTaoKeDetail(); - String id = items.get(i).getElementsByTag("a").get(0).attr("href").split("\\?")[1].replace("id=", ""); - detail.setId(Long.parseLong(id)); - goodsList.add(detail); - } - } catch (Exception e) { - + doc = Jsoup.connect("http://www.dataoke.com/ddq").userAgent("").get(); + } catch (IOException e1) { + e1.printStackTrace(); } - return goodsList; + if (doc == null) + return new ArrayList<>(); + 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);} var test1='--';function test2(res){};" + + content.replace("$(window).load", "test2").replace("window.location.search.", "test1."); + 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<DaTaoKeDetailV2> detailList = new ArrayList<>(); + for (int n = 0; n < array.size(); n++) { + DaTaoKeDetailV2 v2 = new DaTaoKeDetailV2(); + v2.setId(array.optJSONObject(n).optLong("id")); + detailList.add(v2); + } + list.add(new DingDongQiangDTO(key, detailList)); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + return list; } - - // public static List<TaoBaoCoupon> getRecommendCouple() { List<TaoBaoCoupon> couponList = new ArrayList<>(); @@ -415,9 +442,9 @@ return couponList; } - private static List<DaTaoKeDetail> parseCurrent(String url) { + private static List<DaTaoKeDetailV2> parseCurrent(String url) { - List<DaTaoKeDetail> list = new ArrayList<>(); + List<DaTaoKeDetailV2> list = new ArrayList<>(); try { Document doc = Jsoup.connect(url) .userAgent( @@ -431,9 +458,9 @@ .getElementsByTag("b").get(0).text(); System.out.println(id + "-" + currentSale); - DaTaoKeDetail detail = new DaTaoKeDetail(); + DaTaoKeDetailV2 detail = new DaTaoKeDetailV2(); detail.setId(id); - detail.setSalesNum(Integer.parseInt(currentSale)); + detail.setMonthSales(Integer.parseInt(currentSale)); list.add(detail); } @@ -453,7 +480,7 @@ * @param cid * @return */ - public static List<DaTaoKeDetail> getCurrentSalesRank(Integer cid) { + public static List<DaTaoKeDetailV2> getCurrentSalesRank(Integer cid) { String url = null; if (cid == null) url = "http://www.dataoke.com/top_sell"; @@ -468,7 +495,7 @@ * @param cid * @return */ - public static List<DaTaoKeDetail> getCurrentDaySalesRank(Integer cid) { + public static List<DaTaoKeDetailV2> getCurrentDaySalesRank(Integer cid) { String url = null; if (cid == null) url = "http://www.dataoke.com/top_all"; @@ -483,7 +510,7 @@ * @param cid * @return */ - public static List<DaTaoKeDetail> getCurrentHotSalesRank() { + public static List<DaTaoKeDetailV2> getCurrentHotSalesRank() { String url = "http://www.dataoke.com/top_tui"; return parseCurrent(url); } @@ -492,17 +519,17 @@ return commonEmojis[(int) (Math.random() * commonEmojis.length)]; } - public static String getDesc(DaTaoKeDetail detail) { + public static String getDesc(DaTaoKeDetailV2 detail) { // 鏍囬+鍒稿悗浠�+鍖呴偖+鎻忚堪 - String desc = detail.getdTitle(); + String desc = detail.getDtitle(); desc += "\n"; desc += String.format("鍒稿悗浠�%s銆�%s鍏冦�戝寘閭鏉� ", Math.random() > 0.5 ? "馃挵" : "", - MoneyBigDecimalUtil.getWithNoZera(detail.getPrice()).toString()) + MoneyBigDecimalUtil.getWithNoZera(detail.getActualPrice() ).toString()) + (Math.random() > 0.5 ? getRandomCommonEmoji() : ""); desc += "\n"; // desc += detail.getIntroduce(); - String introduce = detail.getIntroduce().replace("锛�", ",").replace("銆�", ",").replace("锛�", ",").replace(",", + String introduce = detail.getDesc().replace("锛�", ",").replace("銆�", ",").replace("锛�", ",").replace(",", ","); introduce = introduce.replace(",,,", ",").replace(",,", ","); @@ -519,18 +546,94 @@ return desc; } - public static TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetail detail) { - if (detail != null) { + + public static TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 detail) { + 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())); + goods.setTitle(detail.getDtitle()); + if (!StringUtil.isNullOrEmpty(detail.getMainPic())) + goods.setPictUrlWhite(detail.getMainPic()); } return goods; } + public static DaTaoKeDetailV2 filterDaTaoKe(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 detail) { + if (goods != null) { + BigDecimal price = TaoBaoUtil.getAfterUseCouplePrice(goods); + detail.setOriginalPrice(goods.getZkPrice()); + detail.setActualPrice(price); + if (goods.getCouponStartFee() != null) + detail.setCouponConditions(goods.getCouponStartFee() + ""); + detail.setCouponPrice(goods.getCouponAmount()); + return detail; + } + + return detail; + } + + public static List<DingDongTime> getDingDongQiangTime(Calendar nowDate) { + + // 鑾峰彇褰撳墠鐨勫皬鏃舵暟 + DingDongTime[] times = new DingDongTime[] { new DingDongTime("0", "00:00"), new DingDongTime("8", "08:00"), + new DingDongTime("10", "10:00"), new DingDongTime("13", "13:00"), new DingDongTime("15", "15:00"), + new DingDongTime("17", "17:00"), new DingDongTime("19", "19:00"), new DingDongTime("20", "20:00"), + new DingDongTime("21", "21:00") }; + Calendar preDate = Calendar.getInstance(); + preDate.setTimeInMillis(nowDate.getTimeInMillis() - 24 * 60 * 60 * 1000L); + + Calendar nextDate = Calendar.getInstance(); + nextDate.setTimeInMillis(nowDate.getTimeInMillis() + 24 * 60 * 60 * 1000L); + + String preDay = (preDate.get(Calendar.DAY_OF_MONTH) + "").length() < 2 + ? "0" + preDate.get(Calendar.DAY_OF_MONTH) : preDate.get(Calendar.DAY_OF_MONTH) + ""; + String nextDay = (nextDate.get(Calendar.DAY_OF_MONTH) + "").length() < 2 + ? "0" + nextDate.get(Calendar.DAY_OF_MONTH) : nextDate.get(Calendar.DAY_OF_MONTH) + ""; + String nowDay = (nowDate.get(Calendar.DAY_OF_MONTH) + "").length() < 2 + ? "0" + nowDate.get(Calendar.DAY_OF_MONTH) : nowDate.get(Calendar.DAY_OF_MONTH) + ""; + + int hour = nowDate.get(Calendar.HOUR_OF_DAY); + int pos = times.length - 1; + for (int i = 0; i < times.length - 1; i++) { + if (hour >= Integer.parseInt(times[i].getKey()) && hour < Integer.parseInt(times[i + 1].getKey())) { + pos = i; + break; + } + } + + List<DingDongTime> list = new ArrayList<>(); + + // 鑾峰彇褰撳墠鏃堕棿涔嬪墠鐨�5涓暟鎹� + for (int i = 5; i >= 0; i--) { + int p = pos - i < 0 ? (times.length + pos - i) : pos - i; + DingDongTime itemData = new DingDongTime(times[p].getKey(), times[p].getValue(), -1); + if (pos - i < 0) + itemData.setTime( + preDay + "" + (itemData.getKey().length() < 2 ? ("0" + itemData.getKey()) : itemData.getKey())); + else + itemData.setTime( + nowDay + "" + (itemData.getKey().length() < 2 ? ("0" + itemData.getKey()) : itemData.getKey())); + + if (pos == p) + itemData.setState(0); + list.add(itemData); + } + + // 鍚戝悗娣诲姞鍓╀笅鐨� + if (pos + 1 < times.length) + for (int i = pos + 1; i < times.length; i++) { + DingDongTime itemData = new DingDongTime(times[i].getKey(), times[i].getValue(), 1); + itemData.setTime( + nowDay + "" + (itemData.getKey().length() < 2 ? ("0" + itemData.getKey()) : itemData.getKey())); + list.add(itemData); + } + + if (times.length - (pos + 1) < 2) { + DingDongTime itemData = new DingDongTime(times[0].getKey(), times[0].getValue(), 1); + itemData.setTime( + nextDay + "" + (itemData.getKey().length() < 2 ? ("0" + itemData.getKey()) : itemData.getKey())); + list.add(itemData); + } + return list; + } + } -- Gitblit v1.8.0