admin
2020-04-13 dd5b15229cb15459fa7c31ccea77dac28cbfafbd
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -22,6 +22,7 @@
import com.yeshi.fanli.entity.taobao.TaoBaoShopInfo;
import com.yeshi.fanli.entity.taobao.TaoKeAppInfo;
import com.yeshi.fanli.exception.taobao.TaoBaoAuthException;
import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException;
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.exception.tlj.TaoLiJinCreateException;
@@ -168,6 +169,8 @@
      goods.setPictUrl(item.optString("pict_url"));
      goods.setShopTitle(item.optString("nick"));
      goods.setSellerId(item.optLong("seller_id"));
      goods.setRootCategoryName(item.optString("cat_name"));
      goods.setLeafName(item.optString("cat_leaf_name"));
      String optString = item.optString("shop_dsr");
      if (!StringUtil.isNullOrEmpty(optString)) {
@@ -204,6 +207,9 @@
      } else
         goods.setMaterialLibType(0);
      goods.setRootCategoryName(item.optString("cat_name"));
      goods.setLeafName(item.optString("cat_leaf_name"));
      goods = loadYuShouInfo(goods, item);
      return goods;
@@ -314,29 +320,37 @@
            }
         }
      // 再从淘宝联盟网页搜索
      filter.setKey(goods.getAuctionUrl());
      TaoBaoSearchResult searchResult = TaoBaoUtil.searchFromAlimamaWeb(filter, null);
      if (searchResult != null && searchResult.getTaoBaoGoodsBriefs() != null
            && searchResult.getTaoBaoGoodsBriefs().size() > 0) {
         for (TaoBaoGoodsBrief g : searchResult.getTaoBaoGoodsBriefs()) {
            if (g.getAuctionId().longValue() == goods.getAuctionId()) {
               g.setImgList(goods.getImgList());
               goods = g;
               if ("无".equalsIgnoreCase(goods.getCouponInfo()))
                  goods.setCouponInfo(null);
               return goods;
      // 从转链搜索
      TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
            new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                  TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT));
      if (newGoods != null) {
         goods.setTkRate(newGoods.getTkRate());
         if (!StringUtil.isNullOrEmpty(newGoods.getCouponInfo())) {
            List<BigDecimal> couponInfo = TaoBaoCouponUtil.getCouponInfo(newGoods.getCouponInfo());
            if (couponInfo != null && couponInfo.size() > 1) {
               goods.setCouponStartFee(couponInfo.get(0));
               goods.setCouponAmount(couponInfo.get(1));
               goods.setCouponEffectiveStartTime(newGoods.getCouponEffectiveStartTime());
               goods.setCouponEffectiveEndTime(newGoods.getCouponEffectiveEndTime());
               goods.setCouponLeftCount(newGoods.getCouponLeftCount());
               goods.setCouponTotalCount(newGoods.getCouponTotalCount());
               goods.setCouponInfo(newGoods.getCouponInfo());
            }
         }
         return goods;
      } else {
         goods.setCouponAmount(new BigDecimal("0"));
         goods.setTkMktStatus("1");
         goods.setTkRate(new BigDecimal("0"));
         goods.setReservePrice(new BigDecimal(0));
         goods.setTkCommFee(new BigDecimal(0));
         return goods;
      }
      TaoKeLogHelper.error(null, "没有搜索到详情:" + id);
      goods.setCouponAmount(new BigDecimal("0"));
      goods.setTkMktStatus("1");
      goods.setTkRate(new BigDecimal("0"));
      goods.setReservePrice(new BigDecimal(0));
      goods.setTkCommFee(new BigDecimal(0));
      return goods;
   }
   /**
@@ -383,29 +397,36 @@
            }
         }
      // 再从淘宝联盟网页搜索
      filter.setKey(goods.getAuctionUrl());
      TaoBaoSearchResult searchResult = TaoBaoUtil.searchFromAlimamaWeb(filter, null);
      if (searchResult != null && searchResult.getTaoBaoGoodsBriefs() != null
            && searchResult.getTaoBaoGoodsBriefs().size() > 0) {
         for (TaoBaoGoodsBrief g : searchResult.getTaoBaoGoodsBriefs()) {
            if (g.getAuctionId().longValue() == goods.getAuctionId()) {
               g.setImgList(goods.getImgList());
               goods = g;
               if ("无".equalsIgnoreCase(goods.getCouponInfo()))
                  goods.setCouponInfo(null);
               return goods;
      // 从转链搜索
      TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
            new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                  TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT));
      if (newGoods != null) {
         goods.setTkRate(newGoods.getTkRate());
         if (!StringUtil.isNullOrEmpty(newGoods.getCouponInfo())) {
            List<BigDecimal> couponInfo = TaoBaoCouponUtil.getCouponInfo(newGoods.getCouponInfo());
            if (couponInfo != null && couponInfo.size() > 1) {
               goods.setCouponStartFee(couponInfo.get(0));
               goods.setCouponAmount(couponInfo.get(1));
               goods.setCouponEffectiveStartTime(newGoods.getCouponEffectiveStartTime());
               goods.setCouponEffectiveEndTime(newGoods.getCouponEffectiveEndTime());
               goods.setCouponLeftCount(newGoods.getCouponLeftCount());
               goods.setCouponTotalCount(newGoods.getCouponTotalCount());
               goods.setCouponInfo(newGoods.getCouponInfo());
            }
         }
      }
      TaoKeLogHelper.error(null, "没有搜索到详情:" + id);
      goods.setCouponAmount(new BigDecimal("0"));
      goods.setTkMktStatus("1");
      goods.setTkRate(new BigDecimal("0"));
      goods.setReservePrice(new BigDecimal(0));
      goods.setTkCommFee(new BigDecimal(0));
      return goods;
         return goods;
      } else {
         goods.setCouponAmount(new BigDecimal("0"));
         goods.setTkMktStatus("1");
         goods.setTkRate(new BigDecimal("0"));
         goods.setReservePrice(new BigDecimal(0));
         goods.setTkCommFee(new BigDecimal(0));
         return goods;
      }
   }
   /**
@@ -914,6 +935,9 @@
      if (!StringUtil.isNullOrEmpty(item.optString("reserve_price")))
         goods.setReservePrice(new BigDecimal(item.optString("reserve_price")));
      goods.setTotalFee(new BigDecimal("0"));
      // 推荐语
      goods.setDescription(item.optString("item_description"));
      goods = loadYuShouInfo(goods, item);
      return goods;
   }
@@ -1343,23 +1367,27 @@
    * @param idfa
    * @return
    */
   public static TaoBaoSearchResult guessDeviceLike(int page, int pageSize, String imei, String idfa) {
   public static TaoBaoSearchResult guessDeviceLike(int page, int pageSize, String imei, String idfa, String utdid) {
      List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
      Map<String, String> map = new HashMap<>();
      map.put("method", "taobao.tbk.dg.optimus.material");
      map.put("page_no", page + "");
      map.put("page_size", pageSize + "");
      map.put("material_id", "6708");
      if (StringUtil.isNullOrEmpty(imei) && StringUtil.isNullOrEmpty(idfa))
      if (StringUtil.isNullOrEmpty(imei) && StringUtil.isNullOrEmpty(idfa) && StringUtil.isNullOrEmpty(utdid))
         return null;
      map.put("device_encrypt", "MD5");
      if (!StringUtil.isNullOrEmpty(imei)) {
         map.put("device_encrypt", "MD5");
         map.put("device_value", StringUtil.Md5(imei));
         map.put("device_type", "IMEI");
      } else {
      } else if (!StringUtil.isNullOrEmpty(idfa)) {
         map.put("device_encrypt", "MD5");
         map.put("device_value", StringUtil.Md5(idfa));
         map.put("device_type", "IDFA");
      } else if (!StringUtil.isNullOrEmpty(utdid)) {
         map.put("device_value", utdid);
         map.put("device_type", "UTDID");
      }
      JSONObject resultJSON = null;
@@ -1536,6 +1564,7 @@
         app.setAppKey(appKey);
         app.setAppSecret(appSecret);
         resultJSON = TaoKeBaseUtil.baseRequest(map, app);
         System.out.println(resultJSON.toString());
         return resultJSON.optJSONObject("tbk_sc_publisher_info_save_response").optJSONObject("data")
               .optString("relation_id");
      } catch (TaoKeApiException e) {
@@ -1612,6 +1641,7 @@
      map.put("adzone_id", sts[3]);
      try {
         String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app);
         System.out.println(result);
         JSONObject json = JSONObject.fromObject(result);
         JSONObject resultJSON = json.optJSONObject("tbk_coupon_convert_response").optJSONObject("result")
               .optJSONObject("results");
@@ -1622,6 +1652,17 @@
         if (!StringUtil.isNullOrEmpty(resultJSON.optString("coupon_info"))) {
            goods.setCouponLink(couponLink);
            goods.setCouponInfo(resultJSON.optString("coupon_info"));
            if (!StringUtil.isNullOrEmpty(resultJSON.optString("coupon_total_count"))) {
               goods.setCouponTotalCount(Integer.parseInt(resultJSON.optString("coupon_total_count")));
            }
            if (!StringUtil.isNullOrEmpty(resultJSON.optString("coupon_remain_count"))) {
               goods.setCouponLeftCount(Integer.parseInt(resultJSON.optString("coupon_remain_count")));
            }
            goods.setCouponEffectiveStartTime(resultJSON.optString("coupon_start_time"));
            goods.setCouponEffectiveEndTime(resultJSON.optString("coupon_end_time"));
         }
         String tkRate = resultJSON.optString("max_commission_rate");
         if (!StringUtil.isNullOrEmpty(tkRate)) {
@@ -1850,7 +1891,7 @@
    * @param token
    * @return
    */
   public static Long tokenConvertAuctionId(String token) {
   public static Long tokenConvertAuctionId(String token) throws TaoBaoTokenParseException {
      Map<String, String> map = new HashMap<>();
      map.put("method", "taobao.tbk.tpwd.convert");
      map.put("password_content", token);
@@ -1860,14 +1901,24 @@
      app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      try {
         JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
         try {
            return json.optJSONObject("tbk_tpwd_convert_response").optJSONObject("data").optLong("num_iid");
         } catch (Exception e) {
            return null;
         }
      } catch (TaoKeApiException e) {
         e.printStackTrace();
         JSONObject msg = null;
         try {
            msg = JSONObject.fromObject(e.getMsg());
         } catch (Exception e2) {
         }
         if (msg != null && msg.optJSONObject("error_response") != null) {
            throw new TaoBaoTokenParseException(msg.optJSONObject("error_response").optInt("sub_code"),
                  msg.optJSONObject("error_response").optString("sub_msg"));
         }
      }
      return null;
   }
@@ -2050,7 +2101,7 @@
      return null;
   }
   public static List<TaoBaoGoodsBrief> guessLikeByAuctionId(Long auctionId,int count) {
   public static List<TaoBaoGoodsBrief> guessLikeByAuctionId(Long auctionId, int count) {
      Map<String, String> map = new HashMap<>();
      map.put("method", "taobao.tbk.dg.optimus.material");
      map.put("item_id", auctionId + "");
@@ -2082,6 +2133,73 @@
      return goodsList;
   }
   public static List<TaoBaoGoodsBrief> getCouponListByItemId(Long auctionId) {
      Map<String, String> map = new HashMap<>();
      map.put("method", "taobao.tbk.itemid.coupon.get");
      map.put("platform", auctionId + "");
      map.put("num_iids", auctionId + "");
      map.put("pid", TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT);
      List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
      JSONObject resultJSON = null;
      try {
         resultJSON = TaoKeBaseUtil.baseRequest(map, new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY,
               TaoBaoConstant.TAOBAO_AUTH_APPSECRET, TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT));
         JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response");
         if (response != null && response.optJSONObject("result_list") != null) {
            JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data");
            if (array != null) {
               for (int i = 0; i < array.size(); i++) {
                  JSONObject item = array.optJSONObject(i);
                  TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item);
                  if (goods != null)
                     goodsList.add(goods);
               }
            }
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
      return goodsList;
   }
   /**
    * 淘宝客-推广者-官方活动信息获取
    * @Title: getActivityInfo
    * @Description:
    * @param activityMaterialId
    * @param pid
    * @param relationId
    * @return
    * String 返回类型
    * @throws
    */
   public static String getActivityInfo(String activityMaterialId, String pid, String relationId) {
      Map<String, String> map = new HashMap<>();
      map.put("method", "taobao.tbk.activity.info.get");
      map.put("activity_material_id", activityMaterialId);
      map.put("adzone_id", pid.split("_")[3] + "");
      map.put("relation_id", relationId);
      JSONObject resultJSON = null;
      try {
         resultJSON = TaoKeBaseUtil.baseRequest(map,
               new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, pid));
         JSONObject response = resultJSON.optJSONObject("tbk_activity_info_get_response");
         if (response != null && response.optJSONObject("data") != null) {
            return response.optJSONObject("data").optString("click_url");
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
      return null;
   }
}
class QuanInfo {