From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 23 五月 2020 09:54:38 +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