From 009e25b40c04d0a66d6d6554c19e542f0e6f9d18 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 23 七月 2019 10:49:58 +0800 Subject: [PATCH] 根据粘贴板推荐修改 --- fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java | 133 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 102 insertions(+), 31 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java index 4df3382..fc0d0cc 100644 --- a/fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java +++ b/fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java @@ -1,11 +1,28 @@ package com.yeshi.fanli.util.pinduoduo; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; +import java.net.URLEncoder; +import java.util.ArrayList; +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.select.Elements; import org.yeshi.utils.BigDecimalUtil; +import org.yeshi.utils.HttpUtil; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.StringUtil; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + public class PinDuoDuoUtil { @@ -18,30 +35,25 @@ */ public static BigDecimal getGoodsFanLiMoney(PDDGoodsDetail goods, BigDecimal rate) { BigDecimal money = null; - BigDecimal price = new BigDecimal(goods.getMinNormalPrice()); - BigDecimal promotionRate = new BigDecimal(goods.getPromotionRate()); + BigDecimal hundred = new BigDecimal(100); + rate = MoneyBigDecimalUtil.div(rate, hundred); + BigDecimal price = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), hundred).setScale(2); + BigDecimal promotionRate = MoneyBigDecimalUtil.div(new BigDecimal(goods.getPromotionRate()), new BigDecimal(1000)); Boolean hasCoupon = goods.getHasCoupon(); if (hasCoupon == null || !hasCoupon) { - money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul( - MoneyBigDecimalUtil.mul(price, promotionRate),new BigDecimal("0.001")), - MoneyBigDecimalUtil.div(rate, new BigDecimal(100))); + money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(price, promotionRate), rate); } else { - BigDecimal amount = new BigDecimal(goods.getCouponDiscount()); - BigDecimal startFree = new BigDecimal(goods.getCouponMinOrderAmount()); + BigDecimal amount = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponDiscount()), hundred); + BigDecimal startFree = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponMinOrderAmount()), hundred); if (startFree.compareTo(price) <= 0 && price.compareTo(amount) > 0) { BigDecimal finalPrice = price.subtract(amount); - money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil - .mul(MoneyBigDecimalUtil.mul(finalPrice, promotionRate), new BigDecimal("0.001")), - MoneyBigDecimalUtil.div(rate, new BigDecimal(100))); - + money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(finalPrice, promotionRate),rate); } else {// 涓嶈兘鐢ㄥ埜 - money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul( - MoneyBigDecimalUtil.mul(price,promotionRate), new BigDecimal("0.001")), - MoneyBigDecimalUtil.div(rate, new BigDecimal(100))); + money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(price,promotionRate), rate); } } - return BigDecimalUtil.getWithNoZera(money); + return BigDecimalUtil.getWithNoZera(money).setScale(2); } @@ -52,32 +64,91 @@ * @return */ public static BigDecimal getQuanPrice(PDDGoodsDetail goods) { - BigDecimal price = new BigDecimal(goods.getMinNormalPrice()); + BigDecimal hundred = new BigDecimal(100); + BigDecimal price = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), hundred); Boolean hasCoupon = goods.getHasCoupon(); if (hasCoupon == null || !hasCoupon) { - return price; + return price.setScale(2); } - BigDecimal amount = new BigDecimal(goods.getCouponDiscount()); - BigDecimal startFree = new BigDecimal(goods.getCouponMinOrderAmount()); + BigDecimal amount = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponDiscount()), hundred); + BigDecimal startFree = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponMinOrderAmount()), hundred); if (startFree.compareTo(price) <= 0) { BigDecimal quanPrice = MoneyBigDecimalUtil.sub(price, amount); - return quanPrice; + return quanPrice.setScale(2); } else { - return price; + return price.setScale(2); } } - public static String getSaleCount(long count) { - String salesCountMidea = null; - if (count < 10000) { - salesCountMidea = count + ""; - } else { - double sales = count; - salesCountMidea = String.format("%.1f", sales / 10000); - salesCountMidea = salesCountMidea + "涓�"; + + public static List<String> getDetailImages(Long id) { + List<String> imgList = new ArrayList<>(); + try { + Document doc = Jsoup.connect("http://yangkeduo.com/goods.html?goods_id=" + id) + .userAgent( + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36") + .get(); + Elements els = doc.getElementsByTag("script"); + for (int i = 0; i < els.size(); i++) { + if (els.get(i).html().contains("window.rawData")) { + String dataJS = els.get(i).html().replace("window.", "var "); + dataJS += "function getData(){return JSON.stringify(rawData);}"; + + ScriptEngineManager manager = new ScriptEngineManager(); + ScriptEngine engine = manager.getEngineByName("javascript"); + try { + engine.eval(dataJS); + if (engine instanceof Invocable) { + Invocable in = (Invocable) engine; + String jsonStr = in.invokeFunction("getData").toString(); + JSONObject json = JSONObject.fromObject(jsonStr); + JSONArray array = json.optJSONObject("store").optJSONObject("initDataObj") + .optJSONObject("goods").optJSONArray("detailGallery"); + for (int j = 0; j < array.size(); j++) { + imgList.add("http:" + array.optJSONObject(j).optString("url")); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + break; + } + } + } catch (Exception e1) { + e1.printStackTrace(); } - return salesCountMidea; + + return imgList; + } - + + public static List<String> suggestSearch(String key) { + List<String> list = new ArrayList<>(); + if (StringUtil.isNullOrEmpty(key)) + return list; + String url = null; + try { + url = String.format("http://apiv3.yangkeduo.com/search_suggest?query=%s&pdduid=0", + URLEncoder.encode(key, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + if (url == null) + return list; + try { + String result = HttpUtil.get(url); + JSONObject dataJSON = JSONObject.fromObject(result); + JSONArray array = dataJSON.optJSONArray("suggest_list"); + for (int i = 0; i < array.size(); i++) { + String sk = array.optJSONObject(i).optJSONObject("item_data").optString("suggestion"); + if (!StringUtil.isNullOrEmpty(sk)) + list.add(sk); + } + } catch (Exception e) { + } + return list; + } + } -- Gitblit v1.8.0