From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 二月 2025 16:41:22 +0800
Subject: [PATCH] 淘宝转链接口更新

---
 fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java |  233 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 136 insertions(+), 97 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 826a9ae..f137847 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
@@ -36,79 +36,6 @@
 //娣樺疂瀹PI鎺ュ彛
 public class TaoKeApiUtil {
 
-    // 瑙f瀽鍒哥殑鍐呭
-    private static TaoBaoSearchResult parseCoupleContent(String content) {
-        TaoBaoSearchResult result = new TaoBaoSearchResult();
-        JSONObject root = JSONObject.fromObject(content);
-
-        root = root.optJSONObject("tbk_dg_item_coupon_get_response");
-        if (root.optJSONObject("results") == null)
-            return null;
-
-        JSONArray array = root.optJSONObject("results").optJSONArray("tbk_coupon");
-        if (array != null) {
-            List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
-            for (int i = 0; i < array.size(); i++) {
-                JSONObject item = array.optJSONObject(i);
-                TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
-                goods.setPictUrl(item.optString("pict_url"));
-                goods.setAuctionId(item.optString("num_iid"));
-                goods.setAuctionUrl(item.optString("item_url"));
-                goods.setBiz30day(item.optInt("volume"));
-                goods.setCouponInfo(item.optString("coupon_info"));
-                List<BigDecimal> quanInfo = TaoBaoCouponUtil.getCouponInfo(goods.getCouponInfo());
-                goods.setCouponAmount(quanInfo.get(1));
-                goods.setCouponEffectiveEndTime(item.optString("coupon_end_time"));
-                goods.setCouponEffectiveStartTime(item.optString("coupon_start_time"));
-                goods.setCouponStartFee(quanInfo.get(0));
-                goods.setCouponLeftCount(item.optInt("coupon_remain_count"));
-                goods.setCouponLink(item.optString("coupon_click_url"));
-                goods.setCouponTotalCount(item.optInt("coupon_total_count"));
-                goods.setDayLeft(-1);
-                if (item.optJSONObject("small_images") != null) {
-                    JSONArray imgArray = item.optJSONObject("small_images").optJSONArray("string");
-                    if (imgArray != null) {
-                        List<String> imgList = new ArrayList<>();
-                        for (int n = 0; n < imgArray.size(); n++) {
-                            imgList.add(imgArray.optString(n));
-                        }
-                        goods.setImgList(imgList);
-                    }
-                }
-
-                goods.setSellerId(item.optLong("seller_id"));
-                goods.setShopTitle(item.optString("shop_title"));
-                goods.setTitle(item.optString("title"));
-
-                goods.setTkRate(new BigDecimal(item.optString("commission_rate")));
-                goods.setTotalNum(1000);
-                goods.setUserType(item.optInt("user_type"));
-                goods.setUserTypeName("");
-                goods.setZkPrice(new BigDecimal(item.optString("zk_final_price")));
-
-                if (goods.getZkPrice().compareTo(goods.getCouponStartFee()) >= 0
-                        && goods.getZkPrice().compareTo(goods.getCouponAmount()) > 0) {
-                    BigDecimal finalPrice = goods.getZkPrice().subtract(goods.getCouponAmount());
-                    goods.setTkCommFee(finalPrice.multiply(goods.getTkRate()).divide(new BigDecimal(100)));
-                } else
-                    goods.setTkCommFee(new BigDecimal(0));
-
-                goodsList.add(goods);
-            }
-
-            result.setTaoBaoGoodsBriefs(goodsList);
-
-            int totalCount = 1000;// root.optInt("total_results");
-            PageEntity pe = new PageEntity(0, 0, totalCount);
-            result.setPageEntity(pe);
-        }
-        result.setNavList(new ArrayList<>());
-        TaoBaoHead taoBaoHead = new TaoBaoHead();
-        taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount());
-        result.setTaoBaoHead(taoBaoHead);
-        return result;
-    }
-
     /**
      * 鑾峰彇鍟嗗搧璇︽儏锛岀畝鐗�
      *
@@ -121,12 +48,44 @@
         map.put("method", "taobao.tbk.item.info.get");
 
         map.put("num_iids", id + "");
+        String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
+        System.out.println(resultStr);
+        JSONObject data = JSONObject.fromObject(resultStr);
+        // 鍟嗗搧涓嬫灦
+        if (data.optJSONObject("error_response") != null && data.optJSONObject("error_response").optInt("code") == 15
+                && data.optJSONObject("error_response").optInt("sub_code") == 50001) {
+            throw new TaobaoGoodsDownException(data.optJSONObject("error_response").optInt("code"), "鍟嗗搧涓嬫灦");
+        }
+
+        //TODO 淇敼涓存椂鎺ュ彛 tbk_item_info_get_response
+        if (data.optJSONObject("tbk_item_info_get_response") == null)
+            return null;
+        JSONArray array = data.optJSONObject("tbk_item_info_get_response").optJSONObject("results")
+                .optJSONArray("n_tbk_item");
+        if (array != null && array.size() > 0) {
+            JSONObject item = array.optJSONObject(0);
+            TaoBaoGoodsBrief goods = parseSimpleGoodsInfo(item);
+            if (goods != null && !NumberUtil.isNumeric(id)) {
+                goods.setAuctionId(id);
+            }
+            return goods;
+        }
+        return null;
+    }
+
+    // 鑾峰彇鍟嗗搧璇︽儏鑷喘
+    public static TaoBaoGoodsBrief getSimpleGoodsInfoForOwnBuy(String id) throws TaobaoGoodsDownException {
+        Map<String, String> map = new HashMap<>();
+
+        map.put("method", "taobao.tbk.item.info.get");
+
+        map.put("num_iids", id + "");
         String resultStr = null;
-        if(!NumberUtil.isNumeric(id)){
-            resultStr =   TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
-        }else{
+        if (!NumberUtil.isNumeric(id)) {
+            resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
+        } else {
             map.put("biz_scene_id", "2");
-            resultStr =   TaoKeBaseUtil.baseRequestForThreeTimes(map, TaoBaoConstant.getSpecialAuthAppInfo(TaoBaoConstant.TAOBAO_PID_DEFAULT));
+            resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, TaoBaoConstant.getSpecialAuthAppInfo(TaoBaoConstant.TAOBAO_PID_DEFAULT));
         }
         System.out.println(resultStr);
         JSONObject data = JSONObject.fromObject(resultStr);
@@ -144,7 +103,7 @@
         if (array != null && array.size() > 0) {
             JSONObject item = array.optJSONObject(0);
             TaoBaoGoodsBrief goods = parseSimpleGoodsInfo(item);
-            if(goods!=null&&!NumberUtil.isNumeric(id)){
+            if (goods != null && !NumberUtil.isNumeric(id)) {
                 goods.setAuctionId(id);
             }
             return goods;
@@ -156,7 +115,11 @@
         TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
         goods.setAuctionId(item.optString("num_iid"));
         goods.setAuctionUrl(item.optString("item_url"));
-        goods.setBiz30day(item.optInt("volume"));
+        if (item.containsKey("annual_vol")) {
+            goods.setBiz30day(item.optInt("annual_vol") / 12);
+        } else {
+            goods.setBiz30day(item.optInt("volume"));
+        }
         if (item.optJSONObject("small_images") != null) {
             JSONArray imgArray = item.optJSONObject("small_images").optJSONArray("string");
             if (imgArray != null) {
@@ -393,7 +356,7 @@
             }
 
         // 浠庤浆閾炬悳绱�
-        TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
+        TaoBaoGoodsBrief newGoods = specialConvertCouponV2(goods.getAuctionId(),
                 new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                         TaoBaoConstant.TAOBAO_PID_DEFAULT), specialId, relationId);
 
@@ -474,7 +437,7 @@
             }
 
         // 浠庤浆閾炬悳绱�
-        TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
+        TaoBaoGoodsBrief newGoods = specialConvertCouponV2(goods.getAuctionId(),
                 new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                         TaoBaoConstant.TAOBAO_PID_DEFAULT), null, null);
 
@@ -969,8 +932,8 @@
         System.out.println("resultStr" + resultStr);
         JSONObject data = JSONObject.fromObject(resultStr);
         JSONObject rootData = data.optJSONObject("tbk_dg_material_optional_upgrade_response");
-        if ( rootData!= null
-                &&rootData.optJSONObject("result_list") != null) {
+        if (rootData != null
+                && rootData.optJSONObject("result_list") != null) {
             JSONArray array = rootData.optJSONObject("result_list")
                     .optJSONArray("map_data");
             List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
@@ -1174,7 +1137,11 @@
 
         goods.setAuctionId(item.optString("num_iid"));
         goods.setAuctionUrl("https:" + item.optString("url"));
-        goods.setBiz30day(item.optInt("volume"));
+        if (item.containsKey("annual_vol")) {
+            goods.setBiz30day(item.optInt("annual_vol") / 100);
+        } else {
+            goods.setBiz30day(item.optInt("volume"));
+        }
         goods.setCouponInfo(item.optString("coupon_info"));
 
         if (goods.getCouponInfo() != null)
@@ -1266,7 +1233,6 @@
         JSONObject mgcInfo = item.optJSONObject("mgc_info");
 
 
-
         TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
         goods.setPictUrl(basicInfo.optString("pict_url"));
 
@@ -1276,8 +1242,13 @@
 
         goods.setAuctionId(item.optString("item_id"));
         goods.setAuctionUrl("https:" + item.optString("url"));
-        goods.setBiz30day(basicInfo.optInt("volume"));
-        if(pricePromotionInfo.optJSONObject("final_promotion_path_list")!=null&&pricePromotionInfo.optJSONObject("final_promotion_path_list").optJSONArray("final_promotion_path_map_data").size()>0) {
+
+        if (basicInfo.containsKey("annual_vol")) {
+            goods.setBiz30day(basicInfo.optInt("annual_vol") / 12);
+        } else {
+            goods.setBiz30day(basicInfo.optInt("volume"));
+        }
+        if (pricePromotionInfo.optJSONObject("final_promotion_path_list") != null && pricePromotionInfo.optJSONObject("final_promotion_path_list").optJSONArray("final_promotion_path_map_data").size() > 0) {
             JSONArray array = pricePromotionInfo.optJSONObject("final_promotion_path_list").optJSONArray("final_promotion_path_map_data");
             JSONObject couponInfo = array.optJSONObject(0);
             goods.setCouponInfo(couponInfo.optString("promotion_desc").replace(".00", ""));
@@ -1290,7 +1261,7 @@
             goods.setCouponLink(publishInfo.optString("coupon_share_url"));
             goods.setCouponTotalCount(100);
             goods.setCouponActivityId(couponInfo.optString("promotion_id"));
-        }else{
+        } else {
             goods.setCouponAmount(new BigDecimal(0));
         }
 
@@ -1335,7 +1306,7 @@
         goods.setUserTypeName("");
         goods.setZkPrice(new BigDecimal(pricePromotionInfo.optString("zk_final_price")));
 
-        if (publishInfo.optJSONArray("sp_campaign_list")!=null&&publishInfo.optJSONArray("sp_campaign_list").size()>0) {
+        if (publishInfo.optJSONArray("sp_campaign_list") != null && publishInfo.optJSONArray("sp_campaign_list").size() > 0) {
             goods.setDxjhInfo(publishInfo.optJSONArray("sp_campaign_list").optJSONObject(0).optString("sp_name"));
         }
 
@@ -1353,7 +1324,7 @@
         goods.setTotalFee(new BigDecimal("0"));
         // 鎺ㄨ崘璇�
 
-        if(mgcInfo!=null) {
+        if (mgcInfo != null) {
             goods.setDescription(mgcInfo.optString("item_description"));
         }
         goods = loadYuShouInfo(goods, item);
@@ -2097,6 +2068,62 @@
     }
 
 
+    public static TaoBaoGoodsBrief specialConvertCouponV2(String auctionId, TaoKeAppInfo app, String specialId, String relationId) {
+        String pid = app.getPid();
+        String[] sts = pid.split("_");
+        Map<String, String> map = new HashMap<>();
+        map.put("method", "taobao.tbk.dg.general.link.convert");
+        map.put("item_id_list", auctionId + "");
+        map.put("adzone_id", sts[3]);
+        if (!StringUtil.isNullOrEmpty(specialId) && !StringUtil.isNullOrEmpty(relationId)) {
+            map.put("special_id", specialId);
+        } else if (!StringUtil.isNullOrEmpty(specialId)) {
+            map.put("special_id", specialId);
+        } else if (!StringUtil.isNullOrEmpty(relationId)) {
+            map.put("relation_id", relationId);
+        }
+        try {
+            String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app);
+            System.out.println(result);
+            JSONObject json = JSONObject.fromObject(result);
+            JSONObject resultJSON = json.optJSONObject("tbk_dg_general_link_convert_response").optJSONObject("data")
+                    .optJSONObject("item_url_list").optJSONArray("item_url_list").optJSONObject(0);
+            JSONObject goodsInfo=resultJSON.optJSONObject("link_info_dto");
+            String couponLink = goodsInfo.optString("coupon_short_url");
+            String itemLink = goodsInfo.optString("cps_short_url");
+            TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
+            goods.setAuctionUrl(itemLink);
+            goods.setCouponLink(couponLink);
+            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"));
+
+            }
+
+            JSONObject rateInfo=resultJSON.optJSONObject("promotion_info_dto");
+            String tkRate = rateInfo.optString("commission_rate");
+            if (!StringUtil.isNullOrEmpty(tkRate)) {
+                goods.setTkRate(new BigDecimal(tkRate));
+            }
+            goods = loadYuShouInfo(goods, resultJSON);
+            return goods;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
     // AA5ISJ
 
     private static TaoBaoGoodsBrief parseWuLiaoItemFromMaterialId(JSONObject item) {
@@ -2105,7 +2132,11 @@
         goods.setPictUrl(TbImgUtil.getTBSize320Img("https:" + item.optString("pict_url")));
         goods.setAuctionId(item.optString("item_id"));
         goods.setAuctionUrl("https://item.taobao.com/item.htm?id=" + goods.getAuctionId());
-        goods.setBiz30day(item.optInt("volume"));
+        if (item.containsKey("annual_vol")) {
+            goods.setBiz30day(item.optInt("annual_vol") / 12);
+        } else {
+            goods.setBiz30day(item.optInt("volume"));
+        }
         if (!StringUtil.isNullOrEmpty(item.optString("coupon_amount"))) {
             goods.setCouponEffectiveEndTime(TimeUtil.getGernalTime(item.optLong("coupon_end_time"), "yyyy-MM-dd"));
             goods.setCouponEffectiveStartTime(TimeUtil.getGernalTime(item.optLong("coupon_start_time"), "yyyy-MM-dd"));
@@ -2612,12 +2643,20 @@
 //        map.put("num_iids",  "708395859317");
 //        String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
 //        System.out.println(resultStr);
-        SearchFilter sf=new SearchFilter();
-        sf.setKey("闉�");
-        sf.setPage(1);
-        sf.setPageSize(20);
-        TaoBaoSearchResult result =  searchWuLiaoNew(sf,null,null);
-        System.out.printf(result.toString());
+//        SearchFilter sf=new SearchFilter();
+//        sf.setKey("闉�");
+//        sf.setPage(1);
+//        sf.setPageSize(20);
+//        TaoBaoSearchResult result =  searchWuLiaoNew(sf,null,null);
+//        System.out.printf(result.toString());
+//        public static final String TAOBAO_AUTH_APPKEY = "24980167";
+//        public static final String TAOBAO_AUTH_APPSECRET = "e0a2e05deabf5ce039b52e5b492d5382";
+//        public static final String TAOBAO_PID_DEFAULT="mm_124933865_56750082_89555600043";
+
+
+        TaoKeAppInfo app = new TaoKeAppInfo("24980167", "e0a2e05deabf5ce039b52e5b492d5382", "mm_124933865_56750082_89555600043");
+
+        specialConvertCouponV2("ZMxBywvT6tPr0wabjaFBQPiVt6-g4DYZPC2OoJaaRXIoq", app, "511379263", null);
     }
 
 }

--
Gitblit v1.8.0