yujian
2019-01-22 88b54772dbcf5ecab1e2316e4e4626ac901b8908
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -31,6 +31,7 @@
import org.w3c.dom.NodeList;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.NumberUtil;
import org.yeshi.utils.entity.ProxyIP;
import org.yeshi.utils.taobao.TbImgUtil;
import com.google.gson.Gson;
@@ -683,8 +684,7 @@
      return list;
   }
   public static TaoBaoGoodsBriefExtra getTaoBaoGoodsBriefExtra(TaoBaoGoodsBrief tb, String proportion,
         String fcRateStr, String pid) {
   public static TaoBaoGoodsBriefExtra getTaoBaoGoodsBriefExtra(TaoBaoGoodsBrief tb, String proportion, String pid) {
      TaoBaoGoodsBriefExtra tg = new TaoBaoGoodsBriefExtra();
      tg.setId(tb.getId());
      tg.setAuctionId(tb.getAuctionId());
@@ -715,17 +715,6 @@
         tg.setTaoBaoQuanInfo(quanInfo);
      }
      TaoBaoHongBaoInfo hongBaoInfo = new TaoBaoHongBaoInfo();
      BigDecimal fcRate = BigDecimal.valueOf(1);
      String eventRate = tb.getEventRate();
      BigDecimal rate = BigDecimal.valueOf(0);
      if (eventRate == null) {
         rate = tb.getTkRate();
      } else {
         rate = new BigDecimal(eventRate);
         if (fcRateStr != null) {
            fcRate = (new BigDecimal(fcRateStr).divide(BigDecimal.valueOf(100)));
         }
      }
      hongBaoInfo.setRate("最高40%");
@@ -940,12 +929,14 @@
      tg.setId(tb.getId());
      tg.setAuctionId(tb.getAuctionId());
      tg.setBiz30day(tb.getBiz30day());
      tg.setSalesCount(TaoBaoUtil.getSaleCount(tb.getBiz30day()));
      tg.setTitle(tb.getTitle());
      tg.setPictUrl(tb.getPictUrl() + "_200x200");
      tg.setPictUrl(tb.getPictUrl());
      tg.setZkPrice(tb.getZkPrice());
      tg.setAuctionUrl(tb.getAuctionUrl());
      tg.setReservePrice(tb.getReservePrice());
      tg.setUserType(tb.getUserType());
      tg.setImgList(tb.getImgList());
      if (tb.getCouponAmount().compareTo(BigDecimal.valueOf(0)) == 1) {
         TaoBaoQuanInfo quanInfo = new TaoBaoQuanInfo();
@@ -965,19 +956,8 @@
         tg.setTaoBaoQuanInfo(quanInfo);
      }
      Map<String, String> convertMap = taoBaoUtil.manageService.convertMap();
      String proportion = convertMap.get("hongbao_goods_proportion");
      String fcRateStr = convertMap.get("hongbao_fc_ratio");
      BigDecimal proportion = taoBaoUtil.manageService.getFanLiRate();
      TaoBaoHongBaoInfo hongBaoInfo = new TaoBaoHongBaoInfo();
      String eventRate = tb.getEventRate();
      BigDecimal rate = BigDecimal.valueOf(0);
      if (eventRate != null) {
         rate = new BigDecimal(eventRate);
      } else {
         rate = tb.getTkRate();
      }
      BigDecimal fcRate = new BigDecimal(fcRateStr);
      String tkMktStatus = tb.getTkMktStatus();
      if ("1".equals(tkMktStatus)) {
         hongBaoInfo.setType(1);
@@ -985,7 +965,7 @@
      hongBaoInfo.setRate("最高40%");
      String hongbao = getGoodsHongBaoInfo(tb, new BigDecimal(proportion));
      String hongbao = getGoodsHongBaoInfo(tb, proportion);
      if (!hongbao.contains("最高"))
         hongBaoInfo.setHongbao(new BigDecimal(hongbao.replace("¥", "")));
      else
@@ -1265,10 +1245,7 @@
         }
         return parsePhoneTmAndTb(id);
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e, "无法解析到淘宝商品ID", burl);
         } catch (Exception e1) {
         }
         LogHelper.error("无法解析到淘宝商品ID:"+burl);
         return null;
      }
