admin
2020-05-19 744594ef1a2f530fc3e86ea9dc48b62247f79420
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -6,6 +6,7 @@
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -43,6 +44,7 @@
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
import com.yeshi.fanli.entity.common.ImageInfo;
import com.yeshi.fanli.entity.goods.CommonGoods;
import com.yeshi.fanli.entity.taobao.SearchFilter;
@@ -1020,7 +1022,7 @@
         tg.setTaoBaoQuanInfo(quanInfo);
      }
      BigDecimal proportion = taoBaoUtil.manageService.getFanLiRate();
      BigDecimal proportion = taoBaoUtil.manageService.getFanLiRate(UserLevelEnum.daRen);
      TaoBaoHongBaoInfo hongBaoInfo = new TaoBaoHongBaoInfo();
      String tkMktStatus = tb.getTkMktStatus();
      if ("1".equals(tkMktStatus)) {
@@ -1073,23 +1075,13 @@
      return tg;
   }
   public static TaoBaoGoodsBrief getTaoBaoGoodsBrief(String id) {
      Map<String, String> params = new HashMap<String, String>();
      params.put("q", String.format("http://item.taobao.com/item.htm?id=%s", id));
      params.put("_t", System.currentTimeMillis() + "");
      params.put("auctionTag", "");
      params.put("perPageSize", 40 + "");
      params.put("t", System.currentTimeMillis() + "");
      String result = TaoBaoHttpUtil.get(SEARCH_URL, params);
      result = result.replace("</span>", "").replace("<span class=H>", "");
      TaoBaoSearchResult presult = parseTaoBao(result);
      if (presult != null && presult.getTaoBaoGoodsBriefs().size() > 0) {
         // TaoBaoGoodsBrief taoBaoGoodsBrief =
         // presult.getTaoBaoGoodsBriefs().get(0);
         return presult.getTaoBaoGoodsBriefs().get(0);
      } else
         return null;
   /**
    * 获取未参与推广的淘宝商品详情 @Title: getTaoBaoGoodsBrief @Description: @param
    * id @return TaoBaoGoodsBrief 包含(标题与图片) @throws
    */
   public static TaoBaoGoodsBrief getTaoBaoGoodsBriefNotInPub(Long id) {
      TaoBaoGoodsBrief tb = TaoBaoUtil.getTmallGoodsInfo(id + "");
      return tb;
   }
   public static List<String> getSuguestSearch(String key) {
@@ -1755,21 +1747,31 @@
      return taoBaoGoods;
   }
   public static TaoBaoGoodsBrief convert(DaTaoKeDetailV2 detail) {
      TaoBaoGoodsBrief taoBaoGoods = new TaoBaoGoodsBrief();
      taoBaoGoods.setAuctionId(detail.getGoodsId());
      taoBaoGoods.setBiz30day(detail.getMonthSales());
      // 券相关转换
      taoBaoGoods.setCouponAmount(detail.getCouponPrice());
      taoBaoGoods.setCouponInfo(String.format("满%s元减%s元", detail.getCouponConditions(),
      taoBaoGoods.setCouponInfo(String.format("满%s元减%s元", detail.getOriginalPrice(),
            MoneyBigDecimalUtil.getWithNoZera(detail.getCouponPrice())));
      if (detail.getCouponTotalNum() != null && detail.getCouponReceiveNum() != null)
         taoBaoGoods.setCouponLeftCount(detail.getCouponTotalNum() - detail.getCouponReceiveNum());
      else
         taoBaoGoods.setCouponLeftCount(0);
      taoBaoGoods.setCouponStartFee(detail.getOriginalPrice());
      try {
         taoBaoGoods.setCouponStartFee(detail.getOriginalPrice());
      } catch (Exception e) {
      }
      taoBaoGoods.setCouponTotalCount(detail.getCouponTotalNum());
      taoBaoGoods.setCouponLink(detail.getCouponLink());
      taoBaoGoods.setCouponEffectiveStartTime(TimeUtil.getGernalTime(
            TimeUtil.convertToTimeTemp(detail.getCouponStartTime(), "yyyy-MM-dd HH:mm:ss"), "yyyy-MM-dd"));
      taoBaoGoods.setCouponEffectiveEndTime(TimeUtil.getGernalTime(
            TimeUtil.convertToTimeTemp(detail.getCouponEndTime(), "yyyy-MM-dd HH:mm:ss"), "yyyy-MM-dd"));
      taoBaoGoods.setPictUrl(detail.getMainPic());
      taoBaoGoods.setPictUrlWhite(detail.getMainPic());
      if (taoBaoGoods.getPictUrl() != null && !taoBaoGoods.getPictUrl().startsWith("http"))
@@ -1840,8 +1842,7 @@
      String result = null;
      try {
         Connection.Response doc = Jsoup.connect(url).ignoreContentType(true)
               .timeout(1000*10)
         Connection.Response doc = Jsoup.connect(url).ignoreContentType(true).timeout(1000 * 10)
               .userAgent(
                     "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362")
               .header("Accept", "text/html, application/xhtml+xml, application/xml; q=0.9, */*; q=0.8")
@@ -2014,14 +2015,14 @@
         if (elements.size() >= 0) {
            for (int i = 0; i < elements.size(); i++) {
               String content = elements.get(i).toString();
               if (content.contains("var _DATA_Mdskip")) {
               if (content.contains("var _DATA_Detail")) {
                  content = content.replace("<script>", "");
                  content = content.replace("</script>", "");
                  if (content.contains("videoDetail")) {
                     content += ";function getData(){ var json={title:_DATA_Mdskip.item.title,pictUrl:_DATA_Mdskip.item.videoDetail.videoThumbnailURL};   return JSON.stringify(json);}";
                     content += ";function getData(){ var json={title:_DATA_Detail.item.title,pictUrl:_DATA_Detail.item.images[0]};   return JSON.stringify(json);}";
                  } else {
                     content += ";function getData(){ var json={title:_DATA_Mdskip.item.title,pictUrl:_DATA_Mdskip.item.videos[0].videoThumbnailURL};   return JSON.stringify(json);}";
                     content += ";function getData(){ var json={title:_DATA_Detail.item.title,pictUrl:_DATA_Detail.item.images[0]};   return JSON.stringify(json);}";
                  }
                  ScriptEngineManager manager = new ScriptEngineManager();
@@ -2036,6 +2037,9 @@
                     taoBaoGoodsBrief = new TaoBaoGoodsBrief();
                     taoBaoGoodsBrief.setTitle(title.toString());
                     taoBaoGoodsBrief.setPictUrl(pictUrl.toString());
                     if (!pictUrl.toString().startsWith("http")) {
                        taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize220Img("http:" + pictUrl.toString()));
                     }
                  }
                  break;
@@ -2130,4 +2134,48 @@
         return false;
   }
   private final static String[] taoTokenSymbols = new String[] { "₳-₳", "¥-¥", "¥-¥", "€-€", "\\$-\\$", "₴-₴", "¢-¢",
         "₤-₤" };
   /**
    * 从文本中提取淘口令 @Title: getTokenListFromText @Description: @param str @return
    * List<String> 返回类型 @throws
    */
   public static List<String> getTokenListFromText(String str) {
      String[] marks = taoTokenSymbols;
      return getTokenListFromText(str, Arrays.asList(marks));
   }
   /**
    * 从文本中提取淘口令(括号的口令也算)
    *
    * @param str
    * @return
    */
   public static List<String> getTokenListFromTextWithKuoHao(String str) {
      String[] marks = taoTokenSymbols;
      List<String> list = new ArrayList<>();
      for (String st : marks)
         list.add(st);
      list.add("\\(-\\)");
      list.add("(-)");
      return getTokenListFromText(str, list);
   }
   public static List<String> getTokenListFromText(String str, List<String> markList) {
      List<String> expressList = new ArrayList<>();
      for (String st : markList) {
         expressList.add(String.format("(%s{1}[A-Za-z0-9]{11,13}+%s{1})", st.split("-")[0], st.split("-")[1]));
      }
      String pattern = StringUtil.concat(expressList, "|");
      Pattern r = Pattern.compile(pattern);
      Matcher m = r.matcher(str);
      List<String> urlList = new ArrayList<>();
      while (m.find()) {
         urlList.add(m.group());
      }
      return urlList;
   }
}