yujian
2020-01-18 f4a0f2acc63d7785eab108419a4e16f5f688cb95
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -9,11 +9,9 @@
import org.yeshi.utils.taobao.TbImgUtil;
import com.taobao.api.ApiException;
import com.yeshi.fanli.dto.taobao.TaoBaoShopInfoDTO;
import com.yeshi.fanli.dto.taobao.TaoLiJinDTO;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinReport;
import com.yeshi.fanli.entity.taobao.RelateGoods;
import com.yeshi.fanli.entity.taobao.SearchFilter;
import com.yeshi.fanli.entity.taobao.SearchShopFilter;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
@@ -24,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;
@@ -916,6 +915,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;
   }
@@ -950,23 +952,6 @@
      return null;
   }
   public static List<RelateGoods> getRelateGoodsList(long auctionId) throws ApiException {
      List<RelateGoods> resultList = new ArrayList<>();
      List<TaoBaoGoodsBrief> list = getRelationGoodsRecommend(auctionId, 9);
      for (TaoBaoGoodsBrief goods : list) {
         if (goods != null) {
            RelateGoods rg = new RelateGoods();
            rg.setId(goods.getAuctionId() + "");
            rg.setPicUrl(goods.getPictUrl());
            rg.setTitle(goods.getTitle());
            rg.setZkPrice(goods.getZkPrice().toString());
            rg.setUrl(goods.getAuctionUrl());
            resultList.add(rg);
         }
      }
      return resultList;
   }
   /**
    * 获取券详细信息
    * 
@@ -993,45 +978,6 @@
      } else
         return null;
      return info;
   }
   /**
    * 获取关联商品推荐
    *
    * @param auctionId
    * @return
    */
   public static List<TaoBaoGoodsBrief> getRelationGoodsRecommend(long auctionId, int count) {
      List<TaoBaoGoodsBrief> list = new ArrayList<>();
      Map<String, String> map = new HashMap<>();
      map.put("method", "taobao.tbk.item.recommend.get");
      map.put("num_iid", auctionId + "");
      map.put("count", count + "");
      map.put("platform", 2 + "");
      map.put("fields",
            "num_iid,title,pict_url,small_images,reserve_price,zk_final_price,user_type,provcity,item_url");
      String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
      JSONObject data = JSONObject.fromObject(resultStr);
      if (data.optJSONObject("tbk_item_recommend_get_response") != null) {
         if (data.optJSONObject("tbk_item_recommend_get_response").optJSONObject("results") == null)
            return list;
         JSONArray array = data.optJSONObject("tbk_item_recommend_get_response").optJSONObject("results")
               .optJSONArray("n_tbk_item");
         if (array != null)
            for (int i = 0; i < array.size(); i++) {
               JSONObject item = array.optJSONObject(i);
               TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
               goods.setAuctionId(item.optLong("num_iid"));
               goods.setTitle(item.optString("title"));
               goods.setZkPrice(new BigDecimal(item.optString("zk_final_price")));
               goods.setAuctionUrl(item.optString("item_url"));
               goods.setPictUrl(item.optString("pict_url"));
               goods.setSalesCount(item.optString("volume"));
               goods.setUserType(item.optInt("user_type"));
               list.add(goods);
            }
      }
      return list;
   }
   public static void taoQiangGou() {
@@ -1334,14 +1280,12 @@
      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);
            }
            pageSize = array.size();
         }
      }
@@ -1403,23 +1347,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;
@@ -1596,6 +1544,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) {
@@ -1910,7 +1859,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);
@@ -1920,14 +1869,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;
   }
@@ -2110,22 +2069,37 @@
      return null;
   }
   public static void guessLikeByAuctionId(Long auctionId) {
   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 + "");
      map.put("page_size", 20 + "");
      map.put("page_size", count + "");
      map.put("page_no", 1 + "");
      map.put("material_id", 13256 + "");
      List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
      JSONObject resultJSON = null;
      try {
         resultJSON = TaoKeBaseUtil.baseRequest(map, true);
         System.out.println(resultJSON);
         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;
   }
}