From 3e4ef41ffacd7f5fda2e81c3810cd11a6375b83c Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 15 六月 2020 16:32:35 +0800
Subject: [PATCH] 好单库转链支持
---
fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java | 190 ++++++++++++++++++++++++++++++++++++-----------
1 files changed, 145 insertions(+), 45 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 33a2b3c..6f14c5b 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
@@ -6,7 +6,6 @@
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Calendar;
-import java.util.Date;
import java.util.Iterator;
import java.util.List;
@@ -18,19 +17,21 @@
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
+import org.yeshi.utils.HttpUtil;
import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO;
import com.yeshi.fanli.dto.dataoke.DingDongTime;
+import com.yeshi.fanli.dto.taobao.DaTaoKeFilterResult;
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;
@@ -131,6 +132,10 @@
"馃暁", // 鍗佷竴鐐�
"馃暒",// 鍗佷竴鐐瑰崐
};
+
+ static final String[] evaluateEmojis = new String[] { "馃挓", "馃尭", "馃嵏", "馃嵑", "馃摙", "鉂�", "馃挐", "馃拫", "馃憶", "馃惥",
+ "馃尮", "馃敟", "馃帀", "馃巵", "馃崶", "馃嵀", "馃尯", "馃憫", "鉁�", "馃挮", "馃嵒", "馃巿", "馃挜", "馃挄", "馃挒", "馃挵", "馃拰", "馃挱",
+ "馃尲", "馃崁" };
public static List<GoodsClass> goodsClasses;
static {
@@ -381,6 +386,8 @@
} 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();
@@ -388,7 +395,8 @@
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.");
+ 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;
@@ -441,9 +449,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(
@@ -457,9 +465,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);
}
@@ -479,7 +487,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";
@@ -494,7 +502,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";
@@ -509,27 +517,30 @@
* @param cid
* @return
*/
- public static List<DaTaoKeDetail> getCurrentHotSalesRank() {
+ public static List<DaTaoKeDetailV2> getCurrentHotSalesRank() {
String url = "http://www.dataoke.com/top_tui";
return parseCurrent(url);
}
- private static String getRandomCommonEmoji() {
+ public static String getRandomCommonEmoji() {
return commonEmojis[(int) (Math.random() * commonEmojis.length)];
}
- public static String getDesc(DaTaoKeDetail detail) {
+ public static String getEvaluateEmojis() {
+ return evaluateEmojis[(int) (Math.random() * evaluateEmojis.length)];
+ }
+
+ 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(",,", ",");
String[] sts = introduce.split(",");
@@ -545,42 +556,116 @@
return desc;
}
- public static TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetail detail) {
- if (detail != null && goods != null) {
+ public static DaTaoKeFilterResult filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 v2,
+ boolean filterCouponInfo) {
+ if (v2 != null && goods != null) {
// 閲嶆柊璁剧疆鏍囬涓庡埜浠锋牸
- goods.setTitle(detail.getdTitle());
- if (!StringUtil.isNullOrEmpty(detail.getPic()))
- goods.setPictUrlWhite(detail.getPic());
+ goods.setTitle(v2.getDtitle());
+ if (!StringUtil.isNullOrEmpty(v2.getMainPic()))
+ goods.setPictUrlWhite(v2.getMainPic());
+ // 璁剧疆绠�浠�
+
+ goods.setDescription(v2.getDesc());
+ // 濡傛灉娌℃湁鍒镐俊鎭�,鍒欐彁渚涘埜淇℃伅
+ if (canFilterCouponInfo(goods, v2)) {
+ try {
+ long time = System.currentTimeMillis();
+ // 鍒稿湪鏈夋晥鏈熷唴骞朵笖杩樻湁鍓╀綑鍒�
+ if (time >= TimeUtil.convertToTimeTemp(v2.getCouponStartTime(), "yyyy-MM-dd HH:mm:ss")
+ && time <= TimeUtil.convertToTimeTemp(v2.getCouponEndTime(), "yyyy-MM-dd HH:mm:ss")
+ && (v2.getCouponTotalNum() - v2.getCouponReceiveNum()) > 0) {
+ goods.setCouponStartFee(v2.getOriginalPrice());
+
+ goods.setCouponEffectiveEndTime(TimeUtil.getGernalTime(
+ TimeUtil.convertToTimeTemp(v2.getCouponEndTime(), "yyyy-MM-dd HH:mm:ss"),
+ "yyyy-MM-dd"));
+ goods.setCouponEffectiveStartTime(TimeUtil.getGernalTime(
+ TimeUtil.convertToTimeTemp(v2.getCouponStartTime(), "yyyy-MM-dd HH:mm:ss"),
+ "yyyy-MM-dd"));
+
+ goods.setCouponAmount(v2.getCouponPrice());
+ goods.setCouponInfo(
+ String.format("婊�%s鍏冨噺%s鍏�", v2.getOriginalPrice() + "", v2.getCouponPrice() + ""));
+ goods.setCouponLeftCount(v2.getCouponTotalNum() - v2.getCouponReceiveNum());
+ goods.setCouponLink(v2.getCouponLink());
+ goods.setCouponTotalCount(v2.getCouponTotalNum());
+ goods.setShopCoupon(false);
+ goods.setZkPrice(v2.getOriginalPrice());
+ return new DaTaoKeFilterResult(goods, DaTaoKeFilterResult.FILTER_TYPE_PRICE_AND_COUPON);
+ }
+
+ } catch (Exception e) {
+
+ }
+ } else {// 閮芥湁鍒�
+ long time = System.currentTimeMillis();
+ // 鍒稿湪鏈夋晥鏈熷唴骞朵笖杩樻湁鍓╀綑鍒�
+ if (time >= TimeUtil.convertToTimeTemp(v2.getCouponStartTime(), "yyyy-MM-dd HH:mm:ss")
+ && time <= TimeUtil.convertToTimeTemp(v2.getCouponEndTime(), "yyyy-MM-dd HH:mm:ss")
+ && (v2.getCouponTotalNum() - v2.getCouponReceiveNum()) > 0) {
+ // 濡傛灉涓や釜鍒哥殑闈㈤涓�鏍凤紝娣樺疂鍘熶环姣斿ぇ娣樺鍘熶环楂橈紝灏变互澶ф窐瀹㈠師浠蜂负鍑�
+ if (goods.getCouponAmount() != null && v2.getCouponPrice() != null
+ && goods.getCouponAmount().compareTo(v2.getCouponPrice()) == 0) {
+
+ if (goods.getZkPrice().compareTo(v2.getOriginalPrice()) > 0) {
+ goods.setZkPrice(v2.getOriginalPrice());
+ return new DaTaoKeFilterResult(goods, DaTaoKeFilterResult.FILTER_TYPE_PRICE);
+ }
+ }
+ }
+ }
}
- return goods;
+ return new DaTaoKeFilterResult(goods, DaTaoKeFilterResult.FILTER_TYPE_NONE);
}
- 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());
+ /**
+ * 鏄惁鍙互杩囨护鎺夊埜淇℃伅
+ * @Title: filterCouponInfo
+ * @Description:
+ * @param goods
+ * @param v2
+ * void 杩斿洖绫诲瀷
+ * @throws
+ */
+ public static boolean canFilterCouponInfo(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 v2) {
+ if (StringUtil.isNullOrEmpty(goods.getCouponInfo()) && v2 != null
+ && !StringUtil.isNullOrEmpty(v2.getCouponLink())) {
+ try {
+ long time = System.currentTimeMillis();
+ // 鍒稿湪鏈夋晥鏈熷唴骞朵笖杩樻湁鍓╀綑鍒�
+ if (time >= TimeUtil.convertToTimeTemp(v2.getCouponStartTime(), "yyyy-MM-dd HH:mm:ss")
+ && time <= TimeUtil.convertToTimeTemp(v2.getCouponEndTime(), "yyyy-MM-dd HH:mm:ss")
+ && (v2.getCouponTotalNum() - v2.getCouponReceiveNum()) > 0) {
+ return true;
+ }
+
+ } catch (Exception e) {
+
+ }
}
- return goods;
+
+ return false;
}
- public static DaTaoKeDetail filterDaTaoKe(TaoBaoGoodsBrief goods, DaTaoKeDetail detail) {
+ public static TaoBaoGoodsBrief filterTaoBaoGoods(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 v2) {
+ return filterTaoBaoGoods(goods, v2, false).getGoods();
+ }
+
+ public static DaTaoKeDetailV2 filterDaTaoKe(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 detail) {
if (goods != null) {
BigDecimal price = TaoBaoUtil.getAfterUseCouplePrice(goods);
- detail.setOrgPrice(goods.getZkPrice());
- detail.setPrice(price);
+ detail.setOriginalPrice(goods.getZkPrice());
+ detail.setActualPrice(price);
if (goods.getCouponStartFee() != null)
- detail.setQuanCondition(goods.getCouponStartFee() + "");
- detail.setQuanId(goods.getCouponActivityId());
- detail.setQuanPrice(goods.getCouponAmount());
+ detail.setCouponConditions(goods.getCouponStartFee() + "");
+ detail.setCouponPrice(goods.getCouponAmount());
return detail;
}
return detail;
}
- public static List<String> getDingDongQiangTime(Calendar nowDate) {
+ public static List<DingDongTime> getDingDongQiangTime(Calendar nowDate) {
// 鑾峰彇褰撳墠鐨勫皬鏃舵暟
DingDongTime[] times = new DingDongTime[] { new DingDongTime("0", "00:00"), new DingDongTime("8", "08:00"),
@@ -611,39 +696,54 @@
List<DingDongTime> list = new ArrayList<>();
- //鑾峰彇褰撳墠鏃堕棿涔嬪墠鐨�5涓暟鎹�
+ // 鑾峰彇褰撳墠鏃堕棿涔嬪墠鐨�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());
+ 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());
+ 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());
+ 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;
+ }
- List<String> finalTimeList = new ArrayList<>();
- for (DingDongTime time : list)
- finalTimeList.add(time.getTime());
- return finalTimeList;
+ // 鑾峰彇鎺ㄥ箍鏂囨
+ public static void getPublishDoc(String id) {
+ String url = String.format("http://www.dataoke.com/detailtpl?gid=%s&type=1", id);
+ String response = HttpUtil.get(url);
+ try {
+ JSONObject json = JSONObject.fromObject(new String(response.getBytes("ISO-8859-1"), "UTF-8"));
+ JSONObject data = json.optJSONObject("data");
+ String tpl2 = data.optString("tpl2");
+ tpl2 = tpl2.substring(0, tpl2.indexOf("---------"));
+ System.out.println(tpl2.replace("</br>", "\n").trim());
+ } catch (Exception e) {
+
+ }
+
}
}
--
Gitblit v1.8.0