From dd5b15229cb15459fa7c31ccea77dac28cbfafbd Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 13 四月 2020 10:04:20 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div --- fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java | 291 ++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 182 insertions(+), 109 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java index 2ba03d3..22d4cbf 100644 --- a/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java +++ b/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; @@ -170,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)) { @@ -206,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; @@ -316,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; } /** @@ -385,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; + } } /** @@ -916,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; } @@ -950,23 +972,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 +998,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 +1300,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 +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; @@ -1596,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) { @@ -1672,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"); @@ -1682,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)) { @@ -1910,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); @@ -1920,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; } @@ -2110,23 +2101,105 @@ 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; } + + 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 { -- Gitblit v1.8.0