From 34e65d72e73acab040b68d01ef6b4764b4408624 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 05 八月 2019 10:07:38 +0800
Subject: [PATCH] 修改推荐记录点击详情跳转方式不对的bug
---
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java | 213 ++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 186 insertions(+), 27 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 2296878..6a44fe1 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
@@ -21,6 +21,7 @@
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.pdd.PDDGoodsResult;
import com.yeshi.fanli.dto.pdd.PDDSearchFilter;
+import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
@@ -87,8 +88,9 @@
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")
+ 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++) {
@@ -143,6 +145,7 @@
try {
client.executeMethod(pm);
String result = pm.getResponseBodyAsString();
+ LogHelper.test("鎷煎澶氱寽浣犲枩娆�:"+result);
JSONObject json = JSONObject.fromObject(result);
JSONArray array = json.optJSONArray("data");
if (array != null) {
@@ -191,9 +194,9 @@
return list;
}
-
/**
* 澶氬杩涘疂鐖彇鏁版嵁-鍝佺墝濂借揣
+ *
* @param sf
* @return
*/
@@ -225,7 +228,7 @@
}
System.out.println(params.toString());
-
+
HttpClient client = new HttpClient();
PostMethod pm = new PostMethod("https://jinbao.pinduoduo.com/network/api/common/brand/goodsList");
pm.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko");
@@ -239,7 +242,7 @@
client.executeMethod(pm);
String result = pm.getResponseBodyAsString();
System.out.println(result);
-
+
JSONObject json = JSONObject.fromObject(result);
Boolean code = json.optBoolean("success");
if (code != null && code) {
@@ -251,7 +254,7 @@
if (array == null) {
return null;
}
-
+
List<PDDGoodsDetail> goodsList = new ArrayList<PDDGoodsDetail>();
for (int i = 0; i < array.size(); i++) {
PDDGoodsDetail parseGoods = parseGoods(array.getJSONObject(i));
@@ -260,7 +263,7 @@
}
}
int totalCount = root.optInt("total");
-
+
goodsResult = new PDDGoodsResult();
goodsResult.setGoodsList(goodsList);
goodsResult.setTotalCount(totalCount);
@@ -271,9 +274,7 @@
return goodsResult;
}
-
-
-
+
private static PDDGoodsDetail parseGoods(JSONObject json) {
PDDGoodsDetail goods = new PDDGoodsDetail();
goods.setMallName(json.optString("mallName"));
@@ -282,59 +283,217 @@
goods.setGoodsName(json.optString("goodsName"));
goods.setGoodsDesc(json.optString("goodsDesc"));
goods.setSalesTip(json.optString("salesTip"));
-
+
if (json.optString("goodsImageUrl") != null) {
goods.setGoodsImageUrl("http:" + json.optString("goodsImageUrl"));
}
-
+
if (json.optString("goodsThumbnailUrl") != null) {
goods.setGoodsThumbnailUrl("http:" + json.optString("goodsThumbnailUrl"));
}
-
+
if (json.optString("minGroupPrice") != null) {
- goods.setMinGroupPrice(json.getLong("minGroupPrice")/10);
+ goods.setMinGroupPrice(json.getLong("minGroupPrice") / 10);
}
-
+
if (json.optString("categoryId") != null) {
goods.setCategoryId(json.getLong("categoryId"));
}
-
+
goods.setCategoryName(json.optString("categoryName"));
goods.setHasCoupon(json.optBoolean("hasCoupon"));
-
+
if (json.optString("couponMinOrderAmount") != null) {
- goods.setCouponMinOrderAmount(json.getLong("couponMinOrderAmount")/10);
+ goods.setCouponMinOrderAmount(json.getLong("couponMinOrderAmount") / 10);
}
-
+
if (json.optString("couponDiscount") != null) {
- goods.setCouponDiscount(json.getLong("couponDiscount")/10);
+ goods.setCouponDiscount(json.getLong("couponDiscount") / 10);
}
-
+
if (json.optString("couponTotalQuantity") != null) {
goods.setCouponTotalQuantity(json.getLong("couponTotalQuantity"));
}
-
+
if (json.optString("couponRemainQuantity") != null) {
goods.setCouponRemainQuantity(json.getLong("couponRemainQuantity"));
}
-
+
if (json.optString("couponStartTime") != null) {
goods.setCouponStartTime(json.getLong("couponStartTime"));
}
-
+
if (json.optString("couponEndTime") != null) {
goods.setCouponEndTime(json.getLong("couponEndTime"));
}
-
+
if (json.optString("promotionRate") != null) {
goods.setPromotionRate(json.getLong("promotionRate"));
}
-
+
if (json.optString("optId") != null) {
goods.setOptId(json.getLong("optId"));
}
-
+
return goods;
}
+
+ // 鑾峰彇Android鎵撳紑鍘熺敓APP鐨剈ri
+ public static String getAndroidNativeURI(String url) {
+ if (url.contains("duo_coupon_landing.html?")) {
+ int index = url.indexOf("duo_coupon_landing.html?");
+ if (index >= 0) {
+ return "pinduoduo://com.xunmeng.pinduoduo/" + url.substring(index, url.length());
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * 澶氬杩涘疂鐖彇鏁版嵁-鍝佺墝濂借揣
+ *
+ * @param sf
+ * @return
+ */
+ public static PDDGoodsResult getTodaySaleGoods() {
+ JSONObject params = new JSONObject();
+ params.put("type", 1);
+ params.put("sortType",3);
+
+
+ HttpClient client = new HttpClient();
+ PostMethod pm = new PostMethod("https://jinbao.pinduoduo.com/network/api/common/queryTopGoodsList");
+ pm.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko");
+ pm.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
+ pm.setRequestHeader("Referer", "https://jinbao.pinduoduo.com/promotion/hot-promotion");
+ pm.setRequestBody(params.toString());
+
+ PDDGoodsResult goodsResult = null;
+
+ try {
+ client.executeMethod(pm);
+ String result = pm.getResponseBodyAsString();
+ JSONObject json = JSONObject.fromObject(result);
+ Boolean code = json.optBoolean("success");
+ if (code != null && code) {
+ JSONObject root = json.optJSONObject("result");
+ if (root == null) {
+ return null;
+ }
+ JSONArray array = root.optJSONArray("list");
+ if (array == null) {
+ return null;
+ }
+
+ List<PDDGoodsDetail> goodsList = new ArrayList<PDDGoodsDetail>();
+ for (int i = 0; i < array.size(); i++) {
+ PDDGoodsDetail parseGoods = parseTodaySaleGoods(array.getJSONObject(i));
+ if (parseGoods != null) {
+ goodsList.add(parseGoods);
+ }
+ }
+ int totalCount = root.optInt("total");
+
+ goodsResult = new PDDGoodsResult();
+ goodsResult.setGoodsList(goodsList);
+ goodsResult.setTotalCount(totalCount);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return goodsResult;
+ }
+
+
+ private static PDDGoodsDetail parseTodaySaleGoods(JSONObject json) {
+ PDDGoodsDetail goods = new PDDGoodsDetail();
+ goods.setMallName(json.optString("mallName"));
+ goods.setMerchantType(json.optInt("merchantType"));
+ goods.setGoodsId(json.optLong("goodsId"));
+ goods.setGoodsName(json.optString("goodsName"));
+ goods.setGoodsDesc(json.optString("goodsDesc"));
+ goods.setSalesTip(json.optString("salesTip"));
+
+ if (json.optString("mallId") != null) {
+ goods.setMallId(json.getLong("mallId"));
+ }
+
+ if (json.optString("goodsImageUrl") != null) {
+ goods.setGoodsImageUrl(json.optString("goodsImageUrl"));
+ }
+
+ if (json.optString("goodsThumbnailUrl") != null) {
+ goods.setGoodsThumbnailUrl(json.optString("goodsThumbnailUrl"));
+ }
+
+ if (json.optString("minGroupPrice") != null) {
+ goods.setMinGroupPrice(json.getLong("minGroupPrice"));
+ }
+
+ if (json.optString("minNormalPrice") != null) {
+ goods.setMinNormalPrice(json.getLong("minNormalPrice"));
+ }
+
+ if (json.optString("categoryId") != null) {
+ goods.setCategoryId(json.getLong("categoryId"));
+ }
+
+ goods.setCategoryName(json.optString("categoryName"));
+ goods.setHasCoupon(json.optBoolean("hasCoupon"));
+
+ if (json.optString("couponMinOrderAmount") != null) {
+ goods.setCouponMinOrderAmount(json.getLong("couponMinOrderAmount"));
+ }
+
+ if (json.optString("couponDiscount") != null) {
+ goods.setCouponDiscount(json.getLong("couponDiscount"));
+ }
+
+ if (json.optString("couponTotalQuantity") != null) {
+ goods.setCouponTotalQuantity(json.getLong("couponTotalQuantity"));
+ }
+
+ if (json.optString("couponRemainQuantity") != null) {
+ goods.setCouponRemainQuantity(json.getLong("couponRemainQuantity"));
+ }
+
+ if (json.optString("couponStartTime") != null) {
+ goods.setCouponStartTime(json.getLong("couponStartTime"));
+ }
+
+ if (json.optString("couponEndTime") != null) {
+ goods.setCouponEndTime(json.getLong("couponEndTime"));
+ }
+
+ if (json.optString("promotionRate") != null) {
+ goods.setPromotionRate(json.getLong("promotionRate"));
+ }
+
+ if (json.optString("optId") != null) {
+ goods.setOptId(json.getLong("optId"));
+ }
+
+ return goods;
+ }
+
+ public static String getPDDGoodsId(String url) {
+ try {
+ if (url.startsWith("https://mobile.yangkeduo.com/goods.html?")
+ || url.startsWith("http://mobile.yangkeduo.com/goods.html?")||url.contains("yangkeduo.com/duo_coupon_landing.html?")) {
+ String preUrl = url.substring(url.indexOf("?") + 1, url.length());
+ String[] sts = preUrl.split("&");
+ for (String st : sts) {
+ if (st.startsWith("goods_id=")) {
+ return st.split("=")[1].trim();
+ }
+ }
+ }
+ } catch (Exception e) {
+ }
+ return null;
+ }
+
}
--
Gitblit v1.8.0