@@ -1401,7 +1378,6 @@
            BigDecimal finalPrice = goodsBrief.getZkPrice().subtract(couponAccount);
            return finalPrice.multiply(goodsBrief.getTkRate()).divide(new BigDecimal(10000)).multiply(rate)
                  .setScale(2, BigDecimal.ROUND_DOWN);
         } else {// 不能用券
            return goodsBrief.getZkPrice().multiply(goodsBrief.getTkRate()).divide(new BigDecimal(10000))
                  .multiply(rate).setScale(2, BigDecimal.ROUND_DOWN);
@@ -1574,34 +1550,30 @@
      long startTime = System.currentTimeMillis();
      JSONObject data = new JSONObject();
      data.put("itemNumId", auctionId + "");
      data.put("id", auctionId + "");
      String url = "";
      try {
         url = String.format(
               "https://acs.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?data=%s&qq-pf-to=pcqq.group",
               URLEncoder.encode(data.toString(), "UTF-8"));
               "https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdesc/6.0/?data=%s&callback=GoodsLogic.showTuwen&_=%s",
               URLEncoder.encode(data.toString(), "UTF-8"), System.currentTimeMillis() + "");
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      }
      String result = HttpUtil.get(url);
      result = result.replace("GoodsLogic.showTuwen(", "").replace(")", "");
      data = JSONObject.fromObject(result);
      String moduleDescUrl = data.optJSONObject("data").optJSONObject("item").optString("moduleDescUrl");
      if (!StringUtil.isNullOrEmpty(moduleDescUrl)) {
      String pcDescContent = data.optJSONObject("data").optString("pcDescContent");
      System.out.println(pcDescContent);
      if (!StringUtil.isNullOrEmpty(pcDescContent)) {
         try {
            result = HttpUtil.get("http:" + moduleDescUrl);
            JSONObject resultJSON = JSONObject.fromObject(result);
            JSONArray itemsArray = resultJSON.optJSONObject("data").optJSONArray("children");
            for (int i = 0; i < itemsArray.size(); i++) {
               // picUrl
               JSONObject params = itemsArray.optJSONObject(i).optJSONObject("params");
               if (params.keySet().contains("picUrl")) {
                  String pictureUrl = params.optString("picUrl");
                  JSONObject sizeJSON = params.optJSONObject("size");
                  int width = sizeJSON.optInt("width");
                  int height = sizeJSON.optInt("height");
                  if (!StringUtil.isNullOrEmpty(pictureUrl))
                     imgList.add(new ImageInfo(pictureUrl, width, height));
            Document doc = Jsoup.parse(pcDescContent);
            Elements eles = doc.getElementsByTag("img");
            for (int i = 0; i < eles.size(); i++) {
               String imgSrc = eles.get(i).attr("src");
               if (imgSrc.endsWith(".jpg")) {
                  if (!imgSrc.startsWith("http"))
                     imgSrc = "https:" + imgSrc;
                  imgList.add(new ImageInfo(imgSrc, 0, 0));
               }
            }
         } catch (Exception e) {
@@ -1617,36 +1589,44 @@
    * @return
    */
   public static List<ImageInfo> getTBDetailImageWithSizev2(Long auctionId) {
   public static List<ImageInfo> getTBDetailImageWithSizev2(Long auctionId, ProxyIP ip) {
      List<ImageInfo> imgList = new ArrayList<>();
      try {
         Map<String, String> headers = new HashMap<>();
         headers.put("User-Agent",
               "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1");
         headers.put("Referer", "https://detail.tmall.com/item.htm?id=" + auctionId);
         String url = String.format("https://hws.m.taobao.com/cache/desc/5.0?id=" + auctionId);
         String result = HttpUtil.get(url);
         JSONObject data = JSONObject.fromObject(result);
         String result = HttpUtil.get(url, headers, ip);
         if (!StringUtil.isNullOrEmpty(result)) {
            JSONObject data = JSONObject.fromObject(result);
         JSONArray array = data.optJSONObject("wdescContent").optJSONArray("pages");
         if (array != null) {
            String html = "";
            for (int i = 0; i < array.size(); i++) {
               String itemStr = array.optString(i).replace("<img", "<a").replace("</img>", "<a>");
               html += itemStr;
            }
            Document doc = Jsoup.parse(html);
            Elements items = doc.getElementsByTag("a");
            for (int i = 0; i < items.size(); i++) {
               ImageInfo img = new ImageInfo();
               Element item = items.get(i);
               if (StringUtil.isNullOrEmpty(item.ownText()))
                  continue;
               if (!StringUtil.isNullOrEmpty(item.attr("size"))) {
                  img.setWidth(Integer.parseInt(item.attr("size").split("x")[0]));
                  img.setHeight(Integer.parseInt(item.attr("size").split("x")[1]));
            JSONArray array = data.optJSONObject("wdescContent").optJSONArray("pages");
            if (array != null) {
               String html = "";
               for (int i = 0; i < array.size(); i++) {
                  String itemStr = array.optString(i).replace("<img", "<a").replace("</img>", "<a>");
                  html += itemStr;
               }
               if (item.ownText().startsWith("http"))
                  img.setPicture(item.ownText().trim());
               else
                  img.setPicture("http:" + item.ownText().trim());
               imgList.add(img);
               Document doc = Jsoup.parse(html);
               Elements items = doc.getElementsByTag("a");
               for (int i = 0; i < items.size(); i++) {
                  ImageInfo img = new ImageInfo();
                  Element item = items.get(i);
                  if (StringUtil.isNullOrEmpty(item.ownText()))
                     continue;
                  if (!StringUtil.isNullOrEmpty(item.attr("size"))) {
                     img.setWidth(Integer.parseInt(item.attr("size").split("x")[0]));
                     img.setHeight(Integer.parseInt(item.attr("size").split("x")[1]));
                  }
                  if (item.ownText().startsWith("http"))
                     img.setPicture(item.ownText().trim());
                  else
                     img.setPicture("http:" + item.ownText().trim());
                  if (img != null && img.getPicture() != null && img.getPicture().endsWith(".jpg"))
                     imgList.add(img);
               }
            }
         }