From b730b81641e9eadac879a401aedbd333e6973e28 Mon Sep 17 00:00:00 2001
From: admin <2780501319@qq.com>
Date: 星期日, 01 三月 2020 14:19:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div
---
fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java | 284 ++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 190 insertions(+), 94 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 3e0c5e3..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;
@@ -99,30 +104,29 @@
"馃専",// 鍙戝厜鐨勬槦鏄�
};
- static final String[] timeEmojis = new String[] {
- "馃暃",// 鍗佷簩鐐�
- "馃暓",// 鍗佷簩鐐瑰崐
- "馃晲",// 涓�鐐归挓
- "馃暅",// 涓�鐐瑰崐
- "馃晳",// 涓ょ偣
- "馃暆",// 涓ょ偣鍗�
- "馃晵",// 涓夌偣閽�
- "馃暈",// 涓夌偣鍗�
- "馃晸",// 鍥涚偣閽�
- "馃暉",// 鍥涚偣鍗�
- "馃晹",// 浜旀椂
- "馃暊",// 浜旂偣鍗�
- "馃晻",// 鍏偣
- "馃暋",// 鍏偣鍗�
- "馃晼",// 涓冪偣
- "馃暍",// 涓冪偣鍗�
- "馃晽",// 鍏偣
- "馃暎",// 鍏偣鍗�
- "馃晿",// 涔濈偣閽�
- "馃暏",// 涔濈偣鍗�
- "馃暀",// 鐨勫崄鐐�
- "馃暐",// 鍗佺偣鍗�
- "馃暁",// 鍗佷竴鐐�
+ static final String[] timeEmojis = new String[] { "馃暃", // 鍗佷簩鐐�
+ "馃暓", // 鍗佷簩鐐瑰崐
+ "馃晲", // 涓�鐐归挓
+ "馃暅", // 涓�鐐瑰崐
+ "馃晳", // 涓ょ偣
+ "馃暆", // 涓ょ偣鍗�
+ "馃晵", // 涓夌偣閽�
+ "馃暈", // 涓夌偣鍗�
+ "馃晸", // 鍥涚偣閽�
+ "馃暉", // 鍥涚偣鍗�
+ "馃晹", // 浜旀椂
+ "馃暊", // 浜旂偣鍗�
+ "馃晻", // 鍏偣
+ "馃暋", // 鍏偣鍗�
+ "馃晼", // 涓冪偣
+ "馃暍", // 涓冪偣鍗�
+ "馃晽", // 鍏偣
+ "馃暎", // 鍏偣鍗�
+ "馃晿", // 涔濈偣閽�
+ "馃暏", // 涔濈偣鍗�
+ "馃暀", // 鐨勫崄鐐�
+ "馃暐", // 鍗佺偣鍗�
+ "馃暁", // 鍗佷竴鐐�
"馃暒",// 鍗佷竴鐐瑰崐
};
@@ -367,67 +371,50 @@
*
* @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").userAgent("").get();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ 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));
}
}
- 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<>();
@@ -455,9 +442,9 @@
return couponList;
}
- private static List<DaTaoKeDetail> parseCurrent(String url) {
-
- List<DaTaoKeDetail> list=new ArrayList<>();
+ private static List<DaTaoKeDetailV2> parseCurrent(String url) {
+
+ List<DaTaoKeDetailV2> list = new ArrayList<>();
try {
Document doc = Jsoup.connect(url)
.userAgent(
@@ -471,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);
}
@@ -493,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";
@@ -508,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";
@@ -523,21 +510,130 @@
* @param cid
* @return
*/
- public static List<DaTaoKeDetail> getCurrentHotSalesRank() {
+ public static List<DaTaoKeDetailV2> getCurrentHotSalesRank() {
String url = "http://www.dataoke.com/top_tui";
return parseCurrent(url);
}
- public static String getDesc(DaTaoKeDetail detail) {
+ private static String getRandomCommonEmoji() {
+ return commonEmojis[(int) (Math.random() * commonEmojis.length)];
+ }
+
+ public static String getDesc(DaTaoKeDetailV2 detail) {
// 鏍囬+鍒稿悗浠�+鍖呴偖+鎻忚堪
- String desc = "馃槢" + detail.getdTitle() + "馃槢";
+ String desc = detail.getDtitle();
desc += "\n";
- desc += "馃槢" + String.format("鍒稿悗馃挵銆�%s鍏冦�戝寘閭鏉� ", MoneyBigDecimalUtil.getWithNoZera(detail.getPrice()).toString())
- + "馃槢";
+ desc += String.format("鍒稿悗浠�%s銆�%s鍏冦�戝寘閭鏉� ", Math.random() > 0.5 ? "馃挵" : "",
+ MoneyBigDecimalUtil.getWithNoZera(detail.getActualPrice() ).toString())
+ + (Math.random() > 0.5 ? getRandomCommonEmoji() : "");
desc += "\n";
- desc += detail.getIntroduce();
+ // desc += detail.getIntroduce();
+ String introduce = detail.getDesc().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";
+ } else
+ introduce += sts[i] + (Math.random() > 0.5 ? getRandomCommonEmoji() : i == sts.length - 1 ? "" : "锛�");
+ }
+ desc += introduce;
return desc;
}
+
+ 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 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