yujian
2019-04-29 9a24f2802a3d6fe3e82c05e52f2880d65ad04dcf
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -1,7 +1,6 @@
package com.yeshi.fanli.util.taobao;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.net.URLEncoder;
@@ -50,6 +49,7 @@
import com.yeshi.fanli.entity.taobao.TaoBaoQuanInfo;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
import com.yeshi.fanli.entity.taobao.TaoBaoShop;
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.log.LogHelper;
@@ -62,6 +62,7 @@
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoHttpUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -756,6 +757,15 @@
      tg.setTaoBaoHongBaoInfo(hongBaoInfo);
      // 测试使用
      tg.setMoneyType(Math.random() > 0.5 ? 1 : 2);
      tg.setSalesType(Math.random() > 0.5 ? 1 : 2);
      tg.setSalesType(Math.random() > 0.5 ? tg.getSalesType() : 3);
      List<ClientTextStyleVO> labels = new ArrayList<>();
      labels.add(new ClientTextStyleVO("标签测试内容1", "#FF0000"));
      labels.add(new ClientTextStyleVO("标签测试内容2", "#00FF00"));
      tg.setLabels(labels);
      return tg;
   }
@@ -998,6 +1008,15 @@
         }
      }
      tg.setTaoBaoHongBaoInfo(hongBaoInfo);
      // 测试使用
      tg.setMoneyType(Math.random() > 0.5 ? 1 : 2);
      tg.setSalesType(Math.random() > 0.5 ? 1 : 2);
      tg.setSalesType(Math.random() > 0.5 ? tg.getSalesType() : 3);
      List<ClientTextStyleVO> labels = new ArrayList<>();
      labels.add(new ClientTextStyleVO("标签测试内容1", "#FF0000"));
      labels.add(new ClientTextStyleVO("标签测试内容2", "#00FF00"));
      tg.setLabels(labels);
      return tg;
   }
@@ -1310,7 +1329,10 @@
    * @return
    */
   public static String getGoodsHongBaoInfo(TaoBaoGoodsBrief goodsBrief, BigDecimal rate) {
      return "¥" + getGoodsHongBaoMoney(goodsBrief, rate).toString();
      if (goodsBrief != null && goodsBrief.getMaterialLibType() != null && goodsBrief.getMaterialLibType() == 0)
         return "¥0.00";
      else
         return "¥" + getGoodsHongBaoMoney(goodsBrief, rate).toString();
   }
   /**
@@ -1323,8 +1345,10 @@
   public static BigDecimal getGoodsHongBaoMoney(TaoBaoGoodsBrief goodsBrief, BigDecimal rate) {
      if (StringUtil.isNullOrEmpty(goodsBrief.getCouponInfo())
            || goodsBrief.getCouponInfo().trim().equalsIgnoreCase("无")) {
         return goodsBrief.getZkPrice().multiply(goodsBrief.getTkRate()).divide(new BigDecimal(10000)).multiply(rate)
               .setScale(2, BigDecimal.ROUND_DOWN);
         return MoneyBigDecimalUtil.mul(
               MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(goodsBrief.getZkPrice(), goodsBrief.getTkRate()),
                     new BigDecimal("0.01")),
               MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
      } else// 有券
      {
         List<BigDecimal> list = TaoBaoCouponUtil.getCouponInfo(goodsBrief.getCouponInfo());
@@ -1333,11 +1357,14 @@
         if (startFee.compareTo(goodsBrief.getZkPrice()) <= 0
               && goodsBrief.getZkPrice().compareTo(couponAccount) > 0) {
            BigDecimal finalPrice = goodsBrief.getZkPrice().subtract(couponAccount);
            return finalPrice.multiply(goodsBrief.getTkRate()).divide(new BigDecimal(10000)).multiply(rate)
                  .setScale(2, BigDecimal.ROUND_DOWN);
            return MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil
                  .mul(MoneyBigDecimalUtil.mul(finalPrice, goodsBrief.getTkRate()), new BigDecimal("0.01")),
                  MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
         } else {// 不能用券
            return goodsBrief.getZkPrice().multiply(goodsBrief.getTkRate()).divide(new BigDecimal(10000))
                  .multiply(rate).setScale(2, BigDecimal.ROUND_DOWN);
            return MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(
                  MoneyBigDecimalUtil.mul(goodsBrief.getZkPrice(), goodsBrief.getTkRate()),
                  new BigDecimal("0.01")), MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
         }
      }
   }
@@ -1729,6 +1756,70 @@
      return null;
   }
   /**
    * 根据商品ID获取店铺详情
    *
    * @param auctionId
    * @return
    */
   public static TaoBaoShop getTaoBaoShopDetailByAuctionId(Long auctionId) {
      JSONObject data = new JSONObject();
      data.put("itemNumId", auctionId + "");
      String url = "";
      try {
         url = String.format("https://acs.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?data=%s",
               URLEncoder.encode(data.toString(), "UTF-8"));
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      }
      String result = HttpUtil.get(url);
      JSONObject resultJson = JSONObject.fromObject(result);
      JSONObject dataJson = resultJson.optJSONObject("data");
      JSONObject sellerJson = dataJson.optJSONObject("seller");
      TaoBaoShop shop = new TaoBaoShop();
      shop.setGoodRatePercentage(new BigDecimal(sellerJson.optString("goodRatePercentage").replace("%", "")));
      shop.setId(sellerJson.optLong("userId"));
      JSONArray array = sellerJson.optJSONArray("evaluates");
      for (int i = 0; i < array.size(); i++) {
         JSONObject item = array.optJSONObject(i);
         if ("宝贝描述".equalsIgnoreCase(item.optString("title").trim())) {
            shop.setScoreGoods(new BigDecimal(item.optString("score").trim()));
            shop.setScoreGoodsD(new BigDecimal(item.optString("level").trim()));
         } else if ("卖家服务".equalsIgnoreCase(item.optString("title").trim())) {
            shop.setScoreSeller(new BigDecimal(item.optString("score").trim()));
            shop.setScoreSellerD(new BigDecimal(item.optString("level").trim()));
         } else if ("物流服务".equalsIgnoreCase(item.optString("title").trim())) {
            shop.setScoreLogistics(new BigDecimal(item.optString("score").trim()));
            shop.setScoreLogisticsD(new BigDecimal(item.optString("level").trim()));
         }
      }
      shop.setSellerNick(sellerJson.optString("sellerNick"));
      shop.setShopIcon("https:" + sellerJson.optString("shopIcon"));
      shop.setShopId(sellerJson.optLong("shopId"));
      shop.setShopName(sellerJson.optString("shopName"));
      if ("B".equalsIgnoreCase(sellerJson.optString("sellerType")))
         shop.setUserType(1);
      else
         shop.setUserType(0);
      shop.setShopLink(TaoBaoUtil.getShopLink(shop.getId()));
      return shop;
   }
   /**
    * 根据卖家id获取店铺链接
    * @param sellerId
    * @return
    */
   public static String getShopLink(Long sellerId) {
      return  "http://store.taobao.com/shop/view_shop.htm?user_number_id=" + sellerId;
   }
   public static void main(String[] args) {
      String s = channelMap.get("3");
      System.out.println(s);