yujian
2020-06-08 b3da9f82b7740d39742fef1a81a56c22fe1c8b9c
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -6,6 +6,8 @@
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -43,6 +45,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;
@@ -737,7 +740,7 @@
      hongBaoInfo.setRate("最高40%");
      String hongbao = getGoodsHongBaoInfo(tb, new BigDecimal(proportion));
      String hongbao = getGoodsHongBaoInfo(tb, new BigDecimal(proportion), false);
      if (hongbao.contains("最高")) {
         hongBaoInfo.setType(1);
         hongBaoInfo.setHongbao(new BigDecimal(0));
@@ -1020,7 +1023,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)) {
@@ -1029,7 +1032,7 @@
      hongBaoInfo.setRate("最高40%");
      String hongbao = getGoodsHongBaoInfo(tb, proportion);
      String hongbao = getGoodsHongBaoInfo(tb, proportion, false);
      if (!hongbao.contains("最高"))
         hongBaoInfo.setHongbao(new BigDecimal(hongbao.replace("¥", "")));
      else
@@ -1073,23 +1076,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) {
@@ -1415,12 +1408,12 @@
    *            用户再次分成比例(0-100)
    * @return
    */
   public static String getGoodsHongBaoInfo(TaoBaoGoodsBrief goodsBrief, BigDecimal rate) {
   public static String getGoodsHongBaoInfo(TaoBaoGoodsBrief goodsBrief, BigDecimal rate, boolean share) {
      // if (goodsBrief != null && goodsBrief.getMaterialLibType() != null &&
      // goodsBrief.getMaterialLibType() == 0)
      // return "¥0.00";
      // else
      return "¥" + getGoodsHongBaoMoney(goodsBrief, rate).toString();
      return "¥" + getGoodsHongBaoMoney(goodsBrief, rate, share).toString();
   }
   /**
@@ -1430,7 +1423,7 @@
    * @param rate
    * @return
    */
   public static BigDecimal getGoodsHongBaoMoney(TaoBaoGoodsBrief goodsBrief, BigDecimal rate) {
   public static BigDecimal getGoodsHongBaoMoney(TaoBaoGoodsBrief goodsBrief, BigDecimal rate, boolean share) {
      BigDecimal money = null;
      if (StringUtil.isNullOrEmpty(goodsBrief.getCouponInfo())
            || goodsBrief.getCouponInfo().trim().equalsIgnoreCase("无")) {
@@ -1456,6 +1449,10 @@
                  new BigDecimal("0.01")), MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
         }
      }
      if (share)
         money = TaoBaoUtil.getCanShareMoney(new Date(), money);
      return BigDecimalUtil.getWithNoZera(money);
   }
@@ -1490,7 +1487,7 @@
    */
   public static BigDecimal getShareGoodsHongBaoInfo(TaoBaoGoodsBrief goodsBrief, BigDecimal rate) {
      return getGoodsHongBaoMoney(goodsBrief, rate);
      return getGoodsHongBaoMoney(goodsBrief, rate, true);
   }
   /**
@@ -1759,15 +1756,27 @@
      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"))
@@ -2011,14 +2020,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();
@@ -2033,6 +2042,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;
@@ -2127,17 +2139,41 @@
         return false;
   }
   private final static String[] taoTokenSymbols = new String[] { "₳-₳", "¥-¥", "¥-¥", "€-€", "\\$-\\$", "₴-₴", "¢-¢",
         "₤-₤" };
   /**
    * 从文本中提取淘口令
    * @Title: getTokenListFromText
    * @Description:
    * @param str
    * @return
    * List<String> 返回类型
    * @throws
    * 从文本中提取淘口令 @Title: getTokenListFromText @Description: @param str @return
    * List<String> 返回类型 @throws
    */
   public static List<String> getTokenListFromText(String str) {
      String pattern = "(₳{1}[A-Za-z0-9]+₳{1})|(¥{1}[A-Za-z0-9]+¥{1})|(¥{1}[A-Za-z0-9]+¥{1})";
      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<>();
@@ -2147,4 +2183,23 @@
      return urlList;
   }
   /**
    * 获取能够分的钱
    * @Title: getCanShareMoney
    * @Description:
    * @param estimate
    * @return
    * BigDecimal 返回类型
    * @throws
    */
   public static BigDecimal getCanShareMoney(Date createTime, BigDecimal estimate) {
      if (estimate == null)
         return null;
      if (createTime.getTime() < TimeUtil.convertToTimeTemp("2020-06-01 12:30:00", "yyyy-MM-dd HH:mm:ss")) {
         return estimate;
      }
      BigDecimal rate = new BigDecimal("0.9101");
      return MoneyBigDecimalUtil.mul(estimate, rate);
   }
}