fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ConfigControllerV2.java
@@ -261,7 +261,8 @@ data.put("baichuan", false);// 不需要采用阿里百川的方式加载webview } else if (url != null && (url.contains("yangkeduo.com")) && !url.contains("yangkeduo.com/goods.html?")) { } else if (url != null && ((url.contains("yangkeduo.com") && !url.contains("yangkeduo.com/goods.html?")) || (url.startsWith("https://p.pinduoduo.com/")))) { data.put("baichuan", false);// 不需要采用阿里百川的方式加载webview data.put("goodsDetail", true);// 不需要拦截商品详情 } else { fanli/src/main/java/com/yeshi/fanli/dto/common/PDDCommonContentTypeEnum.java
@@ -2,7 +2,7 @@ public enum PDDCommonContentTypeEnum { _1k9("1.9包邮", "0"), todayTop("今日爆款", "1"), brandClear("品牌清仓", "2"), hotSaleGoods("热卖爆款", null); _1k9("1.9包邮", "0"), todayTop("今日爆款", "1"), brandClear("品牌清仓", "2"), hotSaleGoods("热卖好货", null), todaySaleGoods("热销榜单", null); private final String desc; private final String content; fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java
@@ -18,7 +18,7 @@ import com.yeshi.fanli.util.jd.JDApiUtil; //从淘宝爬去订单更新 //@Component @Component public class UpdateJDOrderJob { @Resource fanli/src/main/java/com/yeshi/fanli/job/order/pdd/UpdatePDDOrderJob.java
@@ -20,7 +20,7 @@ import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; //从淘宝爬去订单更新 //@Component @Component public class UpdatePDDOrderJob { @Resource fanli/src/main/java/com/yeshi/fanli/service/impl/goods/PDDCommonTemplateContentServiceImpl.java
@@ -10,6 +10,7 @@ import com.yeshi.fanli.dto.common.CommonContentNav; import com.yeshi.fanli.dto.common.PDDCommonContentTypeEnum; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; import com.yeshi.fanli.dto.pdd.PDDGoodsResult; import com.yeshi.fanli.service.inter.goods.PDDCommonTemplateContentService; import com.yeshi.fanli.service.inter.pdd.PDDGoodsService; @@ -29,7 +30,25 @@ || type == PDDCommonContentTypeEnum.brandClear) { return PinDuoDuoApiUtil.searchByChannelType(page - 1, pageSize, type.getContent()); } else if (type == PDDCommonContentTypeEnum.hotSaleGoods) { return pddGoodsService.getTopGoodsList(page, 2); return pddGoodsService.getTopGoodsList(page, 2); // 热卖好货 } else if (type == PDDCommonContentTypeEnum.todaySaleGoods) { // 热销榜单 int count = 0; List<PDDGoodsDetail> list = new ArrayList<PDDGoodsDetail>(); PDDGoodsResult pddGoodsResult = pddGoodsService.getTodaySaleGoodsList(); if (pddGoodsResult != null) { List<PDDGoodsDetail> goodsList = pddGoodsResult.getGoodsList(); if (goodsList != null) { if (goodsList.size() >= (page * pageSize)) { list.addAll(goodsList.subList((page-1)* pageSize, page * pageSize)); } count = goodsList.size(); } } PDDGoodsResult pddResult = new PDDGoodsResult(); pddResult.setGoodsList(list); pddResult.setTotalCount(count); return pddResult; } return null; } fanli/src/main/java/com/yeshi/fanli/service/impl/pdd/PDDGoodsServiceImpl.java
@@ -174,5 +174,12 @@ public PDDGoodsResult getTopGoodsList(int page, Integer sortType) { return PinDuoDuoApiUtil.getTopList(PinDuoDuoApiUtil.PID_FANLI, page, Constant.PAGE_SIZE, sortType); } @Override @Cacheable(value = "pddSpecialCache", key = "'getTodaySaleGoodsList-'") public PDDGoodsResult getTodaySaleGoodsList() { return PinDuoDuoUtil.getTodaySaleGoods(); } } fanli/src/main/java/com/yeshi/fanli/service/inter/pdd/PDDGoodsService.java
@@ -46,4 +46,10 @@ */ public PDDGoodsResult getTopGoodsList(int page, Integer sortType); /** * 今日热销 * @return */ public PDDGoodsResult getTodaySaleGoodsList(); } fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java
@@ -134,6 +134,7 @@ doJDOrderJob();// 京东订单处理 doPDDOrderJob();// 拼多多订单处理 } } /** fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoApiUtil.java
@@ -22,6 +22,7 @@ import com.yeshi.fanli.dto.pdd.PDDPromotionUrl; import com.yeshi.fanli.dto.pdd.PDDSearchFilter; import com.yeshi.fanli.entity.pdd.PDDOrder; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; @@ -280,14 +281,14 @@ } JSONArray resultArray = json.optJSONArray("goods_promotion_url_list"); if (resultArray != null && resultArray.size() > 0) { Type type = new TypeToken<PDDPromotionUrl>() {}.getType(); Type type = new TypeToken<PDDPromotionUrl>() { }.getType(); Gson gson = new GsonBuilder().disableHtmlEscaping().create(); return gson.fromJson(resultArray.optJSONObject(0).toString(), type); } return null; } /** * 商品转链 * @@ -303,7 +304,7 @@ } return null; } public static void createPid() { Map<String, String> map = new HashMap<>(); map.put("type", "pdd.ddk.goods.pid.generate"); 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; @@ -144,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) { @@ -346,5 +348,133 @@ } 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; } }